267 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			267 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| 
								 | 
							
								<template>
							 | 
						||
| 
								 | 
							
									<view class="camera-page">
							 | 
						||
| 
								 | 
							
										<uni-card class="card-style" margin="0" :is-shadow="true">
							 | 
						||
| 
								 | 
							
											<u--form labelPosition="left" labelWidth="auto" labelAlign="center" :model="dataModel" :rules="rules"
							 | 
						||
| 
								 | 
							
												ref="wForm" errorType="border-bottom">
							 | 
						||
| 
								 | 
							
												<u-form-item label="接收人" prop="recipient.name" borderBottom
							 | 
						||
| 
								 | 
							
													@click="handleShowPersonQuery">
							 | 
						||
| 
								 | 
							
													<u--input :value="dataModel.recipient.name" readonly disabledColor="#fff" placeholder="请选择接收人"
							 | 
						||
| 
								 | 
							
														border="none" inputAlign="right"></u--input>
							 | 
						||
| 
								 | 
							
													<u-icon style="margin-left: 4px;" slot="right" name="arrow-down"></u-icon>
							 | 
						||
| 
								 | 
							
												</u-form-item>
							 | 
						||
| 
								 | 
							
								<!--				<u-form-item label="检查层级" prop="checkLevel" borderBottom-->
							 | 
						||
| 
								 | 
							
								<!--					@click="handleShowSheet({title: '检查层级', name: 'checkLevel'})">-->
							 | 
						||
| 
								 | 
							
								<!--					<u--input :value="dataModel.checkLevel.name" placeholder="请选择检查层级" disabled disabledColor="#fff"-->
							 | 
						||
| 
								 | 
							
								<!--						border="none" inputAlign="right"></u--input>-->
							 | 
						||
| 
								 | 
							
								<!--					<u-icon style="margin-left: 4px;" slot="right" name="arrow-down"></u-icon>-->
							 | 
						||
| 
								 | 
							
								<!--				</u-form-item>-->
							 | 
						||
| 
								 | 
							
								<!--				<u-form-item label="检查时间" prop="checkDate" borderBottom @click="showCheckDate = true;">-->
							 | 
						||
| 
								 | 
							
								<!--					<u--input disabled disabledColor="#fff" :value="dataModel.checkDate.value" border="none"-->
							 | 
						||
| 
								 | 
							
								<!--						inputAlign="right"></u--input>-->
							 | 
						||
| 
								 | 
							
								<!--				</u-form-item>-->
							 | 
						||
| 
								 | 
							
												<view class="label-title">照片</view>
							 | 
						||
| 
								 | 
							
												<u-form-item borderBottom prop="pictureLists">
							 | 
						||
| 
								 | 
							
													<u-upload :fileList="dataModel.pictureLists" @afterRead="afterRead" @delete="deletePic" multiple :maxCount="3"
							 | 
						||
| 
								 | 
							
														style="margin-bottom: 0;" :previewFullImage="true" uploadIcon="plus"></u-upload>
							 | 
						||
| 
								 | 
							
												</u-form-item>
							 | 
						||
| 
								 | 
							
												<view>
							 | 
						||
| 
								 | 
							
													<view class="label-title">检查内容</view>
							 | 
						||
| 
								 | 
							
													<u-form-item borderBottom>
							 | 
						||
| 
								 | 
							
														<u--textarea :value="dataModel.checkContent.value" @input="onInput" placeholder="请输入检查内容"
							 | 
						||
| 
								 | 
							
															border="surround"></u--textarea>
							 | 
						||
| 
								 | 
							
													</u-form-item>
							 | 
						||
| 
								 | 
							
												</view>
							 | 
						||
| 
								 | 
							
											</u--form>
							 | 
						||
| 
								 | 
							
								<!--			<people-selector :show="showSelectorPerson" @select="handleSelectorPeople"-->
							 | 
						||
| 
								 | 
							
								<!--											 @close="showSelectorPerson = false">-->
							 | 
						||
| 
								 | 
							
								<!--			</people-selector>-->
							 | 
						||
| 
								 | 
							
											<query-selector :show="showQueryPerson" :lists="userLists" :total="curTotal"
							 | 
						||
| 
								 | 
							
																			@close="handleClosePopup" @search="handleSearchUser" @select="handleSelectedUser" />
							 | 
						||
| 
								 | 
							
								<!--			<u-datetime-picker :show="showCheckDate" mode="datetime" :value="dataModel.checkDate.value"-->
							 | 
						||
| 
								 | 
							
								<!--				@confirm="handleCheckDate" @close="showCheckDate = false;"-->
							 | 
						||
| 
								 | 
							
								<!--				@cancel="showCheckDate = false;"></u-datetime-picker>-->
							 | 
						||
