You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

288 lines
7.0 KiB

<template>
<view class="problem-box">
<view class="detail-item" @click="handleClickShowSelect">
<uni-forms-item label="隐患问题" label-position="top" label-width="100px" style="display: flex;align-items: center" />
<u-input
placeholder="请输入"
border="none"
readonly
v-model="text"
type="textarea"
/>
</view>
<view class="detail-item">
<uni-forms-item label="隐患描述" label-position="top" label-width="200px"/>
<u-textarea
placeholder="请输入"
border="none"
v-model="formData.hdDesc"
/>
</view>
<view class="detail-item">
<uni-forms-item label="隐患图片" label-position="top" label-width="200px" />
<u-upload
:fileList="fileList"
@afterRead="(e) => afterRead(e, 'fileList')"
@delete="(e) => deletePic(e, 'fileList')"
name="1"
:maxCount="1"
></u-upload>
</view>
<view class="detail-item">
<uni-forms-item label="需采集补充信息" label-position="top" label-width="200px"/>
<u-textarea
placeholder="请输入"
border="none"
v-model="formData.hdInfo"
/>
</view>
<u-popup :show="showProblemTreeSelect" @close="showProblemTreeSelect = false">
<view class="custom-pop-head">
<view class="left" @click="showProblemTreeSelect = false">取消</view>
<view class="title">选择隐患</view>
<view class="right" @click="showProblemTreeSelectHandle">确认</view>
</view>
<problem-tree-item @select="handleSelectTree" />
<view class="blank" />
</u-popup>
</view>
</template>
<script>
import ProblemTreeItem from "./problem-tree-item.vue";
export default {
// 组件
components: {ProblemTreeItem},
props: {
id: {
type: Number,
default: 0
}
},
data() {
return {
// 公用的js
text: '',
$: this.$,
showProblemTreeSelect: false,
originList: [],
problemTreeSelect: null,
problemTreeSelectList: [],
problemTreeSelectConfirmList: [],
fileList: [],
formData: {
bigCategory: '',
smallCategory: '',
hdTerm: '',
hdPic: '',
hdDesc: '',
hdInfo: '',
},
tempList: []
}
},
// 页面加载
onLoad(e) {
// this.getData()
},
mounted(){
if (this.props.id) {
this.getData()
}
},
// 页面显示
onShow() {
},
// 计算属性
computed: {},
// 方法
methods: {
changeEmit(){
this.$emit('change', this.formData)
},
// 删除图片
deletePic(event, key) {
this[key].splice(event.index, 1)
this.formData.hdPic = this[key].filter(item => item.status === 'success').map(item => item.url).toString()
this.changeEmit()
},
//获取随机id
uuid(len, binary) {
len = !len ? 36 : len;
binary = !binary ? 16 : binary;
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * binary | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(binary);
}).substring(0, len)
},
// 新增图片
async afterRead(event, key) {
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
const id = this.uuid()
this[key].push({
id,
...event.file,
status: 'uploading',
message: '上传中'
})
const result = await this.uploadFilePromise(this[key][0].url)
const resultInfo = JSON.parse(result)
const index = this[key].findIndex(v => v.id === id)
if (resultInfo.code == 200) {
this[key].splice(index, 1, Object.assign(this[key][index], {
status: 'success',
message: '',
result: resultInfo,
url: resultInfo.result
}))
} else {
this.$.toast('上传失败')
this[key].splice(index, 1, Object.assign(this[key][index], {
status: 'error',
message: '失败',
}))
}
this.formData.hdPic = this[key].filter(item => item.status === 'success').map(item => item.url).toString()
this.changeEmit()
},
uploadFilePromise(url) {
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
url: this.$.baseUrl + '/hiddenDanger/ftp/uploadFileToFtp', // 仅为示例,非真实的接口地址
filePath: url,
name: 'file',
success: (res) => {
resolve(res.data)
}
});
})
},
getData(){
this.$request.globalRequest('/hiddenDanger/highDanger/getDangerItems', {}, 'GET').then(res => {
if(res.code == 200){
this.originList = res.result
this.problemTreeSelectList = res.result
}
})
},
// 跳转页面
skipPage(even){
this.$.open(even)
},
handleSelectTree(list) {
this.tempList = list
},
showProblemTreeSelectHandle(){
console.log(this.tempList)
if (this.tempList.length < 3) {
this.$.toast('请选择')
return false
}
this.formData.bigCategory = this.tempList[0].id;
this.formData.smallCategory = this.tempList[1].id;
this.formData.hdTerm = this.tempList[2].id;
this.text = this.tempList.map(item => item.itemname).join('/');
this.showProblemTreeSelect = false
this.changeEmit()
},
handleClickShowSelect() {
this.showProblemTreeSelect = true
}
},
onReady() {
},
// 页面卸载
onUnload() {
},
// 触发下拉刷新
onPullDownRefresh() {
// 延迟关闭刷新动画
setTimeout(() => {
uni.stopPullDownRefresh();
}, 1500);
},
// 页面上拉触底事件的处理函数
onReachBottom() {
},
}
</script>
<style>
page {
background:#FFFFFF;
}
</style>
<style lang="scss" scoped>
.investigation-item {
margin:0 auto 20rpx;
width: 90%;
border-radius: 8rpx;
padding: 20rpx;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
overflow: hidden;
&.active {
background: #DFEBF8;
}
}
.custom-pop-head {
width: 100%;
padding: 20rpx;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #E6E6E6;
margin-bottom: 20rpx;
.left {
color: #666666;
}
.title {
font-size: 16px;
}
.right {
color: #2663BF;
}
}
.breadcrumb {
width: 100%;
padding: 20rpx;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
overflow-x: auto;
flex-wrap: nowrap;
}
.detail-item {
width: 100%;
background: #F0F3F7;
padding: 20rpx 30rpx;
border-radius: 8rpx;
box-sizing: border-box;
/deep/ .uni-forms-item__content {
justify-content: flex-end;
text-align: right;
display: flex;
}
/deep/ .uni-forms-item {
margin-bottom: 0;
}
/deep/ .uni-forms-item__label {
font-size: 16px;
}
}
.problem-box {
width: 100%;
padding: 20rpx;
box-sizing: border-box;
.detail-item {
margin-bottom: 20rpx;
}
}
</style>