zhaomin 3 anni fa
parent
commit
3352043502

+ 283 - 0
CallCenterWeb.UI/RMYYAPP/common/normal.scss

@@ -0,0 +1,283 @@
1
+/*常见样式, 对于uview的内置样式的不足的补全以及通用样式的补充*/
2
+/*背景*/
3
+.bg{
4
+	&-white{
5
+		background: #FFFFFF;
6
+	}
7
+	&-black{
8
+		background: #000000;
9
+	}
10
+	&-blue{
11
+		background: #3c9cff;
12
+	}
13
+	&-004F9C{
14
+		background: #004F9C;
15
+	}
16
+	&-F5F5F5{
17
+		background: #F5F5F5;
18
+	}
19
+	&-F7F7F7{
20
+		background: #F7F7F7;
21
+	}
22
+}
23
+/*字体颜色*/
24
+.color{
25
+	&-blue{
26
+		color: #3c9cff;
27
+	}
28
+	&-000000{ //黑
29
+		color: #000000;
30
+	}
31
+	&-333333{ // 字体淡黑
32
+		color: #333333;
33
+	}
34
+	&-ffffff{ // 白色
35
+		color: #FFFFFF;
36
+	}
37
+	&-999999{ // 灰色
38
+		color: #999999;
39
+	}
40
+	&-red{//价格红
41
+		color: #E50213;
42
+	}
43
+}
44
+.w-100{
45
+	width: 100%;
46
+}
47
+/*系统状态栏高度*/
48
+.system-height{
49
+	height: var(--status-bar-height);
50
+}
51
+/* 圆角大小例:radius-1 ,radius-10... */
52
+@for $i from 1 through 100 {
53
+  .radius-#{$i} {  border-radius: $i*1rpx;}
54
+}
55
+/* 自体加粗例:weight-100 ,weight-600... */
56
+@for $i from 1 through 9 {
57
+  .weight-#{$i*100} {  font-weight: $i*100;}
58
+}
59
+/* 自体加粗例:weight-50 ,weight-550...*/
60
+@for $i from 1 through 9 {
61
+  .weight-#{$i*100 + 50} {  font-weight: 50 + $i*100;}
62
+}
63
+.weight-bold{
64
+	font-weight: bold;
65
+}
66
+.border-bottom {
67
+  border-bottom: 1rpx solid rgba($color: #707070, $alpha: 0.12);
68
+}
69
+
70
+/* flex 布局 */
71
+.flex{
72
+	/* #ifndef APP-PLUS-NVUE */
73
+	display:flex;
74
+	/* #endif */
75
+	flex-direction:row;
76
+}
77
+.flex-row{ flex-direction:row!important; }
78
+.flex-column{ flex-direction:column!important; }
79
+.flex-row-reverse{ flex-direction:row-reverse!important; }
80
+.flex-column-reverse{ flex-direction:column-reverse!important; }
81
+.flex-wrap{ flex-wrap:wrap;}
82
+.flex-nowrap{ flex-wrap:nowrap;}
83
+.justify-start{justify-content:flex-start;}
84
+.justify-end{justify-content:flex-end;}
85
+.justify-between{justify-content:space-between;}
86
+/* #ifndef APP-NVUE */
87
+.justify-evenly {justify-content: space-evenly;} 
88
+/* #endif */
89
+.justify-center{justify-content:center;}
90
+.align-center{ align-items: center; }
91
+.align-stretch{ align-items: stretch; }
92
+.align-start{ align-items: flex-start; }
93
+.align-end{ align-items: flex-end; }
94
+/* #ifndef APP-NVUE */
95
+.content-start {align-content: flex-start;}
96
+.content-end {align-content: flex-end;}
97
+.content-center {align-content: center;}
98
+.content-between {align-content: space-between;}
99
+.content-around {align-content: space-around;}
100
+.content-stretch {align-content: stretch;}
101
+/* #endif */
102
+.flex-1{ flex: 1; }
103
+.flex-2{ flex: 2; }
104
+.flex-3{ flex: 3; }
105
+.flex-4{ flex: 4; }
106
+.flex-5{ flex: 5; }
107
+/* #ifndef APP-PLUS-NVUE */
108
+.flex-shrink{ flex-shrink: 0; }
109
+/* #endif */
110
+
111
+// 定义内外边距,历遍1-80
112
+@for $i from 0 through 80 {
113
+	// 只要双数和能被5除尽的数
114
+	@if $i % 2 == 0 or $i % 5 == 0 {
115
+		// 得出:u-margin-30或者u-m-30
116
+		.p-x-#{$i} {
117
+			padding-left: $i + rpx!important;
118
+			padding-right: $i + rpx!important;
119
+		}
120
+		.p-y-#{$i} {
121
+			padding-top: $i + rpx!important;
122
+			padding-bottom: $i + rpx!important;
123
+		}
124
+		.m-x-#{$i} {
125
+			margin-left: $i + rpx!important;
126
+			margin-right: $i + rpx!important;
127
+		}
128
+		.m-y-#{$i} {
129
+			margin-top: $i + rpx!important;
130
+			margin-bottom: $i + rpx!important;
131
+		} 
132
+		.m-#{$i} {
133
+			margin-left: $i + rpx!important;
134
+			margin-right: $i + rpx!important;
135
+			margin-top: $i + rpx!important;
136
+			margin-bottom: $i + rpx!important;
137
+		}
138
+		.p-#{$i} {
139
+			padding-left: $i + rpx!important;
140
+			padding-right: $i + rpx!important;
141
+			padding-top: $i + rpx!important;
142
+			padding-bottom: $i + rpx!important
143
+		}
144
+		.m-l-#{$i} { margin-left: $i + rpx!important; }
145
+		.m-t-#{$i} { margin-top: $i + rpx!important; }
146
+		.m-r-#{$i} { margin-right: $i + rpx!important; }
147
+		.m-b-#{$i} { margin-bottom: $i + rpx!important; }
148
+		.p-l-#{$i} { padding-left: $i + rpx!important; }
149
+		.p-t-#{$i} { padding-top: $i + rpx!important; }
150
+		.p-r-#{$i} { padding-right: $i + rpx!important; }
151
+		.p-b-#{$i} { padding-bottom: $i + rpx!important; }
152
+	}
153
+}
154
+/* #ifndef APP-PLUS-NVUE */
155
+.m-auto{ margin: auto; }
156
+/* #endif */
157
+
158
+// 定义字体大小
159
+@for $i from 9 to 20 {
160
+	.font-#{$i} { font-size: $i + rpx; }
161
+}
162
+
163
+// 定义字体(rpx)单位,大于或等于20的都为rpx单位字体
164
+@for $i from 20 through 80 {
165
+	.font-#{$i} { font-size: $i + rpx; }
166
+}
167
+// 圆角
168
+@for $i from 4 through 60 {
169
+	.radius-#{$i} { border-radius: $i + rpx; }
170
+}
171
+/* #ifndef APP-NVUE */
172
+.radius-c { border-radius: 50%;}
173
+/* #endif */
174
+
175
+/* #ifndef APP-NVUE */
176
+.ls { letter-spacing: 5rpx; }
177
+.ls-1 { letter-spacing: 10rpx; }
178
+.ls-2 { letter-spacing: 20rpx; }
179
+.ls-3 { letter-spacing: 30rpx; }
180
+.ls-4 { letter-spacing: 40rpx; }
181
+.ls-7 { letter-spacing: 70rpx; }
182
+/* #endif */
183
+
184
+/* 内容溢出 */
185
+.overflow-hidden { overflow: hidden;}
186
+
187
+/* 文字缩进 */
188
+/* #ifndef APP-PLUS-NVUE */
189
+.text-indent{text-indent:2;}
190
+/* #endif */
191
+/* 文字划线 */
192
+.text-through{text-decoration:line-through;}
193
+/* 文字对齐 */
194
+.text-left { text-align: left;}
195
+.text-right { text-align: right;}
196
+.text-center { text-align: center;}
197
+/* 文字换行溢出处理 */
198
+.text-ellipsis {
199
+	/* #ifndef APP-PLUS-NVUE */
200
+	overflow: hidden;
201
+	text-overflow: ellipsis;
202
+	white-space: nowrap;
203
+	/* #endif */ 
204
+	/* #ifdef APP-PLUS-NVUE */
205
+	lines: 1;
206
+	text-overflow: ellipsis;
207
+	/* #endif */
208
+}
209
+/* #ifdef APP-NVUE */
210
+.text-ellipsis-2 {
211
+  lines: 2;
212
+  text-overflow:ellipsis;
213
+}
214
+/* #endif */
215
+ /* #ifndef APP-PLUS-NVUE */
216
+.text-ellipsis-2 {
217
+  overflow: hidden;
218
+  text-overflow: ellipsis;
219
+  display: -webkit-box;
220
+  -webkit-line-clamp: 2; //多行在这里修改数字即可
221
+  overflow: hidden;
222
+  /* autoprefixer: ignore next */
223
+  -webkit-box-orient: vertical;
224
+}
225
+/* #endif */
226
+
227
+// 边框 
228
+.border {
229
+	border-width: 0.5px;
230
+	border-style: solid;
231
+	border-color: #dee2e6;
232
+}
233
+.border-top {
234
+  border-top-width: 0.5px;
235
+  border-top-style: solid;
236
+  border-top-color: #dee2e6;
237
+}
238
+.border-right {
239
+  border-right-width: 0.5px;
240
+  border-right-style: solid;
241
+  border-right-color: #dee2e6;
242
+}
243
+.border-bottom {
244
+  border-bottom-width: 0.5px;
245
+  border-bottom-style: solid;
246
+  border-bottom-color: #dee2e6;
247
+}
248
+.border-left {
249
+  border-left-width: 0.5px;
250
+  border-left-style: solid;
251
+  border-left-color: #dee2e6;
252
+}
253
+
254
+/* 定位 */
255
+.position-relative { position: relative;}
256
+.position-absolute { position: absolute;}
257
+.position-fixed { position: fixed;}
258
+/* 定位 - 固定顶部 */
259
+.fixed-top {
260
+  position: fixed;
261
+  top: 0;
262
+  right: 0;
263
+  left: 0;
264
+  z-index: 1030;
265
+}
266
+/* 定位 - 固定底部 */
267
+.fixed-bottom {
268
+  position: fixed;
269
+  right: 0;
270
+  bottom: 0;
271
+  left: 0;
272
+  z-index: 1030;
273
+}
274
+.top-0 { top: 0; }
275
+.left-0 { left: 0; }
276
+.right-0 { right: 0; }
277
+.bottom-0 { bottom: 0; }
278
+.float-left{ float: left; }
279
+.float-right{ float: right; }
280
+.clear-both{ clear: both; }
281
+.status-bar { height: var(--status-bar-height); }
282
+
283
+.inline-block{ display: inline-block; }

