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>
|