| | |
| | | <el-form ref="arriveForm" label-width="160px" :model="arrive" :rules="arriveRules" autoComplete="on"> |
| | | <!-- 到达时间 --> |
| | | <el-form-item label="到达时间:" prop="arrivalTime"> |
| | | <el-date-picker v-model="arrive.arrivalTime" type="datetime" placeholder="选择到达时间"> |
| | | <el-date-picker v-model="arrive.arrivalTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" |
| | | placeholder="选择到达时间"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <!-- 到达地址 --> |
| | |
| | | </el-form-item> |
| | | <!-- 现场情况说明 --> |
| | | <el-form-item label="现场情况说明:" prop="situationExplain"> |
| | | <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4}" maxlength="200" show-word-limit |
| | | <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" maxlength="200" show-word-limit |
| | | v-model="arrive.situationExplain" placeholder="请输入情况说明,限制200字以内"></el-input> |
| | | </el-form-item> |
| | | <!-- 信访回复说明 --> |
| | | <el-form-item label="信访回复说明:" prop="replyExplain"> |
| | | <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4}" maxlength="200" show-word-limit |
| | | <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" maxlength="200" show-word-limit |
| | | v-model="arrive.replyExplain" placeholder="请输入回访说明,限制200字以内"></el-input> |
| | | </el-form-item> |
| | | <!-- 现场情况照片 --> |
| | | <el-form-item label="现场情况照片:" prop="situationPic"> |
| | | <div class="upImg"> |
| | | <div class="img-list" v-if="arrive.situationPic.length!==0"> |
| | | <div class="img" v-for="(item,index) in arrive.situationPic" :key="index"> |
| | | <img :src="item" alt=""> |
| | | <i class="el-icon-close myicon" @click="handleRemove(index)"></i> |
| | | </div> |
| | | <MyUpload :picture-list="arrive.situationPic" @setPictureUrl="setPicUrl" |
| | | @delPictureUrl="delPicUrl"></MyUpload> |
| | | <div class="tip"> |
| | | {{ arrive.situationPic.length }} / 4 |
| | | </div> |
| | | <div class="upload" v-if="arrive.situationPic.length<4"> |
| | | <el-upload :file-list="fileList" class="upload-demo" |
| | | action="/sccg/file/medias" multiple :show-file-list="false" |
| | | :limit="50" :on-success="handleSuccess" list-type="picture" :headers="getToken()"> |
| | | <i class="el-icon-plus"></i> |
| | | </el-upload> |
| | | </div> |
| | | <div class="tip">{{arrive.situationPic.length}} / 4</div> |
| | | </div> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import MyUpload from "@/components/myUpload" |
| | | import { deepClone } from "@/utils/helper"; |
| | | import { FILE_ORIGINAL_PATH } from "@/utils"; |
| | | export default { |
| | | components: { |
| | | MyUpload |
| | | }, |
| | | props: { |
| | | arriveData: { |
| | | type: Object, |
| | | default: () => null |
| | | } |
| | | }, |
| | | data() { |
| | | const checkTime = (rule, value, callback) => { |
| | | if (value) { |
| | |
| | | callback() |
| | | } else { |
| | | callback(new Error('现场情况说明不能为空')); |
| | | } |
| | | } |
| | | const checkReplay = (rule, value, callback) => { |
| | | if (value) { |
| | | callback() |
| | | } else { |
| | | callback(new Error('信访回复说明不能为空')); |
| | | } |
| | | } |
| | | const checkSitPic = (rule, value, callback) => { |
| | |
| | | situationExplain: [ |
| | | { trigger: 'blur', validator: checkSit } |
| | | ], |
| | | replyExplain: [ |
| | | { trigger: 'blur', validator: checkReplay } |
| | | ], |
| | | situationPic: [ |
| | | { trigger: 'blur', validator: checkSitPic } |
| | | ], |
| | |
| | | fileList: [], |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.arriveData) { |
| | | this.arrive = deepClone(this.arriveData); |
| | | this.arrive.situationPic = this.arriveData.situationPic.split(','); |
| | | this.arrive.situationPic.forEach(item => { |
| | | item = FILE_ORIGINAL_PATH + item |
| | | }); |
| | | |
| | | } |
| | | }, |
| | | methods: { |
| | | handleSuccess(res, file, filelist) { |
| | | const baseUrl = 'http://140.143.152.226:8410/'; |
| | | console.log(res); |
| | | console.log(this.fileList); |
| | | const baseUrl = ''; |
| | | if (this.arrive.situationPic.length < 4) { |
| | | this.arrive.situationPic.push(baseUrl + res.data.url1) |
| | | } |
| | |
| | | }, |
| | | // 删除图片 |
| | | handleRemove(index) { |
| | | this.arrive.situationPic.splice(index,1); |
| | | } |
| | | }, |
| | | watch: { |
| | | 'arrive.situationPic.length': { |
| | | handler(newLen, oldLen) { |
| | | if (newLen !== 0) { |
| | | this.$refs.arriveForm.validateField('situationPic'); |
| | | } |
| | | }, |
| | | deep: true, |
| | | this.arrive.situationPic.splice(index, 1); |
| | | }, |
| | | // 设置上传成功之后的图片地址 |
| | | setPicUrl({ url }) { |
| | | const baseUrl = ''; |
| | | if (this.arrive.situationPic.length < 4) { |
| | | this.arrive.situationPic.push(url) |
| | | } |
| | | }, |
| | | //删除图片 |
| | | delPicUrl({ url }) { |
| | | const baseUrl = ''; |
| | | this.arrive.situationPic.splice(this.arrive.situationPic.indexOf(baseUrl + url), 1); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | .upImg { |
| | | display: flex; |
| | | overflow: auto; |
| | | |
| | | .tip { |
| | | position: absolute; |
| | |
| | | height: 60px; |
| | | position: relative; |
| | | display: flex; |
| | | |
| | | img { |
| | | width: 60px; |
| | | height: 60px; |
| | | margin-right: 10px; |
| | | } |
| | | .img{ |
| | | |
| | | .img { |
| | | height: 60px; |
| | | position: relative; |
| | | } |
| | | |
| | | .myicon { |
| | | position: absolute; |
| | | top: 0px; |
| | |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | ::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | // ::v-deep .el-textarea__inner { |
| | | // // background-color: #09152f; |
| | | // border: 1px solid #17324c; |
| | | // } |
| | | |
| | | ::v-deep .el-input__count { |
| | | background-color: #09152f; |
| | | } |
| | | // ::v-deep .el-input__count { |
| | | // // background-color: #09152f; |
| | | // } |
| | | |
| | | ::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | </style> |
| | | // ::v-deep .el-form-item__label { |
| | | // color: #4b9bb7; |
| | | // }</style> |