src/App.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/additional-jingan/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/fysp/deviceApi.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components.d.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/search-option/base/FYOptionText.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/fysp/support/JingAnSupport.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/fysp/support/NewConstruction.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/fysp/support/NewDevice.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/fysp/support/components/DeviceMatch.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/fysp/support/components/ItemConstruction.vue | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/fysp/support/components/ItemDevice.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/fysp/support/components/ItemScene.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/App.vue
@@ -82,7 +82,7 @@ } .el-main__content { padding: var(--el-main-padding); padding: var(--el-main-padding) calc(var(--el-main-padding) / 2); max-height: calc(100vh - 60px - var(--el-main-padding) * 2); /* background-color: aqua; */ /* overflow: auto; */ src/api/additional-jingan/index.js
@@ -2,7 +2,8 @@ import md5 from 'md5'; import { ElMessage } from 'element-plus'; let IP = 'http://101.230.224.80:8082/'; // let IP = 'http://101.230.224.80:8082/'; let IP = 'http://47.100.191.150:8080/jingan/'; const $jingan = axios.create({ baseURL: IP, src/api/fysp/deviceApi.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ import { $fysp } from '../index'; export default { fetchDevice(sceneId) { return $fysp .get(`device`, { params: { sceneId: sceneId } }) .then((res) => res.data); } }; src/api/index.js
@@ -1,7 +1,7 @@ import axios from 'axios'; import { ElMessage } from 'element-plus'; const debug = false; const debug = true; let ip1 = 'http://47.100.191.150:9005/'; let ip1_file = 'http://47.100.191.150:9005/'; src/components.d.ts
@@ -52,6 +52,7 @@ ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElRow: typeof import('element-plus/es')['ElRow'] ElScorllbar: typeof import('element-plus/es')['ElScorllbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] ElSpace: typeof import('element-plus/es')['ElSpace'] src/components/search-option/base/FYOptionText.vue
@@ -5,7 +5,7 @@ :model-value="value" :placeholder="placeholder" @input="handleInput" style="width: 150px" :style="'width:' + width + ';'" /> </el-form-item> </template> @@ -13,6 +13,10 @@ <script> export default { props: { width:{ type: String, default: '150px' }, label: { type: String, default: 'æ¥è¯¢é¡¹' src/views/fysp/support/JingAnSupport.vue
@@ -1,72 +1,15 @@ <template> <FYOptionTime :initValue="true" type="date" v-model:value="updateTime"></FYOptionTime> <el-button type="primary" @click="fetchNewDevice">æ¥è¯¢æ°è®¾å¤</el-button> <el-button type="primary" @click="fetchNewConstruction">æ¥è¯¢æ°å·¥å°</el-button> <el-row> <el-col :span="12"> <el-text>æ°è®¾å¤</el-text> <div v-for="item in deviceList" :key="item.id"> <div>{{ item.id }}</div> <div>{{ item.code }}</div> <div>{{ item.name }}</div> <div>{{ item.address }}</div> <div>{{ item.status }}</div> <span>{{ item.createTime }} |</span> <span>{{ item.updateTime }} |</span> <span>{{ item.remark }} |</span> <span>{{ item.lon }} |</span> <span>{{ item.lat }}</span> </div> </el-col> <el-col :span="12"> <el-text>æ°å·¥å°</el-text> <div v-for="item in constructionList" :key="item.id"> <div>{{ item.id }}</div> <div>{{ item.code }}</div> <div>{{ item.name }}</div> <div>{{ item.address }}</div> <div>{{ item.street }}</div> <div>{{ item.status }}</div> <span>{{ item.lon }} |</span> <span>{{ item.lat }}</span> <span>{{ item.score }} |</span> <span>{{ item.grade }}</span> <span>{{ item.subTaskId }} |</span> <span>{{ item.createTime }} |</span> </div> </el-col> </el-row> <el-tabs type="border-card"> <el-tab-pane label="æ°è®¾å¤"> <NewDevice></NewDevice> </el-tab-pane> <el-tab-pane label="æ°å·¥å°"> <NewConstruction></NewConstruction> </el-tab-pane> </el-tabs> </template> <script setup> import { ref } from 'vue'; import dayjs from 'dayjs'; import constructionApi from '@/api/additional-jingan/constructionApi'; import { useFetchData } from '@/composables/fetchData'; const { loading, fetchData } = useFetchData(); const updateTime = ref(); const deviceList = ref([]); const constructionList = ref([]); // æ¥è¯¢é确认çè®¾å¤æ¸ å function fetchNewDevice() { const param = dayjs(updateTime.value).format('YYYY-MM-DD HH:mm:ss'); fetchData(() => { return constructionApi.queryDevice(param).then((res) => { deviceList.value = res.data; }); }); } // æ¥è¯¢æ°å»ºå·¥å° function fetchNewConstruction() { const param = dayjs(updateTime.value).format('YYYY-MM-DD HH:mm:ss'); fetchData(() => { return constructionApi.queryGdNew(param).then((res) => { constructionList.value = res.data; }); }); } import NewDevice from './NewDevice.vue'; import NewConstruction from './NewConstruction.vue'; </script> <style scoped></style> src/views/fysp/support/NewConstruction.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,67 @@ <template> <el-form :inline="true"> <FYOptionTime :initValue="true" type="date" v-model:value="updateTime"></FYOptionTime> <el-form-item> <el-button type="primary" :loading="loading" @click="fetchNewConstruction" >æ¥è¯¢æ°å·¥å°</el-button > </el-form-item> </el-form> <el-row> <el-col :span="12"> <el-text>æ°å·¥å°</el-text> <div v-for="item in constructionList" :key="item.id"> <div>{{ item.id }}</div> <div>{{ item.code }}</div> <div>{{ item.name }}</div> <div>{{ item.address }}</div> <div>{{ item.status }}</div> <span>{{ item.createTime }} |</span> <span>{{ item.updateTime }} |</span> <span>{{ item.remark }} |</span> <span>{{ item.lon }} |</span> <span>{{ item.lat }}</span> </div> </el-col> <el-col :span="12"> <el-text>ç管工å°</el-text> <div v-for="item in sceneList" :key="item.id"> <div>{{ item.id }}</div> <div>{{ item.code }}</div> <div>{{ item.name }}</div> <div>{{ item.address }}</div> <div>{{ item.street }}</div> <div>{{ item.status }}</div> <span>{{ item.lon }} |</span> <span>{{ item.lat }}</span> <span>{{ item.score }} |</span> <span>{{ item.grade }}</span> <span>{{ item.subTaskId }} |</span> <span>{{ item.createTime }} |</span> </div> </el-col> </el-row> </template> <script setup> import { ref } from 'vue'; import dayjs from 'dayjs'; import constructionApi from '@/api/additional-jingan/constructionApi'; import { useFetchData } from '@/composables/fetchData'; const { loading, fetchData } = useFetchData(); const updateTime = ref(); const constructionList = ref([]); const sceneList = ref([]) // æ¥è¯¢æ°å»ºå·¥å° function fetchNewConstruction() { const param = dayjs(updateTime.value).format('YYYY-MM-DD HH:mm:ss'); fetchData(() => { return constructionApi.queryGdNew(param).then((res) => { constructionList.value = res.data; }); }); } </script> <style scoped></style> src/views/fysp/support/NewDevice.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,100 @@ <template> <el-row> <el-col :span="8"> <el-text>æ°è®¾å¤</el-text> <el-form :inline="true"> <FYOptionTime :initValue="true" type="date" v-model:value="updateTime"></FYOptionTime> <el-form-item> <el-button type="primary" :loading="loading" @click="fetchNewDevice" >æ¥è¯¢æ°è®¾å¤</el-button > </el-form-item> </el-form> <el-scrollbar height="76vh"> <el-space direction="vertical" alignment="normal"> <ItemDevice v-for="item in deviceList" :key="item.id" :item="item" @add="addDevice" /> </el-space> </el-scrollbar> </el-col> <el-col :span="8"> <DeviceMatch :device="selectedDevice" :scene="selectedScene"></DeviceMatch> </el-col> <el-col :span="8"> <el-text>ç管工å°</el-text> <el-form :inline="false"> <FYOptionText label="åºæ¯åç§°" placeholder="è¾å ¥åç§°å ³é®å" width="400px" v-model:value="searchText" ></FYOptionText> <el-form-item> <el-button type="primary" :loading="loading2" @click="fetchScene">æ¥è¯¢çç®¡åºæ¯</el-button> </el-form-item> </el-form> <el-scrollbar height="70vh"> <!-- <el-space direction="vertical" alignment="normal"> --> <ItemScene v-for="item in sceneList" :key="item.sguid" :item="item" @add="addScene" /> <!-- </el-space> --> </el-scrollbar> </el-col> </el-row> </template> <script setup> import { ref, computed } from 'vue'; import dayjs from 'dayjs'; import constructionApi from '@/api/additional-jingan/constructionApi'; import sceneApi from '@/api/fysp/sceneApi'; import { useFetchData } from '@/composables/fetchData'; import ItemDevice from './components/ItemDevice.vue'; import ItemScene from './components/ItemScene.vue'; import DeviceMatch from './components/DeviceMatch.vue'; const { loading, fetchData } = useFetchData(); const updateTime = ref(); const deviceList = ref([]); const selectedDevice = ref(null); const searchText = ref(); const sceneList = ref([]); const selectedScene = ref(null); // æ¥è¯¢é确认çè®¾å¤æ¸ å function fetchNewDevice() { const param = dayjs(updateTime.value).format('YYYY-MM-DD HH:mm:ss'); fetchData(() => { return constructionApi.queryDevice(param).then((res) => { deviceList.value = res.data; }); }); } function addDevice(item) { selectedDevice.value = item; searchText.value = item.name; fetchScene(); } const { loading: loading2, fetchData: fetchData2 } = useFetchData(); // æ¥è¯¢çç®¡åºæ¯ function fetchScene() { const area = {}; area.sceneName = searchText.value; fetchData2((page, pageSize) => { return sceneApi.searchScene(area, page, pageSize).then((res) => { sceneList.value = res.data; }); }); } function addScene(item) { selectedScene.value = item; } </script> <style scoped> .device-scene-wrap { border: 1px solid black; } </style> src/views/fysp/support/components/DeviceMatch.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,51 @@ <template> <el-card shadow="hover"> <div>æ°è®¾å¤</div> <div v-if="device">{{ device.name }}</div> <div v-else>æªéæ©</div> <el-divider></el-divider> <div>çç®¡åºæ¯</div> <div v-if="scene">{{ scene.name }}</div> <div v-else>æªéæ©</div> <template #footer> <el-row justify="space-between"> <div> <!-- <el-button type="primary" plain :disabled="!enabled">åç§°åæ¥</el-button> --> <el-button type="primary" plain :disabled="!enabled">å½å ¥è®¾å¤ä¿¡æ¯</el-button> </div> <el-button type="danger" :disabled="!enabled">ä¸ä¼ å¹é ä¿¡æ¯</el-button> </el-row> <el-row></el-row> </template> </el-card> </template> <script setup> import { ref, computed, watch } from 'vue'; import deviceApi from '@/api/fysp/deviceApi'; const props = defineProps({ device: Object, scene: Object }); const deviceList = ref([]); const enabled = computed(() => { return props.device && props.scene; }); watch( () => props.scene, (nV, oV) => { if (nV != oV) { fetchDeviceInfo(); } } ); function fetchDeviceInfo() { deviceApi.fetchDevice(props.scene.guid).then((res) => { deviceList.value = res.data; }); } </script> src/views/fysp/support/components/ItemConstruction.vue
src/views/fysp/support/components/ItemDevice.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,63 @@ <template> <el-card shadow="hover"> <!-- <template #header> <div class="card-header"> <span>Card name</span> </div> </template> --> <!-- <el-descriptions :column="3" size="default" border> <el-descriptions-item label="åºå·">{{ item.id }}</el-descriptions-item> <el-descriptions-item label="MNç¼å·">{{ item.code }}</el-descriptions-item> <el-descriptions-item label="åç§°">{{ item.name }}</el-descriptions-item> <el-descriptions-item label="å°å">{{ item.address }}</el-descriptions-item> <el-descriptions-item label="ç¶æ">{{ item.status }}</el-descriptions-item> <el-descriptions-item label="å建æ¶é´">{{ item.createTime }}</el-descriptions-item> <el-descriptions-item label="æ´æ°æ¶é´">{{ item.updateTime }}</el-descriptions-item> <el-descriptions-item label="夿³¨">{{ item.remark }}</el-descriptions-item> <el-descriptions-item label="ç»çº¬åº¦">{{ item.lon }}, {{ item.lat }}</el-descriptions-item> </el-descriptions> --> <el-row justify="space-between"> <div> <el-text>{{ item.id }}ã</el-text> <el-text>{{ item.name }}</el-text> </div> <div> <el-text>MNç¼å·ï¼{{ item.code }}</el-text> </div> </el-row> <div> <el-text>å°åï¼</el-text> <el-text>{{ item.address }}</el-text> </div> <el-row justify="space-between"> <div> <el-text size="small" type="info">ç»çº¬åº¦ï¼{{ item.lon }}, {{ item.lat }}</el-text> </div> <el-space> <div> <el-text size="small" type="info">å建æ¶é´ï¼{{ item.createTime }}</el-text> </div> <div> <el-text size="small" type="info">æ´æ°æ¶é´ï¼{{ item.updateTime }}</el-text> </div> </el-space> </el-row> <el-row justify="end"> <el-button size="small" type="success" @click="add">æ·»å </el-button> </el-row> </el-card> </template> <script setup> const props = defineProps({ item: { type: Object, default: () => {} } }); const emit = defineEmits(['add']); function add() { emit('add', props.item); } </script> src/views/fysp/support/components/ItemScene.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ <template> <el-card shadow="hover"> <el-row justify="space-between"> <div> <el-text>{{ item.index }}ã</el-text> <el-text>{{ item.name }}</el-text> </div> <div> <el-text>ç±»åï¼{{ item.type }}</el-text> </div> </el-row> <div> <el-text>åºå¿ï¼</el-text> <el-text>{{ item.districtname }}</el-text> </div> <el-row justify="start"> <el-button size="small" type="success" @click="add">æ·»å </el-button> </el-row> </el-card> </template> <script setup> const props = defineProps({ item: { type: Object, default: () => {} } }); const emit = defineEmits(['add']); function add() { emit('add', props.item); } </script>