From a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 06 六月 2025 19:19:34 +0800
Subject: [PATCH] 开发更新

---
 admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue |  196 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 147 insertions(+), 49 deletions(-)

diff --git a/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolPointWindow.vue
index cc134ed..2f22cd9 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="宸℃鐐圭紪鐮�"  required >
+        <el-input v-model="form.code" disabled readonly 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" placeholder="绀轰緥锛�117.297461,31.849234" 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="content">
+        <el-input type="textarea" :rows="4" v-model="form.content" placeholder="璇疯緭鍏�" />
       </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-      </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.fileFullUrl, 'imgurl': form.fileUrl }"
+          :uploadData="{ folder: 'ywPatrol/' }" @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false"
+          @uploadBegin="isUploading = true" />
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -49,38 +41,144 @@
 <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'
+import { fetchList as getDeiceList } from '@/api/Inspection/device'
 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: '璇疯緭鍏�' }],
+      },
+      isUploading: false,
     }
   },
-  created () {
+  created() {
     this.config({
       api: '/Inspection/ywPatrolPoint',
       'field.id': 'id'
     })
+  },
+  methods: {
+    open(title, row) {
+      this.title = title
+      this.visible = true
+      this.initData()
+      if (row == null) {
+        this.$nextTick(() => {
+          this.form = {
+            name: '',
+            // code: '',
+            content: '',
+            imgurl: '',
+            areaId: 0,
+            areaIds: [],
+            addr: ''
+          }
+          this.$refs.form.resetFields()
+
+          this.form[this.configData['field.id']] = null
+        })
+        fetchList({
+          model: { type: 4 },
+          capacity: 1000,
+          page: 1,
+        }).then(res => {
+          this.cateList = res.records || []
+        })
+        return
+      }
+      if (row && row.id) {
+        this.getDetail(row)
+      }
+    },
+    getDetail(row) {
+      detail(row.id).then(res => {
+        this.form = { ...res }
+        if (res.longitude && res.latitude) {
+          this.$set(this.form, 'lnglat', res.longitude + ',' + res.latitude)
+        }
+        fetchList({
+          model: { type: 4 },
+          capacity: 1000,
+          page: 1,
+        }).then(ress => {
+          this.cateList = ress.records || []
+          const areaId = res.areaId
+          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])
+
+                  }
+                })
+              }
+            })
+          }
+        })
+
+      })
+    },
+    initData() {
+      getDeiceList({
+        model: {},
+        capacity: 1000,
+        page: 1,
+      }).then(res => {
+        this.deviceList = res.records
+      })
+
+    },
+    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.$set(this.form, 'fileUrl', file.imgurl)
+      this.$set(this.form, 'fileFullUrl', file.imgurlfull)
+    },
   }
 }
 </script>
+<style lang="scss" scoped>
+.mapbox {
+  width: 100%;
+  height: 400px;
+  margin-bottom: 20px;
+  float: left;
+}
+</style>

--
Gitblit v1.9.3