miaofuhao лет назад: 2
Родитель
Сommit
370d94d022

BIN
CallCenterWeb.UI/RMYY/0616dist.rar


+ 10 - 7
CallCenterWeb.UI/RMYY/src/utils/request.js

@@ -5,7 +5,7 @@ import store from '../store'
5 5
 import { getToken } from '@/utils/auth'
6 6
 
7 7
 // 正在进行中的请求列表
8
-const reqList = []
8
+let reqList = []
9 9
 /**
10 10
  * 阻止重复请求
11 11
  * @param {array} reqList - 请求缓存列表
@@ -13,7 +13,7 @@ const reqList = []
13 13
  * @param {function} cancel - 请求中断函数
14 14
  * @param {string} errorMessage - 请求中断时需要显示的错误信息
15 15
  */
16
-const stopRepeatRequest = function(reqList, url, cancel, errorMessage) {
16
+const stopRepeatRequest = function (reqList, url, cancel, errorMessage) {
17 17
   const errorMsg = errorMessage || ''
18 18
   for (let i = 0; i < reqList.length; i++) {
19 19
     if (reqList[i] === url) {
@@ -29,7 +29,7 @@ const stopRepeatRequest = function(reqList, url, cancel, errorMessage) {
29 29
  * @param {array} reqList 全部请求列表
30 30
  * @param {string} url 请求地址
31 31
  */
32
-const allowRequest = function(reqList, url) {
32
+const allowRequest = function (reqList, url) {
33 33
   for (let i = 0; i < reqList.length; i++) {
34 34
     if (reqList[i] === url) {
35 35
       reqList.splice(i, 1)
@@ -64,7 +64,7 @@ const service = axios.create({
64 64
   // 后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream
65 65
   // 解决axios默认发送数据时,数据格式是Request Payload的问题
66 66
   transformRequest: [
67
-    function(data) {
67
+    function (data) {
68 68
       // 对 data 进行任意转换处理
69 69
       return qs.stringify(data)
70 70
     }
@@ -76,7 +76,7 @@ const service = axios.create({
76 76
   // return qs.stringify({ids: [1, 2, 3]}, {arrayFormat: 'indices'}) // 形式:ids[0]=1&ids[1]=2&ids[2]=3
77 77
   // return qs.stringify({ids: [1, 2, 3]}, {arrayFormat: 'brackets'})  // 形式:ids[]=1&ids[]=2&ids[]=3
78 78
   // return qs.stringify({ids: [1, 2, 3]}, {arrayFormat: 'repeat'})  // 形式: ids=1&ids=2&id=3
79
-  paramsSerializer: function(params) {
79
+  paramsSerializer: function (params) {
80 80
     return qs.stringify(params, { arrayFormat: 'indices' }) // 形式:ids=1&ids=2&id=3
81 81
   }
82 82
 })
@@ -90,7 +90,7 @@ service.interceptors.request.use(
90 90
     let cancel
91 91
     if (config.method === 'post') {
92 92
       // 设置cancelToken对象
93
-      config.cancelToken = new axios.CancelToken(function(c) {
93
+      config.cancelToken = new axios.CancelToken(function (c) {
94 94
         cancel = c
95 95
       })
96 96
       // 阻止重复请求。当上个请求未完成时,相同的请求不会进行
@@ -100,6 +100,9 @@ service.interceptors.request.use(
100 100
         cancel,
101 101
         `${config.url} 请求被中断`
102 102
       )
103
+      setTimeout(() => {
104
+        reqList = []
105
+      }, 5000)
103 106
       // stopRepeatRequest(reqList, config.url, cancel, `请求被中断`)
104 107
     } else {
105 108
     }
@@ -178,7 +181,7 @@ service.interceptors.response.use(
178 181
     console.log('err:' + error) // for debug
179 182
     if (error && error.response) {
180 183
       switch (
181
-        error.response.status // 跨域存在获取不到状态码的情况
184
+      error.response.status // 跨域存在获取不到状态码的情况
182 185
       ) {
183 186
         case 400:
184 187
           error.message = `请求错误(400):${error.response.config.url}`

+ 471 - 0
CallCenterWeb.UI/RMYYAPP/pages/myTask/myTaskBF.vue

@@ -0,0 +1,471 @@
1
+<template>
2
+	<view style="overflow: hidden;">
3
+		<page-meta :root-font-size="getFontSizeValue"></page-meta>
4
+		<view class="uni-margin-wrap">
5
+			<swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
6
+				:duration="duration">
7
+				<swiper-item v-for="item in bannnerData" :key="item.id">
8
+					<image :src="item.imgPath" mode=""></image>
9
+				</swiper-item>
10
+			</swiper>
11
+		</view>
12
+
13
+		<view class="orderManage">
14
+			<view class="orderTit" style="padding-left: 15px;color: rgb(126, 131, 125);">
15
+				<text
16
+					style="width: 4px;background-color: rgb(26, 188, 156);height: 20px;margin-top: 10px;margin-right: 5px;"></text>
17
+				<text>工单模块</text>
18
+			</view>
19
+
20
+			<view class="orderCon">
21
+				<view class="orderList" v-for="item in orderListData" :key="item.id" @click="workOrderListClick(item)">
22
+					<image :style="{ background: item.imageBg }" :src="item.imagePath" mode=""></image>
23
+					<text>{{ item.text }}</text>
24
+				</view>
25
+			</view>
26
+
27
+			<view class="orderTit" @click="changeStore" v-if="noticState">
28
+				<image style="background: #ff9600" src="/static/icon_noticefi.png"></image>
29
+				<text>公告通知</text>
30
+			</view>
31
+
32
+			<view class="notification">
33
+				<view class="notifiList" v-for="item in noticListData" :key="item.id">
34
+					<image :style="{ background: item.imageBg }" :src="item.imagePath" mode=""></image>
35
+					<view class="">
36
+						<text>{{ item.textTit }}</text>
37
+						<text>{{ item.textCon }}</text>
38
+					</view>
39
+				</view>
40
+			</view>
41
+		</view>
42
+		<!-- 弹框 -->
43
+		<view>
44
+			<uni-popup ref="inputDialogs" type="dialog">
45
+				<uni-popup-dialog ref="inputClose" mode="input" :title="title" @confirm="dialogInputConfirm">
46
+					<view style="width:100%;">
47
+						<uni-table ref="table" border stripe type="selection" emptyText="暂无更多数据"
48
+							@selection-change="selectionChange">
49
+							<uni-tr>
50
+								<uni-th align="center">科室</uni-th>
51
+							</uni-tr>
52
+							<uni-tr v-for="(item, index) in allowData" :key="index">
53
+								<uni-td align="center">{{ $mHelper.findParents(departList, item.deptid) }}</uni-td>
54
+							</uni-tr>
55
+						</uni-table>
56
+						<!-- <table class="equipmentInfo">
57
+							<thead style="background-color: #fafafa;">
58
+								<tr class="trCon">
59
+									<td class="tdCon">请选择</td>
60
+									<td class="tdCon">科室</td>
61
+								</tr>
62
+							</thead>
63
+							<tbody>
64
+								<tr class="trCon" v-for="(item,index) in allowData">
65
+									<td class="tdCon"><input :value="item.deptid" name="tabVal" type="radio" @change="handleSelectionChange" /></td>
66
+									<td class="tdCon">{{ $mHelper.findParents(departList, item.deptid)}}</td>
67
+								</tr>
68
+							</tbody>
69
+						</table> -->
70
+					</view>
71
+				</uni-popup-dialog>
72
+			</uni-popup>
73
+		</view>
74
+	</view>
75
+</template>
76
+<script>
77
+	import {
78
+		mapGetters
79
+	} from "vuex"
80
+	import store from '@/store';
81
+	import {
82
+		getToken
83
+	} from '@/utils/auth'
84
+	import pageData from '../myTask/repairList/addRepair/pageData.js'
85
+	export default {
86
+		data() {
87
+			return {
88
+				indicatorDots: true,
89
+				getFontSizeValue: '1rem',
90
+				autoplay: true,
91
+				interval: 2000,
92
+				noticState: false,
93
+				duration: 500,
94
+				bannnerData: [],
95
+				orderListData: [],
96
+				noticListData: [],
97
+				departList: [],
98
+				allowData: [],
99
+				title: "允用科室",
100
+				selectedIndexs:[],
101
+				onchangedept: ''
102
+			}
103
+		},
104
+		computed: {
105
+			...mapGetters(["State"]),
106
+		},
107
+		onLoad() {
108
+			this.init()
109
+			this.saveDept()
110
+			this.getFontSizeValue = uni.getStorageSync('fontSizeValue') + 'rem'
111
+			// this.getFontSizeValue = '1.5rem'
112
+			if (uni.getStorageSync("roleCode") === "APRY") {
113
+				uni.hideTabBar()
114
+			}
115
+			if (uni.getStorageSync("isAllow") === "1") {
116
+				var str = uni.getStorageSync('storageAllowUserDept') //获取允用科室ids
117
+				var arr = []
118
+				if (str.indexOf(',') >= 0) {
119
+					for (var i = 0; i < str.split(",").length; i++) {
120
+						arr.push({
121
+							deptname: "",
122
+				  	deptid: str.split(",")[i]
123
+						})
124
+					}
125
+					this.allowData = arr
126
+				}
127
+				this.$nextTick(function() {
128
+					// DOM 更新了
129
+					this.$refs.inputDialogs.open()
130
+				})
131
+
132
+			}
133
+			// uni.hideTabBar()
134
+		},
135
+		methods: {
136
+			selectionChange(e){
137
+				this.selectedIndexs = e.detail.index
138
+				this.onchangedept = this.allowData[e.detail.index].deptid
139
+				console.log(this.allowData[e.detail.index])
140
+			},
141
+			dialogInputConfirm(){
142
+				if(this.selectedIndexs.length!=1){
143
+					this.$mHelper.toast("请选择一行数据");
144
+					return;
145
+				}
146
+				const params={
147
+					deptId:this.onchangedept,
148
+					userid:uni.getStorageSync('userId')
149
+				}
150
+				this.$http.get('UserAccount/ChangeDeptId', params).then(res=>{
151
+					if(res.state == "success"){
152
+						this.$mHelper.toast(res.message);
153
+						this.$refs.inputDialogs.close()
154
+					}
155
+				})
156
+			},
157
+			// handleSelectionChange(val) {
158
+			// 	this.onchangedept = val.target.value
159
+			// 	console.log(val)
160
+			// },
161
+			init() {
162
+				// #ifdef APP-PLUS
163
+				let timer
164
+				timer = setInterval(() => {
165
+					plus.push.getClientInfoAsync((info) => {
166
+						let cid = info["clientid"];
167
+						if (cid) {
168
+							clearInterval(timer)
169
+							this.clienGet(cid) //获取cid 
170
+						}
171
+					});
172
+				}, 5000)
173
+
174
+				this.upData()
175
+				// #endif
176
+				this.bannnerData = this.$mConstDataConfig.bannnerData
177
+				this.getMenuPermissions() //获取用户权限
178
+				// if (!getToken()) {
179
+				// 	uni.reLaunch({
180
+				// 		url: '/pages/login/login'
181
+				// 	});
182
+				// } else {
183
+				// 	//banner数据
184
+				// 	this.bannnerData = this.$mConstDataConfig.bannnerData
185
+				// 	this.getMenuPermissions() //获取用户权限
186
+				// 	// 公告数据
187
+				// 	//this.noticListData = this.$mConstDataConfig.noticListData
188
+				// }
189
+			},
190
+			saveDept() {
191
+				pageData.getDet((res, data) => {
192
+					this.departList = data
193
+					uni.setStorageSync('deptTreeData', JSON.stringify(res))
194
+					uni.setStorageSync('deptAllList', JSON.stringify(data))
195
+				})
196
+			},
197
+			changeStore() {
198
+				this.$mStore.dispatch("STATE", 3)
199
+			},
200
+			workOrderListClick(item) {
201
+				uni.navigateTo({
202
+					url: item.navigateToUrl,
203
+				})
204
+			},
205
+			clienGet(cid) {
206
+
207
+				let apptype
208
+				if (plus.device.model.indexOf('iPhone') > -1) {
209
+					apptype = 2;
210
+				} else {
211
+					apptype = 1;
212
+				}
213
+				const params = {
214
+					apptype: apptype,
215
+					clientid: cid,
216
+					token: uni.getStorageSync("token"),
217
+				}
218
+				this.$http.get("PushMessage/PutAppClientIdAsync", params).then((response) => {
219
+						if (response.state.toLowerCase() === "success") {
220
+							let data = response.message
221
+						}
222
+
223
+					})
224
+					.catch((e) => {
225
+						console.log(e)
226
+					})
227
+
228
+			},
229
+			upData() {
230
+				plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
231
+					uni.setStorageSync('versionCode', wgtinfo.version)
232
+				});
233
+				let typeUp = ''
234
+				if (plus.device.model.indexOf('iPhone') > -1) {
235
+					typeUp = 1;
236
+				} else {
237
+					typeUp = 0;
238
+				}
239
+				const params = {
240
+					type: typeUp,
241
+					isNew: true,
242
+				}
243
+				this.$http.get('/ApplicationsVersion/GetAndroid', params).then((response) => {
244
+					if (response.state == "success") {
245
+						let data = response.data
246
+						console.log(data)
247
+						//NewCode_ = data.data.F_VersionCode; 
248
+						const nowVersionCode = uni.getStorageSync('versionCode')
249
+						const serveVersionCode = data.F_VersionCode
250
+						console.log(nowVersionCode + "---" + serveVersionCode)
251
+						if (nowVersionCode !== serveVersionCode) {
252
+							if (typeUp === 0) {
253
+								plus.runtime.openURL(data.FileUrl[0].F_FileUrl, err => {
254
+									plus.runtime.openURL(data.FileUrl[0].F_FileUrl);
255
+								}, 'com.android.browser');
256
+								// uni.showModal({
257
+								// 	title: '更新',
258
+								// 	content: '是否更新',
259
+								// 	success: function (res) {
260
+								// 		if (res.confirm) {
261
+								// 			console.log(data.F_FileUrl)
262
+								// 		} else if (res.cancel) {
263
+								// 			this.$mHelper.toast("取消更新");
264
+								// 		}
265
+								// 	}
266
+								// });
267
+							} else if (typeUp === 1) {
268
+								plus.runtime.openURL(data.F_Url);
269
+								// uni.showModal({
270
+								// 	title: '更新',
271
+								// 	content: '是否更新',
272
+								// 	success: function (res) {
273
+								// 		if (res.confirm) {
274
+								// 			plus.runtime.openURL(data.F_Url);
275
+								// 		} else if (res.cancel) {
276
+								// 			this.$mHelper.toast("取消更新");
277
+								// 		}
278
+								// 	}
279
+								// });
280
+
281
+							}
282
+
283
+
284
+						}
285
+
286
+					}
287
+				}).catch((e) => {
288
+					console.log(e);
289
+				})
290
+			},
291
+
292
+			getMenuPermissions() {
293
+				let code = uni.getStorageSync("roleCode")
294
+				this.$http.get("InternalMessages/GetCount").then((response) => {
295
+						if (response.state.toLowerCase() === "success") {
296
+							if (response.IsRead == 1) {
297
+								uni.showTabBarRedDot({
298
+									index: 2
299
+								})
300
+							} else {
301
+								uni.hideTabBarRedDot({
302
+									index: 2
303
+								})
304
+							}
305
+						}
306
+
307
+					})
308
+					.catch((e) => {
309
+						console.log(e)
310
+					})
311
+				/* 
312
+        GLY:管理员
313
+				*/
314
+				if (code === 'WXY' || code === 'WXBZZ') {
315
+					this.orderListData = this.$mConstDataConfig.roleListData.UnitList
316
+				} else if (code === "DDZX") {
317
+					this.orderListData = this.$mConstDataConfig.roleListData.dispatchList
318
+				} else if (code === "GQY") {
319
+					this.orderListData = this.$mConstDataConfig.roleListData.AttendantList
320
+				} else if (code === "SJ") {
321
+					this.orderListData = this.$mConstDataConfig.roleListData.driverList
322
+				} else if (code === 'jcgn') {
323
+					this.orderListData = this.$mConstDataConfig.roleListData.applyRepairList
324
+				} else if (code === 'APRY') {
325
+					this.orderListData = this.$mConstDataConfig.roleListData.driverList
326
+				} else if (code === 'BMXG') {
327
+					this.orderListData = this.$mConstDataConfig.roleListData.applyRepairList
328
+				} else if (code === 'GLY') {
329
+					this.orderListData = this.$mConstDataConfig.roleListData.applyRepairList
330
+				}
331
+			},
332
+		},
333
+	}
334
+</script>
335
+
336
+<style lang="scss">
337
+	.equipmentInfo {
338
+		width: 100%;
339
+		margin-top: 15px;
340
+		border: 1px solid rgb(229, 229, 229);
341
+		box-shadow: 0px 4px 16px 0px rgba(69, 91, 99, 0.05);
342
+		margin-bottom: 20px;
343
+		border-radius: 5px;
344
+
345
+		.trCon {
346
+			width: 100%;
347
+			// font-size: 14px;
348
+
349
+			.tdCon {
350
+				display: inline-block;
351
+				padding: 10px 0px;
352
+				color: rgb(102, 102, 102);
353
+				width: 48%;
354
+				padding-right: 5px;
355
+				text-align: center;
356
+			}
357
+		}
358
+	}
359
+
360
+	.uni-margin-wrap {
361
+		width: 690rpx;
362
+		width: 100%;
363
+	}
364
+
365
+	.swiper {
366
+		height: 225px;
367
+
368
+		image {
369
+			width: 100%;
370
+			height: 100%;
371
+		}
372
+	}
373
+
374
+	.orderManage {
375
+		.orderTit {
376
+			margin-top: 15rpx;
377
+			width: 100%;
378
+			height: 80rpx;
379
+			line-height: 80rpx;
380
+			background: #ffffff;
381
+			display: flex;
382
+			border-bottom: 1rpx solid #eeeeee;
383
+
384
+			text {
385
+				font-size: 1rem;
386
+			}
387
+
388
+			image {
389
+				width: 24rpx;
390
+				height: 24rpx;
391
+				padding: 8rpx;
392
+				border-radius: 12px;
393
+				background: #1972c2;
394
+				margin: 20rpx 10rpx 20rpx 26rpx;
395
+			}
396
+		}
397
+
398
+		.orderCon {
399
+			background: #ffffff;
400
+			display: flex;
401
+			flex-wrap: wrap;
402
+
403
+			.orderList {
404
+				width: 186rpx;
405
+				height: 206rpx;
406
+				text-align: center;
407
+				border-right: 2rpx solid #eeeeee;
408
+				border-bottom: 2rpx solid #eeeeee;
409
+
410
+				image {
411
+					width: 40rpx;
412
+					height: 40rpx;
413
+					margin: 0 auto;
414
+					display: block;
415
+					border-radius: 35rpx;
416
+					padding: 15rpx;
417
+					margin-top: 45rpx;
418
+				}
419
+
420
+				text {
421
+					line-height: 60rpx;
422
+				}
423
+			}
424
+
425
+			.orderList:nth-child(4n + 4) {
426
+				border-right: none;
427
+			}
428
+
429
+			.orderList:last-child {
430
+				border-right: none;
431
+			}
432
+		}
433
+
434
+		.notification {
435
+			background: #ffffff;
436
+			margin-bottom: 100rpx;
437
+			display: flex;
438
+			flex-wrap: wrap;
439
+			border-bottom: 1rpx solid #eeeeee;
440
+
441
+			.notifiList {
442
+				width: 375rpx;
443
+				height: 172rpx;
444
+				padding: 46rpx 30rpx 46rpx 30rpx;
445
+				text-align: left;
446
+				border-right: 1rpx solid #eeeeee;
447
+				border-bottom: 1rpx solid #eeeeee;
448
+				box-sizing: border-box;
449
+				display: flex;
450
+
451
+				image {
452
+					width: 48rpx;
453
+					height: 48rpx;
454
+					box-sizing: border-box;
455
+					border-radius: 24rpx;
456
+					padding: 10rpx;
457
+					margin: 19rpx;
458
+				}
459
+
460
+				text {
461
+					font-size: 24rpx;
462
+					line-height: 30rpx;
463
+				}
464
+			}
465
+
466
+			.notifiList:nth-child(2n + 2) {
467
+				border-right: none;
468
+			}
469
+		}
470
+	}
471
+</style>