BIN
CallCenterWeb.UI/RMYYAPP/pages/components/upload-imagesAndvideo/images/close.png


BIN
CallCenterWeb.UI/RMYYAPP/pages/components/upload-imagesAndvideo/images/image.png


BIN
CallCenterWeb.UI/RMYYAPP/pages/components/upload-imagesAndvideo/images/movie.png


BIN
CallCenterWeb.UI/RMYYAPP/pages/components/upload-imagesAndvideo/images/player.png


+ 200 - 0
CallCenterWeb.UI/RMYYAPP/pages/components/upload-imagesAndvideo/index.vue

@@ -0,0 +1,200 @@
1
+<template>
2
+	<view>
3
+		<view class="flex flex-wrap p-l-20 p-t-20">
4
+			<view class="m-r-20 m-b-20 tool-content-box position-relative" v-for="(imgItem, imgIndex) in imageList"
5
+				:key="imgIndex">
6
+				<image @click="previewImage(imgIndex)" :src="imgItem.localUrl" class="tool-cover-mini"
7
+					mode="aspectFill" v-if="fileType.indexOf(imgItem.type) > -1"/>
8
+				<image src="@/static/file.png" class="tool-cover-mini" else> </image>
9
+				<view class="text-center position-absolute top-0 right-0 text-greey p-t-5 p-r-5">
10
+					<image :src="require('@/pages/components/upload-imagesAndvideo/images/close.png')"
11
+						class="tool-close-icon" @click="delImage(imgIndex)" mode="aspectFill" />
12
+				</view>
13
+				<view class="file_img">
14
+					{{imgItem.name}}
15
+				</view>
16
+				<view v-if="imgItem.loadState == 'fail'"
17
+					class="p-y-10 flex align-center justify-center position-absolute bottom-0 left-0 right-0 text-center font-24 tool-upload-fail">
18
+					上传失败
19
+				</view>
20
+				<view v-if="imgItem.loadState == 'loading'"
21
+					class="flex align-center justify-center position-absolute top-0 bottom-0 left-0 right-0 font-24">
22
+					已上传({{imgItem.progress}})
23
+				</view>
24
+			</view>
25
+
26
+			<view class="m-r-20 m-b-20 flex flex-column justify-center tool-box">
27
+				<lsj-upload ref="lsjUpload" childId="upload" :option="option" :debug="true" :instantly="true"
28
+					@progress="onprogress" @change="onChange">
29
+					<uni-view class="is-add">
30
+						<uni-view class="icon-add"></uni-view>
31
+						<uni-view class="icon-add rotate"></uni-view>
32
+					</uni-view>
33
+				</lsj-upload>
34
+			</view>
35
+		</view>
36
+	</view>
37
+</template>
38
+
39
+<script>
40
+	import indexConfig from '@/config/index.config';
41
+	const baseUrlUpload = "http://xxxxx" // 这是文件上传的地址,必填!!!,视频、图片的上传地址都是这个
42
+	export default {
43
+		name: 'uploadImagesAndvideo',
44
+		props: {
45
+			useImageTool: {
46
+				type: Boolean,
47
+				default: true
48
+			},
49
+			uGridCol: {
50
+				type: Number,
51
+				default: 4
52
+			},
53
+			maxImagesCount: {
54
+				type: Number,
55
+				default: 5
56
+			}
57
+		},
58
+		data() {
59
+			return {
60
+				fileType: ['.png', '.jpg' ,'.webp', '.bmp', '.jpeg'],
61
+				option: {
62
+					url: indexConfig.baseUrl + "/FaultRepair/UploadFile",
63
+					name: 'file',
64
+					header: {
65
+						Authorization: uni.getStorageSync('Admin-Token')
66
+					}
67
+				},
68
+				imageList: [],
69
+				videoList: [],
70
+				previewVideoUrl: ''
71
+			}
72
+		},
73
+		methods: {
74
+			//删除图片
75
+			delImage(index) {
76
+				this.imageList.splice(index, 1);
77
+				console.log(this.imageList)
78
+			},
79
+			// 选择文件
80
+			onprogress(res) {
81
+				if (res.progress && typeof(res.responseText) == 'string') {
82
+					console.log(res.responseText)
83
+					console.log(JSON.parse(res.responseText))
84
+					this.imageList.push({
85
+						localUrl: res.path,
86
+						uploadUrl: JSON.parse(res.responseText).data[0].F_FileUrl,
87
+						loadState: res.type, //loading,fail,success
88
+						progress: res.progress,
89
+						imgid: JSON.parse(res.responseText).data[0].F_FileId,
90
+						type: JSON.parse(res.responseText).data[0].F_FileType,
91
+						name: JSON.parse(res.responseText).data[0].F_FileName.split(')')[1]
92
+					})
93
+					this.$emit('post-img-data', this.imageList)
94
+				}
95
+
96
+			},
97
+			onChange(res) {
98
+			},
99
+			//预览图片
100
+			previewImage(index) {
101
+				let urls = []
102
+				this.imageList.forEach(item => {
103
+					urls.push(item.localUrl)
104
+				})
105
+				uni.previewImage({
106
+					current: index,
107
+					urls: urls
108
+				});
109
+			},
110
+			//获取所有上传的图片
111
+			getImages() {
112
+				let images = []
113
+				this.imageList.forEach(item => {
114
+					images.push(item.uploadUrl)
115
+				})
116
+				return images
117
+			}
118
+		}
119
+	}
120
+</script>
121
+
122
+<style lang="scss">
123
+	@import '@/common/normal.scss';
124
+
125
+	.tool-content-box {
126
+		width: 200rpx;
127
+		height: 200rpx;
128
+		border-radius: 10rpx;
129
+		overflow: hidden;
130
+		border: 1px solid #EEEEEE;
131
+	}
132
+
133
+	.tool-box {
134
+		width: 200rpx;
135
+		height: 200rpx;
136
+		border: 1px dashed #DCDFE6;
137
+		border-radius: 10rpx;
138
+	}
139
+	
140
+	.file_img {
141
+		position: absolute;
142
+		bottom: 0px;
143
+		color: #999999;
144
+		text-align: center;
145
+		width: 100%;
146
+		background-color: rgba(229, 229, 229 , 0.8);
147
+	}
148
+	
149
+	.is-add {
150
+		display: flex;
151
+		align-items: center;
152
+		justify-content: center;
153
+		margin-top: 20px;
154
+		
155
+		.icon-add {
156
+			width: 50px;
157
+			height: 5px;
158
+			background-color: #f1f1f1;
159
+			border-radius: 2px;
160
+		}
161
+		
162
+		.rotate{
163
+		    position: absolute;
164
+		    -webkit-transform: rotate(90deg);
165
+		    transform: rotate(90deg);
166
+		}
167
+		
168
+		.icon-add {
169
+		    width: 50px;
170
+		    height: 5px;
171
+		    background-color: #f1f1f1;
172
+		    border-radius: 2px;
173
+		}
174
+	}
175
+	
176
+	.tool-image {
177
+		width: 100rpx;
178
+		height: 100rpx;
179
+	}
180
+
181
+	.tool-cover-mini {
182
+		width: 100%;
183
+		height: 100%;
184
+	}
185
+
186
+	.tool-close-icon {
187
+		width: 35rpx;
188
+		height: 35rpx;
189
+	}
190
+
191
+	.tool-player-icon {
192
+		width: 70rpx;
193
+		height: 70rpx;
194
+	}
195
+
196
+	.tool-upload-fail {
197
+		background-color: #FA3534;
198
+		color: #FFFFFF;
199
+	}
200
+</style>

