330 lines
9.0 KiB
Vue
330 lines
9.0 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="checkType" borderBottom
|
|
@click="handleShowSheet({title: '检查类型', name: 'checkType'})">
|
|
<u--input :value="dataModel.checkType.name" disabled 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>
|
|
<u-upload :fileList="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>
|
|
<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 store from '@/store/index.js'
|
|
import {
|
|
mapState,
|
|
mapMutations
|
|
} from 'vuex'
|
|
import {
|
|
extendInclude,
|
|
extendOrder,
|
|
extendRule,
|
|
guid,
|
|
initFilter
|
|
} from '../../utils/common'
|
|
import {
|
|
getCheckArea,
|
|
getCheckContent,
|
|
getCheckLevel,
|
|
getCheckProblem,
|
|
getCheckType,
|
|
saveRiskReport
|
|
} from '../../services/safe'
|
|
import config from '../../config/common'
|
|
// import UImage from '../../uni_modules/uview-ui/components/u--image/u--image.vue'
|
|
|
|
export default {
|
|
// components: { UImage },
|
|
data() {
|
|
return {
|
|
pictureLists: [],
|
|
dataModel: {
|
|
checkType: {
|
|
name: '',
|
|
value: ''
|
|
},
|
|
checkLevel: {
|
|
name: '',
|
|
value: ''
|
|
},
|
|
checkDate: {
|
|
name: '',
|
|
value: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM')
|
|
},
|
|
checkContent: {
|
|
name: '',
|
|
value: ''
|
|
}
|
|
},
|
|
rules: {},
|
|
showCheckDate: false,
|
|
comPickerInfo: {
|
|
showSheet: false,
|
|
columns: [],
|
|
title: '',
|
|
formIndex: undefined,
|
|
name: ''
|
|
}
|
|
}
|
|
},
|
|
onLoad() {
|
|
this.pictureLists = this.$store.state.imageLists.map(i => {
|
|
return {
|
|
url: i
|
|
}
|
|
})
|
|
},
|
|
methods: {
|
|
onConfirmPicker(e) {
|
|
const {
|
|
name,
|
|
formIndex
|
|
} = this.comPickerInfo
|
|
this.dataModel[name].value = e.value[0].id
|
|
this.dataModel[name].name = e.value[0].name
|
|
this.comPickerInfo.showSheet = false
|
|
},
|
|
async handleShowSheet(p) {
|
|
const orgId = uni.getStorageSync('orgId')
|
|
const json = initFilter(orgId, "", "", 0)
|
|
let column = []
|
|
if (p.name === 'checkType') {
|
|
extendOrder(json, "NUM", "0")
|
|
column = await getCheckType(json).then(res => {
|
|
return res.map(i => {
|
|
return {
|
|
...i,
|
|
name: i.NAME,
|
|
id: i.ID
|
|
}
|
|
})
|
|
})
|
|
}
|
|
// if (p.name === 'checkType') {
|
|
// column = [
|
|
// {name: '巡回检查', value: 1},
|
|
// {name: '隐患上报', value: 2}
|
|
// ]
|
|
// }
|
|
if (p.name === 'checkLevel') {
|
|
extendRule(json, 'CHECK_TYPE_ID', 1, this.dataModel.checkType.value)
|
|
extendInclude(json, "Nav_Enums")
|
|
column = await getCheckLevel(json).then(res => {
|
|
return res.map(i => {
|
|
return {
|
|
...i,
|
|
name: i.Nav_Enums?.NAME,
|
|
id: i.Nav_Enums?.ID
|
|
}
|
|
})
|
|
})
|
|
}
|
|
// if (p.name === 'checkLevel') {
|
|
// // extendInclude(json, "Nav_Enums")
|
|
// // column = await getCheckLevel(json).then(res => {return res})
|
|
// column = [
|
|
// {name: '高', id: 1},
|
|
// {name: '中', id: 2},
|
|
// {name: '低', id: 3},
|
|
// ]
|
|
// }
|
|
if (column.length) {
|
|
this.comPickerInfo = {
|
|
showSheet: true,
|
|
title: p.title,
|
|
name: p.name,
|
|
formIndex: p.formIndex,
|
|
columns: [column]
|
|
}
|
|
} else {
|
|
// 暂无数据
|
|
}
|
|
},
|
|
handleCheckDate(e) {
|
|
this.showCheckDate = false
|
|
this.dataModel.checkDate.value = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
|
|
},
|
|
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 {
|
|
checkDate,
|
|
checkType,
|
|
checkType_name,
|
|
checkLevel
|
|
} = this.dataModel
|
|
const submitId = guid()
|
|
// TODO: 确认对应字段是否填写正确
|
|
const params = {
|
|
ID: submitId,
|
|
ORG_ID: orgId,
|
|
FORM_ID: guid(), // ?
|
|
ENTITY_ORG_TPYE: 0, // ?
|
|
ENABLE_STATUS: 0, // ?
|
|
CHECKTIME: checkDate.value,
|
|
CHECK_TYPE_ID: checkType.value,
|
|
NAME: checkType.name,
|
|
CHECK_TYPE_LEVEL_ID: checkLevel.value,
|
|
SUBMIT_STATUS: '5', // ?
|
|
OrgRule: [], // ?
|
|
Nav_Files: this.pictureLists.map(i => {
|
|
return {
|
|
ID: guid(),
|
|
IMG_FILE_ID: i.IMG_FILE_ID,
|
|
ORG_ID: orgId,
|
|
RISK_SUBMIT_ID: submitId
|
|
}
|
|
}),
|
|
// Nav_ListRiskSubmitContent: this.subDataModel.map(o => {
|
|
// return {
|
|
// ID: guid(),
|
|
// ORG_ID: orgId,
|
|
// ENTITY_ORG_TPYE: 0, // ?
|
|
// RISK_SUBMIT_ID: submitId,
|
|
// ROW_NO: 1, // ?
|
|
// ADDRESS: '',
|
|
// CHECK_CONTENTS_ID: o.checkContent,
|
|
// CHECKCONTENT: o.checkContent_name,
|
|
// CHECK_QUESTION_ID: o.checkProblem,
|
|
// DESCREPTION: '', // ?
|
|
// DEMAND: '', // ?
|
|
// QUESTION_LEVEL: 50, // ?
|
|
// RISK_AREA_ID: o.checkArea,
|
|
// USER_ID: appInfoData.User.ID, // ?
|
|
// DEPARTMENT_ID: appInfoData.User.DEPARTMENT_ID, // ?
|
|
// SUBMIT_STATUS: 5 // ?
|
|
// }
|
|
// })
|
|
}
|
|
|
|
saveRiskReport(params).then(res => {
|
|
if (res) {
|
|
uni.showToast({
|
|
title: '提交成功'
|
|
})
|
|
}
|
|
})
|
|
}).catch(err => {
|
|
console.log('校验失败', err)
|
|
})
|
|
},
|
|
closePicker() {
|
|
this.comPickerInfo = {
|
|
showSheet: false,
|
|
columns: [],
|
|
title: '',
|
|
name: '',
|
|
formIndex: undefined
|
|
}
|
|
},
|
|
deletePic(event) {
|
|
this[`pictureLists`].splice(event.index, 1)
|
|
},
|
|
async afterRead(event) {
|
|
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
|
|
let lists = [].concat(event.file)
|
|
let fileListLen = this[`pictureLists`].length
|
|
lists.map((item) => {
|
|
this[`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[`pictureLists`][fileListLen]
|
|
this[`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> |