| 
								 | 
							
								<!--			<u-picker :show="comPickerInfo.showSheet" :columns="comPickerInfo.columns" @confirm="onConfirmPicker"-->
							 | 
						||
| 
								 | 
							
								<!--				@close="closePicker" @cancel="closePicker" keyName="name"></u-picker>-->
							 | 
						||
| 
								 | 
							
										</uni-card>
							 | 
						||
| 
								 | 
							
										<button type="primary" @click="handleSubmit">提交</button>
							 | 
						||
| 
								 | 
							
									</view>
							 | 
						||
| 
								 | 
							
								</template>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<script>
							 | 
						||
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
									extendFilterGroup,
							 | 
						||
| 
								 | 
							
									extendGroupRule,
							 | 
						||
| 
								 | 
							
									extendInclude,
							 | 
						||
| 
								 | 
							
									extendOrder,
							 | 
						||
| 
								 | 
							
									extendRule,
							 | 
						||
| 
								 | 
							
									guid,
							 | 
						||
| 
								 | 
							
									initFilter, initFilterGroup
							 | 
						||
| 
								 | 
							
								} from '../../utils/common'
							 | 
						||
| 
								 | 
							
								// import {
							 | 
						||
| 
								 | 
							
								// 	getUserLists
							 | 
						||
| 
								 | 
							
								// } from '../../services/safe'
							 | 
						||
| 
								 | 
							
								// import {
							 | 
						||
| 
								 | 
							
								// 	saveSnapShot
							 | 
						||
| 
								 | 
							
								// } from '../../services/app'
							 | 
						||
