Ver Fonte

1.巡检页面和接口。

jiaxiaoqiang há 9 meses atrás
pai
commit
4ff6c7fe72

Diff do ficheiro suprimidas por serem muito extensas
+ 6 - 0
src/assets/icons/weiwai.svg


Diff do ficheiro suprimidas por serem muito extensas
+ 5 - 0
src/assets/icons/xunjian.svg


+ 7 - 7
src/components/IconSelect/index.vue

@@ -2,8 +2,8 @@
   <div ref="iconSelectRef" :style="'width:' + width" class="relative">
     <el-input
       v-model="selectedIcon"
-      readonly
       placeholder="点击选择图标"
+      readonly
       @click="popoverVisible = !popoverVisible"
     >
       <template #prepend>
@@ -20,9 +20,9 @@
 
     <el-popover
       :popoverVisible="popoverVisible"
+      :width="width"
       placement="bottom-end"
       trigger="click"
-      :width="width"
     >
       <template #reference>
         <div
@@ -38,8 +38,8 @@
       <div ref="popoverContentRef">
         <el-input
           v-model="searchText"
-          placeholder="搜索图标"
           clearable
+          placeholder="搜索图标"
           @input="filterIcons"
         />
         <el-tabs v-model="activeTab" @tab-click="handleTabClick">
@@ -52,7 +52,7 @@
                   class="icon-item"
                   @click="selectIcon(icon)"
                 >
-                  <el-tooltip :content="icon" placement="bottom" effect="light">
+                  <el-tooltip :content="icon" effect="light" placement="bottom">
                     <svg-icon :icon-class="icon" />
                   </el-tooltip>
                 </li>
@@ -81,7 +81,7 @@
   </div>
 </template>
 
-<script setup lang="ts">
+<script lang="ts" setup>
 import * as ElementPlusIconsVue from "@element-plus/icons-vue";
 import { ElTabPane } from "element-plus";
 
@@ -129,7 +129,7 @@ function filterIcons() {
       ? svgIcons.filter((iconName) => iconName.includes(searchText.value))
       : svgIcons;
   } else {
-    // 过滤Element Plus图标逻辑 TODO
+    // 过滤Element Plus图标逻辑
   }
 }
 
@@ -180,7 +180,7 @@ onMounted(() => {
 });
 </script>
 
