zhaomin il y a 3 ans
Parent
commit
880ed1fbbd
34 fichiers modifiés avec 1055 ajouts et 53 suppressions
  1. 1 1
      anyangWebAPP/config/buttons.config.js
  2. 1 1
      anyangWebAPP/config/constData.config.js
  3. 1 0
      anyangWebAPP/config/index.config.js
  4. 15 3
      anyangWebAPP/pages/components/commonSelect/departSelect/departSelect.vue
  5. 1 1
      anyangWebAPP/pages/login/login.vue
  6. 27 6
      anyangWebAPP/pages/myTask/addWorkOrder/addWorkOrder.vue
  7. 14 0
      anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/buttons/buttons.vue
  8. 1 1
      anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/buttons/components/button_18/button_18.vue
  9. 12 1
      anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/buttons/components/button_5/button_5.vue
  10. 4 7
      anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/viewWorkOrder/viewWorkOrder.vue
  11. 4 0
      anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/workOrderDetail.vue
  12. BIN
      anyangWebAPP/static/home2.jpg
  13. 8 0
      anyangWebAPP/uni_modules/xp-picker_2.2.2/changelog.md
  14. 47 0
      anyangWebAPP/uni_modules/xp-picker_2.2.2/components/xp-picker/assert.js
  15. 123 0
      anyangWebAPP/uni_modules/xp-picker_2.2.2/components/xp-picker/util.js
  16. 411 0
      anyangWebAPP/uni_modules/xp-picker_2.2.2/components/xp-picker/xp-picker.vue
  17. 82 0
      anyangWebAPP/uni_modules/xp-picker_2.2.2/package.json
  18. 129 0
      anyangWebAPP/uni_modules/xp-picker_2.2.2/readme.md
  19. 1 1
      anyangWebAPP/unpackage/cache/apk/apkurl
  20. 1 1
      anyangWebAPP/unpackage/cache/apk/cmManifestCache.json
  21. 1 1
      anyangWebAPP/unpackage/cache/certdata
  22. 1 1
      anyangWebAPP/unpackage/dist/build/app-plus/__uniappopenlocation.js
  23. 1 1
      anyangWebAPP/unpackage/dist/build/app-plus/__uniapppicker.js
  24. 1 1
      anyangWebAPP/unpackage/dist/build/app-plus/__uniappscan.js
  25. 2 2
      anyangWebAPP/unpackage/dist/build/app-plus/app-config-service.js
  26. 11 16
      anyangWebAPP/unpackage/dist/build/app-plus/app-service.js
  27. 1 1
      anyangWebAPP/unpackage/dist/build/app-plus/app-view.js
  28. 1 1
      anyangWebAPP/unpackage/dist/build/app-plus/manifest.json
  29. 1 1
      anyangWebAPP/unpackage/dist/build/app-plus/view.css
  30. 2 2
      anyangWebAPP/unpackage/dist/build/app-plus/view.umd.min.js
  31. 12 2
      anyangWebAPP/utils/helper.js
  32. 135 1
      anyangWebAPP/utils/listUrl.js
  33. BIN
      证书/9f9362f165873dd82d770c5e2ee9c96a.keystore
  34. 3 0
      证书/账号密码.txt

+ 1 - 1
anyangWebAPP/config/buttons.config.js

1
-export default [1,2,3,4,5,10,11,12,13,14,15,17,18,21,22,23,24,25,26,27,28,29,31,32,35,38,39,47,48,49,51,52,53,57]
1
+export default [1,2,3,4,5,10,11,12,13,14,15,17,18,21,22,23,24,25,26,27,28,29,31,32,35,38,39,47,48,49,51,52,53,54,55,57]

+ 1 - 1
anyangWebAPP/config/constData.config.js

7
 	//首页banner图数据
7
 	//首页banner图数据
8
 	bannnerData: [{
8
 	bannnerData: [{
9
 		id: "2",
9
 		id: "2",
10
-		imgPath: "../../static/banner-02.png"
10
+		imgPath: "../../static/home2.jpg"
11
 	}],
11
 	}],
12
 	//任务列表数据
12
 	//任务列表数据
13
 	roleListData: {
13
 	roleListData: {

+ 1 - 0
anyangWebAPP/config/index.config.js

3
     development: {
3
     development: {
4
         assetsPath: '/static', // 静态资源路径
4
         assetsPath: '/static', // 静态资源路径
5
         baseUrl: 'http://192.168.8.9:1042/', // 后台接口请求地址
5
         baseUrl: 'http://192.168.8.9:1042/', // 后台接口请求地址
6
+		// baseUrl: 'http://222.143.106.43:9998/', // 后台接口请求地址
6
         // baseUrl: 'http://docking.zwfw.anyang.gov.cn:9998/', // 后台接口请求地址
7
         // baseUrl: 'http://docking.zwfw.anyang.gov.cn:9998/', // 后台接口请求地址
7
         hostUrl: '', // H5地址(前端运行地址)
8
         hostUrl: '', // H5地址(前端运行地址)
8
         weixinAppId: '' // 微信公众号appid
9
         weixinAppId: '' // 微信公众号appid

+ 15 - 3
anyangWebAPP/pages/components/commonSelect/departSelect/departSelect.vue

12
 				candidates:[]
12
 				candidates:[]
13
 			}
13
 			}
14
 		},
14
 		},
15
+		props: {
16
+			iscbdw: {
17
+				type: Number,
18
+				default: 0
19
+			},
20
+		},
15
 		created() {
21
 		created() {
16
-			this.getDpartment()
22
+			this.getDpartment(this.iscbdw)
17
 		},
23
 		},
