Jelajahi Sumber

冲突解决

liyangzheng 1 tahun lalu
induk
melakukan
bcf474ab71

+ 27 - 11
src/api/flow/flow.js

@@ -34,11 +34,11 @@ function delModelOn(data) {
     })
 }
 // 获取指定模型和装置类型的端子列表
-function getModelAndIed(data){
+function getModelAndIed(data) {
     return request({//适用于表格数据
-        url:`/admin/model/function/fcda/list`,
-        method:"get",
-        params:data
+        url: `/admin/model/function/fcda/list`,
+        method: "get",
+        params: data
     })
 }
 // 保存模型装置功能及端子信息
@@ -49,21 +49,36 @@ func_name *功能名称。必传。
 fcda_id *端子ID。编辑时必传。
 fcda_name *功能名称。必传。
 fcda_match_exp *端子匹配表达式。必传。*/
-function saveModelAndIed(data){
+function saveModelAndIed(data) {
     return request({
-        url:`/admin/model/function/fcda/save`,
-        method:"post",
+        url: `/admin/model/function/fcda/save`,
+        method: "post",
         data
     })
 }
 // 获取指定模型和装置类型的功能列表
 /*model_id *模型ID
 ied_type *装置类型*/
-function getByModelAndIed(data){
+function getByModelAndIed(data) {
     return request({//适用于新增修改时下拉数据
-        url:`/admin/model/function/list`,
-        method:"get",
-        params:data
+        url: `/admin/model/function/list`,
+        method: "get",
+        params: data
+    })
+}
+// 将Excel数据导入到指定模块
+/*
+code *业务数据类别,由系统定义。当前支持:ied_func_fcda
+file *文件流参数名
+*/
+function excelInData(data) {
+    return request({
+        url: "impData",
+        method: "post",
+        data,
+        headers: {
+            'content-Type': 'multipart/form-data',
+        },
     })
 }
 export default {
@@ -73,4 +88,5 @@ export default {
     getModelAndIed,
     saveModelAndIed,
     getByModelAndIed,
+    excelInData,
 }

TEMPAT SAMPAH
src/assets/files/装置功能及端子导入_模板.xlsx


+ 41 - 0
src/pages/components/drawModal/AbilityModal.vue

@@ -4,6 +4,17 @@
             <el-button type="primary" plain @click="addAbility(0)"><el-icon>
                     <Plus />
                 </el-icon>添加新功能</el-button>
+            <el-button type="success" plain @click="lookTemplate">查看模板</el-button>
+            <!-- <el-button type="primary" plain @click="upTemplate">上传模板</el-button> -->
+            <el-upload style="display: inline-block;margin-left: 10px;" v-model:file-list="fileList" class="upload-demo"
+                :show-file-list="false" :http-request="upTemplate" multiple :limit="1">
+                <el-button type="primary" plain :disabled="upState">上传模板</el-button>
+                <!-- <template #tip>
+                            <div class="el-upload__tip">
+                                jpg/png files with a size less than 500KB.
+                            </div>
+                        </template> -->
+            </el-upload>
             <el-table :data="tableData" style="width: 100%;height: calc(100vh - 600px);">
                 <el-table-column label="序号" width="100">
                     <template #default="scope">
@@ -42,6 +53,7 @@
 <script>
 import { ref, onMounted, watch, toRefs } from 'vue';
 import flow from "@/api/flow/flow"
+import system from '@/api/system';
 import AddAbility from './AddAbility.vue';
 import DelAbility from './DelAbility.vue';
 import { ElMessage } from 'element-plus';
@@ -88,6 +100,33 @@ export default {
                 tableData.value = res.data
             })
         }
+        // 下载报告模板
+        function lookTemplate() {
+            // 84780
+            system.downLoad({ ids: 84780 }).then(res => {
+                if (res.code == 0) {//使用接口获取服务器上文件位置
+                    let a = window.ApiServer + res.data//合成链接
+                    window.location = a//调用原生链接下载文件
+                }
+            })
+        }
+        // 文件上传
+        function upTemplate(e) {
+            // 调用接口进行文件上传
+            flow.excelInData({ code: "ied_func_fcda", file: e.file, model_id: modelIds.value - 0 }).then(res => {
+                if (res.returncode == 200) {
+                    ElMessage({
+                        message: "上传成功!",
+                        type: "success"
+                    })
+                } else {
+                    ElMessage({
+                        message: res.msg,
+                        type: "error"
+                    })
+                }
+            })
+        }
         function copyReload() {
             flow.getModelAndIed({//获取所有功能
                 model_id: modelIds.value - 0,
@@ -150,6 +189,8 @@ export default {
             delFcda,//需要删除的fcdaid
             delModal,//删除功能模态框开关状态
             delBack,//DelAbility.vue返回模态框状态
+            lookTemplate,//模板下载
+            upTemplate,//文件上传
         }
     },
     components: {

+ 20 - 4
src/pages/login/LoginNow.vue

@@ -21,8 +21,8 @@
                             placeholder="你的密码..." maxlength="32" />
                     </el-form-item>
                 </el-form>
-                <div @keyup.enter="sureLog">
-                    <el-button class="loginBtn" type="primary" @click="sureLog">登录</el-button>
+                <div @keyup.enter="debouncedSureLog">
+                    <el-button class="loginBtn" type="primary" @click="debouncedSureLog">登录</el-button>
                 </div>
             </div>
 
@@ -33,7 +33,7 @@
 <script>
 import { ref, onMounted, onBeforeUnmount } from "vue"
 import { useRouter } from 'vue-router'
-import { ElMessage } from "element-plus"
+import { ElMessage, ElLoading } from "element-plus"
 import login from "@/api/login"
 import { useDataStore } from '@/store/modules/golbal-data';
 const userStoreCode = useDataStore();
@@ -46,6 +46,7 @@ export default {
         })
         let isLogin = ref(false)
         let router = useRouter()
+        let timer = ref(null)//添加防抖,防止用户多次点击
         function encryptPassword(password) {
             if (typeof SmCrypto == 'undefined') {
                 window.location.reload()
@@ -66,6 +67,20 @@ export default {
                 return val
             }
         }
+        // 防抖函数
+        function debouncedSureLog() {
+            clearTimeout(timer); // 清除之前的定时器
+            const loading = ElLoading.service({
+                lock: true,
+                text: "正在登陆",
+                background: "rgba(0, 0, 0, 0.7)",
+            });
+            timer = setTimeout(() => {
+                sureLog();
+                loading.close()
+            }, 500); // 设置防抖延迟时间为500毫秒
+        };
+
         function sureLog() {
             let kis = encryptPassword(loginForm.value.userpass)
             login.LoginNow({
@@ -97,7 +112,7 @@ export default {
         // 添加键盘事件监听器
         function handleKeyUp(event) {
             if (event.key === 'Enter') {
-                sureLog();
+                debouncedSureLog();
             }
         };
         function WinClose() {
@@ -127,6 +142,7 @@ export default {
             WinMin,
             WinClose,
             handleKeyUp,
+            debouncedSureLog,//防抖函数
         }
     }
 }

+ 5 - 2
src/pages/mission/MissionVue.vue

@@ -16,7 +16,7 @@
                 <NoBox v-if="btnSelect == 0 && listLength == 0 && sizeNum == 0" :btnSelect="btnSelect" :taskList="taskList"
                     @backToMission="backToMission"></NoBox>
                 <!-- 有检测任务的盒子 -->
-                <HaveMis v-if="btnSelect == 0 && listLength != 0 && sizeNum == 0" @moreBack="moreBack" @hmBack="hmBack"
+                <HaveMis v-if="btnSelect == 0 && listLength != 0 && sizeNum == 0" :numType="numType" @moreBack="moreBack" @hmBack="hmBack"
                     @haveBack="haveBack" @haveInCreate="haveInCreate"></HaveMis>
                 <!-- 新建任务盒子 -->
                 <CreateNew v-if="btnSelect == 1" :btnSelect="btnSelect" :taskList="taskList" :editRow="editRow"
@@ -76,6 +76,7 @@ export default {
         let editRow = ref({})//需要编辑的任务
         let status = ref(0)
         let listLength = ref(0)//有无任务
+        let numType = ref(false)//刷新havemis状态
         function searchAllTask() {
             // 0为待检测
             task.getTask({ pageno: 1, pagesize: 10, state: 0 }).then(res => {
@@ -128,8 +129,9 @@ export default {
             startMis.value = obj
             sizeNum.value = data
         }
-        function smBack(data) {
+        function smBack(data, type) {
             sizeNum.value = data
+            numType.value = type
         }
         function createBack(data) {
             btnSelect.value = data
@@ -181,6 +183,7 @@ export default {
             status,
             moreBack,
             listLength,//有无任务
+            numType
         }
     },
     components: {

+ 9 - 1
src/pages/mission/components/HaveMis.vue

@@ -140,12 +140,18 @@
 </template>
 
 <script>
-import { ref, onMounted, computed, toRefs } from "vue";
+import { ref, onMounted, computed, toRefs, watch } from "vue";
 import { useRouter } from "vue-router";
 import task from "@/api/task"
 import imgs from "../jscom/img";
 import { ElLoading, ElMessage } from "element-plus";
 export default {
+  props: {
+    numType: {
+      type: Boolean,
+      required: true,
+    },//startmission组件返回刷新状态
+  },
   setup(props, { emit }) {
     let imgBack = ref("@/assets/image/card_blue.png");
     let router = useRouter();
@@ -161,6 +167,7 @@ export default {
     let isImgs = ref(false)
     let isIndex = ref(999999)
     let isIndexs = ref(999999)
+    let isType = ref(false)//本组件刷新状态
     function scdLink() {
       router.push("/home/scdMap");
     }
@@ -345,6 +352,7 @@ export default {
       relison,//开始检测后选择模型change事件
       outcome,//生成报告和跳转yemian
       moreMis,
+      isType,//本组件刷新状态
     };
   },
   components: {

+ 1 - 0
src/pages/mission/components/HistoryMis.vue

@@ -112,6 +112,7 @@ export default {
                 end_time: endTime.value
             }).then(res => {
                 tableData.value = res.data
+                totals.value = res.count
             })
         }
         function timeChange(e) {

+ 3 - 3
src/pages/mission/components/StartMission.vue

@@ -65,7 +65,7 @@
 </template>
 
 <script>
-import { ref, onMounted, toRefs, watch } from 'vue';
+import { ref, onMounted, toRefs, watch,onBeforeUnmount } from 'vue';
 import StepMethod from './StepMethod.vue';
 import task from '@/api/task';
 import slc from '@/api/slc/slc';
@@ -100,16 +100,16 @@ export default {
                         message: "取消成功",
                         type: "success"
                     })
+                    emit("smBack", arrow.value, true)
                 }
             })
-            emit("smBack", arrow.value)
         }
         async function misState() {
             try {
                 const res = await task.lookStep({ id: loadingMis.value.id - 0 });
                 if (res.data) {
                     stepList.value = res.data;
-                    console.log(stepList.value, 'step');
+                    // console.log(stepList.value, 'step');
                 } else {
                     showError(res.msg);
                 }

+ 1 - 1
src/pages/mission/components/StepMethod.vue

@@ -49,7 +49,7 @@ export default {
                     msg: item.state_msg
                 }
             })
-            console.log(steps.value,'steps');
+            // console.log(steps.value,'steps');
         }
         function nextStep() {
             if (activeStep.value > 0 && activeStep.value < steps.value.length) {

+ 1 - 0
src/pages/setting/modalComp/Addrm.vue

@@ -116,6 +116,7 @@ export default {
             filesCacl.value = e.file
             cid.fileUpload({ station_id: 9999, file: filesCacl.value, attachment_type: "tpl" }).then(res => {
                 addForm.value.docid = res.data.fileid
+                console.log(addForm.value.docid,'filesifafk');
             })
         }
         function getCancel() {