+ 13 - 4
CallCenterWeb.UI/RMYYAPP/pages/managemtnt/managemtnt.vue

@@ -50,6 +50,7 @@
50 50
 				listData: [],
51 51
 				page: 1,
52 52
 				loadMoreState: 'more', //more loading  no-more
53
+				total: 0
53 54
 			}
54 55
 		},
55 56
 		filters: {
@@ -125,6 +126,7 @@
125 126
 							if (response.rows.length > 0) {
126 127
 								this.infoState = false
127 128
 								let data = response.rows
129
+								this.total = response.total
128 130
 								uni.stopPullDownRefresh();
129 131
 								this.listData = this.listData.concat(data)
130 132
 								if (this.listData.length >= 6) {
@@ -168,11 +170,16 @@
168 170
 					})
169 171
 				}else if(type == 2) {
170 172
 					uni.navigateTo({
171
-						url: '/pages/myTask/comDispatch/comDispatchDetail/comDispatchDetail?wid=' + wid+ '&sms_id='+ id
173
+						url: '/pages/myTask/vehicleSchedulList/components/vehiccleDetail/vehiccleDetail?wid=' + wid+ '&segmenter=0'
172 174
 					})
173
-					
174 175
 				}else if(type == 3) {
175
-					
176
+					uni.navigateTo({
177
+						url: '/pages/myTask/comDispatch/comDispatchDetail/comDispatchDetail?wid=' + wid+ '&sms_id='+ id
178
+					})
179
+				}else if(type == 4) {
180
+					uni.navigateTo({
181
+						url: '/pages/myTask/vehicleSchedulList/components/vehiccleDetail/vehiccleDetail?wid=' + wid+ '&segmenter=1' +'&sms_id='+ wid
182
+					})
176 183
 				}