| 
								 | 
							
									import config from '../../config/common'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									export default {
							 | 
						||
| 
								 | 
							
										data() {
							 | 
						||
| 
								 | 
							
											return {
							 | 
						||
| 
								 | 
							
												sourceUrl: config.uni_app_web_source_url,
							 | 
						||
| 
								 | 
							
												userLists: [],
							 | 
						||
| 
								 | 
							
												curTotal: 0,
							 | 
						||
| 
								 | 
							
												showSelectorPerson: false,
							 | 
						||
| 
								 | 
							
												showQueryPerson: false,
							 | 
						||
| 
								 | 
							
												dataModel: {
							 | 
						||
| 
								 | 
							
													recipient: {
							 | 
						||
| 
								 | 
							
														name: '',
							 | 
						||
| 
								 | 
							
														value: ''
							 | 
						||
| 
								 | 
							
													},
							 | 
						||
| 
								 | 
							
													checkContent: {
							 | 
						||
| 
								 | 
							
														value: ''
							 | 
						||
| 
								 | 
							
													},
							 | 
						||
| 
								 | 
							
													pictureLists: [],
							 | 
						||
| 
								 | 
							
												},
							 | 
						||
| 
								 | 
							
												rules: {
							 | 
						||
| 
								 | 
							
													'recipient.name': {
							 | 
						||
| 
								 | 
							
														type: 'string',
							 | 
						||
| 
								 | 
							
														required: true,
							 | 
						||
| 
								 | 
							
														message: '请选择接收人',
							 | 
						||
| 
								 | 
							
														trigger: ['blur', 'change']
							 | 
						||
| 
								 | 
							
													},
							 | 
						||
| 
								 | 
							
													'pictureLists': {
							 | 
						||
| 
								 | 
							
														type: 'array',
							 | 
						||
| 
								 | 
							
														required: true,
							 | 
						||
| 
								 | 
							
														message: '请上传照片',
							 | 
						||
| 
								 | 
							
														trigger: ['blur', 'change']
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
										onLoad() {
							 | 
						||
| 
								 | 
							
											// this.dataModel.pictureLists = this.$store.state.imageLists.map(i => {
							 | 
						||
| 
								 | 
							
											// 	return {
							 | 
						||
| 
								 | 
							
											// 		url: this.sourceUrl + i.IMG_FILE_PATH,
							 | 
						||
| 
								 | 
							
											// 		id: i.IMG_FILE_ID,
							 | 
						||
| 
								 | 
							
											// 		IMG_FILE_PATH: this.sourceUrl + i.IMG_FILE_PATH,
							 | 
						||
| 
								 | 
							
											// 		IMG_FILE_ID: i.IMG_FILE_ID,
							 | 
						||
| 
								 | 
							
											// 	}
							 | 
						||
| 
								 | 
							
											// })
							 | 
						||
| 
								 | 
							
										},
							 | 
						||
| 
								 | 
							
										methods: {
							 | 
						||
| 
								 | 
							
											handleShowPersonQuery() {
							 | 
						||
| 
								 | 
							
												this.showQueryPerson = true
							 | 
						||
| 
								 | 
							
												this.handleSearchUser('init')
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											handleClosePopup() {
							 | 
						||
| 
								 | 
							
												this.showQueryPerson = false
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											// handleSelectorPeople(e) {
							 | 
						||
| 
								 | 
							
											// 	console.log(e)
							 | 
						||
| 
								 | 
							
											// },
							 | 
						||
| 
								 | 
							
											handleSearchUser(val, pageIndex) {
							 | 
						||
| 
								 | 
							
												const orgId = uni.getStorageSync('orgId')
							 | 
						||
| 
								 | 
							
												const json = initFilter(orgId, "", "NAME", '', pageIndex)
							 | 
						||
| 
								 | 
							
												extendInclude(json, "Nav_Person.Nav_Post")
							 | 
						||
| 
								 | 
							
												extendRule(json, 'ENABLE_STATUS', 1, '0')
							 | 
						||
| 
								 | 
							
												if (val !== 'init') {
							 | 
						||
| 
								 | 
							
													const tempGroup = initFilterGroup(false);
							 | 
						||
| 
								 | 
							
													extendGroupRule(tempGroup, 'NAME', 9, val)
							 | 
						||
| 
								 | 
							
													extendFilterGroup(json, tempGroup);
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
												json.Limit = 20
							 | 
						||
| 
								 | 
							
												if (pageIndex) {
							 | 
						||
| 
								 | 
							
													json.Start = (pageIndex - 1) * 20;
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												// getUserLists(json).then(res => {
							 | 
						||
| 
								 | 
							
												// 	if (res.IsSuccessful) {
							 | 
						||
| 
								 | 
							
												// 		this.userLists = res.Data.map(i => {
							 | 
						||
| 
								 | 
							
												// 			return {
							 | 
						||
| 
								 | 
							
												// 				...i,
							 | 
						||
| 
								 | 
							
												// 				name: i.NAME,
							 | 
						||
| 
								 | 
							
												// 				code: i.CODE
							 | 
						||
| 
								 | 
							
												// 			}
							 | 
						||
| 
								 | 
							
												// 		})
							 | 
						||
| 
								 | 
							
												// 		this.curTotal = res.TotalCount
							 | 
						||
| 
								 | 
							
												// 	}
							 | 
						||
| 
								 | 
							
												// })
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											handleSelectedUser(val) {
							 | 
						||
| 
								 | 
							
												this.showQueryPerson = false
							 | 
						||
| 
								 | 
							
												this.lists = []
							 | 
						||
| 
								 | 
							
												this.dataModel.recipient = val
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											onInput(e) {
							 | 
						||
| 
								 | 
							
												this.dataModel.checkContent.value = e
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											handleSubmit() {
							 | 
						||
| 
								 | 
							
												const ele = this.$refs
							 | 
						||
| 
								 | 
							
												ele['wForm'].validate().then(res => {
							 | 
						||
| 
								 | 
							
													const orgId = uni.getStorageSync('orgId')
							 | 
						||
| 
								 | 
							
													const appInfoData = uni.getStorageSync('appInfo')
							 | 
						||
| 
								 | 
							
													const {
							 | 
						||
| 
								 | 
							
														recipient,
							 | 
						||
| 
								 | 
							
														checkContent,
							 | 
						||
| 
								 | 
							
														pictureLists
							 | 
						||
| 
								 | 
							
													} = this.dataModel
							 | 
						||
| 
								 | 
							
													// const submitId = guid()
							 | 
						||
| 
								 | 
							
													const params = {
							 | 
						||
| 
								 | 
							
														ACCEPT_ID: recipient.ID,
							 | 
						||
| 
								 | 
							
														DESCRIPTION: checkContent.value,
							 | 
						||
| 
								 | 
							
														Nav_Files: pictureLists.map(i => {
							 | 
						||
| 
								 | 
							
															return {
							 | 
						||
| 
								 | 
							
																ID: guid(),
							 | 
						||
| 
								 | 
							
																IMG_FILE_ID: i.IMG_FILE_ID,
							 | 
						||
| 
								 | 
							
																ORG_ID: orgId,
							 | 
						||
| 
								 | 
							
															}
							 | 
						||
| 
								 | 
							
														}),
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
													// saveSnapShot(params).then(res => {
							 | 
						||
| 
								 | 
							
													// 	if (res) {
							 | 
						||
| 
								 | 
							
													// 		uni.$showMsgFunc('提交成功', () => {
							 | 
						||
| 
								 | 
							
													// 			uni.switchTab({
							 | 
						||
| 
								 | 
							
													// 				url: '/pages/index/index2'
							 | 
						||
| 
								 | 
							
													// 			})
							 | 
						||
| 
								 | 
							
													// 		}, '', 1000)
							 | 
						||
| 
								 | 
							
													// 	}
							 | 
						||
| 
								 | 
							
													// })
							 | 
						||
| 
								 | 
							
												}).catch(err => {
							 | 
						||
| 
								 | 
							
													console.log('校验失败', err)
							 | 
						||
| 
								 | 
							
												})
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											deletePic(event) {
							 | 
						||
| 
								 | 
							
												this.dataModel.pictureLists.splice(event.index, 1)
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											async afterRead(event) {
							 | 
						||
| 
								 | 
							
												// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
							 | 
						||
| 
								 | 
							
												let lists = [].concat(event.file)
							 | 
						||
| 
								 | 
							
												let fileListLen = this.dataModel.pictureLists.length
							 | 
						||
| 
								 | 
							
												lists.map((item) => {
							 | 
						||
| 
								 | 
							
													this.dataModel.pictureLists.push({
							 | 
						||
| 
								 | 
							
														...item,
							 | 
						||
| 
								 | 
							
														status: 'uploading',
							 | 
						||
| 
								 | 
							
														message: '上传中'
							 | 
						||
| 
								 | 
							
													})
							 | 
						||
| 
								 | 
							
												})
							 | 
						||
| 
								 | 
							
												for (let i = 0; i < lists.length; i++) {
							 | 
						||
| 
								 | 
							
													const result = await this.uploadFilePromise(lists[i].url)
							 | 
						||
| 
								 | 
							
													let item = this.dataModel.pictureLists[fileListLen]
							 | 
						||
| 
								 | 
							
													this.dataModel.pictureLists.splice(fileListLen, 1, Object.assign(item, {
							 | 
						||
| 
								 | 
							
														status: 'success',
							 | 
						||
| 
								 | 
							
														message: '',
							 | 
						||
| 
								 | 
							
														IMG_FILE_ID: result.imgFileID
							 | 
						||
| 
								 | 
							
														// url: result
							 | 
						||
| 
								 | 
							
													}))
							 | 
						||
| 
								 | 
							
													fileListLen++
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
											uploadFilePromise(url) {
							 | 
						||
| 
								 | 
							
												const appInfoData = uni.getStorageSync('appInfo')
							 | 
						||
| 
								 | 
							
												const userId = appInfoData?.User?.ID || ''
							 | 
						||
| 
								 | 
							
												const orgId = uni.getStorageSync('orgId')
							 | 
						||
| 
								 | 
							
												const tenant = uni.getStorageSync('Tenant') || ''
							 | 
						||
| 
								 | 
							
												const remoteUrl = config.serviceHost('/PF/File/UploadFile')
							 | 
						||
| 
								 | 
							
												return new Promise((resolve, reject) => {
							 | 
						||
| 
								 | 
							
													uni.uploadFile({
							 | 
						||
| 
								 | 
							
														url: remoteUrl,
							 | 
						||
| 
								 | 
							
														filePath: url,
							 | 
						||
| 
								 | 
							
														fileList: url,
							 | 
						||
| 
								 | 
							
														name: 'file',
							 | 
						||
| 
								 | 
							
														formData: {
							 | 
						||
| 
								 | 
							
															OrgId: orgId
							 | 
						||
| 
								 | 
							
														},
							 | 
						||
| 
								 | 
							
														header: {
							 | 
						||
| 
								 | 
							
															Tenant: tenant,
							 | 
						||
| 
								 | 
							
															userid: userId
							 | 
						||
| 
								 | 
							
														},
							 | 
						||
| 
								 | 
							
														success: (res) => {
							 | 
						||
| 
								 | 
							
															if (res.statusCode === 200) {
							 | 
						||
| 
								 | 
							
																const uploadResult = JSON.parse(res.data)
							 | 
						||
| 
								 | 
							
																if (uploadResult.IsSuccessful) {
							 | 
						||
| 
								 | 
							
																	resolve(uploadResult.Data)
							 | 
						||
| 
								 | 
							
																}
							 | 
						||
| 
								 | 
							
															}
							 | 
						||
| 
								 | 
							
														}
							 | 
						||
| 
								 | 
							
													})
							 | 
						||
| 
								 | 
							
												})
							 | 
						||
| 
								 | 
							
											},
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								</script>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<style scoped>
							 | 
						||
| 
								 | 
							
									/* @import url("@/style/css/editTemplate.css"); */
							 | 
						||
| 
								 | 
							
									.camera-page {
							 | 
						||
| 
								 | 
							
										padding: 16px;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									.label-title {
							 | 
						||
| 
								 | 
							
										color: #303133;
							 | 
						||
| 
								 | 
							
										font-size: 15px;
							 | 
						||
| 
								 | 
							
										line-height: 22px;
							 | 
						||
| 
								 | 
							
										padding-top: 8px;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								</style>
							 |