From 2323c93baf009d2f60acaec545622611673203cb Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 18 六月 2025 16:48:13 +0800
Subject: [PATCH] 1.巡检上传页面开发、联调

---
 src/views/salesOutbound/index.vue                       |    2 
 src/api/inspectionManagement/index.js                   |   27 ++
 src/main.js                                             |    2 
 src/views/inspectionUpload/index.vue                    |  100 ++++++++++
 package.json                                            |    6 
 src/views/inspectionUpload/components/formDia.vue       |  158 +++++++++++++++
 src/views/inspectionManagement/components/formDia.vue   |   96 +++++++++
 src/views/inspectionManagement/index.vue                |   50 +++--
 src/views/inspectionManagement/components/qrCodeDia.vue |  113 +++++++++++
 9 files changed, 532 insertions(+), 22 deletions(-)

diff --git a/package.json b/package.json
index 3548462..d916e6c 100644
--- a/package.json
+++ b/package.json
@@ -16,13 +16,14 @@
     "url": "https://gitee.com/y_project/RuoYi-Vue.git"
   },
   "dependencies": {
+    "@chenfengyuan/vue-qrcode": "^2.0.0",
     "@element-plus/icons-vue": "2.3.1",
     "@vueup/vue-quill": "1.2.0",
     "@vueuse/core": "10.11.0",
     "axios": "0.28.1",
     "clipboard": "2.0.11",
-    "echarts": "5.5.1",
     "default-passive-events": "^4.0.0",
+    "echarts": "5.5.1",
     "element-china-area-data": "^6.1.0",
     "element-plus": "2.7.6",
     "file-saver": "2.0.5",
@@ -32,9 +33,12 @@
     "jsencrypt": "3.3.2",
     "nprogress": "0.2.0",
     "pinia": "2.1.7",
+    "print-js": "^1.6.0",
+    "qrcode": "^1.5.4",
     "splitpanes": "3.1.5",
     "vue": "3.4.31",
     "vue-cropper": "1.1.1",
+    "vue-qrcode": "^2.2.2",
     "vue-router": "4.4.0",
     "vuedraggable": "4.1.0"
   },
diff --git a/src/api/inspectionManagement/index.js b/src/api/inspectionManagement/index.js
new file mode 100644
index 0000000..0fb8caf
--- /dev/null
+++ b/src/api/inspectionManagement/index.js
@@ -0,0 +1,27 @@
+// 宸℃绠$悊
+import request from '@/utils/request'
+
+// 宸℃浠诲姟琛ㄨ〃鏌ヨ
+export function inspectionTaskList(query) {
+    return request({
+        url: '/inspectionTask/list',
+        method: 'get',
+        params: query
+    })
+}
+// 宸℃浠诲姟琛ㄦ柊澧炰慨鏀�
+export function addOrEditInspectionTask(query) {
+    return request({
+        url: '/inspectionTask/addOrEditInspectionTask',
+        method: 'post',
+        data: query
+    })
+}
+// 宸℃浠诲姟琛ㄦ柊澧炰慨鏀�
+export function delInspectionTask(query) {
+    return request({
+        url: '/inspectionTask/delInspectionTask',
+        method: 'delete',
+        data: query
+    })
+}
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
index 117280e..5fb87f2 100644
--- a/src/main.js
+++ b/src/main.js
@@ -45,6 +45,7 @@
 import DictTag from '@/components/DictTag'
 import {summarizeTable} from "@/utils/summarizeTable.js";
 import {getCurrentDate} from "@/utils/getCurrentDate.js";
+import VueQrcode from '@chenfengyuan/vue-qrcode';
 
 const app = createApp(App)
 
@@ -68,6 +69,7 @@
 app.component('ImagePreview', ImagePreview)
 app.component('RightToolbar', RightToolbar)
 app.component('Editor', Editor)
+app.component('vue-qrcode', VueQrcode)
 
 app.use(router)
 app.use(store)