177 184
 				
178 185
 			},
@@ -185,11 +192,13 @@
185 192
 		 * 上拉加载回调函数
186 193
 		 */
187 194
 		onReachBottom() {
188
-			if (this.listData.length >= 6) {
195
+			console.log(this.listData)
196
+			if (this.listData.length != this.total) {
189 197
 				this.loadMoreState = 'loading'
190 198
 				this.page = this.page + 1
191 199
 				this.getList(this.paramsData)
192 200
 			} else {
201
+				console.log(this.listData)
193 202
 				this.loadMoreState = 'no-more'
194 203
 			}
195 204
 

+ 11 - 3
CallCenterWeb.UI/RMYYAPP/pages/myTask/comDispatch/addComDispatch/addComDispatch.vue

@@ -49,8 +49,9 @@
49 49
 				</uni-forms-item>
50 50
 				<uni-forms-item label="附件" name="">
51 51
 					<view class="example-body">
52
-						<!-- <uni-file-picker limit="5" file-mediatype="all" @select="select" @success="success" @delete="deleteFile"></uni-file-picker> -->
53
-						<upload @post-string-data="getImgData" :fileUrlList="imgUrlList"></upload>
52
+						<newfile @post-img-data="postImgData"></newfile>
53
+						<!-- <upload-file @post-string-data="getImgData" :fileUrlList="imgUrlList"></upload-file> -->
54
+						<!-- <upload @post-string-data="getImgData" :imgUrlList="imgUrlList"></upload> -->
54 55
 					</view>
55 56
 				</uni-forms-item>
56 57
 			</uni-forms>
@@ -68,11 +69,15 @@
68 69
 		filterSelectData
69 70
 	} from '@/utils/dataTreating.js'
70 71
 	import pageData from "@/pages/myTask/repairList/addRepair/pageData.js"
71
-	import upload from '@/pages/components/upload/uploadFile.vue' //upload
72
+	import upload from '@/pages/components/upload/upload.vue' //upload
73
+	import uploadFile from '@/pages/components/upload/uploadFile.vue' //upload
74
+	import newfile from '@/pages/components/upload-imagesAndvideo/index.vue' //upload
72 75
 	import dictionariesSelect from '@/pages/components/dictionariesSelect/dictionariesSelect.vue' //upload
73 76
 	export default {
74 77
 		components: {
75 78
 			upload,
79
+			uploadFile,
80
+			newfile,
76 81
 			orderSelect,
77 82
 			dictionariesSelect
78 83
 		},
@@ -171,6 +176,9 @@
171 176
 			window.scrollTo(0,0)
172 177
 		},
173 178
 		methods: {
179
+			postImgData(res) {
180
+				console.log(res)
181
+			},
174 182
 			// 工单类别
175 183
 			postSelectData(e,id) {
176 184
 				this.flaginfo = String(id)

+ 4 - 6
CallCenterWeb.UI/RMYYAPP/pages/myTask/comDispatch/comDispatchDetail/comDispatchDetail.vue

@@ -213,12 +213,10 @@
213 213
 				this.$http.get("InternalMessages/GetButtons",params).then((res)=>{
214 214
 					if(res.state.toLowerCase() ==="success"){
215 215
 						res.rows[0].Buttons.forEach(v => {
216
-							this.orderButtonData.push({
217
-								annotation: v.value,
218
-								eventName: v.key,
219
-								id: v.id,
220
-								text: v.value
221
-							})
216
+							let btn = this.$mButtonConfig[v.key];
217
+							if (btn != undefined) {
218
+								this.orderButtonData.push(btn);
219
+							}
222 220
 						})
223 221
 					}
224 222
 				})

+ 4 - 3
CallCenterWeb.UI/RMYYAPP/pages/myTask/consultList/consultDetail/appointmentDeal/appointmentDeal.vue

@@ -2,11 +2,11 @@
2 2
 	<view class="wrapper">
3 3
 		<view class="form">
4 4
 			<!-- 基础表单校验 -->
5
-			<uni-forms ref="valiForm" :rules="rules" >
6
-				<uni-forms-item label="是否回访" required name="isReturnVisit">
5
+			<uni-forms ref="valiForm" >
6
+				<uni-forms-item label="是否回访"  name="isReturnVisit">
7 7
 					<uni-data-checkbox v-model="isReturnVisit" :localdata="returnVisit" />
8 8
 				</uni-forms-item>
9
-				<uni-forms-item label="沟通情况" required name="communicate">
9
+				<uni-forms-item label="沟通情况"  name="communicate">
10 10
 					<uni-data-checkbox v-model="communicate" :localdata="communicateList" />
11 11
 				</uni-forms-item>
12 12
 				<uni-forms-item label="处理结果"  name="dealCon">
@@ -26,6 +26,7 @@
26 26
 	export default {
27 27
 		data() {
28 28
 			return {
29
+				disabledButton:false,
29 30
 				workorderid: '',
30 31
 				isReturnVisit: '',
31 32
 				communicate: '',

+ 4 - 6
CallCenterWeb.UI/RMYYAPP/pages/myTask/consultList/consultDetail/consultDetail.vue

@@ -207,12 +207,10 @@
207 207
 				this.$http.get("InternalMessages/GetButtons",params).then((res)=>{
208 208
 					if(res.state.toLowerCase() ==="success"){
209 209
 						res.rows[0].Buttons.forEach(v => {
210
-							this.orderButtonData.push({
211
-								annotation: v.value,
212
-								eventName: v.key,
213
-								id: v.id,
214
-								text: v.value
215
-							})
210
+							let btn = this.$mButtonConfig[v.key];
211
+							if (btn != undefined) {
212
+								this.orderButtonData.push(btn);
213
+							}
216 214
 						})
217 215
 					}
218 216
 				})

+ 7 - 2
CallCenterWeb.UI/RMYYAPP/pages/myTask/vehicleSchedulList/components/vehiccleDetail/vehiccleDetail.vue

@@ -92,7 +92,12 @@
92 92
 		onLoad(optioin) {
93 93
 			
94 94
 			this.workorderid = optioin.wid
95
-			this.fId = optioin.orderId
95
+			if( optioin.orderId ) {
96
+				this.fId = optioin.orderId
97
+			}else if(optioin.sms_id) {
98
+				this.fId = optioin.sms_id
99
+			}
100
+			
96 101
 			if(optioin.segmenter == '0'){	//	申请人列表
97 102
 				this.listFlag = false
98 103
 				this.getDetail(0)
@@ -101,7 +106,7 @@
101 106
 				this.receiviFlag = optioin.receiviFlag
102 107
 				this.listFlag = true
103 108
 				this.orderButtonData = []
104
-			}
109
+			} 
105 110
 		},
106 111
 		methods: {
107 112
 			getDetail(type) {

+ 302 - 0
CallCenterWeb.UI/RMYYAPP/pages/myTask/workOrderDetail/consultList.vue

@@ -0,0 +1,302 @@
1
+<template>
2
+	<view class="wrapper">
3
+
4
+		<uni-search-bar class="uni-search-bar" placeholder="请输入工单编号" bgColor="#fff" @confirm="searchList"
5
+			@cancel="cancelList" />
6
+
7
+		<view class="segmentedControlWrapper">
8
+			<uni-segmented-control :current="segmenter.current" :values="segmenter.items"
9
+				@clickItem="onClickSegmentedControl" styleType="text" activeColor="#007aff" />
10
+		</view>
11
+		<view class="tableWrapper">
12
+			<!-- 基于 uni-list 的页面布局 -->
13
+			<uni-list>
14
+				<!-- to 属性携带参数跳转详情页面-->
15
+				<uni-list-item class="tableList" direction="column" v-for="(item, index) in listData" :key="index"
16
+					:to="'/pages/myTask/consultList/consultDetail/consultDetail?wid='+item.F_WoCode+'&buttons='+ JSON.stringify(item.Buttons)">
17
+					<!-- 通过header插槽定义列表的标题 -->
18
+					<template v-slot:header>
19
+						<view class="uni-title">{{item.F_ComTitle}}</view>
20
+					</template>
21
+					<!-- 通过body插槽定义列表内容显示 -->
22
+					<template v-slot:body>
23
+						<view class="uni-list-box">
24
+							<view class="uni-content">
25
+								<view class="uni-title-sub uni-ellipsis-1">
26
+									<view class="textLeft">
27
+										{{item.F_Content}}
28
+									</view>
29
+								</view>
30
+								<view class="uni-note" v-show="item.F_ProposerDept">工单类别:{{ $mHelper.findParents(orderTypeList,item.F_SonType)}}
31
+								</view>
32
+								<view class="uni-note">上报时间:{{item.F_CreateTime}}</view>
33
+								<!-- <view class="uni-note">上报地点:{{item.F_PlaceOfRepair}}</view> -->
34
+							</view>
35
+							<view class="textState">{{ item.StateName}}</view>
36
+							<view class="textState" style="right: 75px;" v-show="item.F_UrgeCount>0">催办 {{item.F_UrgeCount}}</view>
37
+						</view>
38
+					</template>
39
+				</uni-list-item>
40
+			</uni-list>
41
+			<uni-load-more :status="loadMoreState"></uni-load-more>
42
+		</view>
43
+	</view>
44
+</template>
45
+
46
+<script>
47
+	import pageData from "@/pages/myTask/repairList/addRepair/pageData.js"
48
+	const segmenterData = {
49
+		0: ['待处理', '已处理']
50
+	}
51
+	
52
+	export default {
53
+		data() {
54
+			return {
55
+				that: this,
56
+				urlIndex: 0,
57
+				departList: [],
58
+				listData: [],
59
+				orderTypeList: [],
60
+				paramsData: {},
61
+				loadMoreState: 'more', //more loading  no-more
62
+				segmenter: {
63
+					current: 0,
64
+					items: ["0", "1", "2"],
65
+					type: "",
66
+				},
67
+				isDisplay: {
68
+					displaySegmentedControl: false, // 分段器
69
+				},
70
+			}
71
+		},
72
+		onLoad(optioin) {
73
+			this.urlIndex = optioin.urlIndex
74
+			this.getGongDanType()
75
+			this.init(optioin)
76
+			pageData.getDet((res, data) => {
77
+				this.departList = data
78
+			})
79
+		},
80
+		onUnload() {
81
+			// 移除监听事件
82
+			uni.$off("updateList")
83
+		},
84
+		onPullDownRefresh() {
85
+			this.resetListData()
86
+			this.getList(this.paramsData)
87
+		},
88
+		methods: {
89
+			init(optioin) {
90
+				optioin.page = 1 // 页码
91
+				optioin.pagesize = 10 // 条数
92
+				optioin.state = 0
93
+				this.paramsData = optioin
94
+				this.getList(this.paramsData)
95
+				if (optioin.segmenter == undefined || optioin.segmenter == null || optioin.segmenter == "") {
96
+					this.isDisplay.displaySegmentedControl = false
97
+				} else {
98
+					this.isDisplay.displaySegmentedControl = true
99
+					this.segmenter.type = optioin.segmenter
100
+					this.segmenter.items = segmenterData[optioin.segmenter]
101
+				}
102
+				// 页面
103
+				uni.$on("updateList", (res) => {
104
+					this.listData = []
105
+					this.paramsData.page = 1
106
+					this.paramsData.pagesize = 10
107
+					this.getList(this.paramsData)
108
+				})
109
+			},
110
+			getGongDanType(){
111
+				let dataOrderType = []
112
+				const params = {
113
+					pid:0,
114
+					flag:1
115
+				}
116
+				this.$http.get("GongDanType/GetList",params).then((res)=>{
117
+					if(res.state.toLowerCase() ==="success"){
118
+						this.orderTypeList = res.data
119
+					}
120
+				})
121
+			},
122
+			getList(optioin) {
123
+				this.$mHelper.getOrderId('1000', (id) => {
124
+					const params = {
125
+						page: optioin.page,
126
+						pagesize: optioin.pagesize,
127
+						type:id,
128
+						state: optioin.state == undefined ? "" : optioin.state,
129
+						workordercode: optioin.workordercode == undefined ? "" : optioin.workordercode
130
+					}
131
+					this.$http.get('WorkCommon/GetSubmitList', params).then((response) => {
132
+						if (response.state.toLowerCase() === "success") {
133
+							this.listData = response.rows
134
+							this.loadMoreState = 'no-more'
135
+						}
136
+					}).catch((e) => {
137
+						console.log(e);
138
+					})
139
+				})
140
+			},
141
+			searchList(e) {
142
+				this.resetListData()
143
+				this.paramsData.workordercode = e.value
144
+				this.getList(this.paramsData)
145
+			},
146
+			cancelList(e) {
147
+				this.resetListData()
148
+				this.paramsData.workordercode = ''
149
+				this.getList(this.paramsData)
150
+			},
151
+
152
+			onClickSegmentedControl(e) {
153
+				this.resetListData()
154
+				switch (String(e.currentIndex)) {
155
+					case "0":
156
+						this.paramsData.state = 0
157
+						break
158
+					case "1":
159
+						this.paramsData.state = 1
160
+						break
161
+				}
162
+				this.getList(this.paramsData)
163
+			},
164
+			resetListData() {
165
+				this.listData = []
166
+				this.paramsData.page = 1
167
+				this.paramsData.pagesize = 10
168
+			}
169
+		},
170
+		/**
171
+		 * 上拉加载回调函数
172
+		 */
173
+		onReachBottom() {
174
+			if (this.listData.length >= 10) {
175
+				this.loadMoreState = 'loading'
176
+				this.paramsData.page = this.paramsData.page + 1
177
+				this.getList(this.paramsData)
178
+			} else {
179
+				this.loadMoreState = 'no-more'
180
+			}
181
+
182
+		}
183
+	}
184
+</script>
185
+
186
+<style lang="scss" scoped>
187
+	@import '@/common/uni-ui.scss';
188
+
189
+	.uni-list {
190
+		background-color: #efeff4 !important;
191
+	}
192
+
193
+	.wrapper {
194
+		padding: 5px 0 0 0;
195
+
196
+		.uni-search-bar {
197
+			padding: 8px 0px;
198
+		}
199
+
200
+		.segmentedControlWrapper {
201
+			background-color: #ffffff;
202
+		}
203
+
204
+		.tableWrapper {
205
+			margin: 0px 0 0 0;
206
+
207
+			.tableList {
208
+				background-color: #ffffff;
209
+				margin-bottom: 10px;
210
+				padding-bottom: 10px;
211
+				
212
+				.textLeft{
213
+					width: 300px;
214
+					white-space: nowrap;
215
+					overflow: hidden;
216
+					text-overflow: ellipsis;
217
+				}
218
+			}
219
+		}
220
+	}
221
+
222
+	page {
223
+		display: flex;
224
+		flex-direction: column;
225
+		box-sizing: border-box;
226
+		background-color: #efeff4;
227
+		min-height: 100%;
228
+		height: auto;
229
+	}
230
+
231
+	.uni-list-box {
232
+		position: relative;
233
+
234
+		.textState {
235
+			position: absolute;
236
+			right: 15px;
237
+			bottom: 0px;
238
+			font-size: 12px;
239
+			border: 1px solid #52C41A;
240
+			padding: 2px 5px;
241
+			color: #52C41A;
242
+			background-color: rgba(195, 239, 161, 0.2);
243
+			border-radius: 5px
244
+		}
245
+	}
246
+
247
+	.tips {
248
+		color: #67c23a;
249
+		font-size: 14px;
250
+		line-height: 40px;
251
+		text-align: center;
252
+		background-color: #f0f9eb;
253
+		height: 0;
254
+		opacity: 0;
255
+		transform: translateY(-100%);
256
+		transition: all 0.3s;
257
+	}
258
+
259
+	.tips-ani {
260
+		transform: translateY(0);
261
+		height: 40px;
262
+		opacity: 1;
263
+	}
264
+
265
+	.content {
266
+		width: 100%;
267
+		display: flex;
268
+	}
269
+
270
+	.list-picture {
271
+		width: 100%;
272
+		height: 145px;
273
+	}
274
+
275
+	.thumb-image {
276
+		width: 100%;
277
+		height: 100%;
278
+	}
279
+
280
+	.ellipsis {
281
+		display: flex;
282
+		overflow: hidden;
283
+	}
284
+
285
+	.uni-ellipsis-1 {
286
+		overflow: hidden;
287
+		white-space: nowrap;
288
+		text-overflow: ellipsis;
289
+	}
290
+
291
+	.uni-ellipsis-2 {
292
+		overflow: hidden;
293
+		text-overflow: ellipsis;
294
+		display: -webkit-box;
295
+		-webkit-line-clamp: 2;
296
+		-webkit-box-orient: vertical;
297
+	}
298
+
299
+	.uni-content {
300
+		display: flex;
301
+	}
302
+</style>

+ 12 - 9
CallCenterWeb.UI/RMYYAPP/pages/myTask/workOrderDetail/workOrderDetail.vue

@@ -300,8 +300,11 @@
300 300
 			pageData.getApplicant('', (res) => {
301 301
 				this.userCodeList = res
302 302
 			})
303
-			if (optioin.segmenter == undefined || optioin.segmenter == null || optioin.segmenter == "") {
304
-				this.isDisplay.displaySegmentedControl = false
303
+			 if(this.sms_id) {
304
+				this.isDisplay.displaySegmentedControl = true
305
+				this.segmenter.type = 0
306
+				this.segmenter.items = ["处理结果", "协作工单","工单流程",  "维修记录", "评价"]
307
+				this.getDetail(2)
305 308
 			} else {
306 309
 				this.isDisplay.displaySegmentedControl = true
307 310
 				this.segmenter.type = optioin.segmenter
@@ -319,12 +322,10 @@
319 322
 				this.$http.get("InternalMessages/GetButtons",params).then((res)=>{
320 323
 					if(res.state.toLowerCase() ==="success"){
321 324
 						res.rows[0].Buttons.forEach(v => {
322
-							this.orderButtonData.push({
323
-								annotation: v.value,
324
-								eventName: v.key,
325
-								id: v.id,
326
-								text: v.value
327
-							})
325
+							let btn = this.$mButtonConfig[v.key];
326
+							if (btn != undefined) {
327
+								this.orderButtonData.push(btn);
328
+							}
328 329
 						})
329 330
 					}
330 331
 				})
@@ -365,7 +366,9 @@
365 366
 							this.orderProcessDate = response.data
366 367
 						} else if (type == 4) {
367 368
 							this.maintenanceRecords = response.data
368
-							this.equipmentCon = response.data[0].Equips
369
+							if(response.data,length> 0 && response.data[0].Equips) {
370
+								this.equipmentCon = response.data[0].Equips
371
+							}
369 372
 						} else if (type == 5) {
370 373
 							this.evaluateDate = response.data
371 374
 						} else if (type == 6) {

+ 10 - 10
CallCenterWeb.UI/RMYYAPP/uni_modules/lsj-upload/components/lsj-upload/LsjFile.js

@@ -105,7 +105,7 @@ export class LsjFile {
105 105
 		}
106 106
 		// 最后一级
107 107
 		dataObj[patten[patten.length - 1]] = dataValue;
108
-		this.debug&&console.log('参数更新后',JSON.stringify(this.option));
108
+		// this.debug&&console.log('参数更新后',JSON.stringify(this.option));
109 109
 	}
110 110
 	
111 111
 	/**
@@ -121,7 +121,7 @@ export class LsjFile {
121 121
 			this.setValue(this.option,name,value);
122 122
 		}
123 123
 		
124
-		this.debug&&console.log(JSON.stringify(this.option));
124
+		// this.debug&&console.log(JSON.stringify(this.option));
125 125
 		
126 126
 		// #ifdef APP-PLUS
127 127
 			this.dom.evalJS(`vm.setData('${JSON.stringify(this.option)}')`);
@@ -159,7 +159,7 @@ export class LsjFile {
159 159
 	addFile(file) {
160 160
 		
161 161
 		let name = file.name;
162
-		this.debug&&console.log('文件名称',name,'大小',file.size);
162
+		// this.debug&&console.log('文件名称',name,'大小',file.size);
163 163
 		
164 164
 		if (file) {
165 165
 			// 限制文件格式
@@ -291,7 +291,7 @@ export class LsjFile {
291 291
 	}
292 292
 	
293 293
 	_changeFilesItem(item,end=false) {
294
-		this.debug&&console.log('onprogress',JSON.stringify(item));
294
+		// this.debug&&console.log('onprogress',JSON.stringify(item));
295 295
 		this.onprogress(item,end);
296 296
 		this.files.set(item.name,item);
297 297
 	}
@@ -300,7 +300,7 @@ export class LsjFile {
300 300
 		item.type = 'loading';
301 301
 		delete item.responseText;
302 302
 		return new Promise((resolve,reject)=>{
303
-			this.debug&&console.log('option',JSON.stringify(this.option));
303
+			// this.debug&&console.log('option',JSON.stringify(this.option));
304 304
 			let {url,name,method='POST',header,formData} = this.option;
305 305
 			let form = new FormData();
306 306
 			for (let keys in formData) {
@@ -337,7 +337,7 @@ export class LsjFile {
337 337
 			xmlRequest.onreadystatechange = ev => {
338 338
 				if (xmlRequest.readyState == 4) {
339 339
 					if (xmlRequest.status == 200) {
340
-						this.debug&&console.log('上传完成:' + xmlRequest.responseText)
340
+						// this.debug&&console.log('上传完成:' + xmlRequest.responseText)
341 341
 						item['responseText'] = xmlRequest.responseText;
342 342
 						item.type = 'success';
343 343
 						this._changeFilesItem(item,true);
@@ -345,7 +345,7 @@ export class LsjFile {
345 345
 					} else if (xmlRequest.status == 0) {
346 346
 						console.error('status = 0 :请检查请求头Content-Type与服务端是否匹配,服务端已正确开启跨域,并且nginx未拦截阻止请求')
347 347
 					}
348
-					console.error('--ERROR--:status = ' + xmlRequest.status)
348
+					// console.error('--ERROR--:status = ' + xmlRequest.status)
349 349
 					item.type = 'fail';
350 350
 					this._changeFilesItem(item,true);
351 351
 					return resolve(false);
@@ -359,17 +359,17 @@ export class LsjFile {
359 359
 		item.type = 'loading';
360 360
 		delete item.responseText;
361 361
 		return new Promise((resolve,reject)=>{
362
-			this.debug&&console.log('option',JSON.stringify(this.option));
362
+			// this.debug&&console.log('option',JSON.stringify(this.option));
363 363
 			let form = {filePath: item.file.path,...this.option };
364 364
 			form['fail'] = ({ errMsg = '' }) => {
365
-				console.error('--ERROR--:' + errMsg)
365
+				// console.error('--ERROR--:' + errMsg)
366 366
 				item.type = 'fail';
367 367
 				this._changeFilesItem(item,true);
368 368
 				return resolve(false);
369 369
 			}
370 370
 			form['success'] = res => {
371 371
 				if (res.statusCode == 200) {
372
-					this.debug&&console.log('上传完成,微信端返回不一定是字符串,根据接口返回格式判断是否需要JSON.parse:' + res.data)
372
+					// this.debug&&console.log('上传完成,微信端返回不一定是字符串,根据接口返回格式判断是否需要JSON.parse:' + res.data)
373 373
 					item['responseText'] = res.data;
374 374
 					item.type = 'success';
375 375
 					this._changeFilesItem(item,true);