vue2-client 1.2.37-2 → 1.2.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/docs/notice.md +22 -22
- package/package.json +1 -1
- package/src/base-client/all.js +61 -61
- package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +104 -104
- package/src/base-client/components/common/AmapMarker/index.js +3 -3
- package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
- package/src/base-client/components/common/ScrollList/SrcollList.vue +113 -113
- package/src/base-client/components/common/ScrollList/index.js +3 -3
- package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +315 -315
- package/src/base-client/components/common/XForm/XForm.vue +275 -275
- package/src/base-client/components/iot/CustomerDetailsView/CustomerDetailsView.vue +225 -225
- package/src/base-client/components/iot/DataAnalysisView/DataAnalysisView.vue +244 -244
- package/src/base-client/components/iot/DeviceBrandDetailsView/DeviceBrandDetailsView.vue +452 -452
- package/src/base-client/components/iot/DeviceDetailsView/DeviceDetailsView.vue +236 -236
- package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsCount.vue +330 -330
- package/src/base-client/components/iot/DeviceDetailsView/part/DeviceDetailsInstructOperate.vue +121 -121
- package/src/base-client/components/iot/DeviceTypeDetailsView/DeviceTypeDetailsView.vue +276 -276
- package/src/base-client/components/iot/InstructDetailsView/InstructDetailsView.vue +469 -469
- package/src/base-client/components/iot/LogDetailsView/LogDetailsView.vue +379 -379
- package/src/base-client/components/iot/MeterDetailsView/MeterDetailsView.vue +359 -359
- package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsCount.vue +335 -335
- package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsException.vue +184 -184
- package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsHandPlan.vue +291 -291
- package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsInstruct.vue +236 -236
- package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsMain.vue +256 -256
- package/src/base-client/components/iot/MeterDetailsView/part/MeterDetailsSellGas.vue +189 -189
- package/src/base-client/components/iot/WebmeterAnalysisView/WebmeterAnalysisView.vue +722 -722
- package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +231 -231
- package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +247 -247
- package/src/base-client/components/ticket/EmployeeDetailsView/EmployeeDetailsView.vue +370 -370
- package/src/base-client/components/ticket/TicketDetailsView/TicketDetailsView.vue +3 -3
- package/src/base-client/components/ticket/TicketDetailsView/part/TicketDetailsFlow.vue +260 -260
- package/src/base-client/plugins/AppData.js +67 -67
- package/src/base-client/plugins/GetLoginInfoService.js +252 -252
- package/src/components/exception/ExceptionPage.vue +70 -70
- package/src/components/setting/Setting.vue +235 -237
- package/src/config/default/setting.config.js +35 -34
- package/src/config/index.js +3 -6
- package/src/layouts/SinglePageView.vue +13 -17
- package/src/layouts/header/HeaderNotice.vue +97 -97
- package/src/layouts/tabs/TabsView.vue +3 -5
- package/src/pages/login/Login.vue +201 -198
- package/src/pages/report/ReportTableHome.vue +28 -28
- package/src/pages/resourceManage/depListManage.vue +23 -23
- package/src/pages/resourceManage/funListManage.vue +23 -23
- package/src/pages/resourceManage/index.js +15 -15
- package/src/pages/resourceManage/orgListManage.vue +98 -98
- package/src/pages/resourceManage/roleListManage.vue +23 -23
- package/src/pages/resourceManage/staffListManage.vue +23 -23
- package/src/pages/system/ticket/index.vue +225 -209
- package/src/pages/system/ticket/submitTicketSuccess.vue +248 -248
- package/src/router/async/router.map.js +2 -3
- package/src/services/api/common.js +47 -47
- package/src/services/api/index.js +39 -39
- package/src/services/user.js +34 -34
- package/src/utils/indexedDB.js +146 -146
- package/src/utils/routerUtil.js +359 -360
- package/vue.config.js +143 -143
- package/src/config/config.js +0 -15
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<h1>一、安装</h1>
|
|
19
19
|
<hr/>
|
|
20
20
|
<div style="padding-left: 100px;padding-top: 20px">
|
|
21
|
-
<img src="@vue2-client/assets/img/SunClientManual/1.png" style="width: 800px">
|
|
21
|
+
<img src="@vue2-client/assets/img/SunClientManual/1.png" style="width: 800px" alt="pic">
|
|
22
22
|
<br/>
|
|
23
23
|
<br/>
|
|
24
24
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">运行下载好的安装包,按需要手动选择安装路径后,一路点下一步完成安装</p>
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
<hr/>
|
|
30
30
|
<div style="padding-left: 100px;padding-top: 20px">
|
|
31
31
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">在桌面或开始菜单中打开向日葵软件</p>
|
|
32
|
-
<img src="@vue2-client/assets/img/SunClientManual/2.png" style="width: 800px">
|
|
32
|
+
<img src="@vue2-client/assets/img/SunClientManual/2.png" style="width: 800px" alt="pic">
|
|
33
33
|
<br/>
|
|
34
34
|
<br/>
|
|
35
35
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">显示此页面时,您已成功运行向日葵</p>
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">点击软件界面中眼睛样子的按钮,使验证码正常显示</p>
|
|
43
43
|
<br/>
|
|
44
44
|
<br/>
|
|
45
|
-
<img src="@vue2-client/assets/img/SunClientManual/3.png" style="width: 800px">
|
|
45
|
+
<img src="@vue2-client/assets/img/SunClientManual/3.png" style="width: 800px" alt="pic">
|
|
46
46
|
<br/>
|
|
47
47
|
<br/>
|
|
48
48
|
<br/>
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
</p>
|
|
53
53
|
<br/>
|
|
54
54
|
<br/>
|
|
55
|
-
<img src="@vue2-client/assets/img/SunClientManual/4.png" style="width: 800px">
|
|
55
|
+
<img src="@vue2-client/assets/img/SunClientManual/4.png" style="width: 800px" alt="pic">
|
|
56
56
|
<br/>
|
|
57
57
|
<br/>
|
|
58
58
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
<h1>一、安装</h1>
|
|
74
74
|
<hr/>
|
|
75
75
|
<div style="padding-left: 100px;padding-top: 20px">
|
|
76
|
-
<img src="@vue2-client/assets/img/ToDeskManual/1.png" style="width: 800px">
|
|
76
|
+
<img src="@vue2-client/assets/img/ToDeskManual/1.png" style="width: 800px" alt="pic">
|
|
77
77
|
<br/>
|
|
78
78
|
<br/>
|
|
79
79
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">运行下载好的安装包,按需要手动选择安装路径后,一路点下一步完成安装</p>
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
<hr/>
|
|
85
85
|
<div style="padding-left: 100px;padding-top: 20px">
|
|
86
86
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">在桌面或开始菜单中打开ToDesk软件</p>
|
|
87
|
-
<img src="@vue2-client/assets/img/ToDeskManual/2.png" style="width: 800px">
|
|
87
|
+
<img src="@vue2-client/assets/img/ToDeskManual/2.png" style="width: 800px" alt="pic">
|
|
88
88
|
<br/>
|
|
89
89
|
<br/>
|
|
90
90
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">显示此页面时,您已成功运行ToDesk</p>
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">点击软件界面中眼睛样子的按钮,使临时密码正常显示</p>
|
|
98
98
|
<br/>
|
|
99
99
|
<br/>
|
|
100
|
-
<img src="@vue2-client/assets/img/ToDeskManual/3.png" style="width: 800px">
|
|
100
|
+
<img src="@vue2-client/assets/img/ToDeskManual/3.png" style="width: 800px" alt="pic">
|
|
101
101
|
<br/>
|
|
102
102
|
<br/>
|
|
103
103
|
<br/>
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
</p>
|
|
108
108
|
<br/>
|
|
109
109
|
<br/>
|
|
110
|
-
<img src="@vue2-client/assets/img/ToDeskManual/4.png" style="width: 800px">
|
|
110
|
+
<img src="@vue2-client/assets/img/ToDeskManual/4.png" style="width: 800px" alt="pic">
|
|
111
111
|
<br/>
|
|
112
112
|
<br/>
|
|
113
113
|
<p style="line-height: 30px;font-size: 1.5em;text-indent: 2em">
|
|
@@ -141,6 +141,11 @@
|
|
|
141
141
|
<br/>
|
|
142
142
|
<strong v-show="showCategoryAlert" style="color: red">类型不允许为空!</strong>
|
|
143
143
|
</a-form-item>
|
|
144
|
+
<!-- 联系方式 -->
|
|
145
|
+
<a-form-item label="联系方式">
|
|
146
|
+
<a-input v-model="form.phone"></a-input>
|
|
147
|
+
<strong v-show="showPhoneAlert" style="color: red">联系方式填写有误!</strong>
|
|
148
|
+
</a-form-item>
|
|
144
149
|
<!-- 问题描述框 -->
|
|
145
150
|
<a-form-item label="问题详情描述">
|
|
146
151
|
<a-textarea allow-clear v-model="form.desc" placeholder="请用一句话描述您的问题,必要时请注明客户编号,表号,系统功能项等信息"/>
|
|
@@ -174,7 +179,7 @@
|
|
|
174
179
|
</a-form-item>
|
|
175
180
|
<!-- 表单底部按钮 -->
|
|
176
181
|
<a-form-item :wrapper-col="{ span: 12, offset: 5 }">
|
|
177
|
-
<a-button type="primary" @click="onSubmit" style="margin-right: 20px" :disabled="showCategoryAlert">
|
|
182
|
+
<a-button type="primary" @click="onSubmit" style="margin-right: 20px" :disabled="showCategoryAlert || showPhoneAlert">
|
|
178
183
|
提交
|
|
179
184
|
</a-button>
|
|
180
185
|
</a-form-item>
|
|
@@ -190,8 +195,9 @@
|
|
|
190
195
|
:sm="24"
|
|
191
196
|
:xl="12"
|
|
192
197
|
:xs="24"
|
|
193
|
-
:xxl="12"
|
|
194
|
-
|
|
198
|
+
:xxl="12"
|
|
199
|
+
style="text-align: center">
|
|
200
|
+
<img @click="toSunClientClick" style="width: 128px;height:128px;cursor: pointer" src="@vue2-client/assets/img/SunClientDownload.png" alt="pic"/>
|
|
195
201
|
<p style="padding-top:10px;text-align: center"><a @click="sunClientManualVisible = true">向日葵使用说明</a></p>
|
|
196
202
|
</a-col>
|
|
197
203
|
<a-col
|
|
@@ -200,11 +206,17 @@
|
|
|
200
206
|
:sm="24"
|
|
201
207
|
:xl="12"
|
|
202
208
|
:xs="24"
|
|
203
|
-
:xxl="12"
|
|
204
|
-
|
|
209
|
+
:xxl="12"
|
|
210
|
+
style="text-align: center">
|
|
211
|
+
<img @click="toDeskClick" style="width: 128px;height:128px;cursor: pointer" src="@vue2-client/assets/img/ToDeskDownload.png" alt="pic">
|
|
205
212
|
<p style="padding-top:10px;text-align: center"><a @click="toDeskManualVisible = true">ToDesk使用说明</a></p>
|
|
206
213
|
</a-col>
|
|
207
214
|
</a-row>
|
|
215
|
+
<a-row :gutter="16" style="text-align: center">
|
|
216
|
+
<hr/>
|
|
217
|
+
<p style="color: red;font-weight: bolder;padding-top: 10px">如需远程协助,请下载向日葵</p>
|
|
218
|
+
<p style="color: red;font-weight: bolder">向日葵安装使用指南,请点击上方“向日葵使用说明”查看</p>
|
|
219
|
+
</a-row>
|
|
208
220
|
</a-space>
|
|
209
221
|
</a-card>
|
|
210
222
|
</a-col>
|
|
@@ -226,215 +238,219 @@
|
|
|
226
238
|
</template>
|
|
227
239
|
|
|
228
240
|
<script>
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
241
|
+
import { TicketDetailsViewApi, post } from '@vue2-client/services/api'
|
|
242
|
+
import { logout } from '@/services/user'
|
|
243
|
+
import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
|
|
244
|
+
import Vue from 'vue'
|
|
233
245
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
246
|
+
export default {
|
|
247
|
+
name: 'submitTicket',
|
|
248
|
+
components: {
|
|
249
|
+
XFormTable
|
|
250
|
+
},
|
|
251
|
+
data () {
|
|
252
|
+
return {
|
|
253
|
+
// 查询配置文件名
|
|
254
|
+
queryParamsName: 'TicketQueryForCustomer',
|
|
255
|
+
// 控制成功页面显示
|
|
256
|
+
successVisible: false,
|
|
257
|
+
// 控制预览显示
|
|
258
|
+
previewVisible: false,
|
|
259
|
+
// 图片真实地址
|
|
260
|
+
previewImage: '',
|
|
261
|
+
// 图片列表
|
|
262
|
+
fileList: [],
|
|
263
|
+
// 表单数据
|
|
264
|
+
form: {
|
|
265
|
+
name: '',
|
|
266
|
+
category: undefined,
|
|
267
|
+
desc: undefined,
|
|
268
|
+
phone: ''
|
|
269
|
+
},
|
|
270
|
+
// 获取序列号使用
|
|
271
|
+
data: {
|
|
272
|
+
priority: 2,
|
|
273
|
+
category: 0,
|
|
274
|
+
time: this.dataFormat(new Date())
|
|
275
|
+
},
|
|
276
|
+
// 工单序列号
|
|
277
|
+
serialNumber: '',
|
|
278
|
+
// 类别未填写警告信息控制
|
|
279
|
+
showCategoryAlert: true,
|
|
280
|
+
showPhoneAlert: true,
|
|
281
|
+
// 向日葵使用指南可见性
|
|
282
|
+
sunClientManualVisible: false,
|
|
283
|
+
// 向日葵使用指南可见性
|
|
284
|
+
toDeskManualVisible: false,
|
|
285
|
+
// 为工单查询指定条件
|
|
286
|
+
fixedQueryForm: {},
|
|
287
|
+
// 工单类型在字典中显示的文字值
|
|
288
|
+
categoryStr: '',
|
|
289
|
+
// 用户信息
|
|
290
|
+
currUser: {
|
|
291
|
+
ename: '',
|
|
292
|
+
phoneNumber: ''
|
|
293
|
+
},
|
|
294
|
+
visible: false,
|
|
295
|
+
tabActiveKey: 'workSubmit'
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
created () {
|
|
299
|
+
Vue.$appdata.load().then(res => {
|
|
300
|
+
this.currUser.ename = this.$route.query.orgName
|
|
301
|
+
this.fixedQueryForm['t_uploader'] = this.currUser.ename
|
|
302
|
+
this.visible = true
|
|
303
|
+
})
|
|
304
|
+
},
|
|
305
|
+
mounted () {
|
|
306
|
+
},
|
|
307
|
+
methods: {
|
|
308
|
+
toDetail (record, id) {
|
|
309
|
+
this.serialNumber = id + ''
|
|
310
|
+
this.successVisible = true
|
|
285
311
|
},
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
312
|
+
getBase64 (file) {
|
|
313
|
+
return new Promise((resolve, reject) => {
|
|
314
|
+
const reader = new FileReader()
|
|
315
|
+
reader.readAsDataURL(file)
|
|
316
|
+
reader.onload = () => resolve(reader.result)
|
|
317
|
+
reader.onerror = error => reject(error)
|
|
292
318
|
})
|
|
293
319
|
},
|
|
294
|
-
|
|
320
|
+
// 图像修改检测
|
|
321
|
+
handleChange ({ fileList }) {
|
|
322
|
+
this.fileList = fileList.filter((item) => {
|
|
323
|
+
return item.status === 'done' || item.status === 'uploading'
|
|
324
|
+
})
|
|
295
325
|
},
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
})
|
|
308
|
-
},
|
|
309
|
-
// 图像修改检测
|
|
310
|
-
handleChange ({ fileList }) {
|
|
311
|
-
this.fileList = fileList.filter((item) => {
|
|
312
|
-
return item.status === 'done' || item.status === 'uploading'
|
|
313
|
-
})
|
|
314
|
-
},
|
|
315
|
-
// 在上传页面,点击图片上的垃圾桶,撤销上传
|
|
316
|
-
remove (file) {
|
|
317
|
-
return post(TicketDetailsViewApi.revocationImage, {
|
|
318
|
-
file: file
|
|
319
|
-
})
|
|
320
|
-
.then(res => {
|
|
321
|
-
if (res.data === 'success') {
|
|
322
|
-
this.$message.success('删除成功')
|
|
323
|
-
}
|
|
324
|
-
this.fileList = this.fileList.filter((item) => {
|
|
325
|
-
return item.response.name !== file.response.name
|
|
326
|
-
})
|
|
327
|
-
}, err => {
|
|
328
|
-
console.log(err)
|
|
326
|
+
// 在上传页面,点击图片上的垃圾桶,撤销上传
|
|
327
|
+
remove (file) {
|
|
328
|
+
return post(TicketDetailsViewApi.revocationImage, {
|
|
329
|
+
file: file
|
|
330
|
+
})
|
|
331
|
+
.then(res => {
|
|
332
|
+
if (res.data === 'success') {
|
|
333
|
+
this.$message.success('删除成功')
|
|
334
|
+
}
|
|
335
|
+
this.fileList = this.fileList.filter((item) => {
|
|
336
|
+
return item.response.name !== file.response.name
|
|
329
337
|
})
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
beforeUpload (file) {
|
|
333
|
-
const isJpgOrPng =
|
|
334
|
-
file.type === 'image/jpeg' ||
|
|
335
|
-
file.type === 'image/jpg' ||
|
|
336
|
-
file.type === 'image/png'
|
|
337
|
-
const Lt2M = file.size / 1024 / 1024 < 2
|
|
338
|
-
if (!Lt2M) {
|
|
339
|
-
this.$message.error('图片不得大于2MB!')
|
|
340
|
-
}
|
|
341
|
-
if (!isJpgOrPng) {
|
|
342
|
-
this.$message.error('只能上传jpg/png格式的图片')
|
|
343
|
-
}
|
|
344
|
-
return isJpgOrPng && Lt2M
|
|
345
|
-
},
|
|
346
|
-
handleCancel () {
|
|
347
|
-
this.previewVisible = false
|
|
348
|
-
},
|
|
349
|
-
// 处理预览图像
|
|
350
|
-
async handlePreview (file) {
|
|
351
|
-
if (!file.url && !file.preview) {
|
|
352
|
-
file.preview = await this.getBase64(file.originFileObj)
|
|
353
|
-
}
|
|
354
|
-
this.previewImage = file.url || file.preview
|
|
355
|
-
this.previewVisible = true
|
|
356
|
-
},
|
|
357
|
-
// 提交按钮逻辑
|
|
358
|
-
onSubmit () {
|
|
359
|
-
// 根据当前日期调用logic获取订单序列号
|
|
360
|
-
return post(TicketDetailsViewApi.getTicketSerialNumber, {
|
|
361
|
-
priority: this.data.priority,
|
|
362
|
-
category: this.data.category,
|
|
363
|
-
time: this.dataFormat(new Date())
|
|
338
|
+
}, err => {
|
|
339
|
+
console.log(err)
|
|
364
340
|
})
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
category: this.form.category,
|
|
376
|
-
serial_number: serialNumber,
|
|
377
|
-
images: this.fileList,
|
|
378
|
-
categoryStr: this.categoryStr,
|
|
379
|
-
phoneNumber: this.currUser.phoneNumber
|
|
380
|
-
})
|
|
381
|
-
.then(res => {
|
|
382
|
-
this.serialNumber = serialNumber
|
|
383
|
-
this.successVisible = true
|
|
384
|
-
this.fileList = []
|
|
385
|
-
this.form.category = ''
|
|
386
|
-
this.form.desc = ''
|
|
387
|
-
this.showCategoryAlert = true
|
|
388
|
-
}, err => {
|
|
389
|
-
console.log(err)
|
|
390
|
-
})
|
|
391
|
-
}, err => {
|
|
392
|
-
console.log(err)
|
|
393
|
-
})
|
|
394
|
-
},
|
|
395
|
-
// 格式化时间,为后台提供yyyyMMdd格式数据,方便后台使用
|
|
396
|
-
dataFormat (time) {
|
|
397
|
-
return `${
|
|
398
|
-
time.getFullYear()}${time.getMonth() + 1 >= 10 ? (time.getMonth() + 1) : '0' +
|
|
399
|
-
(time.getMonth() + 1)}${time.getDate() >= 10 ? time.getDate() : '0' +
|
|
400
|
-
time.getDate()
|
|
401
|
-
}`
|
|
402
|
-
},
|
|
403
|
-
// 点击向日葵链接
|
|
404
|
-
toSunClientClick () {
|
|
405
|
-
window.open('https://sunlogin.oray.com/download')
|
|
406
|
-
},
|
|
407
|
-
// 点击ToDesk链接
|
|
408
|
-
toDeskClick () {
|
|
409
|
-
window.open('https://www.todesk.com/download.html')
|
|
410
|
-
},
|
|
411
|
-
logout () {
|
|
412
|
-
logout()
|
|
413
|
-
this.$router.push('/login')
|
|
414
|
-
},
|
|
415
|
-
// 切换标签页
|
|
416
|
-
changeTab (id) {
|
|
417
|
-
this.tabActiveKey = id
|
|
341
|
+
},
|
|
342
|
+
// 上传头像前校验
|
|
343
|
+
beforeUpload (file) {
|
|
344
|
+
const isJpgOrPng =
|
|
345
|
+
file.type === 'image/jpeg' ||
|
|
346
|
+
file.type === 'image/jpg' ||
|
|
347
|
+
file.type === 'image/png'
|
|
348
|
+
const Lt2M = file.size / 1024 / 1024 < 2
|
|
349
|
+
if (!Lt2M) {
|
|
350
|
+
this.$message.error('图片不得大于2MB!')
|
|
418
351
|
}
|
|
352
|
+
if (!isJpgOrPng) {
|
|
353
|
+
this.$message.error('只能上传jpg/png格式的图片')
|
|
354
|
+
}
|
|
355
|
+
return isJpgOrPng && Lt2M
|
|
356
|
+
},
|
|
357
|
+
handleCancel () {
|
|
358
|
+
this.previewVisible = false
|
|
419
359
|
},
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
this.showCategoryAlert = !numReg.test(newVal)
|
|
360
|
+
// 处理预览图像
|
|
361
|
+
async handlePreview (file) {
|
|
362
|
+
if (!file.url && !file.preview) {
|
|
363
|
+
file.preview = await this.getBase64(file.originFileObj)
|
|
425
364
|
}
|
|
365
|
+
this.previewImage = file.url || file.preview
|
|
366
|
+
this.previewVisible = true
|
|
367
|
+
},
|
|
368
|
+
// 提交按钮逻辑
|
|
369
|
+
onSubmit () {
|
|
370
|
+
// 根据当前日期调用logic获取订单序列号
|
|
371
|
+
return post(TicketDetailsViewApi.getTicketSerialNumber, {
|
|
372
|
+
priority: this.data.priority,
|
|
373
|
+
category: this.data.category,
|
|
374
|
+
time: this.dataFormat(new Date())
|
|
375
|
+
})
|
|
376
|
+
.then(res => {
|
|
377
|
+
const serialNumber = res
|
|
378
|
+
if (this.form.desc === undefined) {
|
|
379
|
+
this.form.desc = '该用户没有填写描述信息'
|
|
380
|
+
}
|
|
381
|
+
// 拿到序列号,将数据保存到数据库中
|
|
382
|
+
this.categoryStr = this.$appdata.getDictionaryList('ticketCategoryMap')[this.form.category].label
|
|
383
|
+
return post(TicketDetailsViewApi.addTicket, {
|
|
384
|
+
uploader: this.currUser.ename,
|
|
385
|
+
description: this.form.desc,
|
|
386
|
+
category: this.form.category,
|
|
387
|
+
serial_number: serialNumber,
|
|
388
|
+
images: this.fileList,
|
|
389
|
+
categoryStr: this.categoryStr,
|
|
390
|
+
phoneNumber: this.form.phone
|
|
391
|
+
})
|
|
392
|
+
.then(res => {
|
|
393
|
+
this.serialNumber = serialNumber
|
|
394
|
+
this.successVisible = true
|
|
395
|
+
this.fileList = []
|
|
396
|
+
this.form.category = ''
|
|
397
|
+
this.form.desc = ''
|
|
398
|
+
this.showCategoryAlert = true
|
|
399
|
+
this.showPhoneAlert = true
|
|
400
|
+
}, err => {
|
|
401
|
+
console.log(err)
|
|
402
|
+
})
|
|
403
|
+
}, err => {
|
|
404
|
+
console.log(err)
|
|
405
|
+
})
|
|
406
|
+
},
|
|
407
|
+
// 格式化时间,为后台提供yyyyMMdd格式数据,方便后台使用
|
|
408
|
+
dataFormat (time) {
|
|
409
|
+
return `${
|
|
410
|
+
time.getFullYear()}${time.getMonth() + 1 >= 10 ? (time.getMonth() + 1) : '0' +
|
|
411
|
+
(time.getMonth() + 1)}${time.getDate() >= 10 ? time.getDate() : '0' +
|
|
412
|
+
time.getDate()
|
|
413
|
+
}`
|
|
414
|
+
},
|
|
415
|
+
// 点击向日葵链接
|
|
416
|
+
toSunClientClick () {
|
|
417
|
+
window.open('https://sunlogin.oray.com/download')
|
|
418
|
+
},
|
|
419
|
+
// 点击ToDesk链接
|
|
420
|
+
toDeskClick () {
|
|
421
|
+
window.open('https://www.todesk.com/download.html')
|
|
422
|
+
},
|
|
423
|
+
logout () {
|
|
424
|
+
logout()
|
|
425
|
+
this.$router.push('/login')
|
|
426
|
+
},
|
|
427
|
+
// 切换标签页
|
|
428
|
+
changeTab (id) {
|
|
429
|
+
this.tabActiveKey = id
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
watch: {
|
|
433
|
+
// 监控类别的改变,当类别改变,校验通过
|
|
434
|
+
'form.category' (newVal) {
|
|
435
|
+
const numReg = new RegExp(/^[0-9]+$/)
|
|
436
|
+
this.showCategoryAlert = !numReg.test(newVal)
|
|
437
|
+
},
|
|
438
|
+
'form.phone' (newVal) {
|
|
439
|
+
const numReg = new RegExp(/^[0-9]+$/)
|
|
440
|
+
this.showPhoneAlert = !numReg.test(newVal)
|
|
426
441
|
}
|
|
427
442
|
}
|
|
443
|
+
}
|
|
428
444
|
</script>
|
|
429
445
|
|
|
430
446
|
<style scoped>
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
447
|
+
.radio-item{
|
|
448
|
+
margin-right: 140px;
|
|
449
|
+
}
|
|
450
|
+
.submitTicketTitle{
|
|
451
|
+
font-size: 40px;
|
|
452
|
+
vertical-align: middle;
|
|
453
|
+
text-align: center;
|
|
454
|
+
margin-bottom: 40px;
|
|
455
|
+
}
|
|
440
456
|
</style>
|