From b330e57051e54789eb83d10dc58c4d9d10c608e1 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期三, 17 九月 2025 09:55:19 +0800
Subject: [PATCH] 2025.9.17 数据产品模块(待完成)

---
 src/views/fysp/task/MonitorObjEdit.vue |  230 ++++++++++++++++-----------------------------------------
 1 files changed, 64 insertions(+), 166 deletions(-)

diff --git a/src/views/fysp/task/MonitorObjEdit.vue b/src/views/fysp/task/MonitorObjEdit.vue
index 1cd37c6..219bc98 100644
--- a/src/views/fysp/task/MonitorObjEdit.vue
+++ b/src/views/fysp/task/MonitorObjEdit.vue
@@ -1,175 +1,73 @@
 <template>
-  <el-page-header @back="$router.back()" class="page-header">
-    <template #content>
-      <span> 鎬讳换鍔$紪杈� </span>
-    </template>
-  </el-page-header>
-  <el-divider />
-  <el-row gutter="20">
-    <el-col :span="16">
-      <div>
-        <el-text>宸查�夊満鏅�</el-text>
-      </div>
-      <el-divider />
-      <CompMonitorObj :data="curMonitorObjList" @tab-change="changeSceneType" :showDelete="true">
-        <!-- <template #default="{ item }">
-          <el-button size="small" type="danger" @click="deleteMov(item)">绉婚櫎</el-button>
-        </template> -->
-      </CompMonitorObj>
-    </el-col>
-    <el-col :span="8">
-      <div>
-        <el-text>鍙�夊満鏅�</el-text>
-      </div>
-      <el-divider />
-      <FYInfoSearch
-        label=""
-        placeholder="璇疯緭鍏ュ満鏅悕绉板叧閿瓧"
-        :data="showSceneList"
-        :on-search="searchScene"
-        :total="total"
-        scroll-height="70vh"
-        :page-show="false"
-      >
-        <template #default="{ row, click }">
-          <ItemScene :item="row">
-            <el-button-group>
-              <el-button size="small" type="primary" @click="insertDialog = true">鎻掑叆</el-button>
-              <el-button size="small" type="primary" @click="addDialog = true">鏂板</el-button>
-            </el-button-group>
-          </ItemScene>
+  <!-- <el-affix :offset="60" target=".el-main"> -->
+    <div class="page-header">
+      <el-page-header @back="goBack">
+        <template #content>
+          <span> 鎬讳换鍔$紪杈� </span>
         </template>
-      </FYInfoSearch>
-    </el-col>
-  </el-row>
-
-  <el-dialog v-model="insertDialog" title="鎻掑叆鍦烘櫙鑷崇┖浣欑紪鍙�" width="500">
-    <div>浠ヤ笅涓哄彲閫夌殑绌轰綑缂栧彿</div>
-    <el-radio-group v-model="selectedIndex" size="default">
-      <el-radio-button v-for="item in valibleIndex" :key="item" :label="item" :value="item" />
-    </el-radio-group>
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="insertDialog = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="insertDialog = false"> 纭 </el-button>
-      </div>
-    </template>
-  </el-dialog>
-  <el-dialog v-model="addDialog" title="鏂板鍦烘櫙缂栧彿椤哄欢" width="500">
-    <div>椤哄欢缂栧彿涓�:{{ lastIndex }}</div>
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="addDialog = false">鍙栨秷</el-button>
-        <el-button type="primary" @click="addDialog = false"> 纭 </el-button>
-      </div>
-    </template>
-  </el-dialog>
+        <template #extra>
+          <div>
+            <el-button
+              type="primary"
+              :disabled="!isEdit"
+              :loading="saveLoading"
+              @click="handleSaveClick"
+              >淇濆瓨淇敼</el-button
+            >
+          </div>
+        </template>
+      </el-page-header>
+      <el-divider />
+    </div>
+  <!-- </el-affix> -->
+  <CompMonitorObjEdit
+    ref="objEditRef"
+    :task="task"
+    :objList="curMonitorObjList"
+    @upload-success="goBack"
+  ></CompMonitorObjEdit>
 </template>
 
-<script>
-import CompMonitorObj from './components/CompMonitorObj.vue';
-import svUserApi from '@/api/fysp/userApi';
-import sceneApi from '@/api/fysp/sceneApi';
+<script setup>
+import { ref, computed, onMounted } from 'vue';
+import CompMonitorObjEdit from './components/CompMonitorObjEdit.vue';
+import { useRoute, useRouter } from 'vue-router';
 
