<template> <el-dialog :title="myTitle" :visible.sync="dialogVisible" :before-close="handleClose" ref="dialog" > <el-row> <el-form :rules="rules" ref="editForm" :model="editForm" label-width="135px" > <el-col> <el-form-item v-show="false" label="管道id" prop="pipeId"> <el-input disabled class="el-input" v-model="editForm.pipeId" ></el-input> </el-form-item> </el-col> <el-col> <el-form-item v-show="false" label="企业id" prop="enterpriseId"> <el-input disabled v-model="editForm.enterpriseId"></el-input> </el-form-item> </el-col> <el-col ><el-form-item label="管道名称" prop="pipeName"> <el-input v-model="editForm.pipeName"></el-input> </el-form-item ></el-col> <el-col :span="11"> <el-form-item label="管道编号" prop="pipeCode"> <el-input v-model="editForm.pipeCode"></el-input> </el-form-item> </el-col> <el-col :span="11"> <el-form-item label="管道长度" prop="pipeLength"> <el-input type="number" min="0" v-model="editForm.pipeLength"> <i slot="suffix" style="color: #000; font-style: normal; margin-right: 10px" >米</i > </el-input> </el-form-item> </el-col> <el-col> <el-form-item label="管道所在地址" prop="pipeAddr"> <el-input v-model="editForm.pipeAddr"></el-input> </el-form-item> </el-col> <el-col> <el-form-item label="经纬度坐标" prop="coordinates"> <el-card class="box-card"> <div v-text="lnglatsArr"></div> <!-- [<span v-for="(item, index) in lnglatsArr" :key="index" class="text item" > {{`[${item[0]},${item[1]}],`}} </span>] --> </el-card> </el-form-item> </el-col> <el-col> <el-form-item label="管道类型" prop="pipeType"> <!-- 下拉 --> <el-radio-group v-model="editForm.pipeType"> <el-radio label="1">地埋管线</el-radio> <el-radio label="2">地表管线</el-radio> </el-radio-group> </el-form-item> </el-col> <el-col> <el-form-item label="管道压力" prop="pipePressure"> <!-- select --> <el-radio-group v-model="editForm.pipePressure"> <!-- 1低压,2中压,3次高压,4高压 --> <el-radio label="1">低压</el-radio> <el-radio label="2">中压</el-radio> <el-radio label="3">次高压</el-radio> <el-radio label="4">高压</el-radio> </el-radio-group> </el-form-item> </el-col> <el-col> <el-form-item label="上传图片" prop="iconUrl"> <MyFileUpload listType="picture-card" @resFun="fileFinshed" @remove="listRemove" :fileArr="fileArr" /> <el-input v-show="false" disabled v-model="editForm.iconUrl" ></el-input> </el-form-item> <!-- <el-form-item v-show="false" label="设备图片路径" prop="iconUrl"> --> <!-- </el-form-item> --> </el-col> <!-- <el-col> </el-col> --> <el-col> <el-form-item label="安装日期" prop="installationTime"> <el-col :span="11"> <el-date-picker type="date" placeholder="选择日期" style="width: 100%" v-model="editForm.installationTime" ></el-date-picker> </el-col> </el-form-item> </el-col> <!-- <el-col> <el-form-item label="最后巡检日期" prop="inspectionTime"> <el-col :span="11"> <el-date-picker type="date" placeholder="选择日期" style="width: 100%" v-model="editForm.inspectionTime" ></el-date-picker> </el-col> </el-form-item> </el-col> --> <el-col> <el-form-item label="备注信息" prop="remarks"> <el-input v-model="editForm.remarks" type="textarea"></el-input> </el-form-item> </el-col> </el-form> </el-row> <span slot="footer" class="dialog-footer"> <el-button :loading="okLoading" type="primary" @click="ok" >确 定</el-button > <el-button @click="handleCloseBtn">取 消</el-button> </span> </el-dialog> </template> <script> import MyFileUpload from "@/components/MyFileUpload"; import { addPipe, updatePipe } from "@/api/device/pipe.js"; import { getString } from "@/utils/gassafety.js"; import moment from "moment"; export default { props: { lineData: { type: Object, // default:{} }, // 经纬度路径 lnglatsArr: { type: Array, }, // 管道长度 pipeLength: { type: Number }, title: { type: String }, //回调函数 lineOkCallBack: { type: Function }, gaodeMap: { type: Object }, target: { type: Object }, //message: { type: String }, //duration: { type: Number, default: 2000 } }, components: { MyFileUpload, }, data() { return { // isShow: false, okLoading: false, fileArr: [], editForm: { pipeName: "", pipeType: "1", pipePressure: "1", iconUrl: "", }, dialogVisible: false, rules: { pipeName: [ { required: true, message: "请输入管道名称", trigger: "blur" }, // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }, ], pipeCode: [ { required: true, message: "请输入管道编号", trigger: "blur" }, ], pipeLength: [ { required: true, message: "请输入管道长度", trigger: "blur" }, ], pipeAddr: [ { required: true, message: "请输入管道所在地址", trigger: "blur" }, ], pipeType: [ { required: true, message: "请选择管道类型", trigger: "blur" }, ], pipePressure: [ { required: true, message: "请选择管道压力", trigger: "blur" }, ], iconUrl: [{ required: true, message: "请上传图片", trigger: "change" }], installationTime: [ { // type: "date", required: true, message: "请选择日期", trigger: "change", }, ], }, }; }, computed: { myTitle() { if (this.editForm.pipeId) { return `修改管道信息`; } else { return `新增管道信息`; } }, }, created() { console.log("lineData", this.lineData, this.lnglatsArr, this.pipeLength); if (this.lineData?.pipeId) { this.editForm = { ...this.lineData }; } else { // 如果是新建的里面天蝎过东西就存档 console.log("内部lineDate", this.target.getExtData()); const { lineData } = this.target.getExtData(); console.log(lineData); if (lineData) { this.editForm = { ...lineData }; } } this.editForm.coordinates = getString(this.lnglatsArr); // 如果有图片路径就赋显,如果没有就啥也没有 this.fileArr = this.editForm?.iconUrl ? [{ url: this.editForm.iconUrl }] : []; }, methods: { mouseup() { console.log("组件mouseup"); }, ok() { this.$refs.editForm.validate((valid) => { if (valid) { this.okLoading = true; const data = { ...this.editForm }; data.installationTime = moment(this.editForm.installationTime).format( "YYYY-MM-DD HH:mm:ss" ); console.log("data", data); console.log(this.editForm.pipeId); this.requeset(this.editForm.pipeId, data) .then((res) => { // 改变this指向,传回去target ,传回去data if (res.code == 200) { this.dialogVisible = false; data.pipeId = data.pipeId ? data.pipeId : res.data; this.lineOkCallBack.call( this.gaodeMap, this.target, data, () => { const arr = this.gaodeMap.polyLines.map((item) => { return item.getExtData().lineData; }); console.log("arr===================", arr); this.gaodeMap.view.pipeClassify(arr); this.gaodeMap.view.pipeList(); } ); if (!this.editForm.pipeId) { this.gaodeMap.newLineObj = null; this.gaodeMap.createNewLine(); } this.$message({ type: "success", offset: 100, // center:true, message: `${ this.editForm.pipeId ? "修改管道成功" : "添加管道成功" }`, }); } }) .catch(() => { this.okLoading = false; }); } }); // console.log(this.gaodeMap,this.target) }, async requeset(id, data) { id ? console.log("修改") : console.log("新增"); return id ? updatePipe(data) : addPipe(data); }, show() { //this.isShow = true; this.dialogVisible = true; /*setTimeout(() => { this.hide() }, this.duration)*/ }, hide() { this.isShow = false; this.remove(); }, handleClose(done) { let options = this.target.getExtData(); options.lineData = { ...this.editForm }; this.target.setExtData(options); // 把值带出去 if (done) { done(); } // this.$confirm("确认关闭?") // .then((_) => { // done(); // }) // .catch((_) => {}); }, handleCloseBtn() { this.handleClose(); this.dialogVisible = false; }, // 图片上传成功 fileFinshed(e) { this.editForm.iconUrl = e.url; console.log(this.editForm.iconUrl); }, // 图片列表移除 listRemove(e) { this.editForm.iconUrl = ""; this.fileArr = []; }, }, }; </script> <style lang="scss"> .notice { background: white; position: fixed; top: 102px; right: 0; left: 0; margin: auto; width: 80%; height: 80%; border: solid 1px; } .el-input { // width: 200px; } </style>