From f1864f6d2d85b49fc901b22e9f6759a5d0fb360b Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 26 十一月 2024 09:33:03 +0800
Subject: [PATCH] 开发更新

---
 admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue |  164 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 116 insertions(+), 48 deletions(-)

diff --git a/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
index cc134ed..00acdd2 100644
--- a/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
@@ -1,46 +1,38 @@
 <template>
-  <GlobalWindow
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-  >
+  <GlobalWindow :title="title" :visible.sync="visible" width="620px" :confirm-working="isWorking" @confirm="confirm">
     <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      <el-form-item label="宸℃鐐圭紪鐮�" prop="code">
+        <el-input v-model="form.code" placeholder="璇疯緭鍏ュ悕绉�" v-trim />
       </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      <el-form-item label="宸℃鐐瑰悕绉�" prop="name">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ贰妫�鐐瑰悕绉�" v-trim />
       </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      <el-form-item label="宸℃璁惧">
+        <el-select v-model="form.deviceId">
+          <el-option v-for="item in deviceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      <el-form-item label="鎵�灞炲尯鍩�" prop="areaId">
+        <el-cascader v-model="form.areaIds" @change="changeSel" placeholder="璇烽�夋嫨宸℃鍖哄煙" clearable :options="cateList"
+          :props="{
+            label: 'name',
+            value: 'id',
+            children: 'childCategoryList',
+          }"></el-cascader>
       </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
+      <el-form-item label="缁忕含搴�">
+        <el-input v-model="form.lnglat" disabled v-trim />
       </el-form-item>
-      <el-form-item label="鍚嶇О" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" v-trim/>
+      <el-form-item>
+        <mapDrag class="mapbox" @center="getCenter" />
       </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
+      <el-form-item label="宸℃鍐呭" prop="content">
+        <el-input type="textarea" :rows="4" v-model="form.content" placeholder="璇疯緭鍏�" />
       </el-form-item>
-      <el-form-item label="鐘舵�� 0鍚敤 1绂佺敤" prop="status">
-        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" v-trim/>
-      </el-form-item>
-      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
-        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍥炬爣" prop="imgurl">
-        <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍖哄煙缂栫爜锛堝叧鑱攃ategory)" prop="areaId">
-        <el-input v-model="form.areaId" placeholder="璇疯緭鍏ュ尯鍩熺紪鐮侊紙鍏宠仈category)" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍦板潃" prop="addr">
-        <el-input v-model="form.addr" placeholder="璇疯緭鍏ュ湴鍧�" v-trim/>
+      <el-form-item label="涓婁紶鍥剧墖" prop="imgurl">
+        <UploadAvatarImage :file="{ 'imgurlfull': form.imgurlfull, 'imgurl': form.imgurl }"
+          :uploadData="{ folder: 'ywPatrol/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
+          @uploadBegin="isUploading = true" />
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -49,38 +41,114 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadAvatarImage from '@/components/common/UploadAvatarImage'
+import mapDrag from '@/components/common/map/mapDrag.vue'
+import { fetchList } from '@/api/business/category'
+import { detail } from '@/api/Inspection/ywPatrolPoint'
 export default {
   name: 'OperaYwPatrolPointWindow',
   extends: BaseOpera,
-  components: { GlobalWindow },
-  data () {
+  components: { GlobalWindow, UploadAvatarImage, mapDrag },
+  data() {
     return {
       // 琛ㄥ崟鏁版嵁
       form: {
-        id: null,
-        creator: '',
-        createDate: '',
-        editor: '',
-        editDate: '',
-        isdeleted: '',
         name: '',
-        remark: '',
-        status: '',
-        sortnum: '',
+        code: '',
+        content: '',
         imgurl: '',
-        areaId: '',
+        areaId: 0,
+        areaIds: [],
         addr: ''
       },
+      deviceList: [],
+      cateList: [],
       // 楠岃瘉瑙勫垯
       rules: {
-      }
+        name: [{ required: true, message: '璇疯緭鍏�' }],
+        code: [{ required: true, message: '璇疯緭鍏�' }],
+      },
+      isUploading: false,
     }
   },
-  created () {
+  created() {
     this.config({
       api: '/Inspection/ywPatrolPoint',
       'field.id': 'id'
     })
+  },
+  methods: {
+    open(title, row) {
+      this.title = title
+      this.visible = true
+      if (row && row.id) {
+        this.getDetail(row)
+      }
+    },
+    getDetail(row) {
+      detail(row.id).then(res => {
+        this.form = { ...res } 
+        // this.$set(this.form, 'areaId', res.areaId)
+        // console.log('res', res)
+        // console.log('res', this.form)
+        this.initData(res.areaId)
+      })
+    },
+    initData(areaId) {
+      fetchList({
+        model: { type: 4 },
+        capacity: 1000,
+        page: 1,
+      }).then(res => {
+        this.cateList = res.records || []
+        console.log('this.form.areaId', this.form)
+
+        if (areaId) {
+          this.cateList.forEach(item => {
+            if (item.childCategoryList) {
+              item.childCategoryList.forEach(item2 => {
+                if (item2.id == areaId) {
+                  this.$set(this.form, 'areaIds', [item.id, item2.id])
+                  console.log('areaIds', this.form)
+
+                }
+              })
+            }
+          })
+        }
+      })
+
+    },
+    getCenter(data) {
+      // console.log(data)
+      // this.$set(this.form, 'postion', data.address)
+      if(data.lng){
+        this.$set(this.form, 'lnglat', data.lng + ',' + data.lat)
+      }else{
+        this.$set(this.form, 'lnglat', '')
+      }
+      this.$set(this.form, 'longitude', data.lng)
+      this.$set(this.form, 'latitude', data.lat)
+    },
+    changeSel(e) {
+      if (e && e.length == 2) {
+        this.$set(this.form, 'areaId', e[1])
+      } else {
+        this.$set(this.form, 'areaId', '')
+      }
+    },
+    uploadAvatarSuccess(file) {
+      this.form.imgurl = file.imgurl
+      this.form.imgurlfull = file.imgurlfull
+    },
   }
 }
 </script>
+<style lang="scss" scoped>
+.mapbox {
+  width: 100%;
+  height: 400px;
+  margin-bottom: 20px;
+  float: left;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3