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