-<style scoped lang="scss">
+<style lang="scss" scoped>
 .icon-item {
   display: flex;
   align-items: center;

+ 4 - 3
src/views/pro-operation/check-out/index.vue

@@ -19,7 +19,7 @@
         @tab-click="handleClick"
       >
         <el-tab-pane
-          v-if="store.scanInfo.firstCheck == 0"
+          v-if="store.scanInfo.firstCheck == 1"
           label="首检"
           name="first"
         >
@@ -29,9 +29,9 @@
           v-if="store.scanInfo.inspection == 0"
           label="巡检"
           name="second"
-          >Config
+        >
+          <RollCheck :user-name="userInfo?.userName" />
         </el-tab-pane>
-        <el-tab-pane label="不检" name="third">Role</el-tab-pane>
       </el-tabs>
     </div>
   </div>
@@ -42,6 +42,7 @@ import ScanCodeInput from "@/components/ScanCodeInput/index.vue";
 import { useProcessStore } from "@/store";
 import { checkUserLogin } from "@/api/prosteps/dianjian";
 import FirstCheck from "./first-check.vue";
+import RollCheck from "./roll-check.vue";
 
 const store = useProcessStore();
 const inputValueC = ref("");

+ 276 - 0
src/views/pro-operation/check-out/roll-check.vue

@@ -0,0 +1,276 @@
+<template>
+  <div v-if="!excelViewStatus">
+    <el-table :data="tableData" class="tableView">
+      <el-table-column align="center" fixed label="表格名称" prop="formName" />
+      <el-table-column align="center" label="表格类型" prop="formType">
+        <template #default="scope">
+          {{ dictS.getLableByValue("excel_type", scope.row.formType) }}
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="是否已填报" prop="writeData">
+        <template #default="scope">
+          <span
+            :class="{
+              'red-text': scope.row.writeData === '',
+              'green-text': scope.row.writeData !== '',
+            }"
+          >
+            {{ scope.row.writeData === "" ? "否" : "是" }}
+          </span>
+        </template>
+      </el-table-column>
+      <el-table-column fixed="right" label="操作" width="200">
+        <template #default="scope">
+          <el-button
+            v-if="scope.row.writeData !== ''"
+            class="btnText"
+            link
+            type="primary"
+            @click="handleLook(scope.row)"
+          >
+            查看
+          </el-button>
+          <el-button
+            class="btnText"
+            link
+            type="primary"
+            @click="handleEdit(scope.row)"
+          >
+            编辑
+          </el-button>
+
+          <el-popconfirm
+            v-if="scope.row.writeData !== ''"
+            :visible="scope.row.dialogVisible"
+            title="您确认重置吗?(重置此操作不可逆)"
+            width="200"
+            @cancel="scope.row.dialogVisible = false"
+            @confirm="reset(scope.row)"
+          >
+            <el-button> 取消</el-button>
+            <el-button type="primary"> 确认</el-button>
+            <template #reference>
+              <el-button
+                class="btnText"
+                link
+                type="primary"
+                @click="scope.row.dialogVisible = true"
+                >重置
+              </el-button>
+            </template>
+          </el-popconfirm>
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+  <div v-else class="excelView">
+    <div class="view">
+      <ExcelView
+        ref="excelViewRef"
+        v-model:data="excelData"
+        :checkStatus="true"
+        :option="excelOptions"
+        :verifications="setting"
+      />
+    </div>
+    <div class="opeara">
+      <div>
+        <el-button
+          v-if="excelOptions.edit"
+          class="btn"
+          type="primary"
+          @click="submitData"
+          >提交
+        </el-button>
+        <el-button class="btn" @click="resetData"
+          >{{ excelOptions.edit ? "取消" : "返回" }}
+        </el-button>
+      </div>
+    </div>
+  </div>
+</template>
+<script setup>
+import { processExcelList } from "@/api/prosteps/dianjian";
+import { setExcelData } from "@/api/prosteps/excel";
+import { useDictionaryStore, useProcessStore } from "@/store";
+
+const props = defineProps({
+  userName: String,
+});
+
+defineOptions({
+  name: "Excel",
+});
+
+const setting = ref([]);
+const dictS = useDictionaryStore();
+const store = useProcessStore();
+const tableData = ref([]);
+const dataList = async () => {
+  // 首检表单4  巡检表单1
+  const { data } = await processExcelList(store.scanInfo.workOrderId, 1);
+  tableData.value = data;
+};
+const useExcelHook = () => {
+  const excelViewStatus = ref(false);
+  const excelData = ref(null);
+  const excelViewRef = ref(null);
+  const excelSelectRow = ref(null);
+  const excelOptions = ref({
+    opreaState: true,
+    in: true,
+    out: true,
+    print: true,
+    edit: true,
+    inName: "",
+  });
+  const resetData = () => {
+    if (excelViewRef.value) {
+      excelViewRef.value.saveCellData();
+      excelViewRef.value.reset();
+    }
+    excelViewStatus.value = false;
+    excelData.value = null;
+    excelSelectRow.value = null;
+    excelOptions.value = {
+      opreaState: true,
+      in: true,
+      out: true,
+      print: true,
+      edit: true,
+      inName: "",
+    };
+  };
+  const reset = async (row) => {
+    excelData.value = "";
+    const { data, code } = await setExcelData({
+      excelData: excelData.value,
+      formName: row.formName,
+      excelFormId: row.excelFormId,
+      formType: row.formType,
+      processId: store.scanInfo.id,
+    });
+    if (code == "200") {
+      ElMessage.success("操作成功!");
+      row.dialogVisible = false;
+      resetData();
+      dataList();
+    }
+  };
+  const handleEdit = (row) => {
+    excelSelectRow.value = row;
+    if (row.writeData == "") {
+      excelData.value = JSON.parse(row.excelData);
+    } else {
+      excelData.value = JSON.parse(row.writeData);
+    }
+    excelOptions.value.inName = row.formName;
+    excelViewStatus.value = true;
+    setting.value = row.settings;
+  };
+  const handleLook = (row) => {
+    excelOptions.value.edit = false;
+    excelData.value = JSON.parse(row.writeData);
+    excelOptions.value.inName = row.formName;
+    excelViewStatus.value = true;
+  };
+  const submitData = async () => {
+    excelData.value = excelViewRef.value.getData();
+    const { data, code } = await setExcelData({
+      excelData: excelData.value,
+      excelFormId: excelSelectRow.value.excelFormId,
+      formName: excelSelectRow.value.formName,
+      formType: excelSelectRow.value.formType,
+      processId: store.scanInfo.id,
+      workOrderId: store.scanInfo.workOrderId,
+      userName: props.userName,
+    });
+    if (code === "200") {
+      ElMessage.success("操作成功!");
+      resetData();
+      dataList();
+    }
+  };
+  return {
+    excelViewStatus,
+    excelOptions,
+    excelData,
+    excelViewRef,
+    resetData,
+    handleEdit,
+    submitData,
+    handleLook,
+    reset,
+  };
+};
+const {
+  excelViewStatus,
+  excelOptions,
+  excelData,
+  excelViewRef,
+  resetData,
+  handleEdit,
+  submitData,
+  handleLook,
+  reset,
+} = useExcelHook();
+onMounted(() => {
+  dataList();
+});
+</script>
+<style lang="scss" scoped>
+.btnText {
+  font-size: $f20;
+  color: black;
+}
+
+.excelView {
+  width: 100%;
+  height: calc(100vh - 275px);
+  padding: 20px;
+  display: flex;
+  background-color: white;
+  border-radius: 16px;
+
+  .view {
+    position: relative;
+    flex: 1;
+    height: calc(100vh - 325px);
+  }
+
+  .opeara {
+    width: 200px;
+    height: 100%;
+    padding: 10px;
+    display: flex;
+    align-items: center;
+  }
+}
+
+.tableView {
+  width: 100%;
+  height: calc(100vh - 275px);
+  padding: 20px 0px;
+  border-radius: 16px;
+}
+
+.btn {
+  width: 180px;
+  border-radius: 16px;
+  height: 40px;
+  font-size: 16px;
+  margin: 10px 0;
+}
+
+.red-text {
+  color: red;
+}
+
+.green-text {
+  color: green;
+}
+
+:deep(.el-table__inner-wrapper::before) {
+  display: none;
+}
+</style>

+ 7 - 7
src/views/pro-steps/components/operates.vue

@@ -56,7 +56,7 @@ const setIndex = (index: number) => {
     case "baogong":
       reportWorkRef.value?.openReportWorkDrawer();
       break;
-    case "jianyan":
+    case "xunjian":
       router.push({ name: "checkOut" });
       break;
     default:
@@ -93,12 +93,12 @@ const stepComponents = ref([
 
 onMounted(() => {
   // TODO: 删掉注释
-  // if (store.scanInfo.inspection == 1 && store.scanInfo.firstCheck == 1) {
-  stepComponents.value.push({
-    compentName: "检验",
-    compentType: "jianyan",
-  });
-  // }
+  if (store.scanInfo.inspection == 1 || store.scanInfo.firstCheck == 1) {
+    stepComponents.value.push({
+      compentName: "检验",
+      compentType: "xunjian",
+    });
+  }
 });
 </script>