Merge branch 'master' of http://yun.pashanhoo.com:9090/bdc/bdcdj-web
Showing
21 changed files
with
446 additions
and
128 deletions
... | @@ -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", | ... | ... |
src/api/lpb.js
0 → 100644
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) { | ... | ... |
src/components/processViewer/index.vue
0 → 100644
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() | ||
21 | // } else { | ||
22 | // const { result: getMenuData } = await getMenuInfo() | ||
23 | // const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData) | ||
24 | // router.addRoutes(accessRoutes) | ||
25 | // } | ||
26 | |||
27 | NProgress.done() | ||
28 | next() | 20 | next() |
21 | } else { | ||
22 | const { result: getMenuData } = await getMenuInfo() | ||
23 | const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData) | ||
24 | router.addRoutes(accessRoutes) | ||
25 | console.log(router); | ||
26 | next({ ...to, replace: true }) | ||
27 | } | ||
28 | NProgress.done() | ||
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 | }) | ... | ... |
src/utils/asyncRouter.js
0 → 100644
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"> |
... | @@ -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,11 +34,11 @@ export default { | ... | @@ -34,11 +34,11 @@ 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 | } |
... | @@ -46,7 +46,6 @@ export default { | ... | @@ -46,7 +46,6 @@ export default { |
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(() => { |
... | @@ -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,18 +92,17 @@ export default { | ... | @@ -92,18 +92,17 @@ 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 | }) | ... | ... |
... | @@ -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 { | ... | ... |
-
Please register or sign in to post a comment