zhangjie 1 жил өмнө
parent
commit
a3675125d5

+ 4 - 4
src/api/common.js

@@ -13,10 +13,10 @@ export const uploadFiles = (formData, md5) => {
   });
 };
 
-export const downloadImportTemplate = (params) => {
-   request({
+export const downloadImportTemplate = (type) => {
+  request({
     url: '/api/admin/common/download_import_template',
-    params: params,
-    download:true,
+    params: { type },
+    download: true,
   });
 };

+ 1 - 1
src/api/work-hours.js

@@ -84,7 +84,7 @@ export const workStatisticsInfoApi = (data) =>
   });
 export const workStatisticsExportApi = (data) =>
   request({
-    url: ' /api/admin/tb/ding/export',
+    url: '/api/admin/tb/ding/export',
     params: data,
   });
 export const workStatisticsPassApi = (id) =>

+ 3 - 1
src/utils/request.js

@@ -102,12 +102,14 @@ function createService() {
             err(`服务器内部错误`);
             break;
           case 401:
-            err('登录状态已过期或没有权限');
             if (
               error.response?.data?.message.includes('登录') ||
               error.response?.data?.message.includes('token')
             ) {
+              Message.error('登录状态已过期');
               router.replace({ name: 'Login' });
+            } else {
+              err('登录状态已过期或没有权限');
             }
             break;
           case 403:

+ 28 - 10
src/views/resource-guard/person-guard/person-files/index.vue

@@ -6,16 +6,29 @@
           <template #icon><svg-icon name="add-circle" color="#fff" /></template>
           新增
         </t-button>
-        <upload-button
-          v-if="perm.BUTTON_BatchImport"
-          upload-url="/api/admin/user/archives/import"
-          param-file-name="MultipartFile"
-        >
-          <t-button variant="outline">
-            <template #icon><svg-icon name="import" color="#262626" /></template
-            >批量导入
-          </t-button>
-        </upload-button>
+        <t-popup v-if="perm.BUTTON_BatchImport" trigger="hover">
+          <template #content>
+            <t-button
+              variant="outline"
+              @click="downloadImportTemplate('TEMPLATE_USE_ARCHIVES')"
+            >
+              <template #icon
+                ><svg-icon name="export" color="#262626" /></template
+              >下载模板
+            </t-button>
+          </template>
+          <upload-button
+            upload-url="/api/admin/user/archives/import"
+            param-file-name="MultipartFile"
+            :format="['xls', 'xlsx']"
+          >
+            <t-button variant="outline">
+              <template #icon
+                ><svg-icon name="import" color="#262626" /></template
+              >批量导入
+            </t-button>
+          </upload-button>
+        </t-popup>
         <t-button
           v-if="perm.BUTTON_BatchExport"
           variant="outline"
@@ -152,6 +165,7 @@ import {
   personFilesDestroyApi,
   personFilesExportApi,
 } from '@/api/resource-guard';
+import { downloadImportTemplate } from '@/api/common';
 import { dictToOptionList } from '@/utils/tool';
 import { AUTHENTICATION_ROLE, AUTHENTICATION_STATUS } from '@/config/constants';
 import {
@@ -400,6 +414,10 @@ const multExport = () => {
   });
 };
 
+const handleDownloadTemp = () => {
+  console.log('11');
+};
+
 onMounted(() => {
   getStatisticsInfo();
 });

+ 1 - 1
src/views/service-unit/dispatch/dispatch-manage/add-dispatch-dialog.vue

@@ -216,7 +216,7 @@ const save = async () => {
   const valid = await formRef.value.validate();
   if (valid !== true) return;
 
-  if (formData.examStartTime >= formData.examEndTime) {
+  if (formData.examStartTime > formData.examEndTime) {
     MessagePlugin.success('考试开始时间不得迟于考试结束时间');
     return;
   }

+ 6 - 0
src/views/sop/sop-manage/office-sop/index.vue

@@ -70,6 +70,12 @@
         :selected-row-keys="selectedRowKeys"
         @select-change="selectChange"
       >
+        <template #sopNo="{ col, row }">
+          <more-content
+            :content="row[col.colKey]"
+            @action="editSopFlowHandle(row, 'view')"
+          ></more-content>
+        </template>
         <template #beginTime="{ col, row }">
           {{ timestampFilter(row[col.colKey]) }}
         </template>

+ 15 - 2
src/views/sop/sop-manage/sop-step/index.vue

@@ -242,6 +242,9 @@ const props = defineProps({
 });
 const emit = defineEmits(['confirm']);
 
+const IS_VIEW_MODE = computed(() => {
+  return props.type === 'view';
+});
 const IS_NEW_MODE = computed(() => {
   return props.type === 'new';
 });
@@ -401,6 +404,12 @@ const initEdit = async () => {
   const res = await sopEditApi(props.sop.id);
   loading.value = false;
 
+  // todo
+  // const res = await sopEditApi(props.sop.id);
+  // loading.value = false;
+  // crmInfo.value = res.crmInfo || {};
+  // updateSopInfo(crmInfo.value);
+
   sopEditDetail.value = res;
   allSteps.value = Object.values(res.setupMap).sort(
     (a, b) => a.setup - b.setup
@@ -426,7 +435,7 @@ const init = () => {
   if (IS_FILL_MODE.value) {
     // 填报
     initFill();
-  } else if (IS_EDIT_MODE.value) {
+  } else if (IS_EDIT_MODE.value || IS_VIEW_MODE.value) {
     // 编辑
     initEdit();
   } else {
@@ -455,9 +464,13 @@ const showAction = computed(() => {
 const curFormConfig = computed(() => {
   const formProperty = curStepData.value.formProperty || [];
   formProperty.forEach((item) => {
-    if (IS_EDIT_MODE.value) {
+    if (IS_EDIT_MODE.value || IS_VIEW_MODE.value) {
       item.value = allFormData.value[item.formName];
     }
+
+    if (IS_VIEW_MODE.value) {
+      item.writable = false;
+    }
   });
 
   // 填报时第一步的特殊处理

+ 1 - 0
src/views/sop/sop-manage/sop-step/sop-step-dialog.vue

@@ -42,6 +42,7 @@ const title = computed(() => {
   if (props.type === 'fill') return 'SOP填报';
   if (props.type === 'new') return 'SOP新增';
   if (props.type === 'edit') return 'SOP编辑';
+  if (props.type === 'view') return 'SOP详情';
 });
 
 const stepConfirm = () => {

+ 6 - 0
src/views/sop/sop-manage/student-sop/index.vue

@@ -70,6 +70,12 @@
         :selected-row-keys="selectedRowKeys"
         @select-change="selectChange"
       >
+        <template #sopNo="{ col, row }">
+          <more-content
+            :content="row[col.colKey]"
+            @action="editSopFlowHandle(row, 'view')"
+          ></more-content>
+        </template>
         <template #beginTime="{ col, row }">
           {{ timestampFilter(row[col.colKey]) }}
         </template>

+ 20 - 15
src/views/system/config-manage/customer-manage/index.vue

@@ -6,20 +6,25 @@
           <template #icon><svg-icon name="add-circle" color="#fff" /></template
           >新增客户
         </t-button>
-        <upload-button
-          v-if="perm.BUTTON_BatchImport"
-          upload-url="/api/sys/custom/import"
-          :format="['xlsx']"
-        >
-          <t-button variant="outline">
-            <template #icon><svg-icon name="import" color="#262626" /></template
-            >批量导入
-          </t-button>
-        </upload-button>
-        <t-button v-if="perm.BUTTON_BatchImport"  variant="outline" @click="downloadImportTemplate({type:'TEMPLATE_CUSTOM'})">
-          <template #icon><svg-icon name="export" color="#262626" /></template
-          >下载模版
-        </t-button>
+        <t-popup v-if="perm.BUTTON_BatchImport" trigger="hover">
+          <template #content>
+            <t-button
+              variant="outline"
+              @click="downloadImportTemplate('TEMPLATE_CUSTOM')"
+            >
+              <template #icon
+                ><svg-icon name="export" color="#262626" /></template
+              >下载模板
+            </t-button>
+          </template>
+          <upload-button upload-url="/api/sys/custom/import" :format="['xlsx']">
+            <t-button variant="outline">
+              <template #icon
+                ><svg-icon name="import" color="#262626" /></template
+              >批量导入
+            </t-button>
+          </upload-button>
+        </t-popup>
       </t-space>
     </div>
     <SearchForm :fields="fields" :params="params">
@@ -103,7 +108,7 @@ import { CUSTOMER_TYPE } from '@/config/constants';
 import { dictToOptionList } from '@/utils/tool';
 import { customerTypeFilter, timestampFilter } from '@/utils/filter';
 import usePermission from '@/hooks/usePermission';
-import {downloadImportTemplate} from "@/api/common";
+import { downloadImportTemplate } from '@/api/common';
 const { perm } = usePermission();
 
 const showEditCustomerDialog = ref(false);

+ 23 - 19
src/views/system/config-manage/device-manage/index.vue

@@ -33,20 +33,25 @@
           <template #icon><svg-icon name="disable" color="#262626" /></template>
           批量禁用
         </t-button>
-        <upload-button
-          v-if="perm.BUTTON_BatchImport"
-          upload-url="/api/sys/device/import"
-          :format="['xlsx']"
-        >
-          <t-button variant="outline">
-            <template #icon><svg-icon name="import" color="#262626" /></template
-            >批量导入
-          </t-button>
-        </upload-button>
-        <t-button v-if="perm.BUTTON_BatchImport"  variant="outline" @click="downloadImportTemplate({type:'TEMPLATE_DEVICE'})">
-          <template #icon><svg-icon name="export" color="#262626" /></template
-          >下载模版
-        </t-button>
+        <t-popup v-if="perm.BUTTON_BatchImport" trigger="hover">
+          <template #content>
+            <t-button
+              variant="outline"
+              @click="downloadImportTemplate('TEMPLATE_DEVICE')"
+            >
+              <template #icon
+                ><svg-icon name="export" color="#262626" /></template
+              >下载模板
+            </t-button>
+          </template>
+          <upload-button upload-url="/api/sys/device/import" :format="['xlsx']">
+            <t-button variant="outline">
+              <template #icon
+                ><svg-icon name="import" color="#262626" /></template
+              >批量导入
+            </t-button>
+          </upload-button>
+        </t-popup>
       </t-space>
     </div>
     <SearchForm :fields="fields" :params="params">
@@ -138,7 +143,7 @@
 </template>
 
 <script setup name="DeviceManage">
-import {ref, reactive, onMounted, computed} from 'vue';
+import { ref, reactive, onMounted, computed } from 'vue';
 import { DialogPlugin, MessagePlugin } from 'tdesign-vue-next';
 import useFetchTable from '@/hooks/useFetchTable';
 import EditDeviceDialog from './edit-device-dialog.vue';
@@ -156,8 +161,8 @@ import {
 import { dictToOptionList } from '@/utils/tool';
 import { ABLE_TYPE, RUNNING_STATUS, INOUT_TYPE } from '@/config/constants';
 import usePermission from '@/hooks/usePermission';
-import {omit} from "lodash";
-import {downloadImportTemplate} from "@/api/common";
+import { omit } from 'lodash';
+import { downloadImportTemplate } from '@/api/common';
 const { perm } = usePermission();
 
 const showEditDeviceDialog = ref(false);
@@ -313,8 +318,7 @@ const {
   fetchData,
   search,
   onChange,
-} = useFetchTable(deviceQueryApi,{ params: params });
-
+} = useFetchTable(deviceQueryApi, { params: params });
 
 const selectChange = (value) => {
   selectedRowKeys.value = value;