c2742e81 by 田浩浩
2 parents 4f9fa84d 385f5d08
...@@ -19,7 +19,9 @@ ...@@ -19,7 +19,9 @@
19 "nprogress": "0.2.0", 19 "nprogress": "0.2.0",
20 "vue": "2.6.10", 20 "vue": "2.6.10",
21 "vue-router": "3.0.2", 21 "vue-router": "3.0.2",
22 "vuex": "3.1.0" 22 "vuex": "3.1.0",
23 "bpmn-js": "^7.4.0",
24 "diagram-js": "^6.8.2"
23 }, 25 },
24 "devDependencies": { 26 "devDependencies": {
25 "@vue/cli-plugin-babel": "4.4.4", 27 "@vue/cli-plugin-babel": "4.4.4",
......
1 import request from '@/utils/request'
2 /*
3 楼盘查询
4 */
5
6
7 // 根据条件进行列表查询
8 export function getLpZrz(data) {
9 return request({
10 url: '/zhcx/lpcx/getLpZrz',
11 method: 'post',
12 data: data
13 })
14 }
15
16
17 // 获取楼盘表
18 export function getLpb(params) {
19 return request({
20 url: '/zhcx/lpcx/getLpb/',
21 method: 'get',
22 params
23 })
24 }
25
26
...@@ -2,7 +2,7 @@ import request from '@/utils/request' ...@@ -2,7 +2,7 @@ import request from '@/utils/request'
2 2
3 export function getMenuInfo () { 3 export function getMenuInfo () {
4 return request({ 4 return request({
5 url: '/getWebMenuRole', 5 url: '/user/getUserMenus',
6 method: 'get', 6 method: 'get',
7 }) 7 })
8 } 8 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -29,7 +29,7 @@ export function getNextNode (bsmSqyw) { ...@@ -29,7 +29,7 @@ export function getNextNode (bsmSqyw) {
29 } 29 }
30 30
31 /* 31 /*
32 业务办理-选择单元-根据条件进行列表查询-国有建设用地使用权 32 业务办理-选择单元-根据条件进行列表查询-国有建设用地使用权、房屋所有权(首次登记)
33 */ 33 */
34 export function selectScBdcdy (data) { 34 export function selectScBdcdy (data) {
35 return request({ 35 return request({
...@@ -40,17 +40,17 @@ export function selectScBdcdy (data) { ...@@ -40,17 +40,17 @@ export function selectScBdcdy (data) {
40 }) 40 })
41 } 41 }
42 42
43 /* 43 // /*
44 业务办理-选择单元-根据条件进行列表查询-房屋所有权 44 // 业务办理-选择单元-根据条件进行列表查询-房屋所有权
45 */ 45 // */
46 export function selectFwsyq (data) { 46 // export function selectFwsyq (data) {
47 return request({ 47 // return request({
48 url: 'ywbl/ywsq/selectFwsyq', 48 // url: 'ywbl/ywsq/selectFwsyq',
49 method: 'post', 49 // method: 'post',
50 data, 50 // data,
51 showLoading: true 51 // showLoading: true
52 }) 52 // })
53 } 53 // }
54 54
55 // 待办箱列表查询接口 55 // 待办箱列表查询接口
56 export function searchTaskToDo (data) { 56 export function searchTaskToDo (data) {
......
1 <template>
2 <div class="process-viewer">
3 <div v-show="!isLoading" ref="processCanvas" class="process-canvas" style="height: 100%;" />
4 <!-- 自定义箭头样式,用于成功状态下流程连线箭头 -->
5 <defs ref="customSuccessDefs">
6 <marker id="sequenceflow-end-white-success" view-box="0 0 20 20" ref-x="11" ref-y="10" marker-width="10"
7 marker-height="10" orient="auto">
8 <path class="success-arrow" d="M 1 5 L 11 10 L 1 15 Z"
9 style="stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1;" />
10 </marker>
11 <marker id="conditional-flow-marker-white-success" view-box="0 0 20 20" ref-x="-1" ref-y="10" marker-width="10"
12 marker-height="10" orient="auto">
13 <path class="success-conditional" d="M 0 10 L 8 6 L 16 10 L 8 14 Z"
14 style="stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1;" />
15 </marker>
16 </defs>
17 <!-- 自定义箭头样式,用于失败状态下流程连线箭头 -->
18 <defs ref="customFailDefs">
19 <marker id="sequenceflow-end-white-fail" view-box="0 0 20 20" ref-x="11" ref-y="10" marker-width="10"
20 marker-height="10" orient="auto">
21 <path class="fail-arrow" d="M 1 5 L 11 10 L 1 15 Z"
22 style="stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1;" />
23 </marker>
24 <marker id="conditional-flow-marker-white-fail" view-box="0 0 20 20" ref-x="-1" ref-y="10" marker-width="10"
25 marker-height="10" orient="auto">
26 <path class="fail-conditional" d="M 0 10 L 8 6 L 16 10 L 8 14 Z"
27 style="stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1;" />
28 </marker>
29 </defs>
30 <!-- 已完成节点悬浮弹窗 -->
31 <el-dialog class="comment-dialog" :title="dlgTitle || '审批记录'" :visible.sync="dialogVisible" append-to-body>
32 <el-row>
33 <el-table :data="taskCommentList" size="mini" border header-cell-class-name="table-header-gray">
34 <el-table-column label="序号" header-align="center" align="center" type="index" width="55px" />
35 <el-table-column label="候选办理" prop="candidate" width="150px" align="center" />
36 <el-table-column label="实际办理" prop="assigneeName" width="100px" align="center" />
37 <el-table-column label="处理时间" prop="createTime" width="140px" align="center" />
38 <el-table-column label="办结时间" prop="finishTime" width="140px" align="center" />
39 <el-table-column label="耗时" prop="duration" width="100px" align="center" />
40 <el-table-column label="审批意见" align="center">
41 <template slot-scope="scope">
42 {{ scope.row.commentList&&scope.row.commentList[0]?scope.row.commentList[0].fullMessage:'' }}
43 </template>
44 </el-table-column>
45 </el-table>
46 </el-row>
47 </el-dialog>
48 <div style="position: absolute; top: 0px; left: 0px; width: 100%;">
49 <el-row type="flex" justify="end">
50 <el-button-group key="scale-control" size="medium">
51 <el-button size="medium" type="default" :plain="true" :disabled="defaultZoom <= 0.3" icon="el-icon-zoom-out"
52 @click="processZoomOut()" />
53 <el-button size="medium" type="default" style="width: 90px;">{{ Math.floor(this.defaultZoom * 10 * 10) + "%"
54 }}</el-button>
55 <el-button size="medium" type="default" :plain="true" :disabled="defaultZoom >= 3.9" icon="el-icon-zoom-in"
56 @click="processZoomIn()" />
57 <el-button size="medium" type="default" icon="el-icon-c-scale-to-original" @click="processReZoom()" />
58 <slot />
59 </el-button-group>
60 </el-row>
61 </div>
62 </div>
63 </template>
64
65 <script>
66 import BpmnViewer from 'bpmn-js/lib/Viewer'
67 import MoveCanvasModule from 'diagram-js/lib/navigation/movecanvas'
68
69 export default {
70 props: {
71 // eslint-disable-next-line vue/require-default-prop
72 xml: {
73 type: String
74 },
75 // eslint-disable-next-line vue/require-default-prop
76 finishedInfo: {
77 type: Object
78 },
79 // 所有节点审批记录
80 // eslint-disable-next-line vue/require-default-prop
81 allCommentList: {
82 type: Array
83 }
84 },
85 data () {
86 return {
87 dialogVisible: false,
88 dlgTitle: undefined,
89 defaultZoom: 1,
90 // 是否正在加载流程图
91 isLoading: false,
92 bpmnViewer: undefined,
93 // 已完成流程元素
94 processNodeInfo: undefined,
95 // 当前任务id
96 selectTaskId: undefined,
97 // 任务节点审批记录
98 taskCommentList: [],
99 // 已完成任务悬浮延迟Timer
100 hoverTimer: null
101 }
102 },
103 watch: {
104 xml: {
105 handler (newXml) {
106 this.importXML(newXml)
107 },
108 immediate: true
109 },
110 finishedInfo: {
111 handler (newInfo) {
112 this.setProcessStatus(newInfo)
113 },
114 immediate: true
115 }
116 },
117 created () {
118 this.$nextTick(() => {
119 this.importXML(this.xml)
120 this.setProcessStatus(this.finishedInfo)
121 })
122 },
123 destroyed () {
124 this.clearViewer()
125 },
126 methods: {
127 processReZoom () {
128 this.defaultZoom = 1
129 this.bpmnViewer.get('canvas').zoom('fit-viewport', 'auto')
130 },
131 processZoomIn (zoomStep = 0.1) {
132 const newZoom = Math.floor(this.defaultZoom * 100 + zoomStep * 100) / 100
133 if (newZoom > 4) {
134 throw new Error('[Process Designer Warn ]: The zoom ratio cannot be greater than 4')
135 }
136 this.defaultZoom = newZoom
137 this.bpmnViewer.get('canvas').zoom(this.defaultZoom)
138 },
139 processZoomOut (zoomStep = 0.1) {
140 const newZoom = Math.floor(this.defaultZoom * 100 - zoomStep * 100) / 100
141 if (newZoom < 0.2) {
142 throw new Error('[Process Designer Warn ]: The zoom ratio cannot be less than 0.2')
143 }
144 this.defaultZoom = newZoom
145 this.bpmnViewer.get('canvas').zoom(this.defaultZoom)
146 },
147 getOperationTagType (type) {
148 return 'success'
149 // switch (type) {
150 // case this.SysFlowTaskOperationType.AGREE:
151 // case this.SysFlowTaskOperationType.MULTI_AGREE:
152 // return 'success';
153 // case this.SysFlowTaskOperationType.REFUSE:
154 // case this.SysFlowTaskOperationType.PARALLEL_REFUSE:
155 // case this.SysFlowTaskOperationType.MULTI_REFUSE:
156 // return 'warning';
157 // case this.SysFlowTaskOperationType.STOP:
158 // return 'danger'
159 // default:
160 // return 'primary';
161 // }
162 },
163 // 流程图预览清空
164 clearViewer (a) {
165 if (this.$refs.processCanvas) {
166 this.$refs.processCanvas.innerHTML = ''
167 }
168 if (this.bpmnViewer) {
169 this.bpmnViewer.destroy()
170 }
171 this.bpmnViewer = null
172 },
173 // 添加自定义箭头
174 addCustomDefs () {
175 const canvas = this.bpmnViewer.get('canvas')
176 const svg = canvas._svg
177 const customSuccessDefs = this.$refs.customSuccessDefs
178 const customFailDefs = this.$refs.customFailDefs
179 svg.appendChild(customSuccessDefs)
180 svg.appendChild(customFailDefs)
181 },
182 // 任务悬浮弹窗
183 onSelectElement (element) {
184 this.selectTaskId = undefined
185 this.dlgTitle = undefined
186
187 if (this.processNodeInfo == null || this.processNodeInfo.finishedTaskSet == null) return
188
189 if (element == null || this.processNodeInfo.finishedTaskSet.indexOf(element.id) === -1) {
190 return
191 }
192
193 this.selectTaskId = element.id
194 this.dlgTitle = element.businessObject ? element.businessObject.name : undefined
195 // 计算当前悬浮任务审批记录,如果记录为空不显示弹窗
196 this.taskCommentList = (this.allCommentList || []).filter(item => {
197 return item.taskDefKey === this.selectTaskId
198 })
199 this.dialogVisible = true
200 },
201 // 显示流程图
202 async importXML (xml) {
203 this.clearViewer('a')
204 if (xml != null && xml !== '') {
205 try {
206 this.bpmnViewer = new BpmnViewer({
207 additionalModules: [
208 // 移动整个画布
209 MoveCanvasModule
210 ],
211 container: this.$refs.processCanvas
212 })
213 // 任务节点悬浮事件
214 this.bpmnViewer.on('element.click', ({ element }) => {
215 this.onSelectElement(element)
216 })
217
218 this.isLoading = true
219 const c = await this.bpmnViewer.importXML(xml)
220 this.addCustomDefs()
221 } catch (e) {
222 // this.clearViewer('b')
223 } finally {
224 this.isLoading = false
225 this.setProcessStatus(this.processNodeInfo)
226 this.$nextTick(() => {
227 this.processReZoom()
228 })
229 }
230 }
231 },
232 // 设置流程图元素状态
233 setProcessStatus (processNodeInfo) {
234 this.processNodeInfo = processNodeInfo
235 if (this.isLoading || this.processNodeInfo == null || this.bpmnViewer == null) return
236 const { finishedTaskSet, rejectedTaskSet, unfinishedTaskSet, finishedSequenceFlowSet } = this.processNodeInfo
237 const canvas = this.bpmnViewer.get('canvas')
238 const elementRegistry = this.bpmnViewer.get('elementRegistry')
239 if (Array.isArray(finishedSequenceFlowSet)) {
240 finishedSequenceFlowSet.forEach(item => {
241 if (item != null) {
242 canvas.addMarker(item, 'success')
243 const element = elementRegistry.get(item)
244 const conditionExpression = element.businessObject.conditionExpression
245 if (conditionExpression) {
246 canvas.addMarker(item, 'condition-expression')
247 }
248 }
249 })
250 }
251 if (Array.isArray(finishedTaskSet)) {
252 finishedTaskSet.forEach(item => canvas.addMarker(item, 'success'))
253 }
254 if (Array.isArray(unfinishedTaskSet)) {
255 unfinishedTaskSet.forEach(item => canvas.addMarker(item, 'primary'))
256 }
257 if (Array.isArray(rejectedTaskSet)) {
258 rejectedTaskSet.forEach(item => {
259 if (item != null) {
260 const element = elementRegistry.get(item)
261 if (element.type.includes('Task')) {
262 canvas.addMarker(item, 'danger')
263 } else {
264 canvas.addMarker(item, 'warning')
265 }
266 }
267 })
268 }
269 }
270 }
271 }
272 </script>
...\ No newline at end of file ...\ No newline at end of file
1 <template> 1 <template>
2 <div v-if="!item.hidden"> 2 <div v-if="!item.hidden">
3 <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow"> 3 <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)">
4 <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)"> 4 <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
5 <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}"> 5 <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
6 <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" class="menu-icon" /> 6 <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title"
7 class="menu-icon" />
7 </el-menu-item> 8 </el-menu-item>
8 </app-link> 9 </app-link>
9 </template> 10 </template>
...@@ -12,14 +13,8 @@ ...@@ -12,14 +13,8 @@
12 <template slot="title"> 13 <template slot="title">
13 <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" /> 14 <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
14 </template> 15 </template>
15 <sidebar-item 16 <sidebar-item v-for="child in item.children" :key="child.path" :is-nest="true" :item="child"
16 v-for="child in item.children" 17 :base-path="resolvePath(child.path)" class="nest-menu" />
17 :key="child.path"
18 :is-nest="true"
19 :item="child"
20 :base-path="resolvePath(child.path)"
21 class="nest-menu"
22 />
23 </el-submenu> 18 </el-submenu>
24 </div> 19 </div>
25 </template> 20 </template>
...@@ -50,14 +45,14 @@ export default { ...@@ -50,14 +45,14 @@ export default {
50 default: '' 45 default: ''
51 } 46 }
52 }, 47 },
53 data() { 48 data () {
54 // To fix https://github.com/PanJiaChen/vue-admin-template/issues/237 49 // To fix https://github.com/PanJiaChen/vue-admin-template/issues/237
55 // TODO: refactor with render function 50 // TODO: refactor with render function
56 this.onlyOneChild = null 51 this.onlyOneChild = null
57 return {} 52 return {}
58 }, 53 },
59 methods: { 54 methods: {
60 hasOneShowingChild(children = [], parent) { 55 hasOneShowingChild (children = [], parent) {
61 const showingChildren = children.filter(item => { 56 const showingChildren = children.filter(item => {
62 if (item.hidden) { 57 if (item.hidden) {
63 return false 58 return false
...@@ -75,13 +70,13 @@ export default { ...@@ -75,13 +70,13 @@ export default {
75 70
76 // Show parent if there are no child router to display 71 // Show parent if there are no child router to display
77 if (showingChildren.length === 0) { 72 if (showingChildren.length === 0) {
78 this.onlyOneChild = { ... parent, path: '', noShowingChildren: true } 73 this.onlyOneChild = { ...parent, path: '', noShowingChildren: true }
79 return true 74 return true
80 } 75 }
81 76
82 return false 77 return false
83 }, 78 },
84 resolvePath(routePath) { 79 resolvePath (routePath) {
85 if (isExternal(routePath)) { 80 if (isExternal(routePath)) {
86 return routePath 81 return routePath
87 } 82 }
......
...@@ -5,9 +5,9 @@ ...@@ -5,9 +5,9 @@
5 :unique-opened="true" :active-text-color="variables.menuActiveText" :collapse-transition="false" 5 :unique-opened="true" :active-text-color="variables.menuActiveText" :collapse-transition="false"
6 mode="vertical"> 6 mode="vertical">
7 <!-- 权限菜单 --> 7 <!-- 权限菜单 -->
8 <!-- <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> --> 8 <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" />
9 <!-- 菜单全部展示 --> 9 <!-- 菜单全部展示 -->
10 <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> 10 <!-- <sidebar-item v-for="route in asyncRoutes" :key="route.path" :item="route" :base-path="route.path" /> -->
11 </el-menu> 11 </el-menu>
12 </el-scrollbar> 12 </el-scrollbar>
13 </div> 13 </div>
......
...@@ -16,20 +16,20 @@ router.beforeEach(async (to, from, next) => { ...@@ -16,20 +16,20 @@ router.beforeEach(async (to, from, next) => {
16 if (!hasAddDict) { 16 if (!hasAddDict) {
17 store.dispatch('dict/generateDic') 17 store.dispatch('dict/generateDic')
18 } 18 }
19 // if (hasAddRoute) { 19 if (hasAddRoute) {
20 // next() 20 next()
21 // } else { 21 } else {
22 // const { result: getMenuData } = await getMenuInfo() 22 const { result: getMenuData } = await getMenuInfo()
23 // const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData) 23 const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData)
24 // router.addRoutes(accessRoutes) 24 router.addRoutes(accessRoutes)
25 // } 25 console.log(router);
26 26 next({ ...to, replace: true })
27 }
27 NProgress.done() 28 NProgress.done()
28 next() 29
29 }) 30 })
30 router.afterEach(to => { 31 router.afterEach(to => {
31 // 解决刷新页面报404问题 32 // 解决刷新页面报404问题
32 sessionStorage.setItem('routerTo', to.fullPath)
33 Cookies.set("routerTo", to.fullPath) 33 Cookies.set("routerTo", to.fullPath)
34 NProgress.done() 34 NProgress.done()
35 }) 35 })
......
...@@ -25,7 +25,6 @@ export const constantRoutes = [ ...@@ -25,7 +25,6 @@ export const constantRoutes = [
25 component: () => import('@/views/error-page/404'), 25 component: () => import('@/views/error-page/404'),
26 hidden: true 26 hidden: true
27 }, 27 },
28 { path: '*', redirect: '/404', hidden: true },
29 // 业务流程框架 28 // 业务流程框架
30 { 29 {
31 path: '/workFrame', 30 path: '/workFrame',
...@@ -58,7 +57,7 @@ export const asyncRoutes = [ ...@@ -58,7 +57,7 @@ export const asyncRoutes = [
58 { 57 {
59 path: 'home', 58 path: 'home',
60 component: () => import('@/views/home/index'), 59 component: () => import('@/views/home/index'),
61 name: 'Dashboard', 60 name: 'home',
62 meta: { title: '工作台', icon: 'workbench', affix: true } 61 meta: { title: '工作台', icon: 'workbench', affix: true }
63 } 62 }
64 ] 63 ]
...@@ -273,7 +272,7 @@ export const asyncRoutes = [ ...@@ -273,7 +272,7 @@ export const asyncRoutes = [
273 const createRouter = () => 272 const createRouter = () =>
274 new Router({ 273 new Router({
275 scrollBehavior: () => ({ y: 0 }), 274 scrollBehavior: () => ({ y: 0 }),
276 routes: [...constantRoutes, ...asyncRoutes] 275 routes: [...constantRoutes]
277 }) 276 })
278 277
279 const router = createRouter() 278 const router = createRouter()
......
1 import { asyncRoutes, constantRoutes, resetRouter } from '@/router' 1 import { asyncRoutes, constantRoutes, resetRouter } from '@/router'
2 2 import asyncRouter from '@/utils/asyncRouter.js'
3 const state = { 3 const state = {
4 routes: [], 4 routes: [],
5 addRoutes: false, 5 addRoutes: false,
...@@ -8,27 +8,18 @@ const state = { ...@@ -8,27 +8,18 @@ const state = {
8 const mutations = { 8 const mutations = {
9 SET_ROUTES: (state, routes) => { 9 SET_ROUTES: (state, routes) => {
10 state.addRoutes = true 10 state.addRoutes = true
11 state.routes = constantRoutes.concat(routes) 11 state.routes = routes
12 }, 12 },
13 RESET_ROUTE: (state) => { 13 RESET_ROUTE: (state) => {
14 state.addRoutes = false 14 state.addRoutes = false
15 } 15 }
16 } 16 }
17
18 const actions = { 17 const actions = {
19 // 添加全部菜单 18 // 添加全部菜单
20 generateRoutes ({ commit }, getMenuInfo) { 19 generateRoutes ({ commit }, getMenuInfo) {
21 return new Promise(resolve => { 20 return new Promise(resolve => {
22 // 将路由树数据转成数组结构
23 let arr1 = []
24 dfs(_.cloneDeep(asyncRoutes), node => arr1.push(node))
25 _.each(arr1, i => {
26 i.parentId = i.parentId ? i.parentId : null
27 })
28 //lodash intersectionBy方法取交集,并以参数1的数据返回
29 let permission_arr = _.intersectionBy(arr1, getMenuInfo, 'id')
30 // 将权限菜单数组转成路由树数据结构 21 // 将权限菜单数组转成路由树数据结构
31 let permission_tree = array2Tree(permission_arr, null) 22 let permission_tree = asyncRouter(getMenuInfo)
32 commit('SET_ROUTES', permission_tree) 23 commit('SET_ROUTES', permission_tree)
33 resolve(permission_tree) 24 resolve(permission_tree)
34 }) 25 })
......
1 import Layout from '@/layout'
2 export default function filterAsyncRouter (routers) {
3 routers.forEach(item => {
4 if (!item.children) {
5 delete item.children
6 delete item.redirect
7 }
8 if (!item.parentId) {
9 item.component = Layout
10 } else {
11 item.component = loadView(item.uri)
12 }
13 item.meta.icon = item.icon
14 if (item.children) {
15 item.children = filterAsyncRouter(item.children)
16 }
17 })
18 return routers
19 }
20 function loadView (view) {
21 return r => require.ensure([], () => r(require(`@/views${view}.vue`)))
22 }
...\ No newline at end of file ...\ No newline at end of file
...@@ -13,7 +13,7 @@ const service = axios.create({ ...@@ -13,7 +13,7 @@ const service = axios.create({
13 'Content-Type': 'application/json; charset=utf-8', 13 'Content-Type': 'application/json; charset=utf-8',
14 'Authorization': 'bearer AT-16-oqkOHiUSsDdFA-eAZ49k2rJQDTzQpClO' 14 'Authorization': 'bearer AT-16-oqkOHiUSsDdFA-eAZ49k2rJQDTzQpClO'
15 //token列表 15 //token列表
16 //admin:bearer AT-16-oqkOHiUSsDdFA-eAZ49k2rJQDTzQpClO 16 // 'Authorization': 'bearer AT-12-eRKHta5I8ZWftIU86sSyJ8rUkPhMvMJU'
17 //renc:bearer AT-30-KHB4LXc8-CZXwBEyaFJa9lRmMTc5sHVI 17 //renc:bearer AT-30-KHB4LXc8-CZXwBEyaFJa9lRmMTc5sHVI
18 //tianh:bearer AT-33-3zFTGkhQ4eUv4nXvzAmbgN5RPZppzEY6 18 //tianh:bearer AT-33-3zFTGkhQ4eUv4nXvzAmbgN5RPZppzEY6
19 //zhangh:bearer AT-7-Tx8dlZH0LNRc33UjD1CX1xwa-1D7kQmQ 19 //zhangh:bearer AT-7-Tx8dlZH0LNRc33UjD1CX1xwa-1D7kQmQ
......
...@@ -4,12 +4,12 @@ ...@@ -4,12 +4,12 @@
4 <div class="from-clues-header"> 4 <div class="from-clues-header">
5 <el-form ref="queryForm" label-width="90px"> 5 <el-form ref="queryForm" label-width="90px">
6 <ul style="margin-bottom:15px"> 6 <ul style="margin-bottom:15px">
7 <li v-for="(item,index) in list" class="listDetail"> 7 <li v-for="(item,index) in dataList" class="listDetail" :key="index">
8 <p class="icon"> 8 <p class="icon">
9 <i class="el-icon-circle-check"></i> 9 <i class="el-icon-circle-check"></i>
10 </p> 10 </p>
11 <p>{{item.title}}</p> 11 <p>{{item.activityName}}</p>
12 <p>{{item.value}}</p> 12 <p v-for="(child,childIndex) in item.userInfos" :key="childIndex">{{child.name}}</p>
13 </li> 13 </li>
14 </ul> 14 </ul>
15 <el-form-item label="退回意见:"> 15 <el-form-item label="退回意见:">
...@@ -24,27 +24,31 @@ ...@@ -24,27 +24,31 @@
24 import { getTaskBackNode, sendBackTask } from "@/api/fqsq.js" 24 import { getTaskBackNode, sendBackTask } from "@/api/fqsq.js"
25 export default { 25 export default {
26 props: { 26 props: {
27 formData: {
28 type: Object,
29 default: {}
30 }
27 }, 31 },
28 data () { 32 data () {
29 return { 33 return {
30 list: [ 34 dataList: [],
31 {
32 title: "初审",
33 value: '',
34 },
35 {
36 title: "复审",
37 value: '',
38 },
39 {
40 title: "录入",
41 value: '',
42 }
43 ],
44 outstepopinion: '' 35 outstepopinion: ''
45 } 36 }
46 }, 37 },
38 created() {
39 this.getBackNode();
40 },
47 methods: { 41 methods: {
42 childFn () {
43 console.log(1111);
44 },
45 getBackNode() {
46 getTaskBackNode(this.formData).then(res => {
47 if(res.code == 200){
48 this.dataList = res.result
49 }
50 })
51 }
48 } 52 }
49 } 53 }
50 </script> 54 </script>
......
1 <template> 1 <template>
2 <dialogBox title="转出" @submitForm="submitForm" saveButton="确认转出" width="45%" 2 <dialogBox title="转出" @submitForm="submitForm" saveButton="确认转出" width="45%" height='30%' @closeDialog="closeDialog"
3 height='30%' @closeDialog="closeDialog" v-model="value"> 3 v-model="value">
4 <div class="from-clues"> 4 <div class="from-clues">
5 <!-- 表单部分 --> 5 <!-- 表单部分 -->
6 <div class="from-clues-header"> 6 <div class="from-clues-header">
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
11 <el-form-item label="下一环节办理人:"> 11 <el-form-item label="下一环节办理人:">
12 {{this.usernames}} 12 {{this.usernames}}
13 </el-form-item> 13 </el-form-item>
14 14
15 </el-form> 15 </el-form>
16 </div> 16 </div>
17 </div> 17 </div>
...@@ -19,13 +19,13 @@ ...@@ -19,13 +19,13 @@
19 </template> 19 </template>
20 20
21 <script> 21 <script>
22 import { completeTask ,getNextLinkInfo} from "@/api/fqsq.js" 22 import { completeTask, getNextLinkInfo } from "@/api/fqsq.js"
23 export default { 23 export default {
24 components: { 24 components: {
25 }, 25 },
26 props: { 26 props: {
27 value: { type: Boolean, default: false }, 27 value: { type: Boolean, default: false },
28 queryForm:{type:Object,default:false} 28 queryForm: { type: Object, default: false }
29 }, 29 },
30 data () { 30 data () {
31 return { 31 return {
...@@ -34,26 +34,25 @@ export default { ...@@ -34,26 +34,25 @@ export default {
34 } 34 }
35 }, 35 },
36 methods: { 36 methods: {
37 tablelistFn(){ 37 tablelistFn () {
38 getNextLinkInfo(this.queryForm).then(res => { 38 getNextLinkInfo(this.queryForm).then(res => {
39 if (res.code === 200) { 39 if (res.code === 200) {
40 this.tableData = res.result 40 this.tableData = res.result
41 if(res.result.usernames){ 41 if (res.result.usernames) {
42 this.usernames = String(res.result.usernames) 42 this.usernames = String(res.result.usernames)
43 } 43 }
44 } 44 }
45 }) 45 })
46 }, 46 },
47 submitForm () { 47 submitForm () {
48 completeTask(this.queryForm).then(res => { 48 completeTask(this.queryForm).then(res => {
49 console.log(res)
50 if (res.code === 200) { 49 if (res.code === 200) {
51 this.$message.success('转件成功') 50 this.$message.success('转件成功')
52 setTimeout(() => { 51 setTimeout(() => {
53 window.opener = null; 52 window.opener = null;
54 window.open("about:blank", "_self"); 53 window.open("about:blank", "_self");
55 window.close(); 54 window.close();
56 this.$emit('input', false) 55 this.$emit('input', false)
57 }, 1000); 56 }, 1000);
58 } 57 }
59 }) 58 })
...@@ -66,5 +65,4 @@ export default { ...@@ -66,5 +65,4 @@ export default {
66 </script> 65 </script>
67 <style scoped lang="scss"> 66 <style scoped lang="scss">
68 @import "~@/styles/mixin.scss"; 67 @import "~@/styles/mixin.scss";
69
70 </style> 68 </style>
......
...@@ -285,7 +285,10 @@ export default { ...@@ -285,7 +285,10 @@ export default {
285 editItem: "workflow/components/th", 285 editItem: "workflow/components/th",
286 height: "330px", 286 height: "330px",
287 width: '30%', 287 width: '30%',
288 formData: {}, 288 formData: {
289 bsmSlsq: this.bsmSlsq,
290 bestepid: this.bestepid
291 },
289 btnShow: true, 292 btnShow: true,
290 cancel: () => { 293 cancel: () => {
291 console.log("取消回调"); 294 console.log("取消回调");
......
...@@ -89,7 +89,6 @@ export default { ...@@ -89,7 +89,6 @@ export default {
89 this.queryForm.sqywbm = this.djywbm; 89 this.queryForm.sqywbm = this.djywbm;
90 selectQlxx({ ...this.queryForm, ...this.pageData }) 90 selectQlxx({ ...this.queryForm, ...this.pageData })
91 .then((res) => { 91 .then((res) => {
92 console.log(res);
93 if (res.code === 200) { 92 if (res.code === 200) {
94 let { total, records } = res.result; 93 let { total, records } = res.result;
95 this.tableData.total = total; 94 this.tableData.total = total;
......
...@@ -45,7 +45,7 @@ import Cookies from 'js-cookie' ...@@ -45,7 +45,7 @@ import Cookies from 'js-cookie'
45 import { datas, sendThis } from "../javascript/fwsyq.js"; 45 import { datas, sendThis } from "../javascript/fwsyq.js";
46 import table from "@/utils/mixin/table"; 46 import table from "@/utils/mixin/table";
47 import jump from "@/views/ywbl/ywsq/components/mixin/jump"; 47 import jump from "@/views/ywbl/ywsq/components/mixin/jump";
48 import { selectFwsyq, startBusinessFlow, choiceBdcdy } from "@/api/ywbl.js"; 48 import { selectScBdcdy, startBusinessFlow, choiceBdcdy } from "@/api/ywbl.js";
49 export default { 49 export default {
50 mixins: [table, jump], 50 mixins: [table, jump],
51 props: { 51 props: {
...@@ -79,7 +79,8 @@ export default { ...@@ -79,7 +79,8 @@ export default {
79 }, 79 },
80 fetchData () { 80 fetchData () {
81 this.queryForm.sqywbm = this.djywbm; 81 this.queryForm.sqywbm = this.djywbm;
82 selectFwsyq({ ...this.queryForm, ...this.pageData, fwfl: this.activeName }).then((res) => { 82 this.queryForm.fwfl = this.activeName;
83 selectScBdcdy({ ...this.queryForm, ...this.pageData }).then((res) => {
83 if (res.code === 200) { 84 if (res.code === 200) {
84 let { total, records } = res.result; 85 let { total, records } = res.result;
85 this.tableData.total = total; 86 this.tableData.total = total;
...@@ -88,7 +89,7 @@ export default { ...@@ -88,7 +89,7 @@ export default {
88 }) 89 })
89 }, 90 },
90 handleTabClick () { 91 handleTabClick () {
91 this.pageData.currentPage = 1 92 this.pageData.currentPage = 1;
92 this.fetchData() 93 this.fetchData()
93 }, 94 },
94 submitForm () { 95 submitForm () {
......
...@@ -26,10 +26,10 @@ class data extends filter { ...@@ -26,10 +26,10 @@ class data extends filter {
26 ) 26 )
27 } 27 }
28 }, 28 },
29 { 29 // {
30 prop: "status", 30 // prop: "status",
31 label: "状态", 31 // label: "状态",
32 }, 32 // },
33 { 33 {
34 prop: "qllxmc", 34 prop: "qllxmc",
35 label: "权利类型", 35 label: "权利类型",
...@@ -50,10 +50,10 @@ class data extends filter { ...@@ -50,10 +50,10 @@ class data extends filter {
50 prop: "zdmj", 50 prop: "zdmj",
51 label: "宗地面积", 51 label: "宗地面积",
52 }, 52 },
53 { 53 // {
54 prop: "qlsdfs", 54 // prop: "qlsdfs",
55 label: "权利设定方式", 55 // label: "权利设定方式",
56 }, 56 // },
57 { 57 {
58 prop: "jzwjbyt", 58 prop: "jzwjbyt",
59 label: "房屋用途", 59 label: "房屋用途",
......
...@@ -92,31 +92,30 @@ export default { ...@@ -92,31 +92,30 @@ export default {
92 fetchData () { 92 fetchData () {
93 getJdcxBysearch({ ...this.queryForm, ...this.pageData }).then(res => { 93 getJdcxBysearch({ ...this.queryForm, ...this.pageData }).then(res => {
94 if (res.code === 200) { 94 if (res.code === 200) {
95 console.log(res)
96 let { total, records } = res.result 95 let { total, records } = res.result
97 let str = '' 96 let str = ''
98 records.forEach(item=>{ 97 records.forEach(item => {
99 if(item.userNameList.length!=0){ 98 if (item.userNameList.length != 0) {
100 str = String(item.userNameList) 99 str = String(item.userNameList)
101 item.blStatus = item.zbhj + '('+ str.replace(/,/g,"+") + ')' 100 item.blStatus = item.zbhj + '(' + str.replace(/,/g, "+") + ')'
102 } 101 }
103 if(item.qlrmc.length!=0){ 102 if (item.qlrmc.length != 0) {
104 item.qlrmcStr = String(item.qlrmc) 103 item.qlrmcStr = String(item.qlrmc)
105 } 104 }
106 if(item.ywrmc.length!=0){ 105 if (item.ywrmc.length != 0) {
107 item.ywrmcStr = String(item.ywrmc) 106 item.ywrmcStr = String(item.ywrmc)
108 } 107 }
109 }) 108 })
110 this.pageData.total = total; 109 this.pageData.total = total;
111 this.tableData.data = records 110 this.tableData.data = records
112 } 111 }
113 }) 112 })
114 }, 113 },
115 handleSort (name, sort) { 114 handleSort (name, sort) {
116 console.log(name, sort); 115 console.log(name, sort);
117 }, 116 },
118 openDialog (item) { 117 openDialog (item) {
119 const { href } = this.$router.resolve('/workFrameView?bsmSlsq=' + item.bsmSlsq + '&bestepid=' + item.bestepid + '&bsmBusiness=' + item.bsmBusiness + '&viewtype=3') 118 const { href } = this.$router.resolve('/workFrameView?bsmSlsq=' + item.bsmSlsq + '&bestepid=' + item.bestepid + '&bsmBusiness=' + item.bsmBusiness + '&viewtype=3')
120 window.open(href, '_blank'); 119 window.open(href, '_blank');
121 } 120 }
122 } 121 }
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
40 </div> 40 </div>
41 <!-- 表格 --> 41 <!-- 表格 -->
42 <div class="from-clues-content"> 42 <div class="from-clues-content">
43 <lb-table :page-size="pageData.size" @sort-change="handleSort" :current-page.sync="pageData.current" 43 <lb-table :page-size="pageData.size" border @sort-change="handleSort" :current-page.sync="pageData.current"
44 :total="pageData.total" @size-change="handleSizeChange" @p-current-change="handleCurrentChange" 44 :total="pageData.total" @size-change="handleSizeChange" @p-current-change="handleCurrentChange"
45 :column="tableData.columns" :data="tableData.data"> 45 :column="tableData.columns" :data="tableData.data">
46 </lb-table> 46 </lb-table>
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
50 <script> 50 <script>
51 import table from "@/utils/mixin/table"; 51 import table from "@/utils/mixin/table";
52 import { datas, sendThis } from "./lpcxdata"; 52 import { datas, sendThis } from "./lpcxdata";
53 import { getLpZrz,getLpb } from "@/api/lpb.js"
53 export default { 54 export default {
54 name: "lpcx", 55 name: "lpcx",
55 components: {}, 56 components: {},
...@@ -66,33 +67,49 @@ export default { ...@@ -66,33 +67,49 @@ export default {
66 zrzh: "", 67 zrzh: "",
67 }, 68 },
68 pageData: { 69 pageData: {
69 current: 1, 70 currentPage: 1,
70 size: 10, 71 pageSize: 10,
71 total: 2, 72 total: 0,
72 }, 73 },
73 ywlys: datas.ywlys(),
74 tableData: { 74 tableData: {
75 columns: datas.columns(), 75 columns: datas.columns(),
76 data: [ 76 data: []
77 { 77 }
78 slsj: "2022-5-12",
79 },
80 {
81 slsj: "2022-5-13",
82 },
83 ],
84 },
85 }; 78 };
86 }, 79 },
87 methods: { 80 methods: {
81 //查询
82 queryClick(){
83 this.fetchData();
84 },
85
88 // 初始化数据 86 // 初始化数据
89 fetchData () { 87 fetchData () {
88 getLpZrz({ ...this.queryForm, ...this.pageData }).then(res => {
89 if (res.code === 200) {
90 this.pageData.total = res.result.total;
91 this.tableData.data = res.result.records
92 }
93 })
90 }, 94 },
95
91 handleSort (name, sort) { 96 handleSort (name, sort) {
92 console.log(name, sort); 97 console.log(name, sort);
93 }, 98 },
94 openDialog () { 99
95 console.log(999999999999999); 100 //打开楼盘表
101 openlpbDialog (scope) {
102 debugger;
103 var zrzbsm=scope.row.bsm;
104
105 getLpb({zrzbsm:zrzbsm}).then(res => {
106 if(res.code == 200){
107 var lpbdata = res.result;
108 }
109 })
110 .catch((error) => {
111 console.log(error);
112 });
96 }, 113 },
97 }, 114 },
98 }; 115 };
......
...@@ -40,7 +40,7 @@ class data extends filter { ...@@ -40,7 +40,7 @@ class data extends filter {
40 label: "用途", 40 label: "用途",
41 }, 41 },
42 { 42 {
43 prop: "mj", 43 prop: "zydmj",
44 label: "面积(㎡)", 44 label: "面积(㎡)",
45 }, 45 },
46 { 46 {
...@@ -57,21 +57,11 @@ class data extends filter { ...@@ -57,21 +57,11 @@ class data extends filter {
57 align: 'center', 57 align: 'center',
58 fixed: 'right', 58 fixed: 'right',
59 render: (h, scope) => { 59 render: (h, scope) => {
60 return <el-button type="text" icon="el-icon-film" onClick={() => { vm.openDialog(scope) }}>楼盘表</el-button> 60 return <el-button type="text" icon="el-icon-film" onClick={() => { vm.openlpbDialog(scope) }}>楼盘表</el-button>
61 } 61 }
62 } 62 }
63 ] 63 ]
64 } 64 }
65
66 ywlys () {
67 return [
68 { value: 1, label: "办事大厅" },
69 { value: 2, label: "微信小程序" },
70 { value: 3, label: "法院端" },
71 { value: 4, label: "银行端" },
72 ]
73 }
74
75 } 65 }
76 let datas = new data() 66 let datas = new data()
77 export { 67 export {
......