-export default {
-  components: { CompMonitorObj },
-  props: {},
-  data() {
-    return {
-      // 鐩戠鍦烘櫙
-      curMonitorObjList: [],
-      // 琛屾斂鍖哄垝
-      area: {},
-      // 鎵�鏈夊満鏅�
-      sceneList: [],
-      total: 0,
+const route = useRoute();
+const router = useRouter();
 
-      // 褰撳墠绛涢�夌殑鍦烘櫙绫诲瀷
-      curSceneType: undefined,
+const objEditRef = ref(null);
+const curMonitorObjList = ref([]);
+const task = ref({});
 
-      insertDialog: false,
-      selectedIndex: undefined,
-      addDialog: false
-    };
-  },
-  computed: {
-    // 褰撳墠鍦烘櫙绫诲瀷涓嬬殑灞曠ず鍦烘櫙
-    showSceneList() {
-      return this.sceneList.filter((v) => {
-        const index = this.curMonitorObjList.findIndex((o) => {
-          return o.sguid == v.guid;
-        });
-        return index == -1 && v.type == this.curSceneType;
-      });
-    },
-    showMonitorObjList() {
-      return this.curMonitorObjList.filter((v) => {
-        return v.sceneType == this.curSceneType;
-      });
-    },
-    // 褰撳墠鍦烘櫙绫诲瀷涓嬬殑鍙彃鍏ョ紪鍙�
-    valibleIndex() {
-      // 鍘熷垪琛ㄥ凡缁忔寜鐓х紪鍙烽『搴忔帓鍒�
-      let index = 1;
-      const indexList = [];
-      this.showMonitorObjList.forEach((l) => {
-        while (l.displayid > index) {
-          indexList.push(index);
-          index++;
-        }
-        index++;
-      });
-      return indexList;
-    },
-    lastIndex() {
-      const len = this.showMonitorObjList.length;
-      if (len > 0) {
-        return this.showMonitorObjList[len - 1].displayid + 1;
-      } else {
-        return undefined;
-      }
-    }
-  },
-  methods: {
-    // 鏌ヨ
-    searchScene({ text, page, pageSize }) {
-      this.area.sceneName = text;
-      return sceneApi.searchScene(this.area, 1, 10000).then((res) => {
-        if (res.success) {
-          // 鏌ヨ缁撴灉
-          this.sceneList = res.data;
-          // 鎬绘暟鎹噺
-          this.total = res.head.totalCount;
-        }
-      });
-    },
-    changeSceneType(tabName) {
-      this.curSceneType = tabName;
-    },
-    deleteMov(item) {
-    },
-    insertMov() {},
-    addMov() {}
-  },
-  mounted() {
-    // 鐩戠鍦烘櫙淇℃伅
-    this.curMonitorObjList = JSON.parse(decodeURIComponent(this.$route.query.data));
-    // 鏍规嵁鎬讳换鍔¤幏鍙栬鏀垮尯鍒掍俊鎭�
-    const task = JSON.parse(decodeURIComponent(this.$route.query.task));
-    this.area = {
-      provincecode: task.provincecode,
-      provincename: task.provincename,
-      citycode: task.citycode,
-      cityname: task.cityname,
-      districtcode: task.districtcode,
-      districtname: task.districtname,
-      towncode: task.towncode,
-      townname: task.townname,
-      online: true
-    };
-    this.searchScene({ text: '' });
-  }
-};
+const isEdit = computed(() => {
+  return objEditRef.value ? objEditRef.value.isEdit : false;
+});
+
+function handleSaveClick() {
+  objEditRef.value.saveEdit();
+}
+
+function goBack() {
+  router.back();
+}
+
+onMounted(() => {
+  // 鐩戠鍦烘櫙淇℃伅
+  // curMonitorObjList.value = JSON.parse(decodeURIComponent(route.query.data));
+  // 鎬讳换鍔�
+  task.value = JSON.parse(decodeURIComponent(route.query.task));
+  // 鐩戠鍦烘櫙淇℃伅
+  curMonitorObjList.value = JSON.parse(
+    decodeURIComponent(route.query.data)
+  );
+});
 </script>
 
-<style scoped></style>
+<style scoped>
+.page-header {
+  background-color: white;
+  padding: 10px 0;
+  /* border-bottom: 1px solid var(--el-color-info-light-7); */
+}
+</style>

--
Gitblit v1.9.3