Merge branch 'dev' of http://yun.pashanhoo.com:9090/bdc/bdcdj-web into dev
Showing
41 changed files
with
1655 additions
and
5939 deletions
... | @@ -6,6 +6,11 @@ import afterLeave from 'element-ui/src/utils/after-leave'; | ... | @@ -6,6 +6,11 @@ import afterLeave from 'element-ui/src/utils/after-leave'; |
6 | const Mask = Vue.extend(Loading); | 6 | const Mask = Vue.extend(Loading); |
7 | 7 | ||
8 | const loadingDirective = {}; | 8 | const loadingDirective = {}; |
9 | |||
10 | /** | ||
11 | * @description: install | ||
12 | * @author: renchao | ||
13 | */ | ||
9 | loadingDirective.install = Vue => { | 14 | loadingDirective.install = Vue => { |
10 | if (Vue.prototype.$isServer) return; | 15 | if (Vue.prototype.$isServer) return; |
11 | const toggleLoading = (el, binding) => { | 16 | const toggleLoading = (el, binding) => { |
... | @@ -110,14 +115,24 @@ loadingDirective.install = Vue => { | ... | @@ -110,14 +115,24 @@ loadingDirective.install = Vue => { |
110 | 115 | ||
111 | binding.value && toggleLoading(el, binding); | 116 | binding.value && toggleLoading(el, binding); |
112 | }, | 117 | }, |
113 | 118 | /** | |
119 | * @description: update | ||
120 | * @param {*} el | ||
121 | * @param {*} binding | ||
122 | * @author: renchao | ||
123 | */ | ||
114 | update: function (el, binding) { | 124 | update: function (el, binding) { |
115 | el.instance.setText(el.getAttribute('element-loading-text')); | 125 | el.instance.setText(el.getAttribute('element-loading-text')); |
116 | if (binding.oldValue !== binding.value) { | 126 | if (binding.oldValue !== binding.value) { |
117 | toggleLoading(el, binding); | 127 | toggleLoading(el, binding); |
118 | } | 128 | } |
119 | }, | 129 | }, |
120 | 130 | /** | |
131 | * @description: unbind | ||
132 | * @param {*} el | ||
133 | * @param {*} binding | ||
134 | * @author: renchao | ||
135 | */ | ||
121 | unbind: function (el, binding) { | 136 | unbind: function (el, binding) { |
122 | if (el.domInserted) { | 137 | if (el.domInserted) { |
123 | el.mask && | 138 | el.mask && | ... | ... |
... | @@ -20,6 +20,10 @@ let fullscreenLoading; | ... | @@ -20,6 +20,10 @@ let fullscreenLoading; |
20 | LoadingConstructor.prototype.originalPosition = ''; | 20 | LoadingConstructor.prototype.originalPosition = ''; |
21 | LoadingConstructor.prototype.originalOverflow = ''; | 21 | LoadingConstructor.prototype.originalOverflow = ''; |
22 | 22 | ||
23 | /** | ||
24 | * @description: close | ||
25 | * @author: renchao | ||
26 | */ | ||
23 | LoadingConstructor.prototype.close = function() { | 27 | LoadingConstructor.prototype.close = function() { |
24 | if (this.fullscreen) { | 28 | if (this.fullscreen) { |
25 | fullscreenLoading = undefined; | 29 | fullscreenLoading = undefined; |
... | @@ -38,6 +42,13 @@ LoadingConstructor.prototype.close = function() { | ... | @@ -38,6 +42,13 @@ LoadingConstructor.prototype.close = function() { |
38 | this.visible = false; | 42 | this.visible = false; |
39 | }; | 43 | }; |
40 | 44 | ||
45 | /** | ||
46 | * @description: addStyle | ||
47 | * @param {*} options | ||
48 | * @param {*} parent | ||
49 | * @param {*} instance | ||
50 | * @author: renchao | ||
51 | */ | ||
41 | const addStyle = (options, parent, instance) => { | 52 | const addStyle = (options, parent, instance) => { |
42 | let maskStyle = {}; | 53 | let maskStyle = {}; |
43 | if (options.fullscreen) { | 54 | if (options.fullscreen) { |
... | @@ -64,6 +75,10 @@ const addStyle = (options, parent, instance) => { | ... | @@ -64,6 +75,10 @@ const addStyle = (options, parent, instance) => { |
64 | }); | 75 | }); |
65 | }; | 76 | }; |
66 | 77 | ||
78 | /** | ||
79 | * @description: Loading | ||
80 | * @author: renchao | ||
81 | */ | ||
67 | const Loading = (options = {}) => { | 82 | const Loading = (options = {}) => { |
68 | if (Vue.prototype.$isServer) return; | 83 | if (Vue.prototype.$isServer) return; |
69 | options = merge({}, defaults, options); | 84 | options = merge({}, defaults, options); | ... | ... |
... | @@ -43,6 +43,11 @@ const MessageBoxConstructor = Vue.extend(msgboxVue); | ... | @@ -43,6 +43,11 @@ const MessageBoxConstructor = Vue.extend(msgboxVue); |
43 | let currentMsg, instance; | 43 | let currentMsg, instance; |
44 | let msgQueue = []; | 44 | let msgQueue = []; |
45 | 45 | ||
46 | |||
47 | /** | ||
48 | * @description: defaultCallback | ||
49 | * @author: renchao | ||
50 | */ | ||
46 | const defaultCallback = action => { | 51 | const defaultCallback = action => { |
47 | if (currentMsg) { | 52 | if (currentMsg) { |
48 | let callback = currentMsg.callback; | 53 | let callback = currentMsg.callback; |
... | @@ -56,6 +61,10 @@ const defaultCallback = action => { | ... | @@ -56,6 +61,10 @@ const defaultCallback = action => { |
56 | } | 61 | } |
57 | }; | 62 | }; |
58 | 63 | ||
64 | /** | ||
65 | * @description: initInstance | ||
66 | * @author: renchao | ||
67 | */ | ||
59 | const initInstance = () => { | 68 | const initInstance = () => { |
60 | instance = new MessageBoxConstructor({ | 69 | instance = new MessageBoxConstructor({ |
61 | el: document.createElement('div') | 70 | el: document.createElement('div') |
... | @@ -64,6 +73,10 @@ const initInstance = () => { | ... | @@ -64,6 +73,10 @@ const initInstance = () => { |
64 | instance.callback = defaultCallback; | 73 | instance.callback = defaultCallback; |
65 | }; | 74 | }; |
66 | 75 | ||
76 | /** | ||
77 | * @description: showNextMsg | ||
78 | * @author: renchao | ||
79 | */ | ||
67 | const showNextMsg = () => { | 80 | const showNextMsg = () => { |
68 | if (!instance) { | 81 | if (!instance) { |
69 | initInstance(); | 82 | initInstance(); |
... | @@ -109,6 +122,10 @@ const showNextMsg = () => { | ... | @@ -109,6 +122,10 @@ const showNextMsg = () => { |
109 | } | 122 | } |
110 | }; | 123 | }; |
111 | 124 | ||
125 | /** | ||
126 | * @description: MessageBox | ||
127 | * @author: renchao | ||
128 | */ | ||
112 | const MessageBox = function (options, callback) { | 129 | const MessageBox = function (options, callback) { |
113 | if (Vue.prototype.$isServer) return; | 130 | if (Vue.prototype.$isServer) return; |
114 | if (typeof options === 'string' || isVNode(options)) { | 131 | if (typeof options === 'string' || isVNode(options)) { |
... | @@ -143,10 +160,18 @@ const MessageBox = function (options, callback) { | ... | @@ -143,10 +160,18 @@ const MessageBox = function (options, callback) { |
143 | } | 160 | } |
144 | }; | 161 | }; |
145 | 162 | ||
163 | /** | ||
164 | * @description: setDefaults | ||
165 | * @author: renchao | ||
166 | */ | ||
146 | MessageBox.setDefaults = defaults => { | 167 | MessageBox.setDefaults = defaults => { |
147 | MessageBox.defaults = defaults; | 168 | MessageBox.defaults = defaults; |
148 | }; | 169 | }; |
149 | 170 | ||
171 | /** | ||
172 | * @description: alert | ||
173 | * @author: renchao | ||
174 | */ | ||
150 | MessageBox.alert = (title, message, options) => { | 175 | MessageBox.alert = (title, message, options) => { |
151 | if (typeof title === 'object') { | 176 | if (typeof title === 'object') { |
152 | options = title; | 177 | options = title; |
... | @@ -163,6 +188,10 @@ MessageBox.alert = (title, message, options) => { | ... | @@ -163,6 +188,10 @@ MessageBox.alert = (title, message, options) => { |
163 | }, options)); | 188 | }, options)); |
164 | }; | 189 | }; |
165 | 190 | ||
191 | /** | ||
192 | * @description: close | ||
193 | * @author: renchao | ||
194 | */ | ||
166 | MessageBox.close = () => { | 195 | MessageBox.close = () => { |
167 | instance.doClose(); | 196 | instance.doClose(); |
168 | instance.visible = false; | 197 | instance.visible = false; | ... | ... |
... | @@ -97,6 +97,10 @@ export default { | ... | @@ -97,6 +97,10 @@ export default { |
97 | }, | 97 | }, |
98 | 98 | ||
99 | methods: { | 99 | methods: { |
100 | /** | ||
101 | * @description: getSafeClose | ||
102 | * @author: renchao | ||
103 | */ | ||
100 | getSafeClose () { | 104 | getSafeClose () { |
101 | const currentId = this.uid; | 105 | const currentId = this.uid; |
102 | return () => { | 106 | return () => { |
... | @@ -105,6 +109,10 @@ export default { | ... | @@ -105,6 +109,10 @@ export default { |
105 | }); | 109 | }); |
106 | }; | 110 | }; |
107 | }, | 111 | }, |
112 | /** | ||
113 | * @description: doClose | ||
114 | * @author: renchao | ||
115 | */ | ||
108 | doClose () { | 116 | doClose () { |
109 | if (!this.visible) return; | 117 | if (!this.visible) return; |
110 | this.visible = false; | 118 | this.visible = false; |
... | @@ -122,18 +130,31 @@ export default { | ... | @@ -122,18 +130,31 @@ export default { |
122 | }); | 130 | }); |
123 | }, | 131 | }, |
124 | 132 | ||
133 | /** | ||
134 | * @description: handleWrapperClick | ||
135 | * @author: renchao | ||
136 | */ | ||
125 | handleWrapperClick () { | 137 | handleWrapperClick () { |
126 | if (this.closeOnClickModal) { | 138 | if (this.closeOnClickModal) { |
127 | this.handleAction(this.distinguishCancelAndClose ? 'close' : 'cancel'); | 139 | this.handleAction(this.distinguishCancelAndClose ? 'close' : 'cancel'); |
128 | } | 140 | } |
129 | }, | 141 | }, |
130 | 142 | ||
143 | /** | ||
144 | * @description: handleInputEnter | ||
145 | * @author: renchao | ||
146 | */ | ||
131 | handleInputEnter () { | 147 | handleInputEnter () { |
132 | if (this.inputType !== 'textarea') { | 148 | if (this.inputType !== 'textarea') { |
133 | return this.handleAction('confirm'); | 149 | return this.handleAction('confirm'); |
134 | } | 150 | } |
135 | }, | 151 | }, |
136 | 152 | ||
153 | /** | ||
154 | * @description: handleAction | ||
155 | * @param {*} action | ||
156 | * @author: renchao | ||
157 | */ | ||
137 | handleAction (action) { | 158 | handleAction (action) { |
138 | if (this.$type === 'prompt' && action === 'confirm' && !this.validate()) { | 159 | if (this.$type === 'prompt' && action === 'confirm' && !this.validate()) { |
139 | return; | 160 | return; |
... | @@ -147,6 +168,10 @@ export default { | ... | @@ -147,6 +168,10 @@ export default { |
147 | } | 168 | } |
148 | }, | 169 | }, |
149 | 170 | ||
171 | /** | ||
172 | * @description: validate | ||
173 | * @author: renchao | ||
174 | */ | ||
150 | validate () { | 175 | validate () { |
151 | if (this.$type === 'prompt') { | 176 | if (this.$type === 'prompt') { |
152 | const inputPattern = this.inputPattern; | 177 | const inputPattern = this.inputPattern; |
... | @@ -174,15 +199,27 @@ export default { | ... | @@ -174,15 +199,27 @@ export default { |
174 | removeClass(this.getInputElement(), 'invalid'); | 199 | removeClass(this.getInputElement(), 'invalid'); |
175 | return true; | 200 | return true; |
176 | }, | 201 | }, |
202 | /** | ||
203 | * @description: getFirstFocus | ||
204 | * @author: renchao | ||
205 | */ | ||
177 | getFirstFocus () { | 206 | getFirstFocus () { |
178 | const btn = this.$el.querySelector('.el-message-box__btns .el-button'); | 207 | const btn = this.$el.querySelector('.el-message-box__btns .el-button'); |
179 | const title = this.$el.querySelector('.el-message-box__btns .el-message-box__title'); | 208 | const title = this.$el.querySelector('.el-message-box__btns .el-message-box__title'); |
180 | return btn || title; | 209 | return btn || title; |
181 | }, | 210 | }, |
211 | /** | ||
212 | * @description: getInputElement | ||
213 | * @author: renchao | ||
214 | */ | ||
182 | getInputElement () { | 215 | getInputElement () { |
183 | const inputRefs = this.$refs.input.$refs; | 216 | const inputRefs = this.$refs.input.$refs; |
184 | return inputRefs.input || inputRefs.textarea; | 217 | return inputRefs.input || inputRefs.textarea; |
185 | }, | 218 | }, |
219 | /** | ||
220 | * @description: handleClose | ||
221 | * @author: renchao | ||
222 | */ | ||
186 | handleClose () { | 223 | handleClose () { |
187 | this.handleAction('close'); | 224 | this.handleAction('close'); |
188 | } | 225 | } |
... | @@ -200,6 +237,11 @@ export default { | ... | @@ -200,6 +237,11 @@ export default { |
200 | } | 237 | } |
201 | }, | 238 | }, |
202 | 239 | ||
240 | /** | ||
241 | * @description: visible | ||
242 | * @param {*} val | ||
243 | * @author: renchao | ||
244 | */ | ||
203 | visible (val) { | 245 | visible (val) { |
204 | if (val) { | 246 | if (val) { |
205 | this.uid++; | 247 | this.uid++; |
... | @@ -222,6 +264,10 @@ export default { | ... | @@ -222,6 +264,10 @@ export default { |
222 | } | 264 | } |
223 | }, | 265 | }, |
224 | 266 | ||
267 | /** | ||
268 | * @description: mounted | ||
269 | * @author: renchao | ||
270 | */ | ||
225 | mounted () { | 271 | mounted () { |
226 | this.$nextTick(() => { | 272 | this.$nextTick(() => { |
227 | if (this.closeOnHashChange) { | 273 | if (this.closeOnHashChange) { |
... | @@ -230,6 +276,10 @@ export default { | ... | @@ -230,6 +276,10 @@ export default { |
230 | }); | 276 | }); |
231 | }, | 277 | }, |
232 | 278 | ||
279 | /** | ||
280 | * @description: beforeDestroy | ||
281 | * @author: renchao | ||
282 | */ | ||
233 | beforeDestroy () { | 283 | beforeDestroy () { |
234 | if (this.closeOnHashChange) { | 284 | if (this.closeOnHashChange) { |
235 | window.removeEventListener('hashchange', this.close); | 285 | window.removeEventListener('hashchange', this.close); |
... | @@ -298,4 +348,4 @@ export default { | ... | @@ -298,4 +348,4 @@ export default { |
298 | /deep/.el-message-box__content { | 348 | /deep/.el-message-box__content { |
299 | padding-top: 0; | 349 | padding-top: 0; |
300 | } | 350 | } |
301 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
351 | </style> | ... | ... |
... | @@ -49,10 +49,18 @@ export default { | ... | @@ -49,10 +49,18 @@ export default { |
49 | } | 49 | } |
50 | }, | 50 | }, |
51 | methods: { | 51 | methods: { |
52 | /** | ||
53 | * @description: handleNotice | ||
54 | * @param {*} item | ||
55 | * @author: renchao | ||
56 | */ | ||
52 | handleNotice (item) { | 57 | handleNotice (item) { |
53 | this.$alertMes(item.noticeTitle, item.noticeContent) | 58 | this.$alertMes(item.noticeTitle, item.noticeContent) |
54 | }, | 59 | }, |
55 | // 获取数据 | 60 | /** |
61 | * @description: 获取数据 | ||
62 | * @author: renchao | ||
63 | */ | ||
56 | getData () { | 64 | getData () { |
57 | let style = document.styleSheets[0]; | 65 | let style = document.styleSheets[0]; |
58 | let text = this.$refs.text; | 66 | let text = this.$refs.text; |
... | @@ -72,13 +80,19 @@ export default { | ... | @@ -72,13 +80,19 @@ export default { |
72 | this.changeState(); | 80 | this.changeState(); |
73 | }, 300); | 81 | }, 300); |
74 | }, | 82 | }, |
75 | // 用速度计算时间(想要保持速度一样,2种状态时间不同需算出) | 83 | /** |
84 | * @description: 用速度计算时间(想要保持速度一样,2种状态时间不同需算出) | ||
85 | * @author: renchao | ||
86 | */ | ||
76 | ComputationTime () { | 87 | ComputationTime () { |
77 | this.firstAnimationTime = this.wordLength / this.speed; | 88 | this.firstAnimationTime = this.wordLength / this.speed; |
78 | this.secondAnimationTime = | 89 | this.secondAnimationTime = |
79 | (this.wordLength + this.backWidth) / this.speed; | 90 | (this.wordLength + this.backWidth) / this.speed; |
80 | }, | 91 | }, |
81 | // 根据状态切换动画 | 92 | /** |
93 | * @description: 根据状态切换动画 | ||
94 | * @author: renchao | ||
95 | */ | ||
82 | changeState () { | 96 | changeState () { |
83 | let text = this.$refs.text; | 97 | let text = this.$refs.text; |
84 | if (this.state == 1) { | 98 | if (this.state == 1) { |
... | @@ -88,6 +102,10 @@ export default { | ... | @@ -88,6 +102,10 @@ export default { |
88 | text.style.animation = `secondAnimation ${this.secondAnimationTime}s linear infinite`; | 102 | text.style.animation = `secondAnimation ${this.secondAnimationTime}s linear infinite`; |
89 | } | 103 | } |
90 | }, | 104 | }, |
105 | /** | ||
106 | * @description: Listener | ||
107 | * @author: renchao | ||
108 | */ | ||
91 | Listener () { | 109 | Listener () { |
92 | let text = this.$refs.text; | 110 | let text = this.$refs.text; |
93 | text.addEventListener( | 111 | text.addEventListener( |
... | @@ -98,10 +116,18 @@ export default { | ... | @@ -98,10 +116,18 @@ export default { |
98 | false | 116 | false |
99 | ) | 117 | ) |
100 | }, | 118 | }, |
119 | /** | ||
120 | * @description: mouseOver | ||
121 | * @author: renchao | ||
122 | */ | ||
101 | mouseOver () { | 123 | mouseOver () { |
102 | let text = this.$refs.text; | 124 | let text = this.$refs.text; |
103 | text.style.animationPlayState = 'paused' | 125 | text.style.animationPlayState = 'paused' |
104 | }, | 126 | }, |
127 | /** | ||
128 | * @description: mouseLeave | ||
129 | * @author: renchao | ||
130 | */ | ||
105 | mouseLeave () { | 131 | mouseLeave () { |
106 | let text = this.$refs.text; | 132 | let text = this.$refs.text; |
107 | text.style.animationPlayState = '' | 133 | text.style.animationPlayState = '' |
... | @@ -151,4 +177,4 @@ export default { | ... | @@ -151,4 +177,4 @@ export default { |
151 | } | 177 | } |
152 | } | 178 | } |
153 | } | 179 | } |
154 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
180 | </style> | ... | ... |
... | @@ -188,6 +188,10 @@ | ... | @@ -188,6 +188,10 @@ |
188 | this.$img = this.$refs["img"]; | 188 | this.$img = this.$refs["img"]; |
189 | }, | 189 | }, |
190 | methods: { | 190 | methods: { |
191 | /** | ||
192 | * @description: imgLoaded | ||
193 | * @author: renchao | ||
194 | */ | ||
191 | imgLoaded () { | 195 | imgLoaded () { |
192 | let imgInfo = this.$img.getBoundingClientRect(); | 196 | let imgInfo = this.$img.getBoundingClientRect(); |
193 | if (JSON.stringify(this.imgInfo) != JSON.stringify(imgInfo)) { | 197 | if (JSON.stringify(this.imgInfo) != JSON.stringify(imgInfo)) { |
... | @@ -200,6 +204,10 @@ | ... | @@ -200,6 +204,10 @@ |
200 | this.$emit("created", imgInfo); | 204 | this.$emit("created", imgInfo); |
201 | } | 205 | } |
202 | }, | 206 | }, |
207 | /** | ||
208 | * @description: mouseMove | ||
209 | * @author: renchao | ||
210 | */ | ||
203 | mouseMove (e) { | 211 | mouseMove (e) { |
204 | if (!this.hideZoom && this.imgLoadedFlag) { | 212 | if (!this.hideZoom && this.imgLoadedFlag) { |
205 | this.imgLoaded(); | 213 | this.imgLoaded(); |
... | @@ -225,6 +233,11 @@ | ... | @@ -225,6 +233,11 @@ |
225 | selector.bgTop = addWidth - y * scale; | 233 | selector.bgTop = addWidth - y * scale; |
226 | } | 234 | } |
227 | }, | 235 | }, |
236 | /** | ||
237 | * @description: initSelectorProperty | ||
238 | * @param {*} selectorWidth | ||
239 | * @author: renchao | ||
240 | */ | ||
228 | initSelectorProperty (selectorWidth) { | 241 | initSelectorProperty (selectorWidth) { |
229 | const selectorHalfWidth = selectorWidth / 2; | 242 | const selectorHalfWidth = selectorWidth / 2; |
230 | const selector = this.selector; | 243 | const selector = this.selector; |
... | @@ -236,12 +249,20 @@ | ... | @@ -236,12 +249,20 @@ |
236 | selector.absoluteLeft = left + selectorHalfWidth + scrollLeft; | 249 | selector.absoluteLeft = left + selectorHalfWidth + scrollLeft; |
237 | selector.absoluteTop = top + selectorHalfWidth + scrollTop; | 250 | selector.absoluteTop = top + selectorHalfWidth + scrollTop; |
238 | }, | 251 | }, |
252 | /** | ||
253 | * @description: mouseLeave | ||
254 | * @author: renchao | ||
255 | */ | ||
239 | mouseLeave () { | 256 | mouseLeave () { |
240 | this.hideSelector = true; | 257 | this.hideSelector = true; |
241 | if (this.outShow) { | 258 | if (this.outShow) { |
242 | this.hideOutShow = true; | 259 | this.hideOutShow = true; |
243 | } | 260 | } |
244 | }, | 261 | }, |
262 | /** | ||
263 | * @description: reset | ||
264 | * @author: renchao | ||
265 | */ | ||
245 | reset () { | 266 | reset () { |
246 | Object.assign(this.selector, { | 267 | Object.assign(this.selector, { |
247 | top: 0, | 268 | top: 0, |
... | @@ -251,9 +272,18 @@ | ... | @@ -251,9 +272,18 @@ |
251 | }); | 272 | }); |
252 | this.resetOutShowInitPosition(); | 273 | this.resetOutShowInitPosition(); |
253 | }, | 274 | }, |
275 | /** | ||
276 | * @description: resetOutShowInitPosition | ||
277 | * @author: renchao | ||
278 | */ | ||
254 | resetOutShowInitPosition () { | 279 | resetOutShowInitPosition () { |
255 | this.outShowInitTop = 0; | 280 | this.outShowInitTop = 0; |
256 | }, | 281 | }, |
282 | /** | ||
283 | * @description: resetOutShowInitPosition | ||
284 | * @param {*} e | ||
285 | * @author: renchao | ||
286 | */ | ||
257 | imgerrorfun (e) { | 287 | imgerrorfun (e) { |
258 | // let img = require('@/assets/vehicle_img/blank_vehicle.jpg') | 288 | // let img = require('@/assets/vehicle_img/blank_vehicle.jpg') |
259 | // this.url = img | 289 | // this.url = img |
... | @@ -326,4 +356,4 @@ | ... | @@ -326,4 +356,4 @@ |
326 | top: 50%; | 356 | top: 50%; |
327 | transform: translateY(-50%); | 357 | transform: translateY(-50%); |
328 | } | 358 | } |
329 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
359 | </style> | ... | ... |
... | @@ -2,6 +2,15 @@ import Vue from 'vue' | ... | @@ -2,6 +2,15 @@ import Vue from 'vue' |
2 | import Popup from './index.vue' | 2 | import Popup from './index.vue' |
3 | 3 | ||
4 | const PopupBox = Vue.extend(Popup) | 4 | const PopupBox = Vue.extend(Popup) |
5 | |||
6 | /** | ||
7 | * @description: install | ||
8 | * @param {*} title | ||
9 | * @param {*} editItem | ||
10 | * @param {*} data | ||
11 | * @param {*} formData | ||
12 | * @author: renchao | ||
13 | */ | ||
5 | Popup.install = function (title, editItem, data, formData) { | 14 | Popup.install = function (title, editItem, data, formData) { |
6 | data.title = title | 15 | data.title = title |
7 | data.editItem = editItem | 16 | data.editItem = editItem | ... | ... |
... | @@ -55,7 +55,10 @@ export default { | ... | @@ -55,7 +55,10 @@ export default { |
55 | } | 55 | } |
56 | }, | 56 | }, |
57 | mounted () { | 57 | mounted () { |
58 | // 计算滚动条高度 | 58 | /** |
59 | * @description: 计算滚动条高度 | ||
60 | * @author: renchao | ||
61 | */ | ||
59 | setTimeout(() => { | 62 | setTimeout(() => { |
60 | if (this.btnShow) { | 63 | if (this.btnShow) { |
61 | if (this.height == 'auto') { | 64 | if (this.height == 'auto') { |
... | @@ -73,10 +76,18 @@ export default { | ... | @@ -73,10 +76,18 @@ export default { |
73 | }, 300) | 76 | }, 300) |
74 | }, | 77 | }, |
75 | methods: { | 78 | methods: { |
79 | /** | ||
80 | * @description: onCancel | ||
81 | * @author: renchao | ||
82 | */ | ||
76 | onCancel () { | 83 | onCancel () { |
77 | this.isShow = false | 84 | this.isShow = false |
78 | this.cancel() | 85 | this.cancel() |
79 | }, | 86 | }, |
87 | /** | ||
88 | * @description: onConfirm | ||
89 | * @author: renchao | ||
90 | */ | ||
80 | onConfirm () { | 91 | onConfirm () { |
81 | this.loading = true | 92 | this.loading = true |
82 | let res = new Promise((resolve, reject) => { | 93 | let res = new Promise((resolve, reject) => { |
... | @@ -87,9 +98,19 @@ export default { | ... | @@ -87,9 +98,19 @@ export default { |
87 | this.isShow = false | 98 | this.isShow = false |
88 | } | 99 | } |
89 | }, | 100 | }, |
101 | /** | ||
102 | * @description: loadingFn | ||
103 | * @param {*} e | ||
104 | * @author: renchao | ||
105 | */ | ||
90 | loadingFn (e) { //加载状态 | 106 | loadingFn (e) { //加载状态 |
91 | this.loading = e | 107 | this.loading = e |
92 | }, | 108 | }, |
109 | /** | ||
110 | * @description: loadViewFn | ||
111 | * @param {*} view | ||
112 | * @author: renchao | ||
113 | */ | ||
93 | loadViewFn (view) { | 114 | loadViewFn (view) { |
94 | return (r) => | 115 | return (r) => |
95 | require.ensure([], () => | 116 | require.ensure([], () => | ... | ... |
1 | /* | 1 | /* |
2 | * @Description: | 2 | * @Description: |
3 | * @Autor: renchao | 3 | * @Autor: renchao |
4 | * @LastEditTime: 2023-06-14 15:05:38 | 4 | * @LastEditTime: 2023-06-14 15:05:38 |
5 | */ | 5 | */ |
... | @@ -8,6 +8,10 @@ import Popup from './index.vue' | ... | @@ -8,6 +8,10 @@ import Popup from './index.vue' |
8 | const PopupBox = Vue.extend(Popup) | 8 | const PopupBox = Vue.extend(Popup) |
9 | let popuping = undefined | 9 | let popuping = undefined |
10 | 10 | ||
11 | /** | ||
12 | * @description: close | ||
13 | * @author: renchao | ||
14 | */ | ||
11 | PopupBox.prototype.close = function () { | 15 | PopupBox.prototype.close = function () { |
12 | // 如果Popup 有引用,则去掉引用 | 16 | // 如果Popup 有引用,则去掉引用 |
13 | if (popuping) { | 17 | if (popuping) { |
... | @@ -23,7 +27,14 @@ PopupBox.prototype.close = function () { | ... | @@ -23,7 +27,14 @@ PopupBox.prototype.close = function () { |
23 | } | 27 | } |
24 | }, 300) | 28 | }, 300) |
25 | } | 29 | } |
26 | 30 | /** | |
31 | * @description: Popup1 | ||
32 | * @param {*} title | ||
33 | * @param {*} editItem | ||
34 | * @param {*} data | ||
35 | * @param {*} formData | ||
36 | * @author: renchao | ||
37 | */ | ||
27 | const Popup1 = (title, editItem, data, formData) => { | 38 | const Popup1 = (title, editItem, data, formData) => { |
28 | // 如果组件已渲染,则返回即可 | 39 | // 如果组件已渲染,则返回即可 |
29 | if (popuping) { | 40 | if (popuping) { | ... | ... |
... | @@ -56,7 +56,10 @@ | ... | @@ -56,7 +56,10 @@ |
56 | } | 56 | } |
57 | }, | 57 | }, |
58 | mounted () { | 58 | mounted () { |
59 | // 计算滚动条高度 | 59 | /** |
60 | * @description: 计算滚动条高度 | ||
61 | * @author: renchao | ||
62 | */ | ||
60 | setTimeout(() => { | 63 | setTimeout(() => { |
61 | if (this.btnShow) { | 64 | if (this.btnShow) { |
62 | if (this.height == 'auto') { | 65 | if (this.height == 'auto') { |
... | @@ -74,9 +77,17 @@ | ... | @@ -74,9 +77,17 @@ |
74 | }, 300) | 77 | }, 300) |
75 | }, | 78 | }, |
76 | methods: { | 79 | methods: { |
80 | /** | ||
81 | * @description: onCancel | ||
82 | * @author: renchao | ||
83 | */ | ||
77 | onCancel () { | 84 | onCancel () { |
78 | Popup1().close() | 85 | Popup1().close() |
79 | }, | 86 | }, |
87 | /** | ||
88 | * @description: onConfirm | ||
89 | * @author: renchao | ||
90 | */ | ||
80 | onConfirm () { | 91 | onConfirm () { |
81 | let res = new Promise((resolve, reject) => { | 92 | let res = new Promise((resolve, reject) => { |
82 | this.confirm() | 93 | this.confirm() |
... | @@ -86,6 +97,11 @@ | ... | @@ -86,6 +97,11 @@ |
86 | this.isShow = false | 97 | this.isShow = false |
87 | } | 98 | } |
88 | }, | 99 | }, |
100 | /** | ||
101 | * @description: loadViewFn | ||
102 | * @param {*} view | ||
103 | * @author: renchao | ||
104 | */ | ||
89 | loadViewFn (view) { | 105 | loadViewFn (view) { |
90 | return (r) => | 106 | return (r) => |
91 | require.ensure([], () => | 107 | require.ensure([], () => |
... | @@ -185,4 +201,3 @@ | ... | @@ -185,4 +201,3 @@ |
185 | opacity: 0; | 201 | opacity: 0; |
186 | } | 202 | } |
187 | </style> | 203 | </style> |
188 | |||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -84,6 +84,13 @@ export default { | ... | @@ -84,6 +84,13 @@ export default { |
84 | }, | 84 | }, |
85 | 85 | ||
86 | methods: { | 86 | methods: { |
87 | /** | ||
88 | * @description: updateStyle | ||
89 | * @param {*} style | ||
90 | * @param {*} oldCluster | ||
91 | * @param {*} newCluster | ||
92 | * @author: renchao | ||
93 | */ | ||
87 | updateStyle (style, oldCluster, newCluster) { | 94 | updateStyle (style, oldCluster, newCluster) { |
88 | let newStyle = style | 95 | let newStyle = style |
89 | oldCluster.forEach((color, index) => { | 96 | oldCluster.forEach((color, index) => { |
... | @@ -92,6 +99,12 @@ export default { | ... | @@ -92,6 +99,12 @@ export default { |
92 | return newStyle | 99 | return newStyle |
93 | }, | 100 | }, |
94 | 101 | ||
102 | /** | ||
103 | * @description: getCSSString | ||
104 | * @param {*} url | ||
105 | * @param {*} variable | ||
106 | * @author: renchao | ||
107 | */ | ||
95 | getCSSString (url, variable) { | 108 | getCSSString (url, variable) { |
96 | return new Promise(resolve => { | 109 | return new Promise(resolve => { |
97 | const xhr = new XMLHttpRequest() | 110 | const xhr = new XMLHttpRequest() |
... | @@ -106,6 +119,11 @@ export default { | ... | @@ -106,6 +119,11 @@ export default { |
106 | }) | 119 | }) |
107 | }, | 120 | }, |
108 | 121 | ||
122 | /** | ||
123 | * @description: getThemeCluster | ||
124 | * @param {*} theme | ||
125 | * @author: renchao | ||
126 | */ | ||
109 | getThemeCluster (theme) { | 127 | getThemeCluster (theme) { |
110 | const tintColor = (color, tint) => { | 128 | const tintColor = (color, tint) => { |
111 | let red = parseInt(color.slice(0, 2), 16) | 129 | let red = parseInt(color.slice(0, 2), 16) |
... | @@ -169,4 +187,4 @@ export default { | ... | @@ -169,4 +187,4 @@ export default { |
169 | .theme-picker-dropdown .el-color-dropdown__link-btn { | 187 | .theme-picker-dropdown .el-color-dropdown__link-btn { |
170 | display: none; | 188 | display: none; |
171 | } | 189 | } |
172 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
190 | </style> | ... | ... |
... | @@ -2,6 +2,10 @@ import objectAssign from 'element-ui/src/utils/merge'; | ... | @@ -2,6 +2,10 @@ import objectAssign from 'element-ui/src/utils/merge'; |
2 | import { markNodeData, NODE_KEY } from './util'; | 2 | import { markNodeData, NODE_KEY } from './util'; |
3 | import { arrayFindIndex } from 'element-ui/src/utils/util'; | 3 | import { arrayFindIndex } from 'element-ui/src/utils/util'; |
4 | 4 | ||
5 | /** | ||
6 | * @description: getChildState | ||
7 | * @author: renchao | ||
8 | */ | ||
5 | export const getChildState = node => { | 9 | export const getChildState = node => { |
6 | let all = true; | 10 | let all = true; |
7 | let none = true; | 11 | let none = true; |
... | @@ -22,6 +26,11 @@ export const getChildState = node => { | ... | @@ -22,6 +26,11 @@ export const getChildState = node => { |
22 | return { all, none, allWithoutDisable, half: !all && !none }; | 26 | return { all, none, allWithoutDisable, half: !all && !none }; |
23 | }; | 27 | }; |
24 | 28 | ||
29 | /** | ||
30 | * @description: reInitChecked | ||
31 | * @param {*} node | ||
32 | * @author: renchao | ||
33 | */ | ||
25 | const reInitChecked = function(node) { | 34 | const reInitChecked = function(node) { |
26 | if (node.childNodes.length === 0 || node.loading) return; | 35 | if (node.childNodes.length === 0 || node.loading) return; |
27 | 36 | ||
... | @@ -45,6 +54,12 @@ const reInitChecked = function(node) { | ... | @@ -45,6 +54,12 @@ const reInitChecked = function(node) { |
45 | } | 54 | } |
46 | }; | 55 | }; |
47 | 56 | ||
57 | /** | ||
58 | * @description: getPropertyFromData | ||
59 | * @param {*} node | ||
60 | * @param {*} prop | ||
61 | * @author: renchao | ||
62 | */ | ||
48 | const getPropertyFromData = function(node, prop) { | 63 | const getPropertyFromData = function(node, prop) { |
49 | const props = node.store.props; | 64 | const props = node.store.props; |
50 | const data = node.data || {}; | 65 | const data = node.data || {}; |
... | @@ -63,6 +78,11 @@ const getPropertyFromData = function(node, prop) { | ... | @@ -63,6 +78,11 @@ const getPropertyFromData = function(node, prop) { |
63 | let nodeIdSeed = 0; | 78 | let nodeIdSeed = 0; |
64 | 79 | ||
65 | export default class Node { | 80 | export default class Node { |
81 | /** | ||
82 | * @description: constructor | ||
83 | * @param {*} options | ||
84 | * @author: renchao | ||
85 | */ | ||
66 | constructor(options) { | 86 | constructor(options) { |
67 | this.id = nodeIdSeed++; | 87 | this.id = nodeIdSeed++; |
68 | this.text = null; | 88 | this.text = null; |
... | @@ -135,6 +155,11 @@ export default class Node { | ... | @@ -135,6 +155,11 @@ export default class Node { |
135 | this.updateLeafState(); | 155 | this.updateLeafState(); |
136 | } | 156 | } |
137 | 157 | ||
158 | /** | ||
159 | * @description: setData | ||
160 | * @param {*} data | ||
161 | * @author: renchao | ||
162 | */ | ||
138 | setData(data) { | 163 | setData(data) { |
139 | if (!Array.isArray(data)) { | 164 | if (!Array.isArray(data)) { |
140 | markNodeData(this, data); | 165 | markNodeData(this, data); |
... | @@ -155,20 +180,36 @@ export default class Node { | ... | @@ -155,20 +180,36 @@ export default class Node { |
155 | } | 180 | } |
156 | } | 181 | } |
157 | 182 | ||
183 | /** | ||
184 | * @description: label | ||
185 | * @author: renchao | ||
186 | */ | ||
158 | get label() { | 187 | get label() { |
159 | return getPropertyFromData(this, 'label'); | 188 | return getPropertyFromData(this, 'label'); |
160 | } | 189 | } |
161 | 190 | ||
191 | /** | ||
192 | * @description: key | ||
193 | * @author: renchao | ||
194 | */ | ||
162 | get key() { | 195 | get key() { |
163 | const nodeKey = this.store.key; | 196 | const nodeKey = this.store.key; |
164 | if (this.data) return this.data[nodeKey]; | 197 | if (this.data) return this.data[nodeKey]; |
165 | return null; | 198 | return null; |
166 | } | 199 | } |
167 | 200 | ||
201 | /** | ||
202 | * @description: disabled | ||
203 | * @author: renchao | ||
204 | */ | ||
168 | get disabled() { | 205 | get disabled() { |
169 | return getPropertyFromData(this, 'disabled'); | 206 | return getPropertyFromData(this, 'disabled'); |
170 | } | 207 | } |
171 | 208 | ||
209 | /** | ||
210 | * @description: nextSibling | ||
211 | * @author: renchao | ||
212 | */ | ||
172 | get nextSibling() { | 213 | get nextSibling() { |
173 | const parent = this.parent; | 214 | const parent = this.parent; |
174 | if (parent) { | 215 | if (parent) { |
... | @@ -180,6 +221,10 @@ export default class Node { | ... | @@ -180,6 +221,10 @@ export default class Node { |
180 | return null; | 221 | return null; |
181 | } | 222 | } |
182 | 223 | ||
224 | /** | ||
225 | * @description: previousSibling | ||
226 | * @author: renchao | ||
227 | */ | ||
183 | get previousSibling() { | 228 | get previousSibling() { |
184 | const parent = this.parent; | 229 | const parent = this.parent; |
185 | if (parent) { | 230 | if (parent) { |
... | @@ -191,6 +236,12 @@ export default class Node { | ... | @@ -191,6 +236,12 @@ export default class Node { |
191 | return null; | 236 | return null; |
192 | } | 237 | } |
193 | 238 | ||
239 | /** | ||
240 | * @description: contains | ||
241 | * @param {*} target | ||
242 | * @param {*} deep | ||
243 | * @author: renchao | ||
244 | */ | ||
194 | contains(target, deep = true) { | 245 | contains(target, deep = true) { |
195 | const walk = function(parent) { | 246 | const walk = function(parent) { |
196 | const children = parent.childNodes || []; | 247 | const children = parent.childNodes || []; |
... | @@ -208,6 +259,10 @@ export default class Node { | ... | @@ -208,6 +259,10 @@ export default class Node { |
208 | return walk(this); | 259 | return walk(this); |
209 | } | 260 | } |
210 | 261 | ||
262 | /** | ||
263 | * @description: remove | ||
264 | * @author: renchao | ||
265 | */ | ||
211 | remove() { | 266 | remove() { |
212 | const parent = this.parent; | 267 | const parent = this.parent; |
213 | if (parent) { | 268 | if (parent) { |
... | @@ -215,6 +270,13 @@ export default class Node { | ... | @@ -215,6 +270,13 @@ export default class Node { |
215 | } | 270 | } |
216 | } | 271 | } |
217 | 272 | ||
273 | /** | ||
274 | * @description: insertChild | ||
275 | * @param {*} child | ||
276 | * @param {*} index | ||
277 | * @param {*} batch | ||
278 | * @author: renchao | ||
279 | */ | ||
218 | insertChild(child, index, batch) { | 280 | insertChild(child, index, batch) { |
219 | if (!child) throw new Error('insertChild error: child is required.'); | 281 | if (!child) throw new Error('insertChild error: child is required.'); |
220 | 282 | ||
... | @@ -247,6 +309,12 @@ export default class Node { | ... | @@ -247,6 +309,12 @@ export default class Node { |
247 | this.updateLeafState(); | 309 | this.updateLeafState(); |
248 | } | 310 | } |
249 | 311 | ||
312 | /** | ||
313 | * @description: insertBefore | ||
314 | * @param {*} child | ||
315 | * @param {*} ref | ||
316 | * @author: renchao | ||
317 | */ | ||
250 | insertBefore(child, ref) { | 318 | insertBefore(child, ref) { |
251 | let index; | 319 | let index; |
252 | if (ref) { | 320 | if (ref) { |
... | @@ -255,6 +323,12 @@ export default class Node { | ... | @@ -255,6 +323,12 @@ export default class Node { |
255 | this.insertChild(child, index); | 323 | this.insertChild(child, index); |
256 | } | 324 | } |
257 | 325 | ||
326 | /** | ||
327 | * @description: insertAfter | ||
328 | * @param {*} child | ||
329 | * @param {*} ref | ||
330 | * @author: renchao | ||
331 | */ | ||
258 | insertAfter(child, ref) { | 332 | insertAfter(child, ref) { |
259 | let index; | 333 | let index; |
260 | if (ref) { | 334 | if (ref) { |
... | @@ -264,6 +338,11 @@ export default class Node { | ... | @@ -264,6 +338,11 @@ export default class Node { |
264 | this.insertChild(child, index); | 338 | this.insertChild(child, index); |
265 | } | 339 | } |
266 | 340 | ||
341 | /** | ||
342 | * @description: removeChild | ||
343 | * @param {*} child | ||
344 | * @author: renchao | ||
345 | */ | ||
267 | removeChild(child) { | 346 | removeChild(child) { |
268 | const children = this.getChildren() || []; | 347 | const children = this.getChildren() || []; |
269 | const dataIndex = children.indexOf(child.data); | 348 | const dataIndex = children.indexOf(child.data); |
... | @@ -282,6 +361,11 @@ export default class Node { | ... | @@ -282,6 +361,11 @@ export default class Node { |
282 | this.updateLeafState(); | 361 | this.updateLeafState(); |
283 | } | 362 | } |
284 | 363 | ||
364 | /** | ||
365 | * @description: removeChildByData | ||
366 | * @param {*} data | ||
367 | * @author: renchao | ||
368 | */ | ||
285 | removeChildByData(data) { | 369 | removeChildByData(data) { |
286 | let targetNode = null; | 370 | let targetNode = null; |
287 | 371 | ||
... | @@ -297,6 +381,12 @@ export default class Node { | ... | @@ -297,6 +381,12 @@ export default class Node { |
297 | } | 381 | } |
298 | } | 382 | } |
299 | 383 | ||
384 | /** | ||
385 | * @description: expand | ||
386 | * @param {*} callback | ||
387 | * @param {*} expandParent | ||
388 | * @author: renchao | ||
389 | */ | ||
300 | expand(callback, expandParent) { | 390 | expand(callback, expandParent) { |
301 | const done = () => { | 391 | const done = () => { |
302 | if (expandParent) { | 392 | if (expandParent) { |
... | @@ -326,20 +416,38 @@ export default class Node { | ... | @@ -326,20 +416,38 @@ export default class Node { |
326 | } | 416 | } |
327 | } | 417 | } |
328 | 418 | ||
419 | /** | ||
420 | * @description: doCreateChildren | ||
421 | * @param {*} array | ||
422 | * @param {*} defaultProps | ||
423 | * @author: renchao | ||
424 | */ | ||
329 | doCreateChildren(array, defaultProps = {}) { | 425 | doCreateChildren(array, defaultProps = {}) { |
330 | array.forEach((item) => { | 426 | array.forEach((item) => { |
331 | this.insertChild(objectAssign({ data: item }, defaultProps), undefined, true); | 427 | this.insertChild(objectAssign({ data: item }, defaultProps), undefined, true); |
332 | }); | 428 | }); |
333 | } | 429 | } |
334 | 430 | ||
431 | /** | ||
432 | * @description: collapse | ||
433 | * @author: renchao | ||
434 | */ | ||
335 | collapse() { | 435 | collapse() { |
336 | this.expanded = false; | 436 | this.expanded = false; |
337 | } | 437 | } |
338 | 438 | ||
439 | /** | ||
440 | * @description: shouldLoadData | ||
441 | * @author: renchao | ||
442 | */ | ||
339 | shouldLoadData() { | 443 | shouldLoadData() { |
340 | return this.store.lazy === true && this.store.load && !this.loaded; | 444 | return this.store.lazy === true && this.store.load && !this.loaded; |
341 | } | 445 | } |
342 | 446 | ||
447 | /** | ||
448 | * @description: updateLeafState | ||
449 | * @author: renchao | ||
450 | */ | ||
343 | updateLeafState() { | 451 | updateLeafState() { |
344 | if (this.store.lazy === true && this.loaded !== true && typeof this.isLeafByUser !== 'undefined') { | 452 | if (this.store.lazy === true && this.loaded !== true && typeof this.isLeafByUser !== 'undefined') { |
345 | this.isLeaf = this.isLeafByUser; | 453 | this.isLeaf = this.isLeafByUser; |
... | @@ -353,6 +461,14 @@ export default class Node { | ... | @@ -353,6 +461,14 @@ export default class Node { |
353 | this.isLeaf = false; | 461 | this.isLeaf = false; |
354 | } | 462 | } |
355 | 463 | ||
464 | /** | ||
465 | * @description: setChecked | ||
466 | * @param {*} value | ||
467 | * @param {*} deep | ||
468 | * @param {*} recursion | ||
469 | * @param {*} passValue | ||
470 | * @author: renchao | ||
471 | */ | ||
356 | setChecked(value, deep, recursion, passValue) { | 472 | setChecked(value, deep, recursion, passValue) { |
357 | this.indeterminate = value === 'half'; | 473 | this.indeterminate = value === 'half'; |
358 | this.checked = value === true; | 474 | this.checked = value === true; |
... | @@ -406,6 +522,11 @@ export default class Node { | ... | @@ -406,6 +522,11 @@ export default class Node { |
406 | } | 522 | } |
407 | } | 523 | } |
408 | 524 | ||
525 | /** | ||
526 | * @description: getChildren | ||
527 | * @param {*} forceInit | ||
528 | * @author: renchao | ||
529 | */ | ||
409 | getChildren(forceInit = false) { // this is data | 530 | getChildren(forceInit = false) { // this is data |
410 | if (this.level === 0) return this.data; | 531 | if (this.level === 0) return this.data; |
411 | const data = this.data; | 532 | const data = this.data; |
... | @@ -428,6 +549,10 @@ export default class Node { | ... | @@ -428,6 +549,10 @@ export default class Node { |
428 | return data[children]; | 549 | return data[children]; |
429 | } | 550 | } |
430 | 551 | ||
552 | /** | ||
553 | * @description: updateChildren | ||
554 | * @author: renchao | ||
555 | */ | ||
431 | updateChildren() { | 556 | updateChildren() { |
432 | const newData = this.getChildren() || []; | 557 | const newData = this.getChildren() || []; |
433 | const oldData = this.childNodes.map((node) => node.data); | 558 | const oldData = this.childNodes.map((node) => node.data); |
... | @@ -458,6 +583,12 @@ export default class Node { | ... | @@ -458,6 +583,12 @@ export default class Node { |
458 | this.updateLeafState(); | 583 | this.updateLeafState(); |
459 | } | 584 | } |
460 | 585 | ||
586 | /** | ||
587 | * @description: loadData | ||
588 | * @param {*} callback | ||
589 | * @param {*} defaultProps | ||
590 | * @author: renchao | ||
591 | */ | ||
461 | loadData(callback, defaultProps = {}) { | 592 | loadData(callback, defaultProps = {}) { |
462 | if (this.store.lazy === true && this.store.load && !this.loaded && (!this.loading || Object.keys(defaultProps).length)) { | 593 | if (this.store.lazy === true && this.store.load && !this.loaded && (!this.loading || Object.keys(defaultProps).length)) { |
463 | this.loading = true; | 594 | this.loading = true; | ... | ... |
... | @@ -2,6 +2,11 @@ import Node from './node'; | ... | @@ -2,6 +2,11 @@ import Node from './node'; |
2 | import { getNodeKey } from './util'; | 2 | import { getNodeKey } from './util'; |
3 | 3 | ||
4 | export default class TreeStore { | 4 | export default class TreeStore { |
5 | /** | ||
6 | * @description: constructor | ||
7 | * @param {*} options | ||
8 | * @author: renchao | ||
9 | */ | ||
5 | constructor(options) { | 10 | constructor(options) { |
6 | this.currentNode = null; | 11 | this.currentNode = null; |
7 | this.currentNodeKey = null; | 12 | this.currentNodeKey = null; |
... | @@ -30,6 +35,11 @@ export default class TreeStore { | ... | @@ -30,6 +35,11 @@ export default class TreeStore { |
30 | } | 35 | } |
31 | } | 36 | } |
32 | 37 | ||
38 | /** | ||
39 | * @description: filter | ||
40 | * @param {*} value | ||
41 | * @author: renchao | ||
42 | */ | ||
33 | filter(value) { | 43 | filter(value) { |
34 | const filterNodeMethod = this.filterNodeMethod; | 44 | const filterNodeMethod = this.filterNodeMethod; |
35 | const lazy = this.lazy; | 45 | const lazy = this.lazy; |
... | @@ -60,6 +70,11 @@ export default class TreeStore { | ... | @@ -60,6 +70,11 @@ export default class TreeStore { |
60 | traverse(this); | 70 | traverse(this); |
61 | } | 71 | } |
62 | 72 | ||
73 | /** | ||
74 | * @description: setData | ||
75 | * @param {*} newVal | ||
76 | * @author: renchao | ||
77 | */ | ||
63 | setData(newVal) { | 78 | setData(newVal) { |
64 | const instanceChanged = newVal !== this.root.data; | 79 | const instanceChanged = newVal !== this.root.data; |
65 | if (instanceChanged) { | 80 | if (instanceChanged) { |
... | @@ -70,22 +85,44 @@ export default class TreeStore { | ... | @@ -70,22 +85,44 @@ export default class TreeStore { |
70 | } | 85 | } |
71 | } | 86 | } |
72 | 87 | ||
88 | /** | ||
89 | * @description: getNode | ||
90 | * @param {*} data | ||
91 | * @author: renchao | ||
92 | */ | ||
73 | getNode(data) { | 93 | getNode(data) { |
74 | if (data instanceof Node) return data; | 94 | if (data instanceof Node) return data; |
75 | const key = typeof data !== 'object' ? data : getNodeKey(this.key, data); | 95 | const key = typeof data !== 'object' ? data : getNodeKey(this.key, data); |
76 | return this.nodesMap[key] || null; | 96 | return this.nodesMap[key] || null; |
77 | } | 97 | } |
78 | 98 | ||
99 | /** | ||
100 | * @description: insertBefore | ||
101 | * @param {*} data | ||
102 | * @param {*} refData | ||
103 | * @author: renchao | ||
104 | */ | ||
79 | insertBefore(data, refData) { | 105 | insertBefore(data, refData) { |
80 | const refNode = this.getNode(refData); | 106 | const refNode = this.getNode(refData); |
81 | refNode.parent.insertBefore({ data }, refNode); | 107 | refNode.parent.insertBefore({ data }, refNode); |
82 | } | 108 | } |
83 | 109 | ||
110 | /** | ||
111 | * @description: insertAfter | ||
112 | * @param {*} data | ||
113 | * @param {*} refData | ||
114 | * @author: renchao | ||
115 | */ | ||
84 | insertAfter(data, refData) { | 116 | insertAfter(data, refData) { |
85 | const refNode = this.getNode(refData); | 117 | const refNode = this.getNode(refData); |
86 | refNode.parent.insertAfter({ data }, refNode); | 118 | refNode.parent.insertAfter({ data }, refNode); |
87 | } | 119 | } |
88 | 120 | ||
121 | /** | ||
122 | * @description: remove | ||
123 | * @param {*} data | ||
124 | * @author: renchao | ||
125 | */ | ||
89 | remove(data) { | 126 | remove(data) { |
90 | const node = this.getNode(data); | 127 | const node = this.getNode(data); |
91 | 128 | ||
... | @@ -97,6 +134,12 @@ export default class TreeStore { | ... | @@ -97,6 +134,12 @@ export default class TreeStore { |
97 | } | 134 | } |
98 | } | 135 | } |
99 | 136 | ||
137 | /** | ||
138 | * @description: append | ||
139 | * @param {*} data | ||
140 | * @param {*} parentData | ||
141 | * @author: renchao | ||
142 | */ | ||
100 | append(data, parentData) { | 143 | append(data, parentData) { |
101 | const parentNode = parentData ? this.getNode(parentData) : this.root; | 144 | const parentNode = parentData ? this.getNode(parentData) : this.root; |
102 | 145 | ||
... | @@ -105,6 +148,10 @@ export default class TreeStore { | ... | @@ -105,6 +148,10 @@ export default class TreeStore { |
105 | } | 148 | } |
106 | } | 149 | } |
107 | 150 | ||
151 | /** | ||
152 | * @description: _initDefaultCheckedNodes | ||
153 | * @author: renchao | ||
154 | */ | ||
108 | _initDefaultCheckedNodes() { | 155 | _initDefaultCheckedNodes() { |
109 | const defaultCheckedKeys = this.defaultCheckedKeys || []; | 156 | const defaultCheckedKeys = this.defaultCheckedKeys || []; |
110 | const nodesMap = this.nodesMap; | 157 | const nodesMap = this.nodesMap; |
... | @@ -118,6 +165,11 @@ export default class TreeStore { | ... | @@ -118,6 +165,11 @@ export default class TreeStore { |
118 | }); | 165 | }); |
119 | } | 166 | } |
120 | 167 | ||
168 | /** | ||
169 | * @description: _initDefaultCheckedNode | ||
170 | * @param {*} node | ||
171 | * @author: renchao | ||
172 | */ | ||
121 | _initDefaultCheckedNode(node) { | 173 | _initDefaultCheckedNode(node) { |
122 | const defaultCheckedKeys = this.defaultCheckedKeys || []; | 174 | const defaultCheckedKeys = this.defaultCheckedKeys || []; |
123 | 175 | ||
... | @@ -126,6 +178,11 @@ export default class TreeStore { | ... | @@ -126,6 +178,11 @@ export default class TreeStore { |
126 | } | 178 | } |
127 | } | 179 | } |
128 | 180 | ||
181 | /** | ||
182 | * @description: setDefaultCheckedKey | ||
183 | * @param {*} newVal | ||
184 | * @author: renchao | ||
185 | */ | ||
129 | setDefaultCheckedKey(newVal) { | 186 | setDefaultCheckedKey(newVal) { |
130 | if (newVal !== this.defaultCheckedKeys) { | 187 | if (newVal !== this.defaultCheckedKeys) { |
131 | this.defaultCheckedKeys = newVal; | 188 | this.defaultCheckedKeys = newVal; |
... | @@ -133,6 +190,11 @@ export default class TreeStore { | ... | @@ -133,6 +190,11 @@ export default class TreeStore { |
133 | } | 190 | } |
134 | } | 191 | } |
135 | 192 | ||
193 | /** | ||
194 | * @description: registerNode | ||
195 | * @param {*} node | ||
196 | * @author: renchao | ||
197 | */ | ||
136 | registerNode(node) { | 198 | registerNode(node) { |
137 | const key = this.key; | 199 | const key = this.key; |
138 | if (!key || !node || !node.data) return; | 200 | if (!key || !node || !node.data) return; |
... | @@ -141,6 +203,11 @@ export default class TreeStore { | ... | @@ -141,6 +203,11 @@ export default class TreeStore { |
141 | if (nodeKey !== undefined) this.nodesMap[node.key] = node; | 203 | if (nodeKey !== undefined) this.nodesMap[node.key] = node; |
142 | } | 204 | } |
143 | 205 | ||
206 | /** | ||
207 | * @description: deregisterNode | ||
208 | * @param {*} node | ||
209 | * @author: renchao | ||
210 | */ | ||
144 | deregisterNode(node) { | 211 | deregisterNode(node) { |
145 | const key = this.key; | 212 | const key = this.key; |
146 | if (!key || !node || !node.data) return; | 213 | if (!key || !node || !node.data) return; |
... | @@ -152,6 +219,12 @@ export default class TreeStore { | ... | @@ -152,6 +219,12 @@ export default class TreeStore { |
152 | delete this.nodesMap[node.key]; | 219 | delete this.nodesMap[node.key]; |
153 | } | 220 | } |
154 | 221 | ||
222 | /** | ||
223 | * @description: getCheckedNodes | ||
224 | * @param {*} leafOnly | ||
225 | * @param {*} includeHalfChecked | ||
226 | * @author: renchao | ||
227 | */ | ||
155 | getCheckedNodes(leafOnly = false, includeHalfChecked = false) { | 228 | getCheckedNodes(leafOnly = false, includeHalfChecked = false) { |
156 | const checkedNodes = []; | 229 | const checkedNodes = []; |
157 | const traverse = function(node) { | 230 | const traverse = function(node) { |
... | @@ -171,10 +244,19 @@ export default class TreeStore { | ... | @@ -171,10 +244,19 @@ export default class TreeStore { |
171 | return checkedNodes; | 244 | return checkedNodes; |
172 | } | 245 | } |
173 | 246 | ||
247 | /** | ||
248 | * @description: getCheckedKeys | ||
249 | * @param {*} leafOnly | ||
250 | * @author: renchao | ||
251 | */ | ||
174 | getCheckedKeys(leafOnly = false) { | 252 | getCheckedKeys(leafOnly = false) { |
175 | return this.getCheckedNodes(leafOnly).map((data) => (data || {})[this.key]); | 253 | return this.getCheckedNodes(leafOnly).map((data) => (data || {})[this.key]); |
176 | } | 254 | } |
177 | 255 | ||
256 | /** | ||
257 | * @description: getHalfCheckedNodes | ||
258 | * @author: renchao | ||
259 | */ | ||
178 | getHalfCheckedNodes() { | 260 | getHalfCheckedNodes() { |
179 | const nodes = []; | 261 | const nodes = []; |
180 | const traverse = function(node) { | 262 | const traverse = function(node) { |
... | @@ -194,10 +276,18 @@ export default class TreeStore { | ... | @@ -194,10 +276,18 @@ export default class TreeStore { |
194 | return nodes; | 276 | return nodes; |
195 | } | 277 | } |
196 | 278 | ||
279 | /** | ||
280 | * @description: getHalfCheckedKeys | ||
281 | * @author: renchao | ||
282 | */ | ||
197 | getHalfCheckedKeys() { | 283 | getHalfCheckedKeys() { |
198 | return this.getHalfCheckedNodes().map((data) => (data || {})[this.key]); | 284 | return this.getHalfCheckedNodes().map((data) => (data || {})[this.key]); |
199 | } | 285 | } |
200 | 286 | ||
287 | /** | ||
288 | * @description: _getAllNodes | ||
289 | * @author: renchao | ||
290 | */ | ||
201 | _getAllNodes() { | 291 | _getAllNodes() { |
202 | const allNodes = []; | 292 | const allNodes = []; |
203 | const nodesMap = this.nodesMap; | 293 | const nodesMap = this.nodesMap; |
... | @@ -210,6 +300,12 @@ export default class TreeStore { | ... | @@ -210,6 +300,12 @@ export default class TreeStore { |
210 | return allNodes; | 300 | return allNodes; |
211 | } | 301 | } |
212 | 302 | ||
303 | /** | ||
304 | * @description: updateChildren | ||
305 | * @param {*} key | ||
306 | * @param {*} data | ||
307 | * @author: renchao | ||
308 | */ | ||
213 | updateChildren(key, data) { | 309 | updateChildren(key, data) { |
214 | const node = this.nodesMap[key]; | 310 | const node = this.nodesMap[key]; |
215 | if (!node) return; | 311 | if (!node) return; |
... | @@ -224,6 +320,13 @@ export default class TreeStore { | ... | @@ -224,6 +320,13 @@ export default class TreeStore { |
224 | } | 320 | } |
225 | } | 321 | } |
226 | 322 | ||
323 | /** | ||
324 | * @description: _setCheckedKeys | ||
325 | * @param {*} key | ||
326 | * @param {*} leafOnly | ||
327 | * @param {*} checkedKeys | ||
328 | * @author: renchao | ||
329 | */ | ||
227 | _setCheckedKeys(key, leafOnly = false, checkedKeys) { | 330 | _setCheckedKeys(key, leafOnly = false, checkedKeys) { |
228 | const allNodes = this._getAllNodes().sort((a, b) => b.level - a.level); | 331 | const allNodes = this._getAllNodes().sort((a, b) => b.level - a.level); |
229 | const cache = Object.create(null); | 332 | const cache = Object.create(null); |
... | @@ -268,6 +371,12 @@ export default class TreeStore { | ... | @@ -268,6 +371,12 @@ export default class TreeStore { |
268 | } | 371 | } |
269 | } | 372 | } |
270 | 373 | ||
374 | /** | ||
375 | * @description: setCheckedNodes | ||
376 | * @param {*} array | ||
377 | * @param {*} leafOnly | ||
378 | * @author: renchao | ||
379 | */ | ||
271 | setCheckedNodes(array, leafOnly = false) { | 380 | setCheckedNodes(array, leafOnly = false) { |
272 | const key = this.key; | 381 | const key = this.key; |
273 | const checkedKeys = {}; | 382 | const checkedKeys = {}; |
... | @@ -278,6 +387,12 @@ export default class TreeStore { | ... | @@ -278,6 +387,12 @@ export default class TreeStore { |
278 | this._setCheckedKeys(key, leafOnly, checkedKeys); | 387 | this._setCheckedKeys(key, leafOnly, checkedKeys); |
279 | } | 388 | } |
280 | 389 | ||
390 | /** | ||
391 | * @description: setCheckedKeys | ||
392 | * @param {*} array | ||
393 | * @param {*} leafOnly | ||
394 | * @author: renchao | ||
395 | */ | ||
281 | setCheckedKeys(keys, leafOnly = false) { | 396 | setCheckedKeys(keys, leafOnly = false) { |
282 | this.defaultCheckedKeys = keys; | 397 | this.defaultCheckedKeys = keys; |
283 | const key = this.key; | 398 | const key = this.key; |
... | @@ -289,6 +404,11 @@ export default class TreeStore { | ... | @@ -289,6 +404,11 @@ export default class TreeStore { |
289 | this._setCheckedKeys(key, leafOnly, checkedKeys); | 404 | this._setCheckedKeys(key, leafOnly, checkedKeys); |
290 | } | 405 | } |
291 | 406 | ||
407 | /** | ||
408 | * @description: setDefaultExpandedKeys | ||
409 | * @param {*} keys | ||
410 | * @author: renchao | ||
411 | */ | ||
292 | setDefaultExpandedKeys(keys) { | 412 | setDefaultExpandedKeys(keys) { |
293 | keys = keys || []; | 413 | keys = keys || []; |
294 | this.defaultExpandedKeys = keys; | 414 | this.defaultExpandedKeys = keys; |
... | @@ -299,6 +419,13 @@ export default class TreeStore { | ... | @@ -299,6 +419,13 @@ export default class TreeStore { |
299 | }); | 419 | }); |
300 | } | 420 | } |
301 | 421 | ||
422 | /** | ||
423 | * @description: setChecked | ||
424 | * @param {*} data | ||
425 | * @param {*} checked | ||
426 | * @param {*} deep | ||
427 | * @author: renchao | ||
428 | */ | ||
302 | setChecked(data, checked, deep) { | 429 | setChecked(data, checked, deep) { |
303 | const node = this.getNode(data); | 430 | const node = this.getNode(data); |
304 | 431 | ||
... | @@ -307,10 +434,19 @@ export default class TreeStore { | ... | @@ -307,10 +434,19 @@ export default class TreeStore { |
307 | } | 434 | } |
308 | } | 435 | } |
309 | 436 | ||
437 | /** | ||
438 | * @description: getCurrentNode | ||
439 | * @author: renchao | ||
440 | */ | ||
310 | getCurrentNode() { | 441 | getCurrentNode() { |
311 | return this.currentNode; | 442 | return this.currentNode; |
312 | } | 443 | } |
313 | 444 | ||
445 | /** | ||
446 | * @description: setCurrentNode | ||
447 | * @param {*} currentNode | ||
448 | * @author: renchao | ||
449 | */ | ||
314 | setCurrentNode(currentNode) { | 450 | setCurrentNode(currentNode) { |
315 | const prevCurrentNode = this.currentNode; | 451 | const prevCurrentNode = this.currentNode; |
316 | if (prevCurrentNode) { | 452 | if (prevCurrentNode) { |
... | @@ -320,12 +456,22 @@ export default class TreeStore { | ... | @@ -320,12 +456,22 @@ export default class TreeStore { |
320 | this.currentNode.isCurrent = true; | 456 | this.currentNode.isCurrent = true; |
321 | } | 457 | } |
322 | 458 | ||
459 | /** | ||
460 | * @description: setUserCurrentNode | ||
461 | * @param {*} node | ||
462 | * @author: renchao | ||
463 | */ | ||
323 | setUserCurrentNode(node) { | 464 | setUserCurrentNode(node) { |
324 | const key = node[this.key]; | 465 | const key = node[this.key]; |
325 | const currNode = this.nodesMap[key]; | 466 | const currNode = this.nodesMap[key]; |
326 | this.setCurrentNode(currNode); | 467 | this.setCurrentNode(currNode); |
327 | } | 468 | } |
328 | 469 | ||
470 | /** | ||
471 | * @description: setCurrentNodeKey | ||
472 | * @param {*} key | ||
473 | * @author: renchao | ||
474 | */ | ||
329 | setCurrentNodeKey(key) { | 475 | setCurrentNodeKey(key) { |
330 | if (key === null || key === undefined) { | 476 | if (key === null || key === undefined) { |
331 | this.currentNode && (this.currentNode.isCurrent = false); | 477 | this.currentNode && (this.currentNode.isCurrent = false); | ... | ... |
1 | export const NODE_KEY = '$treeNodeId'; | 1 | export const NODE_KEY = '$treeNodeId'; |
2 | 2 | ||
3 | /** | ||
4 | * @description: markNodeData | ||
5 | * @param {*} node | ||
6 | * @param {*} data | ||
7 | * @author: renchao | ||
8 | */ | ||
3 | export const markNodeData = function(node, data) { | 9 | export const markNodeData = function(node, data) { |
4 | if (!data || data[NODE_KEY]) return; | 10 | if (!data || data[NODE_KEY]) return; |
5 | Object.defineProperty(data, NODE_KEY, { | 11 | Object.defineProperty(data, NODE_KEY, { |
... | @@ -10,11 +16,23 @@ export const markNodeData = function(node, data) { | ... | @@ -10,11 +16,23 @@ export const markNodeData = function(node, data) { |
10 | }); | 16 | }); |
11 | }; | 17 | }; |
12 | 18 | ||
19 | /** | ||
20 | * @description: getNodeKey | ||
21 | * @param {*} key | ||
22 | * @param {*} data | ||
23 | * @author: renchao | ||
24 | */ | ||
13 | export const getNodeKey = function(key, data) { | 25 | export const getNodeKey = function(key, data) { |
14 | if (!key) return data[NODE_KEY]; | 26 | if (!key) return data[NODE_KEY]; |
15 | return data[key]; | 27 | return data[key]; |
16 | }; | 28 | }; |
17 | 29 | ||
30 | /** | ||
31 | * @description: findNearestComponent | ||
32 | * @param {*} element | ||
33 | * @param {*} componentName | ||
34 | * @author: renchao | ||
35 | */ | ||
18 | export const findNearestComponent = (element, componentName) => { | 36 | export const findNearestComponent = (element, componentName) => { |
19 | let target = element; | 37 | let target = element; |
20 | while (target && target.tagName !== 'BODY') { | 38 | while (target && target.tagName !== 'BODY') { | ... | ... |
... | @@ -116,10 +116,21 @@ export default { | ... | @@ -116,10 +116,21 @@ export default { |
116 | }, | 116 | }, |
117 | 117 | ||
118 | methods: { | 118 | methods: { |
119 | /** | ||
120 | * @description: getNodeKey | ||
121 | * @param {*} node | ||
122 | * @author: renchao | ||
123 | */ | ||
119 | getNodeKey (node) { | 124 | getNodeKey (node) { |
120 | return getNodeKey(this.tree.nodeKey, node.data); | 125 | return getNodeKey(this.tree.nodeKey, node.data); |
121 | }, | 126 | }, |
122 | 127 | ||
128 | /** | ||
129 | * @description: handleSelectChange | ||
130 | * @param {*} checked | ||
131 | * @param {*} indeterminate | ||
132 | * @author: renchao | ||
133 | */ | ||
123 | handleSelectChange (checked, indeterminate) { | 134 | handleSelectChange (checked, indeterminate) { |
124 | if (this.oldChecked !== checked && this.oldIndeterminate !== indeterminate) { | 135 | if (this.oldChecked !== checked && this.oldIndeterminate !== indeterminate) { |
125 | this.tree.$emit('check-change', this.node.data, checked, indeterminate); | 136 | this.tree.$emit('check-change', this.node.data, checked, indeterminate); |
... | @@ -128,6 +139,10 @@ export default { | ... | @@ -128,6 +139,10 @@ export default { |
128 | this.indeterminate = indeterminate; | 139 | this.indeterminate = indeterminate; |
129 | }, | 140 | }, |
130 | 141 | ||
142 | /** | ||
143 | * @description: handleClick | ||
144 | * @author: renchao | ||
145 | */ | ||
131 | handleClick () { | 146 | handleClick () { |
132 | const store = this.tree.store; | 147 | const store = this.tree.store; |
133 | store.setCurrentNode(this.node); | 148 | store.setCurrentNode(this.node); |
... | @@ -144,6 +159,11 @@ export default { | ... | @@ -144,6 +159,11 @@ export default { |
144 | this.tree.$emit('node-click', this.node.data, this.node, this); | 159 | this.tree.$emit('node-click', this.node.data, this.node, this); |
145 | }, | 160 | }, |
146 | 161 | ||
162 | /** | ||
163 | * @description: handleContextMenu | ||
164 | * @param {*} event | ||
165 | * @author: renchao | ||
166 | */ | ||
147 | handleContextMenu (event) { | 167 | handleContextMenu (event) { |
148 | if (this.tree._events['node-contextmenu'] && this.tree._events['node-contextmenu'].length > 0) { | 168 | if (this.tree._events['node-contextmenu'] && this.tree._events['node-contextmenu'].length > 0) { |
149 | event.stopPropagation(); | 169 | event.stopPropagation(); |
... | @@ -152,6 +172,10 @@ export default { | ... | @@ -152,6 +172,10 @@ export default { |
152 | this.tree.$emit('node-contextmenu', event, this.node.data, this.node, this); | 172 | this.tree.$emit('node-contextmenu', event, this.node.data, this.node, this); |
153 | }, | 173 | }, |
154 | 174 | ||
175 | /** | ||
176 | * @description: handleExpandIconClick | ||
177 | * @author: renchao | ||
178 | */ | ||
155 | handleExpandIconClick () { | 179 | handleExpandIconClick () { |
156 | if (this.node.isLeaf) return; | 180 | if (this.node.isLeaf) return; |
157 | if (this.expanded) { | 181 | if (this.expanded) { |
... | @@ -163,6 +187,12 @@ export default { | ... | @@ -163,6 +187,12 @@ export default { |
163 | } | 187 | } |
164 | }, | 188 | }, |
165 | 189 | ||
190 | /** | ||
191 | * @description: handleCheckChange | ||
192 | * @param {*} value | ||
193 | * @param {*} ev | ||
194 | * @author: renchao | ||
195 | */ | ||
166 | handleCheckChange (value, ev) { | 196 | handleCheckChange (value, ev) { |
167 | this.node.setChecked(ev.target.checked, !this.tree.checkStrictly); | 197 | this.node.setChecked(ev.target.checked, !this.tree.checkStrictly); |
168 | this.$nextTick(() => { | 198 | this.$nextTick(() => { |
... | @@ -176,26 +206,53 @@ export default { | ... | @@ -176,26 +206,53 @@ export default { |
176 | }); | 206 | }); |
177 | }, | 207 | }, |
178 | 208 | ||
209 | /** | ||
210 | * @description: handleChildNodeExpand | ||
211 | * @param {*} nodeData | ||
212 | * @param {*} node | ||
213 | * @param {*} instance | ||
214 | * @author: renchao | ||
215 | */ | ||
179 | handleChildNodeExpand (nodeData, node, instance) { | 216 | handleChildNodeExpand (nodeData, node, instance) { |
180 | this.broadcast('ElTreeNode', 'tree-node-expand', node); | 217 | this.broadcast('ElTreeNode', 'tree-node-expand', node); |
181 | this.tree.$emit('node-expand', nodeData, node, instance); | 218 | this.tree.$emit('node-expand', nodeData, node, instance); |
182 | }, | 219 | }, |
183 | 220 | ||
221 | /** | ||
222 | * @description: handleDragStart | ||
223 | * @param {*} event | ||
224 | * @author: renchao | ||
225 | */ | ||
184 | handleDragStart (event) { | 226 | handleDragStart (event) { |
185 | if (!this.tree.draggable) return; | 227 | if (!this.tree.draggable) return; |
186 | this.tree.$emit('tree-node-drag-start', event, this); | 228 | this.tree.$emit('tree-node-drag-start', event, this); |
187 | }, | 229 | }, |
188 | 230 | ||
231 | /** | ||
232 | * @description: handleDragOver | ||
233 | * @param {*} event | ||
234 | * @author: renchao | ||
235 | */ | ||
189 | handleDragOver (event) { | 236 | handleDragOver (event) { |
190 | if (!this.tree.draggable) return; | 237 | if (!this.tree.draggable) return; |
191 | this.tree.$emit('tree-node-drag-over', event, this); | 238 | this.tree.$emit('tree-node-drag-over', event, this); |
192 | event.preventDefault(); | 239 | event.preventDefault(); |
193 | }, | 240 | }, |
194 | 241 | ||
242 | /** | ||
243 | * @description: handleDrop | ||
244 | * @param {*} event | ||
245 | * @author: renchao | ||
246 | */ | ||
195 | handleDrop (event) { | 247 | handleDrop (event) { |
196 | event.preventDefault(); | 248 | event.preventDefault(); |
197 | }, | 249 | }, |
198 | 250 | ||
251 | /** | ||
252 | * @description: handleDragEnd | ||
253 | * @param {*} event | ||
254 | * @author: renchao | ||
255 | */ | ||
199 | handleDragEnd (event) { | 256 | handleDragEnd (event) { |
200 | if (!this.tree.draggable) return; | 257 | if (!this.tree.draggable) return; |
201 | this.tree.$emit('tree-node-drag-end', event, this); | 258 | this.tree.$emit('tree-node-drag-end', event, this); | ... | ... |
... | @@ -177,15 +177,30 @@ | ... | @@ -177,15 +177,30 @@ |
177 | }, | 177 | }, |
178 | 178 | ||
179 | methods: { | 179 | methods: { |
180 | /** | ||
181 | * @description: filter | ||
182 | * @param {*} value | ||
183 | * @author: renchao | ||
184 | */ | ||
180 | filter(value) { | 185 | filter(value) { |
181 | if (!this.filterNodeMethod) throw new Error('[Tree] filterNodeMethod is required when filter'); | 186 | if (!this.filterNodeMethod) throw new Error('[Tree] filterNodeMethod is required when filter'); |
182 | this.store.filter(value); | 187 | this.store.filter(value); |
183 | }, | 188 | }, |
184 | 189 | ||
190 | /** | ||
191 | * @description: getNodeKey | ||
192 | * @param {*} node | ||
193 | * @author: renchao | ||
194 | */ | ||
185 | getNodeKey(node) { | 195 | getNodeKey(node) { |
186 | return getNodeKey(this.nodeKey, node.data); | 196 | return getNodeKey(this.nodeKey, node.data); |
187 | }, | 197 | }, |
188 | 198 | ||
199 | /** | ||
200 | * @description: getNodePath | ||
201 | * @param {*} data | ||
202 | * @author: renchao | ||
203 | */ | ||
189 | getNodePath(data) { | 204 | getNodePath(data) { |
190 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in getNodePath'); | 205 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in getNodePath'); |
191 | const node = this.store.getNode(data); | 206 | const node = this.store.getNode(data); |
... | @@ -199,87 +214,188 @@ | ... | @@ -199,87 +214,188 @@ |
199 | return path.reverse(); | 214 | return path.reverse(); |
200 | }, | 215 | }, |
201 | 216 | ||
217 | /** | ||
218 | * @description: getCheckedNodes | ||
219 | * @param {*} leafOnly | ||
220 | * @param {*} includeHalfChecked | ||
221 | * @author: renchao | ||
222 | */ | ||
202 | getCheckedNodes(leafOnly, includeHalfChecked) { | 223 | getCheckedNodes(leafOnly, includeHalfChecked) { |
203 | return this.store.getCheckedNodes(leafOnly, includeHalfChecked); | 224 | return this.store.getCheckedNodes(leafOnly, includeHalfChecked); |
204 | }, | 225 | }, |
205 | 226 | ||
227 | /** | ||
228 | * @description: getCheckedKeys | ||
229 | * @param {*} leafOnly | ||
230 | * @author: renchao | ||
231 | */ | ||
206 | getCheckedKeys(leafOnly) { | 232 | getCheckedKeys(leafOnly) { |
207 | return this.store.getCheckedKeys(leafOnly); | 233 | return this.store.getCheckedKeys(leafOnly); |
208 | }, | 234 | }, |
209 | 235 | ||
236 | /** | ||
237 | * @description: getCurrentNode | ||
238 | * @author: renchao | ||
239 | */ | ||
210 | getCurrentNode() { | 240 | getCurrentNode() { |
211 | const currentNode = this.store.getCurrentNode(); | 241 | const currentNode = this.store.getCurrentNode(); |
212 | return currentNode ? currentNode.data : null; | 242 | return currentNode ? currentNode.data : null; |
213 | }, | 243 | }, |
214 | 244 | ||
245 | /** | ||
246 | * @description: getCurrentKey | ||
247 | * @author: renchao | ||
248 | */ | ||
215 | getCurrentKey() { | 249 | getCurrentKey() { |
216 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in getCurrentKey'); | 250 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in getCurrentKey'); |
217 | const currentNode = this.getCurrentNode(); | 251 | const currentNode = this.getCurrentNode(); |
218 | return currentNode ? currentNode[this.nodeKey] : null; | 252 | return currentNode ? currentNode[this.nodeKey] : null; |
219 | }, | 253 | }, |
220 | 254 | ||
255 | /** | ||
256 | * @description: setCheckedNodes | ||
257 | * @param {*} nodes | ||
258 | * @param {*} leafOnly | ||
259 | * @author: renchao | ||
260 | */ | ||
221 | setCheckedNodes(nodes, leafOnly) { | 261 | setCheckedNodes(nodes, leafOnly) { |
222 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCheckedNodes'); | 262 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCheckedNodes'); |
223 | this.store.setCheckedNodes(nodes, leafOnly); | 263 | this.store.setCheckedNodes(nodes, leafOnly); |
224 | }, | 264 | }, |
225 | 265 | ||
266 | /** | ||
267 | * @description: setCheckedKeys | ||
268 | * @param {*} keys | ||
269 | * @param {*} leafOnly | ||
270 | * @author: renchao | ||
271 | */ | ||
226 | setCheckedKeys(keys, leafOnly) { | 272 | setCheckedKeys(keys, leafOnly) { |
227 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCheckedKeys'); | 273 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCheckedKeys'); |
228 | this.store.setCheckedKeys(keys, leafOnly); | 274 | this.store.setCheckedKeys(keys, leafOnly); |
229 | }, | 275 | }, |
230 | 276 | ||
277 | /** | ||
278 | * @description: setChecked | ||
279 | * @param {*} data | ||
280 | * @param {*} checked | ||
281 | * @param {*} deep | ||
282 | * @author: renchao | ||
283 | */ | ||
231 | setChecked(data, checked, deep) { | 284 | setChecked(data, checked, deep) { |
232 | this.store.setChecked(data, checked, deep); | 285 | this.store.setChecked(data, checked, deep); |
233 | }, | 286 | }, |
234 | 287 | ||
288 | /** | ||
289 | * @description: getHalfCheckedNodes | ||
290 | * @author: renchao | ||
291 | */ | ||
235 | getHalfCheckedNodes() { | 292 | getHalfCheckedNodes() { |
236 | return this.store.getHalfCheckedNodes(); | 293 | return this.store.getHalfCheckedNodes(); |
237 | }, | 294 | }, |
238 | 295 | ||
296 | /** | ||
297 | * @description: getHalfCheckedKeys | ||
298 | * @author: renchao | ||
299 | */ | ||
239 | getHalfCheckedKeys() { | 300 | getHalfCheckedKeys() { |
240 | return this.store.getHalfCheckedKeys(); | 301 | return this.store.getHalfCheckedKeys(); |
241 | }, | 302 | }, |
242 | 303 | ||
304 | /** | ||
305 | * @description: setCurrentNode | ||
306 | * @param {*} node | ||
307 | * @author: renchao | ||
308 | */ | ||
243 | setCurrentNode(node) { | 309 | setCurrentNode(node) { |
244 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCurrentNode'); | 310 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCurrentNode'); |
245 | this.store.setUserCurrentNode(node); | 311 | this.store.setUserCurrentNode(node); |
246 | }, | 312 | }, |
247 | 313 | ||
314 | /** | ||
315 | * @description: setCurrentKey | ||
316 | * @param {*} key | ||
317 | * @author: renchao | ||
318 | */ | ||
248 | setCurrentKey(key) { | 319 | setCurrentKey(key) { |
249 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCurrentKey'); | 320 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCurrentKey'); |
250 | this.store.setCurrentNodeKey(key); | 321 | this.store.setCurrentNodeKey(key); |
251 | }, | 322 | }, |
252 | 323 | ||
324 | /** | ||
325 | * @description: getNode | ||
326 | * @param {*} data | ||
327 | * @author: renchao | ||
328 | */ | ||
253 | getNode(data) { | 329 | getNode(data) { |
254 | return this.store.getNode(data); | 330 | return this.store.getNode(data); |
255 | }, | 331 | }, |
256 | 332 | ||
333 | /** | ||
334 | * @description: remove | ||
335 | * @param {*} data | ||
336 | * @author: renchao | ||
337 | */ | ||
257 | remove(data) { | 338 | remove(data) { |
258 | this.store.remove(data); | 339 | this.store.remove(data); |
259 | }, | 340 | }, |
260 | 341 | ||
342 | /** | ||
343 | * @description: append | ||
344 | * @param {*} data | ||
345 | * @param {*} parentNode | ||
346 | * @author: renchao | ||
347 | */ | ||
261 | append(data, parentNode) { | 348 | append(data, parentNode) { |
262 | this.store.append(data, parentNode); | 349 | this.store.append(data, parentNode); |
263 | }, | 350 | }, |
264 | 351 | ||
352 | /** | ||
353 | * @description: insertBefore | ||
354 | * @param {*} data | ||
355 | * @param {*} refNode | ||
356 | * @author: renchao | ||
357 | */ | ||
265 | insertBefore(data, refNode) { | 358 | insertBefore(data, refNode) { |
266 | this.store.insertBefore(data, refNode); | 359 | this.store.insertBefore(data, refNode); |
267 | }, | 360 | }, |
268 | 361 | ||
362 | /** | ||
363 | * @description: insertAfter | ||
364 | * @param {*} data | ||
365 | * @param {*} refNode | ||
366 | * @author: renchao | ||
367 | */ | ||
269 | insertAfter(data, refNode) { | 368 | insertAfter(data, refNode) { |
270 | this.store.insertAfter(data, refNode); | 369 | this.store.insertAfter(data, refNode); |
271 | }, | 370 | }, |
272 | 371 | ||
372 | /** | ||
373 | * @description: handleNodeExpand | ||
374 | * @param {*} nodeData | ||
375 | * @param {*} node | ||
376 | * @param {*} instance | ||
377 | * @author: renchao | ||
378 | */ | ||
273 | handleNodeExpand(nodeData, node, instance) { | 379 | handleNodeExpand(nodeData, node, instance) { |
274 | this.broadcast('ElTreeNode', 'tree-node-expand', node); | 380 | this.broadcast('ElTreeNode', 'tree-node-expand', node); |
275 | this.$emit('node-expand', nodeData, node, instance); | 381 | this.$emit('node-expand', nodeData, node, instance); |
276 | }, | 382 | }, |
277 | 383 | ||
384 | /** | ||
385 | * @description: updateKeyChildren | ||
386 | * @param {*} key | ||
387 | * @param {*} data | ||
388 | * @author: renchao | ||
389 | */ | ||
278 | updateKeyChildren(key, data) { | 390 | updateKeyChildren(key, data) { |
279 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in updateKeyChild'); | 391 | if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in updateKeyChild'); |
280 | this.store.updateChildren(key, data); | 392 | this.store.updateChildren(key, data); |
281 | }, | 393 | }, |
282 | 394 | ||
395 | /** | ||
396 | * @description: initTabIndex | ||
397 | * @author: renchao | ||
398 | */ | ||
283 | initTabIndex() { | 399 | initTabIndex() { |
284 | this.treeItems = this.$el.querySelectorAll('.is-focusable[role=treeitem]'); | 400 | this.treeItems = this.$el.querySelectorAll('.is-focusable[role=treeitem]'); |
285 | this.checkboxItems = this.$el.querySelectorAll('input[type=checkbox]'); | 401 | this.checkboxItems = this.$el.querySelectorAll('input[type=checkbox]'); |
... | @@ -291,6 +407,11 @@ | ... | @@ -291,6 +407,11 @@ |
291 | this.treeItems[0] && this.treeItems[0].setAttribute('tabindex', 0); | 407 | this.treeItems[0] && this.treeItems[0].setAttribute('tabindex', 0); |
292 | }, | 408 | }, |
293 | 409 | ||
410 | /** | ||
411 | * @description: handleKeydown | ||
412 | * @param {*} ev | ||
413 | * @author: renchao | ||
414 | */ | ||
294 | handleKeydown(ev) { | 415 | handleKeydown(ev) { |
295 | const currentItem = ev.target; | 416 | const currentItem = ev.target; |
296 | if (currentItem.className.indexOf('el-tree-node') === -1) return; | 417 | if (currentItem.className.indexOf('el-tree-node') === -1) return; |
... | @@ -319,6 +440,10 @@ | ... | @@ -319,6 +440,10 @@ |
319 | } | 440 | } |
320 | }, | 441 | }, |
321 | 442 | ||
443 | /** | ||
444 | * @description: created | ||
445 | * @author: renchao | ||
446 | */ | ||
322 | created() { | 447 | created() { |
323 | this.isTree = true; | 448 | this.isTree = true; |
324 | 449 | ... | ... |
src/components/formMenu/qlr.vue
deleted
100644 → 0
1 | <template> | ||
2 | <div class="temp"> | ||
3 | <table class="tempTable" cellspacing="0" cellpadding="0" border="1"> | ||
4 | <tr> | ||
5 | <template v-if="lq == ''"> | ||
6 | <td colspan="2"><span class="table-title">权利人信息</span></td> | ||
7 | <td colspan="2">共有方式</td> | ||
8 | </template> | ||
9 | <template v-else> | ||
10 | <td colspan="2">共有方式</td> | ||
11 | </template> | ||
12 | <td :colspan="lq == '' ? 8 : 10"> | ||
13 | <el-row> | ||
14 | <el-col :span="14" class="fl" style="line-height:32px"> | ||
15 | <el-radio-group v-model="gyfs" @change="updateGyfs"> | ||
16 | <el-radio :label="item.bsm" :disabled="+qszt !== 0 || item.disabled" :key="item.bsm" | ||
17 | v-for="item in gyfsList">{{ item.mc }}</el-radio> | ||
18 | </el-radio-group> | ||
19 | </el-col> | ||
20 | <el-col :span="10" class="fr"> | ||
21 | <!-- <div v-show="qszt=='0'" class="fr" style="margin-right:20px"> | ||
22 | <el-button class="qlrBtn" size="mini" @click="addRow"> | ||
23 | <i class="iconfont iconxinzeng"></i> 新增 | ||
24 | </el-button> | ||
25 | <el-button class="qlrBtn" size="mini" @click="changeRow"> | ||
26 | <i class="iconfont iconbianji"></i> 编辑 | ||
27 | </el-button> | ||
28 | <el-button class="qlrBtn" size="mini" @click="delRow"> | ||
29 | <i class="iconfont iconshanchu"></i> 删除 | ||
30 | </el-button> | ||
31 | </div>--> | ||
32 | <div v-show="+qszt === 0" class="fr" style="margin-right:20px"> | ||
33 | <el-button class="qlrBtn" size="mini" | ||
34 | :disabled="+qszt !== 0 || (tableData.length > 0 && gyfs === 'PSHGSBDCQJDC000000000000DC340010')" | ||
35 | @click="addRow"> | ||
36 | <i class="iconfont iconxinzeng" :disabled="+qszt !== 0"></i> 新增 | ||
37 | </el-button> | ||
38 | <el-button class="qlrBtn" size="mini" :disabled="+qszt !== 0" @click="changeRow"> | ||
39 | <i class="iconfont iconbianji"></i> 编辑 | ||
40 | </el-button> | ||
41 | <el-button class="qlrBtn" size="mini" :disabled="+qszt !== 0" @click="delRow"> | ||
42 | <i class="iconfont iconshanchu"></i> 删除 | ||
43 | </el-button> | ||
44 | </div> | ||
45 | </el-col> | ||
46 | </el-row> | ||
47 | </td> | ||
48 | </tr> | ||
49 | </table> | ||
50 | |||
51 | <el-table class="qlrTable" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" | ||
52 | @row-dblclick="rowDbclick" border> | ||
53 | <el-table-column type="selection" width="40" align="center"> | ||
54 | </el-table-column> | ||
55 | <el-table-column prop="qlrmc" label="权利人名称" align="center"> | ||
56 | </el-table-column> | ||
57 | <el-table-column prop="qlrlxbsm_dictText" label="权利人类型" align="center"> | ||
58 | </el-table-column> | ||
59 | <el-table-column prop="zjzlbsm_dictText" label="证件种类" align="center"> | ||
60 | </el-table-column> | ||
61 | <el-table-column prop="zjh" label="证件号" align="center"> | ||
62 | </el-table-column> | ||
63 | <el-table-column prop="dz" label="通讯地址" align="center"> | ||
64 | </el-table-column> | ||
65 | <el-table-column prop="dh" label="联系电话" align="center"> | ||
66 | </el-table-column> | ||
67 | </el-table> | ||
68 | <el-dialog :close-on-click-modal="false" title="权利人信息" :visible.sync="dialogVisible" custom-class="insetDialog" | ||
69 | append-to-body width="50%"> | ||
70 | <el-form :model="formData" class="qlrForm"> | ||
71 | <table class="zdjbxxTable" cellspacing="0" cellpadding="0" border="1"> | ||
72 | <tr> | ||
73 | <td colspan="4" class="tdright"><i class="requisite">*</i>权利人名称</td> | ||
74 | <td colspan="6"> | ||
75 | <el-input v-model="formData.qlrmc" ref="qlrmc" @blur="inputBlur($event)"></el-input> | ||
76 | </td> | ||
77 | <td colspan="4" class="tdright"><i class="requisite">*</i>权利人类型</td> | ||
78 | <td colspan="6"> | ||
79 | <el-select class="formSelect" v-model="formData.qlrlxbsm" ref="qlrlxbsm"> | ||
80 | <el-option v-for="item in $store.state.qlrlxList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
81 | </el-option> | ||
82 | </el-select> | ||
83 | </td> | ||
84 | </tr> | ||
85 | <tr> | ||
86 | <td colspan="4" class="tdright"><i class="requisite">*</i>证件类型</td> | ||
87 | <td colspan="6"> | ||
88 | <el-select class="formSelect" v-model="formData.zjzlbsm" ref="zjzlbsm"> | ||
89 | <el-option v-for="item in $store.state.zjzlList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
90 | </el-option> | ||
91 | </el-select> | ||
92 | </td> | ||
93 | <td colspan="4" class="tdright"><i class="requisite">*</i>证件号</td> | ||
94 | <td colspan="6"> | ||
95 | <el-input maxlength="18" v-model="formData.zjh" ref="zjh" @blur="inputBlur($event)"></el-input> | ||
96 | </td> | ||
97 | </tr> | ||
98 | <tr> | ||
99 | <td colspan="4" class="tdright"><i class="requisite">*</i>电话</td> | ||
100 | <td colspan="6"> | ||
101 | <!-- @blur="inputBlur($event)"--> | ||
102 | <el-input v-model="formData.dh" ref="dh" @blur="inputBlur($event)"></el-input> | ||
103 | </td> | ||
104 | <td colspan="4" class="tdright"><i class="requisite">*</i>地址</td> | ||
105 | <td colspan="6"> | ||
106 | <el-input v-model="formData.dz" ref="dz" @blur="inputBlur($event)"></el-input> | ||
107 | </td> | ||
108 | </tr> | ||
109 | <tr> | ||
110 | <td colspan="4" class="tdright">国家</td> | ||
111 | <td colspan="6"> | ||
112 | <el-select class="formSelect" v-model="formData.gjbsm"> | ||
113 | <el-option v-for="item in $store.state.gjList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
114 | </el-option> | ||
115 | </el-select> | ||
116 | </td> | ||
117 | <td colspan="4" class="tdright">户籍所在省市</td> | ||
118 | <td colspan="6"> | ||
119 | <el-select class="formSelect" v-model="formData.hjszssbsm"> | ||
120 | <el-option v-for="item in $store.state.ssList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
121 | </el-option> | ||
122 | </el-select> | ||
123 | </td> | ||
124 | </tr> | ||
125 | <tr> | ||
126 | <td colspan="4" class="tdright">性别</td> | ||
127 | <td colspan="6"> | ||
128 | <el-select class="formSelect" v-model="formData.xbbsm"> | ||
129 | <el-option v-for="item in $store.state.xbList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
130 | </el-option> | ||
131 | </el-select> | ||
132 | </td> | ||
133 | <td colspan="4" class="tdright">邮编</td> | ||
134 | <td colspan="6"> | ||
135 | <el-input v-model="formData.yb" /> | ||
136 | </td> | ||
137 | </tr> | ||
138 | <tr> | ||
139 | <td colspan="4" class="tdright">所属行业</td> | ||
140 | <td colspan="6"> | ||
141 | <el-select class="formSelect" v-model="formData.sshy"> | ||
142 | <el-option v-for="item in $store.state.sshyList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
143 | </el-option> | ||
144 | </el-select> | ||
145 | </td> | ||
146 | <td colspan="4" class="tdright">电子邮件</td> | ||
147 | <td colspan="6"> | ||
148 | <el-input v-model="formData.dzyj" /> | ||
149 | </td> | ||
150 | </tr> | ||
151 | <tr> | ||
152 | <th colspan="20">法人信息</th> | ||
153 | </tr> | ||
154 | <tr> | ||
155 | <td colspan="4" class="tdright">法定代表人或负责人姓名</td> | ||
156 | <td colspan="6"> | ||
157 | <el-input v-model="formData.fr.dlrfrmc" /> | ||
158 | </td> | ||
159 | <td colspan="4" class="tdright">证件类型</td> | ||
160 | <td colspan="6"> | ||
161 | <el-select class="formSelect" v-model="formData.fr.zjzlbsm"> | ||
162 | <el-option v-for="item in $store.state.zjzlList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
163 | </el-option> | ||
164 | </el-select> | ||
165 | </td> | ||
166 | </tr> | ||
167 | <tr> | ||
168 | <td colspan="4" class="tdright">证件号码</td> | ||
169 | <td colspan="6"> | ||
170 | <el-input v-model="formData.fr.zjh" /> | ||
171 | </td> | ||
172 | <td colspan="4" class="tdright">电话</td> | ||
173 | <td colspan="6"> | ||
174 | <el-input v-model="formData.fr.dh" /> | ||
175 | </td> | ||
176 | </tr> | ||
177 | <tr> | ||
178 | <th colspan="20">代理人信息</th> | ||
179 | </tr> | ||
180 | <template v-for="(item, index) in formData.dlrList"> | ||
181 | <tr :key="item.index"> | ||
182 | <td :rowspan="(formData.dlrList.length - 1) * 2 + 2" v-if="index == 0" class="btnCol"> | ||
183 | <span :style="{ 'padding-top': (formData.dlrList.length - 1) * 36 + 20 + 'px' }"> | ||
184 | <i v-show="index == 0" class="iconfont iconicon-test2" @click="handleClick(item, index, 'add')"></i> | ||
185 | </span> | ||
186 | <!-- <div class="line" v-show=" index != formData.dlrList.length-1"></div> --> | ||
187 | </td> | ||
188 | <td rowspan="2" class="minusBtnCol"> | ||
189 | <span> | ||
190 | <i class="iconfont icon-" @click="handleClick(item, index, 'minus')"></i> | ||
191 | </span> | ||
192 | </td> | ||
193 | <td class="tdright" colspan="2">代理人姓名</td> | ||
194 | <td colspan="6"> | ||
195 | <el-input v-model="item.dlrfrmc" /> | ||
196 | </td> | ||
197 | <td colspan="4" class="tdright">证件类型</td> | ||
198 | <td colspan="6"> | ||
199 | <el-select class="formSelect" v-model="item.zjzlbsm"> | ||
200 | <el-option v-for="item in $store.state.zjzlList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
201 | </el-option> | ||
202 | </el-select> | ||
203 | </td> | ||
204 | </tr> | ||
205 | <!-- <tr :key="item.dh">--> | ||
206 | <tr :key="'dh' + index"> | ||
207 | <td class="tdright" colspan="2">证件号码</td> | ||
208 | <td colspan="6"> | ||
209 | <el-input v-model="item.zjh" /> | ||
210 | </td> | ||
211 | <td colspan="4" class="tdright">电话</td> | ||
212 | <td colspan="6"> | ||
213 | <el-input v-model="item.dh" /> | ||
214 | </td> | ||
215 | </tr> | ||
216 | </template> | ||
217 | |||
218 | <tr> | ||
219 | <th colspan="20">权利信息</th> | ||
220 | </tr> | ||
221 | <tr> | ||
222 | <td colspan="4" class="tdright">共有方式</td> | ||
223 | <td colspan="6"> | ||
224 | <el-select class="formSelect" v-model="formData.gyfsbsm" disabled> | ||
225 | <el-option v-for="item in $store.state.gyfsList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
226 | </el-option> | ||
227 | </el-select> | ||
228 | </td> | ||
229 | <td colspan="4" class="tdright">权利比例(%)</td> | ||
230 | <td colspan="6"> | ||
231 | <el-input v-model="formData.qlbl"></el-input> | ||
232 | </td> | ||
233 | </tr> | ||
234 | <tr> | ||
235 | <td colspan="4" class="tdright">房产证号</td> | ||
236 | <td colspan="6"> | ||
237 | <el-input v-model="formData.fczh"></el-input> | ||
238 | </td> | ||
239 | <td colspan="4" class="tdright">土地证号</td> | ||
240 | <td colspan="6"> | ||
241 | <el-input v-model="formData.tdzh"></el-input> | ||
242 | </td> | ||
243 | </tr> | ||
244 | <tr> | ||
245 | <td colspan="4" class="tdright">共有情况</td> | ||
246 | <td colspan="12"> | ||
247 | <el-input v-model="formData.gyqk"></el-input> | ||
248 | </td> | ||
249 | </tr> | ||
250 | </table> | ||
251 | </el-form> | ||
252 | <div class="dialog-footer"> | ||
253 | <el-button type="primary" @click="addNewQlrInfo">确 定</el-button> | ||
254 | <el-button @click="dialogVisible = false">取 消</el-button> | ||
255 | </div> | ||
256 | </el-dialog> | ||
257 | </div> | ||
258 | </template> | ||
259 | |||
260 | <script> | ||
261 | // import { getDdicByMC } from "@api/common"; | ||
262 | // import { insertQlrDlrFr, getQlrInfoByGlbsm, updateQlrDlrFr, deleteQlrDlrFrByQlrbsm, updateGyGyQlrQk, getQlrByGlbsmAndType } from "@api/qlr"; | ||
263 | |||
264 | export default { | ||
265 | props: { | ||
266 | qszt: { | ||
267 | type: String, | ||
268 | default: "0", | ||
269 | }, | ||
270 | title: { | ||
271 | type: String, | ||
272 | default: "", | ||
273 | }, | ||
274 | topHeight: { | ||
275 | type: String, | ||
276 | default: "15vh", | ||
277 | }, | ||
278 | bsm: { | ||
279 | type: String, | ||
280 | default: "", | ||
281 | }, | ||
282 | type: { | ||
283 | type: String, | ||
284 | default: "", | ||
285 | }, | ||
286 | lq: { | ||
287 | type: String, | ||
288 | default: "", | ||
289 | } | ||
290 | }, | ||
291 | data () { | ||
292 | return { | ||
293 | update: false, | ||
294 | gyfs: this.$store.state.gyfsList[0].bsm, | ||
295 | tableData: [], | ||
296 | gyfsList: [], | ||
297 | //表格选中项 | ||
298 | multipleSelection: [], | ||
299 | dialogVisible: false, | ||
300 | formData: { | ||
301 | addQjDlrFrRequest: [], | ||
302 | dlrList: [ | ||
303 | { | ||
304 | dh: "", | ||
305 | dlrfrmc: "", | ||
306 | qlrbsm: "", | ||
307 | zjh: "", | ||
308 | zjzlbsm: "", | ||
309 | }, | ||
310 | ], | ||
311 | fr: { | ||
312 | dh: "", | ||
313 | dlrfrmc: "", | ||
314 | qlrbsm: "", | ||
315 | zjh: "", | ||
316 | zjzlbsm: "", | ||
317 | }, | ||
318 | bz: "", | ||
319 | dh: "", | ||
320 | dz: "", | ||
321 | dzyj: "", | ||
322 | fczh: "", | ||
323 | fzjg: "", | ||
324 | gjbsm: "PSHGSBDCQJDC000000000000DC350010", //默认中国 | ||
325 | glbsm: "", | ||
326 | gyfsbsm: "", | ||
327 | gyqk: "", | ||
328 | gzdw: "", | ||
329 | hjszssbsm: "", | ||
330 | isdel: 0, | ||
331 | qlbl: "", | ||
332 | qlrlxbsm: "", | ||
333 | qlrmc: "", | ||
334 | sshy: "", | ||
335 | sxh: 0, | ||
336 | tdzh: "", | ||
337 | xbbsm: "", | ||
338 | yb: "", | ||
339 | zjh: "", | ||
340 | zjzlbsm: "", | ||
341 | lqqlrtype: "" | ||
342 | }, | ||
343 | glbsm: '', | ||
344 | rules: [], | ||
345 | }; | ||
346 | }, | ||
347 | methods: { | ||
348 | /** | ||
349 | * @description: inputBlur | ||
350 | * @author: renchao | ||
351 | */ | ||
352 | inputBlur (e) { | ||
353 | if (e.target.value != '') { | ||
354 | e.target.style.border = "" | ||
355 | } else { | ||
356 | e.target.style.border = "1px solid red"; | ||
357 | e.target.style.boxSizing = 'border-box'; | ||
358 | } | ||
359 | }, | ||
360 | /** | ||
361 | * @description: 新增行数据 | ||
362 | * @author: renchao | ||
363 | */ | ||
364 | addRow () { | ||
365 | |||
366 | console.log(this.gyfs, '共有方式') | ||
367 | |||
368 | this.update = false; | ||
369 | let flag = false; | ||
370 | for (let i = 0; i < this.$store.state.gyfsList.length; i++) { | ||
371 | let item = this.$store.state.gyfsList[i]; | ||
372 | if (item.mc === "单独所有" && item.bsm === this.gyfs) { | ||
373 | flag = true; | ||
374 | } | ||
375 | } | ||
376 | if (flag) { | ||
377 | if (this.tableData.length > 0) { | ||
378 | this.$message({ | ||
379 | message: "当前方式不可再新增权利人", | ||
380 | type: "warning", | ||
381 | }); | ||
382 | } else { | ||
383 | this.formData.gyfsbsm = this.gyfs; | ||
384 | this.dialogVisible = true; | ||
385 | } | ||
386 | } else { | ||
387 | this.formData.gyfsbsm = this.gyfs; | ||
388 | this.dialogVisible = true; | ||
389 | } | ||
390 | }, | ||
391 | /** | ||
392 | * @description: 确认权利人信息按钮;可以进行新增;可以进行更新; | ||
393 | * @author: renchao | ||
394 | */ | ||
395 | addNewQlrInfo () { | ||
396 | |||
397 | this.rules = [ | ||
398 | { | ||
399 | data: this.formData.qlrmc, | ||
400 | name: '权利人名称', | ||
401 | dom: this.$refs.qlrmc, | ||
402 | rule: /^\s*$/g, //非空 | ||
403 | }, | ||
404 | { | ||
405 | data: this.formData.qlrlxbsm, | ||
406 | name: '权利人类型', | ||
407 | dom: this.$refs.qlrlxbsm, | ||
408 | rule: /^\s*$/g, //非空 | ||
409 | }, | ||
410 | { | ||
411 | data: this.formData.zjzlbsm, | ||
412 | name: '证件类型', | ||
413 | dom: this.$refs.zjzlbsm, | ||
414 | rule: /^\s*$/g, //非空 | ||
415 | }, | ||
416 | { | ||
417 | data: this.formData.zjh, | ||
418 | name: '证件号', | ||
419 | dom: this.$refs.zjh, | ||
420 | rule: /^\s*$/g, //非空 | ||
421 | }, | ||
422 | { | ||
423 | data: this.formData.dh, | ||
424 | name: '电话', | ||
425 | dom: this.$refs.dh, | ||
426 | rule: /^\s*$/g, //非空 | ||
427 | }, | ||
428 | { | ||
429 | data: this.formData.dz, | ||
430 | name: '地址', | ||
431 | dom: this.$refs.dz, | ||
432 | rule: /^\s*$/g, //非空 | ||
433 | }, | ||
434 | ] | ||
435 | let flag = true; | ||
436 | this.rules.forEach(item => { | ||
437 | if (item.rule.test(item.data) || item.data == null) { | ||
438 | if (item.dom.$el) { | ||
439 | item.dom.$el.style.border = '1px solid red'; | ||
440 | item.dom.$el.style.boxSizing = 'border-box'; | ||
441 | } else { | ||
442 | item.dom.style.border = '1px solid red'; | ||
443 | item.dom.style.boxSizing = 'border-box'; | ||
444 | } | ||
445 | flag = false; | ||
446 | return false | ||
447 | } | ||
448 | console.log(this.tableData, '权利人信息') | ||
449 | console.log(this.$store.state.gyfsList[0].bsm, '确定之后共有方式') | ||
450 | }) | ||
451 | this.$nextTick(() => { | ||
452 | if (flag) { | ||
453 | //todo 权利人页面调整 | ||
454 | this.formData.addQjDlrFrRequest = []; | ||
455 | this.formData.glbsm = this.bsm; | ||
456 | //将代理人,法人数据合在一起,名称为addQjDlrFrRequest; | ||
457 | //法人的type字段类型为0, | ||
458 | this.formData.fr.type = 0; | ||
459 | this.formData.addQjDlrFrRequest.push(this.formData.fr); | ||
460 | for (let k = 0; k < this.formData.dlrList.length; k++) { | ||
461 | //代理人的type字段类型为1, | ||
462 | this.formData.dlrList[k].type = 1; | ||
463 | this.formData.addQjDlrFrRequest.push(this.formData.dlrList[k]); | ||
464 | } | ||
465 | //林权权利人类型判断 | ||
466 | this.formData.lqqlrtype = this.lq; | ||
467 | //如果是从更新按钮点击确定的则进行更新操作,如果不是,则进行添加操作 | ||
468 | if (this.update) { | ||
469 | console.log(this.formData) | ||
470 | updateQlrDlrFr(this.formData).then((res) => { | ||
471 | if (res.code === 200) { | ||
472 | this.dialogVisible = false; | ||
473 | this.$message.success("修改完成!"); | ||
474 | this.getQlrInfo(this.bsm); | ||
475 | this.update = false; | ||
476 | } | ||
477 | }) | ||
478 | } else { | ||
479 | insertQlrDlrFr(this.formData).then((res) => { | ||
480 | if (res.code === 200) { | ||
481 | this.dialogVisible = false; | ||
482 | this.tableData.push(this.formData); | ||
483 | this.getQlrInfo(this.bsm); | ||
484 | Object.assign(this.$data, this.$options.data()) | ||
485 | |||
486 | } | ||
487 | }) | ||
488 | } | ||
489 | } | ||
490 | }) | ||
491 | |||
492 | |||
493 | }, | ||
494 | /** | ||
495 | * @description: 修改行数据 | ||
496 | * @author: renchao | ||
497 | */ | ||
498 | changeRow () { | ||
499 | if (this.multipleSelection.length === 1) { | ||
500 | this.dialogVisible = true; | ||
501 | this.update = true; | ||
502 | this.formData = this.multipleSelection[0]; | ||
503 | if (this.multipleSelection[0].frList.length > 0) { | ||
504 | this.formData.fr = this.multipleSelection[0].frList[0]; | ||
505 | } | ||
506 | } else { | ||
507 | this.$message({ | ||
508 | message: "请选择一条信息后继续操作", | ||
509 | type: "warning", | ||
510 | }); | ||
511 | } | ||
512 | }, | ||
513 | /** | ||
514 | * @description: updateGyfs | ||
515 | * @author: renchao | ||
516 | */ | ||
517 | updateGyfs (val) { | ||
518 | console.log(val, this.type) | ||
519 | updateGyGyQlrQk(this.bsm, this.type, val).then((res) => { | ||
520 | if (res.code === 200) { | ||
521 | console.log("修改完成!") | ||
522 | //todo 修改该建筑物的所有权利人的相关共有方式 | ||
523 | } | ||
524 | }) | ||
525 | }, | ||
526 | |||
527 | /** | ||
528 | * @description: 父组件改变子组件的共有方式 | ||
529 | * @author: renchao | ||
530 | */ | ||
531 | changeGyfs (val) { | ||
532 | this.gyfs = val; | ||
533 | }, | ||
534 | |||
535 | /** | ||
536 | * @description: 行双击事件 | ||
537 | * @author: renchao | ||
538 | */ | ||
539 | rowDbclick (row) { | ||
540 | if (+this.qszt == 0) { | ||
541 | this.dialogVisible = true; | ||
542 | this.update = true; | ||
543 | this.formData = row; | ||
544 | if (row.frList.length > 0) { | ||
545 | this.formData.fr = row.frList[0]; | ||
546 | } | ||
547 | } | ||
548 | }, | ||
549 | |||
550 | // inputBlur(e){ | ||
551 | // if(e.target.value!=''){ | ||
552 | // console.log(e.target.value) | ||
553 | // console.log(!(/^1(3|4|5|6|7|8|9)d{9}$/.test(e.target.value))) | ||
554 | // if(!(/^1(3|4|5|6|7|8|9)d{9}$/.test(e.target.value))){ | ||
555 | // e.target.style.border="1px solid red"; | ||
556 | // e.target.style.boxSizing = 'border-box'; | ||
557 | // }else { | ||
558 | // e.target.style.border="" | ||
559 | // } | ||
560 | // }else{ | ||
561 | // e.target.style.border="1px solid red"; | ||
562 | // e.target.style.boxSizing = 'border-box'; | ||
563 | // } | ||
564 | // }, | ||
565 | |||
566 | /** | ||
567 | * @description: 删除行数据 | ||
568 | * @author: renchao | ||
569 | */ | ||
570 | delRow () { | ||
571 | if (this.multipleSelection.length > 0) { | ||
572 | let qlrbsms = []; | ||
573 | for (let i = 0; i < this.multipleSelection.length; i++) { | ||
574 | qlrbsms.push(this.multipleSelection[i].qlrbsm) | ||
575 | } | ||
576 | console.log(qlrbsms) | ||
577 | deleteQlrDlrFrByQlrbsm(qlrbsms).then((res) => { | ||
578 | if (res.code === 200) { | ||
579 | this.$message.success("删除完成!") | ||
580 | this.getQlrInfo(this.bsm); | ||
581 | } | ||
582 | }) | ||
583 | } else { | ||
584 | this.$message({ | ||
585 | message: "请至少选择一条信息后继续操作", | ||
586 | type: "warning", | ||
587 | }); | ||
588 | } | ||
589 | }, | ||
590 | /** | ||
591 | * @description: 选中表格某一项 | ||
592 | * @author: renchao | ||
593 | */ | ||
594 | handleSelectionChange (val) { | ||
595 | this.multipleSelection = val; | ||
596 | }, | ||
597 | |||
598 | /** | ||
599 | * @description: 供父组件调用来获取共有方式 | ||
600 | * @author: renchao | ||
601 | */ | ||
602 | getQlgyfsData () { | ||
603 | return this.gyfs; | ||
604 | }, | ||
605 | /** | ||
606 | * @description: 供父组件调用来获取权利人表格数据 | ||
607 | * @author: renchao | ||
608 | */ | ||
609 | getQlrxxData () { | ||
610 | return this.tableData; | ||
611 | }, | ||
612 | /** | ||
613 | * @description: 增删代理人 | ||
614 | * @param {*} obj | ||
615 | * @param {*} ind | ||
616 | * @param {*} type | ||
617 | * @author: renchao | ||
618 | */ | ||
619 | handleClick (obj, ind, type) { | ||
620 | if (type === "add") { | ||
621 | this.formData.dlrList.push({ | ||
622 | id: Math.random(), | ||
623 | dh: "", | ||
624 | dlrfrmc: "", | ||
625 | qlrbsm: "", | ||
626 | zjh: "", | ||
627 | zjzlbsm: "", | ||
628 | }); | ||
629 | } else { | ||
630 | this.formData.dlrList.forEach((item, index) => { | ||
631 | if (index == ind && this.formData.dlrList.length > 1) { | ||
632 | this.formData.dlrList.splice(ind, 1); | ||
633 | } | ||
634 | }); | ||
635 | } | ||
636 | }, | ||
637 | /** | ||
638 | * @description: getQlrInfo | ||
639 | * @param {*} bsm | ||
640 | * @author: renchao | ||
641 | */ | ||
642 | getQlrInfo (bsm) { | ||
643 | if (this.lq == "") { | ||
644 | getQlrInfoByGlbsm(bsm).then((res) => { | ||
645 | if (res.code) { | ||
646 | if (res.result != null) { | ||
647 | this.tableData = res.result; | ||
648 | if (this.tableData.length === 0) { | ||
649 | this.gyfs = this.$store.state.gyfsList[0].bsm; | ||
650 | } else { | ||
651 | this.gyfs = res.result[0].gyfsbsm; | ||
652 | } | ||
653 | } | ||
654 | } | ||
655 | }) | ||
656 | } else { | ||
657 | let params = { | ||
658 | bsm: bsm, | ||
659 | type: this.lq | ||
660 | } | ||
661 | getQlrByGlbsmAndType(params).then((res) => { | ||
662 | if (res.code) { | ||
663 | if (res.result != null) { | ||
664 | this.tableData = res.result; | ||
665 | if (this.tableData.length === 0) { | ||
666 | this.gyfs = this.$store.state.gyfsList[0].bsm; | ||
667 | } else { | ||
668 | this.gyfs = res.result[0].gyfsbsm; | ||
669 | } | ||
670 | } | ||
671 | } | ||
672 | }) | ||
673 | } | ||
674 | } | ||
675 | }, | ||
676 | created () { | ||
677 | this.gyfsList = this.$store.state.gyfsList; | ||
678 | }, | ||
679 | mounted () { | ||
680 | this.getQlrInfo(this.bsm); | ||
681 | }, | ||
682 | watch: { | ||
683 | tableData: { | ||
684 | handler: function (v) { | ||
685 | this.gyfsList[0].disabled = v.length > 1; | ||
686 | }, | ||
687 | deep: true | ||
688 | }, | ||
689 | dialogVisible (n) { | ||
690 | if (n === false) { | ||
691 | this.formData = { | ||
692 | addQjDlrFrRequest: [], | ||
693 | dlrList: [ | ||
694 | { | ||
695 | dh: "", | ||
696 | dlrfrmc: "", | ||
697 | qlrbsm: "", | ||
698 | zjh: "", | ||
699 | zjzlbsm: "", | ||
700 | }, | ||
701 | ], | ||
702 | fr: { | ||
703 | dh: "", | ||
704 | dlrfrmc: "", | ||
705 | qlrbsm: "", | ||
706 | zjh: "", | ||
707 | zjzlbsm: "", | ||
708 | }, | ||
709 | bz: "", | ||
710 | dh: "", | ||
711 | dz: "", | ||
712 | dzyj: "", | ||
713 | fczh: "", | ||
714 | fzjg: "", | ||
715 | gjbsm: "PSHGSBDCQJDC000000000000DC350010", //默认中国 | ||
716 | glbsm: "", | ||
717 | gyfsbsm: "", | ||
718 | gyqk: "", | ||
719 | gzdw: "", | ||
720 | hjszssbsm: "", | ||
721 | isdel: 0, | ||
722 | qlbl: "", | ||
723 | qlrlxbsm: "", | ||
724 | qlrmc: "", | ||
725 | sshy: "", | ||
726 | sxh: 0, | ||
727 | tdzh: "", | ||
728 | xbbsm: "", | ||
729 | yb: "", | ||
730 | zjh: "", | ||
731 | zjzlbsm: "", | ||
732 | } | ||
733 | } | ||
734 | }, | ||
735 | |||
736 | "formData.qlrlxbsm": function (val) { | ||
737 | if (val != '') { | ||
738 | this.$refs.qlrlxbsm.$el.style.border = ''; | ||
739 | } | ||
740 | }, | ||
741 | } | ||
742 | }; | ||
743 | </script> | ||
744 | <style lang="scss"> | ||
745 | .temp { | ||
746 | width: 100%; | ||
747 | |||
748 | table { | ||
749 | border-bottom: 0; | ||
750 | background-color: #fff; | ||
751 | font-size: 14px; | ||
752 | width: 100%; | ||
753 | table-layout: fixed; | ||
754 | |||
755 | .qlrBtn { | ||
756 | border: 0; | ||
757 | font-size: 14px; | ||
758 | } | ||
759 | |||
760 | .qlrBtn:hover { | ||
761 | background-color: none !important; | ||
762 | } | ||
763 | |||
764 | .iconfont { | ||
765 | font-size: 14px !important; | ||
766 | } | ||
767 | |||
768 | .span { | ||
769 | color: #409eff; | ||
770 | margin-right: 10px; | ||
771 | cursor: pointer; | ||
772 | } | ||
773 | |||
774 | .noEdit { | ||
775 | color: #606266; | ||
776 | margin-right: 10px; | ||
777 | cursor: not-allowed; | ||
778 | } | ||
779 | |||
780 | .el-radio { | ||
781 | margin-right: 20px !important; | ||
782 | } | ||
783 | |||
784 | td { | ||
785 | text-align: center; | ||
786 | padding: 8px 0; | ||
787 | } | ||
788 | } | ||
789 | |||
790 | .table-title { | ||
791 | font-weight: 700; | ||
792 | font-size: 15px; | ||
793 | } | ||
794 | |||
795 | .el-table th { | ||
796 | background-color: #fff !important; | ||
797 | } | ||
798 | |||
799 | el-table td, | ||
800 | .el-table th.is-leaf, | ||
801 | .el-table--border, | ||
802 | .el-table--group { | ||
803 | border-color: black; | ||
804 | } | ||
805 | |||
806 | .el-table--border::after, | ||
807 | .el-table--group::after, | ||
808 | .el-table::before { | ||
809 | background-color: rgba(0, 0, 0, 0); | ||
810 | } | ||
811 | |||
812 | .el-table--border td, | ||
813 | .el-table--border th, | ||
814 | .el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed { | ||
815 | border-right: 1px solid#E6E6E6; | ||
816 | } | ||
817 | |||
818 | .el-table td, | ||
819 | .el-table th { | ||
820 | padding: 12px 0; | ||
821 | color: #333 !important; | ||
822 | font-weight: normal; | ||
823 | } | ||
824 | |||
825 | .el-table td, | ||
826 | .el-table th.is-leaf { | ||
827 | border-bottom: 1px solid#E6E6E6; | ||
828 | border-color: #E6E6E6 !important; | ||
829 | } | ||
830 | |||
831 | .qlrTable { | ||
832 | border-color: #E6E6E6 !important; | ||
833 | border-bottom: 0; | ||
834 | border-right: 0; | ||
835 | position: relative; | ||
836 | top: -1px; | ||
837 | |||
838 | .el-input__inner { | ||
839 | height: 20px; | ||
840 | margin: 0; | ||
841 | line-height: 20px; | ||
842 | outline: none; | ||
843 | border: none; | ||
844 | color: #606764; | ||
845 | overflow: visible; | ||
846 | cursor: text; | ||
847 | text-align: center; | ||
848 | } | ||
849 | } | ||
850 | } | ||
851 | |||
852 | .insetDialog { | ||
853 | .qlrForm { | ||
854 | height: 500px; | ||
855 | overflow-y: scroll; | ||
856 | } | ||
857 | |||
858 | .zdjbxxTable { | ||
859 | margin: 10px 0; | ||
860 | background-color: #fff; | ||
861 | font-size: 14px; | ||
862 | width: 100%; | ||
863 | border-bottom: 1px solid #000; | ||
864 | |||
865 | .btnCol, | ||
866 | .minusBtnCol { | ||
867 | position: relative; | ||
868 | padding-right: 0; | ||
869 | |||
870 | span { | ||
871 | display: inline-block; | ||
872 | width: 100%; | ||
873 | height: 100%; | ||
874 | position: relative; | ||
875 | box-sizing: border-box; | ||
876 | padding-right: 10px; | ||
877 | padding-top: 20px; | ||
878 | } | ||
879 | |||
880 | .line { | ||
881 | width: 100%; | ||
882 | height: 2px; | ||
883 | background: #fff; | ||
884 | } | ||
885 | |||
886 | i { | ||
887 | color: #66b1ff; | ||
888 | font-size: 30px; | ||
889 | cursor: pointer; | ||
890 | z-index: 1; | ||
891 | } | ||
892 | } | ||
893 | |||
894 | .minusBtnCol { | ||
895 | i { | ||
896 | color: #FA6400; | ||
897 | } | ||
898 | } | ||
899 | |||
900 | th { | ||
901 | height: 36px; | ||
902 | line-height: 36px; | ||
903 | } | ||
904 | |||
905 | td { | ||
906 | text-align: right; | ||
907 | height: 36px; | ||
908 | } | ||
909 | |||
910 | /deep/.el-input__inner { | ||
911 | margin: 0; | ||
912 | height: 36px; | ||
913 | outline: none; | ||
914 | border: none; | ||
915 | color: #606764; | ||
916 | overflow: visible; | ||
917 | text-align: left; | ||
918 | cursor: text; | ||
919 | } | ||
920 | |||
921 | .percent68 { | ||
922 | width: 68% !important; | ||
923 | float: left; | ||
924 | position: relative; | ||
925 | top: 7px; | ||
926 | } | ||
927 | |||
928 | .percent30 { | ||
929 | width: 30% !important; | ||
930 | float: left; | ||
931 | } | ||
932 | |||
933 | .el-input__icon { | ||
934 | line-height: 37px; | ||
935 | } | ||
936 | |||
937 | .el-select { | ||
938 | width: 100%; | ||
939 | } | ||
940 | } | ||
941 | |||
942 | .dialog-footer { | ||
943 | width: 160px; | ||
944 | margin: 20px auto 0; | ||
945 | } | ||
946 | } | ||
947 | </style> |
src/components/formMenu/qlxz.vue
deleted
100644 → 0
1 | <template> | ||
2 | <div class="temp"> | ||
3 | <div class="qlxzAdd fl"> | ||
4 | <span>权利性质</span> | ||
5 | <i class="iconfont iconicon-test2" v-if="formData.qszt == '0'" @click="handleClick(0, 'add')"></i> | ||
6 | <i class="iconfont iconicon-test2" v-if="formData.qszt != '0'" style="cursor: not-allowed;"></i> | ||
7 | </div> | ||
8 | <el-row class="qlxzModule fl" v-for="(items, index) in countList" :key="items.id"> | ||
9 | <template v-for="(childItem, childIndex) in items.list"> | ||
10 | <el-col :span="1" class="btnCol " :key="childIndex + '1'" :class="childIndex > 0 ? 'childYT noTopBorder' : ''"> | ||
11 | <i v-show="childIndex == 0 && formData.qszt == '0'" | ||
12 | :style="{ 'margin-top': (items.list.length - 1) * 57 - 18 + 'px' }" class="iconfont icon- qlxzMinus" | ||
13 | @click="handleClick(index, 'minus')"></i> | ||
14 | <i v-show="childIndex == 0 && formData.qszt != '0'" | ||
15 | :style="{ 'margin-top': (items.list.length - 1) * 57 - 18 + 'px' }" class="iconfont icon- qlxzMinus" | ||
16 | style="cursor: not-allowed;"></i> | ||
17 | <div :class="items.hasNotBorder ? 'itemShow whiteItem' : 'whiteItem'" v-if="items.isInside"></div> | ||
18 | </el-col> | ||
19 | <el-col :span="2" class="btnCol tdytAdd" :key="childIndex + '17'" | ||
20 | :class="childIndex > 0 ? 'childYT noTopBorder' : ''"> | ||
21 | <template> | ||
22 | <span v-show="childIndex == 0" | ||
23 | :style="{ 'margin-top': (items.list.length - 1) * 57 - 40 + 'px' }">土地用途</span> | ||
24 | <i class="iconfont iconicon-test1" v-show="childIndex == 0 && formData.qszt == '0'" | ||
25 | :style="{ 'margin-top': (items.list.length - 1) * 57 + 'px' }" | ||
26 | @click="handleInClick(index, childIndex, 'add')"></i> | ||
27 | <i class="iconfont iconicon-test1" v-show="childIndex == 0 && formData.qszt != '0'" | ||
28 | :style="{ 'margin-top': (items.list.length - 1) * 57 + 'px' }" style="cursor: not-allowed;"></i> | ||
29 | </template> | ||
30 | </el-col> | ||
31 | <el-col :span="1" class="btnCol tdytMinus pr10" :key="childIndex + '18'" | ||
32 | :class="childIndex > 0 ? 'childYT' : ''"> | ||
33 | <i class="iconfont iconicon-test" v-if="formData.qszt == '0'" | ||
34 | @click="handleInClick(index, childIndex, 'minus')"></i> | ||
35 | <i class="iconfont iconicon-test" v-if="formData.qszt != '0'" style="cursor: not-allowed;"></i> | ||
36 | </el-col> | ||
37 | <template v-if="hasSyqx"> | ||
38 | <el-col :span="3" :key="childIndex + '7'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
39 | <ul> | ||
40 | <li class="pr10"><i class="requisite">*</i>批准用途</li> | ||
41 | <li class="pr10"><i class="requisite">*</i>实际用途</li> | ||
42 | <li class="pr10"><i class="requisite">*</i>土地使用起始时间</li> | ||
43 | </ul> | ||
44 | </el-col> | ||
45 | <el-col :span="4" :key="childIndex + '6'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
46 | <ul> | ||
47 | <li> | ||
48 | <el-select-tree class="formSelect percent30" v-if="show" :default-expand-all="defaultExpandAll" | ||
49 | ref="pzytdm" :multiple="multiple" :placeholder="placeholder" :disabled="formData.qszt != '0'" | ||
50 | :data="$store.state.tdytList" :props="treeProps" :check-strictly="checkStrictly" | ||
51 | :clearable="clearable" v-model="childItem.pzytdm"></el-select-tree> | ||
52 | </li> | ||
53 | <li> | ||
54 | <el-select-tree class="formSelect percent30" v-if="show" :default-expand-all="defaultExpandAll" | ||
55 | ref="sjytdm" :multiple="multiple" :placeholder="placeholder" :disabled="formData.qszt != '0'" | ||
56 | :data="$store.state.tdytList" :props="treeProps" :check-strictly="checkStrictly" | ||
57 | :clearable="clearable" v-model="childItem.sjytdm"></el-select-tree> | ||
58 | </li> | ||
59 | <li> | ||
60 | <el-date-picker :disabled="formData.qszt != '0'" v-model="childItem.tdsyqssj" type="date" ref="tdsyqssj" | ||
61 | :picker-options="childItem.pickerStart" value-format="yyyy-MM-dd" placeholder="选择日期" | ||
62 | @blur="inputBlur($event, true)" @input="startTime(index, childIndex)"> | ||
63 | </el-date-picker> | ||
64 | </li> | ||
65 | </ul> | ||
66 | </el-col> | ||
67 | <el-col :span="3" :key="childIndex + '5'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
68 | <ul> | ||
69 | <li class="pr10">地类编码</li> | ||
70 | <li class="pr10">地类编码</li> | ||
71 | <li class="pr10"><i class="requisite">*</i>年限</li> | ||
72 | </ul> | ||
73 | </el-col> | ||
74 | <el-col :span="3" :key="childIndex + '4'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
75 | <ul> | ||
76 | <li> | ||
77 | <input type="text" style="top: -1px;" :disabled="formData.qszt != '0'" v-model="childItem.pzytdm" | ||
78 | class="formInput" /> | ||
79 | </li> | ||
80 | <li> | ||
81 | <input type="text" :disabled="formData.qszt != '0'" v-model="childItem.sjytdm" class="formInput" /> | ||
82 | </li> | ||
83 | <li> | ||
84 | <input type="text" ref="syqx" @blur="inputBlur($event, false)" maxlength="3" | ||
85 | onkeyup="value=value.replace(/[^\d]/g,'')" | ||
86 | @input="sumTime(index, childIndex, childItem.syqx, childItem.syqx)" :disabled="formData.qszt != '0'" | ||
87 | v-model="childItem.syqx" class="formInput" /> | ||
88 | </li> | ||
89 | </ul> | ||
90 | </el-col> | ||
91 | <el-col class="pr10" :span="3" :key="childIndex + '2'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
92 | <ul> | ||
93 | <li>等级</li> | ||
94 | <li>等级</li> | ||
95 | <li><i class="requisite">*</i>土地使用结束时间</li> | ||
96 | </ul> | ||
97 | </el-col> | ||
98 | <el-col :span="4" :key="childIndex + '3'" class="noRightBorder" :class="childIndex > 0 ? 'childYT ' : ''"> | ||
99 | <ul> | ||
100 | <li> | ||
101 | <el-select :disabled="formData.qszt != '0'" class="formSelect percent30" v-model="childItem.pzdjbsm"> | ||
102 | <el-option v-for="item in $store.state.tddjList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
103 | </el-option> | ||
104 | </el-select> | ||
105 | </li> | ||
106 | <li> | ||
107 | <el-select :disabled="formData.qszt != '0'" class="formSelect percent30" v-model="childItem.sjdjbsm"> | ||
108 | <el-option v-for="item in $store.state.tddjList" :key="item.bsm" :label="item.mc" :value="item.bsm"> | ||
109 | </el-option> | ||
110 | </el-select> | ||
111 | </li> | ||
112 | <li> | ||
113 | <el-date-picker :disabled="formData.qszt != '0'" v-model="childItem.tdsyjssj" type="date" ref="tdsyjssj" | ||
114 | @blur="inputBlur($event, true)" :picker-options="childItem.pickerEnd" | ||
115 | @input="endTime(index, childIndex, $event)" value-format="yyyy-MM-dd" placeholder="选择日期"> | ||
116 | </el-date-picker> | ||
117 | </li> | ||
118 | </ul> | ||
119 | </el-col> | ||
120 | </template> | ||
121 | <template v-if="!hasSyqx"> | ||
122 | <el-col :span="5" :key="childIndex + '7'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
123 | <ul> | ||
124 | <li class="pr10"><i class="requisite">*</i>批准用途</li> | ||
125 | <li class="pr10"><i class="requisite">*</i>实际用途</li> | ||
126 | <li class="pr10"><i class="requisite">*</i>土地使用起始时间</li> | ||
127 | </ul> | ||
128 | </el-col> | ||
129 | <el-col :span="5" :key="childIndex + '6'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
130 | <ul> | ||
131 | <li> | ||
132 | <el-select-tree v-if="show" class="formSelect percent30" :default-expand-all="defaultExpandAll" | ||
133 | ref="pzytdm" :multiple="multiple" :placeholder="placeholder" :disabled="formData.qszt != '0'" | ||
134 | :data="$store.state.tdytList" :props="treeProps" :check-strictly="checkStrictly" | ||
135 | :clearable="clearable" v-model="childItem.pzytdm"></el-select-tree> | ||
136 | </li> | ||
137 | <li> | ||
138 | <el-select-tree v-if="show" class="formSelect percent30" :default-expand-all="defaultExpandAll" | ||
139 | ref="sjytdm" :multiple="multiple" :placeholder="placeholder" :disabled="formData.qszt != '0'" | ||
140 | :data="$store.state.tdytList" :props="treeProps" :check-strictly="checkStrictly" | ||
141 | :clearable="clearable" v-model="childItem.sjytdm"></el-select-tree> | ||
142 | </li> | ||
143 | <li> | ||
144 | <el-date-picker v-model="childItem.tdsyqssj" ref="tdsyqssj" :disabled="formData.qszt != '0'" | ||
145 | :picker-options="childItem.pickerStart" type="date" value-format="yyyy-MM-dd" placeholder="选择日期" | ||
146 | @blur="inputBlur($event, true)" @input="startTime(index, childIndex)"> | ||
147 | </el-date-picker> | ||
148 | </li> | ||
149 | </ul> | ||
150 | </el-col> | ||
151 | <el-col :span="5" :key="childIndex + '5'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
152 | <ul> | ||
153 | <li class="pr10">地类编码</li> | ||
154 | <li class="pr10">地类编码</li> | ||
155 | <li class="pr10"><i class="requisite">*</i>土地使用结束时间</li> | ||
156 | </ul> | ||
157 | </el-col> | ||
158 | <el-col :span="5" :key="childIndex + '4'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
159 | <ul> | ||
160 | <li> | ||
161 | <input type="text" style="top: -1px;" :disabled="formData.qszt != '0'" v-model="childItem.pzytdm" | ||
162 | class="formInput" /> | ||
163 | </li> | ||
164 | <li> | ||
165 | <input type="text" :disabled="formData.qszt != '0'" v-model="childItem.sjytdm" class="formInput" /> | ||
166 | </li> | ||
167 | <li> | ||
168 | <el-date-picker v-model="childItem.tdsyjssj" :disabled="formData.qszt != '0'" ref="tdsyjssj" type="date" | ||
169 | value-format="yyyy-MM-dd" :picker-options="childItem.pickerEnd" placeholder="选择日期" | ||
170 | @blur="inputBlur($event, true)" @input="endTime(index, childIndex)"> | ||
171 | </el-date-picker> | ||
172 | </li> | ||
173 | </ul> | ||
174 | </el-col> | ||
175 | </template> | ||
176 | </template> | ||
177 | |||
178 | <div class="title"> | ||
179 | <el-select-tree v-if="show" class="formSelect" :disabled="formData.qszt != '0'" | ||
180 | :default-expand-all="defaultExpandAll" :multiple="multiple" :placeholder="placeholder" | ||
181 | :data="$store.state.qlxzList" :props="treeProps" :check-strictly="checkStrictly" :clearable="clearable" | ||
182 | ref="qlxzdm" v-model="items.qlxzdm"></el-select-tree> | ||
183 | </div> | ||
184 | </el-row> | ||
185 | </div> | ||
186 | </template> | ||
187 | |||
188 | <script> | ||
189 | // import { getDdicByMC } from "@api/common"; | ||
190 | export default { | ||
191 | props: { | ||
192 | formData: { | ||
193 | type: Object, | ||
194 | default: () => { | ||
195 | return {}; | ||
196 | }, | ||
197 | }, | ||
198 | hasSyqx: { | ||
199 | type: Boolean, | ||
200 | default: false | ||
201 | } | ||
202 | }, | ||
203 | data () { | ||
204 | return { | ||
205 | //树型结构 | ||
206 | show: true, | ||
207 | clearable: true, | ||
208 | defaultExpandAll: true, | ||
209 | multiple: false, | ||
210 | placeholder: "请选择", | ||
211 | disabled: false, | ||
212 | checkStrictly: true, | ||
213 | treeProps: { | ||
214 | value: "dm", | ||
215 | children: "children", | ||
216 | label: "mc", | ||
217 | }, | ||
218 | |||
219 | countList: [ | ||
220 | { | ||
221 | id: Math.random(), | ||
222 | isInside: false, | ||
223 | hasNotBorder: false, | ||
224 | bsm: "", //权利性质标识码 | ||
225 | glbsm: "", //宗地BSM、自然幢BSM、户BSM、多幢BSM、宗海BSM | ||
226 | qlxzdm: "", | ||
227 | qlxzmc: "", | ||
228 | zhqlxzlx: "", //除宗海数据外,默认都是空;0:用海类型权利性质;2:海岛用途权利性质 | ||
229 | list: [ | ||
230 | { | ||
231 | pzdjbsm: "", | ||
232 | pzdjmc: "", | ||
233 | pzytdm: "", | ||
234 | pzytmc: "", | ||
235 | pzytmj: 0, | ||
236 | qlxzbsm: "", | ||
237 | sjdjbsm: "", | ||
238 | sjdjmc: "", | ||
239 | sjytdm: "", | ||
240 | sjytmc: "", | ||
241 | sjytmj: 0, | ||
242 | syqx: "", | ||
243 | tdsyjssj: "", | ||
244 | pickerStart: {}, | ||
245 | pickerEnd: {}, | ||
246 | tdsyqssj: "", | ||
247 | tdzh: "", | ||
248 | }, | ||
249 | ], | ||
250 | }, | ||
251 | ], | ||
252 | outNum: 0, | ||
253 | rulesResult: true,//权利性质表单校验结果 | ||
254 | }; | ||
255 | }, | ||
256 | created () { }, | ||
257 | mounted () { | ||
258 | }, | ||
259 | methods: { | ||
260 | /** | ||
261 | * @description: startTime | ||
262 | * @param {*} index | ||
263 | * @param {*} childIndex | ||
264 | * @author: renchao | ||
265 | */ | ||
266 | startTime (index, childIndex) { | ||
267 | let startTime = this.countList[index].list[childIndex].tdsyqssj; | ||
268 | let endTime = this.countList[index].list[childIndex].tdsyjssj; | ||
269 | this.countList[index].list[childIndex].pickerEnd = { | ||
270 | disabledDate: (time) => { | ||
271 | if (Object.keys(startTime).length > 0) { | ||
272 | return new Date(startTime).getTime() > time.getTime(); | ||
273 | } else { | ||
274 | return time.getTime() < Date.now(); | ||
275 | } | ||
276 | } | ||
277 | } | ||
278 | if (Object.keys(startTime).length > 0 && Object.keys(endTime).length > 0) { | ||
279 | let startYear = new Date(startTime).getFullYear(); | ||
280 | let endYear = new Date(endTime).getFullYear(); | ||
281 | //年限暂时不算 | ||
282 | // this.countList[index].list[childIndex].syqx=endYear-startYear; | ||
283 | } | ||
284 | }, | ||
285 | /** | ||
286 | * @description: sumTime | ||
287 | * @param {*} index | ||
288 | * @param {*} childIndex | ||
289 | * @param {*} syqx | ||
290 | * @author: renchao | ||
291 | */ | ||
292 | sumTime (index, childIndex, syqx, e) { | ||
293 | this.$refs.syqx.forEach((item, index) => { | ||
294 | if (item.value == syqx) { | ||
295 | this.$refs.tdsyjssj[index].$el.style.border = "" | ||
296 | } | ||
297 | }) | ||
298 | let startTime = this.countList[index].list[childIndex].tdsyqssj; | ||
299 | this.countList[index].list[childIndex].tdsyjssj = Number(startTime.substring(0, 4)) + Number(syqx) + startTime.slice(4, 10); | ||
300 | }, | ||
301 | /** | ||
302 | * @description: endTime | ||
303 | * @param {*} index | ||
304 | * @param {*} childIndex | ||
305 | * @author: renchao | ||
306 | */ | ||
307 | endTime (index, childIndex, e) { | ||
308 | let startTime = this.countList[index].list[childIndex].tdsyqssj; | ||
309 | let endTime = this.countList[index].list[childIndex].tdsyjssj; | ||
310 | this.countList[index].list[childIndex].pickerStart = { | ||
311 | disabledDate: (time) => { | ||
312 | if (Object.keys(endTime).length > 0) { | ||
313 | return new Date(endTime).getTime() < time.getTime(); | ||
314 | } else { | ||
315 | return time.getTime() > Date.now(); | ||
316 | } | ||
317 | } | ||
318 | } | ||
319 | if (Object.keys(startTime).length > 0 && Object.keys(endTime).length > 0) { | ||
320 | let startYear = new Date(startTime).getFullYear(); | ||
321 | let endYear = new Date(endTime).getFullYear(); | ||
322 | // this.countList[index].list[childIndex].syqx=endYear-startYear; | ||
323 | } | ||
324 | }, | ||
325 | /** | ||
326 | * @description: 外层操作 | ||
327 | * @param {*} ind | ||
328 | * @param {*} type | ||
329 | * @author: renchao | ||
330 | */ | ||
331 | handleClick (ind, type) { | ||
332 | let outsideObj = { | ||
333 | id: Math.random(), | ||
334 | isInside: false, | ||
335 | hasNotBorder: false, | ||
336 | bsm: "", //权利性质标识码 | ||
337 | glbsm: "", //宗地BSM、自然幢BSM、户BSM、多幢BSM、宗海BSM | ||
338 | qlxzdm: "", | ||
339 | qlxzmc: "", | ||
340 | zhqlxzlx: "", //除宗海数据外,默认都是空;0:用海类型权利性质;2:海岛用途权利性质 | ||
341 | list: [ | ||
342 | { | ||
343 | pzdjbsm: "", | ||
344 | pzdjmc: "", | ||
345 | pzytdm: "", | ||
346 | pzytmc: "", | ||
347 | pzytmj: 0, | ||
348 | qlxzbsm: "", | ||
349 | sjdjbsm: "", | ||
350 | sjdjmc: "", | ||
351 | sjytdm: "", | ||
352 | pickerStart: {}, | ||
353 | pickerEnd: {}, | ||
354 | sjytmc: "", | ||
355 | sjytmj: 0, | ||
356 | syqx: "", | ||
357 | tdsyjssj: "", | ||
358 | tdsyqssj: "", | ||
359 | tdzh: "", | ||
360 | }, | ||
361 | ], | ||
362 | }; | ||
363 | if (type === "add") { | ||
364 | this.countList.push(outsideObj); | ||
365 | this.outNum++; | ||
366 | } else { | ||
367 | this.countList.forEach((item, index) => { | ||
368 | if (index == ind && this.countList.length > 1) { | ||
369 | this.countList.splice(index, 1); | ||
370 | } | ||
371 | }); | ||
372 | this.outNum--; | ||
373 | } | ||
374 | }, | ||
375 | /** | ||
376 | * @description: reset | ||
377 | * @author: renchao | ||
378 | */ | ||
379 | reset () { | ||
380 | this.countList = [ | ||
381 | { | ||
382 | id: Math.random(), | ||
383 | isInside: false, | ||
384 | hasNotBorder: false, | ||
385 | bsm: "", //权利性质标识码 | ||
386 | glbsm: "", //宗地BSM、自然幢BSM、户BSM、多幢BSM、宗海BSM | ||
387 | qlxzdm: "", | ||
388 | qlxzmc: "", | ||
389 | zhqlxzlx: "", //除宗海数据外,默认都是空;0:用海类型权利性质;2:海岛用途权利性质 | ||
390 | list: [ | ||
391 | { | ||
392 | pzdjbsm: "", | ||
393 | pzdjmc: "", | ||
394 | pzytdm: "", | ||
395 | pzytmc: "", | ||
396 | pzytmj: 0, | ||
397 | qlxzbsm: "", | ||
398 | sjdjbsm: "", | ||
399 | sjdjmc: "", | ||
400 | sjytdm: "", | ||
401 | sjytmc: "", | ||
402 | sjytmj: 0, | ||
403 | syqx: "", | ||
404 | tdsyjssj: "", | ||
405 | pickerStart: {}, | ||
406 | pickerEnd: {}, | ||
407 | tdsyqssj: "", | ||
408 | tdzh: "", | ||
409 | }, | ||
410 | ], | ||
411 | }, | ||
412 | ]; | ||
413 | }, | ||
414 | /** | ||
415 | * @description: 内层操作 | ||
416 | * @param {*} index | ||
417 | * @param {*} childIndex | ||
418 | * @param {*} type | ||
419 | * @author: renchao | ||
420 | */ | ||
421 | handleInClick (index, childIndex, type) { | ||
422 | let insideObj = { | ||
423 | pzdjbsm: "", | ||
424 | pzdjmc: "", | ||
425 | pzytdm: "", | ||
426 | pzytmc: "", | ||
427 | pzytmj: 0, | ||
428 | qlxzbsm: "", | ||
429 | sjdjbsm: "", | ||
430 | sjdjmc: "", | ||
431 | sjytdm: "", | ||
432 | sjytmc: "", | ||
433 | sjytmj: 0, | ||
434 | pickerStart: {}, | ||
435 | pickerEnd: {}, | ||
436 | syqx: "", | ||
437 | tdsyjssj: "", | ||
438 | tdsyqssj: "", | ||
439 | tdzh: "", | ||
440 | }; | ||
441 | if (type === "add") { | ||
442 | this.countList[index].list.splice(childIndex + 1, 0, insideObj); | ||
443 | } else { | ||
444 | this.countList[index].list.forEach((item, childInd) => { | ||
445 | if (childIndex == childInd && this.countList[index].list.length > 1) { | ||
446 | this.countList[index].list.splice(childIndex, 1); | ||
447 | } | ||
448 | }); | ||
449 | } | ||
450 | this.hasBorderOrNot(); | ||
451 | }, | ||
452 | /** | ||
453 | * @description: 判断是否显示边框 | ||
454 | * @author: renchao | ||
455 | */ | ||
456 | hasBorderOrNot () { | ||
457 | this.countList.forEach((item, index) => { | ||
458 | if (index == this.countList.length - 1) { | ||
459 | item.hasNotBorder = true; | ||
460 | } else { | ||
461 | item.hasNotBorder = | ||
462 | item.isInside && !this.countList[index + 1].isInside ? true : false; | ||
463 | } | ||
464 | }); | ||
465 | }, | ||
466 | /** | ||
467 | * @description: getQlxzDataList | ||
468 | * @author: renchao | ||
469 | */ | ||
470 | getQlxzDataList () { | ||
471 | return this.countList; | ||
472 | }, | ||
473 | /** | ||
474 | * @description: getRules | ||
475 | * @author: renchao | ||
476 | */ | ||
477 | getRules () { | ||
478 | let rules = []; | ||
479 | let temp = 0; | ||
480 | this.countList.forEach((item, index) => { | ||
481 | rules.push({ | ||
482 | data: this.countList[index].qlxzdm, | ||
483 | name: '权利性质', | ||
484 | dom: this.$refs.qlxzdm[index], | ||
485 | rule: /^\s*$/g, //非空 | ||
486 | }) | ||
487 | item.list.forEach((j, ind) => { | ||
488 | rules.push( | ||
489 | { | ||
490 | data: item.list[ind].tdsyqssj, | ||
491 | name: '土地使用起始时间', | ||
492 | dom: this.$refs.tdsyqssj[temp + ind], | ||
493 | // val:this.$refs.tdsyqssj[temp+ind].value, | ||
494 | rule: /^\s*$/g, //非空 | ||
495 | }, | ||
496 | { | ||
497 | data: item.list[ind].tdsyjssj, | ||
498 | name: '土地使用结束时间', | ||
499 | dom: this.$refs.tdsyjssj[temp + ind], | ||
500 | // val:this.$refs.tdsyjssj[temp+ind].value, | ||
501 | rule: /^\s*$/g, //非空 | ||
502 | }, | ||
503 | { | ||
504 | data: item.list[ind].pzytdm, | ||
505 | name: '批准用途', | ||
506 | dom: this.$refs.pzytdm[temp + ind], | ||
507 | // val:this.$refs.tdsyjssj[temp+ind].value, | ||
508 | rule: /^\s*$/g, //非空 | ||
509 | }, | ||
510 | { | ||
511 | data: item.list[ind].sjytdm, | ||
512 | name: '实际用途', | ||
513 | dom: this.$refs.sjytdm[temp + ind], | ||
514 | // val:this.$refs.tdsyjssj[temp+ind].value, | ||
515 | rule: /^\s*$/g, //非空 | ||
516 | }, | ||
517 | ) | ||
518 | if (this.hasSyqx) { | ||
519 | rules.push( | ||
520 | { | ||
521 | data: item.list[ind].syqx, | ||
522 | name: '使用期限', | ||
523 | dom: this.$refs.syqx[temp + ind], | ||
524 | // val:this.$refs.syqx[temp+ind].value, | ||
525 | rule: /^\s*$/g, //非空 | ||
526 | } | ||
527 | ) | ||
528 | } | ||
529 | if (ind == item.list.length - 1) { | ||
530 | temp += item.list.length; | ||
531 | } | ||
532 | }) | ||
533 | }) | ||
534 | this.rulesResult = true; | ||
535 | rules.forEach(item => { | ||
536 | if (item.rule.test(item.data) || item.data == null) { | ||
537 | if (item.dom.$el) { | ||
538 | item.dom.$el.style.border = '1px solid red'; | ||
539 | item.dom.$el.style.boxSizing = 'border-box'; | ||
540 | } else { | ||
541 | item.dom.style.border = '1px solid red'; | ||
542 | item.dom.style.boxSizing = 'border-box'; | ||
543 | } | ||
544 | // this.$message({ | ||
545 | // // message: item.name+'不能为空', | ||
546 | // message: '不能为空', | ||
547 | // type: "warning", | ||
548 | // }); | ||
549 | this.rulesResult = false; | ||
550 | return false | ||
551 | } | ||
552 | }) | ||
553 | // console.log(rules,'rules'); | ||
554 | }, | ||
555 | /** | ||
556 | * @description: getRulesResult | ||
557 | * @author: renchao | ||
558 | */ | ||
559 | getRulesResult () { | ||
560 | return this.rulesResult | ||
561 | }, | ||
562 | /** | ||
563 | * @description: inputBlur | ||
564 | * @author: renchao | ||
565 | */ | ||
566 | inputBlur (e, flag) { | ||
567 | if (flag) { | ||
568 | if (e.value != '') { | ||
569 | e.$el.style.border = "" | ||
570 | } else { | ||
571 | e.$el.style.border = "1px solid red" | ||
572 | e.$el.style.boxSizing = 'border-box'; | ||
573 | } | ||
574 | } else { | ||
575 | if (e.target.value != '') { | ||
576 | e.target.style.border = "" | ||
577 | } else { | ||
578 | e.target.style.border = "1px solid red" | ||
579 | e.target.style.boxSizing = 'border-box'; | ||
580 | } | ||
581 | } | ||
582 | }, | ||
583 | //后续考虑在点击加减号时操作校验规则 | ||
584 | // addRules(){ | ||
585 | // this.tempQssj.push() | ||
586 | // }, | ||
587 | // minusRules(){ | ||
588 | |||
589 | // }, | ||
590 | }, | ||
591 | watch: { | ||
592 | countList: { | ||
593 | handler: function (newVal, oldVal) { | ||
594 | newVal.forEach((i, ind) => { | ||
595 | if (i.qlxzdm != '' && i.qlxzdm != null) { | ||
596 | console.log(this.$refs.qlxzdm, 'this.$refs.qlxzdm[ind]'); | ||
597 | i.qlxzmc = this.$refs.qlxzdm[ind].name; | ||
598 | this.$refs.qlxzdm[ind].$el.style.border = "" | ||
599 | } | ||
600 | i.list.forEach((item, index) => { | ||
601 | if (item.sjytdm != '' && item.sjytdm != null) { | ||
602 | this.$refs.sjytdm[ind].$el.style.border = "" | ||
603 | } | ||
604 | if (item.pzytdm != '' && item.pzytdm != null) { | ||
605 | this.$refs.pzytdm[ind].$el.style.border = "" | ||
606 | } | ||
607 | }) | ||
608 | }) | ||
609 | }, | ||
610 | deep: true | ||
611 | }, | ||
612 | } | ||
613 | }; | ||
614 | </script> | ||
615 | <style lang="scss"> | ||
616 | .temp { | ||
617 | width: 100%; | ||
618 | height: 100%; | ||
619 | |||
620 | .iconfont { | ||
621 | cursor: pointer; | ||
622 | } | ||
623 | |||
624 | .qlxzAdd { | ||
625 | width: 100px; | ||
626 | height: 100%; | ||
627 | border-right: 1px solid #E6E6E6; | ||
628 | position: relative; | ||
629 | |||
630 | span { | ||
631 | font-size: 14px; | ||
632 | height: 140px; | ||
633 | text-align: center; | ||
634 | -webkit-writing-mode: vertical-rl; | ||
635 | writing-mode: vertical-rl; | ||
636 | position: absolute; | ||
637 | top: 50%; | ||
638 | margin-top: -70px; | ||
639 | left: 30%; | ||
640 | } | ||
641 | |||
642 | i { | ||
643 | color: #66b1ff; | ||
644 | font-size: 30px; | ||
645 | position: absolute; | ||
646 | top: 50%; | ||
647 | margin-top: -18px; | ||
648 | left: 55%; | ||
649 | z-index: 1; | ||
650 | } | ||
651 | } | ||
652 | |||
653 | .qlxzModule { | ||
654 | width: calc(100% - 102px); | ||
655 | height: auto; | ||
656 | position: relative; | ||
657 | border-bottom: 1px solid #E6E6E6; | ||
658 | |||
659 | .pr10 { | ||
660 | padding-right: 10px !important; | ||
661 | } | ||
662 | |||
663 | .el-col { | ||
664 | // height: 100%; | ||
665 | border-right: 1px solid #E6E6E6; | ||
666 | position: relative; | ||
667 | text-align: right; | ||
668 | |||
669 | .qlxz { | ||
670 | line-height: 34px; | ||
671 | } | ||
672 | |||
673 | .qlxzMinus { | ||
674 | color: #FA6400; | ||
675 | font-size: 30px; | ||
676 | position: absolute; | ||
677 | top: 50%; | ||
678 | left: 50%; | ||
679 | margin: -18px 0 0 -18px; | ||
680 | z-index: 1; | ||
681 | } | ||
682 | |||
683 | ul { | ||
684 | margin-top: 34px; | ||
685 | |||
686 | li { | ||
687 | height: 37px; | ||
688 | line-height: 37px; | ||
689 | text-decoration: none; | ||
690 | border-bottom: 1px solid #e6e6e6; | ||
691 | |||
692 | .el-select { | ||
693 | width: 100%; | ||
694 | } | ||
695 | |||
696 | .el-input { | ||
697 | width: 100%; | ||
698 | } | ||
699 | |||
700 | input { | ||
701 | position: relative; | ||
702 | top: -2px; | ||
703 | height: 35px; | ||
704 | width: calc(100% - 1px) !important; | ||
705 | } | ||
706 | |||
707 | .el-input__inner { | ||
708 | height: 34px; | ||
709 | } | ||
710 | } | ||
711 | |||
712 | li:last-child { | ||
713 | border-bottom: none; | ||
714 | } | ||
715 | } | ||
716 | |||
717 | .whiteItem { | ||
718 | background-color: #fff; | ||
719 | position: absolute; | ||
720 | width: 100%; | ||
721 | height: 2px; | ||
722 | bottom: -1px; | ||
723 | left: 0; | ||
724 | } | ||
725 | |||
726 | .itemShow { | ||
727 | bottom: 2px; | ||
728 | } | ||
729 | } | ||
730 | |||
731 | .childYT { | ||
732 | height: 114px; | ||
733 | border-top: 1px solid #E6E6E6; | ||
734 | |||
735 | ul { | ||
736 | margin-top: 0; | ||
737 | |||
738 | li { | ||
739 | .el-input__inner { | ||
740 | height: 29px; | ||
741 | } | ||
742 | } | ||
743 | } | ||
744 | |||
745 | .changeBtn { | ||
746 | margin-top: -48px; | ||
747 | } | ||
748 | |||
749 | .el-button+.el-button { | ||
750 | margin-top: 4px; | ||
751 | } | ||
752 | } | ||
753 | |||
754 | .noTopBorder { | ||
755 | border-top: 0; | ||
756 | } | ||
757 | |||
758 | .noRightBorder { | ||
759 | border-right: 0; | ||
760 | } | ||
761 | |||
762 | .el-col:nth-last-child(2) { | ||
763 | border-right: none; | ||
764 | } | ||
765 | |||
766 | .title { | ||
767 | width: 95.83333%; | ||
768 | height: 34px; | ||
769 | line-height: 34px; | ||
770 | background-color: #fff; | ||
771 | border-bottom: 1px solid #E6E6E6; | ||
772 | position: absolute; | ||
773 | right: 0; | ||
774 | top: 0; | ||
775 | |||
776 | .formSelect { | ||
777 | top: -1px; | ||
778 | width: 100%; | ||
779 | |||
780 | .el-input__inner { | ||
781 | height: 32px; | ||
782 | } | ||
783 | } | ||
784 | } | ||
785 | } | ||
786 | |||
787 | .btnCol { | ||
788 | position: relative; | ||
789 | height: 146px; | ||
790 | |||
791 | .changeBtn { | ||
792 | width: 46px; | ||
793 | height: 46px; | ||
794 | font-size: 30px; | ||
795 | padding: 4px 6px; | ||
796 | position: absolute; | ||
797 | top: 50%; | ||
798 | left: 50%; | ||
799 | margin-top: -38px; | ||
800 | margin-left: -23px; | ||
801 | } | ||
802 | |||
803 | .el-button+.el-button { | ||
804 | margin-left: -23px; | ||
805 | margin-top: 16px; | ||
806 | } | ||
807 | } | ||
808 | |||
809 | .tdytAdd { | ||
810 | width: 100px; | ||
811 | } | ||
812 | |||
813 | .tdytAdd, | ||
814 | .tdytMinus { | ||
815 | span { | ||
816 | font-size: 14px; | ||
817 | height: 114px; | ||
818 | text-align: center; | ||
819 | -webkit-writing-mode: vertical-rl; | ||
820 | writing-mode: vertical-rl; | ||
821 | position: absolute; | ||
822 | top: 50%; | ||
823 | left: 30%; | ||
824 | } | ||
825 | |||
826 | i { | ||
827 | color: #66b1ff; | ||
828 | font-size: 30px; | ||
829 | position: absolute; | ||
830 | top: 50%; | ||
831 | margin-top: 0px; | ||
832 | left: 55%; | ||
833 | z-index: 1; | ||
834 | } | ||
835 | } | ||
836 | |||
837 | .tdytMinus { | ||
838 | i { | ||
839 | color: #FA6400; | ||
840 | left: 50%; | ||
841 | margin-left: -18px; | ||
842 | } | ||
843 | } | ||
844 | |||
845 | .childYT { | ||
846 | i { | ||
847 | top: 50%; | ||
848 | margin-top: -18px; | ||
849 | } | ||
850 | } | ||
851 | |||
852 | .el-row:nth-last-child(1) { | ||
853 | border-bottom: none; | ||
854 | } | ||
855 | |||
856 | /deep/.el-select-tree { | ||
857 | width: 100%; | ||
858 | |||
859 | .el-input__inner { | ||
860 | height: 34px !important; | ||
861 | position: relative; | ||
862 | top: -1px; | ||
863 | } | ||
864 | } | ||
865 | } | ||
866 | </style> |
1 | <template> | ||
2 | <div class="temp"> | ||
3 | <el-row class="qlxzModule" v-for="(items, index) in countList" :key="items.id"> | ||
4 | <template v-for="(childItem, childIndex) in items.list"> | ||
5 | <el-col :span="2" class="btnCol" :key="childIndex + '1'" :class="childIndex > 0 ? 'childYT noTopBorder' : ''"> | ||
6 | <el-button v-show="childIndex < 1" type="primary" class="changeBtn addMinus outAdd" | ||
7 | @click="handleClick(index, 'add')">+</el-button> | ||
8 | <el-button v-show="childIndex < 1" type="primary" class="changeBtn addMinus outMinus" | ||
9 | @click="handleClick(index, 'minus')">-</el-button> | ||
10 | <div :class="items.hasNotBorder ? 'itemShow whiteItem' : 'whiteItem'" v-if="items.isInside"></div> | ||
11 | </el-col> | ||
12 | <el-col :span="2" class="btnCol" :key="childIndex + '8'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
13 | <!-- <template v-if="childIndex>0"> --> | ||
14 | <span class="qlxz" v-show="childIndex < 1">权利性质</span><br /> | ||
15 | <el-button type="primary" class="changeBtn addMinus inAdd" @click="handleInClick(index, childIndex, 'add')">+ | ||
16 | </el-button> | ||
17 | <el-button type="primary" class="changeBtn addMinus inMinus" | ||
18 | @click="handleInClick(index, childIndex, 'minus')">-</el-button> | ||
19 | <!-- </template> --> | ||
20 | </el-col> | ||
21 | <el-col :span="5" :key="childIndex + '7'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
22 | <ul> | ||
23 | <li>批准用途</li> | ||
24 | <li>实际用途</li> | ||
25 | <li>土地使用起始时间<i class="requisite">*</i></li> | ||
26 | </ul> | ||
27 | </el-col> | ||
28 | <el-col :span="5" :key="childIndex + '6'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
29 | <ul> | ||
30 | <li> | ||
31 | <el-select-tree v-if="show" :default-expand-all="defaultExpandAll" :multiple="multiple" | ||
32 | :placeholder="placeholder" :disabled="disabled" :data="$store.state.tdytList" :props="treeProps" | ||
33 | :check-strictly="checkStrictly" :clearable="clearable" v-model="childItem.pzytdm"></el-select-tree> | ||
34 | </li> | ||
35 | <li> | ||
36 | <el-select-tree v-if="show" :default-expand-all="defaultExpandAll" :multiple="multiple" | ||
37 | :placeholder="placeholder" :disabled="disabled" :data="$store.state.tdytList" :props="treeProps" | ||
38 | :check-strictly="checkStrictly" :clearable="clearable" v-model="childItem.sjytdm"></el-select-tree> | ||
39 | </li> | ||
40 | <li> | ||
41 | <el-date-picker v-model="childItem.tdsyqssj" :picker-options="childItem.pickerStart" type="date" | ||
42 | value-format="yyyy-MM-dd" placeholder="选择日期" @input="startTime(index, childIndex)"> | ||
43 | </el-date-picker> | ||
44 | </li> | ||
45 | </ul> | ||
46 | </el-col> | ||
47 | <el-col :span="5" :key="childIndex + '5'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
48 | <ul> | ||
49 | <li>地类编码</li> | ||
50 | <li>地类编码</li> | ||
51 | <li>土地使用结束时间<i class="requisite">*</i></li> | ||
52 | </ul> | ||
53 | </el-col> | ||
54 | <el-col :span="5" :key="childIndex + '4'" :class="childIndex > 0 ? 'childYT' : ''"> | ||
55 | <ul> | ||
56 | <li> | ||
57 | <input type="text" style="top: -1px;" v-model="childItem.pzytdm" class="formInput" /> | ||
58 | </li> | ||
59 | <li> | ||
60 | <input type="text" v-model="childItem.sjytdm" class="formInput" /> | ||
61 | </li> | ||
62 | <li> | ||
63 | <el-date-picker v-model="childItem.tdsyjssj" type="date" value-format="yyyy-MM-dd" | ||
64 | :picker-options="childItem.pickerEnd" placeholder="选择日期" @input="endTime(index, childIndex)"> | ||
65 | </el-date-picker> | ||
66 | </li> | ||
67 | </ul> | ||
68 | </el-col> | ||
69 | </template> | ||
70 | |||
71 | <div class="title"> | ||
72 | <el-select class="formSelect" v-model="items.qlxzdm"> | ||
73 | <el-option v-for="item in $store.state.qlxzList" :key="item.dm" :label="item.mc" :value="item.dm"> | ||
74 | </el-option> | ||
75 | </el-select> | ||
76 | </div> | ||
77 | </el-row> | ||
78 | </div> | ||
79 | </template> | ||
80 | |||
81 | <script> | ||
82 | // import { getDdicByMC } from "@api/common"; | ||
83 | export default { | ||
84 | props: { | ||
85 | // widtd: { | ||
86 | // type: String, | ||
87 | default: "70%", | ||
88 | , | ||
89 | a () { | ||
90 | return { | ||
91 | //树型结构 | ||
92 | how: true, | ||
93 | arable: true, | ||
94 | aultExpandAll: true, | ||
95 | tiple: false, | ||
96 | ceholder: "请选择", | ||
97 | abled: false, | ||
98 | ckStrictly: true, | ||
99 | eProps: { | ||
100 | lue: "dm", | ||
101 | ildren: "children", | ||
102 | bel: "mc", | ||
103 | |||
104 | ntList: [ | ||
105 | |||
106 | id: Math.random(), | ||
107 | isInside: false, | ||
108 | hasNotBorder: false, | ||
109 | bsm: "", //权利性质标识码 | ||
110 | lbsm: "", //宗地BSM、自然幢BSM、户BSM、多幢BSM、宗海BSM | ||
111 | lxzdm: "", | ||
112 | zhqlxzlx: "", //除宗海数据外,默认都是空;0:用海类型权利性质;2:海岛用途权利性质 | ||
113 | list: [ | ||
114 | { | ||
115 | pzdjbsm: "", | ||
116 | pzdjmc: "", | ||
117 | pzytdm: "", | ||
118 | pzytmc: "", | ||
119 | pzytmj: 0, | ||
120 | qlxzbsm: "", | ||
121 | sjdjbsm: "", | ||
122 | sjdjmc: "", | ||
123 | sjytdm: "", | ||
124 | sjytmc: "", | ||
125 | jytmj: 0, | ||
126 | syqx: "", | ||
127 | tdsyjssj: "", | ||
128 | tdsyqssj: "", | ||
129 | pickerStart: {}, | ||
130 | pickerEnd: {}, | ||
131 | tdzh: "", | ||
132 | }, | ||
133 | |||
134 | |||
135 | |||
136 | Num: 0, | ||
137 | |||
138 | |||
139 | ed () { }, | ||
140 | hods: { | ||
141 | 外层操作 | ||
142 | ndleClick (ind, type) { | ||
143 | outsideObj = { | ||
144 | Math.random(), | ||
145 | Inside: false, | ||
146 | sNotBorder: false, | ||
147 | "", //权利性质标识码 | ||
148 | bsm: "", //宗地BSM、自然幢BSM、户BSM、多幢BSM、宗海BSM | ||
149 | xzdm: "", | ||
150 | zhqlxzlx: "", //除宗海数据外,默认都是空;0:用海类型权利性质;2:海岛用途权利性质 | ||
151 | list: [ | ||
152 | { | ||
153 | pzdjbsm: "", | ||
154 | pzdjmc: "", | ||
155 | pzytdm: "", | ||
156 | pzytmc: "", | ||
157 | pzytmj: 0, | ||
158 | qlxzbsm: "", | ||
159 | sjdjbsm: "", | ||
160 | sjdjmc: "", | ||
161 | sjytdm: "", | ||
162 | sjytmc: "", | ||
163 | sjytmj: 0, | ||
164 | syqx: "", | ||
165 | tdsyjssj: "", | ||
166 | tdsyqssj: "", | ||
167 | tdzh: "", | ||
168 | |||
169 | |||
170 | }; | ||
171 | (type === "add") { | ||
172 | is.countList.push(outsideObj); | ||
173 | is.outNum++; | ||
174 | lse { | ||
175 | .countList.forEach((item, index) => { | ||
176 | f (index == ind && this.countList.length > 1) { | ||
177 | this.countList.splice(index, 1); | ||
178 | } | ||
179 | }); | ||
180 | this.outNum--; | ||
181 | |||
182 | Click (index, childIndex, type) { | ||
183 | eObj = { | ||
184 | ", | ||
185 | , | ||
186 | "", | ||
187 | "", | ||
188 | : 0, | ||
189 | m: "", | ||
190 | m: "", | ||
191 | "", | ||
192 | : "", | ||
193 | : "", | ||
194 | : 0, | ||
195 | "", | ||
196 | jssj: "", | ||
197 | sj: "", | ||
198 | : "", | ||
199 | e === "add") { | ||
200 | ountList[index].list.splice(childIndex + 1, 0, insideObj); | ||
201 | |||
202 | ountList[index].list.forEach((item, childInd) => { | ||
203 | (childIndex == childInd && this.countList[index].list.length > 1) { | ||
204 | this.countList[index].list.splice(childIndex, 1); | ||
205 | } | ||
206 | }); | ||
207 | |||
208 | s.hasBorderOrNot(); | ||
209 | 是否显示边框 | ||
210 | orderOrNot () { | ||
211 | s.countList.forEach((item, index) => { | ||
212 | (index == this.countList.length - 1) { | ||
213 | m.hasNotBorder = true; | ||
214 | { | ||
215 | sNotBorder = | ||
216 | sInside && !this.countList[index + 1].isInside ? true : false; | ||
217 | aList () { | ||
218 | this.countList; | ||
219 | 时间判断 | ||
220 | tTime (index, childIndex) { | ||
221 | tartTime = this.countList[index].list[childIndex].tdsyqssj; | ||
222 | endTime = this.countList[index].list[childIndex].tdsyjssj; | ||
223 | s.countList[index].list[childIndex].pickerEnd = { | ||
224 | bledDate: (time) => { | ||
225 | f (Object.keys(startTime).length > 0) { | ||
226 | return new Date(startTime).getTime() > time.getTime(); | ||
227 | lse { | ||
228 | rn time.getTime() < Date.now(); | ||
229 | t.keys(startTime).length > 0 && Object.keys(endTime).length > 0) { | ||
230 | ear = new Date(startTime).getFullYear(); | ||
231 | ear = new Date(endTime).getFullYear(); | ||
232 | ime (index, childIndex, e) { | ||
233 | onsole.log(e, 'eeeeee'); | ||
234 | let startTime = this.countList[index].list[childIndex].tdsyqssj; | ||
235 | let endTime = this.countList[index].list[childIndex].tdsyjssj; | ||
236 | this.countList[index].list[childIndex].pickerStart = { | ||
237 | disabledDate: (time) => { | ||
238 | if (Object.keys(endTime).length > 0) { | ||
239 | return new Date(endTime).getTime() < time.getTime(); | ||
240 | } else { | ||
241 | return time.getTime() > Date.now(); | ||
242 | } | ||
243 | } | ||
244 | } | ||
245 | if (Object.keys(startTime).length > 0 && Object.keys(endTime).length > 0) { | ||
246 | let startYear = new Date(startTime).getFullYear(); | ||
247 | let endYear = new Date(endTime).getFullYear(); | ||
248 | } | ||
249 | }, | ||
250 | }, | ||
251 | }; | ||
252 | </script> | ||
253 | <style lang="scss"> | ||
254 | .temp { | ||
255 | width: 100%; | ||
256 | |||
257 | .qlxzModule { | ||
258 | height: auto; | ||
259 | position: relative; | ||
260 | border-bottom: 1px solid #e6e6e6; | ||
261 | |||
262 | .el-col { | ||
263 | // height: 100%; | ||
264 | border-right: 1px solid #E6E6E6; | ||
265 | position: relative; | ||
266 | text-align: right; | ||
267 | padding-right: 10px; | ||
268 | |||
269 | .qlxz { | ||
270 | line-height: 34px; | ||
271 | } | ||
272 | |||
273 | ul { | ||
274 | margin-top: 34px; | ||
275 | |||
276 | li { | ||
277 | height: 37px; | ||
278 | line-height: 37px; | ||
279 | text-decoration: none; | ||
280 | border-bottom: 1px solid #e6e6e6; | ||
281 | |||
282 | .el-select { | ||
283 | width: 100%; | ||
284 | } | ||
285 | |||
286 | .el-input { | ||
287 | width: 100%; | ||
288 | } | ||
289 | |||
290 | .el-input__inner { | ||
291 | height: 34px; | ||
292 | } | ||
293 | |||
294 | input { | ||
295 | position: relative; | ||
296 | top: -2px; | ||
297 | height: 35px; | ||
298 | width: calc(100% - 1px) !important; | ||
299 | } | ||
300 | } | ||
301 | |||
302 | li:last-child { | ||
303 | border-bottom: none; | ||
304 | } | ||
305 | } | ||
306 | |||
307 | .whiteItem { | ||
308 | background-color: #fff; | ||
309 | position: absolute; | ||
310 | width: 100%; | ||
311 | height: 2px; | ||
312 | bottom: -1px; | ||
313 | left: 0; | ||
314 | } | ||
315 | |||
316 | .itemShow { | ||
317 | bottom: 2px; | ||
318 | } | ||
319 | } | ||
320 | |||
321 | .childYT { | ||
322 | height: 114px; | ||
323 | border-top: 1px solid #E6E6E6; | ||
324 | |||
325 | ul { | ||
326 | margin-top: 0; | ||
327 | |||
328 | li { | ||
329 | .el-input__inner { | ||
330 | height: 29px; | ||
331 | } | ||
332 | } | ||
333 | } | ||
334 | |||
335 | .changeBtn { | ||
336 | margin-top: -48px; | ||
337 | } | ||
338 | |||
339 | .el-button+.el-button { | ||
340 | margin-top: 4px; | ||
341 | } | ||
342 | } | ||
343 | |||
344 | .noTopBorder { | ||
345 | border-top: 0; | ||
346 | } | ||
347 | |||
348 | .noRightBorder { | ||
349 | border-right: 0; | ||
350 | } | ||
351 | |||
352 | .el-col:nth-last-child(2) { | ||
353 | border-right: none; | ||
354 | } | ||
355 | |||
356 | .title { | ||
357 | width: 83.33333%; | ||
358 | height: 34px; | ||
359 | line-height: 34px; | ||
360 | background-color: #fff; | ||
361 | border-bottom: 1px solid #E6E6E6; | ||
362 | position: absolute; | ||
363 | right: 0; | ||
364 | top: 0; | ||
365 | |||
366 | .formSelect { | ||
367 | top: -1px; | ||
368 | width: 100%; | ||
369 | |||
370 | .el-input__inner { | ||
371 | height: 32px; | ||
372 | } | ||
373 | } | ||
374 | } | ||
375 | } | ||
376 | |||
377 | .btnCol { | ||
378 | position: relative; | ||
379 | height: 146px; | ||
380 | |||
381 | .changeBtn { | ||
382 | width: 46px; | ||
383 | height: 46px; | ||
384 | font-size: 30px; | ||
385 | padding: 4px 6px; | ||
386 | position: absolute; | ||
387 | top: 50%; | ||
388 | left: 50%; | ||
389 | margin-top: -38px; | ||
390 | margin-left: -23px; | ||
391 | } | ||
392 | |||
393 | .el-button+.el-button { | ||
394 | margin-left: -23px; | ||
395 | margin-top: 16px; | ||
396 | } | ||
397 | } | ||
398 | |||
399 | .el-row:nth-last-child(1) { | ||
400 | border-bottom: none; | ||
401 | } | ||
402 | |||
403 | /deep/.el-select-tree { | ||
404 | width: 100%; | ||
405 | |||
406 | .el-input__inner { | ||
407 | height: 30px !important; | ||
408 | } | ||
409 | } | ||
410 | } | ||
411 | </style> |
src/components/lineTree/lineItem.vue
deleted
100644 → 0
1 | <template> | ||
2 | <div class="tree_item_box"> | ||
3 | <div class="column-start-start linkLine_default" v-for="(item, s_index) in list" :key="s_index" :class="{ | ||
4 | linkLine_first: (s_index === 0) & (list.length > 1), | ||
5 | linkLine_half_top: s_index === 0 && list.length === 1, | ||
6 | linkLine_last: s_index === list.length - 1 && s_index !== 0, | ||
7 | third_layer: !item.children, | ||
8 | second_layer: item.children, | ||
9 | curNode: $route.query.bsm && $route.query.bsm == item.bsm, | ||
10 | zxxNode: item.qszt, | ||
11 | iszd: item.qszt && item.type == 'zd', | ||
12 | isdz: item.qszt && item.type == 'dz', | ||
13 | iszrz: item.qszt && item.type == 'zrz', | ||
14 | isgzw: item.qszt && item.type == 'gzw' | ||
15 | }"> | ||
16 | <div class="row-flex-start basic_banner" @click="itemClick(item)" @dblclick="dbclick(item, item.zdbsm)" :class="{ | ||
17 | active_color: item.expand, | ||
18 | }"> | ||
19 | <div class="layer_text nowrap" @contextmenu.prevent="openMenu($event, item, list)" :class="{ | ||
20 | active_color: item.expand | ||
21 | }" :ref="($route.query.bsm && $route.query.bsm == item.bsm) ? 'curZxx' : ''" :data-zdbsm="item.zdbsm" | ||
22 | :title=item.mc> | ||
23 | <i v-show="!islpb && !item.qszt && !item.type" class="iconfont iconguoyou" style="margin-right:6px"></i> | ||
24 | <template v-if="islpb && item.type == 'ljz' && item.children.length > 0"> | ||
25 | <i v-if="!item.expand" class="iconfont iconxiala lpbTree-node"></i> | ||
26 | <i v-if="item.expand" class="iconfont iconxialazhankai lpbTree-node"></i> | ||
27 | </template> | ||
28 | <!-- <i v-show="islpb && item.expand && item.children.length > 0" class="iconfont iconxiala" style="margin-right:6px"></i> | ||
29 | <i v-show="islpb && !item.expand && item.children.length > 0" class="iconfont iconxialazhankai" style="margin-right:6px"></i> --> | ||
30 | <span class="qsztImg" v-if="item.bblx == 1 || (item.bhqkbsm != '' && item.bhqkbsm != null)"> | ||
31 | <!-- <span class="qsztFont" style="color: #9e9b9b">变</span> --> | ||
32 | <i | ||
33 | :class="$route.query.bsm && $route.query.bsm == item.bsm ? 'iconfont iconbianing' : 'iconfont iconbian'"></i> | ||
34 | </span> | ||
35 | <template v-else> | ||
36 | <span class="qsztImg" v-if="item.qszt == '0'"> | ||
37 | <!-- <span class="qsztFont" style="color: #2FA3FA; ">临</span> --> | ||
38 | <i :class="$route.query.bsm && $route.query.bsm == item.bsm ? 'iconfont iconlining' : 'iconfont iconlin'" | ||
39 | style="color: #F7B500;"></i> | ||
40 | </span> | ||
41 | <span class="qsztImg" v-if="item.qszt == '1'"> | ||
42 | <!-- <span class="qsztFont" style="color: #1AD6E1; ">正</span> --> | ||
43 | <i :class="$route.query.bsm && $route.query.bsm == item.bsm ? 'iconfont iconzhenging' : 'iconfont iconzheng'" | ||
44 | style="color: #15D7E2;"></i> | ||
45 | </span> | ||
46 | <span class="qsztImg" v-if="item.qszt == '2'"> | ||
47 | <!-- <span class="qsztFont" style="color: #45AEFD; ">现</span> --> | ||
48 | <i :class="$route.query.bsm && $route.query.bsm == item.bsm ? 'iconfont iconxianing' : 'iconfont iconxian'" | ||
49 | style="color: #2FA3FA;"></i> | ||
50 | </span> | ||
51 | </template> | ||
52 | <i class="iconfont iconziranchuang1 mr4" v-if="item.type == 'zrz'"></i> | ||
53 | <i class="iconfont iconduochuang1 mr4" v-if="item.type == 'dz'"></i> | ||
54 | <i class="iconfont icongouzhuwu mr4" v-if="item.type == 'gzw'"></i> | ||
55 | <span v-if="islpb">({{ item.type | bdcLxFilter }})</span> | ||
56 | <span>{{ item.mc }}</span> | ||
57 | |||
58 | </div> | ||
59 | <div v-if="item.children" class="reTree_icon" :style="{ | ||
60 | height: 10 + 'px', | ||
61 | width: 10 + 'px', | ||
62 | }" :class="{ | ||
63 | reTree_default_icon: item.children.length === 0, | ||
64 | reTree_collapse_icon: !islpb && item.expand && item.children.length > 0, | ||
65 | reTree_expand_icon: !islpb && !item.expand && item.children.length > 0, | ||
66 | }"></div> | ||
67 | <div v-if="item.children == null" class="reTree_icon" :class="{ | ||
68 | reTree_default_icon: item.dm != 'G' && item.dm != 'J' && item.dm != 'Z', | ||
69 | reTree_expand_icon: item.dm == 'G' || item.dm == 'J' || item.dm == 'Z', | ||
70 | }" :style="{ | ||
71 | height: 10 + 'px', | ||
72 | width: 10 + 'px', | ||
73 | }"></div> | ||
74 | </div> | ||
75 | <line-item :list="item.children" v-on="$listeners" :islpb="islpb" :size="size" | ||
76 | v-if="item.expand && item.children && item.children.length > 0"></line-item> | ||
77 | </div> | ||
78 | </div> | ||
79 | </template> | ||
80 | <script> | ||
81 | // import { getZdDetailList } from "@api/common" | ||
82 | export default { | ||
83 | name: "line-item", | ||
84 | props: { | ||
85 | list: { | ||
86 | ype: Array, | ||
87 | ault: () => { | ||
88 | turn []; | ||
89 | , | ||
90 | }, | ||
91 | formatData: { | ||
92 | ype: Array, | ||
93 | ault: () => { | ||
94 | turn []; | ||
95 | |||
96 | : { | ||
97 | e: Number, | ||
98 | ault: 16, | ||
99 | ble: { | ||
100 | e: Boolean, | ||
101 | ault: false, | ||
102 | b: { | ||
103 | e: Boolean, | ||
104 | efault: false, | ||
105 | } | ||
106 | , | ||
107 | a () { | ||
108 | rn { | ||
109 | e: null, | ||
110 | reeXzqHeight: 0, | ||
111 | linshi: require("@/image/lpb/lin.png"), | ||
112 | zhengshi: require("@/image/lpb/zheng.png"), | ||
113 | ianshi: require("@/image/lpb/xian.png"), | ||
114 | } | ||
115 | , | ||
116 | nted () { | ||
117 | onsole.log(this.$refs.curZxx,'this.$refs.curZxx'); | ||
118 | this.$refs.curZxx) { | ||
119 | onsole.log(this.$refs.curZxx[0].dataset.zdbsm); | ||
120 | his.$store.state.oldZdbsm = this.$refs.curZxx[0].dataset.zdbsm; | ||
121 | : { | ||
122 | Click (item) { | ||
123 | self = this; | ||
124 | 开启延时器,300ms的间隔区分单击和双击,解决双击时执行两次单击事件 | ||
125 | learTimeout(self.time); | ||
126 | elf.time = setTimeout(() => { | ||
127 | em.expand = item.expand == undefined ? true : !item.expand; | ||
128 | self.$emit("itemClick", item); | ||
129 | source = '' | ||
130 | itch (this.$route.path) { | ||
131 | ase '/add': | ||
132 | source = '1,2' | ||
133 | break; | ||
134 | case '/change': | ||
135 | source = '2' | ||
136 | break; | ||
137 | case '/panel': | ||
138 | source = '0,1,2' | ||
139 | break; | ||
140 | e '/modify': | ||
141 | source = '1' | ||
142 | break; | ||
143 | e '/search': | ||
144 | source = '0,1,2' | ||
145 | break; | ||
146 | default: | ||
147 | break; | ||
148 | |||
149 | 目录树的所有权类型单击时加载子节点 | ||
150 | (!item.children && !item.type) { | ||
151 | et data = { | ||
152 | xzqbsm: item.xzq, | ||
153 | djqbsm: item.djq, | ||
154 | djzqbsm: item.djzq, | ||
155 | syqlx: item.dm, | ||
156 | source: source | ||
157 | |||
158 | / getZdDetailList(data).then((res) => { | ||
159 | // if (res.result.length > 0) { | ||
160 | / res.result.forEach(i => { | ||
161 | // if (i.children.length > 0) { | ||
162 | / i.expand = false; | ||
163 | } | ||
164 | / }) | ||
165 | // self.$emit("ownerMethod", item, res.result); | ||
166 | / } | ||
167 | / }).catch((error) => { | ||
168 | / }); | ||
169 | |||
170 | 0); | ||
171 | 键点击事件 | ||
172 | enMenu (e, item, list) { | ||
173 | onsole.log(item, '右键list'); | ||
174 | his.$emit("changeTop", e.pageY); | ||
175 | s.$emit("changeLeft", e.pageX); | ||
176 | s.$emit("changeZdData", item); | ||
177 | $emit("changeVisible", false); | ||
178 | 所有权类型 | ||
179 | e.log(item.dm,'item.dm '); | ||
180 | dm == 'G' || item.dm == 'J' ||item.dm == 'Z'){ | ||
181 | mit("changeCreateVisible", true); | ||
182 | |||
183 | (item.type) { | ||
184 | zd': | ||
185 | $emit("changeIsZD", true); | ||
186 | mit("changeVisible", true); | ||
187 | ; | ||
188 | dz': | ||
189 | $emit("changeDzVisible", true); | ||
190 | ; | ||
191 | 'zrz': | ||
192 | $emit("changeIsZD", false); | ||
193 | s.$emit("changeVisible", true); | ||
194 | ; | ||
195 | zdy': | ||
196 | $emit("changeLpbVisible", true); | ||
197 | |||
198 | ljz': | ||
199 | s.$emit("changeLpbVisible", true); | ||
200 | reak; | ||
201 | case 'gzw': | ||
202 | this.$emit("changeGzwVisible", true); | ||
203 | break; | ||
204 | fault: | ||
205 | reak; | ||
206 | 键双击事件 | ||
207 | ick (item, bsm) { | ||
208 | Timeout(this.time); | ||
209 | tore.state.newZdbsm = bsm; | ||
210 | tem.type) { | ||
211 | ': | ||
212 | tore.state.zdbsm = item.bsm; | ||
213 | |||
214 | : | ||
215 | tore.state.zrzbsm = item.bsm; | ||
216 | ; | ||
217 | 'dz': | ||
218 | his.$store.state.dzbsm = item.bsm; | ||
219 | reak; | ||
220 | 'gzw': | ||
221 | his.$store.state.gzwbsm = item.bsm; | ||
222 | reak; | ||
223 | fault: | ||
224 | reak; | ||
225 | m.type == 'zd' || item.type == 'dz' || item.type == 'zrz' || item.type == 'gzw') { | ||
226 | = { | ||
227 | 2, | ||
228 | .bsm, | ||
229 | his.$route.query.auth ? this.$route.query.auth : '0,1,2' | ||
230 | .$route.query.workitemInstanceId) { | ||
231 | workitemInstanceId = this.$route.query.workitemInstanceId; | ||
232 | (this.$route.query.ywbsm) { | ||
233 | data.ywbsm = this.$route.query.ywbsm; | ||
234 | } | ||
235 | this.$router.push({ | ||
236 | path: '/' + item.type, | ||
237 | query: data | ||
238 | }); | ||
239 | } | ||
240 | }, | ||
241 | closeMenu () { | ||
242 | this.$emit("changeVisible", false); | ||
243 | }, | ||
244 | }, | ||
245 | watch: { | ||
246 | visible (value) { | ||
247 | if (value) { | ||
248 | document.body.addEventListener("click", this.closeMenu); | ||
249 | } else { | ||
250 | document.body.removeEventListener("click", this.closeMenu); | ||
251 | } | ||
252 | }, | ||
253 | }, | ||
254 | }; | ||
255 | </script> | ||
256 | <style lang="scss"> | ||
257 | .content { | ||
258 | height: 100%; | ||
259 | width: 100%; | ||
260 | } | ||
261 | |||
262 | .column-start-center { | ||
263 | display: flex; | ||
264 | display: -webkit-flex; | ||
265 | flex-direction: column; | ||
266 | justify-content: flex-start; | ||
267 | align-items: center; | ||
268 | } | ||
269 | |||
270 | .row-flex-start { | ||
271 | display: flex; | ||
272 | display: -webkit-flex; | ||
273 | flex-direction: row; | ||
274 | justify-content: flex-start; | ||
275 | align-items: center; | ||
276 | } | ||
277 | |||
278 | .nowrap { | ||
279 | overflow: hidden; | ||
280 | text-overflow: ellipsis; | ||
281 | white-space: nowrap; | ||
282 | } | ||
283 | |||
284 | // .active_color { | ||
285 | // color: #ffffff; | ||
286 | // } | ||
287 | .reTree_icon { | ||
288 | width: 17px; | ||
289 | height: 17px; | ||
290 | margin-right: 16px; | ||
291 | } | ||
292 | |||
293 | .no_icon { | ||
294 | width: 17px; | ||
295 | height: 17px; | ||
296 | } | ||
297 | |||
298 | .tree_item_box { | ||
299 | position: relative; | ||
300 | width: 100%; | ||
301 | cursor: pointer; | ||
302 | } | ||
303 | |||
304 | // .ofy_scroll{ | ||
305 | // overflow-y: scroll; | ||
306 | // overflow-x: hidden; | ||
307 | // } | ||
308 | .basic_layer { | ||
309 | width: 100%; | ||
310 | position: relative; | ||
311 | color: #4a4a4a; | ||
312 | cursor: pointer; | ||
313 | |||
314 | .layer_text { | ||
315 | flex: 1; | ||
316 | line-height: 40px; | ||
317 | } | ||
318 | } | ||
319 | |||
320 | .first_vertical_line { | ||
321 | content: ""; | ||
322 | position: absolute; | ||
323 | width: 1px; | ||
324 | left: 6px; | ||
325 | top: 17px; | ||
326 | background: #c3c5c8; | ||
327 | } | ||
328 | |||
329 | .basic_banner { | ||
330 | position: relative; | ||
331 | width: 279px; | ||
332 | height: 40px; | ||
333 | box-sizing: border-box; | ||
334 | padding-left: 20px; | ||
335 | } | ||
336 | |||
337 | .lpb_basic_banner { | ||
338 | padding-left: 42px; | ||
339 | } | ||
340 | |||
341 | .second_layer { | ||
342 | position: relative; | ||
343 | width: calc(100% - 20px); | ||
344 | cursor: pointer; | ||
345 | padding-left: 20px; | ||
346 | |||
347 | .basic_banner { | ||
348 | width: 100%; | ||
349 | } | ||
350 | } | ||
351 | |||
352 | .zxxNode { | ||
353 | width: 279px !important; | ||
354 | position: relative; | ||
355 | left: -80px; | ||
356 | text-indent: 80px; | ||
357 | } | ||
358 | |||
359 | .iszd { | ||
360 | .tree_item_box { | ||
361 | .zxxNode { | ||
362 | padding-left: 0; | ||
363 | left: 0; | ||
364 | } | ||
365 | } | ||
366 | } | ||
367 | |||
368 | .iszrz, | ||
369 | .isgzw { | ||
370 | left: 0px !important; | ||
371 | text-indent: 96px; | ||
372 | } | ||
373 | |||
374 | .isdz { | ||
375 | text-indent: 96px !important; | ||
376 | |||
377 | .iszrz { | ||
378 | left: 0 !important; | ||
379 | text-indent: 112px !important; | ||
380 | } | ||
381 | } | ||
382 | |||
383 | .third_layer { | ||
384 | position: relative; | ||
385 | width: calc(100% - 20px); | ||
386 | cursor: pointer; | ||
387 | padding-left: 20px; | ||
388 | } | ||
389 | |||
390 | .white_layer { | ||
391 | color: black !important; | ||
392 | } | ||
393 | |||
394 | .lpbTree-node { | ||
395 | position: absolute; | ||
396 | top: 1px; | ||
397 | left: 0; | ||
398 | } | ||
399 | |||
400 | // .second_layer::before { | ||
401 | // content: ""; | ||
402 | // position: absolute; | ||
403 | // height: 1px; | ||
404 | // width: 16px; | ||
405 | // left: 8px; | ||
406 | // top: 8px; | ||
407 | // opacity: .5; | ||
408 | // background: url('../../assets/images/rowline1.png'); | ||
409 | // background-position-y: center; | ||
410 | // } | ||
411 | // .third_layer::before { | ||
412 | // content: ""; | ||
413 | // position: absolute; | ||
414 | // height: 1px; | ||
415 | // width: 16px; | ||
416 | // left: 8px; | ||
417 | // top: 8px; | ||
418 | // opacity: .5; | ||
419 | // background: url('../../assets/images/rowline1.png'); | ||
420 | // background-position-y: center; | ||
421 | // } | ||
422 | |||
423 | // .linkLine_default::after { | ||
424 | // content: ""; | ||
425 | // position: absolute; | ||
426 | // height: 100%; | ||
427 | // width: 1px; | ||
428 | // left: 7px; | ||
429 | // top: 0px; | ||
430 | // opacity: .5; | ||
431 | // background: url('../../assets/images/colline1.png'); | ||
432 | // background-position-x: center; | ||
433 | // } | ||
434 | // .linkLine_first::after { | ||
435 | // content: ""; | ||
436 | // position: absolute; | ||
437 | // /* 为了触顶 */ | ||
438 | // top: -16px; | ||
439 | // height: calc(100% + 16px); | ||
440 | // width: 1px; | ||
441 | // left: 7px; | ||
442 | // opacity: .5; | ||
443 | // background: url('../../assets/images/colline1.png'); | ||
444 | // background-position-x: center; | ||
445 | // } | ||
446 | // // 上半截 | ||
447 | // .linkLine_half_top::after { | ||
448 | // content: ""; | ||
449 | // position: absolute; | ||
450 | // height: 23px; | ||
451 | // top: -14px; | ||
452 | // width: 1px; | ||
453 | // left: 7px; | ||
454 | // opacity: .5; | ||
455 | // background: url('../../assets/images/colline1.png'); | ||
456 | // background-position-x: center; | ||
457 | // } | ||
458 | // .linkLine_last::after { | ||
459 | // content: ""; | ||
460 | // position: absolute; | ||
461 | // height: 9px; | ||
462 | // width: 1px; | ||
463 | // left: 7px; | ||
464 | // top: 0px; | ||
465 | // opacity: .5; | ||
466 | // background: url('../../assets/images/colline1.png'); | ||
467 | // background-position-x: center; | ||
468 | // } | ||
469 | |||
470 | .reTree_default_icon { | ||
471 | // opacity: .5; | ||
472 | background-size: contain; | ||
473 | } | ||
474 | |||
475 | .reTree_collapse_icon { | ||
476 | // opacity: .5; | ||
477 | background: url("../../assets/images/arrow-down-bold.svg") no-repeat center center; | ||
478 | background-size: contain; | ||
479 | } | ||
480 | |||
481 | .reTree_expand_icon { | ||
482 | // opacity: .5; | ||
483 | background: url("../../assets/images/arrow-left-bold.svg") no-repeat center center; | ||
484 | background-size: contain; | ||
485 | } | ||
486 | |||
487 | .lpbTree_collapse_icon { | ||
488 | // opacity: .5; | ||
489 | background-size: contain; | ||
490 | } | ||
491 | |||
492 | .lpbTree_expand_icon { | ||
493 | // opacity: .5; | ||
494 | background: url("../../assets/images/arrow-left-bold.svg") no-repeat center center; | ||
495 | background-size: contain; | ||
496 | } | ||
497 | |||
498 | |||
499 | .reTree_focus_icon { | ||
500 | // opacity: .5; | ||
501 | background: url("../../assets/images/reTree_focus_.svg") no-repeat center center; | ||
502 | background-size: contain; | ||
503 | } | ||
504 | |||
505 | .qsztImg { | ||
506 | width: 16px; | ||
507 | margin-right: 6px; | ||
508 | // border-radius: 50%; height: 20px; width: 20px; display: inline-block; | ||
509 | } | ||
510 | |||
511 | .curNode { | ||
512 | >.basic_banner { | ||
513 | background: #E9F5FF; | ||
514 | box-shadow: inset 2px 0 0 0 #0C71FB; | ||
515 | color: #0C71FB; | ||
516 | } | ||
517 | } | ||
518 | |||
519 | .qsztFont { | ||
520 | text-align: center; | ||
521 | |||
522 | display: inline-block; | ||
523 | width: 16px; | ||
524 | height: 16px; | ||
525 | font-size: 12px; | ||
526 | line-height: 16px; | ||
527 | border: 1px solid; | ||
528 | border-radius: 8px; | ||
529 | } | ||
530 | |||
531 | .mr4 { | ||
532 | margin-right: 4px; | ||
533 | } | ||
534 | </style> |
src/components/lineTree/lineTree.vue
deleted
100644 → 0
1 | <template> | ||
2 | <div class="content column-start-center reTree_box" | ||
3 | :style="{ fontSize: (size || 16) + 'px', lineHeight: (size || 16) + 'px', width: (islpb ? '200' : '286') + 'px' }"> | ||
4 | <div class="column-start-center basic_layer" :class="islpb ? 'white_layer' : ''" v-for="(item, index) in formatData" | ||
5 | :key="index"> | ||
6 | <div class="row-flex-start basic_banner" :class="{ | ||
7 | active_color: item.expand && item.children.length > 0, | ||
8 | }" @click="itemClick(item)"> | ||
9 | |||
10 | <div class="layer_text nowrap" @contextmenu.prevent="openMenu($event, item)"><i class="iconfont iconguoyou"></i> | ||
11 | {{ item.mc }}</div> | ||
12 | <div class="reTree_icon" :style="{ | ||
13 | height: 10 + 'px', | ||
14 | width: 10 + 'px', | ||
15 | }" :class="{ | ||
16 | reTree_default_icon: item.children.length === 0, | ||
17 | reTree_collapse_icon: !islpb && item.expand && item.children.length > 0, | ||
18 | reTree_expand_icon: !islpb && !item.expand && item.children.length > 0, | ||
19 | lpbTree_collapse_icon: islpb && item.expand && item.children.length > 0, | ||
20 | lpbTree_expand_icon: islpb && !item.expand && item.children.length > 0, | ||
21 | }"></div> | ||
22 | </div> | ||
23 | |||
24 | <lineItem v-if="item.expand && item.children.length > 0" v-on="$listeners" @ownerMethod="ownerMethod(arguments)" | ||
25 | @changeTop="changeTop" @changeZdData="changeZdData" @changeLeft="changeLeft" @changeVisible="changeVisible" | ||
26 | @changeLpbVisible="changeLpbVisible" @changeIsZD="changeIsZD" @changeCreateVisible="changeCreateVisible" | ||
27 | @changeDzVisible="changeDzVisible" @changeGzwVisible="changeGzwVisible" :list="item.children" | ||
28 | :visible="zrzVisible" :size="size" :islpb="islpb" :formatData="formatData"></lineItem> | ||
29 | </div> | ||
30 | |||
31 | <ul v-show="zrzVisible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu"> | ||
32 | <li @click="postionToMap">定位</li> | ||
33 | <li @click="importGeo">导入图形</li> | ||
34 | <li> | ||
35 | 导出图形 | ||
36 | <ul class="contextmenu childUl"> | ||
37 | <li @click="exportText">文本</li> | ||
38 | <li @click="exportCad">CAD</li> | ||
39 | <li @click="exportExcel">Excel</li> | ||
40 | <li @click="exportToShp">ESRI Shape</li> | ||
41 | </ul> | ||
42 | </li> | ||
43 | <li @click="drsx" :class="zdQszt == '0' ? '' : 'noEdit'">导入属性</li> | ||
44 | <li @click="dcsx">导出属性</li> | ||
45 | <li v-show="!isZD">导入楼盘</li> | ||
46 | <!-- <li>重叠分析</li> --> | ||
47 | <li v-show="isZD && (zdQszt == '1' || zdQszt == '2')" @click="openCreateDialog('dzw')">添加定着物</li> | ||
48 | <li v-show="isZD && (zdQszt != '1' && zdQszt != '2')" class="noEdit">添加定着物</li> | ||
49 | <li @click="deleteByBsm()">删除</li> | ||
50 | <li @click="deleteGeoByBsm()">删除图形</li> | ||
51 | </ul> | ||
52 | <ul v-show="dzVisible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu"> | ||
53 | <li @click="openCreateDialog('zrz')">新建自然幢</li> | ||
54 | <li @click="deleteByBsm()">删除</li> | ||
55 | </ul> | ||
56 | <ul v-show="createVisible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu"> | ||
57 | <li @click="openCreateDialog">新建宗地</li> | ||
58 | </ul> | ||
59 | <!-- 构筑物删除 --> | ||
60 | <ul v-show="gzwVisible" :style="{ left: left + 'px', top: top + 'px' }" class="contextmenu"> | ||
61 | <li @click="deleteByBsm">删除</li> | ||
62 | </ul> | ||
63 | <ul v-show="lpbvisible" :style="{ left: lpbleft + 'px', top: lpbtop + 'px' }" class="contextmenu"> | ||
64 | <li v-show="zdData.type == 'zrz'" @click="openLpbDialog('ljz')">添加逻辑幢</li> | ||
65 | <li v-show="zdData.type == 'zrz' || zdData.type == 'ljz'" @click="openLpbDialog('zdy')">添加幢单元</li> | ||
66 | <li v-show="zdData.type == 'zrz' || zdData.type == 'ljz' || zdData.type == 'zdy'" @click="openLpbDialog('ch')"> | ||
67 | 添加层户</li> | ||
68 | <li v-show="zdData.type == 'ljz'" @click="deleteLjz">删除</li> | ||
69 | <li v-show="zdData.type == 'zdy'" @click="deleteZdy">删除</li> | ||
70 | </ul> | ||
71 | |||
72 | <!--@close="closeImportDialog"--> | ||
73 | <el-dialog :close-on-click-modal="false" title="导入图形" :modal="false" custom-class="importDialog" | ||
74 | :visible.sync="improtDialog" width="30%" @close="closeImportDialog"> | ||
75 | <import-geo :property-info="zdData" :timeLine="new Date().getTime()" :geo-info="currentClickZdGeo" | ||
76 | @closeImportDialog="closeImportDialog"></import-geo> | ||
77 | </el-dialog> | ||
78 | <!-- 添加定着物弹框 --> | ||
79 | <el-dialog :close-on-click-modal="false" title="新建" :modal="false" :visible.sync="dialogVisible" width="48%"> | ||
80 | <!-- <Create @closeDialog="closeDialog" :auth="true" :createZrz="createZrz" ></Create> --> | ||
81 | </el-dialog> | ||
82 | <!-- <sxdr :sxdr-visible="sxdrVisible" @close="sxdrClose" :dylx="zdData.type" :bsm="zdData.bsm"></sxdr> --> | ||
83 | </div> | ||
84 | </template> | ||
85 | <script> | ||
86 | import lineItem from "./lineItem.vue"; | ||
87 | // import { deleteZdInfoByBsm, exportShp, exportExcel, delJzdByBsm, delJzxByBsm } from "@api/zd"; | ||
88 | // import Create from "../../views/panel/create/index"; | ||
89 | import ImportGeo from './tx/importGeo' | ||
90 | port geoUtils from "@/components/lineTree/tx/js/geoUtils"; | ||
91 | rt featureUpdate from "@/libs/map/featureUpdate"; | ||
92 | ort { deleteLjz, deleteZdy } from "@api/lpcx.js" | ||
93 | exportTemJson from '@/api/json/exportTemplate.json' | ||
94 | mport sxdr from '@/components/sxdr/sxdr' | ||
95 | port default { | ||
96 | nheritAttrs: false, | ||
97 | ps: { | ||
98 | { | ||
99 | e: Array, | ||
100 | ault: () => { | ||
101 | turn[]; | ||
102 | |||
103 | : { | ||
104 | e: Number, | ||
105 | ault: 16, | ||
106 | b: { | ||
107 | e: Boolean, | ||
108 | ault: false, | ||
109 | |||
110 | omponents: { lineItem, Create, ImportGeo, sxdr }, | ||
111 | ixins: [geoUtils, featureUpdate], | ||
112 | a() { | ||
113 | rn { | ||
114 | rVisible: false, | ||
115 | electedDetail: { }, | ||
116 | timer: { }, | ||
117 | formatData: this.$store.state.treeData, | ||
118 | isible: false, | ||
119 | top: 0, | ||
120 | left: 0, | ||
121 | sZD: true, | ||
122 | ata: { }, | ||
123 | rentClickZdGeo: "", | ||
124 | mprotDialog: false, | ||
125 | ialogVisible: false, | ||
126 | 制自然幢右键菜单 | ||
127 | Visible: false, | ||
128 | 盘表 | ||
129 | visible: false, | ||
130 | top: 0, | ||
131 | left: 0, | ||
132 | /控制新建宗地菜单 | ||
133 | reateVisible: false, | ||
134 | 幢 | ||
135 | isible: false, | ||
136 | 属状态 | ||
137 | szt: null, | ||
138 | : "PROJCS[\"XADFZBX\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]", | ||
139 | ateZrz: false, | ||
140 | /构筑物 | ||
141 | zwVisible: false | ||
142 | |||
143 | ch: { | ||
144 | (n, o) { | ||
145 | s.formatData = this.preDealData(n); | ||
146 | isible(value) { | ||
147 | (value) { | ||
148 | ment.body.addEventListener("click", this.closeMenu); | ||
149 | lse { | ||
150 | cument.body.removeEventListener("click", this.closeMenu); | ||
151 | |||
152 | |||
153 | Visible(value) { | ||
154 | (value) { | ||
155 | cument.body.addEventListener("click", this.closeMenu); | ||
156 | lse { | ||
157 | cument.body.removeEventListener("click", this.closeMenu); | ||
158 | wVisible(value) { | ||
159 | f(value) { | ||
160 | document.body.addEventListener("click", this.closeMenu); | ||
161 | lse { | ||
162 | cument.body.removeEventListener("click", this.closeMenu); | ||
163 | } | ||
164 | zrzVisible(value) { | ||
165 | (value) { | ||
166 | ment.body.addEventListener("click", this.closeMenu); | ||
167 | lse { | ||
168 | document.body.removeEventListener("click", this.closeMenu); | ||
169 | reateVisible(value) { | ||
170 | (value) { | ||
171 | document.body.addEventListener("click", this.closeMenu); | ||
172 | } else { | ||
173 | document.body.removeEventListener("click", this.closeMenu); | ||
174 | } | ||
175 | } | ||
176 | ed() { | ||
177 | nextTick(() => { | ||
178 | eDealData(this.pd); | ||
179 | ndTreeItemById(["6b5af49d803f97baf06afb897de257f5"]); | ||
180 | |||
181 | { | ||
182 | .log(this.zdData, 'zdData') | ||
183 | ow.open(`api/tx/excelGeo/export?bsm=${this.zdData.bsm}&type=${this.zdData.type}`) | ||
184 | `api/tx/excelGeo/export?bsm=${this.zdData.bsm}&type=${this.zdData.type}` | ||
185 | mIF = document.createElement("iframe"); | ||
186 | src = url; | ||
187 | style.display = "none"; | ||
188 | t.body.appendChild(elemIF) | ||
189 | { | ||
190 | his.zdQszt != '0') { | ||
191 | |||
192 | drVisible = true; | ||
193 | e() { | ||
194 | sxdrVisible = false; | ||
195 | ading() { | ||
196 | his.$emit("loading") | ||
197 | |||
198 | eleteLjz() { | ||
199 | console.log("删除逻辑幢") | ||
200 | console.log(this.zdData, "zdData") | ||
201 | deleteLjz(this.zdData.bsm).then(res => { | ||
202 | if (res.success) { | ||
203 | this.loading() | ||
204 | else { | ||
205 | dy() { | ||
206 | log("删除幢单元") | ||
207 | e.log(this.zdData, "zdData") | ||
208 | teZdy(this.zdData.bsm).then(res => { | ||
209 | f(res.success) { | ||
210 | this.loading() | ||
211 | } | ||
212 | |||
213 | , | ||
214 | 变菜单数据 | ||
215 | Visible(data) { | ||
216 | s.zrzVisible = data; | ||
217 | s.lpbvisible = false; | ||
218 | dzVisible = false; | ||
219 | wVisible = false; | ||
220 | ta(data) { | ||
221 | = data; | ||
222 | zt = data.qszt; | ||
223 | (data) { | ||
224 | p = data; | ||
225 | lpbtop = data; | ||
226 | angeLeft(data) { | ||
227 | this.left = data; | ||
228 | this.lpbleft = data; | ||
229 | }, | ||
230 | changeIsZD(data) { | ||
231 | this.isZD = data; | ||
232 | }, | ||
233 | changeLpbVisible(data) { | ||
234 | this.lpbvisible = data; | ||
235 | this.zrzVisible = false; | ||
236 | this.dzVisible = false; | ||
237 | this.gzwVisible = false; | ||
238 | }, | ||
239 | changeCreateVisible(data) { | ||
240 | this.createVisible = true; | ||
241 | }, | ||
242 | //多幢 | ||
243 | changeDzVisible(data) { | ||
244 | this.dzVisible = data; | ||
245 | this.zrzVisible = false; | ||
246 | this.lpbvisible = false; | ||
247 | this.gzwVisible = false; | ||
248 | }, | ||
249 | //构筑物 | ||
250 | changeGzwVisible(data) { | ||
251 | this.gzwVisible = data; | ||
252 | this.zrzVisible = false; | ||
253 | this.lpbvisible = false; | ||
254 | this.dzVisible = false; | ||
255 | }, | ||
256 | //添加定着物 | ||
257 | openCreateDialog(type) { | ||
258 | if (type == 'zrz') { | ||
259 | this.createZrz = true; | ||
260 | } | ||
261 | console.log(this.zdData, 'this.zdData'); | ||
262 | this.dialogVisible = true; | ||
263 | this.$store.state.zdbsm = this.zdData.zdbsm; | ||
264 | if (this.zdData.type == 'dz') { | ||
265 | this.$store.state.dzbsm = this.zdData.bsm; | ||
266 | } else { | ||
267 | this.$store.state.dzbsm = ''; | ||
268 | } | ||
269 | }, | ||
270 | //关闭添加定着物弹框 | ||
271 | closeDialog() { | ||
272 | this.dialogVisible = false; | ||
273 | this.createZrz = false; | ||
274 | }, | ||
275 | preDealData(list) { | ||
276 | //楼盘表目录树没有expand属性 | ||
277 | // if(list == null){ | ||
278 | // return list | ||
279 | // }else{ | ||
280 | list.forEach((x) => { | ||
281 | if (x.expand == undefined) this.$set(x, "expand", true); | ||
282 | if (x.children && x.children.length > 0) { | ||
283 | this.preDealData(x.children); | ||
284 | } | ||
285 | }); | ||
286 | return list; | ||
287 | // } | ||
288 | }, | ||
289 | // 根据id展开树的具体项 | ||
290 | expandTreeItemById(idList) { | ||
291 | let _this = this; | ||
292 | function loopTree (list) { | ||
293 | list.forEach((x) => { | ||
294 | if (idList.includes(x.zdbsm)) { | ||
295 | _this.$set(x, "expand", true); | ||
296 | } else { | ||
297 | _this.$set(x, "expand", false); | ||
298 | } | ||
299 | if (x.children && x.children.length > 0) loopTree(x.children); | ||
300 | }); | ||
301 | return list; | ||
302 | } | ||
303 | this.formatData = loopTree(this.pd); | ||
304 | console.log(this.formatData, "this.formatData"); | ||
305 | }, | ||
306 | itemClick(item) { | ||
307 | // item.expand = item.expand == undefined? true:!item.expand; | ||
308 | this.formatData.forEach(i => { | ||
309 | if (i.bsm != item.bsm) { | ||
310 | i.expand = false | ||
311 | } else { | ||
312 | // i.expand = !item.expand | ||
313 | } | ||
314 | }) | ||
315 | item.expand = !item.expand; | ||
316 | // this.$emit("itemClick", item); | ||
317 | }, | ||
318 | //给所有权类型添加子节点 | ||
319 | ownerMethod(arr) { | ||
320 | let item = arr[0]; | ||
321 | let list = arr[1] | ||
322 | this.formatData.forEach(i => { | ||
323 | if (i.bsm == item.xzq) { | ||
324 | i.children.forEach(j => { | ||
325 | if (j.bsm == item.djq) { | ||
326 | j.children.forEach(k => { | ||
327 | if (k.bsm == item.djzq) { | ||
328 | k.children.forEach(n => { | ||
329 | if (n.dm == item.dm) { | ||
330 | this.$nextTick(() => { | ||
331 | n.children = list; | ||
332 | }) | ||
333 | } | ||
334 | }) | ||
335 | } | ||
336 | }) | ||
337 | } | ||
338 | }) | ||
339 | } | ||
340 | }); | ||
341 | this.$store.state.treeData = this.formatData; | ||
342 | }, | ||
343 | //自然幢右键点击事件 | ||
344 | openMenu(e, item) { | ||
345 | this.lpbleft = e.pageX; | ||
346 | this.lpbtop = e.pageY; | ||
347 | this.zdData = item; | ||
348 | this.changeLpbVisible(true); | ||
349 | }, | ||
350 | //关闭右键菜单 | ||
351 | closeMenu() { | ||
352 | this.zrzVisible = false; | ||
353 | this.lpbvisible = false; | ||
354 | this.dzVisible = false; | ||
355 | this.gzwVisible = false; | ||
356 | }, | ||
357 | //楼盘表右键菜单项打开父组件弹框 | ||
358 | openLpbDialog(type) { | ||
359 | this.$parent.openLpbDialog(this.zdData, type); | ||
360 | }, | ||
361 | detailDoubleClick(data) { | ||
362 | clearTimeout(this.timer); | ||
363 | this.selectedDetail = data; | ||
364 | this.$emit("detailDoubleClick", data); | ||
365 | }, | ||
366 | //右键菜单的删除 | ||
367 | deleteByBsm() { | ||
368 | let name = ''; | ||
369 | switch (this.zdData.type) { | ||
370 | case 'zd': | ||
371 | name = '宗地' | ||
372 | break; | ||
373 | case 'dz': | ||
374 | name = '多幢' | ||
375 | break; | ||
376 | case 'zrz': | ||
377 | name = '自然幢' | ||
378 | break; | ||
379 | case 'gzw': | ||
380 | name = '构筑物' | ||
381 | break; | ||
382 | |||
383 | default: | ||
384 | break; | ||
385 | } | ||
386 | this.$confirm('是否确定删除该' + name + '?', '提示', { | ||
387 | confirmButtonText: '确定', | ||
388 | cancelButtonText: '取消', | ||
389 | type: 'warning' | ||
390 | }).then(() => { | ||
391 | let params = { "bsm": this.zdData.bsm, "type": this.zdData.type }; | ||
392 | deleteZdInfoByBsm(params) | ||
393 | .then((res) => { | ||
394 | console.log(res); | ||
395 | if (res.success) { | ||
396 | this.$message({ | ||
397 | type: 'success', | ||
398 | message: '删除成功!' | ||
399 | }); | ||
400 | this.$router.push("/panel"); | ||
401 | } else { | ||
402 | this.$message({ | ||
403 | message: res.message, | ||
404 | type: "warning", | ||
405 | }); | ||
406 | } | ||
407 | }) | ||
408 | .catch((error) => { }); | ||
409 | }).catch(() => { | ||
410 | |||
411 | }); | ||
412 | var self = this; | ||
413 | var BSM = ""; | ||
414 | var type = this.zdData.type; | ||
415 | if (type == "zd") { | ||
416 | BSM = this.zdData.zdbsm; | ||
417 | } else { | ||
418 | BSM = this.zdData.bsm; | ||
419 | } | ||
420 | //删除图形相关信息 | ||
421 | var type = this.zdData.type; | ||
422 | this.queryGeoByBsm(BSM, type, function (features) { | ||
423 | if (features && features.length > 0) { | ||
424 | var layer = null; | ||
425 | if (type == 'zd') { | ||
426 | layer = self.getLayerByName("ZDJBXX"); | ||
427 | } else { | ||
428 | layer = self.getLayerByName("ZRZ"); | ||
429 | |||
430 | } | ||
431 | var featureUrl = layer.layerUrl.replace("MapServer", "FeatureServer"); | ||
432 | featureUrl += "/" + layer.id; | ||
433 | self.delGraphic(featureUrl, features[0], null); | ||
434 | } | ||
435 | }); | ||
436 | }, | ||
437 | //删除图形 | ||
438 | deleteGeoByBsm() { | ||
439 | var self = this; | ||
440 | var BSM = ""; | ||
441 | var type = this.zdData.type; | ||
442 | if (type == "zd") { | ||
443 | BSM = this.zdData.zdbsm; | ||
444 | } else { | ||
445 | BSM = this.zdData.bsm; | ||
446 | } | ||
447 | //删除图形相关信息 | ||
448 | var type = this.zdData.type; | ||
449 | this.queryGeoByBsm(BSM, type, function (features) { | ||
450 | if (features && features.length > 0 && features[0].geometry.rings.length > 0) { | ||
451 | var layer = null; | ||
452 | if (type == 'zd') { | ||
453 | layer = self.getLayerByName("ZDJBXX"); | ||
454 | } else { | ||
455 | layer = self.getLayerByName("ZRZ"); | ||
456 | } | ||
457 | var featureUrl = layer.layerUrl.replace("MapServer", "FeatureServer"); | ||
458 | featureUrl += "/" + layer.id; | ||
459 | features[0].geometry = null; | ||
460 | self.updateGraphic(featureUrl, features, function (res) { | ||
461 | if (!res.updateFeatureResults[0].error) { | ||
462 | self.$message.warning("删除成功!!!") | ||
463 | //清除图层 | ||
464 | self.clearHighlightLayer("testMap"); | ||
465 | //self.addGeoByBsm(BSM,type,"testMap"); | ||
466 | //删除界址点 界址线 | ||
467 | if (type == 'zd') { | ||
468 | self.delJzdAndJzx(BSM); | ||
469 | } | ||
470 | } | ||
471 | |||
472 | }); | ||
473 | } else { | ||
474 | self.$message.warning("暂无图形信息!!!") | ||
475 | } | ||
476 | }); | ||
477 | }, | ||
478 | //删除宗地界址点 界址线 | ||
479 | delJzdAndJzx(bsm) { | ||
480 | delJzdByBsm({ zdbsm: bsm }).then(res => { | ||
481 | if (res.success) { | ||
482 | console.log("删除界址点成功!!!"); | ||
483 | } | ||
484 | }); | ||
485 | delJzxByBsm({ zdbsm: bsm }).then(res => { | ||
486 | if (res.success) { | ||
487 | console.log("删除界址线成功!!!"); | ||
488 | } | ||
489 | }) | ||
490 | }, | ||
491 | /* | ||
492 | * 导入图形 | ||
493 | * */ | ||
494 | importGeo() { | ||
495 | var self = this; | ||
496 | var BSM = ""; | ||
497 | if (this.zdData.qszt != '0') { | ||
498 | this.$message.warning("不是临时数据,不能导入图形!!!"); | ||
499 | return; | ||
500 | } | ||
501 | var type = this.zdData.type; | ||
502 | if (type == "zd") { | ||
503 | BSM = this.zdData.zdbsm; | ||
504 | } else { | ||
505 | BSM = this.zdData.bsm; | ||
506 | } | ||
507 | //当确定导入图形是 跳转到图形界面 | ||
508 | this.queryGeoByBsm(BSM, type, function (features) { | ||
509 | if (features && features.length > 0) { | ||
510 | if (features[0].geometry && features[0].geometry.rings.length > 0) { | ||
511 | self.$confirm('该条数据有地块信息,是否继续导入?', '提示', { | ||
512 | confirmButtonText: '继续', | ||
513 | cancelButtonText: '取消', | ||
514 | type: 'warning' | ||
515 | }).then(() => { | ||
516 | self.postionToMap(); | ||
517 | self.improtDialog = true; | ||
518 | self.currentClickZdGeo = features[0]; | ||
519 | }).catch(() => { | ||
520 | self.$message({ | ||
521 | type: 'info', | ||
522 | message: '已取消' | ||
523 | }); | ||
524 | }); | ||
525 | } else { | ||
526 | self.postionToMap(); | ||
527 | self.currentClickZdGeo = features[0]; | ||
528 | self.improtDialog = true; | ||
529 | } | ||
530 | |||
531 | } else { | ||
532 | self.postionToMap(); | ||
533 | self.currentClickZdGeo = null; | ||
534 | self.improtDialog = true; | ||
535 | } | ||
536 | }); | ||
537 | }, | ||
538 | //导出文本文件 | ||
539 | exportText() { | ||
540 | var self = this; | ||
541 | var type = this.zdData.type; | ||
542 | var BSM = type == 'zd' ? this.zdData.zdbsm : this.zdData.bsm; | ||
543 | this.queryGeoByBsm(BSM, type, function (features) { | ||
544 | if (features && features.length > 0 && features[0].geometry.rings.length > 0) { | ||
545 | var data = features[0]; | ||
546 | var jzdInfo = self.craetJZPoint(data); | ||
547 | var textCotent = ""; | ||
548 | textCotent += exportTemJson.exprotTextAttr; | ||
549 | textCotent += "[地块坐标]\n"; | ||
550 | var dkMc = "", dkYt = ""; | ||
551 | if (type == 'zd') { | ||
552 | dkMc = data.attributes.ZL; | ||
553 | dkYt = data.attributes.YT; | ||
554 | } else { | ||
555 | dkMc = data.attributes.XMMC + data.attributes.JZWMC; | ||
556 | dkYt = "建设用地"; | ||
557 | } | ||
558 | textCotent += ",,," + dkMc + ",面,," + dkYt + ",,@\n"; | ||
559 | for (var i = 0; i < jzdInfo.length; i++) { | ||
560 | textCotent += jzdInfo[i].jzdh + "," + jzdInfo[i].sxh + "," + | ||
561 | jzdInfo[i].x + "," + jzdInfo[i].y + "\n" | ||
562 | } | ||
563 | self.downloadTxt(textCotent, "outPut.txt"); | ||
564 | } | ||
565 | }, { wkt: this.wkt }); | ||
566 | }, | ||
567 | //导出shp文件 | ||
568 | exportToShp() { | ||
569 | var self = this; | ||
570 | var type = this.zdData.type; | ||
571 | var BSM = type == 'zd' ? this.zdData.zdbsm : this.zdData.bsm; | ||
572 | this.queryGeoByBsm(BSM, type, function (features) { | ||
573 | if (features && features.length > 0 && features[0].geometry.rings.length > 0) { | ||
574 | var data = JSON.stringify(features[0]); | ||
575 | window.location.href = "/api/tx/shpUtils/writeShp?strObj=" + encodeURI(data) | ||
576 | /* exportShp({ | ||
577 | "strObj":encodeURI(data) | ||
578 | }).then(res => { | ||
579 | debugger | ||
580 | });*/ | ||
581 | } else { | ||
582 | self.$message.warning("暂无空间信息!!!!"); | ||
583 | } | ||
584 | }, { wkt: this.wkt }); | ||
585 | }, | ||
586 | //导出excel | ||
587 | exportExcel() { | ||
588 | var self = this; | ||
589 | var type = this.zdData.type; | ||
590 | var BSM = type == 'zd' ? this.zdData.zdbsm : this.zdData.bsm; | ||
591 | this.queryGeoByBsm(BSM, type, function (features) { | ||
592 | if (features && features.length > 0 && features[0].geometry.rings.length > 0) { | ||
593 | var data = features[0]; | ||
594 | var jzdInfo = self.craetJZPoint(data); | ||
595 | var submitData = []; | ||
596 | for (var i = 0; i < jzdInfo.length; i++) { | ||
597 | var obj = { | ||
598 | jzdHao: jzdInfo[i].jzdh, | ||
599 | x: jzdInfo[i].x, | ||
600 | y: jzdInfo[i].y, | ||
601 | diKuaiQuanHao: jzdInfo.sxh | ||
602 | } | ||
603 | submitData.push(obj); | ||
604 | } | ||
605 | exportExcel(submitData).then((res) => { | ||
606 | if (res.code == 200) { | ||
607 | var path = res.result; | ||
608 | window.location.href = "/api/tx/excelGeo/download?filePath=" + encodeURI(path); | ||
609 | } | ||
610 | }); | ||
611 | } else { | ||
612 | self.$message.warning("还没有空间信息!!!!") | ||
613 | } | ||
614 | }, { wkt: this.wkt }) | ||
615 | }, | ||
616 | //导出CAD | ||
617 | exportCad() { | ||
618 | //TODO | ||
619 | }, | ||
620 | downloadTxt(text, fileName) { | ||
621 | let element = document.createElement('a') | ||
622 | element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)) | ||
623 | element.setAttribute('download', fileName) | ||
624 | element.style.display = 'none' | ||
625 | element.click() | ||
626 | }, | ||
627 | //图形定位 | ||
628 | postionToMap() { | ||
629 | var type = this.zdData.type; | ||
630 | var BSM = type == 'zd' ? this.zdData.zdbsm : this.zdData.bsm; | ||
631 | if (this.$route.path == "/viewMap") { | ||
632 | //定位到当前空间位置 | ||
633 | // TODO 这个方法只是为了支撑功能 | ||
634 | this.postionToThisGeo(BSM, type); | ||
635 | return; | ||
636 | } | ||
637 | var curretRouterInfo = { | ||
638 | path: this.$route.path, | ||
639 | query: this.$route.query | ||
640 | } | ||
641 | sessionStorage.setItem("curretRouterInfo", JSON.stringify(curretRouterInfo)); | ||
642 | this.$router.push({ | ||
643 | path: "/viewMap", | ||
644 | query: { | ||
645 | bsm: BSM, | ||
646 | type: type | ||
647 | } | ||
648 | }); | ||
649 | }, | ||
650 | |||
651 | //关闭图形弹框 | ||
652 | closeImportDialog() { | ||
653 | this.improtDialog = false; | ||
654 | this.clearOverLayer(); | ||
655 | } | ||
656 | |||
657 | }, | ||
658 | }; | ||
659 | </script> | ||
660 | <style lang="scss" scoped> | ||
661 | .content { | ||
662 | height: 100%; | ||
663 | width: 100%; | ||
664 | overflow-y: scroll; | ||
665 | overflow-x: hidden; | ||
666 | } | ||
667 | |||
668 | .column-start-center { | ||
669 | display: flex; | ||
670 | display: -webkit-flex; | ||
671 | flex-direction: column; | ||
672 | justify-content: flex-start; | ||
673 | align-items: center; | ||
674 | |||
675 | } | ||
676 | |||
677 | .row-flex-start { | ||
678 | display: flex; | ||
679 | display: -webkit-flex; | ||
680 | flex-direction: row; | ||
681 | justify-content: flex-start; | ||
682 | align-items: center; | ||
683 | } | ||
684 | |||
685 | .nowrap { | ||
686 | overflow: hidden; | ||
687 | text-overflow: ellipsis; | ||
688 | white-space: nowrap; | ||
689 | } | ||
690 | |||
691 | .reTree_icon { | ||
692 | width: 17px; | ||
693 | height: 17px; | ||
694 | margin-right: 16px; | ||
695 | } | ||
696 | |||
697 | .basic_layer { | ||
698 | width: 100%; | ||
699 | position: relative; | ||
700 | color: #4a4a4a; | ||
701 | cursor: pointer; | ||
702 | -moz-user-select: none; | ||
703 | -o-user-select: none; | ||
704 | -khtml-user-select: none; | ||
705 | -webkit-user-select: none; | ||
706 | -ms-user-select: none; | ||
707 | user-select: none; | ||
708 | |||
709 | .layer_text { | ||
710 | flex: 1; | ||
711 | } | ||
712 | } | ||
713 | |||
714 | .white_layer { | ||
715 | color: black !important; | ||
716 | } | ||
717 | |||
718 | .first_vertical_line { | ||
719 | content: ""; | ||
720 | position: absolute; | ||
721 | width: 1px; | ||
722 | left: 6px; | ||
723 | top: 17px; | ||
724 | background: #c3c5c8; | ||
725 | } | ||
726 | |||
727 | .basic_banner { | ||
728 | position: relative; | ||
729 | width: 280px; | ||
730 | height: 40px; | ||
731 | } | ||
732 | |||
733 | .second_layer { | ||
734 | position: relative; | ||
735 | width: 100%; | ||
736 | cursor: pointer; | ||
737 | padding-left: 25px; | ||
738 | } | ||
739 | |||
740 | .second_layer::before { | ||
741 | content: ""; | ||
742 | position: absolute; | ||
743 | height: 1px; | ||
744 | width: 16px; | ||
745 | left: 9px; | ||
746 | top: 9px; | ||
747 | background: #c3c5c8; | ||
748 | } | ||
749 | |||
750 | .linkLine_default::after { | ||
751 | content: ""; | ||
752 | position: absolute; | ||
753 | height: 100%; | ||
754 | width: 1px; | ||
755 | left: 9px; | ||
756 | top: 0px; | ||
757 | background: #c3c5c8; | ||
758 | } | ||
759 | |||
760 | .linkLine_first::after { | ||
761 | content: ""; | ||
762 | position: absolute; | ||
763 | /* 为了触顶 */ | ||
764 | top: -16px; | ||
765 | height: calc(100% + 16px); | ||
766 | width: 1px; | ||
767 | left: 9px; | ||
768 | background: #c3c5c8; | ||
769 | } | ||
770 | |||
771 | // 上半截 | ||
772 | .linkLine_half_top::after { | ||
773 | content: ""; | ||
774 | position: absolute; | ||
775 | height: 23px; | ||
776 | top: -14px; | ||
777 | width: 1px; | ||
778 | left: 9px; | ||
779 | background: #c3c5c8; | ||
780 | } | ||
781 | |||
782 | .linkLine_last::after { | ||
783 | content: ""; | ||
784 | position: absolute; | ||
785 | height: 9px; | ||
786 | width: 1px; | ||
787 | left: 9px; | ||
788 | top: 0px; | ||
789 | background: #c3c5c8; | ||
790 | } | ||
791 | |||
792 | .reTree_collapse_icon { | ||
793 | background: url("../../assets/images/arrow-down-bold.svg") no-repeat center center; | ||
794 | background-size: contain; | ||
795 | } | ||
796 | |||
797 | .reTree_default_icon { | ||
798 | background: url("../../assets/images/reTree_default_.svg") no-repeat center center; | ||
799 | background-size: contain; | ||
800 | } | ||
801 | |||
802 | .reTree_expand_icon { | ||
803 | background: url("../../assets/images/arrow-left-bold.svg") no-repeat center center; | ||
804 | background-size: contain; | ||
805 | } | ||
806 | |||
807 | .lpbTree_collapse_icon { | ||
808 | // opacity: .5; | ||
809 | background: url("../../assets/images/lpbTree_expand_.svg") no-repeat center center; | ||
810 | background-size: contain; | ||
811 | } | ||
812 | |||
813 | .lpbTree_expand_icon { | ||
814 | // opacity: .5; | ||
815 | background: url("../../assets/images/lpbTree_collapse_.svg") no-repeat center center; | ||
816 | background-size: contain; | ||
817 | } | ||
818 | |||
819 | .reTree_focus_icon { | ||
820 | background: url("../../assets/images/reTree_focus_.svg") no-repeat center center; | ||
821 | background-size: contain; | ||
822 | } | ||
823 | |||
824 | /* /deep/ .importDialog{ | ||
825 | margin-top: 120px!important; | ||
826 | margin-left: 291px; | ||
827 | } */ | ||
828 | </style> |
1 | <template> | ||
2 | <div> | ||
3 | <ul class="importDiv" v-if="!resultDialog && !txtResultDialog && !dealDialog"> | ||
4 | <li> | ||
5 | <el-upload class="avatar-uploader" action="#" accept=".txt" :auto-upload="false" :show-file-list="false" | ||
6 | :on-change="txtFileChange"> | ||
7 | <!-- <el-button size="small" type="primary">点击上传</el-button>--> | ||
8 | <i class="iconfont iconshangchuan"></i> | ||
9 | <div class="title">TXT文本格式</div> | ||
10 | <div class="templateDowload"> | ||
11 | <a href="#" @click.stop="downloadFile('./fileTemplate/txttemplet.txt', 'txttemplet.txt')">TXT模板下载</a> | ||
12 | </div> | ||
13 | </el-upload> | ||
14 | </li> | ||
15 | <li> | ||
16 | <el-upload class="avatar-uploader" action="/api/tx/shpUtils/readShp" accept=".zip" :show-file-list="false" | ||
17 | :on-success="shpFileSuccess"> | ||
18 | <!--<el-button size="small" type="primary">点击上传</el-button>--> | ||
19 | <i class="iconfont iconshangchuan"></i> | ||
20 | <div class="title">ESRI Shape文件格式</div> | ||
21 | </el-upload> | ||
22 | </li> | ||
23 | <li> | ||
24 | <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/" accept=".dwg,.dxf" | ||
25 | :show-file-list="false" :on-success="cadFileSuccess"> | ||
26 | <!-- <el-button size="small" type="primary">点击上传</el-button>--> | ||
27 | <i class="iconfont iconshangchuan"></i> | ||
28 | <div class="title">CAD文件</div> | ||
29 | </el-upload> | ||
30 | </li> | ||
31 | <li> | ||
32 | <el-upload class="avatar-uploader" action="/api/tx/excelGeo/readExcel" accept=".xls,.xlsx" | ||
33 | :show-file-list="false" :on-success="excelFileSuccess"> | ||
34 | <!--<el-button size="small" type="primary">点击上传</el-button>--> | ||
35 | <i class="iconfont iconshangchuan"></i> | ||
36 | <div class="title">Excel文件格式</div> | ||
37 | <div class="templateDowload"> | ||
38 | <a href="#" | ||
39 | @click.stop="downloadFile('./fileTemplate/exceltemplet.xlsx', 'exceltemplet.xlsx')">Excel模板下载</a> | ||
40 | </div> | ||
41 | </el-upload> | ||
42 | </li> | ||
43 | </ul> | ||
44 | <div v-if="resultDialog"> | ||
45 | <el-form :model="zdForm" ref="zdCheckForm" label-width="100px" size="small" @submit.native.prevent | ||
46 | class="demo-ruleForm"> | ||
47 | <el-form-item label="宗地" prop="zdBsm" :rules="[ | ||
48 | { required: true, message: '请选择宗地', trigger: 'change' }, | ||
49 | ]"> | ||
50 | <el-select v-model="zdForm.zdBsm" filterable placeholder="请选择" @change="zdChange"> | ||
51 | <el-option v-for="item in resultData" :key="item.objectid" :label="item.XMMC" :value="item"> | ||
52 | </el-option> | ||
53 | </el-select> | ||
54 | </el-form-item> | ||
55 | <el-form-item> | ||
56 | <el-button type="primary" @click="submitForm('zdCheckForm')">导入</el-button> | ||
57 | <el-button @click="cancel('zdCheckForm')">取消</el-button> | ||
58 | </el-form-item> | ||
59 | </el-form> | ||
60 | </div> | ||
61 | <div v-if="txtResultDialog"> | ||
62 | <el-form :model="txtZd" ref="txtZdForm" label-width="100px" size="small" @submit.native.prevent | ||
63 | class="demo-ruleForm"> | ||
64 | <el-form-item label="地块名称" prop="name" :rules="[ | ||
65 | { required: true, message: '请选择地块', trigger: 'change' }, | ||
66 | ]"> | ||
67 | <el-select v-model="txtZd.name" filterable placeholder="请选择" @change="txtChange"> | ||
68 | <el-option v-for="(item, index) in txtResult" :key="index" :label="item.attributes.name" | ||
69 | :value="item.attributes.name"> | ||
70 | </el-option> | ||
71 | </el-select> | ||
72 | </el-form-item> | ||
73 | <el-form-item> | ||
74 | <el-button type="primary" @click="submitTxtForm('txtZdForm')">导入</el-button> | ||
75 | <el-button @click="cancelTxtForm('txtZdForm')">取消</el-button> | ||
76 | </el-form-item> | ||
77 | </el-form> | ||
78 | </div> | ||
79 | <div v-if="dealDialog"> | ||
80 | <el-form :model="dealForm" ref="dealForm" label-width="100px" size="small" @submit.native.prevent | ||
81 | class="demo-ruleForm"> | ||
82 | <el-form-item label="处理方法" prop="method" :rules="[ | ||
83 | { required: true, message: '请选择', trigger: 'change' }, | ||
84 | ]"> | ||
85 | <el-select v-model="dealForm.method" filterable placeholder="请选择"> | ||
86 | <el-option v-for="(item, index) in dealMethods" :key="index" :label="item.label" :value="item.value"> | ||
87 | </el-option> | ||
88 | </el-select> | ||
89 | </el-form-item> | ||
90 | <el-form-item> | ||
91 | <el-button type="primary" @click="submitDealForm('dealForm')">确定</el-button> | ||
92 | <el-button @click="cancelDealForm('dealForm')">取消</el-button> | ||
93 | </el-form-item> | ||
94 | </el-form> | ||
95 | </div> | ||
96 | </div> | ||
97 | </template> | ||
98 | <script> | ||
99 | import geoUtils from "@components/lineTree/tx/js/geoUtils"; | ||
100 | import featureUpdate from "@libs/map/featureUpdate"; | ||
101 | // import { addjzd, addjzx } from "@/api/zd" | ||
102 | export default { | ||
103 | props: { | ||
104 | propertyInfo: { | ||
105 | type: Object, | ||
106 | default: null | ||
107 | }, | ||
108 | geoInfo: { | ||
109 | type: Object, | ||
110 | default: null | ||
111 | }, | ||
112 | timeLine: { | ||
113 | type: Number, | ||
114 | default: null | ||
115 | } | ||
116 | }, | ||
117 | mixins: [geoUtils, featureUpdate], | ||
118 | data () { | ||
119 | return { | ||
120 | resultData: [], | ||
121 | resultDialog: false, | ||
122 | zdForm: { | ||
123 | zdBsm: "" | ||
124 | }, | ||
125 | currentClickZd: null, | ||
126 | txtResult: [], | ||
127 | txtResultDialog: null, | ||
128 | txtZd: { | ||
129 | name: "" | ||
130 | }, | ||
131 | overResults: [],//与导入宗地重叠的地块 | ||
132 | currntDealGraphic: null, | ||
133 | dealMethods: [{ | ||
134 | label: "不做处理", | ||
135 | value: "1" | ||
136 | }, { | ||
137 | label: "删除叠加部分", | ||
138 | value: "2" | ||
139 | }, { | ||
140 | label: "删除已重叠部分", | ||
141 | value: "3" | ||
142 | }, { | ||
143 | label: "删除原图形", | ||
144 | value: "4" | ||
145 | }], | ||
146 | dealDialog: false, | ||
147 | dealForm: { | ||
148 | method: "" | ||
149 | } | ||
150 | } | ||
151 | }, | ||
152 | watch: { | ||
153 | timeLine (newValue, oldValue) { | ||
154 | this.resultDialog = false; | ||
155 | this.txtResultDialog = false; | ||
156 | this.dealDialog = false; | ||
157 | } | ||
158 | }, | ||
159 | methods: { | ||
160 | /** | ||
161 | * @description: txtFileChange | ||
162 | * @param {*} file | ||
163 | * @param {*} fileList | ||
164 | * @author: renchao | ||
165 | */ | ||
166 | txtFileChange (file, fileList) { | ||
167 | var self = this; | ||
168 | var fileReader = new FileReader(); | ||
169 | fileReader.readAsText(file.raw); | ||
170 | fileReader.onload = function (res) { | ||
171 | var content = this.result; | ||
172 | if (!content || content.length == 0) { | ||
173 | self.$message.warning("文件内容为空!!!"); | ||
174 | return; | ||
175 | } | ||
176 | self.analysisTextFile(content); | ||
177 | } | ||
178 | }, | ||
179 | /** | ||
180 | * @description: analysisTextFile | ||
181 | * @param {*} content | ||
182 | * @author: renchao | ||
183 | */ | ||
184 | analysisTextFile (content) { | ||
185 | var index = content.indexOf("[地块坐标]"), | ||
186 | geoInfos = content.substr(index), | ||
187 | geoList = geoInfos.split("\n"); | ||
188 | if (geoList.length < 1) { | ||
189 | this.$message.warning("文本内容格式有误,请效验文本内容格式!!!"); | ||
190 | return; | ||
191 | } | ||
192 | //this.$emit("closeImportDialog"); | ||
193 | var features = [], attributes = {}, points = [], j = 1; | ||
194 | for (var i = 1; i < geoList.length; i++) { | ||
195 | var rowData = geoList[i]; | ||
196 | if ((rowData.indexOf("J") != -1 && rowData.indexOf("J") == 0) || (rowData.indexOf("j") != -1 && rowData.indexOf("j") == 0)) { | ||
197 | //解析坐标点信息 | ||
198 | var pointInfo = rowData.split(","); | ||
199 | var point = [parseFloat(pointInfo[2]), parseFloat(pointInfo[3])]; | ||
200 | points.push(point); | ||
201 | } else { | ||
202 | if (points.length > 0) { | ||
203 | var graphic = { | ||
204 | attributes: JSON.parse(JSON.stringify(attributes)), | ||
205 | geometry: { | ||
206 | rings: [points] | ||
207 | } | ||
208 | } | ||
209 | features.push(graphic); | ||
210 | } | ||
211 | //新建一个信息 坐标名称 类型 | ||
212 | attributes = {}; | ||
213 | points = [] | ||
214 | var info = rowData.split(","); | ||
215 | if (info[3] || info[3] == 'null') { | ||
216 | attributes.name = '地块' + j; | ||
217 | j++ | ||
218 | } else { | ||
219 | attributes.name = info[3]; | ||
220 | } | ||
221 | } | ||
222 | } | ||
223 | if (points.length > 0) { | ||
224 | var graphic = { | ||
225 | attributes: JSON.parse(JSON.stringify(attributes)), | ||
226 | geometry: { | ||
227 | rings: [[points.concat()]] | ||
228 | } | ||
229 | } | ||
230 | features.push(graphic); | ||
231 | } | ||
232 | //新建一个信息 坐标名称 类型 | ||
233 | attributes = {}; | ||
234 | points = [] | ||
235 | this.txtResult = features; | ||
236 | this.txtZd.name = ""; | ||
237 | this.txtResultDialog = true; | ||
238 | }, | ||
239 | /** | ||
240 | * @description: shpFileSuccess | ||
241 | * @param {*} response | ||
242 | * @param {*} file | ||
243 | * @param {*} fileList | ||
244 | * @author: renchao | ||
245 | */ | ||
246 | shpFileSuccess (response, file, fileList) { | ||
247 | var self = this; | ||
248 | if (response.success) { | ||
249 | this.resultData = response.result; | ||
250 | this.resultDialog = true; | ||
251 | } else { | ||
252 | this.$message.warning(response.message); | ||
253 | } | ||
254 | }, | ||
255 | /** | ||
256 | * @description: cadFileSuccess | ||
257 | * @param {*} response | ||
258 | * @param {*} file | ||
259 | * @param {*} fileList | ||
260 | * @author: renchao | ||
261 | */ | ||
262 | cadFileSuccess (response, file, fileList) { | ||
263 | |||
264 | }, | ||
265 | /** | ||
266 | * @description: excelFileSuccess | ||
267 | * @param {*} response | ||
268 | * @param {*} file | ||
269 | * @param {*} fileList | ||
270 | * @author: renchao | ||
271 | */ | ||
272 | excelFileSuccess (response, file, fileList) { | ||
273 | var self = this; | ||
274 | if (response.success) { | ||
275 | var result = response.result; | ||
276 | var points = []; | ||
277 | for (var i = 0; i < result.length; i++) { | ||
278 | var point = []; | ||
279 | point[0] = parseFloat(result[i].x); | ||
280 | point[1] = parseFloat(result[i].y); | ||
281 | points.push(point); | ||
282 | } | ||
283 | var wkt = "PROJCS[\"XADFZBX\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"; | ||
284 | var geometry = { | ||
285 | rings: [points], | ||
286 | spatialReference: { | ||
287 | wkt: wkt | ||
288 | }, | ||
289 | type: "polygon" | ||
290 | } | ||
291 | var graphic = { | ||
292 | attributes: null, | ||
293 | geometry: geometry | ||
294 | } | ||
295 | self.checkGeo(graphic); | ||
296 | } else { | ||
297 | this.$message.warning(response.message); | ||
298 | } | ||
299 | }, | ||
300 | /** | ||
301 | * @description: 文本文档导入 | ||
302 | * @param {*} formName | ||
303 | * @author: renchao | ||
304 | */ | ||
305 | submitTxtForm (formName) { | ||
306 | var self = this; | ||
307 | this.$refs[formName].validate((valid) => { | ||
308 | if (valid) { | ||
309 | var wkt = "PROJCS[\"XADFZBX\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"; | ||
310 | var graphics = self.txtResult.filter(item => { | ||
311 | return item.attributes.name == self.txtZd.name; | ||
312 | }) | ||
313 | var graphic = graphics[0]; | ||
314 | graphic.geometry.type = "polygon"; | ||
315 | graphic.geometry.spatialReference = { | ||
316 | wkt: wkt | ||
317 | } | ||
318 | self.checkGeo(graphic); | ||
319 | } else { | ||
320 | console.log('error submit!!'); | ||
321 | return false; | ||
322 | } | ||
323 | }) | ||
324 | }, | ||
325 | /** | ||
326 | * @description: txtChange | ||
327 | * @param {*} value | ||
328 | * @author: renchao | ||
329 | */ | ||
330 | txtChange (value) { | ||
331 | var wkt = "PROJCS[\"XADFZBX\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"; | ||
332 | var graphics = this.txtResult.filter(item => { | ||
333 | return item.attributes.name == value; | ||
334 | }) | ||
335 | var graphic = graphics[0]; | ||
336 | graphic.geometry.type = "polygon"; | ||
337 | graphic.geometry.spatialReference = { | ||
338 | wkt: wkt | ||
339 | } | ||
340 | this.addOverLayer(graphic.geometry, []); | ||
341 | }, | ||
342 | /** | ||
343 | * @description: 校验空间完整性 | ||
344 | * @param {*} graphic | ||
345 | * @author: renchao | ||
346 | */ | ||
347 | checkGeo (graphic) { | ||
348 | var self = this; | ||
349 | //校验完整性 直接调用空间方法 提交空间表 | ||
350 | self.geoJoint(graphic.geometry, function (isJoint, message) { | ||
351 | if (isJoint) { | ||
352 | self.$message.warning(message) | ||
353 | return; | ||
354 | } else { | ||
355 | var type = self.propertyInfo.type; | ||
356 | if (type == 'zd') { | ||
357 | //重叠分析 | ||
358 | self.zdOverAnalys(self.propertyInfo.zdbsm, graphic, function (flag, results) { | ||
359 | if (flag) { | ||
360 | self.$message.warning("导入的宗地与其他宗地有重叠,请处理!!"); | ||
361 | self.dealOverData(results, graphic); | ||
362 | } else { | ||
363 | self.saveZd(graphic); | ||
364 | } | ||
365 | }); | ||
366 | } else { | ||
367 | self.zrzOverAnalys(self.propertyInfo.bsm, graphic, function (flag, mes) { | ||
368 | if (flag) { | ||
369 | self.$message.warning(mes); | ||
370 | return; | ||
371 | } else { | ||
372 | self.saveZRZ(graphic); | ||
373 | } | ||
374 | }); | ||
375 | } | ||
376 | } | ||
377 | }); | ||
378 | }, | ||
379 | /** | ||
380 | * @description: 选择处理方式 | ||
381 | * @param {*} formName | ||
382 | * @author: renchao | ||
383 | */ | ||
384 | submitDealForm (formName) { | ||
385 | var self = this; | ||
386 | this.$refs[formName].validate((valid) => { | ||
387 | if (valid) { | ||
388 | //选择处理方式 | ||
389 | var value = self.dealForm.method; | ||
390 | self.currntDealGraphic.attributes = {}; | ||
391 | switch (value) { | ||
392 | case '1': self.currntDealGraphic.attributes.BGZT = 1; self.saveZd(self.currntDealGraphic); break; | ||
393 | case "2": self.getDifference(self.currntDealGraphic, self.overResults, self.delOverGeo); break; | ||
394 | case "3": self.getResultsDif(self.overResults, self.currntDealGraphic, self.delOtherGeo, true); break; | ||
395 | case "4": self.getResultsDif(self.overResults, self.currntDealGraphic, self.delOtherGeo, false); break; | ||
396 | } | ||
397 | } else { | ||
398 | console.log('error submit!!'); | ||
399 | return false; | ||
400 | } | ||
401 | }) | ||
402 | }, | ||
403 | /** | ||
404 | * @description: 裁剪自己在保存 | ||
405 | * @param {*} geometry | ||
406 | * @author: renchao | ||
407 | */ | ||
408 | delOverGeo (geometry) { | ||
409 | if (!this.currntDealGraphic.attributes) { | ||
410 | this.currntDealGraphic.attributes = {}; | ||
411 | } | ||
412 | this.currntDealGraphic.attributes.BGZT = 2; | ||
413 | if (geometry == null) { | ||
414 | this.$message.warning("完全重叠,已删除图形信息!!!") | ||
415 | this.currntDealGraphic.geometry = geometry; | ||
416 | } | ||
417 | this.saveZd(this.currntDealGraphic); | ||
418 | }, | ||
419 | /** | ||
420 | * @description: 裁剪别的在保存 | ||
421 | * @param {*} results | ||
422 | * @author: renchao | ||
423 | */ | ||
424 | delOtherGeo (results) { | ||
425 | //执行编辑操作 | ||
426 | var layer = this.getLayerByName("ZDJBXX"); | ||
427 | var featureUrl = layer.layerUrl.replace("MapServer", "FeatureServer"); | ||
428 | featureUrl += "/" + layer.id; | ||
429 | this.updateGraphic(featureUrl, results); | ||
430 | this.saveZd(this.currntDealGraphic); | ||
431 | }, | ||
432 | /** | ||
433 | * @description: 下载文档模板 | ||
434 | * @param {*} url | ||
435 | * @param {*} fileName | ||
436 | * @author: renchao | ||
437 | */ | ||
438 | downloadFile (url, fileName) { | ||
439 | let link = document.createElement("a"); | ||
440 | link.style.display = "none"; | ||
441 | link.href = url; | ||
442 | link.setAttribute("download", fileName); | ||
443 | document.body.appendChild(link); | ||
444 | link.click(); | ||
445 | document.body.removeChild(link); | ||
446 | }, | ||
447 | /** | ||
448 | * @description: 导入 | ||
449 | * @param {*} fileName | ||
450 | * @author: renchao | ||
451 | */ | ||
452 | submitForm (formName) { | ||
453 | //校验完整性 直接调用空间方法 提交空间表 | ||
454 | var self = this; | ||
455 | this.$refs[formName].validate((valid) => { | ||
456 | if (valid) { | ||
457 | var geometry = self.parseWktToArc(self.currentClickZd.wkt); | ||
458 | geometry.type = "polygon"; | ||
459 | var wkt = "PROJCS[\"XADFZBX\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"; | ||
460 | geometry.spatialReference = { | ||
461 | wkt: wkt | ||
462 | } | ||
463 | var graphic = { | ||
464 | attributes: self.currentClickZd, | ||
465 | geometry: geometry | ||
466 | } | ||
467 | self.checkGeo(graphic); | ||
468 | } else { | ||
469 | console.log('error submit!!'); | ||
470 | return false; | ||
471 | } | ||
472 | }); | ||
473 | }, | ||
474 | /** | ||
475 | * @description: dealOverData | ||
476 | * @param {*} results | ||
477 | * @param {*} graphic | ||
478 | * @author: renchao | ||
479 | */ | ||
480 | dealOverData (results, graphic) { | ||
481 | this.overResults = results; | ||
482 | this.currntDealGraphic = graphic; | ||
483 | this.resultDialog = false; | ||
484 | this.txtResultDialog = false; | ||
485 | this.dealDialog = true; | ||
486 | }, | ||
487 | /** | ||
488 | * @description: saveZd | ||
489 | * @param {*} graphic | ||
490 | * @author: renchao | ||
491 | */ | ||
492 | saveZd (graphic) { | ||
493 | var self = this; | ||
494 | var points = null, lines = null, | ||
495 | layer = self.getLayerByName("ZDJBXX"); | ||
496 | var featureUrl = layer.layerUrl.replace("MapServer", "FeatureServer"); | ||
497 | featureUrl += "/" + layer.id; | ||
498 | if (self.geoInfo) { | ||
499 | //替换 生成图像 高亮 | ||
500 | if (graphic.attributes && graphic.attributes.BGZT) { | ||
501 | self.geoInfo.attributes.BGZT = graphic.attributes.BGZT; | ||
502 | } | ||
503 | self.geoInfo.attributes.BSM = this.propertyInfo.zdbsm; | ||
504 | self.geoInfo.attributes.ZDDM = this.propertyInfo.zddm; | ||
505 | self.geoInfo.attributes.XMMC = this.propertyInfo.mc; | ||
506 | graphic.attributes = self.geoInfo.attributes; | ||
507 | self.updateGraphic(featureUrl, graphic, function (res) { | ||
508 | //保存成功之后生成界址点 界址线 | ||
509 | //生成坐标点 | ||
510 | //跳转至map界面updateResults | ||
511 | var updResult = res.updateFeatureResults[0]; | ||
512 | if (updResult.objectId) { | ||
513 | var OBJECTID = updResult.objectId; | ||
514 | if (graphic.geometry) { | ||
515 | points = self.craetJZPoint(graphic); | ||
516 | self.savejzd(points) | ||
517 | //生成边框线 | ||
518 | self.createJZLine(graphic, function (res) { | ||
519 | lines = res; | ||
520 | self.saveJzx(lines); | ||
521 | }); | ||
522 | } | ||
523 | self.$message.success("保存成功!!!"); | ||
524 | self.goMap(); | ||
525 | } | ||
526 | }); | ||
527 | } else { | ||
528 | //生成图像 保存 | ||
529 | var attributes = { | ||
530 | BSM: this.propertyInfo.zdbsm, | ||
531 | ZDDM: this.propertyInfo.zddm, | ||
532 | XMMC: this.propertyInfo.mc | ||
533 | }; | ||
534 | if (graphic.attributes && graphic.attributes.BGZT) { | ||
535 | attributes.BGZT = graphic.attributes.BGZT; | ||
536 | } | ||
537 | graphic.attributes = attributes; | ||
538 | self.addGraphic(featureUrl, graphic, function (res) { | ||
539 | var addRresult = res.addFeatureResults[0]; | ||
540 | if (addRresult.objectId) { | ||
541 | var OBJECTID = addRresult.objectId; | ||
542 | if (graphic.geometry) { | ||
543 | points = self.craetJZPoint(graphic); | ||
544 | self.savejzd(points) | ||
545 | //生成边框线 | ||
546 | self.createJZLine(graphic, function (res) { | ||
547 | lines = res; | ||
548 | self.saveJzx(lines); | ||
549 | }); | ||
550 | } | ||
551 | self.$message.success("保存成功!!!"); | ||
552 | self.goMap(); | ||
553 | } | ||
554 | }); | ||
555 | } | ||
556 | }, | ||
557 | /** | ||
558 | * @description: savejzd | ||
559 | * @param {*} points | ||
560 | * @author: renchao | ||
561 | */ | ||
562 | savejzd (points) { | ||
563 | var savePoints = [] | ||
564 | for (var i = 0; i < points.length; i++) { | ||
565 | var obj = { | ||
566 | glbsm: this.propertyInfo.zdbsm, | ||
567 | jzdh: points[i].jzdh, | ||
568 | sxh: points[i].sxh, | ||
569 | xzbz: points[i].x, | ||
570 | yzbz: points[i].y, | ||
571 | jblx: "", | ||
572 | jzdlx: "" | ||
573 | } | ||
574 | savePoints.push(obj); | ||
575 | } | ||
576 | //保存矢量数据表 | ||
577 | // addjzd(savePoints).then(res => { | ||
578 | // if (res.succcess) { | ||
579 | // console.log("界址点保存成成功!!!"); | ||
580 | // } | ||
581 | // }); | ||
582 | //保存空间数据 | ||
583 | |||
584 | }, | ||
585 | /** | ||
586 | * @description: saveJzx | ||
587 | * @param {*} lines | ||
588 | * @author: renchao | ||
589 | */ | ||
590 | saveJzx (lines) { | ||
591 | var jzxLines = []; | ||
592 | for (var i = 0; i < lines.length; i++) { | ||
593 | var obj = { | ||
594 | glbsm: this.propertyInfo.zdbsm, | ||
595 | qsd: lines[i].startPoint, | ||
596 | zzd: lines[i].endPoint, | ||
597 | jzjj: lines[i].distance, | ||
598 | qdh: lines[i].qdh, | ||
599 | zdh: lines[i].zdh, | ||
600 | jzxlx: "", | ||
601 | jzxwz: "", | ||
602 | jxxz: "", | ||
603 | sm: "" | ||
604 | } | ||
605 | jzxLines.push(obj); | ||
606 | } | ||
607 | //保存矢量数据表 | ||
608 | // addjzx(jzxLines).then(res => { | ||
609 | // if (res.success) { | ||
610 | // //触发查询界址线 | ||
611 | // console.log("界址线保存成功!!!!!"); | ||
612 | // } | ||
613 | // }); | ||
614 | //保存空间数据表 | ||
615 | }, | ||
616 | /** | ||
617 | * @description: saveZRZ | ||
618 | * @param {*} graphic | ||
619 | * @author: renchao | ||
620 | */ | ||
621 | saveZRZ (graphic) { | ||
622 | var self = this; | ||
623 | var layer = null; | ||
624 | layer = self.getLayerByName("ZRZ"); | ||
625 | var featureUrl = layer.layerUrl.replace("MapServer", "FeatureServer"); | ||
626 | featureUrl += "/" + layer.id; | ||
627 | if (self.geoInfo) { | ||
628 | self.geoInfo.BSM = self.propertyInfo.bsm; | ||
629 | graphic.attributes = self.geoInfo.attributes; | ||
630 | //替换 生成图像 高亮 | ||
631 | self.updateGraphic(featureUrl, graphic, function (res) { | ||
632 | var addRresult = res.updateFeatureResults[0]; | ||
633 | if (addRresult.objectId) { | ||
634 | self.$message.success("保存成功!!!"); | ||
635 | self.goMap(); | ||
636 | } | ||
637 | }); | ||
638 | } else { | ||
639 | var attributes = { | ||
640 | BSM: this.propertyInfo.bsm, | ||
641 | XMMC: this.propertyInfo.xmmc | ||
642 | } | ||
643 | graphic.attributes = attributes; | ||
644 | //生成图像 保存 | ||
645 | self.addGraphic(featureUrl, graphic, function (res) { | ||
646 | var addRresult = res.addFeatureResults[0]; | ||
647 | if (addRresult.objectId) { | ||
648 | self.$message.success("保存成功!!!"); | ||
649 | self.goMap(); | ||
650 | } | ||
651 | }); | ||
652 | } | ||
653 | }, | ||
654 | /** | ||
655 | * @description: 操作成功不需要跳转地图 (直接定位新导入的图形) | ||
656 | * @author: renchao | ||
657 | */ | ||
658 | goMap () { | ||
659 | var bsm = "", type = this.propertyInfo.type; | ||
660 | if (type == "zd") { | ||
661 | bsm = this.propertyInfo.zdbsm; | ||
662 | } else { | ||
663 | bsm = this.propertyInfo.bsm; | ||
664 | } | ||
665 | this.resultDialog = false; | ||
666 | this.txtResultDialog = false; | ||
667 | this.dealDialog = false; | ||
668 | this.$emit("closeImportDialog"); | ||
669 | //TODO 定位当前新导入的图形 | ||
670 | this.addGeoByBsm(bsm, type, "testMap"); | ||
671 | }, | ||
672 | /** | ||
673 | * @description: 取消 | ||
674 | * @author: renchao | ||
675 | */ | ||
676 | cancel () { | ||
677 | this.zdForm.zdBsm = ""; | ||
678 | this.currentClickZd = null; | ||
679 | this.resultDialog = false; | ||
680 | // 清空当前图层上显示的图形 | ||
681 | this.clearOverLayer(); | ||
682 | }, | ||
683 | /** | ||
684 | * @description: 取消文本选择的弹出框 | ||
685 | * @author: renchao | ||
686 | */ | ||
687 | cancelTxtForm () { | ||
688 | this.txtZd.name = ""; | ||
689 | this.txtResultDialog = false; | ||
690 | // 清空当前图层上显示的图形 | ||
691 | this.clearOverLayer(); | ||
692 | }, | ||
693 | /** | ||
694 | * @description: 取消导入处理的结果 | ||
695 | * @author: renchao | ||
696 | */ | ||
697 | cancelDealForm () { | ||
698 | this.dealForm.method = ""; | ||
699 | this.dealDialog = false; | ||
700 | this.overResults = []; | ||
701 | // 清空当前图层上显示的图形 | ||
702 | this.clearOverLayer(); | ||
703 | }, | ||
704 | /** | ||
705 | * @description: 宗地选择发生改变 | ||
706 | * @author: renchao | ||
707 | */ | ||
708 | zdChange (value) { | ||
709 | this.zdForm.zdBsm = value.XMMC; | ||
710 | this.currentClickZd = value; | ||
711 | var geometry = this.parseWktToArc(this.currentClickZd.wkt); | ||
712 | geometry.type = "polygon"; | ||
713 | var wkt = "PROJCS[\"XADFZBX\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"; | ||
714 | geometry.spatialReference = { | ||
715 | wkt: wkt | ||
716 | } | ||
717 | this.addOverLayer(geometry, []); | ||
718 | } | ||
719 | } | ||
720 | } | ||
721 | </script> | ||
722 | <style scoped lang="scss"> | ||
723 | .importDiv { | ||
724 | display: flex; | ||
725 | justify-content: center; | ||
726 | align-content: center; | ||
727 | |||
728 | li { | ||
729 | margin: 5px; | ||
730 | width: 50%; | ||
731 | |||
732 | .title { | ||
733 | line-height: 1; | ||
734 | margin-top: -57px; | ||
735 | font-size: 14px; | ||
736 | } | ||
737 | |||
738 | .templateDowload { | ||
739 | line-height: 1; | ||
740 | margin-top: 7px; | ||
741 | |||
742 | a { | ||
743 | color: #409eff; | ||
744 | } | ||
745 | } | ||
746 | } | ||
747 | } | ||
748 | |||
749 | /deep/ .avatar-uploader .el-upload { | ||
750 | border: 1px dashed #d9d9d9; | ||
751 | border-radius: 6px; | ||
752 | cursor: pointer; | ||
753 | position: relative; | ||
754 | overflow: hidden; | ||
755 | width: 100%; | ||
756 | height: 178px; | ||
757 | line-height: 178px; | ||
758 | } | ||
759 | |||
760 | /deep/ .avatar-uploader .el-upload:hover { | ||
761 | border-color: #409EFF; | ||
762 | } | ||
763 | |||
764 | /deep/ .iconfont { | ||
765 | font-size: 20px; | ||
766 | color: #8c939d; | ||
767 | width: 100%; | ||
768 | text-align: center; | ||
769 | } | ||
770 | </style> |
1 | /* | ||
2 | * @Description: | ||
3 | * @Autor: renchao | ||
4 | * @LastEditTime: 2023-05-17 10:24:24 | ||
5 | */ | ||
6 | export default { | ||
7 | methods:{ | ||
8 | /** | ||
9 | * @description: downloadTxt | ||
10 | * @param {*} text | ||
11 | * @param {*} fileName | ||
12 | * @author: renchao | ||
13 | */ | ||
14 | downloadTxt(text, fileName){ | ||
15 | let element = document.createElement('a') | ||
16 | element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)) | ||
17 | element.setAttribute('download', fileName) | ||
18 | element.style.display = 'none' | ||
19 | element.click() | ||
20 | }, | ||
21 | /** | ||
22 | * @description: createTextContent | ||
23 | * @param {*} jzdInfo | ||
24 | * @author: renchao | ||
25 | */ | ||
26 | createTextContent(jzdInfo){ | ||
27 | var textContent = ""; | ||
28 | for(var i = 0;i < jzdInfo.length;i++){ | ||
29 | textContent += jzdInfo[i].jzdh +","+jzdInfo[i].sxh+"," + | ||
30 | jzdInfo[i].x+","+jzdInfo[i].y+"\n" | ||
31 | } | ||
32 | return textContent; | ||
33 | }, | ||
34 | |||
35 | } | ||
36 | } |
1 | /* | ||
2 | * @Description: 图形相关的操作 js | ||
3 | * @Autor: renchao | ||
4 | * @LastEditTime: 2023-05-17 10:24:24 | ||
5 | */ | ||
6 | import layers from '@/api/json/layers.json' | ||
7 | import queryUtils from "@/utils/map/queryUtils"; | ||
8 | import identifyUtils from '@/utils/map/IdentifyUtils' | ||
9 | import { loadModules } from "esri-loader" | ||
10 | import featureUpdate from "@/utils/map/featureUpdate"; | ||
11 | import arcgisParser from 'terraformer-arcgis-parser' | ||
12 | import wktParse from 'terraformer-wkt-parser' | ||
13 | import { maps } from '@/utils/map/mapUtils' | ||
14 | import graphicSymbol from '@/api/json/graphicSymbol.json' | ||
15 | |||
16 | export default { | ||
17 | data () { | ||
18 | return { | ||
19 | |||
20 | } | ||
21 | }, | ||
22 | methods: { | ||
23 | /** | ||
24 | * @description: getLayerByName | ||
25 | * @param {*} name | ||
26 | * @author: renchao | ||
27 | */ | ||
28 | getLayerByName (name) { | ||
29 | for (var i = 0; i < layers.length; i++) { | ||
30 | if (layers[i].layerName == name) { | ||
31 | return layers[i]; | ||
32 | } | ||
33 | } | ||
34 | return null; | ||
35 | }, | ||
36 | /** | ||
37 | * @description: queryGeoByBsm | ||
38 | * @param {*} name | ||
39 | * @param {*} type | ||
40 | * @param {*} callBackFunction | ||
41 | * @param {*} outSpatialReference | ||
42 | * @author: renchao | ||
43 | */ | ||
44 | queryGeoByBsm (bsm, type, callBackFunction, outSpatialReference) { | ||
45 | var layer = null; | ||
46 | if (type == 'zd') { | ||
47 | layer = this.getLayerByName("ZDJBXX"); | ||
48 | } else if (type == 'zrz') { | ||
49 | layer = this.getLayerByName("ZRZ"); | ||
50 | } else { | ||
51 | console.log("未定义类型!!"); | ||
52 | return; | ||
53 | } | ||
54 | if (!layer) { | ||
55 | console.log("没有找到图层,不能查询"); | ||
56 | return; | ||
57 | } | ||
58 | queryUtils.methods.queryByWhere(layer.layerUrl + "/" + layer.id, { "BSM": bsm }, null, true, null, outSpatialReference, function (res) { | ||
59 | var features = res.features; | ||
60 | if (callBackFunction && typeof callBackFunction == 'function') { | ||
61 | callBackFunction(features); | ||
62 | } | ||
63 | }); | ||
64 | }, | ||
65 | /** | ||
66 | * @description: 生成介质点 | ||
67 | * @param {*} graphic | ||
68 | * @author: renchao | ||
69 | */ | ||
70 | craetJZPoint (graphic) { | ||
71 | var geomtry = graphic.geometry, rings = geomtry.rings[0]; | ||
72 | var pointInfos = []; | ||
73 | this.getPointByRings(rings, pointInfos); | ||
74 | return pointInfos; | ||
75 | }, | ||
76 | /** | ||
77 | * @description: getPointByRings | ||
78 | * @param {*} rings | ||
79 | * @param {*} pointInfos | ||
80 | * @author: renchao | ||
81 | */ | ||
82 | getPointByRings (rings, pointInfos) { | ||
83 | for (var i = 0; i < rings.length; i++) { | ||
84 | var children = rings[i]; | ||
85 | if (children.length == 2 && typeof children[0] == 'number') { | ||
86 | var obj = {}; | ||
87 | obj.jzdh = "j" + pointInfos.length; | ||
88 | obj.sxh = pointInfos.length; | ||
89 | obj.x = children[0]; | ||
90 | obj.y = children[1]; | ||
91 | pointInfos.push(obj); | ||
92 | } else { | ||
93 | this.getPointByRings(children, pointInfos); | ||
94 | } | ||
95 | } | ||
96 | }, | ||
97 | /** | ||
98 | * @description: 生成介质线 | ||
99 | * @param {*} graphic | ||
100 | * @param {*} callBackFunction | ||
101 | * @author: renchao | ||
102 | */ | ||
103 | createJZLine (graphic, callBackFunction) { | ||
104 | var self = this; | ||
105 | loadModules([ | ||
106 | "esri/geometry/support/geodesicUtils", | ||
107 | "esri/geometry/Point", | ||
108 | "esri/geometry/Polyline" | ||
109 | |||
110 | ]).then(([ | ||
111 | geodesicUtils, | ||
112 | Point, | ||
113 | Polyline | ||
114 | ]) => { | ||
115 | //取得各个坐标点 然后生成外围坐标线 | ||
116 | var geometry = graphic.geometry, | ||
117 | rings = geometry.rings, | ||
118 | points = []; | ||
119 | if (rings.length > 0) { | ||
120 | for (var i = 0; i < rings.length; i++) { | ||
121 | var danPoints = []; | ||
122 | self.getPointByRings(rings[i], danPoints); | ||
123 | points.push(danPoints); | ||
124 | } | ||
125 | } else { | ||
126 | var danPoints = []; | ||
127 | self.getPointByRings(rings, danPoints); | ||
128 | points.push(danPoints); | ||
129 | } | ||
130 | var lines = []; | ||
131 | //meters | ||
132 | for (var i = 0; i < points.length; i++) { | ||
133 | for (var j = 0; j < points[i].length; j++) { | ||
134 | if (j < (points[i].length - 1)) { | ||
135 | const join = geodesicUtils.geodesicDistance( | ||
136 | new Point({ x: points[i][j].x, y: points[i][j].y }), | ||
137 | new Point({ x: points[i][j + 1].x, y: points[i][j + 1].y }), | ||
138 | "meters" | ||
139 | ); | ||
140 | const { distance, azimuth } = join; | ||
141 | |||
142 | var obj = { | ||
143 | startPoint: points[i][j].x + "," + points[i][j].y, | ||
144 | endPoint: points[i][j + 1].x + "," + points[i][j + 1].y, | ||
145 | qdh: points[i][j].sxh, | ||
146 | zdh: points[i][j + 1].sxh, | ||
147 | distance: distance, | ||
148 | jzxlx: "", | ||
149 | jzxwz: "", | ||
150 | jzxxz: "", | ||
151 | remark: "" | ||
152 | } | ||
153 | lines.push(obj); | ||
154 | } else { | ||
155 | const join = geodesicUtils.geodesicDistance( | ||
156 | new Point({ x: points[i][j].x, y: points[i][j].y }), | ||
157 | new Point({ x: points[i][0].x, y: points[i][0].y }), | ||
158 | "meters" | ||
159 | ); | ||
160 | const { distance, azimuth } = join; | ||
161 | var obj = { | ||
162 | startPoint: points[i][j].x + "," + points[i][j].y, | ||
163 | endPoint: points[i][0].x + "," + points[i][0].y, | ||
164 | qdh: points[i][j].sxh, | ||
165 | zdh: points[i][0].sxh, | ||
166 | distance: distance, | ||
167 | jzxlx: "", | ||
168 | jzxwz: "", | ||
169 | jzxxz: "", | ||
170 | remark: "" | ||
171 | } | ||
172 | lines.push(obj); | ||
173 | } | ||
174 | } | ||
175 | } | ||
176 | if (callBackFunction && typeof callBackFunction == "function") { | ||
177 | callBackFunction(lines); | ||
178 | } | ||
179 | }).catch(err => { | ||
180 | throw (err); | ||
181 | }) | ||
182 | }, | ||
183 | /** | ||
184 | * @description: wkt转换成arcgis | ||
185 | * @param {*} wkt | ||
186 | * @author: renchao | ||
187 | */ | ||
188 | parseWktToArc (wkt) { | ||
189 | var primitive = wktParse.parse(wkt); | ||
190 | /*if(primitive.type == "MultiPolygon"){ | ||
191 | primitive.type = "Polygon" | ||
192 | }*/ | ||
193 | return arcgisParser.convert(primitive) | ||
194 | }, | ||
195 | /** | ||
196 | * @description: postionToThisGeo | ||
197 | * @param {*} bsm | ||
198 | * @param {*} type | ||
199 | * @author: renchao | ||
200 | */ | ||
201 | postionToThisGeo (bsm, type) { | ||
202 | var view = maps["testMap"]; | ||
203 | var layer = view.map.findLayerById("highlightLayer"); | ||
204 | if (layer) { | ||
205 | var graphics = layer.graphics; | ||
206 | if (graphics.length > 0 && graphics.items[0].attributes.BSM == bsm) { | ||
207 | // view.extent = graphics.items[0].geometry.extent; | ||
208 | view.center = graphics.items[0].geometry.extent.center; | ||
209 | view.zoom = 15; | ||
210 | } | ||
211 | } else { | ||
212 | this.$message.success("暂无图形信息!!!"); | ||
213 | } | ||
214 | }, | ||
215 | /** | ||
216 | * @description: 导入空间图形是 先判断数据是否跨界 | ||
217 | * @param {*} geometry | ||
218 | * @param {*} callBacFunction | ||
219 | * @author: renchao | ||
220 | */ | ||
221 | geoJoint (geometry, callBacFunction) { | ||
222 | var self = this; | ||
223 | loadModules([ | ||
224 | "esri/geometry/geometryEngine", | ||
225 | "esri/geometry/Polygon" | ||
226 | ]).then(([ | ||
227 | geometryEngine, | ||
228 | Polygon | ||
229 | ]) => { | ||
230 | var djqLayer = null, djzqLayer = null, xjzqLayer = null; | ||
231 | djqLayer = self.getLayerByName("DJQ"); | ||
232 | djzqLayer = self.getLayerByName("DJZQ"); | ||
233 | xjzqLayer = self.getLayerByName("XJZQ"); | ||
234 | var layerIds = []; | ||
235 | layerIds.push(djqLayer.id); | ||
236 | layerIds.push(djzqLayer.id); | ||
237 | layerIds.push(xjzqLayer.id); | ||
238 | var polygon = new Polygon(geometry); | ||
239 | identifyUtils.methods.identify(djqLayer.layerUrl, layerIds, polygon, function (res) { | ||
240 | var results = res.results; | ||
241 | var isJoint = false, layerName = "", message = ""; | ||
242 | if (!results || results.length == 0) { | ||
243 | callBacFunction(true, "不在行政区内,请检查空间位置信息!!!"); | ||
244 | } | ||
245 | for (var i = 0; i < results.length; i++) { | ||
246 | var feature = results[i].feature; | ||
247 | var flag = geometryEngine.intersects(polygon, feature.geometry); | ||
248 | var withinFlag = geometryEngine.within(polygon, feature.geometry); | ||
249 | if (!withinFlag && flag) { | ||
250 | isJoint = true; | ||
251 | layerName = results[i].layerName; | ||
252 | switch (layerName) { | ||
253 | case 'DJQ': message = "地块跨越地籍区,数据不合法!!!"; break; | ||
254 | case 'DJZQ': message = "地块跨越地籍子区,数据不合法!!!"; break; | ||
255 | case 'XJZQ': message = "地块跨越行政区,数据不合法!!!"; break; | ||
256 | } | ||
257 | break | ||
258 | } | ||
259 | } | ||
260 | if (callBacFunction && typeof callBacFunction == "function") { | ||
261 | callBacFunction(isJoint, message); | ||
262 | } | ||
263 | }, true) | ||
264 | }).catch(err => { | ||
265 | console.log(err); | ||
266 | throw (err); | ||
267 | }) | ||
268 | }, | ||
269 | /** | ||
270 | * @description: 保存或者编辑属性信息 | ||
271 | * @param {*} bsm | ||
272 | * @param {*} type | ||
273 | * @param {*} attributes | ||
274 | * @param {*} callBackFunction | ||
275 | * @param {*} ydybsm | ||
276 | * @author: renchao | ||
277 | */ | ||
278 | updAttributes (bsm, type, attributes, callBackFunction, ydybsm) { | ||
279 | var layer = null; | ||
280 | if (type == 'zd') { | ||
281 | layer = this.getLayerByName("ZDJBXX"); | ||
282 | } else { | ||
283 | layer = this.getLayerByName("ZRZ"); | ||
284 | } | ||
285 | var featureUrl = layer.layerUrl.replace("MapServer", "FeatureServer"); | ||
286 | featureUrl += "/" + layer.id; | ||
287 | this.queryGeoByBsm(ydybsm ? ydybsm : bsm, type, function (features) { | ||
288 | if (features && features.length > 0) { | ||
289 | attributes.OBJECTID = features[0].attributes.OBJECTID; | ||
290 | features[0].attributes = attributes; | ||
291 | /* var wkt = "PROJCS[\"XADFZBX\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"False_Easting\",0.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",0.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"; | ||
292 | features[0].geometry.spatialReference = { | ||
293 | wkt:wkt | ||
294 | }*/ | ||
295 | if (ydybsm) { | ||
296 | features[0].attributes.BSM = ydybsm; | ||
297 | } | ||
298 | featureUpdate.methods.updateGraphic(featureUrl, features[0], callBackFunction); | ||
299 | } else { | ||
300 | var graphic = { | ||
301 | attributes: attributes | ||
302 | } | ||
303 | featureUpdate.methods.addGraphic(featureUrl, graphic, callBackFunction); | ||
304 | } | ||
305 | }); | ||
306 | }, | ||
307 | /** | ||
308 | * @description: 叠加分析 同一个图层的叠加分析 | ||
309 | * @param {*} bsm | ||
310 | * @param {*} graphic | ||
311 | * @param {*} callBacFunction | ||
312 | * @author: renchao | ||
313 | */ | ||
314 | zdOverAnalys (bsm, graphic, callBacFunction) { | ||
315 | var self = this; | ||
316 | loadModules([ | ||
317 | "esri/geometry/Polygon" | ||
318 | ]).then(([ | ||
319 | Polygon | ||
320 | ]) => { | ||
321 | var zdLayer = null; | ||
322 | zdLayer = self.getLayerByName("ZDJBXX"); | ||
323 | var layerIds = []; | ||
324 | layerIds.push(zdLayer.id); | ||
325 | var polygon = new Polygon(graphic.geometry); | ||
326 | identifyUtils.methods.identify(zdLayer.layerUrl, layerIds, polygon, function (res) { | ||
327 | var results = res.results; | ||
328 | //判断数据是否与其他数据有重叠 | ||
329 | var flag = false; | ||
330 | if (results && results.length > 0) { | ||
331 | flag = true; | ||
332 | //加载在图层上 原本的要导入的数据 和重叠数据 | ||
333 | self.addOverLayer(polygon, results); | ||
334 | } | ||
335 | callBacFunction(flag, results); | ||
336 | }, true) | ||
337 | }).catch(err => { | ||
338 | console.log(err); | ||
339 | throw (err); | ||
340 | }) | ||
341 | }, | ||
342 | /** | ||
343 | * @description: addOverLayer | ||
344 | * @param {*} geometry | ||
345 | * @param {*} results | ||
346 | * @author: renchao | ||
347 | */ | ||
348 | addOverLayer (geometry, results) { | ||
349 | var view = maps["testMap"]; | ||
350 | loadModules([ | ||
351 | "esri/Graphic", | ||
352 | "esri/geometry/Polygon", | ||
353 | "esri/layers/GraphicsLayer", | ||
354 | "esri/geometry/geometryEngineAsync", | ||
355 | "esri/geometry/Extent" | ||
356 | ]).then(([ | ||
357 | Graphic, | ||
358 | Polygon, | ||
359 | GraphicsLayer, | ||
360 | geometryEngineAsync, | ||
361 | Extent | ||
362 | ]) => { | ||
363 | var graphic = new Graphic({ | ||
364 | geometry: geometry | ||
365 | }) | ||
366 | var layer = view.map.findLayerById("overLayer"); | ||
367 | if (layer) { | ||
368 | layer.removeAll(); | ||
369 | } else { | ||
370 | layer = new GraphicsLayer({ | ||
371 | id: "overLayer" | ||
372 | }) | ||
373 | view.map.add(layer); | ||
374 | } | ||
375 | var impotSymbol = graphicSymbol.fillSymbol.importSymbol, | ||
376 | defaultSymbol = graphicSymbol.fillSymbol.defaultSymbol; | ||
377 | for (var i = 0; i < results.length; i++) { | ||
378 | var feature = results[i].feature; | ||
379 | feature.symbol = defaultSymbol; | ||
380 | layer.add(feature); | ||
381 | var geo = geometryEngineAsync.intersect(feature.geometry, geometry); | ||
382 | geo.then(function (res) { | ||
383 | var interGra = new Graphic({ | ||
384 | geometry: res, | ||
385 | symbol: graphicSymbol.fillSymbol.highlightSymbol | ||
386 | }) | ||
387 | layer.add(interGra); | ||
388 | }) | ||
389 | } | ||
390 | graphic.symbol = impotSymbol | ||
391 | layer.add(graphic); | ||
392 | var extent = new Extent(JSON.parse(JSON.stringify(graphic.geometry.extent))) | ||
393 | extent.spatialReference = view.spatialReference; | ||
394 | // view.extent = extent; | ||
395 | view.center = extent.center; | ||
396 | view.zoom = 15; | ||
397 | }).catch(err => { | ||
398 | console.log(err); | ||
399 | |||
400 | }) | ||
401 | }, | ||
402 | /** | ||
403 | * @description: clearOverLayer | ||
404 | * @author: renchao | ||
405 | */ | ||
406 | clearOverLayer () { | ||
407 | var view = maps["testMap"]; | ||
408 | var layer = view.map.findLayerById("overLayer"); | ||
409 | if (layer) { | ||
410 | layer.removeAll(); | ||
411 | } | ||
412 | }, | ||
413 | /** | ||
414 | * @description: 自然幢叠加分析 不能跨宗地 图层本身的叠加分析 | ||
415 | * @param {*} bsm | ||
416 | * @param {*} graphic | ||
417 | * @param {*} callBacFunction | ||
418 | * @author: renchao | ||
419 | */ | ||
420 | zrzOverAnalys (bsm, graphic, callBacFunction) { | ||
421 | var self = this; | ||
422 | loadModules([ | ||
423 | "esri/geometry/Polygon", | ||
424 | "esri/geometry/geometryEngine" | ||
425 | ]).then(([ | ||
426 | Polygon, | ||
427 | geometryEngine | ||
428 | ]) => { | ||
429 | var polygon = new Polygon(graphic.geometry); | ||
430 | var zdLayer = null, | ||
431 | zrzLayer = null; | ||
432 | zdLayer = self.getLayerByName("ZDJBXX"); | ||
433 | zrzLayer = self.getLayerByName("ZRZ"); | ||
434 | var layerIds = []; | ||
435 | layerIds.push(zdLayer.id); | ||
436 | layerIds.push(zrzLayer.id); | ||
437 | identifyUtils.methods.identify(zdLayer.layerUrl, layerIds, polygon, function (res) { | ||
438 | var results = res.results; | ||
439 | //判断数据是否与其他数据有重叠 | ||
440 | var flag = false, | ||
441 | mesge = ""; | ||
442 | if (results && results.length > 0) { | ||
443 | for (var i = 0; i < results.length; i++) { | ||
444 | var feature = results[i].feature, | ||
445 | layerName = results[i].layerName; | ||
446 | if (layerName == 'ZRZ') { | ||
447 | if (!feature.attributes['标识码'] || feature.attributes['标识码'] != bsm) { | ||
448 | var interFlag = geometryEngine.intersects(polygon, feature.geometry); | ||
449 | if (interFlag) { | ||
450 | flag = true; | ||
451 | mesge = "导入的自然幢与其他自然幢重叠,不能导入!!!"; | ||
452 | break; | ||
453 | } | ||
454 | } | ||
455 | } else if (layerName == 'ZDJBXX') { | ||
456 | var interFlag = geometryEngine.intersects(polygon, feature.geometry); | ||
457 | var withinFlag = geometryEngine.within(polygon, feature.geometry); | ||
458 | if (!withinFlag && interFlag) { | ||
459 | flag = true; | ||
460 | mesge = "导入的自然幢与其跨宗地,不能导入!!!"; | ||
461 | break; | ||
462 | } | ||
463 | } | ||
464 | } | ||
465 | } | ||
466 | callBacFunction(flag, mesge); | ||
467 | }, true) | ||
468 | }).catch(err => { | ||
469 | console.log(err); | ||
470 | }) | ||
471 | }, | ||
472 | /** | ||
473 | * @description: 去除重叠部分 | ||
474 | * @param {*} inputGraphic | ||
475 | * @param {*} subGraphic | ||
476 | * @param {*} callBackFuncton | ||
477 | * @author: renchao | ||
478 | */ | ||
479 | getDifference (inputGraphic, subGraphic, callBackFuncton) { | ||
480 | loadModules([ | ||
481 | "esri/geometry/Polygon", | ||
482 | "esri/geometry/geometryEngine", | ||
483 | "esri/Graphic" | ||
484 | ]).then(([ | ||
485 | Polygon, | ||
486 | geometryEngine, | ||
487 | Graphic | ||
488 | ]) => { | ||
489 | var inputGeometry = new Polygon(inputGraphic.geometry); | ||
490 | var outGeometry = null; | ||
491 | for (var i = 0; i < subGraphic.length; i++) { | ||
492 | var feature = subGraphic[i].feature; | ||
493 | outGeometry = geometryEngine.difference(inputGeometry, feature.geometry); | ||
494 | } | ||
495 | if (callBackFuncton && typeof callBackFuncton == 'function') { | ||
496 | callBackFuncton(outGeometry); | ||
497 | } | ||
498 | }).catch(err => { | ||
499 | console.log(err); | ||
500 | }) | ||
501 | }, | ||
502 | /** | ||
503 | * @description: 业务处理 先用query方法 查询将所有属性查询 在做空间裁剪 | ||
504 | * @param {*} subGraphics | ||
505 | * @param {*} currntGraphic | ||
506 | * @param {*} callBackFunction | ||
507 | * @param {*} flag | ||
508 | * @author: renchao | ||
509 | */ | ||
510 | getResultsDif (subGraphics, currntGraphic, callBackFunction, flag) { | ||
511 | var self = this; | ||
512 | loadModules([ | ||
513 | "esri/geometry/geometryEngine", | ||
514 | "esri/geometry/Polygon" | ||
515 | ]).then(([ | ||
516 | geometryEngine, | ||
517 | Polygon | ||
518 | ]) => { | ||
519 | var objectIds = []; | ||
520 | subGraphics.filter(item => { | ||
521 | objectIds.push(item.feature.attributes.OBJECTID); | ||
522 | }) | ||
523 | var inputGeometry = new Polygon(currntGraphic.geometry); | ||
524 | var zdLayer = self.getLayerByName("ZDJBXX"); | ||
525 | queryUtils.methods.queryByWhere(zdLayer.layerUrl + "/" + zdLayer.id, { OBJECTID: objectIds }, null, true, "", subGraphics[0].feature.geometry.spatialReference, function (result) { | ||
526 | var features = result.features; | ||
527 | if (flag) { | ||
528 | for (var i = 0; i < features.length; i++) { | ||
529 | features[i].geometry = geometryEngine.difference(features[i].geometry, inputGeometry); | ||
530 | features[i].attributes.BGZT = 3; | ||
531 | } | ||
532 | } else { | ||
533 | for (var i = 0; i < features.length; i++) { | ||
534 | features[i].geometry = null; | ||
535 | features[i].attributes.BGZT = 4; | ||
536 | } | ||
537 | } | ||
538 | if (callBackFunction && typeof callBackFunction == 'function') { | ||
539 | callBackFunction(features); | ||
540 | } | ||
541 | }) | ||
542 | |||
543 | }).catch(err => { | ||
544 | console.log(err); | ||
545 | }) | ||
546 | |||
547 | }, | ||
548 | /** | ||
549 | * @description: addGeoByBsm | ||
550 | * @param {*} bsm | ||
551 | * @param {*} type | ||
552 | * @param {*} viewId | ||
553 | * @author: renchao | ||
554 | */ | ||
555 | addGeoByBsm (bsm, type, viewId) { | ||
556 | var self = this; | ||
557 | var layer = null; | ||
558 | if (type == 'zd') { | ||
559 | layer = this.getLayerByName("ZDJBXX"); | ||
560 | } else if (type == 'zrz') { | ||
561 | layer = this.getLayerByName("ZRZ"); | ||
562 | } else { | ||
563 | console.log("未定义类型!!"); | ||
564 | return; | ||
565 | } | ||
566 | if (!layer) { | ||
567 | console.log("没有找到图层,不能查询"); | ||
568 | return; | ||
569 | } | ||
570 | queryUtils.methods.queryByWhere(layer.layerUrl + "/" + layer.id, { "BSM": bsm }, null, true, null, null, function (res) { | ||
571 | var features = res.features; | ||
572 | if (features && features.length > 0) { | ||
573 | if (!features[0].geometry || features[0].geometry.rings.length == 0) { | ||
574 | self.$message.success("暂无图形信息!!"); | ||
575 | return; | ||
576 | } | ||
577 | loadModules([ | ||
578 | "esri/layers/GraphicsLayer" | ||
579 | ]).then(([ | ||
580 | GraphicsLayer | ||
581 | ]) => { | ||
582 | var view = maps[viewId]; | ||
583 | var layer = view.map.findLayerById("highlightLayer"); | ||
584 | if (layer) { | ||
585 | layer.removeAll(); | ||
586 | } else { | ||
587 | layer = new GraphicsLayer({ | ||
588 | id: "highlightLayer" | ||
589 | }) | ||
590 | view.map.add(layer, 5); | ||
591 | } | ||
592 | var symbol = graphicSymbol.fillSymbol.highlightSymbol; | ||
593 | var graphic = features[0]; | ||
594 | graphic.symbol = symbol; | ||
595 | layer.add(graphic); | ||
596 | // view.extent = graphic.geometry.extent; | ||
597 | view.center = graphic.geometry.extent.center; | ||
598 | view.zoom = 15; | ||
599 | }).catch(err => { | ||
600 | thow(err); | ||
601 | }) | ||
602 | } else { | ||
603 | self.$message.success("暂无图形信息!!"); | ||
604 | return; | ||
605 | } | ||
606 | }); | ||
607 | }, | ||
608 | /** | ||
609 | * @description: 清空当前图层 | ||
610 | * @param {*} viewId | ||
611 | * @author: renchao | ||
612 | */ | ||
613 | clearHighlightLayer (viewId) { | ||
614 | var view = maps[viewId]; | ||
615 | var layer = view.map.findLayerById("highlightLayer"); | ||
616 | if (layer) { | ||
617 | layer.removeAll(); | ||
618 | } | ||
619 | } | ||
620 | } | ||
621 | } |
... | @@ -36,9 +36,18 @@ export default { | ... | @@ -36,9 +36,18 @@ export default { |
36 | }) | 36 | }) |
37 | }, | 37 | }, |
38 | methods: { | 38 | methods: { |
39 | /** | ||
40 | * @description: closeViewer | ||
41 | * @author: renchao | ||
42 | */ | ||
39 | closeViewer () { | 43 | closeViewer () { |
40 | this.$emit('close-viewer') | 44 | this.$emit('close-viewer') |
41 | }, | 45 | }, |
46 | /** | ||
47 | * @description: hideCusBtn | ||
48 | * @param {*} e | ||
49 | * @author: renchao | ||
50 | */ | ||
42 | hideCusBtn (e) { | 51 | hideCusBtn (e) { |
43 | let className = e.target.className | 52 | let className = e.target.className |
44 | if (className === 'el-icon-download') { | 53 | if (className === 'el-icon-download') { |
... | @@ -48,6 +57,11 @@ export default { | ... | @@ -48,6 +57,11 @@ export default { |
48 | this.downloadImage(imgUrl) | 57 | this.downloadImage(imgUrl) |
49 | } | 58 | } |
50 | }, | 59 | }, |
60 | /** | ||
61 | * @description: downloadImage | ||
62 | * @param {*} imgUrl | ||
63 | * @author: renchao | ||
64 | */ | ||
51 | downloadImage (imgUrl) { | 65 | downloadImage (imgUrl) { |
52 | let tmpArr = imgUrl.split('/') | 66 | let tmpArr = imgUrl.split('/') |
53 | let fileName = tmpArr[tmpArr.length - 1] | 67 | let fileName = tmpArr[tmpArr.length - 1] |
... | @@ -83,4 +97,4 @@ export default { | ... | @@ -83,4 +97,4 @@ export default { |
83 | /deep/ .el-image-viewer__close { | 97 | /deep/ .el-image-viewer__close { |
84 | color: #ffffff; | 98 | color: #ffffff; |
85 | } | 99 | } |
86 | </style> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
100 | </style> | ... | ... |
... | @@ -77,7 +77,11 @@ | ... | @@ -77,7 +77,11 @@ |
77 | this.autoCurrentLabel() | 77 | this.autoCurrentLabel() |
78 | }, | 78 | }, |
79 | methods: { | 79 | methods: { |
80 | //表格显示隐藏回调 | 80 | /** |
81 | * @description: 表格显示隐藏回调 | ||
82 | * @param {*} visible | ||
83 | * @author: renchao | ||
84 | */ | ||
81 | visibleChange (visible) { | 85 | visibleChange (visible) { |
82 | if (visible) { | 86 | if (visible) { |
83 | this.formData = {} | 87 | this.formData = {} |
... | @@ -86,7 +90,10 @@ | ... | @@ -86,7 +90,10 @@ |
86 | this.autoCurrentLabel() | 90 | this.autoCurrentLabel() |
87 | } | 91 | } |
88 | }, | 92 | }, |
89 | //获取表格数据 | 93 | /** |
94 | * @description: 获取表格数据 | ||
95 | * @author: renchao | ||
96 | */ | ||
90 | async getData () { | 97 | async getData () { |
91 | //表格默认赋值 | 98 | //表格默认赋值 |
92 | if (this.multiple) { | 99 | if (this.multiple) { |
... | @@ -104,11 +111,17 @@ | ... | @@ -104,11 +111,17 @@ |
104 | } | 111 | } |
105 | // this.$refs.table.setScrollTop(0) | 112 | // this.$refs.table.setScrollTop(0) |
106 | }, | 113 | }, |
107 | //插糟表单提交 | 114 | /** |
115 | * @description: 插糟表单提交 | ||
116 | * @author: renchao | ||
117 | */ | ||
108 | formSubmit () { | 118 | formSubmit () { |
109 | this.getData() | 119 | this.getData() |
110 | }, | 120 | }, |
111 | //自动模拟options赋值 | 121 | /** |
122 | * @description: 自动模拟options赋值 | ||
123 | * @author: renchao | ||
124 | */ | ||
112 | autoCurrentLabel () { | 125 | autoCurrentLabel () { |
113 | this.$nextTick(() => { | 126 | this.$nextTick(() => { |
114 | if (this.multiple) { | 127 | if (this.multiple) { |
... | @@ -122,7 +135,12 @@ | ... | @@ -122,7 +135,12 @@ |
122 | } | 135 | } |
123 | }) | 136 | }) |
124 | }, | 137 | }, |
125 | //表格勾选事件 | 138 | /** |
139 | * @description: 表格勾选事件 | ||
140 | * @param {*} rows | ||
141 | * @param {*} row | ||
142 | * @author: renchao | ||
143 | */ | ||
126 | select (rows, row) { | 144 | select (rows, row) { |
127 | var isSelect = rows.length && rows.indexOf(row) !== -1 | 145 | var isSelect = rows.length && rows.indexOf(row) !== -1 |
128 | if (isSelect) { | 146 | if (isSelect) { |
... | @@ -134,7 +152,11 @@ | ... | @@ -134,7 +152,11 @@ |
134 | this.$emit('update:modelValue', this.defaultValue); | 152 | this.$emit('update:modelValue', this.defaultValue); |
135 | this.$emit('change', this.defaultValue); | 153 | this.$emit('change', this.defaultValue); |
136 | }, | 154 | }, |
137 | //表格全选事件 | 155 | /** |
156 | * @description: 表格全选事件 | ||
157 | * @param {*} rows | ||
158 | * @author: renchao | ||
159 | */ | ||
138 | selectAll (rows) { | 160 | selectAll (rows) { |
139 | var isAllSelect = rows.length > 0 | 161 | var isAllSelect = rows.length > 0 |
140 | if (isAllSelect) { | 162 | if (isAllSelect) { |
... | @@ -156,6 +178,11 @@ | ... | @@ -156,6 +178,11 @@ |
156 | this.$emit('update:modelValue', this.defaultValue); | 178 | this.$emit('update:modelValue', this.defaultValue); |
157 | this.$emit('change', this.defaultValue); | 179 | this.$emit('change', this.defaultValue); |
158 | }, | 180 | }, |
181 | /** | ||
182 | * @description: click | ||
183 | * @param {*} row | ||
184 | * @author: renchao | ||
185 | */ | ||
159 | click (row) { | 186 | click (row) { |
160 | if (this.multiple) { | 187 | if (this.multiple) { |
161 | //处理多选点击行 | 188 | //处理多选点击行 |
... | @@ -168,25 +195,42 @@ | ... | @@ -168,25 +195,42 @@ |
168 | this.$emit('change', this.defaultValue); | 195 | this.$emit('change', this.defaultValue); |
169 | } | 196 | } |
170 | }, | 197 | }, |
171 | //tags删除后回调 | 198 | /** |
199 | * @description: tags删除后回调 | ||
200 | * @param {*} tag | ||
201 | * @author: renchao | ||
202 | */ | ||
172 | removeTag (tag) { | 203 | removeTag (tag) { |
173 | var row = this.findRowByKey(tag[this.defaultProps.value]) | 204 | var row = this.findRowByKey(tag[this.defaultProps.value]) |
174 | this.$refs.table.toggleRowSelection(row, false); | 205 | this.$refs.table.toggleRowSelection(row, false); |
175 | this.$emit('update:modelValue', this.defaultValue); | 206 | this.$emit('update:modelValue', this.defaultValue); |
176 | }, | 207 | }, |
177 | //清空后的回调 | 208 | /** |
209 | * @description: 清空后的回调 | ||
210 | * @author: renchao | ||
211 | */ | ||
178 | clear () { | 212 | clear () { |
179 | this.$emit('update:modelValue', this.defaultValue); | 213 | this.$emit('update:modelValue', this.defaultValue); |
180 | }, | 214 | }, |
181 | // 关键值查询表格数据行 | 215 | /** |
216 | * @description: 关键值查询表格数据行 | ||
217 | * @param {*} value | ||
218 | * @author: renchao | ||
219 | */ | ||
182 | findRowByKey (value) { | 220 | findRowByKey (value) { |
183 | return this.tableData.find(item => item[this.defaultProps.value] === value) | 221 | return this.tableData.find(item => item[this.defaultProps.value] === value) |
184 | }, | 222 | }, |
185 | // 触发select隐藏 | 223 | /** |
224 | * @description: 触发select隐藏 | ||
225 | * @author: renchao | ||
226 | */ | ||
186 | blur () { | 227 | blur () { |
187 | this.$refs.select.blur(); | 228 | this.$refs.select.blur(); |
188 | }, | 229 | }, |
189 | // 触发select显示 | 230 | /** |
231 | * @description: 触发select显示 | ||
232 | * @author: renchao | ||
233 | */ | ||
190 | focus () { | 234 | focus () { |
191 | this.$refs.select.focus(); | 235 | this.$refs.select.focus(); |
192 | } | 236 | } | ... | ... |
... | @@ -16,8 +16,7 @@ | ... | @@ -16,8 +16,7 @@ |
16 | :inline="flag" | 16 | :inline="flag" |
17 | :show-message="false" | 17 | :show-message="false" |
18 | inline-message | 18 | inline-message |
19 | label-width="145px" | 19 | label-width="145px"> |
20 | > | ||
21 | <div class="slxx_con" v-if="isShow" :class="flag ? 'formMarginBot0' : ''"> | 20 | <div class="slxx_con" v-if="isShow" :class="flag ? 'formMarginBot0' : ''"> |
22 | <div class="slxx_title title-block"> | 21 | <div class="slxx_title title-block"> |
23 | 补录信息 | 22 | 补录信息 |
... | @@ -44,7 +43,7 @@ | ... | @@ -44,7 +43,7 @@ |
44 | 房地产权(独幢、层、套、间房屋) | 43 | 房地产权(独幢、层、套、间房屋) |
45 | <div class="triangle"></div> | 44 | <div class="triangle"></div> |
46 | </div> | 45 | </div> |
47 | <el-row :gutter="10" class="ssqlxx"> | 46 | <el-row :gutter="10" class="ssqlxx"> |
48 | <el-col :span="24" v-if="ssqlxxshow"> | 47 | <el-col :span="24" v-if="ssqlxxshow"> |
49 | <el-form-item label="上手权利信息:"> | 48 | <el-form-item label="上手权利信息:"> |
50 | <select-table | 49 | <select-table |
... | @@ -52,18 +51,15 @@ | ... | @@ -52,18 +51,15 @@ |
52 | :table-width="550" | 51 | :table-width="550" |
53 | :tableData="ssQlxxList" | 52 | :tableData="ssQlxxList" |
54 | :props="props" | 53 | :props="props" |
55 | @change="ssQlxxchange" | 54 | @change="ssQlxxchange"> |
56 | > | ||
57 | <el-table-column | 55 | <el-table-column |
58 | prop="qllxmc" | 56 | prop="qllxmc" |
59 | width="130" | 57 | width="130" |
60 | label="权利类型" | 58 | label="权利类型"></el-table-column> |
61 | ></el-table-column> | ||
62 | <el-table-column | 59 | <el-table-column |
63 | prop="bdcqzh" | 60 | prop="bdcqzh" |
64 | width="160" | 61 | width="160" |
65 | label="不动产权证书" | 62 | label="不动产权证书"></el-table-column> |
66 | ></el-table-column> | ||
67 | <el-table-column prop="qlrmc" label="权利人"></el-table-column> | 63 | <el-table-column prop="qlrmc" label="权利人"></el-table-column> |
68 | <el-table-column prop="mjmc" label="面积"></el-table-column> | 64 | <el-table-column prop="mjmc" label="面积"></el-table-column> |
69 | <el-table-column prop="ytmc" label="用途"></el-table-column> | 65 | <el-table-column prop="ytmc" label="用途"></el-table-column> |
... | @@ -102,8 +98,7 @@ | ... | @@ -102,8 +98,7 @@ |
102 | v-for="item in djlxlist" | 98 | v-for="item in djlxlist" |
103 | :key="item.dcode" | 99 | :key="item.dcode" |
104 | :label="item.dname" | 100 | :label="item.dname" |
105 | :value="item.dcode" | 101 | :value="item.dcode"> |
106 | > | ||
107 | </el-option> | 102 | </el-option> |
108 | </el-select> | 103 | </el-select> |
109 | </el-form-item> | 104 | </el-form-item> |
... | @@ -137,8 +132,7 @@ | ... | @@ -137,8 +132,7 @@ |
137 | placeholder="" | 132 | placeholder="" |
138 | :normalizer="normalizer" | 133 | :normalizer="normalizer" |
139 | :show-count="true" | 134 | :show-count="true" |
140 | :options="dictData['A9']" | 135 | :options="dictData['A9']" /> |
141 | /> | ||
142 | </el-form-item> | 136 | </el-form-item> |
143 | </el-col> | 137 | </el-col> |
144 | <el-col :span="8"> | 138 | <el-col :span="8"> |
... | @@ -146,15 +140,13 @@ | ... | @@ -146,15 +140,13 @@ |
146 | <div style="display: flex"> | 140 | <div style="display: flex"> |
147 | <el-input | 141 | <el-input |
148 | v-model="ruleForm.fdcq2.qjjg" | 142 | v-model="ruleForm.fdcq2.qjjg" |
149 | style="width: 500%" | 143 | style="width: 500%"></el-input> |
150 | ></el-input> | ||
151 | <el-select v-model="ruleForm.fdcq2.jedw"> | 144 | <el-select v-model="ruleForm.fdcq2.jedw"> |
152 | <el-option | 145 | <el-option |
153 | v-for="item in dictData['A57']" | 146 | v-for="item in dictData['A57']" |
154 | :key="item.dcode" | 147 | :key="item.dcode" |
155 | :label="item.dname" | 148 | :label="item.dname" |
156 | :value="item.dcode" | 149 | :value="item.dcode"> |
157 | > | ||
158 | </el-option> | 150 | </el-option> |
159 | </el-select> | 151 | </el-select> |
160 | </div> | 152 | </div> |
... | @@ -167,8 +159,7 @@ | ... | @@ -167,8 +159,7 @@ |
167 | v-for="item in qsztlist" | 159 | v-for="item in qsztlist" |
168 | :key="item.dcode" | 160 | :key="item.dcode" |
169 | :label="item.dname" | 161 | :label="item.dname" |
170 | :value="item.dcode" | 162 | :value="item.dcode"> |
171 | > | ||
172 | </el-option> | 163 | </el-option> |
173 | </el-select> | 164 | </el-select> |
174 | </el-form-item> | 165 | </el-form-item> |
... | @@ -180,8 +171,7 @@ | ... | @@ -180,8 +171,7 @@ |
180 | v-for="item in dictData['A17']" | 171 | v-for="item in dictData['A17']" |
181 | :key="item.dcode" | 172 | :key="item.dcode" |
182 | :label="item.dname" | 173 | :label="item.dname" |
183 | :value="item.dcode" | 174 | :value="item.dcode"> |
184 | > | ||
185 | </el-option> | 175 | </el-option> |
186 | </el-select> | 176 | </el-select> |
187 | </el-form-item> | 177 | </el-form-item> |
... | @@ -203,8 +193,7 @@ | ... | @@ -203,8 +193,7 @@ |
203 | v-for="item in dictData['A19']" | 193 | v-for="item in dictData['A19']" |
204 | :key="item.dcode" | 194 | :key="item.dcode" |
205 | :label="item.dname" | 195 | :label="item.dname" |
206 | :value="item.dcode" | 196 | :value="item.dcode"> |
207 | > | ||
208 | </el-option> | 197 | </el-option> |
209 | </el-select> | 198 | </el-select> |
210 | </el-form-item> | 199 | </el-form-item> |
... | @@ -213,15 +202,13 @@ | ... | @@ -213,15 +202,13 @@ |
213 | <el-form-item | 202 | <el-form-item |
214 | label="房屋结构:" | 203 | label="房屋结构:" |
215 | prop="fdcq2.fwjg" | 204 | prop="fdcq2.fwjg" |
216 | :rules="rules.fwjgrules" | 205 | :rules="rules.fwjgrules"> |
217 | > | ||
218 | <el-select v-model="ruleForm.fdcq2.fwjg"> | 206 | <el-select v-model="ruleForm.fdcq2.fwjg"> |
219 | <el-option | 207 | <el-option |
220 | v-for="item in dictData['A46']" | 208 | v-for="item in dictData['A46']" |
221 | :key="item.dcode" | 209 | :key="item.dcode" |
222 | :label="item.dname" | 210 | :label="item.dname" |
223 | :value="item.dcode" | 211 | :value="item.dcode"> |
224 | > | ||
225 | </el-option> | 212 | </el-option> |
226 | </el-select> | 213 | </el-select> |
227 | </el-form-item> | 214 | </el-form-item> |
... | @@ -261,8 +248,7 @@ | ... | @@ -261,8 +248,7 @@ |
261 | <el-form-item | 248 | <el-form-item |
262 | label="不动产权证号:" | 249 | label="不动产权证号:" |
263 | prop="qlxx.bdcqzh" | 250 | prop="qlxx.bdcqzh" |
264 | :rules="rules.bdcqzhrules" | 251 | :rules="rules.bdcqzhrules"> |
265 | > | ||
266 | <el-input v-model="ruleForm.qlxx.bdcqzh"></el-input> | 252 | <el-input v-model="ruleForm.qlxx.bdcqzh"></el-input> |
267 | </el-form-item> | 253 | </el-form-item> |
268 | </el-col> | 254 | </el-col> |
... | @@ -279,8 +265,7 @@ | ... | @@ -279,8 +265,7 @@ |
279 | <el-form-item | 265 | <el-form-item |
280 | label="登记机构:" | 266 | label="登记机构:" |
281 | prop="qlxx.djjg" | 267 | prop="qlxx.djjg" |
282 | :rules="rules.djjgrules" | 268 | :rules="rules.djjgrules"> |
283 | > | ||
284 | <el-input v-model="ruleForm.qlxx.djjg"></el-input> | 269 | <el-input v-model="ruleForm.qlxx.djjg"></el-input> |
285 | </el-form-item> | 270 | </el-form-item> |
286 | </el-col> | 271 | </el-col> |
... | @@ -288,8 +273,7 @@ | ... | @@ -288,8 +273,7 @@ |
288 | <el-form-item | 273 | <el-form-item |
289 | label="登簿人:" | 274 | label="登簿人:" |
290 | prop="qlxx.dbr" | 275 | prop="qlxx.dbr" |
291 | :rules="rules.dbrrules" | 276 | :rules="rules.dbrrules"> |
292 | > | ||
293 | <el-input v-model="ruleForm.qlxx.dbr"></el-input> | 277 | <el-input v-model="ruleForm.qlxx.dbr"></el-input> |
294 | </el-form-item> | 278 | </el-form-item> |
295 | </el-col> | 279 | </el-col> |
... | @@ -297,15 +281,13 @@ | ... | @@ -297,15 +281,13 @@ |
297 | <el-form-item | 281 | <el-form-item |
298 | label="登记时间:" | 282 | label="登记时间:" |
299 | prop="qlxx.djsj" | 283 | prop="qlxx.djsj" |
300 | :rules="rules.djsjrules" | 284 | :rules="rules.djsjrules"> |
301 | > | ||
302 | <el-date-picker | 285 | <el-date-picker |
303 | v-model="ruleForm.qlxx.djsj" | 286 | v-model="ruleForm.qlxx.djsj" |
304 | type="date" | 287 | type="date" |
305 | placeholder="选择日期" | 288 | placeholder="选择日期" |
306 | value-format="yyyy-MM-dd HH:mm:ss" | 289 | value-format="yyyy-MM-dd HH:mm:ss" |
307 | format="yyyy-MM-dd" | 290 | format="yyyy-MM-dd"> |
308 | > | ||
309 | </el-date-picker> | 291 | </el-date-picker> |
310 | </el-form-item> | 292 | </el-form-item> |
311 | </el-col> | 293 | </el-col> |
... | @@ -331,8 +313,7 @@ | ... | @@ -331,8 +313,7 @@ |
331 | <tdytTable | 313 | <tdytTable |
332 | :tableData="ruleForm.tdytqxList" | 314 | :tableData="ruleForm.tdytqxList" |
333 | @upDateTdytxxList="upDateTdytxxList" | 315 | @upDateTdytxxList="upDateTdytxxList" |
334 | :ableOperation="ableOperation" | 316 | :ableOperation="ableOperation" /> |
335 | /> | ||
336 | <div class="slxx_title title-block"> | 317 | <div class="slxx_title title-block"> |
337 | 权利人信息 | 318 | 权利人信息 |
338 | <div class="triangle"></div> | 319 | <div class="triangle"></div> |
... | @@ -340,10 +321,9 @@ | ... | @@ -340,10 +321,9 @@ |
340 | <el-row :gutter="10"> | 321 | <el-row :gutter="10"> |
341 | <el-col :span="12"> | 322 | <el-col :span="12"> |
342 | <el-form-item label="共有方式:"> | 323 | <el-form-item label="共有方式:"> |
343 | <el-radio-group | 324 | <el-radio-group |
344 | :disabled="!ableOperation" | 325 | :disabled="!ableOperation" |
345 | v-model="ruleForm.qlxx.gyfs" | 326 | v-model="ruleForm.qlxx.gyfs"> |
346 | > | ||
347 | <el-radio label="0">单独所有</el-radio> | 327 | <el-radio label="0">单独所有</el-radio> |
348 | <el-radio label="1">共同共有</el-radio> | 328 | <el-radio label="1">共同共有</el-radio> |
349 | <el-radio label="2">按份所有</el-radio> | 329 | <el-radio label="2">按份所有</el-radio> |
... | @@ -357,8 +337,7 @@ | ... | @@ -357,8 +337,7 @@ |
357 | @upDateQlrxxList="upDateQlrxxList" | 337 | @upDateQlrxxList="upDateQlrxxList" |
358 | :ableOperation="ableOperation" | 338 | :ableOperation="ableOperation" |
359 | :key="key" | 339 | :key="key" |
360 | :gyfs="ruleForm.qlxx.gyfs" | 340 | :gyfs="ruleForm.qlxx.gyfs" /> |
361 | /> | ||
362 | </div> | 341 | </div> |
363 | <el-row class="btn" v-if="ableOperation"> | 342 | <el-row class="btn" v-if="ableOperation"> |
364 | <el-form-item> | 343 | <el-form-item> |
... | @@ -369,261 +348,261 @@ | ... | @@ -369,261 +348,261 @@ |
369 | </div> | 348 | </div> |
370 | </template> | 349 | </template> |
371 | <script> | 350 | <script> |
372 | import { mapGetters } from "vuex"; | 351 | import { mapGetters } from "vuex"; |
373 | import { init,getSsQlxx, save } from "@/api/djbRepair.js"; | 352 | import { init, getSsQlxx, save } from "@/api/djbRepair.js"; |
374 | import qlrCommonTable from "@/views/djbworkflow/components/qlrCommonTable"; | 353 | import qlrCommonTable from "@/views/djbworkflow/components/qlrCommonTable"; |
375 | import selectTable from "@/components/selectTable/index.vue"; | 354 | import selectTable from "@/components/selectTable/index.vue"; |
376 | import tdytTable from "@/views/workflow/components/tdytTable"; | 355 | import tdytTable from "@/views/workflow/components/tdytTable"; |
377 | // import the component | 356 | // import the component |
378 | // import Treeselect from '@riophae/vue-treeselect' | 357 | // import Treeselect from '@riophae/vue-treeselect' |
379 | // // import the styles | 358 | // // import the styles |
380 | // import '@riophae/vue-treeselect/dist/vue-treeselect.css' | 359 | // import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
381 | export default { | 360 | export default { |
382 | components: { qlrCommonTable, tdytTable,selectTable}, | 361 | components: { qlrCommonTable, tdytTable, selectTable }, |
383 | computed: { | 362 | computed: { |
384 | ...mapGetters(["dictData", "flag"]), | 363 | ...mapGetters(["dictData", "flag"]), |
385 | // 根据流程判断表单是否为只读 | 364 | // 根据流程判断表单是否为只读 |
386 | editDisabled() { | 365 | editDisabled () { |
387 | if (!this.ableOperation) { | 366 | if (!this.ableOperation) { |
388 | //只读状态 | 367 | //只读状态 |
389 | return true; | 368 | return true; |
390 | } | ||
391 | return false; | ||
392 | }, | ||
393 | }, | ||
394 | data() { | ||
395 | return { | ||
396 | ssqlxxshow:true, | ||
397 | props: { | ||
398 | label: "bdcqzh", | ||
399 | value: "bdcdyid", | ||
400 | }, | ||
401 | // 键名转换,方法默认是label和children进行树状渲染 | ||
402 | normalizer(node) { | ||
403 | //方法 | ||
404 | if (node.children == null || node.children == "null") { | ||
405 | delete node.children; | ||
406 | } | 369 | } |
407 | return { | 370 | return false; |
408 | id: node.dcode, | ||
409 | label: node.dname, | ||
410 | }; | ||
411 | }, | 371 | }, |
412 | 372 | }, | |
413 | //表单是否可操作 | 373 | data () { |
414 | propsParam: this.$attrs, | 374 | return { |
415 | // 登记类型 | 375 | ssqlxxshow: true, |
416 | djlxlist: [ | 376 | props: { |
417 | { | 377 | label: "bdcqzh", |
418 | dcode: "100", | 378 | value: "bdcdyid", |
419 | dname: "首次登记", | ||
420 | }, | ||
421 | { | ||
422 | dcode: "200", | ||
423 | dname: "转移登记", | ||
424 | }, | ||
425 | { | ||
426 | dcode: "300", | ||
427 | dname: "变更登记", | ||
428 | }, | 379 | }, |
429 | { | 380 | // 键名转换,方法默认是label和children进行树状渲染 |
430 | dcode: "500", | 381 | normalizer (node) { |
431 | dname: "更正登记", | 382 | //方法 |
383 | if (node.children == null || node.children == "null") { | ||
384 | delete node.children; | ||
385 | } | ||
386 | return { | ||
387 | id: node.dcode, | ||
388 | label: node.dname, | ||
389 | }; | ||
432 | }, | 390 | }, |
433 | 391 | ||
434 | { | 392 | //表单是否可操作 |
435 | dcode: "901", | 393 | propsParam: this.$attrs, |
436 | dname: "补证", | 394 | // 登记类型 |
437 | }, | 395 | djlxlist: [ |
438 | { | 396 | { |
439 | dcode: "902", | 397 | dcode: "100", |
440 | dname: "换证", | 398 | dname: "首次登记", |
441 | }, | 399 | }, |
442 | ], | 400 | { |
443 | // 权属状态 | 401 | dcode: "200", |
444 | qsztlist: [ | 402 | dname: "转移登记", |
445 | { | 403 | }, |
446 | dcode: "1", | 404 | { |
447 | dname: "现势", | 405 | dcode: "300", |
448 | }, | 406 | dname: "变更登记", |
449 | { | 407 | }, |
450 | dcode: "2", | 408 | { |
451 | dname: "历史", | 409 | dcode: "500", |
452 | }, | 410 | dname: "更正登记", |
453 | ], | 411 | }, |
454 | key: 0, | 412 | |
455 | tdxz: null, | 413 | { |
456 | isShow: false, | 414 | dcode: "901", |
457 | disabled: true, | 415 | dname: "补证", |
458 | czrOptions: [], | 416 | }, |
459 | ssQlxxList: [], | 417 | { |
460 | ruleForm: {}, | 418 | dcode: "902", |
461 | ableOperation: false, | 419 | dname: "换证", |
462 | //传递参数\ | 420 | }, |
463 | rules: { | ||
464 | bdcqzhrules: [ | ||
465 | { required: true, message: "不动产权证号:", trigger: "blur" }, | ||
466 | ], | 421 | ], |
467 | // qxdmrules: [{ required: true, message: "区县代码", trigger: "blur" }], | 422 | // 权属状态 |
468 | djjgrules: [{ required: true, message: "登记机构", trigger: "blur" }], | 423 | qsztlist: [ |
469 | dbrrules: [{ required: true, message: "登簿人", trigger: "blur" }], | 424 | { |
470 | djsjrules: [{ required: true, message: "登记时间", trigger: "blur" }], | 425 | dcode: "1", |
471 | fwjgrules: [{ required: true, message: "房屋结构", trigger: "change" }], | 426 | dname: "现势", |
472 | djlxrules: [{ required: true, message: "登记类型", trigger: "change" }], | 427 | }, |
473 | }, | 428 | { |
474 | }; | 429 | dcode: "2", |
475 | }, | 430 | dname: "历史", |
476 | created() {}, | 431 | }, |
477 | mounted() { | 432 | ], |
478 | this.loadData(); | 433 | key: 0, |
479 | this.ableOperation = this.$parent.ableOperation; | 434 | tdxz: null, |
480 | }, | 435 | isShow: false, |
481 | methods: { | 436 | disabled: true, |
482 | ssQlxxchange(val) { | 437 | czrOptions: [], |
483 | this.ruleForm.ssQlxx = val; | 438 | ssQlxxList: [], |
484 | this.ruleForm.qlxx.ssywh = val.ssywh; | 439 | ruleForm: {}, |
440 | ableOperation: false, | ||
441 | //传递参数\ | ||
442 | rules: { | ||
443 | bdcqzhrules: [ | ||
444 | { required: true, message: "不动产权证号:", trigger: "blur" }, | ||
445 | ], | ||
446 | // qxdmrules: [{ required: true, message: "区县代码", trigger: "blur" }], | ||
447 | djjgrules: [{ required: true, message: "登记机构", trigger: "blur" }], | ||
448 | dbrrules: [{ required: true, message: "登簿人", trigger: "blur" }], | ||
449 | djsjrules: [{ required: true, message: "登记时间", trigger: "blur" }], | ||
450 | fwjgrules: [{ required: true, message: "房屋结构", trigger: "change" }], | ||
451 | djlxrules: [{ required: true, message: "登记类型", trigger: "change" }], | ||
452 | }, | ||
453 | }; | ||
485 | }, | 454 | }, |
486 | djlxchange(val) { | 455 | created () { }, |
487 | console.log("val",val); | 456 | mounted () { |
488 | if (val == null || val == 100) { | 457 | this.loadData(); |
489 | this.ssqlxxshow = false; | 458 | this.ableOperation = this.$parent.ableOperation; |
490 | } else { | ||
491 | this.ssqlxxshow = true; | ||
492 | } | ||
493 | }, | 459 | }, |
460 | methods: { | ||
461 | ssQlxxchange (val) { | ||
462 | this.ruleForm.ssQlxx = val; | ||
463 | this.ruleForm.qlxx.ssywh = val.ssywh; | ||
464 | }, | ||
465 | djlxchange (val) { | ||
466 | console.log("val", val); | ||
467 | if (val == null || val == 100) { | ||
468 | this.ssqlxxshow = false; | ||
469 | } else { | ||
470 | this.ssqlxxshow = true; | ||
471 | } | ||
472 | }, | ||
494 | 473 | ||
495 | loadData() { | 474 | loadData () { |
496 | this.$startLoading(); | 475 | this.$startLoading(); |
497 | this.propsParam.isEdit = this.$parent.isEdit; | 476 | this.propsParam.isEdit = this.$parent.isEdit; |
498 | init(this.propsParam).then((res) => { | 477 | init(this.propsParam).then((res) => { |
499 | if (res.code == 200) { | 478 | if (res.code == 200) { |
500 | this.ruleForm = res.result; | 479 | this.ruleForm = res.result; |
501 | let djlx = this.ruleForm.qlxx.djlx; | 480 | let djlx = this.ruleForm.qlxx.djlx; |
502 | if (djlx == null || djlx == 100) { | 481 | if (djlx == null || djlx == 100) { |
503 | this.ssqlxxshow = false; | 482 | this.ssqlxxshow = false; |
504 | } | 483 | } |
505 | this.$endLoading(); | 484 | this.$endLoading(); |
506 | if (this.ruleForm.tdytqxList.length > 0) { | 485 | if (this.ruleForm.tdytqxList.length > 0) { |
507 | this.tdxz = this.ruleForm.tdytqxList[0].qlxzbm; | 486 | this.tdxz = this.ruleForm.tdytqxList[0].qlxzbm; |
508 | 487 | ||
509 | } else { | 488 | } else { |
510 | this.tdxz = null; | 489 | this.tdxz = null; |
490 | } | ||
491 | this.isShow = true; | ||
511 | } | 492 | } |
512 | this.isShow = true; | 493 | }); |
513 | } | ||
514 | }); | ||
515 | //获取主体信息 | 494 | //获取主体信息 |
516 | getSsQlxx({ | 495 | getSsQlxx({ |
517 | bdcdyid: this.propsParam.bdcdyid, | 496 | bdcdyid: this.propsParam.bdcdyid, |
518 | qllx: this.propsParam.qllx, | 497 | qllx: this.propsParam.qllx, |
519 | }).then((res) => { | 498 | }).then((res) => { |
520 | if (res.code == 200) { | 499 | if (res.code == 200) { |
521 | this.ssQlxxList = res.result; | 500 | this.ssQlxxList = res.result; |
522 | } | ||
523 | }); | ||
524 | }, | ||
525 | // 更新土地用途信息 | ||
526 | upDateTdytxxList(val) { | ||
527 | this.ruleForm.tdytqxList && (this.ruleForm.tdytqxList = _.cloneDeep(val)); | ||
528 | this.key++; | ||
529 | }, | ||
530 | // 更新权利人信息 | ||
531 | upDateQlrxxList(val) { | ||
532 | this.ruleForm.qlrData && (this.ruleForm.qlrData = _.cloneDeep(val)); | ||
533 | this.czrOptions = this.ruleForm.qlrData; | ||
534 | this.key++; | ||
535 | }, | ||
536 | // 更新义务人信息 | ||
537 | upDateYwrxxList(val) { | ||
538 | this.ruleForm.ywrData && (this.ruleForm.ywrData = _.cloneDeep(val)); | ||
539 | this.key++; | ||
540 | }, | ||
541 | onSubmit() { | ||
542 | this.$refs.ruleForm.validate((valid) => { | ||
543 | if (valid) { | ||
544 | if (this.ruleForm.qlrData.length == 0) { | ||
545 | this.$message({ | ||
546 | showClose: true, | ||
547 | message: "请确认权利人信息", | ||
548 | type: "error", | ||
549 | }); | ||
550 | return false; | ||
551 | } | ||
552 | if (this.ruleForm.tdytqxList.length == 0 && !this.tdxz) { | ||
553 | this.$message({ | ||
554 | showClose: true, | ||
555 | message: "请补充土地用途信息", | ||
556 | type: "error", | ||
557 | }); | ||
558 | return false; | ||
559 | } | ||
560 | if (!this.tdxz) { | ||
561 | this.$message({ | ||
562 | showClose: true, | ||
563 | message: "请补充土地性质", | ||
564 | type: "error", | ||
565 | }); | ||
566 | return false; | ||
567 | } | 501 | } |
568 | this.ruleForm.tdytqxList = this.ruleForm.tdytqxList.map((item) => { | 502 | }); |
569 | return { | 503 | }, |
570 | ...item, | 504 | // 更新土地用途信息 |
571 | qlxzbm: this.tdxz, | 505 | upDateTdytxxList (val) { |
572 | }; | 506 | this.ruleForm.tdytqxList && (this.ruleForm.tdytqxList = _.cloneDeep(val)); |
573 | }); | 507 | this.key++; |
574 | if (this.ruleForm.qlxx.gyfs == "0") { | 508 | }, |
575 | if (this.ruleForm.qlrData.length > 1) { | 509 | // 更新权利人信息 |
510 | upDateQlrxxList (val) { | ||
511 | this.ruleForm.qlrData && (this.ruleForm.qlrData = _.cloneDeep(val)); | ||
512 | this.czrOptions = this.ruleForm.qlrData; | ||
513 | this.key++; | ||
514 | }, | ||
515 | // 更新义务人信息 | ||
516 | upDateYwrxxList (val) { | ||
517 | this.ruleForm.ywrData && (this.ruleForm.ywrData = _.cloneDeep(val)); | ||
518 | this.key++; | ||
519 | }, | ||
520 | onSubmit () { | ||
521 | this.$refs.ruleForm.validate((valid) => { | ||
522 | if (valid) { | ||
523 | if (this.ruleForm.qlrData.length == 0) { | ||
576 | this.$message({ | 524 | this.$message({ |
577 | showClose: true, | 525 | showClose: true, |
578 | message: "共有方式:单独所有,权利人只能是一个人", | 526 | message: "请确认权利人信息", |
579 | type: "error", | 527 | type: "error", |
580 | }); | 528 | }); |
581 | return false; | 529 | return false; |
582 | } | 530 | } |
583 | this.ruleForm.qlrData[0].sfczr = "1"; | 531 | if (this.ruleForm.tdytqxList.length == 0 && !this.tdxz) { |
584 | } | ||
585 | // if (this.ruleForm.qlxx.gyfs == "1") { | ||
586 | // //是否分别持证 | ||
587 | // if (this.ruleForm.qlxx.sqfbcz == "1") { | ||
588 | // //是 | ||
589 | // this.ruleForm.qlrData.forEach((item, index) => { | ||
590 | // item.sfczr = "1"; | ||
591 | // }); | ||
592 | // } else { | ||
593 | // this.ruleForm.qlrData.forEach((item, index) => { | ||
594 | // if (item.zjh == this.ruleForm.czr) { | ||
595 | // item.sfczr = "1"; | ||
596 | // } else { | ||
597 | // item.sfczr = "0"; | ||
598 | // } | ||
599 | // }); | ||
600 | // } | ||
601 | // } | ||
602 | save(this.ruleForm).then((res) => { | ||
603 | if (res.code === 200) { | ||
604 | this.$message({ | 532 | this.$message({ |
605 | showClose: true, | 533 | showClose: true, |
606 | message: "保存成功!", | 534 | message: "请补充土地用途信息", |
607 | type: "success", | 535 | type: "error", |
608 | }); | 536 | }); |
609 | this.$store.dispatch("user/refreshPage", true); | 537 | return false; |
610 | } else { | 538 | } |
539 | if (!this.tdxz) { | ||
611 | this.$message({ | 540 | this.$message({ |
612 | showClose: true, | 541 | showClose: true, |
613 | message: res.message, | 542 | message: "请补充土地性质", |
614 | type: "error", | 543 | type: "error", |
615 | }); | 544 | }); |
545 | return false; | ||
616 | } | 546 | } |
617 | }); | 547 | this.ruleForm.tdytqxList = this.ruleForm.tdytqxList.map((item) => { |
618 | } else { | 548 | return { |
619 | return false; | 549 | ...item, |
620 | } | 550 | qlxzbm: this.tdxz, |
621 | }); | 551 | }; |
552 | }); | ||
553 | if (this.ruleForm.qlxx.gyfs == "0") { | ||
554 | if (this.ruleForm.qlrData.length > 1) { | ||
555 | this.$message({ | ||
556 | showClose: true, | ||
557 | message: "共有方式:单独所有,权利人只能是一个人", | ||
558 | type: "error", | ||
559 | }); | ||
560 | return false; | ||
561 | } | ||
562 | this.ruleForm.qlrData[0].sfczr = "1"; | ||
563 | } | ||
564 | // if (this.ruleForm.qlxx.gyfs == "1") { | ||
565 | // //是否分别持证 | ||
566 | // if (this.ruleForm.qlxx.sqfbcz == "1") { | ||
567 | // //是 | ||
568 | // this.ruleForm.qlrData.forEach((item, index) => { | ||
569 | // item.sfczr = "1"; | ||
570 | // }); | ||
571 | // } else { | ||
572 | // this.ruleForm.qlrData.forEach((item, index) => { | ||
573 | // if (item.zjh == this.ruleForm.czr) { | ||
574 | // item.sfczr = "1"; | ||
575 | // } else { | ||
576 | // item.sfczr = "0"; | ||
577 | // } | ||
578 | // }); | ||
579 | // } | ||
580 | // } | ||
581 | save(this.ruleForm).then((res) => { | ||
582 | if (res.code === 200) { | ||
583 | this.$message({ | ||
584 | showClose: true, | ||
585 | message: "保存成功!", | ||
586 | type: "success", | ||
587 | }); | ||
588 | this.$store.dispatch("user/refreshPage", true); | ||
589 | } else { | ||
590 | this.$message({ | ||
591 | showClose: true, | ||
592 | message: res.message, | ||
593 | type: "error", | ||
594 | }); | ||
595 | } | ||
596 | }); | ||
597 | } else { | ||
598 | return false; | ||
599 | } | ||
600 | }); | ||
601 | }, | ||
622 | }, | 602 | }, |
623 | }, | 603 | }; |
624 | }; | ||
625 | </script> | 604 | </script> |
626 | <style scoped lang="scss"> | 605 | <style scoped lang="scss"> |
627 | @import "~@/styles/public.scss"; | 606 | @import "~@/styles/public.scss"; |
628 | @import "~@/styles/slxx/slxx.scss"; | 607 | @import "~@/styles/slxx/slxx.scss"; |
629 | </style> | 608 | </style> | ... | ... |
1 | <!-- | ||
2 | * @Description: | ||
3 | * @Autor: renchao | ||
4 | * @LastEditTime: 2023-07-19 16:04:43 | ||
5 | --> | ||
1 | <template> | 6 | <template> |
2 | <dialogBox title="新增法律法规" @submitForm="submitForm" saveButton="保存" :isFullscreen="false" width="50%" | 7 | <dialogBox title="新增法律法规" @submitForm="submitForm" saveButton="保存" :isFullscreen="false" width="50%" |
3 | @closeDialog="closeDialog" v-model="value"> | 8 | @closeDialog="closeDialog" v-model="value"> |
... | @@ -25,72 +30,71 @@ | ... | @@ -25,72 +30,71 @@ |
25 | </template> | 30 | </template> |
26 | 31 | ||
27 | <script> | 32 | <script> |
28 | import { addSysNotice } from "@/api/sysNotice.js" | 33 | import { addSysNotice } from "@/api/sysNotice.js" |
29 | import { upload } from "@/api/file.js" | 34 | import { upload } from "@/api/file.js" |
30 | export default { | 35 | export default { |
31 | props: { | 36 | props: { |
32 | value: { type: Boolean, default: false }, | 37 | value: { type: Boolean, default: false }, |
33 | }, | 38 | }, |
34 | data () { | 39 | data () { |
35 | return { | 40 | return { |
36 | ruleForm: { | 41 | ruleForm: { |
37 | noticeTitle: '', | 42 | noticeTitle: '', |
38 | noticeContent: '', | 43 | noticeContent: '', |
39 | noticeFileUrl: '', | 44 | noticeFileUrl: '', |
40 | noticeType: '2' | 45 | noticeType: '2' |
46 | }, | ||
47 | rules: { | ||
48 | noticeTitle: [ | ||
49 | { required: true, message: '请输入法律法规标题', trigger: 'blur' } | ||
50 | ] | ||
51 | }, | ||
52 | } | ||
53 | }, | ||
54 | |||
55 | methods: { | ||
56 | submitForm () { | ||
57 | let that = this; | ||
58 | that.$refs.ruleForm.validate(valid => { | ||
59 | if (valid) { | ||
60 | addSysNotice(this.ruleForm).then(res => { | ||
61 | if (res.code == 200) { | ||
62 | this.$message.success('保存成功') | ||
63 | this.$emit("input", false); | ||
64 | this.resetRuleForm(); | ||
65 | this.$parent.queryClick(); | ||
66 | } else { | ||
67 | this.$message.error(res.message) | ||
68 | } | ||
69 | }) | ||
70 | } else { | ||
71 | // console.log('error submit!!'); | ||
72 | return false; | ||
73 | } | ||
74 | }); | ||
75 | }, | ||
76 | //关闭窗口 | ||
77 | closeDialog () { | ||
78 | this.$emit("input", false); | ||
79 | this.resetRuleForm(); | ||
41 | }, | 80 | }, |
42 | rules: { | 81 | // |
43 | noticeTitle: [ | 82 | resetRuleForm () { |
44 | { required: true, message: '请输入法律法规标题', trigger: 'blur' } | 83 | this.$refs['ruleForm'].resetFields(); |
45 | ] | 84 | this.ruleForm.noticeType = '2' |
85 | }, | ||
86 | beforeUpload (file) { | ||
87 | return true; | ||
88 | }, | ||
89 | async handleChange (file) { | ||
90 | var formdata = new FormData(); | ||
91 | formdata.append("file", file.raw); | ||
92 | upload(formdata).then(res => { | ||
93 | this.ruleForm.noticeFileUrl = res.message | ||
94 | }) | ||
46 | }, | 95 | }, |
47 | } | 96 | } |
48 | }, | ||
49 | |||
50 | methods: { | ||
51 | submitForm () { | ||
52 | let that = this; | ||
53 | that.$refs.ruleForm.validate(valid => { | ||
54 | if (valid) { | ||
55 | addSysNotice(this.ruleForm).then(res => { | ||
56 | if (res.code == 200) { | ||
57 | this.$message.success('保存成功') | ||
58 | this.$emit("input", false); | ||
59 | this.resetRuleForm(); | ||
60 | this.$parent.queryClick(); | ||
61 | } else { | ||
62 | this.$message.error(res.message) | ||
63 | } | ||
64 | }) | ||
65 | } else { | ||
66 | // console.log('error submit!!'); | ||
67 | return false; | ||
68 | } | ||
69 | }); | ||
70 | }, | ||
71 | //关闭窗口 | ||
72 | closeDialog () { | ||
73 | this.$emit("input", false); | ||
74 | this.resetRuleForm(); | ||
75 | }, | ||
76 | // | ||
77 | resetRuleForm () { | ||
78 | this.$refs['ruleForm'].resetFields(); | ||
79 | this.ruleForm.noticeType = '2' | ||
80 | }, | ||
81 | beforeUpload (file) { | ||
82 | return true; | ||
83 | }, | ||
84 | async handleChange (file) { | ||
85 | var formdata = new FormData(); | ||
86 | formdata.append("file", file.raw); | ||
87 | upload(formdata).then(res => { | ||
88 | this.ruleForm.noticeFileUrl = res.message | ||
89 | }) | ||
90 | }, | ||
91 | } | 97 | } |
92 | } | ||
93 | </script> | 98 | </script> |
94 | <style scoped lang="scss"> | 99 | <style scoped lang="scss"> |
95 | |||
96 | </style> | 100 | </style> | ... | ... |
1 | <!-- | ||
2 | * @Description: | ||
3 | * @Autor: renchao | ||
4 | * @LastEditTime: 2023-07-19 16:04:47 | ||
5 | --> | ||
1 | <template> | 6 | <template> |
2 | <div class="from-clues"> | 7 | <div class="from-clues"> |
3 | <!-- 表单部分 --> | 8 | <!-- 表单部分 --> |
... | @@ -11,7 +16,7 @@ | ... | @@ -11,7 +16,7 @@ |
11 | </el-col> | 16 | </el-col> |
12 | <el-col :span="19" class="btnColRight"> | 17 | <el-col :span="19" class="btnColRight"> |
13 | <el-form-item> | 18 | <el-form-item> |
14 | <el-button type="primary" native-type="submit" @click="handleSearch">查询1</el-button> | 19 | <el-button type="primary" native-type="submit" @click="handleSearch">查询1</el-button> |
15 | <el-button type="primary" @click="openDialog()">新增</el-button> | 20 | <el-button type="primary" @click="openDialog()">新增</el-button> |
16 | </el-form-item> | 21 | </el-form-item> |
17 | </el-col> | 22 | </el-col> |
... | @@ -29,79 +34,79 @@ | ... | @@ -29,79 +34,79 @@ |
29 | </div> | 34 | </div> |
30 | </template> | 35 | </template> |
31 | <script> | 36 | <script> |
32 | import table from "@/utils/mixin/table"; | 37 | import table from "@/utils/mixin/table"; |
33 | import { datas, sendThis } from "./flfgdata"; | 38 | import { datas, sendThis } from "./flfgdata"; |
34 | import { getSysPolicyList, deleteSysNotice } from "@/api/sysNotice.js" | 39 | import { getSysPolicyList, deleteSysNotice } from "@/api/sysNotice.js" |
35 | import addDialog from "./components/addDialog.vue"; | 40 | import addDialog from "./components/addDialog.vue"; |
36 | export default { | 41 | export default { |
37 | name: "flfg", | 42 | name: "flfg", |
38 | components: { addDialog }, | 43 | components: { addDialog }, |
39 | mixins: [table], | 44 | mixins: [table], |
40 | mounted () { | 45 | mounted () { |
41 | sendThis(this); | 46 | sendThis(this); |
42 | this.queryClick() | 47 | this.queryClick() |
43 | }, | ||
44 | data () { | ||
45 | return { | ||
46 | isDialog: false, | ||
47 | viewDialog: false, | ||
48 | ruleForm: { | ||
49 | noticeTitle: '' | ||
50 | }, | ||
51 | tableData: { | ||
52 | total: 0, | ||
53 | columns: datas.columns(), | ||
54 | data: [], | ||
55 | }, | ||
56 | isDiglog: false | ||
57 | } | ||
58 | }, | ||
59 | methods: { | ||
60 | // 列表渲染接口 | ||
61 | queryClick () { | ||
62 | this.$startLoading() | ||
63 | getSysPolicyList({ ...this.ruleForm, ...this.pageData }, { 'target': '#flfgLoading' }).then(res => { | ||
64 | if (res.code === 200) { | ||
65 | this.$endLoading() | ||
66 | let { total, records } = res.result | ||
67 | this.tableData.total = total; | ||
68 | this.tableData.data = records | ||
69 | } | ||
70 | }) | ||
71 | }, | 48 | }, |
72 | //打开新增弹窗 | 49 | data () { |
73 | openDialog () { | 50 | return { |
74 | this.isDialog = true; | 51 | isDialog: false, |
52 | viewDialog: false, | ||
53 | ruleForm: { | ||
54 | noticeTitle: '' | ||
55 | }, | ||
56 | tableData: { | ||
57 | total: 0, | ||
58 | columns: datas.columns(), | ||
59 | data: [], | ||
60 | }, | ||
61 | isDiglog: false | ||
62 | } | ||
75 | }, | 63 | }, |
76 | downloadFile (item) { | 64 | methods: { |
77 | const href = item.noticeFileUrl | 65 | // 列表渲染接口 |
78 | window.open(href, '_blank'); | 66 | queryClick () { |
79 | }, | 67 | this.$startLoading() |
80 | //删除 | 68 | getSysPolicyList({ ...this.ruleForm, ...this.pageData }, { 'target': '#flfgLoading' }).then(res => { |
81 | delNotice (item) { | 69 | if (res.code === 200) { |
82 | this.$confirm('是否确定删除', '提示', { | 70 | this.$endLoading() |
83 | confirmButtonText: '确定', | 71 | let { total, records } = res.result |
84 | cancelButtonText: '取消', | 72 | this.tableData.total = total; |
85 | type: 'warning' | 73 | this.tableData.data = records |
86 | }).then(() => { | ||
87 | deleteSysNotice({ "bsmNotice": item.bsmNotice }).then(res => { | ||
88 | if (res.code == 200) { | ||
89 | this.$message.success('删除成功') | ||
90 | this.queryClick(); | ||
91 | } else { | ||
92 | this.$message.error(res.message) | ||
93 | } | 74 | } |
94 | }) | 75 | }) |
95 | }).catch(() => { | 76 | }, |
96 | this.$message({ | 77 | //打开新增弹窗 |
97 | type: 'info', | 78 | openDialog () { |
98 | message: '已取消删除' | 79 | this.isDialog = true; |
80 | }, | ||
81 | downloadFile (item) { | ||
82 | const href = item.noticeFileUrl | ||
83 | window.open(href, '_blank'); | ||
84 | }, | ||
85 | //删除 | ||
86 | delNotice (item) { | ||
87 | this.$confirm('是否确定删除', '提示', { | ||
88 | confirmButtonText: '确定', | ||
89 | cancelButtonText: '取消', | ||
90 | type: 'warning' | ||
91 | }).then(() => { | ||
92 | deleteSysNotice({ "bsmNotice": item.bsmNotice }).then(res => { | ||
93 | if (res.code == 200) { | ||
94 | this.$message.success('删除成功') | ||
95 | this.queryClick(); | ||
96 | } else { | ||
97 | this.$message.error(res.message) | ||
98 | } | ||
99 | }) | ||
100 | }).catch(() => { | ||
101 | this.$message({ | ||
102 | type: 'info', | ||
103 | message: '已取消删除' | ||
104 | }); | ||
99 | }); | 105 | }); |
100 | }); | 106 | }, |
101 | }, | 107 | }, |
102 | }, | 108 | }; |
103 | }; | ||
104 | </script> | 109 | </script> |
105 | <style scoped lang="scss"> | 110 | <style scoped lang="scss"> |
106 | @import "~@/styles/public.scss"; | 111 | @import "~@/styles/public.scss"; |
107 | </style> | 112 | </style> | ... | ... |
1 | <!-- | ||
2 | * @Description: | ||
3 | * @Autor: renchao | ||
4 | * @LastEditTime: 2023-07-19 16:04:58 | ||
5 | --> | ||
1 | <template> | 6 | <template> |
2 | <div> | 7 | <div> |
3 | <div class="qtjfjmb-edit-title"> | 8 | <div class="qtjfjmb-edit-title"> |
... | @@ -117,140 +122,140 @@ | ... | @@ -117,140 +122,140 @@ |
117 | </template> | 122 | </template> |
118 | 123 | ||
119 | <script> | 124 | <script> |
120 | import { updateSysSqywmbsz, getSysSqywmbszDetailById } from '@/api/sysSqywmbsz' | 125 | import { updateSysSqywmbsz, getSysSqywmbszDetailById } from '@/api/sysSqywmbsz' |
121 | export default { | 126 | export default { |
122 | props: { | 127 | props: { |
123 | formData: { | 128 | formData: { |
124 | type: Object, | 129 | type: Object, |
125 | default: () => { } | 130 | default: () => { } |
126 | } | 131 | } |
127 | }, | 132 | }, |
128 | mounted () { | 133 | mounted () { |
129 | if (this.formData.bsmMb) { | 134 | if (this.formData.bsmMb) { |
130 | this.$startLoading() | 135 | this.$startLoading() |
131 | getSysSqywmbszDetailById(this.formData.bsmMb).then(res => { | 136 | getSysSqywmbszDetailById(this.formData.bsmMb).then(res => { |
132 | this.$endLoading() | 137 | this.$endLoading() |
133 | let { result } = res | 138 | let { result } = res |
134 | this.ruleForm = result ? result : {} | 139 | this.ruleForm = result ? result : {} |
135 | }) | 140 | }) |
136 | } | 141 | } |
137 | }, | 142 | }, |
138 | data () { | 143 | data () { |
139 | return { | 144 | return { |
140 | n: 0, | 145 | n: 0, |
141 | ruleForm: { | 146 | ruleForm: { |
142 | qllx: '', | 147 | qllx: '', |
143 | qllxmc: '', | 148 | qllxmc: '', |
144 | bdcqzlx: '', | 149 | bdcqzlx: '', |
145 | dymbbs: '', | 150 | dymbbs: '', |
146 | qlqtzk: '', | 151 | qlqtzk: '', |
147 | firstreg: '', | 152 | firstreg: '', |
148 | }, | ||
149 | options: [ | ||
150 | { | ||
151 | value: '1', | ||
152 | label: '不动产权证书' | ||
153 | }, | 153 | }, |
154 | { | 154 | options: [ |
155 | value: '2', | 155 | { |
156 | label: '不动产登记证明' | 156 | value: '1', |
157 | } | 157 | label: '不动产权证书' |
158 | ], | 158 | }, |
159 | options1: [], | 159 | { |
160 | rules: { | 160 | value: '2', |
161 | qllx: [ | 161 | label: '不动产登记证明' |
162 | { required: true, message: '请输入权利类型编码', trigger: 'blur' } | 162 | } |
163 | ], | 163 | ], |
164 | qllxmc: [ | 164 | options1: [], |
165 | { required: true, message: '请输入权利类型名称', trigger: 'blur' } | 165 | rules: { |
166 | ], | 166 | qllx: [ |
167 | bdcqzlx: [ | 167 | { required: true, message: '请输入权利类型编码', trigger: 'blur' } |
168 | { required: true, message: '请选择不动产权类型', trigger: 'change' } | 168 | ], |
169 | ], | 169 | qllxmc: [ |
170 | dymbbs: [ | 170 | { required: true, message: '请输入权利类型名称', trigger: 'blur' } |
171 | { required: true, message: '请输入打印模板', trigger: 'blur' } | 171 | ], |
172 | ], | 172 | bdcqzlx: [ |
173 | qlqtztmb: [ | 173 | { required: true, message: '请选择不动产权类型', trigger: 'change' } |
174 | { required: true, message: '请输入权利其他状况模板', trigger: 'blur' } | 174 | ], |
175 | ], | 175 | dymbbs: [ |
176 | }, | 176 | { required: true, message: '请输入打印模板', trigger: 'blur' } |
177 | titleList: [ | 177 | ], |
178 | { | 178 | qlqtztmb: [ |
179 | name: '首次登记' | 179 | { required: true, message: '请输入权利其他状况模板', trigger: 'blur' } |
180 | ], | ||
180 | }, | 181 | }, |
181 | { | 182 | titleList: [ |
182 | name: '转移登记' | 183 | { |
183 | }, | 184 | name: '首次登记' |
184 | { | 185 | }, |
185 | name: '变更登记' | 186 | { |
186 | }, | 187 | name: '转移登记' |
187 | { | 188 | }, |
188 | name: '注销登记' | 189 | { |
189 | }, | 190 | name: '变更登记' |
190 | { | 191 | }, |
191 | name: '更正登记' | 192 | { |
192 | }, | 193 | name: '注销登记' |
193 | { | 194 | }, |
194 | name: '补证登记' | 195 | { |
195 | }, | 196 | name: '更正登记' |
196 | { | 197 | }, |
197 | name: '换证登记' | 198 | { |
198 | } | 199 | name: '补证登记' |
199 | ] | 200 | }, |
200 | } | 201 | { |
201 | }, | 202 | name: '换证登记' |
202 | methods: { | 203 | } |
203 | handleSelect (index) { | 204 | ] |
204 | this.n = index | 205 | } |
205 | }, | 206 | }, |
206 | submitForm () { | 207 | methods: { |
207 | let that = this | 208 | handleSelect (index) { |
208 | updateSysSqywmbsz(this.ruleForm).then(res => { | 209 | this.n = index |
209 | if (res.code === 200) { | 210 | }, |
210 | this.$popupCacel() | 211 | submitForm () { |
211 | that.$message({ | 212 | let that = this |
212 | message: '修改成功', | 213 | updateSysSqywmbsz(this.ruleForm).then(res => { |
213 | type: 'success' | 214 | if (res.code === 200) { |
214 | }) | 215 | this.$popupCacel() |
215 | } | 216 | that.$message({ |
216 | }) | 217 | message: '修改成功', |
218 | type: 'success' | ||
219 | }) | ||
220 | } | ||
221 | }) | ||
222 | } | ||
217 | } | 223 | } |
218 | } | 224 | } |
219 | } | ||
220 | </script> | 225 | </script> |
221 | <style scoped lang="scss"> | 226 | <style scoped lang="scss"> |
222 | @import "~@/styles/mixin.scss"; | 227 | @import "~@/styles/mixin.scss"; |
223 | @import "~@/styles/dialogBoxheader.scss"; | 228 | @import "~@/styles/dialogBoxheader.scss"; |
224 | 229 | ||
225 | .qtjfjmb-edit-title { | 230 | .qtjfjmb-edit-title { |
226 | padding-bottom: 10px; | 231 | padding-bottom: 10px; |
227 | border-bottom: 1px solid $borderColor; | 232 | border-bottom: 1px solid $borderColor; |
228 | margin-bottom: 10px; | 233 | margin-bottom: 10px; |
229 | } | 234 | } |
230 | 235 | ||
231 | ul { | 236 | ul { |
232 | @include flex; | 237 | @include flex; |
233 | border-radius: 5px; | 238 | border-radius: 5px; |
234 | overflow: hidden; | 239 | overflow: hidden; |
235 | margin-bottom: 20px; | 240 | margin-bottom: 20px; |
236 | 241 | ||
237 | .active { | 242 | .active { |
238 | background: $light-blue; | 243 | background: $light-blue; |
239 | color: #fff; | 244 | color: #fff; |
240 | } | 245 | } |
241 | 246 | ||
242 | li { | 247 | li { |
243 | flex: 1; | 248 | flex: 1; |
244 | line-height: 36px; | 249 | line-height: 36px; |
245 | @include flex-center; | 250 | @include flex-center; |
246 | border: 1px solid $borderColor; | 251 | border: 1px solid $borderColor; |
247 | margin-left: -1px; | 252 | margin-left: -1px; |
248 | cursor: pointer; | 253 | cursor: pointer; |
249 | transition: all 0.3s; | 254 | transition: all 0.3s; |
250 | 255 | ||
251 | &:hover { | 256 | &:hover { |
252 | @extend .active; | 257 | @extend .active; |
258 | } | ||
253 | } | 259 | } |
254 | } | 260 | } |
255 | } | ||
256 | </style> | 261 | </style> | ... | ... |
1 | <!-- | 1 | <!-- |
2 | * @Description: 功能:审批意见 | 2 | * @Description: 功能:审批意见 |
3 | * @Autor: renchao | 3 | * @Autor: renchao |
4 | * @LastEditTime: 2023-05-17 10:41:24 | 4 | * @LastEditTime: 2023-07-20 09:52:48 |
5 | --> | 5 | --> |
6 | <template> | 6 | <template> |
7 | <div class='spyj loadingtext'> | 7 | <div class='spyj loadingtext'> |
... | @@ -83,7 +83,7 @@ | ... | @@ -83,7 +83,7 @@ |
83 | }, | 83 | }, |
84 | }, | 84 | }, |
85 | mounted () { | 85 | mounted () { |
86 | this.ableOperation = this.$parent.ableOperation; | 86 | this.ableOperation = this.$parent.currentSelectTab.ableOperation |
87 | this.list(); | 87 | this.list(); |
88 | }, | 88 | }, |
89 | methods: { | 89 | methods: { |
... | @@ -94,7 +94,6 @@ | ... | @@ -94,7 +94,6 @@ |
94 | var formdata = new FormData(); | 94 | var formdata = new FormData(); |
95 | formdata.append("bsmBusiness", this.propsParam.bsmBusiness); | 95 | formdata.append("bsmBusiness", this.propsParam.bsmBusiness); |
96 | formdata.append("bestepid", this.$route.query.bestepid); | 96 | formdata.append("bestepid", this.$route.query.bestepid); |
97 | // formdata.append("ableOperation", this.ableOperation) | ||
98 | getSpyjList(formdata).then((res) => { | 97 | getSpyjList(formdata).then((res) => { |
99 | this.$endLoading() | 98 | this.$endLoading() |
100 | if (res.code === 200 && res.result) { | 99 | if (res.code === 200 && res.result) { | ... | ... |
1 | <!-- | 1 | <!-- |
2 | * @Description: 受理信息 | 2 | * @Description: 受理信息 |
3 | * @Autor: renchao | 3 | * @Autor: renchao |
4 | * @LastEditTime: 2023-05-25 08:41:40 | 4 | * @LastEditTime: 2023-07-20 09:30:21 |
5 | --> | 5 | --> |
6 | <template> | 6 | <template> |
7 | <div class="slxx"> | 7 | <div class="slxx"> |
8 | <el-form :model="ruleForm" :rules="rules" ref="ruleForm" :label-position="flag ? 'top' : ''" :inline="flag" | 8 | <el-form :model="ruleForm" :rules="rules" ref="ruleForm" :label-position="flag ? 'top' : ''" :inline="flag" |
9 | label-width="120px"> | 9 | label-width="120px"> |
10 | <div class="slxx_con" :class="flag ? 'formMarginBot0' : ''"> | 10 | <div class="slxx_con" :class="flag ? 'formMarginBot0' : ''"> |
11 | <div class="slxx_title title-block"> | 11 | <div class="slxx_title title-block"> |
12 | 受理信息 | 12 | 受理信息 |
... | @@ -102,7 +102,7 @@ | ... | @@ -102,7 +102,7 @@ |
102 | <el-col :span="14"> | 102 | <el-col :span="14"> |
103 | <el-form-item label="共有方式:"> | 103 | <el-form-item label="共有方式:"> |
104 | <el-radio-group :disabled="!ableOperation" @change="showCZInfo" | 104 | <el-radio-group :disabled="!ableOperation" @change="showCZInfo" |
105 | v-model="ruleForm.sldyList[0].gyfs"> | 105 | v-model="ruleForm.sldyList[0].gyfs"> |
106 | <el-radio label="0">单独所有</el-radio> | 106 | <el-radio label="0">单独所有</el-radio> |
107 | <el-radio label="1">共同共有</el-radio> | 107 | <el-radio label="1">共同共有</el-radio> |
108 | <el-radio label="2">按份所有</el-radio> | 108 | <el-radio label="2">按份所有</el-radio> |
... | @@ -111,7 +111,6 @@ | ... | @@ -111,7 +111,6 @@ |
111 | </el-form-item> | 111 | </el-form-item> |
112 | </el-col> | 112 | </el-col> |
113 | 113 | ||
114 | |||
115 | <el-col :span="5" v-show=" ruleForm.slsq.gyfs == '2'"> | 114 | <el-col :span="5" v-show=" ruleForm.slsq.gyfs == '2'"> |
116 | <el-form-item label="是否分别持证:"> | 115 | <el-form-item label="是否分别持证:"> |
117 | <el-radio-group v-model="ruleForm.sldyList[0].sqfbcz"> | 116 | <el-radio-group v-model="ruleForm.sldyList[0].sqfbcz"> |
... | @@ -130,7 +129,7 @@ | ... | @@ -130,7 +129,7 @@ |
130 | </el-col> | 129 | </el-col> |
131 | </el-row> | 130 | </el-row> |
132 | <qlrCommonTable @upDateQlrxxList="upDateQlrxxList" :tableData="ruleForm.qlrList" | 131 | <qlrCommonTable @upDateQlrxxList="upDateQlrxxList" :tableData="ruleForm.qlrList" |
133 | :gyfs="ruleForm.slsq.gyfs" /> | 132 | :gyfs="ruleForm.slsq.gyfs" /> |
134 | <div class="slxx_title title-block"> | 133 | <div class="slxx_title title-block"> |
135 | 登记原因 | 134 | 登记原因 |
136 | <div class="triangle"></div> | 135 | <div class="triangle"></div> |
... | @@ -139,7 +138,7 @@ | ... | @@ -139,7 +138,7 @@ |
139 | <el-col> | 138 | <el-col> |
140 | <el-form-item v-if="ruleForm.slsq" label="登记原因:" prop="djyy"> | 139 | <el-form-item v-if="ruleForm.slsq" label="登记原因:" prop="djyy"> |
141 | <el-input class="textArea" type="textarea" :disabled="!ableOperation" | 140 | <el-input class="textArea" type="textarea" :disabled="!ableOperation" |
142 | v-model="ruleForm.fdcq2List[0].djyy"> | 141 | v-model="ruleForm.fdcq2List[0].djyy"> |
143 | </el-input> | 142 | </el-input> |
144 | </el-form-item> | 143 | </el-form-item> |
145 | </el-col> | 144 | </el-col> |
... | @@ -154,192 +153,192 @@ | ... | @@ -154,192 +153,192 @@ |
154 | </div> | 153 | </div> |
155 | </template> | 154 | </template> |
156 | <script> | 155 | <script> |
157 | import qlrCommonTable from "@/views/workflow/components/qlrCommonTable"; | 156 | import qlrCommonTable from "@/views/workflow/components/qlrCommonTable"; |
158 | import {BatchInit, Init, saveBatchData, saveData} from "@/api/workflow/fwsyqFlow.js"; | 157 | import { BatchInit, Init, saveBatchData, saveData } from "@/api/workflow/fwsyqFlow.js"; |
159 | import { mapGetters } from "vuex"; | 158 | import { mapGetters } from "vuex"; |
160 | export default { | 159 | export default { |
161 | created(callbackfn, thisArg) { | 160 | created (callbackfn, thisArg) { |
162 | this.ableOperation = this.$parent.currentSelectTab.ableOperation | 161 | this.ableOperation = this.$parent.currentSelectTab.ableOperation |
163 | this.propsParam = this.$attrs; | 162 | this.propsParam = this.$attrs; |
164 | var formdata = new FormData(); | 163 | var formdata = new FormData(); |
165 | formdata.append("bsmSldy", this.propsParam.bsmSldy); | 164 | formdata.append("bsmSldy", this.propsParam.bsmSldy); |
166 | formdata.append("djlx", this.propsParam.djlx); | 165 | formdata.append("djlx", this.propsParam.djlx); |
167 | formdata.append("bsmSlsq", this.bsmSlsq); | 166 | formdata.append("bsmSlsq", this.bsmSlsq); |
168 | formdata.append("isEdit", this.ableOperation); | 167 | formdata.append("isEdit", this.ableOperation); |
169 | BatchInit(formdata).then((res) => { | 168 | BatchInit(formdata).then((res) => { |
170 | if (res.code === 200 && res.result) { | 169 | if (res.code === 200 && res.result) { |
171 | this.ruleForm = res.result; | 170 | this.ruleForm = res.result; |
172 | this.splicingFdcq2Info(); | 171 | this.splicingFdcq2Info(); |
173 | } | 172 | } |
174 | }); | 173 | }); |
175 | |||
176 | }, | ||
177 | components: { qlrCommonTable }, | ||
178 | computed: { | ||
179 | ...mapGetters(["dictData", "flag"]), | ||
180 | }, | ||
181 | data () { | ||
182 | return { | ||
183 | disabled: true, | ||
184 | tdytOption: [], | ||
185 | czrOptions: [], | ||
186 | ruleForm: { | ||
187 | cfdjList:[]//查封登记 | ||
188 | ,diyaqList:[]//抵押权 | ||
189 | ,fdcq2List:[]//房屋信息集合 | ||
190 | ,qlrList:[]//权利人 | ||
191 | ,ywrList:[]//义务人 | ||
192 | ,qlxxList:[]//权利信息集合 | ||
193 | ,sldyList:[]//受理不动产单元集合 | ||
194 | ,slsq: {}//受理申请流程明细 | ||
195 | ,flow: {}//受理申请流程明细 | ||
196 | ,sqrList:[]//申请人 | ||
197 | ,ssQlxxList:[]//上手权利信息 | ||
198 | ,user:{}//用户 | ||
199 | ,zdjbxx: {}//宗地基本信息 | ||
200 | }, | ||
201 | //传递参数 | ||
202 | propsParam: this.$attrs, | ||
203 | //表单是否可操作 | ||
204 | ableOperation: true, | ||
205 | rules: {}, | ||
206 | bsmSlsq: this.$route.query.bsmSlsq,//受理申请标识码 | ||
207 | splicingFdcq2:{//前端根据后台数组组装展示内容 | ||
208 | fwxz:{}//房屋性质 | ||
209 | ,fwjg:{}//房屋结构 | ||
210 | ,jzmj:{} //建筑面积 | ||
211 | ,zts:{}//房屋总套数 | ||
212 | } | ||
213 | } | ||
214 | }, | ||
215 | methods: { | ||
216 | //组装房地产权通用信息 | ||
217 | splicingFdcq2Info(){ | ||
218 | let fdcq2List = this.ruleForm.fdcq2List; | ||
219 | let fwxzArr = []; | ||
220 | let fwjgArr = []; | ||
221 | let jzmj = 0; | ||
222 | fdcq2List.forEach(fdcq2 => { | ||
223 | fwxzArr.push(fdcq2.fwxzmc); | ||
224 | fwjgArr.push(fdcq2.fwjgmc); | ||
225 | jzmj += parseFloat(fdcq2.jzmj); | ||
226 | }) | ||
227 | //将数据转为字符串 | ||
228 | //房屋性质 | ||
229 | let fwxz = Array.from(new Set(fwxzArr)).join(","); | ||
230 | //房屋结构 | ||
231 | let fwjg = Array.from(new Set(fwjgArr)).join(","); | ||
232 | this.splicingFdcq2.fwxz = fwxz; | ||
233 | this.splicingFdcq2.fwjg = fwjg; | ||
234 | this.splicingFdcq2.jzmj = jzmj==null ? 0 : jzmj; | ||
235 | this.splicingFdcq2.zts = fdcq2List.length; | ||
236 | |||
237 | }, | ||
238 | 174 | ||
239 | // 更新权利人信息 | ||
240 | upDateQlrxxList (val) { | ||
241 | this.ruleForm.qlrList = _.cloneDeep(val); | ||
242 | }, | ||
243 | showCZInfo () { | ||
244 | console.log(this.ruleForm.slsq.gyfs); | ||
245 | }, | 175 | }, |
246 | // 更新义务人信息 | 176 | components: { qlrCommonTable }, |
247 | upDateYwrxxList (val) { | 177 | computed: { |
248 | this.ruleForm.ywrList = _.cloneDeep(val); | 178 | ...mapGetters(["dictData", "flag"]), |
249 | }, | 179 | }, |
250 | onSubmit () { | 180 | data () { |
251 | saveBatchData(this.ruleForm).then((res) => { | 181 | return { |
252 | if (res.code === 200) { | 182 | disabled: true, |
253 | this.$message({ | 183 | tdytOption: [], |
254 | showClose: true, | 184 | czrOptions: [], |
255 | message: "保存成功!", | 185 | ruleForm: { |
256 | type: "success", | 186 | cfdjList: []//查封登记 |
257 | }); | 187 | , diyaqList: []//抵押权 |
258 | this.$store.dispatch('user/refreshPage', true); | 188 | , fdcq2List: []//房屋信息集合 |
259 | } else { | 189 | , qlrList: []//权利人 |
260 | this.$message({ | 190 | , ywrList: []//义务人 |
261 | showClose: true, | 191 | , qlxxList: []//权利信息集合 |
262 | message: res.message, | 192 | , sldyList: []//受理不动产单元集合 |
263 | type: "error" | 193 | , slsq: {}//受理申请流程明细 |
264 | }) | 194 | , flow: {}//受理申请流程明细 |
195 | , sqrList: []//申请人 | ||
196 | , ssQlxxList: []//上手权利信息 | ||
197 | , user: {}//用户 | ||
198 | , zdjbxx: {}//宗地基本信息 | ||
199 | }, | ||
200 | //传递参数 | ||
201 | propsParam: this.$attrs, | ||
202 | //表单是否可操作 | ||
203 | ableOperation: true, | ||
204 | rules: {}, | ||
205 | bsmSlsq: this.$route.query.bsmSlsq,//受理申请标识码 | ||
206 | splicingFdcq2: {//前端根据后台数组组装展示内容 | ||
207 | fwxz: {}//房屋性质 | ||
208 | , fwjg: {}//房屋结构 | ||
209 | , jzmj: {} //建筑面积 | ||
210 | , zts: {}//房屋总套数 | ||
265 | } | 211 | } |
266 | }) | 212 | } |
213 | }, | ||
214 | methods: { | ||
215 | //组装房地产权通用信息 | ||
216 | splicingFdcq2Info () { | ||
217 | let fdcq2List = this.ruleForm.fdcq2List; | ||
218 | let fwxzArr = []; | ||
219 | let fwjgArr = []; | ||
220 | let jzmj = 0; | ||
221 | fdcq2List.forEach(fdcq2 => { | ||
222 | fwxzArr.push(fdcq2.fwxzmc); | ||
223 | fwjgArr.push(fdcq2.fwjgmc); | ||
224 | jzmj += parseFloat(fdcq2.jzmj); | ||
225 | }) | ||
226 | //将数据转为字符串 | ||
227 | //房屋性质 | ||
228 | let fwxz = Array.from(new Set(fwxzArr)).join(","); | ||
229 | //房屋结构 | ||
230 | let fwjg = Array.from(new Set(fwjgArr)).join(","); | ||
231 | this.splicingFdcq2.fwxz = fwxz; | ||
232 | this.splicingFdcq2.fwjg = fwjg; | ||
233 | this.splicingFdcq2.jzmj = jzmj == null ? 0 : jzmj; | ||
234 | this.splicingFdcq2.zts = fdcq2List.length; | ||
235 | |||
236 | }, | ||
237 | |||
238 | // 更新权利人信息 | ||
239 | upDateQlrxxList (val) { | ||
240 | this.ruleForm.qlrList = _.cloneDeep(val); | ||
241 | }, | ||
242 | showCZInfo () { | ||
243 | console.log(this.ruleForm.slsq.gyfs); | ||
244 | }, | ||
245 | // 更新义务人信息 | ||
246 | upDateYwrxxList (val) { | ||
247 | this.ruleForm.ywrList = _.cloneDeep(val); | ||
248 | }, | ||
249 | onSubmit () { | ||
250 | saveBatchData(this.ruleForm).then((res) => { | ||
251 | if (res.code === 200) { | ||
252 | this.$message({ | ||
253 | showClose: true, | ||
254 | message: "保存成功!", | ||
255 | type: "success", | ||
256 | }); | ||
257 | this.$store.dispatch('user/refreshPage', true); | ||
258 | } else { | ||
259 | this.$message({ | ||
260 | showClose: true, | ||
261 | message: res.message, | ||
262 | type: "error" | ||
263 | }) | ||
264 | } | ||
265 | }) | ||
266 | } | ||
267 | } | 267 | } |
268 | } | 268 | } |
269 | } | ||
270 | </script> | 269 | </script> |
271 | <style scoped lang='scss'> | 270 | <style scoped lang='scss'> |
272 | @import "~@/styles/public.scss"; | 271 | @import "~@/styles/public.scss"; |
273 | 272 | ||
274 | /deep/.el-form { | 273 | /deep/.el-form { |
275 | display: flex; | 274 | display: flex; |
276 | flex-direction: column; | 275 | flex-direction: column; |
277 | height: calc(100vh - 130px); | 276 | height: calc(100vh - 130px); |
278 | } | 277 | } |
279 | 278 | ||
280 | /deep/.el-form-item__label { | 279 | /deep/.el-form-item__label { |
281 | padding: 0; | 280 | padding: 0; |
282 | } | 281 | } |
283 | 282 | ||
284 | /deep/.el-radio { | 283 | /deep/.el-radio { |
285 | margin-right: 10px; | 284 | margin-right: 10px; |
286 | } | 285 | } |
287 | 286 | ||
288 | /deep/.el-select { | 287 | /deep/.el-select { |
289 | width: 100%; | 288 | width: 100%; |
290 | } | 289 | } |
291 | 290 | ||
292 | /deep/.el-form-item { | 291 | /deep/.el-form-item { |
293 | margin-bottom: 8px; | 292 | margin-bottom: 8px; |
294 | } | 293 | } |
295 | 294 | ||
296 | .marginBot0 { | 295 | .marginBot0 { |
297 | margin-bottom: 0 !important; | 296 | margin-bottom: 0 !important; |
298 | } | 297 | } |
299 | 298 | ||
300 | .slxx { | 299 | .slxx { |
301 | box-sizing: border-box; | 300 | box-sizing: border-box; |
302 | } | 301 | } |
303 | 302 | ||
304 | .slxx_con { | 303 | .slxx_con { |
305 | flex: 1; | 304 | flex: 1; |
306 | height: 100%; | 305 | height: 100%; |
307 | background-color: #ffffff; | 306 | background-color: #ffffff; |
308 | overflow-y: auto; | 307 | overflow-y: auto; |
309 | padding-right: 3px; | 308 | padding-right: 3px; |
310 | overflow-x: hidden; | 309 | overflow-x: hidden; |
311 | } | 310 | } |
312 | 311 | ||
313 | .submit_btn { | 312 | .submit_btn { |
314 | height: 50px; | 313 | height: 50px; |
315 | } | 314 | } |
316 | 315 | ||
317 | .slxx_title { | 316 | .slxx_title { |
318 | border-bottom: 1px solid $borderColor; | 317 | border-bottom: 1px solid $borderColor; |
319 | padding-left: 10px; | 318 | padding-left: 10px; |
320 | padding-bottom: 5px; | 319 | padding-bottom: 5px; |
321 | margin-bottom: 10px; | 320 | margin-bottom: 10px; |
322 | margin-top: 5px; | 321 | margin-top: 5px; |
323 | font-size: 16px; | 322 | font-size: 16px; |
324 | font-weight: 500; | 323 | font-weight: 500; |
325 | color: #4a4a4a; | 324 | color: #4a4a4a; |
326 | } | 325 | } |
327 | 326 | ||
328 | .btn { | 327 | .btn { |
329 | text-align: center; | 328 | text-align: center; |
330 | padding-top: 10px; | 329 | padding-top: 10px; |
331 | height: 36px; | 330 | height: 36px; |
332 | background-color: #ffffff; | 331 | background-color: #ffffff; |
333 | padding: 5px 0; | 332 | padding: 5px 0; |
334 | } | 333 | } |
335 | 334 | ||
336 | .textArea { | 335 | .textArea { |
337 | /deep/.el-textarea__inner { | 336 | /deep/.el-textarea__inner { |
338 | min-height: 90px !important; | 337 | min-height: 90px !important; |
338 | } | ||
339 | } | 339 | } |
340 | } | ||
341 | 340 | ||
342 | /deep/.el-form-item__label { | 341 | /deep/.el-form-item__label { |
343 | padding-bottom: 0px; | 342 | padding-bottom: 0px; |
344 | } | 343 | } |
345 | </style> | 344 | </style> | ... | ... |
... | @@ -7,7 +7,7 @@ | ... | @@ -7,7 +7,7 @@ |
7 | <!-- 受理信息 --> | 7 | <!-- 受理信息 --> |
8 | <div class="slxx"> | 8 | <div class="slxx"> |
9 | <el-form :model="ruleForm" :rules="rules" :class="{readonly: editDisabled }" | 9 | <el-form :model="ruleForm" :rules="rules" :class="{readonly: editDisabled }" |
10 | class="loadingtext" ref="ruleForm" :label-position="flag ? 'top' : ''" | 10 | class="loadingtext" ref="ruleForm" :label-position="flag ? 'top' : ''" |
11 | :inline="flag" label-width="120px"> | 11 | :inline="flag" label-width="120px"> |
12 | <div class="slxx_con" v-if="isShow" :class="flag ? 'formMarginBot0' : ''"> | 12 | <div class="slxx_con" v-if="isShow" :class="flag ? 'formMarginBot0' : ''"> |
13 | <div class="slxx_title title-block"> | 13 | <div class="slxx_title title-block"> |
... | @@ -128,7 +128,7 @@ | ... | @@ -128,7 +128,7 @@ |
128 | <div class="triangle"></div> | 128 | <div class="triangle"></div> |
129 | </div> | 129 | </div> |
130 | <tdytTable | 130 | <tdytTable |
131 | :ableOperation="ableOperation" | 131 | :ableOperation="ableOperation" |
132 | :tableData="ruleForm.tdytqxList" | 132 | :tableData="ruleForm.tdytqxList" |
133 | @upDateTdytxxList="upDateTdytxxList" /> | 133 | @upDateTdytxxList="upDateTdytxxList" /> |
134 | <div class="slxx_title title-block"> | 134 | <div class="slxx_title title-block"> |
... | @@ -224,14 +224,14 @@ | ... | @@ -224,14 +224,14 @@ |
224 | components: { qlrCommonTable, tdytTable }, | 224 | components: { qlrCommonTable, tdytTable }, |
225 | computed: { | 225 | computed: { |
226 | ...mapGetters(["dictData", "flag"]), | 226 | ...mapGetters(["dictData", "flag"]), |
227 | // 根据流程判断表单是否为只读 | 227 | // 根据流程判断表单是否为只读 |
228 | editDisabled() { | 228 | editDisabled () { |
229 | if (!this.ableOperation) { | 229 | if (!this.ableOperation) { |
230 | //只读状态 | 230 | //只读状态 |
231 | return true; | 231 | return true; |
232 | } | 232 | } |
233 | return false; | 233 | return false; |
234 | }, | 234 | }, |
235 | }, | 235 | }, |
236 | data () { | 236 | data () { |
237 | return { | 237 | return { | ... | ... |
1 | <!-- | 1 | <!-- |
2 | * @Description: | 2 | * @Description: |
3 | * @Autor: renchao | 3 | * @Autor: renchao |
4 | * @LastEditTime: 2023-07-14 11:06:27 | 4 | * @LastEditTime: 2023-07-20 09:30:51 |
5 | --> | 5 | --> |
6 | <template> | 6 | <template> |
7 | <!-- 受理信息 --> | 7 | <!-- 受理信息 --> |
... | @@ -13,8 +13,7 @@ | ... | @@ -13,8 +13,7 @@ |
13 | ref="ruleForm" | 13 | ref="ruleForm" |
14 | :label-position="flag ? 'top' : ''" | 14 | :label-position="flag ? 'top' : ''" |
15 | :inline="flag" | 15 | :inline="flag" |
16 | label-width="120px" | 16 | label-width="120px"> |
17 | > | ||
18 | <div class="slxx_con" v-if="isShow" :class="flag ? 'formMarginBot0' : ''"> | 17 | <div class="slxx_con" v-if="isShow" :class="flag ? 'formMarginBot0' : ''"> |
19 | <div class="slxx_title title-block"> | 18 | <div class="slxx_title title-block"> |
20 | 受理信息 | 19 | 受理信息 |
... | @@ -90,8 +89,7 @@ | ... | @@ -90,8 +89,7 @@ |
90 | <el-form-item label="面积单位:"> | 89 | <el-form-item label="面积单位:"> |
91 | <el-input | 90 | <el-input |
92 | v-model="ruleForm.tdsyq.mjdw" | 91 | v-model="ruleForm.tdsyq.mjdw" |
93 | :disabled="!ableOperation" | 92 | :disabled="!ableOperation"></el-input> |
94 | ></el-input> | ||
95 | </el-form-item> | 93 | </el-form-item> |
96 | </el-col> | 94 | </el-col> |
97 | </el-row> | 95 | </el-row> |
... | @@ -102,19 +100,16 @@ | ... | @@ -102,19 +100,16 @@ |
102 | <el-input | 100 | <el-input |
103 | v-model="ruleForm.tdsyq.nydmj" | 101 | v-model="ruleForm.tdsyq.nydmj" |
104 | :disabled="!ableOperation" | 102 | :disabled="!ableOperation" |
105 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null" | 103 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null"></el-input> |
106 | ></el-input> | ||
107 | <el-select | 104 | <el-select |
108 | v-model="mjdw" | 105 | v-model="mjdw" |
109 | :disabled="!ableOperation" | 106 | :disabled="!ableOperation" |
110 | style="width: 20%" | 107 | style="width: 20%"> |
111 | > | ||
112 | <el-option | 108 | <el-option |
113 | v-for="item in dictData['A7']" | 109 | v-for="item in dictData['A7']" |
114 | :key="item.dcode" | 110 | :key="item.dcode" |
115 | :label="item.dname" | 111 | :label="item.dname" |
116 | :value="item.dcode" | 112 | :value="item.dcode"> |
117 | > | ||
118 | </el-option> | 113 | </el-option> |
119 | </el-select> | 114 | </el-select> |
120 | </div> | 115 | </div> |
... | @@ -126,19 +121,16 @@ | ... | @@ -126,19 +121,16 @@ |
126 | <el-input | 121 | <el-input |
127 | v-model="ruleForm.tdsyq.gdmj" | 122 | v-model="ruleForm.tdsyq.gdmj" |
128 | :disabled="!ableOperation" | 123 | :disabled="!ableOperation" |
129 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null" | 124 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null"></el-input> |
130 | ></el-input> | ||
131 | <el-select | 125 | <el-select |
132 | v-model="mjdw" | 126 | v-model="mjdw" |
133 | :disabled="!ableOperation" | 127 | :disabled="!ableOperation" |
134 | style="width: 20%" | 128 | style="width: 20%"> |
135 | > | ||
136 | <el-option | 129 | <el-option |
137 | v-for="item in dictData['A7']" | 130 | v-for="item in dictData['A7']" |
138 | :key="item.dcode" | 131 | :key="item.dcode" |
139 | :label="item.dname" | 132 | :label="item.dname" |
140 | :value="item.dcode" | 133 | :value="item.dcode"> |
141 | > | ||
142 | </el-option> | 134 | </el-option> |
143 | </el-select> | 135 | </el-select> |
144 | </div> | 136 | </div> |
... | @@ -150,19 +142,16 @@ | ... | @@ -150,19 +142,16 @@ |
150 | <el-input | 142 | <el-input |
151 | v-model="ruleForm.tdsyq.ldmj" | 143 | v-model="ruleForm.tdsyq.ldmj" |
152 | :disabled="!ableOperation" | 144 | :disabled="!ableOperation" |
153 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null" | 145 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null"></el-input> |
154 | ></el-input> | ||
155 | <el-select | 146 | <el-select |
156 | v-model="mjdw" | 147 | v-model="mjdw" |
157 | :disabled="!ableOperation" | 148 | :disabled="!ableOperation" |
158 | style="width: 20%" | 149 | style="width: 20%"> |
159 | > | ||
160 | <el-option | 150 | <el-option |
161 | v-for="item in dictData['A7']" | 151 | v-for="item in dictData['A7']" |
162 | :key="item.dcode" | 152 | :key="item.dcode" |
163 | :label="item.dname" | 153 | :label="item.dname" |
164 | :value="item.dcode" | 154 | :value="item.dcode"> |
165 | > | ||
166 | </el-option> | 155 | </el-option> |
167 | </el-select> | 156 | </el-select> |
168 | </div> | 157 | </div> |
... | @@ -176,19 +165,16 @@ | ... | @@ -176,19 +165,16 @@ |
176 | <el-input | 165 | <el-input |
177 | v-model="ruleForm.tdsyq.cdmj" | 166 | v-model="ruleForm.tdsyq.cdmj" |
178 | :disabled="!ableOperation" | 167 | :disabled="!ableOperation" |
179 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null" | 168 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null"></el-input> |
180 | ></el-input> | ||
181 | <el-select | 169 | <el-select |
182 | v-model="mjdw" | 170 | v-model="mjdw" |
183 | :disabled="!ableOperation" | 171 | :disabled="!ableOperation" |
184 | style="width: 20%" | 172 | style="width: 20%"> |
185 | > | ||
186 | <el-option | 173 | <el-option |
187 | v-for="item in dictData['A7']" | 174 | v-for="item in dictData['A7']" |
188 | :key="item.dcode" | 175 | :key="item.dcode" |
189 | :label="item.dname" | 176 | :label="item.dname" |
190 | :value="item.dcode" | 177 | :value="item.dcode"> |
191 | > | ||
192 | </el-option> | 178 | </el-option> |
193 | </el-select> | 179 | </el-select> |
194 | </div> | 180 | </div> |
... | @@ -200,19 +186,16 @@ | ... | @@ -200,19 +186,16 @@ |
200 | <el-input | 186 | <el-input |
201 | v-model="ruleForm.tdsyq.qtnydmj" | 187 | v-model="ruleForm.tdsyq.qtnydmj" |
202 | :disabled="!ableOperation" | 188 | :disabled="!ableOperation" |
203 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null" | 189 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null"></el-input> |
204 | ></el-input> | ||
205 | <el-select | 190 | <el-select |
206 | v-model="mjdw" | 191 | v-model="mjdw" |
207 | :disabled="!ableOperation" | 192 | :disabled="!ableOperation" |
208 | style="width: 20%" | 193 | style="width: 20%"> |
209 | > | ||
210 | <el-option | 194 | <el-option |
211 | v-for="item in dictData['A7']" | 195 | v-for="item in dictData['A7']" |
212 | :key="item.dcode" | 196 | :key="item.dcode" |
213 | :label="item.dname" | 197 | :label="item.dname" |
214 | :value="item.dcode" | 198 | :value="item.dcode"> |
215 | > | ||
216 | </el-option> | 199 | </el-option> |
217 | </el-select> | 200 | </el-select> |
218 | </div> | 201 | </div> |
... | @@ -224,19 +207,16 @@ | ... | @@ -224,19 +207,16 @@ |
224 | <el-input | 207 | <el-input |
225 | v-model="ruleForm.tdsyq.jsydmj" | 208 | v-model="ruleForm.tdsyq.jsydmj" |
226 | :disabled="!ableOperation" | 209 | :disabled="!ableOperation" |
227 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null" | 210 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null"></el-input> |
228 | ></el-input> | ||
229 | <el-select | 211 | <el-select |
230 | v-model="mjdw" | 212 | v-model="mjdw" |
231 | :disabled="!ableOperation" | 213 | :disabled="!ableOperation" |
232 | style="width: 20%" | 214 | style="width: 20%"> |
233 | > | ||
234 | <el-option | 215 | <el-option |
235 | v-for="item in dictData['A7']" | 216 | v-for="item in dictData['A7']" |
236 | :key="item.dcode" | 217 | :key="item.dcode" |
237 | :label="item.dname" | 218 | :label="item.dname" |
238 | :value="item.dcode" | 219 | :value="item.dcode"> |
239 | > | ||
240 | </el-option> | 220 | </el-option> |
241 | </el-select> | 221 | </el-select> |
242 | </div> | 222 | </div> |
... | @@ -250,19 +230,16 @@ | ... | @@ -250,19 +230,16 @@ |
250 | <el-input | 230 | <el-input |
251 | v-model="ruleForm.tdsyq.wlydmj" | 231 | v-model="ruleForm.tdsyq.wlydmj" |
252 | :disabled="!ableOperation" | 232 | :disabled="!ableOperation" |
253 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null" | 233 | oninput="value = (value.match(/^\d*(\.?\d{0,3})/g)[0]) || null"></el-input> |
254 | ></el-input> | ||
255 | <el-select | 234 | <el-select |
256 | v-model="mjdw" | 235 | v-model="mjdw" |
257 | :disabled="!ableOperation" | 236 | :disabled="!ableOperation" |
258 | style="width: 20%" | 237 | style="width: 20%"> |
259 | > | ||
260 | <el-option | 238 | <el-option |
261 | v-for="item in dictData['A7']" | 239 | v-for="item in dictData['A7']" |
262 | :key="item.dcode" | 240 | :key="item.dcode" |
263 | :label="item.dname" | 241 | :label="item.dname" |
264 | :value="item.dcode" | 242 | :value="item.dcode"> |
265 | > | ||
266 | </el-option> | 243 | </el-option> |
267 | </el-select> | 244 | </el-select> |
268 | </div> | 245 | </div> |
... | @@ -276,8 +253,7 @@ | ... | @@ -276,8 +253,7 @@ |
276 | <tdytTable | 253 | <tdytTable |
277 | :tableData="ruleForm.tdytqxList" | 254 | :tableData="ruleForm.tdytqxList" |
278 | :ableOperation="ableOperation" | 255 | :ableOperation="ableOperation" |
279 | @upDateTdytxxList="upDateTdytxxList" | 256 | @upDateTdytxxList="upDateTdytxxList" /> |
280 | /> | ||
281 | <div class="slxx_title title-block"> | 257 | <div class="slxx_title title-block"> |
282 | 权利人信息 | 258 | 权利人信息 |
283 | <div class="triangle"></div> | 259 | <div class="triangle"></div> |
... | @@ -287,8 +263,7 @@ | ... | @@ -287,8 +263,7 @@ |
287 | <el-form-item label="共有方式:"> | 263 | <el-form-item label="共有方式:"> |
288 | <el-radio-group | 264 | <el-radio-group |
289 | :disabled="!ableOperation" | 265 | :disabled="!ableOperation" |
290 | v-model="ruleForm.sldy.gyfs" | 266 | v-model="ruleForm.sldy.gyfs"> |
291 | > | ||
292 | <el-radio label="0">单独所有</el-radio> | 267 | <el-radio label="0">单独所有</el-radio> |
293 | <el-radio label="1">共同共有</el-radio> | 268 | <el-radio label="1">共同共有</el-radio> |
294 | <el-radio label="2">按份所有</el-radio> | 269 | <el-radio label="2">按份所有</el-radio> |
... | @@ -300,8 +275,7 @@ | ... | @@ -300,8 +275,7 @@ |
300 | <el-form-item label="是否分别持证:"> | 275 | <el-form-item label="是否分别持证:"> |
301 | <el-radio-group | 276 | <el-radio-group |
302 | v-model="ruleForm.sldy.sqfbcz" | 277 | v-model="ruleForm.sldy.sqfbcz" |
303 | :disabled="!ableOperation" | 278 | :disabled="!ableOperation"> |
304 | > | ||
305 | <el-radio :label="1">是</el-radio> | 279 | <el-radio :label="1">是</el-radio> |
306 | <el-radio :label="0">否</el-radio> | 280 | <el-radio :label="0">否</el-radio> |
307 | </el-radio-group> | 281 | </el-radio-group> |
... | @@ -309,20 +283,17 @@ | ... | @@ -309,20 +283,17 @@ |
309 | </el-col> | 283 | </el-col> |
310 | <el-col | 284 | <el-col |
311 | :span="6" | 285 | :span="6" |
312 | v-show="ruleForm.sldy.sqfbcz == '0' && ruleForm.sldy.gyfs == '1'" | 286 | v-show="ruleForm.sldy.sqfbcz == '0' && ruleForm.sldy.gyfs == '1'"> |
313 | > | ||
314 | <el-form-item label="持证人:"> | 287 | <el-form-item label="持证人:"> |
315 | <el-select | 288 | <el-select |
316 | v-model="ruleForm.czr" | 289 | v-model="ruleForm.czr" |
317 | placeholder="持证人" | 290 | placeholder="持证人" |
318 | :disabled="!ableOperation" | 291 | :disabled="!ableOperation"> |
319 | > | ||
320 | <el-option | 292 | <el-option |
321 | v-for="item in czrOptions" | 293 | v-for="item in czrOptions" |
322 | :key="item.zjh" | 294 | :key="item.zjh" |
323 | :label="item.sqrmc" | 295 | :label="item.sqrmc" |
324 | :value="item.zjh" | 296 | :value="item.zjh"> |
325 | > | ||
326 | </el-option> | 297 | </el-option> |
327 | </el-select> | 298 | </el-select> |
328 | </el-form-item> | 299 | </el-form-item> |
... | @@ -333,8 +304,7 @@ | ... | @@ -333,8 +304,7 @@ |
333 | :disabled="!ableOperation" | 304 | :disabled="!ableOperation" |
334 | @upDateQlrxxList="upDateQlrxxList" | 305 | @upDateQlrxxList="upDateQlrxxList" |
335 | :key="key" | 306 | :key="key" |
336 | :gyfs="ruleForm.sldy.gyfs" | 307 | :gyfs="ruleForm.sldy.gyfs" /> |
337 | /> | ||
338 | 308 | ||
339 | <div v-if="ruleForm.ywrList && ruleForm.ywrList.length > 0"> | 309 | <div v-if="ruleForm.ywrList && ruleForm.ywrList.length > 0"> |
340 | <div class="slxx_title title-block"> | 310 | <div class="slxx_title title-block"> |
... | @@ -346,8 +316,7 @@ | ... | @@ -346,8 +316,7 @@ |
346 | :disabled="!ableOperation" | 316 | :disabled="!ableOperation" |
347 | :tableData="ruleForm.ywrList" | 317 | :tableData="ruleForm.ywrList" |
348 | :key="key" | 318 | :key="key" |
349 | @upDateQlrxxList="upDateYwrxxList" | 319 | @upDateQlrxxList="upDateYwrxxList" /> |
350 | /> | ||
351 | </div> | 320 | </div> |
352 | 321 | ||
353 | <div class="slxx_title title-block"> | 322 | <div class="slxx_title title-block"> |
... | @@ -361,8 +330,7 @@ | ... | @@ -361,8 +330,7 @@ |
361 | class="textArea" | 330 | class="textArea" |
362 | type="textarea" | 331 | type="textarea" |
363 | :disabled="!ableOperation" | 332 | :disabled="!ableOperation" |
364 | v-model="ruleForm.tdsyq.djyy" | 333 | v-model="ruleForm.tdsyq.djyy"> |
365 | > | ||
366 | </el-input> | 334 | </el-input> |
367 | </el-form-item> | 335 | </el-form-item> |
368 | </el-col> | 336 | </el-col> |
... | @@ -377,135 +345,135 @@ | ... | @@ -377,135 +345,135 @@ |
377 | </div> | 345 | </div> |
378 | </template> | 346 | </template> |
379 | <script> | 347 | <script> |
380 | import { mapGetters } from "vuex"; | 348 | import { mapGetters } from "vuex"; |
381 | import { Init, saveData } from "@/api/workflow/tdsyqFlow.js"; | 349 | import { Init, saveData } from "@/api/workflow/tdsyqFlow.js"; |
382 | import tdytTable from "@/views/workflow/components/tdytTable"; | 350 | import tdytTable from "@/views/workflow/components/tdytTable"; |
383 | import qlrCommonTable from "@/views/workflow/components/qlrCommonTable"; | 351 | import qlrCommonTable from "@/views/workflow/components/qlrCommonTable"; |
384 | export default { | 352 | export default { |
385 | components: { qlrCommonTable, tdytTable }, | 353 | components: { qlrCommonTable, tdytTable }, |
386 | mounted() { | 354 | mounted () { |
387 | this.ableOperation = this.$parent.currentSelectTab.ableOperation; | 355 | this.ableOperation = this.$parent.currentSelectTab.ableOperation; |
388 | this.propsParam = this.$attrs; | 356 | this.propsParam = this.$attrs; |
389 | var formdata = new FormData(); | 357 | var formdata = new FormData(); |
390 | let that = this; | 358 | let that = this; |
391 | this.$startLoading(); | 359 | this.$startLoading(); |
392 | formdata.append("bsmSldy", this.propsParam.bsmSldy); | 360 | formdata.append("bsmSldy", this.propsParam.bsmSldy); |
393 | formdata.append("djlx", this.propsParam.djlx); | 361 | formdata.append("djlx", this.propsParam.djlx); |
394 | formdata.append("isEdit", this.ableOperation); | 362 | formdata.append("isEdit", this.ableOperation); |
395 | Init(formdata).then((res) => { | 363 | Init(formdata).then((res) => { |
396 | this.$nextTick(() => { | 364 | this.$nextTick(() => { |
397 | that.ruleForm = res.result; | 365 | that.ruleForm = res.result; |
398 | that.$endLoading(); | 366 | that.$endLoading(); |
399 | that.isShow = true; | 367 | that.isShow = true; |
400 | this.czrOptions = this.ruleForm.qlrList; | 368 | this.czrOptions = this.ruleForm.qlrList; |
369 | }); | ||
401 | }); | 370 | }); |
402 | }); | ||
403 | }, | ||
404 | |||
405 | computed: { | ||
406 | ...mapGetters(["dictData", "flag"]), | ||
407 | }, | ||
408 | data() { | ||
409 | return { | ||
410 | mjdw: "1", | ||
411 | value2: { | ||
412 | id: "520000198407304275", | ||
413 | user: "史平", | ||
414 | }, | ||
415 | props: { | ||
416 | label: "user", | ||
417 | value: "id", | ||
418 | keyword: "keyword", | ||
419 | }, | ||
420 | |||
421 | //表单是否可操作 | ||
422 | ableOperation: true, | ||
423 | key: 0, | ||
424 | isShow: false, | ||
425 | disabled: true, | ||
426 | czrOptions: [], | ||
427 | ruleForm: {}, | ||
428 | //传递参数 | ||
429 | propsParam: {}, | ||
430 | rules: {}, | ||
431 | }; | ||
432 | }, | ||
433 | methods: { | ||
434 | // 更新土地用途信息 | ||
435 | upDateTdytxxList(val) { | ||
436 | this.ruleForm.tdytqxList && (this.ruleForm.tdytqxList = _.cloneDeep(val)); | ||
437 | this.key++; | ||
438 | }, | ||
439 | // 更新权利人信息 | ||
440 | upDateQlrxxList(val) { | ||
441 | this.ruleForm.qlrList && (this.ruleForm.qlrList = _.cloneDeep(val)); | ||
442 | this.czrOptions = this.ruleForm.qlrList; | ||
443 | this.key++; | ||
444 | }, | 371 | }, |
445 | // 更新义务人信息 | 372 | |
446 | upDateYwrxxList(val) { | 373 | computed: { |
447 | this.ruleForm.ywrList && (this.ruleForm.ywrList = _.cloneDeep(val)); | 374 | ...mapGetters(["dictData", "flag"]), |
448 | this.key++; | ||
449 | }, | 375 | }, |
450 | onSubmit() { | 376 | data () { |
451 | if (this.ruleForm.qlrList.length == 0) { | 377 | return { |
452 | this.$message({ | 378 | mjdw: "1", |
453 | showClose: true, | 379 | value2: { |
454 | message: "请确认权利人信息", | 380 | id: "520000198407304275", |
455 | type: "error", | 381 | user: "史平", |
456 | }); | 382 | }, |
457 | return false; | 383 | props: { |
458 | } | 384 | label: "user", |
385 | value: "id", | ||
386 | keyword: "keyword", | ||
387 | }, | ||
459 | 388 | ||
460 | if (this.ruleForm.sldy.gyfs == "0") { | 389 | //表单是否可操作 |
461 | if (this.ruleForm.qlrList.length > 1) { | 390 | ableOperation: true, |
391 | key: 0, | ||
392 | isShow: false, | ||
393 | disabled: true, | ||
394 | czrOptions: [], | ||
395 | ruleForm: {}, | ||
396 | //传递参数 | ||
397 | propsParam: {}, | ||
398 | rules: {}, | ||
399 | }; | ||
400 | }, | ||
401 | methods: { | ||
402 | // 更新土地用途信息 | ||
403 | upDateTdytxxList (val) { | ||
404 | this.ruleForm.tdytqxList && (this.ruleForm.tdytqxList = _.cloneDeep(val)); | ||
405 | this.key++; | ||
406 | }, | ||
407 | // 更新权利人信息 | ||
408 | upDateQlrxxList (val) { | ||
409 | this.ruleForm.qlrList && (this.ruleForm.qlrList = _.cloneDeep(val)); | ||
410 | this.czrOptions = this.ruleForm.qlrList; | ||
411 | this.key++; | ||
412 | }, | ||
413 | // 更新义务人信息 | ||
414 | upDateYwrxxList (val) { | ||
415 | this.ruleForm.ywrList && (this.ruleForm.ywrList = _.cloneDeep(val)); | ||
416 | this.key++; | ||
417 | }, | ||
418 | onSubmit () { | ||
419 | if (this.ruleForm.qlrList.length == 0) { | ||
462 | this.$message({ | 420 | this.$message({ |
463 | showClose: true, | 421 | showClose: true, |
464 | message: "共有方式:单独所有,权利人只能是一个人", | 422 | message: "请确认权利人信息", |
465 | type: "error", | 423 | type: "error", |
466 | }); | 424 | }); |
467 | return false; | 425 | return false; |
468 | } | 426 | } |
469 | this.ruleForm.qlrList[0].sfczr = "1"; | 427 | |
470 | } | 428 | if (this.ruleForm.sldy.gyfs == "0") { |
471 | if (this.ruleForm.sldy.gyfs == "1") { | 429 | if (this.ruleForm.qlrList.length > 1) { |
472 | //是否分别持证 | 430 | this.$message({ |
473 | if (this.ruleForm.sldy.sqfbcz == "1") { | 431 | showClose: true, |
474 | //是 | 432 | message: "共有方式:单独所有,权利人只能是一个人", |
475 | this.ruleForm.qlrList.forEach((item, index) => { | 433 | type: "error", |
476 | item.sfczr = "1"; | 434 | }); |
477 | }); | 435 | return false; |
478 | } else { | 436 | } |
479 | this.ruleForm.qlrList.forEach((item, index) => { | 437 | this.ruleForm.qlrList[0].sfczr = "1"; |
480 | if (item.zjh == this.ruleForm.czr) { | ||
481 | item.sfczr = "1"; | ||
482 | } else { | ||
483 | item.sfczr = "0"; | ||
484 | } | ||
485 | }); | ||
486 | } | 438 | } |
487 | } | 439 | if (this.ruleForm.sldy.gyfs == "1") { |
488 | saveData(this.ruleForm).then((res) => { | 440 | //是否分别持证 |
489 | if (res.code === 200) { | 441 | if (this.ruleForm.sldy.sqfbcz == "1") { |
490 | this.$message({ | 442 | //是 |
491 | showClose: true, | 443 | this.ruleForm.qlrList.forEach((item, index) => { |
492 | message: "保存成功!", | 444 | item.sfczr = "1"; |
493 | type: "success", | 445 | }); |
494 | }); | 446 | } else { |
495 | this.$store.dispatch("user/refreshPage", true); | 447 | this.ruleForm.qlrList.forEach((item, index) => { |
496 | } else { | 448 | if (item.zjh == this.ruleForm.czr) { |
497 | this.$message({ | 449 | item.sfczr = "1"; |
498 | showClose: true, | 450 | } else { |
499 | message: res.message, | 451 | item.sfczr = "0"; |
500 | type: "error", | 452 | } |
501 | }); | 453 | }); |
454 | } | ||
502 | } | 455 | } |
503 | }); | 456 | saveData(this.ruleForm).then((res) => { |
457 | if (res.code === 200) { | ||
458 | this.$message({ | ||
459 | showClose: true, | ||
460 | message: "保存成功!", | ||
461 | type: "success", | ||
462 | }); | ||
463 | this.$store.dispatch("user/refreshPage", true); | ||
464 | } else { | ||
465 | this.$message({ | ||
466 | showClose: true, | ||
467 | message: res.message, | ||
468 | type: "error", | ||
469 | }); | ||
470 | } | ||
471 | }); | ||
472 | }, | ||
504 | }, | 473 | }, |
505 | }, | 474 | }; |
506 | }; | ||
507 | </script> | 475 | </script> |
508 | <style scoped lang="scss"> | 476 | <style scoped lang="scss"> |
509 | @import "~@/styles/public.scss"; | 477 | @import "~@/styles/public.scss"; |
510 | @import "~@/styles/slxx/slxx.scss"; | 478 | @import "~@/styles/slxx/slxx.scss"; |
511 | </style> | 479 | </style> | ... | ... |
... | @@ -174,7 +174,7 @@ | ... | @@ -174,7 +174,7 @@ |
174 | 抵押人信息 | 174 | 抵押人信息 |
175 | <div class="triangle"></div> | 175 | <div class="triangle"></div> |
176 | </div> | 176 | </div> |
177 | <qlrCommonTable :tableData="ruleForm.ywrList" @upDateQlrxxList="upDateYwrxxList" :disabled="!ableOperation"/> | 177 | <qlrCommonTable :tableData="ruleForm.ywrList" @upDateQlrxxList="upDateYwrxxList" :disabled="!ableOperation" /> |
178 | 178 | ||
179 | <div class="slxx_title title-block"> | 179 | <div class="slxx_title title-block"> |
180 | 登记原因 | 180 | 登记原因 |
... | @@ -194,7 +194,6 @@ | ... | @@ -194,7 +194,6 @@ |
194 | </el-form-item> | 194 | </el-form-item> |
195 | </el-col> | 195 | </el-col> |
196 | </el-row> | 196 | </el-row> |
197 | |||
198 | </div> | 197 | </div> |
199 | <el-row class="btn" v-if="ableOperation"> | 198 | <el-row class="btn" v-if="ableOperation"> |
200 | <el-form-item> | 199 | <el-form-item> | ... | ... |
... | @@ -218,7 +218,7 @@ | ... | @@ -218,7 +218,7 @@ |
218 | 抵押人信息 | 218 | 抵押人信息 |
219 | <div class="triangle"></div> | 219 | <div class="triangle"></div> |
220 | </div> | 220 | </div> |
221 | <qlrCommonTable :tableData="ruleForm.ywrList" @upDateQlrxxList="upDateYwrxxList" :disabled="!ableOperation"/> | 221 | <qlrCommonTable :tableData="ruleForm.ywrList" @upDateQlrxxList="upDateYwrxxList" :disabled="!ableOperation" /> |
222 | 222 | ||
223 | <div class="slxx_title title-block"> | 223 | <div class="slxx_title title-block"> |
224 | 登记原因 | 224 | 登记原因 |
... | @@ -238,7 +238,6 @@ | ... | @@ -238,7 +238,6 @@ |
238 | </el-form-item> | 238 | </el-form-item> |
239 | </el-col> | 239 | </el-col> |
240 | </el-row> | 240 | </el-row> |
241 | |||
242 | </div> | 241 | </div> |
243 | <el-row class="btn" v-if="ableOperation"> | 242 | <el-row class="btn" v-if="ableOperation"> |
244 | <el-form-item> | 243 | <el-form-item> | ... | ... |
... | @@ -3,9 +3,7 @@ const path = require('path') | ... | @@ -3,9 +3,7 @@ const path = require('path') |
3 | function resolve (dir) { | 3 | function resolve (dir) { |
4 | return path.join(__dirname, dir) | 4 | return path.join(__dirname, dir) |
5 | } | 5 | } |
6 | |||
7 | const port = process.env.port || process.env.npm_config_port || 8888 // dev port | 6 | const port = process.env.port || process.env.npm_config_port || 8888 // dev port |
8 | |||
9 | // All configuration item explanations can be find in https://cli.vuejs.org/config/ | 7 | // All configuration item explanations can be find in https://cli.vuejs.org/config/ |
10 | module.exports = { | 8 | module.exports = { |
11 | /** | 9 | /** | ... | ... |
-
Please register or sign in to post a comment