18
 		methods: {
24
 		methods: {
19
-			getDpartment() {
20
-				this.$http.get("Department/GetDeptList",{token: uni.getStorageSync("token")}).then((res)=>{
25
+			getDpartment(iscbdw) {
26
+				let params = {
27
+					token: uni.getStorageSync("token")
28
+				}
29
+				if(iscbdw) {
30
+					params.iscbdw = iscbdw
31
+				}
32
+				this.$http.get("Department/GetDeptList",params).then((res)=>{
21
 					if(res.state.toLowerCase()==="success"){
33
 					if(res.state.toLowerCase()==="success"){
22
 						this.deptData = res.data
34
 						this.deptData = res.data
23
 						res.data.forEach(v =>{
35
 						res.data.forEach(v =>{

+ 1 - 1
anyangWebAPP/pages/login/login.vue

161
 							uni.setStorageSync('userCode', data.user.F_UserCode)
161
 							uni.setStorageSync('userCode', data.user.F_UserCode)
162
 							const code = uni.getStorageSync("roleCode");
162
 							const code = uni.getStorageSync("roleCode");
163
 							if (code === "ZXLD"||code === "MTDD"||code === "WLDW"||code === "EJWLDW") {
163
 							if (code === "ZXLD"||code === "MTDD"||code === "WLDW"||code === "EJWLDW") {
164
-							// if (code === "ZXLD"||code === "MTDD"||code === "WLDW"||code === "EJWLDW") {
164
+							// if (code === "ZXLD"||code === "MTDD"||code === "WLDW"||code === "EJWLDW" || code === 'GLY') {
165
 								uni.switchTab({
165
 								uni.switchTab({
166
 									url: '/pages/myTask/myTask'
166
 									url: '/pages/myTask/myTask'
167
 								});
167
 								});

+ 27 - 6
anyangWebAPP/pages/myTask/addWorkOrder/addWorkOrder.vue

11
 				</uni-forms-item>
11
 				</uni-forms-item>
12
 				<uni-forms-item label="处理方式" name="processingMethod">
12
 				<uni-forms-item label="处理方式" name="processingMethod">
13
 					<uni-data-checkbox v-model="formData.processingMethod" :localdata="processingMethod" />
13
 					<uni-data-checkbox v-model="formData.processingMethod" :localdata="processingMethod" />
14
+					<uni-data-checkbox v-model="formData.threeWayCall" multiple :localdata="threeWayCalls" />
14
 				</uni-forms-item>
15
 				</uni-forms-item>
15
 				<uni-forms-item label="办理内容" name="result" v-show="formData.processingMethod == 1">
16
 				<uni-forms-item label="办理内容" name="result" v-show="formData.processingMethod == 1">
16
 					<uni-easyinput type="textarea" v-model="formData.result" placeholder="请输入办理内容" />
17
 					<uni-easyinput type="textarea" v-model="formData.result" placeholder="请输入办理内容" />
24
 				<uni-forms-item label="来源" name="source" required>
25
 				<uni-forms-item label="来源" name="source" required>
25
 					<dic-value-select @post-select-data="postDicSourceData" :type="1" :valueInfo="formData.source"></dic-value-select>
26
 					<dic-value-select @post-select-data="postDicSourceData" :type="1" :valueInfo="formData.source"></dic-value-select>
26
 				</uni-forms-item>
27
 				</uni-forms-item>
28
+				<uni-forms-item label="回访方式" name="visitType">
29
+					<uni-data-checkbox v-model="formData.visitType" :localdata="visitTypeList" />
30
+				</uni-forms-item>
27
 				<uni-forms-item label="来电号码" name="callerNumber" required>
31
 				<uni-forms-item label="来电号码" name="callerNumber" required>
28
 					<uni-easyinput v-model="formData.callerNumber" placeholder="请输入来电号码" />
32
 					<uni-easyinput v-model="formData.callerNumber" placeholder="请输入来电号码" />
29
 				</uni-forms-item>
33
 				</uni-forms-item>
34
 					<dic-value-select @post-select-data="postDicTypeData" :type="2" :valueInfo="formData.workOrderType"></dic-value-select>
38
 					<dic-value-select @post-select-data="postDicTypeData" :type="2" :valueInfo="formData.workOrderType"></dic-value-select>
35
 				</uni-forms-item>
39
 				</uni-forms-item>
36
 				<uni-forms-item label="反映类别" name="keys" required>
40
 				<uni-forms-item label="反映类别" name="keys" required>
37
-					<uni-data-picker :ellipsis="true" placeholder="请选择部门" ref="onpicker" :localdata="dataTree" @nodeclick="keysNodeclick" @popupclosed="keysclosed" style="width: 96%;margin: 0 auto;height: 50px;">
41
+					<uni-data-picker :ellipsis="true" placeholder="请选择" ref="onpicker" :localdata="dataTree" @nodeclick="keysNodeclick" @popupclosed="keysclosed" style="width: 96%;margin: 0 auto;height: 50px;">
38
 					</uni-data-picker>
42
 					</uni-data-picker>
39
 				</uni-forms-item>
43
 				</uni-forms-item>
40
 				<uni-forms-item label="保密程度" name="numberSecurityLevel">
44
 				<uni-forms-item label="保密程度" name="numberSecurityLevel">
59
 					</view>
63
 					</view>
60
 				</uni-forms-item>
64
 				</uni-forms-item>
61
 			</uni-forms>
65
 			</uni-forms>
62
-
63
 			<button type="primary" @click="formSubmit('valiForm')" class="btn">提交</button>
66
 			<button type="primary" @click="formSubmit('valiForm')" class="btn">提交</button>
64
 		</view>
67
 		</view>
65
 	</view>
68
 	</view>
86
 				dataTree:[],
89
 				dataTree:[],
87
 				clickImgState: 0,
90
 				clickImgState: 0,
88
 				formData: {
91
 				formData: {
92
+					visitType: '', // 回访方式
93
+					threeWayCall: [], // 三方通话
89
 					workOrderTitle: "", // 标题
94
 					workOrderTitle: "", // 标题
90
 					callContent: "", // 来电内容
95
 					callContent: "", // 来电内容
91
 					workOrderContent: "", // 工单内容
96
 					workOrderContent: "", // 工单内容
92
-					processingMethod: "", // 处理方式
97
+					processingMethod: 0, // 处理方式
93
 					result: "", // 办理内容
98
 					result: "", // 办理内容
94
 					name: "", // 姓名
99
 					name: "", // 姓名
95
 					gender: "", // 性别
100
 					gender: "", // 性别
99
 					workOrderType: 0, // 工单类型
104
 					workOrderType: 0, // 工单类型
100
 					responseCategory: "", // 反映类别
105
 					responseCategory: "", // 反映类别
101
 					responseCategoryId: "", // 反映类别id
106
 					responseCategoryId: "", // 反映类别id
102
-					numberSecurityLevel: "", // 来电号码密级
107
+					numberSecurityLevel: 1, // 来电号码密级
103
 					emergencyLevel: 1,
108
 					emergencyLevel: 1,
104
 					sourcearea: 0, // 事发区域
109
 					sourcearea: 0, // 事发区域
105
 					township: 0, // 乡镇
110
 					township: 0, // 乡镇
111
 				},
116
 				},
112
 				townshipPid: 0,
117
 				townshipPid: 0,
113
 				villagePid: 0,
118
 				villagePid: 0,
119
+				visitTypeList: [{
120
+					text: '正常回访',
121
+					value: '0'
122
+				},{
123
+					text: '无需回访',
124
+					value: '1'
125
+				}],
126
+				threeWayCalls:[{
127
+					text: '三方通话',
128
+					value: 1
129
+				}],
114
 				processingMethod: [{
130
 				processingMethod: [{
115
 					text: '当即办理',
131
 					text: '当即办理',
116
 					value: 1
132
 					value: 1
247
 			},
263
 			},
248
 			// 工单提交
264
 			// 工单提交
249
 			formSubmit(ref) {
265
 			formSubmit(ref) {
266
+				let business = 0
267
+				if(this.formData.threeWayCall.length > 0){
268
+					business = this.formData.threeWayCall[0]
269
+				}
250
 				if(this.clickImgState == 1) {
270
 				if(this.clickImgState == 1) {
251
 					this.formData.imgid = this.$mHelper.getImgString(this.imgList)
271
 					this.formData.imgid = this.$mHelper.getImgString(this.imgList)
252
 				}else{
272
 				}else{
269
 						village: this.formData.village, // 村
289
 						village: this.formData.village, // 村
270
 						sourceaddress: this.formData.sourceaddress, // 详细地址
290
 						sourceaddress: this.formData.sourceaddress, // 详细地址
271
 						source: this.formData.source, // 来源
291
 						source: this.formData.source, // 来源
272
-						business: "0",
292
+						business: business,
273
 						result: this.formData.result, // 办理内容
293
 						result: this.formData.result, // 办理内容
274
 						type: this.formData.workOrderType, // 类型
294
 						type: this.formData.workOrderType, // 类型
275
 						isprotect: this.formData.numberSecurityLevel, //=(0普通1保密)
295
 						isprotect: this.formData.numberSecurityLevel, //=(0普通1保密)
276
 						isresult: this.formData.processingMethod, // 办理方式
296
 						isresult: this.formData.processingMethod, // 办理方式
277
-						issubmit: 0, //=(0保存1保存并提交)
297
+						issubmit: 1, //=(0保存1保存并提交)
278
 						level: this.formData.emergencyLevel, //紧急程度
298
 						level: this.formData.emergencyLevel, //紧急程度
279
 						keys: this.formData.responseCategoryId, // 反映类别
299
 						keys: this.formData.responseCategoryId, // 反映类别
280
 						maindeptids: this.formData.departId, //部门
300
 						maindeptids: this.formData.departId, //部门
301
+						visittype: this.formData.visitType,
281
 						token: uni.getStorageSync("token"),
302
 						token: uni.getStorageSync("token"),
282
 					}
303
 					}
283
 
304
 

+ 14 - 0
anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/buttons/buttons.vue

155
 					this.cbreason = ''
155
 					this.cbreason = ''
156
 					this.auditPlaceholder = '请输入审核通过并转办原因'
156
 					this.auditPlaceholder = '请输入审核通过并转办原因'
157
 					this.$refs.inputDialog.open()
157
 					this.$refs.inputDialog.open()
158
+				} else if (key == 54) { // 54不通过原因
159
+					this.cbreason = ''
160
+					this.auditPlaceholder = '请输入审核通过原因'
161
+					this.$refs.inputDialog.open()
162
+				} else if (key == 55) { // 55审核通过转办
163
+					this.cbreason = ''
164
+					this.auditPlaceholder = '请输入审核不通过原因'
165
+					this.$refs.inputDialog.open()
158
 				} else {
166
 				} else {
159
 					uni.navigateTo({
167
 					uni.navigateTo({
160
 						url: "/pages/myTask/workOrderList/workOrderDetail/buttons/components/button_" + key +"/button_"+key+"?wid=" + this.wid,
168
 						url: "/pages/myTask/workOrderList/workOrderDetail/buttons/components/button_" + key +"/button_"+key+"?wid=" + this.wid,
232
 				}else if(this.clickKey === 35) { // 拒绝35
240
 				}else if(this.clickKey === 35) { // 拒绝35
233
 					const addParams = {reason: this.cbreason,workorderid: this.wid}
241
 					const addParams = {reason: this.cbreason,workorderid: this.wid}
234
 					this.workOrderContent("WorkOrder/RejectWorkOrder",addParams)
242
 					this.workOrderContent("WorkOrder/RejectWorkOrder",addParams)
243
+				}else if(this.clickKey === 54) { // 多媒体审核通过54
244
+					const addParams = {cbreason: this.cbreason,workorderid: this.wid,nexttype:0}
245
+					this.workOrderContent("WorkOrder/AuditDispatch",addParams)
246
+				}else if(this.clickKey === 55) { // 多媒体审核不通过55
247
+					const addParams = {cbreason: this.cbreason,workorderid: this.wid,nexttype:1}
248
+					this.workOrderContent("WorkOrder/AuditDispatch",addParams)
235
 				}
249
 				}
236
 				
250
 				
237
 			},
251
 			},

+ 1 - 1
anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/buttons/components/button_18/button_18.vue

20
 					<uni-data-select v-model="valiFormData.isms" :localdata="ismsData"/>
20
 					<uni-data-select v-model="valiFormData.isms" :localdata="ismsData"/>
21
 				</uni-forms-item>
21
 				</uni-forms-item>
22
 				<uni-forms-item label="承办单位" required name="maindeptid">
22
 				<uni-forms-item label="承办单位" required name="maindeptid">
23
-					<depart-select @post-select-data = "postSelectData"></depart-select>
23
+					<depart-select @post-select-data = "postSelectData" :iscbdw="2"></depart-select>
24
 				</uni-forms-item>
24
 				</uni-forms-item>
25
 				
25
 				
26
 			</uni-forms>
26
 			</uni-forms>

+ 12 - 1
anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/buttons/components/button_5/button_5.vue

13
 				<uni-forms-item label="办理时限" required name="limittime" v-show="valiFormData.leave===1">
13
 				<uni-forms-item label="办理时限" required name="limittime" v-show="valiFormData.leave===1">
14
 					<uni-data-select v-model="valiFormData.limittime" :localdata="limittimeData" @change="changeLimittime" />
14
 					<uni-data-select v-model="valiFormData.limittime" :localdata="limittimeData" @change="changeLimittime" />
15
 				</uni-forms-item>
15
 				</uni-forms-item>
16
+				<uni-forms-item label="时间" required name="time">
17
+					<xp-picker v-model="valiFormData.time" mode="his" style="border: 1px solid #DCDCDC; border-radius:4px;font-size: 14px;"/>
18
+				</uni-forms-item>
16
 				<uni-forms-item label="紧急办理时限" required name="limittimes" v-show="valiFormData.leave===2">
19
 				<uni-forms-item label="紧急办理时限" required name="limittimes" v-show="valiFormData.leave===2">
17
 					<uni-datetime-picker v-model="valiFormData.limittimes"/>
20
 					<uni-datetime-picker v-model="valiFormData.limittimes"/>
18
 				</uni-forms-item>
21
 				</uni-forms-item>
20
 					<uni-data-select v-model="valiFormData.isms" :localdata="ismsData"/>
23
 					<uni-data-select v-model="valiFormData.isms" :localdata="ismsData"/>
21
 				</uni-forms-item>
24
 				</uni-forms-item>
22
 				<uni-forms-item label="承办单位" required name="maindeptid">
25
 				<uni-forms-item label="承办单位" required name="maindeptid">
23
-					<depart-select @post-select-data = "postSelectData"></depart-select>
26
+					<depart-select @post-select-data = "postSelectData"  :iscbdw="2"></depart-select>
24
 				</uni-forms-item>
27
 				</uni-forms-item>
25
 				
28
 				
26
 			</uni-forms>
29
 			</uni-forms>
41
 			return {
44
 			return {
42
 				// 校验表单数据
45
 				// 校验表单数据
43
 				valiFormData: {
46
 				valiFormData: {
47
+					time: this.$mHelper.nowTime(),
44
 					workorderid: '',
48
 					workorderid: '',
45
 					maindeptid: '', //承办单位
49
 					maindeptid: '', //承办单位
46
 					leave:'',	//紧急程度
50
 					leave:'',	//紧急程度
103
 			}
107
 			}
104
 		},
108
 		},
105
 		onLoad(option) {
109
 		onLoad(option) {
110
+			console.log(this.$mHelper.nowTime())
111
+			// this.valiFormData.time = 
106
 			this.valiFormData.workorderid = option.wid
112
 			this.valiFormData.workorderid = option.wid
107
 			this.assignState = option.assignState
113
 			this.assignState = option.assignState
108
 			// 获取详情
114
 			// 获取详情
150
 						this.$mHelper.toast("请选择办理时限");
156
 						this.$mHelper.toast("请选择办理时限");
151
 						return
157
 						return
152
 					}
158
 					}
159
+					if(!this.valiFormData.time) {
160
+						this.$mHelper.toast("请选择时间");
161
+						return
162
+					}
153
 					this.valiFormData.assignedopinion ="请认真调查处理并答复来电人,在" + this.valiFormData.limittime +
163
 					this.valiFormData.assignedopinion ="请认真调查处理并答复来电人,在" + this.valiFormData.limittime +
154
 					"个工作日内通过网络反馈市市长热线办公室。要求注明主办人、主管领导姓名和联系电话,同时提供有关处理依据。"
164
 					"个工作日内通过网络反馈市市长热线办公室。要求注明主办人、主管领导姓名和联系电话,同时提供有关处理依据。"
155
 				} else if(this.valiFormData.leave ===2 ){
165
 				} else if(this.valiFormData.leave ===2 ){
170
 				  limittimes: this.valiFormData.limittimes, // 紧急办理时限
180
 				  limittimes: this.valiFormData.limittimes, // 紧急办理时限
171
 				  assignedopinion: this.valiFormData.assignedopinion, // 交办意见
181
 				  assignedopinion: this.valiFormData.assignedopinion, // 交办意见
172
 					isms:this.valiFormData.isms, // 是否短信提醒
182
 					isms:this.valiFormData.isms, // 是否短信提醒
183
+					times: this.valiFormData.time,
173
 				  state: this.valiFormData.state, // 0保存,1保存并提交
184
 				  state: this.valiFormData.state, // 0保存,1保存并提交
174
 				  content: this.valiFormData.content, // 工单内容
185
 				  content: this.valiFormData.content, // 工单内容
175
 				  token: uni.getStorageSync("token"),
186
 				  token: uni.getStorageSync("token"),

+ 4 - 7
anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/viewWorkOrder/viewWorkOrder.vue

669
 			},
669
 			},
670
 			acceptPersonFilters(value, data) {
670
 			acceptPersonFilters(value, data) {
671
 				let str;
671
 				let str;
672
-				switch (data.F_InfoSource) {
673
-					case 1:
674
-						str = data.F_CreateUser;
675
-						break;
676
-					default:
677
-						str = data.F_CusName;
678
-						break;
672
+				if(data.F_InfoSource === 1 || data.F_InfoSource === 3 || data.F_InfoSource === 6) {
673
+					str = data.F_CreateUser;
674
+				}else{
675
+					str = data.SourceName;
679
 				}
676
 				}
680
 				return str;
677
 				return str;
681
 			},
678
 			},

+ 4 - 0
anyangWebAPP/pages/myTask/workOrderList/workOrderDetail/workOrderDetail.vue

36
 				<text class="contentTitle">来源:</text>
36
 				<text class="contentTitle">来源:</text>
37
 				<text class="contentText" >{{ detailContentData.SourceName }}</text>
37
 				<text class="contentText" >{{ detailContentData.SourceName }}</text>
38
 			</view>
38
 			</view>
39
+			<view class="contentTable">
40
+				<text class="contentTitle">事发地址:</text>
41
+				<text class="contentText" v-if="detailContentData.AreaName">{{ detailContentData.AreaName + ' ' +  detailContentData.F_SourceAddress}}</text>
42
+			</view>
39
 		</view>
43
 		</view>
40
 		<yiLine>
44
 		<yiLine>
41
 			<view></view>
45
 			<view></view>

BIN
anyangWebAPP/static/home2.jpg


+ 8 - 0
anyangWebAPP/uni_modules/xp-picker_2.2.2/changelog.md

1
+## 2.2.2(2022-04-27)
2
+更新placeholder
3
+## 2.2.1(2022-03-31)
4
+修复 app-vue3 undefined问题
5
+## 2.2.0(2022-03-31)
6
+新增v-model支持;
7
+新增uni-forms嵌套使用支持
8
+变更为uni_modules规范

+ 47 - 0
anyangWebAPP/uni_modules/xp-picker_2.2.2/components/xp-picker/assert.js

1
+import {
2
+	getLocalTime
3
+} from "./util.js"
4
+const isDev = process.env.NODE_ENV !== 'production'
5
+export default function(args) {
6
+	if (isDev) {
7
+		const {
8
+			mode,
9
+			yearRange
10
+		} = args
11
+		let val
12
+		// #ifdef VUE2
13
+		val = args.value
14
+		// #endif
15
+		// #ifdef VUE3
16
+		val = args.modelValue
17
+		// #endif
18
+		if ("ymdhis".indexOf(mode) === -1)
19
+			throw new Error("illegal 'mode'")
20
+
21
+		if (getLocalTime(mode) == undefined)
22
+			throw new Error("'mode' is not found")
23
+
24
+		if (val) {
25
+			if (val.length !== getLocalTime(mode).length) {
26
+				// #ifdef VUE2
27
+				throw new Error("'value' cannot be formatted as 'mode'")
28
+				// #endif
29
+				// #ifdef VUE3
30
+				throw new Error("'modelValue' cannot be formatted as 'mode'")
31
+				// #endif
32
+			}
33
+			const arr = val.split(/-|:|\s/)
34
+			if (arr.length != mode.length) {
35
+				// #ifdef VUE2
36
+				throw new Error("'value' cannot be formatted as 'mode'")
37
+				// #endif
38
+				// #ifdef VUE3
39
+				throw new Error("'modelValue' cannot be formatted as 'mode'")
40
+				// #endif
41
+			}
42
+
43
+		}
44
+		if (yearRange.length !== 2)
45
+			throw new Error("the length of array 'year-rang' must be 2")
46
+	}
47
+}

+ 123 - 0
anyangWebAPP/uni_modules/xp-picker_2.2.2/components/xp-picker/util.js

1
+const isLeapYear = y => y % 4 == 0 && y % 100 != 0 || y % 100 == 0 && y % 400 == 0
2
+const variables = {
3
+	y: {
4
+		text: "年",
5
+		range: [null, null]
6
+	},
7
+	m: {
8
+		text: "月",
9
+		range: [1, 12]
10
+	},
11
+	d: {
12
+		text: "日",
13
+		range: [1, 31]
14
+	},
15
+	h: {
16
+		text: "时",
17
+		range: [0, 23]
18
+	},
19
+	i: {
20
+		text: "分",
21
+		range: [0, 59]
22
+	},
23
+	s: {
24
+		text: "秒",
25
+		range: [0, 59]
26
+	}
27
+}
28
+export function templateFactory(args) {
29
+	const {
30
+		mode,
31
+		yearRange
32
+	} = args
33
+	let val
34
+	// #ifdef VUE2
35
+	val = args.value
36
+	// #endif
37
+	// #ifdef VUE3
38
+	val = args.modelValue
39
+	// #endif
40
+	const [start, end] = yearRange
41
+	let ret = {}
42
+	for (const key of mode) {
43
+		ret[key] = variables[key]
44
+	}
45
+	if (mode.indexOf("y") !== -1) ret['y'].range = [start || 2016, end || new Date().getFullYear()]
46
+	if (mode.indexOf("d") !== -1) {
47
+		const date = getDate(val || getLocalTime(mode))
48
+		ret['d'].range = [1, date]
49
+	}
50
+	return ret
51
+}
52
+export function getDate(dt) {
53
+	const s = dt.substring(0, dt.lastIndexOf("-"))
54
+	let year, month
55
+	const d = new Date()
56
+	switch (s.length) {
57
+		case 0:
58
+			year = d.getFullYear()
59
+			month = d.getMonth() + 1
60
+			break;
61
+		case 2:
62
+			year = d.getFullYear()
63
+			month = parseInt(s)
64
+			break;
65
+		default:
66
+			const [y, m] = s.split("-")
67
+			year = parseInt(y)
68
+			month = parseInt(m)
69
+			break;
70
+	}
71
+	const days = [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
72
+	return days[month - 1]
73
+}
74
+export function getLocalTime(fmt) {
75
+	if (!fmt) return null
76
+	const da = new Date()
77
+	const y = fmtNumber(da.getFullYear()),
78
+		m = fmtNumber(da.getMonth() + 1),
79
+		d = fmtNumber(da.getDate()),
80
+		h = fmtNumber(da.getHours()),
81
+		i = fmtNumber(da.getMinutes()),
82
+		s = fmtNumber(da.getSeconds())
83
+	const types = {
84
+		'y': `${y}`,
85
+		'm': `${m}`,
86
+		'd': `${d}`,
87
+		'h': `${h}`,
88
+		'i': `${i}`,
89
+		's': `${s}`,
90
+		'ym': `${y}-${m}`,
91
+		'md': `${m}-${d}`,
92
+		'hi': `${h}:${i}`,
93
+		'is': `${i}:${s}`,
94
+		'ymd': `${y}-${m}-${d}`,
95
+		'his': `${h}:${i}:${s}`,
96
+		'mdh': `${m}-${d} ${h}`,
97
+		'ymdh': `${y}-${m}-${d} ${h}`,
98
+		'mdhi': `${m}-${d} ${h}:${i}`,
99
+		'mdhis': `${m}-${d} ${h}:${m}:${s}`,
100
+		'yd': `${y}-${d}`,
101
+		'ymdhi': `${y}-${m}-${d} ${h}:${i}`,
102
+		'ymdhis': `${y}-${m}-${d} ${h}:${i}:${s}`,
103
+	}
104
+	return types[fmt]
105
+}
106
+export function fmtNumber(n) {
107
+	// return n.toString().padStart(2,"0")
108
+	return n > 9 ? n + "" : "0" + n
109
+}
110
+export function time2Timestamp(timer) {
111
+	return new Date(timer).getTime()
112
+}
113
+
114
+export function getForm(name = 'uniForms') {
115
+	let parent = this.$parent;
116
+	let parentName = parent.$options.name;
117
+	while (parentName !== name) {
118
+		parent = parent.$parent;
119
+		if (!parent) return false;
120
+		parentName = parent.$options.name;
121
+	}
122
+	return parent;
123
+}

+ 411 - 0
anyangWebAPP/uni_modules/xp-picker_2.2.2/components/xp-picker/xp-picker.vue

1
+<template>
2
+	<view class="xp-h-full">
3
+		<view @tap="show" class="xp-h-full">
4
+			<slot>
5
+				<view class="picker-label xp-h-full" :class="{'is-placeholder':label===placeholder}">{{label}}
6
+				</view>
7
+			</slot>
8
+		</view>
9
+		<view class="xp-picker" :style="{'visibility':pickerVisible?'visible':'hidden'}">
10
+			<view class="xp-picker-mask" :class="{'xp-picker-animation':animation}"
11
+				:style="{'opacity':pickerVisible?0.6:0}" @tap="_cancel"></view>
12
+			<view class="xp-picker-container"
13
+				:class="{'xp-picker-container--show':pickerVisible,'xp-picker-animation':animation}">
14
+				<view v-if="actionPosition==='top'" class="xp-picker-action">
15
+					<view class="xp-picker-action--cancel" @tap="_cancel">取消</view>
16
+					<view class="xp-picker-action--confirm" @tap="_confirm">确定</view>
17
+				</view>
18
+				<view v-if="isError" class="xp-picker-error" :style="{'height':height+'vh'}">
19
+					<text>(请检查你的配置 或 查看控制台错误信息)</text>
20
+				</view>
21
+				<!-- #ifdef VUE3 -->
22
+				<picker-view v-else style="margin-top: 40rpx;" :style="{'height':height+'vh'}"
23
+					indicator-style="height:40px;" :value="selected" @change="_change">
24
+					<picker-view-column v-for="(k,i) in modeArr" :key="cols[i].length" class="xp-picker-column">
25
+						<view class="xp-picker-list-item" v-for="(item,index) in cols[i]" :key="index">
26
+							{{item+units[i]}}
27
+						</view>
28
+					</picker-view-column>
29
+				</picker-view>
30
+				<!-- #endif -->
31
+				<!-- #ifdef VUE2 -->
32
+				<picker-view v-else style="margin-top: 40rpx;" :style="{'height':height+'vh'}"
33
+					indicator-style="height:40px;" :value="selected" @change="_change">
34
+					<picker-view-column v-for="(k,i) in modeArr" :key="k" class="xp-picker-column">
35
+						<view class="xp-picker-list-item" v-for="(item,index) in cols[i]" :key="index">
36
+							{{item+units[i]}}
37
+						</view>
38
+					</picker-view-column>
39
+				</picker-view>
40
+				<!-- #endif -->
41
+				<view v-if="actionPosition==='bottom'" class="xp-picker-btns">
42
+					<button class="xp-button xp-button--cancel" @tap="_cancel">取消</button>
43
+					<button class="xp-button xp-button--confirm" @tap="_confirm">确定</button>
44
+				</view>
45
+			</view>
46
+		</view>
47
+	</view>
48
+</template>
49
+
50
+<script>
51
+	import {
52
+		templateFactory,
53
+		getLocalTime,
54
+		fmtNumber,
55
+		time2Timestamp,
56
+		getDate,
57
+		getForm
58
+	} from "./util.js"
59
+	import assert from './assert.js'
60
+	export default {
61
+		name: 'XpPicker',
62
+		data() {
63
+			return {
64
+				isError: false,
65
+				pickerVisible: false,
66
+				cols: [],
67
+				selected: []
68
+			}
69
+		},
70
+		props: {
71
+			mode: {
72
+				type: String,
73
+				default: "ymd"
74
+			},
75
+			animation: {
76
+				type: Boolean,
77
+				default: true
78
+			},
79
+			height: {
80
+				type: [Number, String],
81
+				default: 35
82
+			},
83
+			actionPosition: {
84
+				type: String,
85
+				default: "bottom"
86
+			},
87
+			yearRange: {
88
+				type: Array,
89
+				default: () => [2010, null]
90
+			},
91
+			value: String,
92
+			// #ifdef VUE3
93
+			modelValue: String,
94
+			// #endif
95
+			history: Boolean,
96
+			placeholder: {
97
+				type: String,
98
+				default: '请选择'
99
+			}
100
+		},
101
+		watch: {
102
+			mode() {
103
+				this.render()
104
+			}
105
+		},
106
+		// #ifdef VUE3
107
+		emits: ['confirm', 'update:modelValue'],
108
+		// #endif
109
+		computed: {
110
+			modeArr() {
111
+				return this.mode.split("")
112
+			},
113
+			units() {
114
+				const arr = []
115
+				for (const k in this.template) {
116
+					if (this.mode.indexOf(k) !== -1) arr.push(this.template[k].text)
117
+				}
118
+				return arr
119
+			},
120
+			label() {
121
+				const val = this.value || this.modelValue
122
+				if (val) return val
123
+				return this.placeholder
124
+			}
125
+		},
126
+		created() {
127
+			this.bindForm()
128
+
129
+			this.isConfirm = false
130
+			this.template = {}
131
+			this.render()
132
+			// #ifdef VUE2
133
+			if (this.value) {
134
+				this.setSelected(this.value)
135
+			}
136
+			// #endif
137
+			// #ifdef VUE3
138
+			if (this.modelValue) {
139
+				this.setSelected(this.modelValue)
140
+			}
141
+			// #endif
142
+		},
143
+		methods: {
144
+			bindForm() {
145
+				this.form = getForm.call(this, 'uniForms')
146
+				this.formItem = getForm.call(this, 'uniFormsItem')
147
+				if (this.form && this.formItem) {
148
+					if (this.formItem.name) {
149
+						if (!this.is_reset) {
150
+							this.is_reset = false
151
+							// #ifdef VUE2
152
+							this.formItem.setValue(this.value)
153
+							// #endif
154
+							// #ifdef VUE3
155
+							this.formItem.setValue(this.modelValue)
156
+							// #endif
157
+						}
158
+						this.form.inputChildrens.push(this)
159
+					}
160
+				}
161
+			},
162
+			render() {
163
+				try {
164
+					assert(this)
165
+					this.template = templateFactory(this) //生成所需列 默认模板
166
+					this.initCols() //根据模板 初始化列
167
+					this.initSelected() //设置默认值
168
+				} catch (e) {
169
+					console.error(e)
170
+					this.isError = true
171
+				}
172
+			},
173
+			initCols() {
174
+				for (const k of this.mode) {
175
+					const range = this.template[k].range
176
+					this.fillCol(k, ...range)
177
+				}
178
+			},
179
+			initSelected() {
180
+				let dt
181
+				// #ifdef VUE2
182
+				dt = this.value
183
+				// #endif
184
+				// #ifdef VUE3
185
+				dt = this.modelValue
186
+				// #endif
187
+				if (!dt) dt = getLocalTime(this.mode)
188
+				if (!dt) return
189
+				this.setSelected(dt)
190
+			},
191
+			fillCol(k, s, e) {
192
+				const index = this.mode.indexOf(k)
193
+				let arr = []
194
+				for (let i = s; i <= e; i++)
195
+					arr.push(fmtNumber(i))
196
+				// #ifdef VUE2
197
+				this.$set(this.cols, index, arr)
198
+				// #endif
199
+				// #ifdef VUE3
200
+				this.cols[index] = arr
201
+				// #endif
202
+			},
203
+			//dt 时间字符串 如 '2020-02-16'
204
+			setSelected(dt) {
205
+				const arr = dt.split(/-|:|\s/)
206
+				const a = this.cols
207
+				for (let i = 0; i < a.length; i++)
208
+					this.$set(this.selected, i, a[i].indexOf(arr[i]))
209
+			},
210
+			show() {
211
+				if ((!this.value && !this.modelValue) || (!this.history) || (this.history && !this.isConfirm)) {
212
+					this.initSelected()
213
+				}
214
+				this.pickerVisible = true
215
+			},
216
+			_resolveCurrentDt() {
217
+				let str = ""
218
+				for (let i = 0; i < this.selected.length; i++)
219
+					str += this.cols[i][this.selected[i]] + this.units[i]
220
+				let dt = str
221
+					.replace('年', '-')
222
+					.replace('月', '-')
223
+					.replace('日', ' ')
224
+					.replace('时', ':')
225
+					.replace('分', ':')
226
+					.replace('秒', '')
227
+				if (!this.mode.endsWith('s'))
228
+					dt = dt.substring(0, dt.length - 1)
229
+				return dt
230
+			},
231
+			_confirm() {
232
+				const result = this._getResult()
233
+				const val = result.value
234
+				if (!this.isError) {
235
+					// #ifdef VUE2
236
+					this.$emit('input', val)
237
+					// #endif
238
+					// #ifdef VUE3
239
+					this.$emit('update:modelValue', val)
240
+					// #endif
241
+					this.$emit('confirm', result)
242
+					this.isConfirm = true
243
+					if (this.formItem) this.formItem.setValue(val)
244
+				}
245
+				this.pickerVisible = false
246
+			},
247
+			_getResult() {
248
+				const value = this._resolveCurrentDt()
249
+				const detail = {
250
+					value
251
+				}
252
+				const tp = time2Timestamp(value)
253
+				if (!isNaN(tp)) detail.timestamp = tp
254
+				return detail
255
+			},
256
+			_cancel() {
257
+				this.pickerVisible = false
258
+			},
259
+			_change(e) {
260
+				let col;
261
+				const newValue = e.detail.value
262
+				for (let i = 0; i < newValue.length; i++) {
263
+					if (newValue[i] !== this.selected[i]) {
264
+						col = this.modeArr[i]
265
+						break
266
+					}
267
+				}
268
+				this.selected = newValue
269
+				const index = this.mode.indexOf("d")
270
+				if (index !== -1 && (col === 'y' || col === 'm')) {
271
+					const currentDt = this._resolveCurrentDt()
272
+					this.fillCol("d", 1, getDate(currentDt))
273
+				}
274
+			}
275
+		}
276
+	}
277
+</script>
278
+
279
+<style scoped lang="scss">
280
+	.xp-h-full {
281
+		height: 100%;
282
+	}
283
+
284
+	.picker-label {
285
+		height: 100%;
286
+		display: flex;
287
+		align-items: center;
288
+		padding-left: 10px;
289
+		font-size: 13px;
290
+	}
291
+
292
+	.is-placeholder {
293
+		color: #999;
294
+	}
295
+
296
+	.xp-picker {
297
+		position: fixed;
298
+		top: 0;
299
+		bottom: 0;
300
+		left: 0;
301
+		right: 0;
302
+		z-index: 999;
303
+		font-size: 30rpx;
304
+	}
305
+
306
+	.xp-picker-container {
307
+		position: fixed;
308
+		bottom: 0;
309
+		transform: translateY(100%);
310
+		z-index: 999;
311
+		width: 100%;
312
+		background-color: #fff;
313
+		visibility: hidden;
314
+		border-radius: 16px 16px 0 0;
315
+	}
316
+
317
+	.xp-picker-container--show {
318
+		transform: translateY(0);
319
+		visibility: visible;
320
+	}
321
+
322
+	.xp-picker-mask {
323
+		z-index: 998;
324
+		width: 100%;
325
+		height: 100%;
326
+		background-color: rgb(0, 0, 0);
327
+	}
328
+
329
+	.xp-picker-animation {
330
+		transition: all 0.25s;
331
+	}
332
+
333
+	.xp-picker-error {
334
+		width: 100%;
335
+		display: flex;
336
+		flex-direction: column;
337
+		justify-content: center;
338
+		align-items: center;
339
+		color: #ff0000
340
+	}
341
+
342
+	.xp-picker-action {
343
+		width: 100%;
344
+		display: flex;
345
+		justify-content: space-between;
346
+		align-items: center;
347
+		height: 90rpx;
348
+		padding: 0 28rpx;
349
+		box-sizing: border-box;
350
+		position: relative;
351
+		font-size: 34rpx;
352
+		border-bottom: 0.5px solid #e5e5e5
353
+	}
354
+
355
+	.xp-picker-btns {
356
+		width: 100%;
357
+		display: flex;
358
+		justify-content: space-around;
359
+		align-items: center;
360
+		padding: 40rpx 30rpx;
361
+		box-sizing: border-box;
362
+		position: relative;
363
+	}
364
+
365
+	.xp-button {
366
+		line-height: 2.3;
367
+		font-size: 32rpx;
368
+		margin: 0;
369
+		padding: 0 80rpx;
370
+		transform: translate(0upx, 0upx);
371
+	}
372
+
373
+	.xp-button:active:not([disabled]) {
374
+		transform: translate(1upx, 1upx);
375
+	}
376
+
377
+	.xp-button:after {
378
+		border: none;
379
+	}
380
+
381
+	.xp-button--cancel {
382
+		background-color: #f5f5f5;
383
+		color: #47a16e;
384
+	}
385
+
386
+	.xp-button--confirm {
387
+		background-color: #47a16e;
388
+		color: #fff;
389
+	}
390
+
391
+	.xp-picker-action--cancel {
392
+		opacity: .7;
393
+	}
394
+
395
+	.xp-picker-action--confirm {
396
+		color: #007aff;
397
+	}
398
+
399
+	.xp-picker-column {
400
+		text-align: center;
401
+		border: none;
402
+		font-size: 32rpx;
403
+	}
404
+
405
+	.xp-picker-list-item {
406
+		display: flex;
407
+		justify-content: center;
408
+		align-items: center;
409
+		height: 40px;
410
+	}
411
+</style>

+ 82 - 0
anyangWebAPP/uni_modules/xp-picker_2.2.2/package.json

1
+{
2
+  "id": "xp-picker",
3
+  "displayName": "时间选择器 xp-picker",
4
+  "version": "2.2.2",
5
+  "description": "一款轻量级、可配置任意列的 时间选择器组件",
6
+  "keywords": [
7
+    "picker",
8
+    "time",
9
+    "时间选择器"
10
+],
11
+  "repository": "https://github.com/Pmj136/xp-picker",
12
+  "engines": {
13
+    "HBuilderX": "^3.1.0"
14
+  },
15
+  "dcloudext": {
16
+    "category": [
17
+        "前端组件",
18
+        "通用组件"
19
+    ],
20
+    "sale": {
21
+      "regular": {
22
+        "price": "0.00"
23
+      },
24
+      "sourcecode": {
25
+        "price": "0.00"
26
+      }
27
+    },
28
+    "contact": {
29
+      "qq": ""
30
+    },
31
+    "declaration": {
32
+      "ads": "无",
33
+      "data": "无",
34
+      "permissions": "无"
35
+    },
36
+    "npmurl": ""
37
+  },
38
+  "uni_modules": {
39
+    "dependencies": [],
40
+    "encrypt": [],
41
+    "platforms": {
42
+      "cloud": {
43
+        "tcb": "y",
44
+        "aliyun": "y"
45
+      },
46
+      "client": {
47
+        "Vue": {
48
+          "vue2": "y",
49
+          "vue3": "y"
50
+        },
51
+        "App": {
52
+          "app-vue": "y",
53
+          "app-nvue": "u"
54
+        },
55
+        "H5-mobile": {
56
+          "Safari": "y",
57
+          "Android Browser": "y",
58
+          "微信浏览器(Android)": "y",
59
+          "QQ浏览器(Android)": "y"
60
+        },
61
+        "H5-pc": {
62
+          "Chrome": "u",
63
+          "IE": "u",
64
+          "Edge": "u",
65
+          "Firefox": "u",
66
+          "Safari": "u"
67
+        },
68
+        "小程序": {
69
+          "微信": "y",
70
+          "阿里": "u",
71
+          "百度": "u",
72
+          "字节跳动": "u",
73
+          "QQ": "u"
74
+        },
75
+        "快应用": {
76
+          "华为": "u",
77
+          "联盟": "u"
78
+        }
79
+      }
80
+    }
81
+  }
82
+}

+ 129 - 0
anyangWebAPP/uni_modules/xp-picker_2.2.2/readme.md

1
+# xp-picker
2
+
3
+### 
4
+- 可以与uni-forms配合使用-表单验证
5
+- 支持vue2 vue3
6
+
7
+### 一、使用示例
8
+#### 示例1:配合uni-forms使用,内置支持表单验证
9
+```html
10
+    <template>
11
+    	<uni-forms :modelValue="form" :rules="[]">
12
+    		<uni-forms-item label="时间" name="time">
13
+				<xp-picker v-model="form.time" />
14
+			</uni-forms-item>
15
+    	</uni-forms>
16
+    </template>
17
+```
18
+#### 示例2:函数式打开picker,通过 this.$refs[ref].show()
19
+```html
20
+    <template>
21
+    	<view>
22
+    		<xp-picker ref="picker"  @confirm="confirm" />
23
+    		<view @tap="show">开启</view>
24
+    	</view>
25
+    </template>
26
+```
27
+```js
28
+	<script>
29
+		export default {
30
+			methods: {
31
+				show() {
32
+					this.$refs.picker.show()
33
+				},
34
+				confirm(e) {
35
+					console.log(e)
36
+				}
37
+			}
38
+		}
39
+	</script>
40
+```
41
+#### 示例3:xp-picker包含一个默认插槽,点击内容直接打开picker弹窗
42
+```html
43
+    <template>
44
+    	<view>
45
+    		<xp-picker @confirm="confirm">打开</xp-picker>
46
+    	</view>
47
+    </template>
48
+```
49
+```js
50
+	<script>
51
+		export default {
52
+			methods: {
53
+				confirm(e) {
54
+					console.log(e)
55
+				}
56
+			}
57
+		}
58
+	</script>
59
+```
60
+
61
+
62
+### 二、属性介绍
63
+
64
+| 字段             | 类型      | 必填 | 默认值               | 描述  |
65
+| ----------- | -------- | ---- | ---------------------- | ------------------------------- |
66
+| mode             | String | 否  |  ymd                   | 见下方mode 详细介绍       |
67
+| height           | Number | 否  |  35                    | 选择器的高度,单位vh     |
68
+| animation        | Boolean| 否  |  true                     | 打开和关闭是否使用动画效果      |
69
+| value     | String | 否  |  当前时间                  | 打开选择器时默认选中的时间,详细见下方使用方式      |
70
+| yearRange      |Array | 否  | [2016,null]      | 数组第一项代表开始年份(配置为null将使用默认2016),第二项代表结束年份(配置null将使用本年),配置示例:[2010,null]     |
71
+| history       | Boolean| 否  |  false                    | 每次打开picker时,是否保持用户最后一次选择的历史时间,若为fasle,则每次打开显示当前时间|
72
+| actionPosition| String|否   |bottom     |       可选 top,设置"取消"和"确定"按钮的位置      |
73
+| ~~startRule~~       | |   |                  | v2.0已移除      |
74
+| ~~endRule~~       | |  |                      | v2.0已移除      |
75
+| ~~start~~        |  |   |               | v1.2已移除    |
76
+| ~~end~~          |  |   |              | v1.2已移除     |
77
+| ~~errorMsg~~         |  |   |   | v1.2已移除     |
78
+
79
+
80
+### 1、mode的使用(y年;m月;d日;h时;i分;s秒)
81
+| 可选类型             | 描述  |
82
+| -------| --------------------------------- |
83
+| y        | picker将只显示 '年'一列       |
84
+| ym        | picker将只显示 '年月'两列      |
85
+| ymd        | picker将只显示 '年月日'两列      |
86
+| ymdh      | picker将只显示 '年月日时'四列       |
87
+| ymdhi     | picker将显示 '年月日时分'五列       |
88
+| ymdhis     | picker将显示 '年月日时分秒'六列      |
89
+| m       | 略……        |
90
+| d       | 略……         |
91
+| h       | 略……         |
92
+| i       | 略……         |
93
+| s       | 略……         |
94
+| md       |略……        |
95
+| hi       | 略……         |
96
+| is      | 略……         |
97
+| his       | 略……        |
98
+| mdh       | 略……         |
99
+| mdhi       | 略……         |
100
+| mdhis      | 略……       |
101
+
102
+未出现在表格中的配置代表不支持。但是xp-picker可以适配任何自定义列,比如:其中'dh'未预定义,因此只需在源码加一行dh的预定义即可(util.js/getLocalTime),不会联系作者,热心答复
103
+### 2、value的使用
104
+此选项用于自定义picker打开时的显示时间,同样需要与mode对应  
105
+
106
+| mode    | value格式(必须)  |
107
+| --------- | --------------------------------- |
108
+| ymd   |  yyyy-MM-dd  |
109
+| his    | HH:mm:ss    |
110
+|    …… |      ……     |
111
+
112
+
113
+### 三、事件
114
+
115
+| 字段      | 描述  |
116
+| --------- | ------------------------ |
117
+| confirm   | 点击确定按钮的响应事件     | 
118
+
119
+#### confirm 事件返回属性介绍
120
+| 属性      | 类型  | 描述    |
121
+| --------- | ------------------------ |--------------------------|
122
+| ~~isOverTime~~   |     | v2.0.0已移除|
123
+| value    | String     |选择的时间 例如:'2020-12-06'|
124
+| ~~resultArr~~    |     |v2.1.0已移除|
125
+| timestamp    | BigInt     |返回的时间戳,支持理论可转换的时间|
126
+
127
+
128
+### 四、插槽
129
+可使用此方式打开picker弹窗

+ 1 - 1
anyangWebAPP/unpackage/cache/apk/apkurl

1
-https://ide.dcloud.net.cn/build/download/b3b829a0-8d90-11ed-9b6d-412b55081e90
1
+https://ide.dcloud.net.cn/build/download/d67c3300-925d-11ed-b012-bdf73cb195f3

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
anyangWebAPP/unpackage/cache/apk/cmManifestCache.json


+ 1 - 1
anyangWebAPP/unpackage/cache/certdata

1
-andrCertfile=E:/desktopFile/证书/安阳证书/android/9f9362f165873dd82d770c5e2ee9c96a.keystore
1
+andrCertfile=D:/YJF_work/安阳12345/证书/9f9362f165873dd82d770c5e2ee9c96a.keystore
2
 andrCertAlias=__uni__505bb27
2
 andrCertAlias=__uni__505bb27
3
 andrCertPass=koDl16duKJbL2FkNvW/Z9Q==
3
 andrCertPass=koDl16duKJbL2FkNvW/Z9Q==

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
anyangWebAPP/unpackage/dist/build/app-plus/__uniappopenlocation.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
anyangWebAPP/unpackage/dist/build/app-plus/__uniapppicker.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
anyangWebAPP/unpackage/dist/build/app-plus/__uniappscan.js


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 2
anyangWebAPP/unpackage/dist/build/app-plus/app-config-service.js


Fichier diff supprimé car celui-ci est trop grand
+ 11 - 16
anyangWebAPP/unpackage/dist/build/app-plus/app-service.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
anyangWebAPP/unpackage/dist/build/app-plus/app-view.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
anyangWebAPP/unpackage/dist/build/app-plus/manifest.json


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
anyangWebAPP/unpackage/dist/build/app-plus/view.css


Fichier diff supprimé car celui-ci est trop grand
+ 2 - 2
anyangWebAPP/unpackage/dist/build/app-plus/view.umd.min.js


+ 12 - 2
anyangWebAPP/utils/helper.js

74
     const hh = now.getHours().toString().padStart(2,0); //时
74
     const hh = now.getHours().toString().padStart(2,0); //时
75
     const mm = now.getMinutes().toString().padStart(2,0); //分
75
     const mm = now.getMinutes().toString().padStart(2,0); //分
76
     const ss = now.getSeconds().toString().padStart(2,0); //秒
76
     const ss = now.getSeconds().toString().padStart(2,0); //秒
77
-    return year + "-" + month.toString().padStart(2,0) + "-" + day + " " + hh + ":" + mm + ":" + ss ;
78
-   
77
+    // return year + "-" + month.toString().padStart(2,0) + "-" + day + " " + hh + ":" + mm + ":" + ss ;
78
+	return year + "-" + month.toString().padStart(2,0) + "-" + day + " " + hh + ":" + mm + ":" + ss ; 
79
+  },
80
+  nowTime() {
81
+    const now = new Date();
82
+    const year = now.getFullYear(); //年
83
+    const month = now.getMonth() + 1; //月 .toString().padstart(2,0)
84
+    const day = now.getDate().toString().padStart(2,0); //日
85
+    const hh = now.getHours().toString().padStart(2,0); //时
86
+    const mm = now.getMinutes().toString().padStart(2,0); //分
87
+    const ss = now.getSeconds().toString().padStart(2,0); //秒
88
+  	return hh + ":" + mm + ":" + ss ; 
79
   },
89
   },
80
 	//获取当前时间年月份
90
 	//获取当前时间年月份
81
 		CurentTimeType() {
91
 		CurentTimeType() {

+ 135 - 1
anyangWebAPP/utils/listUrl.js

9
 const dispatchMultimedia = ["Multimedia"] //MTDD 多媒体调度 8810 MTDD 多媒体审核 9099 
9
 const dispatchMultimedia = ["Multimedia"] //MTDD 多媒体调度 8810 MTDD 多媒体审核 9099 
10
 const secondaryUnit = ["TWJD"] //WLDW 二级单位 11125
10
 const secondaryUnit = ["TWJD"] //WLDW 二级单位 11125
11
 const tertiaryUnit = ["ThreeManner"] //EJWLDW 三级级单位 110089
11
 const tertiaryUnit = ["ThreeManner"] //EJWLDW 三级级单位 110089
12
+const administrators = ["auditorList","Multimedia","ProvincialPlatformManagement"] //ZXLD 调度员 8186 123456
12
 
13
 
13
 const urlData = {
14
 const urlData = {
14
 	'DJGD_Add': {},
15
 	'DJGD_Add': {},
567
 			jianhang: 1,
568
 			jianhang: 1,
568
 		}
569
 		}
569
 	},
570
 	},
571
+	'messagesReviewed': { // 省平台-短信待评议
572
+		url: 'WorkOrder/GetZXDealList',
573
+		tabs: [{
574
+				label: '热线件',
575
+				value: 0,
576
+				field: 'db',
577
+			},
578
+			{
579
+				label: '督办件',
580
+				value: 1,
581
+				field: 'db',
582
+			}
583
+		],
584
+		params: {
585
+			state: 7,
586
+			tab: 0,
587
+			jianhang: 4,
588
+			phoneType: 2,
589
+			tobereply: 1,
590
+			db: 0,
591
+			smspy: 0
592
+		}
593
+	},
594
+	'ReturnReviewedTransferredProvincialPlatform': { // 省平台-退回待审转办
595
+		url: 'WorkOrder/GetLDDealList',
596
+		params: {
597
+			state: 10,
598
+			tab: 10,
599
+			jianhang: 4,
600
+		}
601
+	},
602
+	'toAuditListProvincialPlatform': { // 省平台-局委退回审核
603
+		url: 'WorkOrder/GetZXDealList',
604
+		params: {
605
+			state: 10,
606
+			tab: 0,
607
+			jianhang: 4,
608
+		}
609
+	},
610
+	'haveDoneToAuditProvincialPlatform': { // 省平台-已办待审核
611
+		url: 'WorkOrder/GetZXDealList',
612
+		tabs: [{
613
+				label: '多媒体件',
614
+				value: 0,
615
+				field: 'db',
616
+			},
617
+			{
618
+				label: '督办件',
619
+				value: 1,
620
+				field: 'db',
621
+			}
622
+		],
623
+		params: {
624
+			state: 6,
625
+			tab: 0,
626
+			tobereply: 1,
627
+			db: 0,
628
+			jianhang: 4,
629
+		}
630
+	},
631
+	'haveAduitProvincialPlatform': { // 省平台-已办待回访
632
+		url: 'WorkOrder/GetZXDealList',
633
+		tabs: [{
634
+				label: '多媒体件',
635
+				value: 0,
636
+				field: 'db',
637
+			},
638
+			{
639
+				label: '督办件',
640
+				value: 1,
641
+				field: 'db',
642
+			}
643
+		],
644
+		params: {
645
+			state: 7,
646
+			tab: 0,
647
+			tobereply: 1,
648
+			db: 0,
649
+			jianhang: 4,
650
+		}
651
+	},
652
+	'LeaderYJBProvincialPlatform': { // 省平台-正在办理
653
+		url: 'WorkOrder/GetLDDealList',
654
+		params: {
655
+			tab:1,
656
+			jianhang: 4,
657
+		}
658
+	},
659
+	'expiredWorkOrdersProvincialPlatform': { // 省平台-超期未果
660
+		url: 'WorkOrder/GetTimeOutList',
661
+		params: {
662
+			tab:1,
663
+			jianhang: 4,
664
+		}
665
+	},
666
+	'WorkIsproresultProvincialPlatform': { // 省平台-已办未果
667
+		url: 'WorkOrder/GetList',
668
+		tabs: [{
669
+				label: '未追加回复',
670
+				value: 1,
671
+				field: 'isproresult',
672
+			},
673
+			{
674
+				label: '已追加回复',
675
+				value: 2,
676
+				field: 'isproresult',
677
+			}
678
+		],
679
+		params: {
680
+			state: 6,
681
+			jianhang: 4,
682
+		}
683
+	},
684
+	'LeaderYJAProvincialPlatform': { // 省平台-已办结
685
+		url: 'WorkOrder/GetLDDealList',
686
+		params: {
687
+			tab: 5,
688
+			jianhang: 4,
689
+		}
690
+	},
691
+	'toSupervListProvincialPlatform': { // 省平台-已转督办
692
+		url: 'workorder/GetSupervList',
693
+		params: {
694
+			jianhang: 4,
695
+		}
696
+	},
697
+	'LeaderYZBProvincialPlatform': { // 省平台-已退回重办
698
+		url: 'WorkOrder/GetLDDealList',
699
+		params: {
700
+			tab:4,
701
+			jianhang: 4,
702
+		}
703
+	},
570
 }
704
 }
571
 
705
 
572
 const listUrl = {
706
 const listUrl = {
597
 				FirsrtMenuData = tertiaryUnit
731
 				FirsrtMenuData = tertiaryUnit
598
 				break;
732
 				break;
599
 			case 'GLY':
733
 			case 'GLY':
600
-				FirsrtMenuData = dispatchPersonnel
734
+				FirsrtMenuData = administrators
601
 				break;
735
 				break;
602
 		}
736
 		}
603
 		for (let i in data) {
737
 		for (let i in data) {

BIN
证书/9f9362f165873dd82d770c5e2ee9c96a.keystore


+ 3 - 0
证书/账号密码.txt

1
+别名: __uni__505bb27
2
+包名:com.anyang.app
3
+Ltz8mlnf