hn_ldlz/ldlz-H5/pages/aqlz/problem.vue

486 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<page-meta :page-font-size="$store.state.vuex_fontsize+'px'" :root-font-size="$store.state.vuex_fontsize+'px'"></page-meta>
<view>
<view class="title-box" v-if="detail!='' && isOther==false">{{detail.children[classIndex].name}}</view>
<view class="title-box" v-else>其他情况</view>
<view class="content-box" v-if="detail!=''">
<view class="content-name">
{{(1+parseInt(classIndex2))+'. '+detail.children[classIndex].children[classIndex2].name}}
</view>
<view class="content-content">
{{detail.children[classIndex].children[classIndex2].content}}
</view>
</view>
<view class="problem-top-box">
<view class="problem-title" style="margin-left: 15px;">发现问题</view>
<!-- <view class="jc-one-btns">
<u-icon class="jc-one-icon" size="18" name="checkmark-circle" color="rgb(96, 98, 102)"
@click="noProblem"></u-icon>
<u-icon class="jc-one-icon" size="18" name="warning-fill" color="#F56C6C"
style="margin-left:100%">
</u-icon>
</view> -->
</view>
<view class="problem-box" v-for="(itemForm,index) in form" :key="index">
<view class="problem-form-box">
<view class="delDiv">
<u-icon v-if="index!=0" name="minus-circle" color="#F56C6C" size="22" class="delBtn"
@click="delProblem(index)"></u-icon>
</view>
<u--form labelPosition="left" :model="form[index]" :ref="'uForm'+index" :rules="rules">
<u-form-item label="现场情况" prop="remark" borderBottom labelWidth="70">
<u--input v-model="form[index].remark" border="none"></u--input>
</u-form-item>
<u-form-item v-if="isShow()" label="责任人" prop="responsiblePerson" borderBottom labelWidth="70">
<u--input v-model="form[index].responsiblePerson" border="none"></u--input>
</u-form-item>
<u-form-item label="照片" prop="photo" :ref="'upLoad'+index" labelWidth="70">
<u-upload :fileList="form[index].img" @afterRead="afterRead(index,$event)"
@delete="deletePic(index,$event)" multiple :maxCount="9">
</u-upload>
</u-form-item>
</u--form>
</view>
</view>
<view class="problem-add-box" @click="addProblem">+ 添加问题</view>
<view style="display:flex;">
<u-button type="primary" text="确定"
style="margin: 30px auto; width: 30%;background-color:#00b27b;border-color:#00b27b;"
@click="submiProblem"></u-button>
<u-button type="default" plain text="取消" style="margin: 30px auto; width: 30%;" @click="noProblem">
</u-button>
</view>
</view>
</template>
<script>
import {
baseUrl
} from '../../config.js'
import {
getToken
} from '@/utils/auth'
import {
gethandbookInfo
} from '@/api/handbook.js'
import auth from "@/plugins/auth.js"
export default {
data() {
return {
id: "", // 页面id
tid: "", // 子记录id
address: "", // 地图页面的地址
otherUser: "", // 同行人
projectName: "", // 工程名称
form: [],
rules: {
'remark': {
type: 'string',
required: true,
message: '请填写现场情况',
trigger: ['blur', 'change']
},
'responsiblePerson': {
type: 'string',
required: true,
message: '请填写责任人',
trigger: ['blur', 'change']
},
},
formTem: {
indexId: "",
type: '1',
responsiblePerson: "",
remark: "",
img: [],
},
fileList1: [],
detail: "",
classIndex: "",
classIndex2: "",
key: "",
isOther: false,
}
},
// onBackPress(options) {
// if (options.from === 'navigateBack') {
// uni.showModal({
// title: '提示',
// content: '确定要退出吗?',
// success: function(res) {
// if (res.confirm) {
// // 用户点击了确定,正常进行返回行为
// return true;
// } else if (res.cancel) {
// // 用户点击了取消,不执行返回行为
// return false;
// }
// }
// });
// }
// // 如果不是 navigateBack 触发的返回,比如导航栏的返回按钮或者系统返回按钮,则不会阻止默认行为
// return false;
// },
onLoad(option) {
if (option.isOther == 1) {
this.isOther = true;
this.otherInit();
} else {
this.id = option.id;
this.classIndex = option.classIndex;
this.classIndex2 = option.classIndex2;
this.gethandbookInfo(this.id);
}
},
methods: {
isShow() {
console.log(auth.hasPermi('system:config:showResponsiblePerson'));
return auth.hasPermi('system:config:showResponsiblePerson');
},
beforeRouteLeave(to, from, next) {
// 在这里编写你离开当前页面前需要执行的操作
// 例如:提示用户是否确认离开
uni.showModal({
title: '提示',
content: '您确定要离开此页面吗?',
success: function(res) {
if (res.confirm) {
// 用户点击确定通过next()方法继续路由跳转
next();
} else if (res.cancel) {
// 用户点击取消,不执行路由跳转
// 不调用next()方法,即不进行路由跳转
}
}
});
},
gethandbookInfo(id) {
this.key = this.classIndex + '_' + this.classIndex2;
gethandbookInfo(id).then(res => {
console.log(this.$store.getters.problemList, this.key);
this.detail = res.data;
this.formTem.indexId = this.detail.children[this.classIndex].children[this.classIndex2].id;
if (this.$store.getters.problemList.hasOwnProperty(this.key)) {
if (this.$store.getters.problemList[this.key].length > 0) {
this.form = this.$store.getters.problemList[this.key];
} else {
this.form = [];
this.form.push({
...this.formTem
});
}
} else {
this.form = [];
this.form.push({
...this.formTem
});
}
})
},
otherInit() {
this.key = 'other';
this.formTem.indexId = '1';
if (this.$store.getters.problemList.hasOwnProperty(this.key)) {
this.form = this.$store.getters.problemList[this.key];
} else {
this.form = [];
this.form.push({
...this.formTem
});
}
},
addProblem() {
this.formTem.img = [];
this.form.push({
...this.formTem
});
},
delProblem(index) {
this.form.splice(index, 1);
},
noProblem(index) {
let flag = 0;
this.form.forEach(item => {
if (item.remark != "" && item.remark != null) {
uni.$u.toast('现场情况不能为空')
flag = 1;
}
})
if (flag == 1) {
uni.showModal({
title: '提示',
content: '是否清除问题?',
success: (res)=> {
if (res.confirm) {
this.$store.commit('SET_PL', {
key: this.key,
value: []
})
uni.navigateBack({
delta: 1
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}else{
this.$store.commit('SET_PL', {
key: this.key,
value: []
})
uni.navigateBack({
delta: 1
})
}
},
submiProblem() {
let flag = 0;
this.form.forEach(item => {
if (item.remark == "" || item.remark == null) {
uni.$u.toast('现场情况不能为空')
flag = 1;
}
})
if (flag == 1) {
return false;
}
this.$store.commit('SET_PL', {
key: this.key,
value: this.form
})
uni.navigateBack({
delta: 1
})
// console.log(this.$refs['uForm'+0]);
// for(let i=0; i<this.form.length;i++){
// this.$refs['uForm'+i].validate().then(res => {
// uni.$u.toast('校验通过')
// }).catch(errors => {
// uni.$u.toast('校验失败')
// })
// }
// console.log(this.form);
},
// 删除图片
deletePic(index, event) {
this.form[index].img.splice(event.index, 1)
},
// 新增图片
async afterRead(index, event) {
console.log(index, event);
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
let lists = [].concat(event.file)
let fileListLen = this.form[index].img.length
lists.map((item) => {
this.form[index].img.push({
...item,
status: 'uploading',
message: '上传中'
})
})
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFilePromise(lists[i].url)
console.log("result>>", result);
let item = this.form[index].img[fileListLen]
this.form[index].img.splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: result
}))
fileListLen++
}
},
uploadFilePromise(url) {
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
url: baseUrl + '/common/upload', // 仅为示例,非真实的接口地址
filePath: url,
name: 'file',
header: {
Authorization: 'Bearer ' + getToken()
},
formData: {
user: 'test'
},
success: (res) => {
if (res.data) {
let imgUrl = JSON.parse(res.data).fileName;
setTimeout(() => {
resolve(imgUrl)
}, 1000)
}
}
});
})
},
}
}
</script>
<style lang="scss" scoped>
.title-box {
margin: 10px;
min-height: 38px;
overflow: auto;
display: flex;
font-family: "微软雅黑 Bold", "微软雅黑 Regular", 微软雅黑, sans-serif;
font-weight: 700;
font-style: normal;
font-size: 19px;
padding: 5px;
}
.content-box {
margin: 10px;
border-width: 1px;
border-style: solid;
border-color: rgb(242, 242, 242);
box-sizing: border-box;
box-shadow: rgba(102, 102, 102, 0.35) 0px 0px 5px;
background: #ffffff;
padding: 5px;
.content-name {
font-family: 'Arial Negreta', 'Arial Normal', 'Arial', sans-serif;
font-weight: 700;
font-style: normal;
font-size: 16px;
color: #000000;
text-align: left;
line-height: 28px;
}
.content-content {
background: inherit;
background-color: rgba(255, 255, 255, 1);
box-sizing: border-box;
border-width: 1px;
border-style: solid;
border-color: rgba(228, 228, 228, 1);
box-shadow: none;
font-size: 14px;
color: #000000;
text-align: left;
line-height: 20px;
padding: 5px;
}
}
.problem-top-box {
display: flex;
align-items: center;
.problem-title {
font-family: "微软雅黑 Bold", "微软雅黑 Regular", 微软雅黑, sans-serif;
font-weight: bold;
font-style: normal;
font-size: 16px;
color: rgb(217, 0, 27);
text-align: left;
line-height: 28px;
}
.jc-one-btns {
display: flex;
align-items: center;
margin-left: 50%;
}
}
.problem-box {
margin: 10px;
border-width: 1px;
border-style: solid;
border-color: rgb(242, 242, 242);
box-sizing: border-box;
box-shadow: rgba(102, 102, 102, 0.35) 0px 0px 5px;
background: #ffffff;
padding: 5px;
.problem-form-box {
position: relative;
}
}
.problem-add-box {
display: flex;
align-items: center;
justify-content: center;
color: #c1c1c1;
font-family: 'Arial Normal', 'Arial', sans-serif;
font-weight: 400;
font-style: normal;
font-size: 13px;
letter-spacing: normal;
margin: 10px;
border-width: 1px;
border-style: solid;
border-color: #ffffff;
box-sizing: border-box;
box-shadow: #ffffff 0px 0px 5px;
background: #ffffff;
border-radius: 8px;
padding: 10px;
}
.delDiv {
display: flex;
justify-content: end;
.delBtn {
margin-top: 8px;
margin-right: 8px;
}
}
::v-deep .u-button__text{
font-size:14px !important;
}
</style>