diff --git a/src/views/inspectionManagement/components/formDia.vue b/src/views/inspectionManagement/components/formDia.vue
new file mode 100644
index 0000000..8da91ef
--- /dev/null
+++ b/src/views/inspectionManagement/components/formDia.vue
@@ -0,0 +1,96 @@
+<template>
+  <div>
+    <el-dialog :title="operationType === 'add' ? '鏂板宸℃浠诲姟' : '缂栬緫閿�鍞嚭搴�'"
+               v-model="dialogVisitable" width="800px" @close="cancel">
+      <el-form :model="form" :rules="rules" ref="formRef" label-width="120px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="浠诲姟鍚嶇О" prop="taskName">
+              <el-input v-model="form.taskName" placeholder="璇疯緭鍏ヤ换鍔″悕绉�" maxlength="30" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍦扮偣" prop="port">
+              <el-input v-model="form.port" placeholder="璇疯緭鍏ュ湴鐐�" maxlength="30" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="宸℃浜�" prop="inspector">
+              <el-input v-model="form.inspector" placeholder="宸℃浜�" maxlength="30" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="澶囨敞" prop="remarks">
+              <el-input v-model="form.remarks" placeholder="璇疯緭鍏ュ娉�" type="textarea" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="cancel">鍙栨秷</el-button>
+          <el-button type="primary" @click="submitForm">淇濆瓨</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import {reactive, ref} from "vue";
+import useUserStore from '@/store/modules/user'
+import {addOrEditInspectionTask} from "@/api/inspectionManagement/index.js";
+
+const { proxy } = getCurrentInstance()
+const emit = defineEmits()
+const userStore = useUserStore()
+const dialogVisitable = ref(false);
+const operationType = ref('add');
+const data = reactive({
+  form: {
+    taskName: '',
+    port: '',
+    inspector: '',
+    remarks: '',
+  },
+  rules: {
+    taskName: [{ required: true, message: "璇疯緭鍏ヤ换鍔″悕绉�", trigger: "blur" },],
+    port: [{ required: true, message: "璇疯緭鍏ュ湴鐐�", trigger: "blur" },],
+    inspector: [{ required: true, message: "璇疯緭鍏ュ贰妫�浜�", trigger: "blur" },],
+  }
+})
+
+const { form, rules } = toRefs(data)
+
+// 鎵撳紑寮规
+const openDialog = async (type, row) => {
+  dialogVisitable.value = true
+  if (type === 'edit') {
+    form.value = {...row}
+  }
+}
+// 鎻愪氦鍚堝苟琛ㄥ崟
+const submitForm = () => {
+  proxy.$refs["formRef"].validate(valid => {
+    if (valid) {
+      addOrEditInspectionTask(form.value).then(() => {
+        cancel()
+        proxy.$modal.msgSuccess('鎻愪氦鎴愬姛')
+      })
+    }
+  })
+}
+// 鍏抽棴鍚堝苟琛ㄥ崟
+const cancel = () => {
+  proxy.resetForm("formRef")
+  dialogVisitable.value = false
+  emit('closeDia')
+}
+defineExpose({ openDialog })
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/inspectionManagement/components/qrCodeDia.vue b/src/views/inspectionManagement/components/qrCodeDia.vue
new file mode 100644
index 0000000..119d9c5
--- /dev/null
+++ b/src/views/inspectionManagement/components/qrCodeDia.vue
@@ -0,0 +1,113 @@
+<template>
+  <div>
+    <el-dialog :title="operationType === 'add' ? '鏂板浜岀淮鐮�' : '缂栬緫浜岀淮鐮�'"
+               v-model="dialogVisitable" width="500px" @close="cancel">
+      <el-form :model="form" :rules="rules" ref="formRef" label-width="120px">
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="璁惧鍚嶇О" prop="name">
+              <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ澶囧悕绉�" maxlength="30" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="鍦扮偣" prop="taxTrans">
+              <el-input v-model="form.taxTrans" placeholder="璇疯緭鍏ュ湴鐐�" maxlength="30"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div>
+        <el-button type="primary" @click="submitForm">鐢熸垚骞舵墦鍗颁簩缁寸爜</el-button>
+      </div>
+      <div v-if="isShowQrCode" class="print-section" ref="qrCodeContainer" id="qrCodeContainer">
+        <vue-qrcode :value="qrCodeValue" :width="qrCodeSize"></vue-qrcode>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import useUserStore from "@/store/modules/user.js";
+import {reactive, ref} from "vue";
+import printJS from 'print-js'; // 寮曞叆 print.js
+
+const { proxy } = getCurrentInstance()
+const emit = defineEmits()
+const userStore = useUserStore()
+const dialogVisitable = ref(false);
+const isShowQrCode = ref(false);
+const operationType = ref('add');
+
+const qrCodeValue = ref('https://example.com');
+const qrCodeSize = ref(100);
+const data = reactive({
+  form: {
+    name: '',
+    taxTrans: '',
+  },
+  rules: {
+    name: [{ required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: 'blur' }],
+    taxTrans: [{ required: true, message: '璇疯緭鍏ュ湴鐐�', trigger: 'blur' }]
+  }
+})
+const { form, rules } = toRefs(data)
+
+
+// 鎵撳紑寮规
+const openDialog = async (type, row) => {
+  dialogVisitable.value = true
+}
+// 鎻愪氦鍚堝苟琛ㄥ崟
+const submitForm = () => {
+  proxy.$refs["formRef"].validate(valid => {
+    if (valid) {
+      // 灏嗚〃鍗曟暟鎹浆涓� JSON 瀛楃涓蹭綔涓轰簩缁寸爜鍐呭
+      qrCodeValue.value = JSON.stringify(form.value);
+      isShowQrCode.value = true;
+      
+      // 寤惰繜鎵ц鎵撳嵃锛岄伩鍏� DOM 鏇存柊鍓嶅氨璋冪敤鎵撳嵃
+      setTimeout(() => {
+        printJS({
+          printable: 'qrCodeContainer',//椤甸潰
+          type: "html",//鏂囨。绫诲瀷
+          maxWidth: 360,
+          style: `@page {
+                margin:0;
+                size: 400px 75px collapse;
+                margin-top:3px;
+                &:first-of-type{
+                  margin-top:0 !important;
+                }
+              }
+              html{
+                zoom:100%;
+              }
+              @media print{
+                width: 400px;
+                height: 75px;
+                margin:0;
+              }`,
+          targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕�
+          font_size: '0.20cm',
+        });
+      }, 300);
+    }
+  })
+}
+// 鍏抽棴鍚堝苟琛ㄥ崟
+const cancel = () => {
+  proxy.resetForm("formRef")
+  dialogVisitable.value = false
+  emit('closeDia')
+}
+defineExpose({ openDialog })
+</script>
+
+<style scoped>
+.print-section {
+  text-align: center;
+  margin-top: 30px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/inspectionManagement/index.vue b/src/views/inspectionManagement/index.vue
index e3eaff1..bb313fd 100644
--- a/src/views/inspectionManagement/index.vue
+++ b/src/views/inspectionManagement/index.vue
@@ -63,15 +63,23 @@
         />
       </div>
     </el-card>
+    <form-dia ref="formDia" @closeDia="handleQuery"></form-dia>
+    <qr-code-dia ref="qrCodeDia" @closeDia="handleQuery"></qr-code-dia>
   </div>
 </template>
 
 <script setup>
 import {Download, Delete, Plus} from "@element-plus/icons-vue";
 import {onMounted, ref} from "vue";
+const { proxy } = getCurrentInstance()
 import Pagination from "@/components/Pagination/index.vue";
 import ETable from "@/components/Table/ETable.vue";
+import FormDia from "@/views/inspectionManagement/components/formDia.vue";
+import QrCodeDia from "@/views/inspectionManagement/components/qrCodeDia.vue";
+import {delInspectionTask, inspectionTaskList} from "@/api/inspectionManagement/index.js";
 
+const formDia = ref()
+const qrCodeDia = ref()
 // 鏌ヨ鍙傛暟
 const queryParams = reactive({
   supplierName: "",
@@ -79,7 +87,7 @@
 })
 // 褰撳墠鏍囩
 const activeTab = ref("task");
-const tabName = ref("qrCode");
+const tabName = ref("task");
 // 鏍囩椤垫暟鎹�
 const tabs = reactive([
   { name: "task", label: "浠诲姟涓嬪彂" },
@@ -93,22 +101,12 @@
 const pageNum = ref(1);
 const pageSize = ref(10);
 const columns = ref([
-  { prop: "saleDate", label: "閿�鍞棩鏈�", minWidth: 160 },
-  { prop: "customer", label: "瀹㈡埛", minWidth: 120 },
-  { prop: "coal", label: "鐓ょ", minWidth: 150 },
-  { prop: "unit", label: "鍗曚綅", minWidth: 150 },
-  { prop: "priceIncludingTax", label: "鍗曚环(鍚◣)", minWidth: 150 },
-  { prop: "inventoryQuantity", label: "搴撳瓨鏁伴噺", minWidth: 120 },
-  { prop: "saleQuantity", label: "閿�鍞暟閲�", minWidth: 120 },
-  { prop: "salePrice", label: "閿�鍞崟浠�(鍚◣)", minWidth: 150 },
-  { prop: "totalAmount", label: "閿�鍞�讳环(鍚◣)", minWidth: 120 },
-  { prop: "freight", label: "杩愯垂", minWidth: 90 },
-  { prop: "taxCoal", label: "璐攢鐓ょ◣鐜�(%)", minWidth: 120 },
-  { prop: "taxTrans", label: "杩愯緭绋庣巼(%)", minWidth: 120 },
-  { prop: "grossProfit", label: "姣涘埄娑�", minWidth: 90 },
-  { prop: "netProfit", label: "鍑�鍒╂鼎", minWidth: 90 },
+  { prop: "taskName", label: "宸℃浠诲姟鍚嶇О", minWidth: 160 },
+  { prop: "port", label: "鍦扮偣", minWidth: 120 },
+  { prop: "remarks", label: "澶囨敞", minWidth: 150 },
+  { prop: "inspector", label: "鎵ц宸℃浜�", minWidth: 150 },
   { prop: "registrant", label: "鐧昏浜�", minWidth: 100 },
-  { prop: "registrationDate", label: "鐧昏鏃ユ湡", minWidth: 100 },
+  { prop: "createTime", label: "鐧昏鏃ユ湡", minWidth: 100 },
 ]);
 
 onMounted(() => {
@@ -127,8 +125,13 @@
   getList()
 }
 const getList = () => {
-  // tableLoading.value = true;
-  
+  tableLoading.value = true;
+  inspectionTaskList({...queryParams, size: pageSize.value, current: pageNum.value}).then(res => {
+    console.log(res)
+    tableLoading.value = false;
+    tableData.value = res.data.records;
+    total.value = res.data.total;
+  })
 };
 // 閲嶇疆鏌ヨ
 const resetQuery = () => {
@@ -142,7 +145,14 @@
 
 // 鏂板銆佺紪杈�
 const handleAdd = (row) => {
-
+  const type = row === undefined ? 'add' : 'edit'
+  nextTick(() => {
+    if (tabName.value === "task") {
+      formDia.value?.openDialog(type, row)
+    } else {
+      qrCodeDia.value?.openDialog(type, row)
+    }
+  })
 };
 // 鍒犻櫎浠诲姟
 const handleDelete = () => {
@@ -152,7 +162,7 @@
   }
   const deleteIds = selectedRows.value.map(item => item.id);
   proxy.$modal.confirm('鏄惁纭鍒犻櫎鎵�閫夋暟鎹」锛�').then(function() {
-    return delSalesRecord(deleteIds)
+    return delInspectionTask(deleteIds)
   }).then(() => {
     handleQuery()
     proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛")
diff --git a/src/views/inspectionUpload/components/formDia.vue b/src/views/inspectionUpload/components/formDia.vue
new file mode 100644
index 0000000..8889657
--- /dev/null
+++ b/src/views/inspectionUpload/components/formDia.vue
@@ -0,0 +1,158 @@
+<template>
+  <div>
+    <el-dialog title="涓婁紶"
+               v-model="dialogVisitable" width="400px" @close="cancel">
+      <el-form :model="form" ref="formRef" label-width="120px">
+        <el-form-item label="鐢熶骇鍓�" prop="fileList0">
+          <el-upload
+              v-model:file-list="fileList0"
+              ref="fileUpload0"
+              :action="uploadFileUrl"
+              multiple
+              name="files"
+              :data="{type: 0}"
+              style="width: 100%"
+              :headers="headers"
+              :before-upload="handleBeforeUpload"
+              :on-success="handleUploadSuccess"
+          >
+            <el-button type="primary">涓婁紶</el-button>
+          </el-upload>
+        </el-form-item>
+        <el-form-item label="鐢熶骇鍚�" prop="fileList1">
+          <el-upload
+              v-model:file-list="fileList1"
+              ref="fileUpload1"
+              :action="uploadFileUrl"
+              multiple
+              name="files"
+              :data="{type: 1}"
+              style="width: 100%"
+              :headers="headers"
+              :before-upload="handleBeforeUpload"
+              :on-success="handleUploadSuccess1"
+          >
+            <el-button type="primary">涓婁紶</el-button>
+          </el-upload>
+        </el-form-item>
+        <el-form-item label="鐢熶骇闂" prop="fileList2">
+          <el-upload
+              v-model:file-list="fileList2"
+              ref="fileUpload2"
+              :action="uploadFileUrl"
+              multiple
+              name="files"
+              :data="{type: 2}"
+              style="width: 100%"
+              :headers="headers"
+              :before-upload="handleBeforeUpload"
+              :on-success="handleUploadSuccess2"
+          >
+            <el-button type="primary">涓婁紶</el-button>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="cancel">鍙栨秷</el-button>
+          <el-button type="primary" @click="submitForm">淇濆瓨</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import {reactive, ref} from "vue";
+import {addOrEditInspectionTask} from "@/api/inspectionManagement/index.js";
+import {getToken} from "@/utils/auth.js";
+
+const { proxy } = getCurrentInstance()
+const emit = defineEmits()
+const dialogVisitable = ref(false);
+const data = reactive({
+  form: {
+    id: '',
+    storageBlobDTO: {}
+  },
+})
+
+const { form } = toRefs(data)
+const fileList0 = ref([])
+const fileList1 = ref([])
+const fileList2 = ref([])
+const uploadFileUrl = ref(import.meta.env.VITE_APP_BASE_API + '/common/minioUploads'); // 涓婁紶鏂囦欢鏈嶅姟鍣ㄥ湴鍧�
+const headers = ref({ Authorization: "Bearer " + getToken() });
+
+// 鎵撳紑寮规
+const openDialog = async (row) => {
+  dialogVisitable.value = true
+  form.value.id = row.id
+}
+// 涓婁紶鍓嶆牎妫�鏍煎紡鍜屽ぇ灏�
+function handleBeforeUpload(file) {
+  
+  return true
+}
+// 涓婁紶鎴愬姛鍥炶皟
+function handleUploadSuccess(res, file) {
+  if (res.code === 200) {
+    console.log("涓婁紶鎴愬姛", res);
+    proxy.$modal.msgSuccess("鏂囦欢涓婁紶鎴愬姛");
+    console.log('fileList0---', fileList0)
+  } else {
+    proxy.$modal.msgError(res.msg)
+    proxy.$refs.fileUpload0.handleRemove(file)
+  }
+}
+function handleUploadSuccess1(res, file) {
+  if (res.code === 200) {
+    proxy.$modal.msgSuccess("鏂囦欢涓婁紶鎴愬姛");
+  } else {
+    proxy.$modal.msgError(res.msg)
+    proxy.$refs.fileUpload1.handleRemove(file)
+  }
+}
+function handleUploadSuccess2(res, file) {
+  if (res.code === 200) {
+    proxy.$modal.msgSuccess("鏂囦欢涓婁紶鎴愬姛");
+  } else {
+    proxy.$modal.msgError(res.msg)
+    proxy.$refs.fileUpload2.handleRemove(file)
+  }
+}
+
+// 鎻愪氦鍚堝苟琛ㄥ崟
+const submitForm = () => {
+  proxy.$refs["formRef"].validate(valid => {
+    if (valid) {
+      // 鍒濆鍖� storageBlobDTO 涓轰竴涓┖鏁扮粍
+      form.value.storageBlobDTO = []
+      // 鍚堝苟鎵�鏈� fileList 鍒� storageBlobDTO
+      const allFiles = [
+        ...fileList0.value,
+        ...fileList1.value,
+        ...fileList2.value
+      ]
+      // 灏嗘枃浠跺垪琛ㄨ祴鍊肩粰 form
+      form.value.storageBlobDTO = allFiles
+      // 鎻愪氦鏁版嵁
+      addOrEditInspectionTask(form.value).then(() => {
+        cancel()
+        proxy.$modal.msgSuccess('鎻愪氦鎴愬姛')
+      })
+    }
+  })
+}
+// 鍏抽棴鍚堝苟琛ㄥ崟
+const cancel = () => {
+  proxy.resetForm("formRef")
+  dialogVisitable.value = false
+  emit('closeDia')
+}
+defineExpose({ openDialog })
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/inspectionUpload/index.vue b/src/views/inspectionUpload/index.vue
new file mode 100644
index 0000000..762d39a
--- /dev/null
+++ b/src/views/inspectionUpload/index.vue
@@ -0,0 +1,100 @@
+<template>
+  <div class="app-container">
+    <el-card>
+      <!-- 鏍囩椤� -->
+      <el-tabs
+          v-model="activeTab"
+          class="info-tabs"
+          @tab-click="handleTabClick"
+      >
+        <el-tab-pane
+            v-for="tab in tabs"
+            :key="tab.name"
+            :label="tab.label"
+            :name="tab.name"
+        />
+      </el-tabs>
+      <div>
+        <div>
+          <el-table ref="table" :data="tableData" height="480" v-loading="tableLoading">
+            <el-table-column label="搴忓彿" type="index" width="60" align="center" />
+            <el-table-column prop="taskName" label="宸℃浠诲姟鍚嶇О" :show-overflow-tooltip="true"></el-table-column>
+            <el-table-column prop="port" label="鍦扮偣" :show-overflow-tooltip="true"></el-table-column>
+            <el-table-column prop="remarks" label="澶囨敞"></el-table-column>
+            <el-table-column prop="inspector" label="鎵ц宸℃浜�"></el-table-column>
+            <el-table-column fixed="right" label="鎿嶄綔">
+              <template #default="scope">
+                <el-button link type="primary" @click="handleAdd(scope.row)">涓婁紶</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <pagination
+            v-if="total>0"
+            :page-num="pageNum"
+            :page-size="pageSize"
+            :total="total"
+            @pagination="handleQuery"
+            :layout="'total, prev, pager, next, jumper'"
+        />
+      </div>
+    </el-card>
+    <form-dia ref="formDia" @closeDia="handleQuery"></form-dia>
+  </div>
+</template>
+
+<script setup>
+import Pagination from "@/components/Pagination/index.vue";
+import {inspectionTaskList} from "@/api/inspectionManagement/index.js";
+import {onMounted, ref} from "vue";
+import FormDia from "@/views/inspectionUpload/components/formDia.vue";
+const formDia = ref()
+// 褰撳墠鏍囩
+const activeTab = ref("task");
+const tabName = ref("task");
+// 鏍囩椤垫暟鎹�
+const tabs = reactive([
+  { name: "task", label: "浠诲姟涓嬪彂" },
+  { name: "qrCode", label: "浜岀淮鐮佺鐞�" },
+]);
+// 琛ㄦ牸
+const tableData = ref([]);
+const tableLoading = ref(false);
+const total = ref(0);
+const pageNum = ref(1);
+const pageSize = ref(10);
+
+onMounted(() => {
+  handleTabClick({ props: { name: "task" } });
+});
+// 鏍囩椤电偣鍑�
+const handleTabClick = (tab) => {
+  tabName.value = tab.props.name;
+  tableData.value = [];
+  getList();
+};
+// 鐐瑰嚮鏌ヨ
+const handleQuery = () => {
+  pageNum.value = 1
+  pageSize.value = 10
+  getList()
+}
+const getList = () => {
+  tableLoading.value = true;
+  inspectionTaskList({size: pageSize.value, current: pageNum.value}).then(res => {
+    tableLoading.value = false;
+    tableData.value = res.data.records;
+    total.value = res.data.total;
+  })
+};
+// 涓婁紶
+const handleAdd = (row) => {
+  nextTick(() => {
+    formDia.value?.openDialog(row)
+  })
+}
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/salesOutbound/index.vue b/src/views/salesOutbound/index.vue
index 1c28393..39c3d28 100644
--- a/src/views/salesOutbound/index.vue
+++ b/src/views/salesOutbound/index.vue
@@ -79,7 +79,7 @@
 import ETable from "@/components/Table/ETable.vue";
 import Pagination from "@/components/Pagination/index.vue";
 import FormDia from "@/views/salesOutbound/components/formDia.vue";
-import {delSalesRecord, salesRecordList} from "../../api/salesOutbound/index.js";
+import {delSalesRecord, salesRecordList} from "@/api/salesOutbound/index.js";
 
 const formDia = ref()
 const activeTab = ref("out");

--
Gitblit v1.9.3