Browse Source

Merge branch 'release_v1.0.0' of http://git.qmth.com.cn/sop/web into dev_1.0.1

刘洋 1 year ago
parent
commit
41c0b7c6b5
39 changed files with 440 additions and 448 deletions
  1. BIN
      src/assets/imgs/login_bg.png
  2. 14 4
      src/style/global.less
  3. 10 27
      src/views/login/forget-pwd.vue
  4. 39 57
      src/views/login/index.vue
  5. 24 8
      src/views/my-workbenches/workbenches/message-reminder/index.vue
  6. 20 9
      src/views/my-workbenches/workbenches/message-reminder/message-list.vue
  7. 1 1
      src/views/my-workbenches/workbenches/my-waits/index.vue
  8. 1 1
      src/views/my-workbenches/workbenches/notice/index.vue
  9. 8 8
      src/views/project-quality/project-quality-manage/issues-feedback/index.vue
  10. 20 20
      src/views/resource-guard/device-guard/registration-query/index.vue
  11. 4 4
      src/views/resource-guard/person-guard/person-allocate/index.vue
  12. 12 12
      src/views/resource-guard/person-guard/person-files/index.vue
  13. 9 9
      src/views/service-unit/dispatch/dispatch-manage/index.vue
  14. 8 8
      src/views/service-unit/service-unit-manage/range-manage/index.vue
  15. 5 5
      src/views/service-unit/service-unit-manage/regional-planning/index.vue
  16. 19 19
      src/views/service-unit/service-unit-manage/unit-manage/index.vue
  17. 17 1
      src/views/sop/components/metadata-content.vue
  18. 19 19
      src/views/sop/sop-manage/device-out-in/index.vue
  19. 1 1
      src/views/sop/sop-manage/office-sop/index.vue
  20. 2 8
      src/views/sop/sop-manage/plan-change/index.vue
  21. 16 16
      src/views/sop/sop-manage/project-change-report/index.vue
  22. 2 8
      src/views/sop/sop-manage/quality-issue/index.vue
  23. 3 10
      src/views/sop/sop-manage/sop-step/index.vue
  24. 1 1
      src/views/sop/sop-manage/student-sop/index.vue
  25. 8 8
      src/views/sop/sop-monitor/delay-warning/index.vue
  26. 16 16
      src/views/sop/sop-monitor/violation-registration/index.vue
  27. 14 14
      src/views/system/config-manage/checkin-manage/index.vue
  28. 8 8
      src/views/system/config-manage/customer-manage/index.vue
  29. 14 14
      src/views/system/config-manage/device-manage/index.vue
  30. 4 4
      src/views/system/notice-log/log-manage/index.vue
  31. 1 1
      src/views/system/notice-log/notice-manage/edit-notice-dialog.vue
  32. 30 31
      src/views/system/notice-log/notice-manage/index.vue
  33. 6 6
      src/views/system/task/task-manage/index.vue
  34. 2 8
      src/views/work-hours/work-hours-manage/abnormal-check/abnormal-detail-dialog.vue
  35. 14 14
      src/views/work-hours/work-hours-manage/abnormal-check/done-check.vue
  36. 12 12
      src/views/work-hours/work-hours-manage/abnormal-check/wait-check.vue
  37. 18 18
      src/views/work-hours/work-hours-manage/work-attendance-detail/index.vue
  38. 22 22
      src/views/work-hours/work-hours-manage/work-attendance/index.vue
  39. 16 16
      src/views/work-hours/work-hours-manage/work-statistics/index.vue

BIN
src/assets/imgs/login_bg.png


+ 14 - 4
src/style/global.less

@@ -12,7 +12,11 @@ body {
   height: 100%;
   height: 100%;
   min-width: 1200px;
   min-width: 1200px;
 }
 }
-
+.ellipsis {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
 .layout-header {
 .layout-header {
   width: 100%;
   width: 100%;
   // box-shadow: 1px 1px 2px var(--color-neutral-2);
   // box-shadow: 1px 1px 2px var(--color-neutral-2);
@@ -72,7 +76,8 @@ body {
   .t-form__item.buttons-wrap {
   .t-form__item.buttons-wrap {
     .t-form__controls-content {
     .t-form__controls-content {
       .t-button {
       .t-button {
-        margin-left: 10px;
+        margin-left: 16px;
+        margin-bottom: 16px;
       }
       }
     }
     }
   }
   }
@@ -348,11 +353,16 @@ body {
 // pages ---------------->
 // pages ---------------->
 // message-list
 // message-list
 .message-list {
 .message-list {
+  height: 100%;
+  position: relative;
   .none-box {
   .none-box {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
     text-align: center;
     text-align: center;
-    margin-top: 100px;
     img {
     img {
-      height: 120px;
+      height: 80px;
       display: block;
       display: block;
       margin: 0 auto;
       margin: 0 auto;
     }
     }

+ 10 - 27
src/views/login/forget-pwd.vue

@@ -12,32 +12,27 @@
           v-model="formData.mobileNumber"
           v-model="formData.mobileNumber"
           clearable
           clearable
           placeholder="请输入你的手机号"
           placeholder="请输入你的手机号"
-          size="large"
+          size="medium"
         >
         >
-          <template #prefix-icon>
-            <CallIcon />
-          </template>
         </t-input>
         </t-input>
       </t-form-item>
       </t-form-item>
       <t-form-item name="code">
       <t-form-item name="code">
         <div class="flex items-center">
         <div class="flex items-center">
           <t-input
           <t-input
-            style="width: 170px"
+            style="width: 162px"
             v-model="formData.code"
             v-model="formData.code"
             clearable
             clearable
             placeholder="验证码"
             placeholder="验证码"
-            size="large"
+            size="medium"
           >
           >
-            <template #prefix-icon>
-              <MobileIcon />
-            </template>
           </t-input>
           </t-input>
           <t-button
           <t-button
-            class="m-l-20px"
-            style="width: 110px"
+            class="m-l-16px"
+            variant="outline"
+            style="width: 102px"
             :loading="loading"
             :loading="loading"
-            @click="getCode"
             :disabled="isActive"
             :disabled="isActive"
+            @click="getCode"
             >{{ isActive ? lastSeconds + 's' : '获取验证码' }}</t-button
             >{{ isActive ? lastSeconds + 's' : '获取验证码' }}</t-button
           >
           >
         </div>
         </div>
@@ -48,11 +43,8 @@
           type="password"
           type="password"
           clearable
           clearable
           placeholder="请输入新密码"
           placeholder="请输入新密码"
-          size="large"
+          size="medium"
         >
         >
-          <template #prefix-icon>
-            <LockOnIcon />
-          </template>
         </t-input>
         </t-input>
       </t-form-item>
       </t-form-item>
       <t-form-item name="repeatPassword">
       <t-form-item name="repeatPassword">
@@ -61,18 +53,15 @@
           type="password"
           type="password"
           clearable
           clearable
           placeholder="请再次输入新密码"
           placeholder="请再次输入新密码"
-          size="large"
+          size="medium"
         >
         >
-          <template #prefix-icon>
-            <ArrowTriangleUpIcon />
-          </template>
         </t-input>
         </t-input>
       </t-form-item>
       </t-form-item>
       <t-button
       <t-button
         block
         block
         class="m-t-30px"
         class="m-t-30px"
         @click="submitHandle"
         @click="submitHandle"
-        size="large"
+        size="medium"
         theme="primary"
         theme="primary"
         >保 存</t-button
         >保 存</t-button
       >
       >
@@ -82,12 +71,6 @@
 
 
 <script setup name="ForgetPwd">
 <script setup name="ForgetPwd">
 import { reactive, ref } from 'vue';
 import { reactive, ref } from 'vue';
-import {
-  CallIcon,
-  MobileIcon,
-  LockOnIcon,
-  ArrowTriangleUpIcon,
-} from 'tdesign-icons-vue-next';
 import { clear } from '@/utils/tool';
 import { clear } from '@/utils/tool';
 import { useIntervalFn } from '@vueuse/core';
 import { useIntervalFn } from '@vueuse/core';
 import { MessagePlugin } from 'tdesign-vue-next';
 import { MessagePlugin } from 'tdesign-vue-next';

+ 39 - 57
src/views/login/index.vue

@@ -1,9 +1,8 @@
 <template>
 <template>
   <div class="login flex justify-center items-center h-full">
   <div class="login flex justify-center items-center h-full">
     <img class="logo" src="../../assets/imgs/login_logo.png" />
     <img class="logo" src="../../assets/imgs/login_logo.png" />
-    <div class="login-bg flex justify-center items-center">
+    <div class="login-bg">
       <div class="login-bg-inner-box text-center">
       <div class="login-bg-inner-box text-center">
-        <img src="../../assets/imgs/login_bg_inner.png" />
         <div class="title1">欢 迎 使 用</div>
         <div class="title1">欢 迎 使 用</div>
         <div class="title2">项目质量控制管理平台</div>
         <div class="title2">项目质量控制管理平台</div>
       </div>
       </div>
@@ -20,13 +19,13 @@
           返回登录
           返回登录
         </t-button>
         </t-button>
         <!-- <t-button
         <!-- <t-button
-          v-else
-          variant="outline"
-          @click="loginType = loginType === 'ACCOUNT' ? 'PHONE' : 'ACCOUNT'"
-        >
-          <template #icon><SwapRightIcon /></template>
-          {{ loginType === 'ACCOUNT' ? '手机号' : '账号' }}登录
-        </t-button> -->
+            v-else
+            variant="outline"
+            @click="loginType = loginType === 'ACCOUNT' ? 'PHONE' : 'ACCOUNT'"
+          >
+            <template #icon><SwapRightIcon /></template>
+            {{ loginType === 'ACCOUNT' ? '手机号' : '账号' }}登录
+          </t-button> -->
       </div>
       </div>
       <div class="title2" v-if="forgetStatus">{{ `请输入新的账号与密码` }}</div>
       <div class="title2" v-if="forgetStatus">{{ `请输入新的账号与密码` }}</div>
       <div class="title2" v-else>{{
       <div class="title2" v-else>{{
@@ -46,12 +45,9 @@
               v-model="formData.loginName"
               v-model="formData.loginName"
               clearable
               clearable
               placeholder="请输入手机号码"
               placeholder="请输入手机号码"
-              size="large"
+              size="medium"
               @enter="loginHandle"
               @enter="loginHandle"
             >
             >
-              <template #prefix-icon>
-                <MobileIcon />
-              </template>
             </t-input>
             </t-input>
           </t-form-item>
           </t-form-item>
 
 
@@ -61,12 +57,9 @@
               type="password"
               type="password"
               clearable
               clearable
               placeholder="请输入密码"
               placeholder="请输入密码"
-              size="large"
+              size="medium"
               @enter="loginHandle"
               @enter="loginHandle"
             >
             >
-              <template #prefix-icon>
-                <lock-on-icon />
-              </template>
             </t-input>
             </t-input>
           </t-form-item>
           </t-form-item>
         </t-form>
         </t-form>
@@ -84,11 +77,8 @@
               v-model="formData2.mobileNumber"
               v-model="formData2.mobileNumber"
               clearable
               clearable
               placeholder="请输入你的手机号"
               placeholder="请输入你的手机号"
-              size="large"
+              size="medium"
             >
             >
-              <template #prefix-icon>
-                <CallIcon />
-              </template>
             </t-input>
             </t-input>
           </t-form-item>
           </t-form-item>
           <t-form-item name="code">
           <t-form-item name="code">
@@ -98,11 +88,8 @@
                 v-model="formData2.code"
                 v-model="formData2.code"
                 clearable
                 clearable
                 placeholder="验证码"
                 placeholder="验证码"
-                size="large"
+                size="medium"
               >
               >
-                <template #prefix-icon>
-                  <MobileIcon />
-                </template>
               </t-input>
               </t-input>
               <t-button
               <t-button
                 class="m-l-20px"
                 class="m-l-20px"
@@ -115,14 +102,14 @@
             </div>
             </div>
           </t-form-item>
           </t-form-item>
         </t-form>
         </t-form>
-        <t-link theme="primary" class="m-t-20px" @click="forgetStatus = true"
+        <t-link theme="primary" class="m-t-28px" @click="forgetStatus = true"
           >忘记密码</t-link
           >忘记密码</t-link
         >
         >
         <t-button
         <t-button
           block
           block
-          class="m-t-30px"
+          class="m-t-28px"
           @click="loginHandle"
           @click="loginHandle"
-          size="large"
+          size="medium"
           theme="primary"
           theme="primary"
           >登 录</t-button
           >登 录</t-button
         >
         >
@@ -134,15 +121,8 @@
 </template>
 </template>
 
 
 <script setup name="Login">
 <script setup name="Login">
-import { ref, reactive, computed, watch } from 'vue';
-import {
-  DesktopIcon,
-  LockOnIcon,
-  RollbackIcon,
-  SwapRightIcon,
-  CallIcon,
-  MobileIcon,
-} from 'tdesign-icons-vue-next';
+import { ref, reactive } from 'vue';
+import { RollbackIcon } from 'tdesign-icons-vue-next';
 import { useRoute, useRouter } from 'vue-router';
 import { useRoute, useRouter } from 'vue-router';
 import { useUserStore, useAppStore } from '@/store';
 import { useUserStore, useAppStore } from '@/store';
 import { MessagePlugin } from 'tdesign-vue-next';
 import { MessagePlugin } from 'tdesign-vue-next';
@@ -285,20 +265,15 @@ const findSuccess = () => {
     position: absolute;
     position: absolute;
   }
   }
   .login-bg {
   .login-bg {
-    position: absolute;
-    top: 80px;
-    bottom: 80px;
-    left: 0;
-    width: 70%;
-    z-index: 99;
-    background: url(../../assets//imgs/login_bg_grid.png) center center
-      no-repeat;
-    background-size: contain;
+    width: 488px;
+    height: 586px;
+    background: url(../../assets//imgs/login_bg.png);
+    background-size: 100% 100%;
+    position: relative;
     .login-bg-inner-box {
     .login-bg-inner-box {
-      img {
-        height: 260px;
-        margin-bottom: 20px;
-      }
+      position: absolute;
+      bottom: 114px;
+      width: 100%;
       .title1 {
       .title1 {
         font-size: 32px;
         font-size: 32px;
         color: #262626;
         color: #262626;
@@ -314,30 +289,37 @@ const findSuccess = () => {
     }
     }
   }
   }
   .login-box {
   .login-box {
-    width: 350px;
+    width: 344px;
     background: #fff;
     background: #fff;
     box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.08);
     box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.08);
     border-radius: 8px;
     border-radius: 8px;
     border: 1px solid #e5e6eb;
     border: 1px solid #e5e6eb;
-    padding: 24px;
-    position: absolute;
-    left: 60%;
-    z-index: 101;
+    padding: 32px;
+    position: relative;
     .title1 {
     .title1 {
       span {
       span {
-        font-size: 20px;
+        font-size: 24px;
         font-weight: bold;
         font-weight: bold;
         color: #262626;
         color: #262626;
         line-height: 32px;
         line-height: 32px;
       }
       }
     }
     }
     .title2 {
     .title2 {
-      font-size: 14px;
+      font-size: 16px;
       color: #8c8c8c;
       color: #8c8c8c;
       line-height: 24px;
       line-height: 24px;
       margin-top: 4px;
       margin-top: 4px;
       margin-bottom: 28px;
       margin-bottom: 28px;
+      font-weight: 400;
     }
     }
   }
   }
+  .login-form {
+    .t-form__item:not(:last-of-type) {
+      margin-bottom: 28px;
+    }
+  }
+  :deep(.t-button--variant-outline:hover) {
+    background-color: #e8f3ff;
+  }
 }
 }
 </style>
 </style>

+ 24 - 8
src/views/my-workbenches/workbenches/message-reminder/index.vue

@@ -31,24 +31,40 @@
         @open="open"
         @open="open"
       ></MessageList>
       ></MessageList>
     </div>
     </div>
+
+    <t-drawer
+      v-model:visible="visible"
+      header="消息"
+      size="80%"
+      :close-btn="true"
+    >
+      <div class="msg-content" v-html="curMsg.content"></div>
+
+      <template #footer>
+        <t-button theme="primary" @click="visible = false">返回</t-button>
+      </template>
+    </t-drawer>
   </div>
   </div>
 </template>
 </template>
 
 
 <script setup name="MessageReminder">
 <script setup name="MessageReminder">
 import { reactive, computed, ref } from 'vue';
 import { reactive, computed, ref } from 'vue';
 import useFetchTable from '@/hooks/useFetchTable';
 import useFetchTable from '@/hooks/useFetchTable';
-import {getMyMessages, setMyMessagesRead} from '@/api/my-workbenches';
+import { getMyMessages, setMyMessagesRead } from '@/api/my-workbenches';
 import { MESSAGE_TYPE } from '@/config/constants';
 import { MESSAGE_TYPE } from '@/config/constants';
 import { dictToOptionList } from '@/utils/tool';
 import { dictToOptionList } from '@/utils/tool';
 import MessageList from './message-list.vue';
 import MessageList from './message-list.vue';
 import { useWorkStore } from '@/store';
 import { useWorkStore } from '@/store';
-import NoticeList from "@/views/my-workbenches/workbenches/notice/notice-list.vue";
-
+import NoticeList from '@/views/my-workbenches/workbenches/notice/notice-list.vue';
+const curMsg = ref({});
+const visible = ref(false);
 const open = (notice) => {
 const open = (notice) => {
-    setMyMessagesRead(notice.id).then(()=> {
-      search()
-      workStore.updateWorkCounts();
-    })
+  setMyMessagesRead(notice.id).then(() => {
+    // search()
+    workStore.updateWorkCounts();
+  });
+  curMsg.value = notice;
+  visible.value = true;
 };
 };
 const workStore = useWorkStore();
 const workStore = useWorkStore();
 const tabs = [
 const tabs = [
@@ -98,7 +114,7 @@ const fields = ref([
     prop: 'types',
     prop: 'types',
     label: '消息类型',
     label: '消息类型',
     type: 'multipleSelect',
     type: 'multipleSelect',
-    labelWidth: 100,
+    labelWidth: 70,
     colSpan: 5,
     colSpan: 5,
     options: dictToOptionList(MESSAGE_TYPE),
     options: dictToOptionList(MESSAGE_TYPE),
     attrs: {
     attrs: {

+ 20 - 9
src/views/my-workbenches/workbenches/message-reminder/message-list.vue

@@ -1,10 +1,21 @@
 <template>
 <template>
   <div class="message-list">
   <div class="message-list">
-    <div class="message-item" v-for="item in tableData" :key="item.id">
+    <div
+      class="message-item cursor-pointer"
+      v-for="item in tableData"
+      :key="item.id"
+      @click="open(item)"
+    >
       <div class="m-head">
       <div class="m-head">
-        <div class="m-title">
-          <t-link hover="color" @click="open(item)">
-          <span>{{ messageTypeFilter(item.messageType) }}</span>
+        <div
+          class="m-title flex items-center"
+          style="max-width: calc(100% - 180px)"
+        >
+          <!-- <t-link hover="color"> -->
+          <!-- <span>{{ messageTypeFilter(item.messageType) }}</span> -->
+          <span class="ellipsis">{{ item.content }}</span>
+
+          <!-- </t-link> -->
           <t-tag
           <t-tag
             theme="danger"
             theme="danger"
             variant="light"
             variant="light"
@@ -12,16 +23,16 @@
             v-if="!item.readStatus"
             v-if="!item.readStatus"
             >未读</t-tag
             >未读</t-tag
           >
           >
-          </t-link>
         </div>
         </div>
+
         <div class="m-time">{{ timestampFilter(item.sendTime, 'mm') }}</div>
         <div class="m-time">{{ timestampFilter(item.sendTime, 'mm') }}</div>
       </div>
       </div>
-      <div class="m-body">
-        <div class="m-content">{{ item.content }}</div>
+      <div class="m-body m-t-10px">
+        <!-- <div class="m-content">{{ item.content }}</div> -->
         <t-space class="m-info" :size="5">
         <t-space class="m-info" :size="5">
           <p>发起人:{{ item.formUser }}</p>
           <p>发起人:{{ item.formUser }}</p>
           <p>服务单元:{{ item.service }} </p>
           <p>服务单元:{{ item.service }} </p>
-          <p>客户类型:{{ item.customType }}</p>
+          <p>客户类型:{{ customerTypeFilter(item.customType) }}</p>
           <p>客户名称:{{ item.custom }}</p>
           <p>客户名称:{{ item.custom }}</p>
           <template #separator>
           <template #separator>
             <t-divider layout="vertical" />
             <t-divider layout="vertical" />
@@ -49,7 +60,7 @@
 </template>
 </template>
 
 
 <script setup name="MessageList">
 <script setup name="MessageList">
-import { messageTypeFilter, timestampFilter } from '@/utils/filter';
+import { timestampFilter, customerTypeFilter } from '@/utils/filter';
 
 
 const { tableData, pagination, onChange } = defineProps([
 const { tableData, pagination, onChange } = defineProps([
   'tableData',
   'tableData',

+ 1 - 1
src/views/my-workbenches/workbenches/my-waits/index.vue

@@ -81,7 +81,7 @@ const fields = ref([
     prop: 'type',
     prop: 'type',
     label: '待办类型',
     label: '待办类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 70,
     colSpan: 5,
     colSpan: 5,
     options: dictToOptionList(WAIT_HANDLE_TYPE),
     options: dictToOptionList(WAIT_HANDLE_TYPE),
     attrs: {
     attrs: {

+ 1 - 1
src/views/my-workbenches/workbenches/notice/index.vue

@@ -128,7 +128,7 @@ const fields = ref([
     prop: 'time',
     prop: 'time',
     label: '发送日期',
     label: '发送日期',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
+    labelWidth: 70,
     colSpan: 10,
     colSpan: 10,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,

+ 8 - 8
src/views/project-quality/project-quality-manage/issues-feedback/index.vue

@@ -130,7 +130,7 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 70,
     colSpan: 6,
     colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
@@ -138,7 +138,7 @@ const fields = ref([
     prop: 'userId',
     prop: 'userId',
     label: '责任人',
     label: '责任人',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 80,
     colSpan: 6,
     colSpan: 6,
     cell: 'user',
     cell: 'user',
   },
   },
@@ -146,7 +146,7 @@ const fields = ref([
     prop: 'type',
     prop: 'type',
     label: '问题类型',
     label: '问题类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 110,
     colSpan: 6,
     colSpan: 6,
     options: dictToOptionList(ISSUES_TYPE),
     options: dictToOptionList(ISSUES_TYPE),
     attrs: {
     attrs: {
@@ -157,7 +157,7 @@ const fields = ref([
     prop: 'reason',
     prop: 'reason',
     label: '问题归因',
     label: '问题归因',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 80,
     colSpan: 6,
     colSpan: 6,
     options: dictToOptionList(ISSUES_REASON_TYPE),
     options: dictToOptionList(ISSUES_REASON_TYPE),
     attrs: {
     attrs: {
@@ -181,7 +181,7 @@ const fields = ref([
     prop: 'degree',
     prop: 'degree',
     label: '影响度',
     label: '影响度',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 70,
     colSpan: 6,
     colSpan: 6,
     options: ISSUES_INFLUENCE_DEGREE.map((item) => {
     options: ISSUES_INFLUENCE_DEGREE.map((item) => {
       return {
       return {
@@ -196,7 +196,7 @@ const fields = ref([
   {
   {
     prop: 'custom',
     prop: 'custom',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
+    labelWidth: 80,
     colSpan: 6,
     colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -205,7 +205,7 @@ const fields = ref([
   {
   {
     prop: 'problemNo',
     prop: 'problemNo',
     label: '质量问题编号',
     label: '质量问题编号',
-    labelWidth: 100,
+    labelWidth: 110,
     colSpan: 12,
     colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -215,7 +215,7 @@ const fields = ref([
     prop: 'submitTime',
     prop: 'submitTime',
     label: '提交时间',
     label: '提交时间',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
+    labelWidth: 70,
     colSpan: 12,
     colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,

+ 20 - 20
src/views/resource-guard/device-guard/registration-query/index.vue

@@ -81,16 +81,16 @@ const fields = ref([
     prop: 'serviceUnitId',
     prop: 'serviceUnitId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
     prop: 'usageType',
     prop: 'usageType',
     label: '用途类型',
     label: '用途类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(DEVICE_USAGE_TYPE),
     options: dictToOptionList(DEVICE_USAGE_TYPE),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -99,16 +99,16 @@ const fields = ref([
   {
   {
     prop: 'userId',
     prop: 'userId',
     label: '登记人',
     label: '登记人',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     cell: 'user',
     cell: 'user',
   },
   },
   {
   {
     prop: 'deviceStatus',
     prop: 'deviceStatus',
     type: 'select',
     type: 'select',
     label: '运行状态',
     label: '运行状态',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(RUNNING_STATUS),
     options: dictToOptionList(RUNNING_STATUS),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -131,8 +131,8 @@ const fields = ref([
     prop: 'inOutTime',
     prop: 'inOutTime',
     label: '出/入库时间',
     label: '出/入库时间',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 10,
+    labelWidth: 90,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',
@@ -141,8 +141,8 @@ const fields = ref([
   {
   {
     prop: 'deviceNo',
     prop: 'deviceNo',
     label: '设备编号',
     label: '设备编号',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -150,8 +150,8 @@ const fields = ref([
   {
   {
     prop: 'customName',
     prop: 'customName',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -159,8 +159,8 @@ const fields = ref([
   {
   {
     prop: 'location',
     prop: 'location',
     label: '当前地',
     label: '当前地',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -168,8 +168,8 @@ const fields = ref([
   {
   {
     prop: 'address',
     prop: 'address',
     label: '发往地',
     label: '发往地',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -177,8 +177,8 @@ const fields = ref([
   {
   {
     prop: 'serialNo',
     prop: 'serialNo',
     label: '登记流水号',
     label: '登记流水号',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },

+ 4 - 4
src/views/resource-guard/person-guard/person-allocate/index.vue

@@ -193,7 +193,7 @@ const fields = ref([
     prop: 'serviceUnitId',
     prop: 'serviceUnitId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 70,
     colSpan: 6,
     colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
@@ -201,20 +201,20 @@ const fields = ref([
     prop: 'province',
     prop: 'province',
     label: '服务区域',
     label: '服务区域',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 80,
     colSpan: 7,
     colSpan: 7,
     cell: 'area',
     cell: 'area',
   },
   },
   {
   {
     prop: 'customName',
     prop: 'customName',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
+    labelWidth: 80,
     colSpan: 5,
     colSpan: 5,
   },
   },
   {
   {
     prop: 'gap',
     prop: 'gap',
     label: '分配差额≤',
     label: '分配差额≤',
-    labelWidth: 100,
+    labelWidth: 85,
     colSpan: 4,
     colSpan: 4,
     type: 'number',
     type: 'number',
     attrs: {
     attrs: {

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

@@ -185,24 +185,24 @@ const fields = ref([
   {
   {
     prop: 'city',
     prop: 'city',
     label: '区域',
     label: '区域',
-    labelWidth: 100,
+    labelWidth: 70,
     type: 'select',
     type: 'select',
-    colSpan: 5,
+    colSpan: 6,
     cell: 'city',
     cell: 'city',
   },
   },
   {
   {
     prop: 'supplierId',
     prop: 'supplierId',
     label: '供应商',
     label: '供应商',
-    labelWidth: 100,
+    labelWidth: 80,
     type: 'select',
     type: 'select',
-    colSpan: 5,
+    colSpan: 6,
     cell: 'supplier',
     cell: 'supplier',
   },
   },
   {
   {
     prop: 'archivesName',
     prop: 'archivesName',
     label: '姓名',
     label: '姓名',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 55,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -210,7 +210,7 @@ const fields = ref([
   {
   {
     prop: 'roleType',
     prop: 'roleType',
     label: '认证角色',
     label: '认证角色',
-    labelWidth: 140,
+    labelWidth: 110,
     type: 'select',
     type: 'select',
     colSpan: 6,
     colSpan: 6,
     options: dictToOptionList(AUTHENTICATION_ROLE),
     options: dictToOptionList(AUTHENTICATION_ROLE),
@@ -236,9 +236,9 @@ const fields = ref([
   {
   {
     prop: 'authenticationStatus',
     prop: 'authenticationStatus',
     label: '认证状态',
     label: '认证状态',
-    labelWidth: 100,
+    labelWidth: 70,
     type: 'select',
     type: 'select',
-    colSpan: 5,
+    colSpan: 6,
     options: dictToOptionList(AUTHENTICATION_STATUS),
     options: dictToOptionList(AUTHENTICATION_STATUS),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -247,9 +247,9 @@ const fields = ref([
   {
   {
     prop: 'archivesTime',
     prop: 'archivesTime',
     label: '入档时间',
     label: '入档时间',
-    labelWidth: 100,
+    labelWidth: 80,
     type: 'daterange',
     type: 'daterange',
-    colSpan: 10,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',
@@ -258,7 +258,7 @@ const fields = ref([
   {
   {
     prop: 'remainValidDay',
     prop: 'remainValidDay',
     label: '剩余有效天数',
     label: '剩余有效天数',
-    labelWidth: 140,
+    labelWidth: 110,
     colSpan: 6,
     colSpan: 6,
     type: 'number',
     type: 'number',
     attrs: {
     attrs: {

+ 9 - 9
src/views/service-unit/dispatch/dispatch-manage/index.vue

@@ -215,8 +215,8 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 80,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
@@ -224,7 +224,7 @@ const fields = ref([
     label: '大区经理',
     label: '大区经理',
     type: 'select',
     type: 'select',
     labelWidth: 80,
     labelWidth: 80,
-    colSpan: 5,
+    colSpan: 6,
     cell: 'lead',
     cell: 'lead',
   },
   },
   {
   {
@@ -232,7 +232,7 @@ const fields = ref([
     label: '客户经理',
     label: '客户经理',
     type: 'select',
     type: 'select',
     labelWidth: 80,
     labelWidth: 80,
-    colSpan: 5,
+    colSpan: 6,
     cell: 'user',
     cell: 'user',
   },
   },
   {
   {
@@ -240,7 +240,7 @@ const fields = ref([
     label: '客户类型',
     label: '客户类型',
     type: 'select',
     type: 'select',
     labelWidth: 80,
     labelWidth: 80,
-    colSpan: 5,
+    colSpan: 6,
     options: dictToOptionList(CUSTOMER_TYPE),
     options: dictToOptionList(CUSTOMER_TYPE),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -262,8 +262,8 @@ const fields = ref([
   {
   {
     prop: 'custom',
     prop: 'custom',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 80,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -272,7 +272,7 @@ const fields = ref([
     prop: 'crmNo',
     prop: 'crmNo',
     label: '项目单号',
     label: '项目单号',
     labelWidth: 80,
     labelWidth: 80,
-    colSpan: 5,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -282,7 +282,7 @@ const fields = ref([
     label: '派单时间',
     label: '派单时间',
     type: 'daterange',
     type: 'daterange',
     labelWidth: 80,
     labelWidth: 80,
-    colSpan: 10,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',

+ 8 - 8
src/views/service-unit/service-unit-manage/range-manage/index.vue

@@ -99,16 +99,16 @@ const fields = ref([
     prop: 'serviceUnitId',
     prop: 'serviceUnitId',
     label: '服务单元名称',
     label: '服务单元名称',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 95,
+    colSpan: 6,
     cell: 'service-unit',
     cell: 'service-unit',
   },
   },
   {
   {
     prop: 'city',
     prop: 'city',
     label: '区域',
     label: '区域',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 55,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -117,8 +117,8 @@ const fields = ref([
     prop: 'productType',
     prop: 'productType',
     label: '客户类型',
     label: '客户类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(CUSTOMER_TYPE),
     options: dictToOptionList(CUSTOMER_TYPE),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -127,8 +127,8 @@ const fields = ref([
   {
   {
     prop: 'customName',
     prop: 'customName',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },

+ 5 - 5
src/views/service-unit/service-unit-manage/regional-planning/index.vue

@@ -93,23 +93,23 @@ const fields = ref([
     label: '服务单元名称',
     label: '服务单元名称',
     type: 'select',
     type: 'select',
     labelWidth: 100,
     labelWidth: 100,
-    colSpan: 5,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
     prop: 'leadId',
     prop: 'leadId',
     label: '大区经理',
     label: '大区经理',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     cell: 'lead',
     cell: 'lead',
   },
   },
   {
   {
     prop: 'city',
     prop: 'city',
     label: '区域',
     label: '区域',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 55,
+    colSpan: 6,
     cell: 'city',
     cell: 'city',
   },
   },
   {
   {

+ 19 - 19
src/views/service-unit/service-unit-manage/unit-manage/index.vue

@@ -152,8 +152,8 @@ const fields = ref([
     prop: 'type',
     prop: 'type',
     label: '业务类型',
     label: '业务类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     options: dictToOptionList(CUSTOMER_TYPE),
     options: dictToOptionList(CUSTOMER_TYPE),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -163,32 +163,21 @@ const fields = ref([
     prop: 'serviceLeadId',
     prop: 'serviceLeadId',
     label: '负责人',
     label: '负责人',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     cell: 'leader',
     cell: 'leader',
   },
   },
   {
   {
     prop: 'status',
     prop: 'status',
     label: '当前状态',
     label: '当前状态',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(SERVICE_UNIT_STATUS),
     options: dictToOptionList(SERVICE_UNIT_STATUS),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
   },
   },
-  {
-    prop: 'createTime',
-    label: '创建时间',
-    type: 'daterange',
-    labelWidth: 100,
-    colSpan: 7,
-    attrs: {
-      clearable: true,
-      valueType: 'time-stamp',
-    },
-  },
   {
   {
     type: 'buttons',
     type: 'buttons',
     colSpan: 2,
     colSpan: 2,
@@ -205,12 +194,23 @@ const fields = ref([
   {
   {
     prop: 'serviceUnitName',
     prop: 'serviceUnitName',
     label: '服务单元名称',
     label: '服务单元名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 110,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
   },
   },
+  {
+    prop: 'createTime',
+    label: '创建时间',
+    type: 'daterange',
+    labelWidth: 70,
+    colSpan: 12,
+    attrs: {
+      clearable: true,
+      valueType: 'time-stamp',
+    },
+  },
 ]);
 ]);
 const params = reactive({
 const params = reactive({
   type: '',
   type: '',

+ 17 - 1
src/views/sop/components/metadata-content.vue

@@ -4,6 +4,7 @@
     <p v-for="(cont, cindex) in optionValData" :key="cindex">{{ cont }}</p>
     <p v-for="(cont, cindex) in optionValData" :key="cindex">{{ cont }}</p>
   </div>
   </div>
   <div v-else-if="config.code === 'DATE'">{{ timestampFilter(value * 1) }}</div>
   <div v-else-if="config.code === 'DATE'">{{ timestampFilter(value * 1) }}</div>
+  <div v-else-if="IS_RADIO_WITH_INPUT">{{ radioWithInputVal }}</div>
   <div v-else>{{ value }}</div>
   <div v-else>{{ value }}</div>
 </template>
 </template>
 
 
@@ -21,6 +22,9 @@ const props = defineProps({
   value: { type: [String, Number] },
   value: { type: [String, Number] },
 });
 });
 
 
+const IS_RADIO_WITH_INPUT = computed(() => {
+  return 'RADIO_WITH_INPUT' === props.config.code;
+});
 const IS_SIMPLE_TYPE = computed(() => {
 const IS_SIMPLE_TYPE = computed(() => {
   return ['NUMBER', 'TEXTAREA', 'TEXT'].includes(props.config.code);
   return ['NUMBER', 'TEXTAREA', 'TEXT'].includes(props.config.code);
 });
 });
@@ -39,7 +43,6 @@ const optionValData = computed(() => {
   options.forEach((item) => {
   options.forEach((item) => {
     optionDict[item.value] = item.label;
     optionDict[item.value] = item.label;
   });
   });
-
   const isMultiple = ['MULTIPLE_SELECT', 'CHECKBOX'].includes(
   const isMultiple = ['MULTIPLE_SELECT', 'CHECKBOX'].includes(
     props.config.code
     props.config.code
   );
   );
@@ -50,4 +53,17 @@ const optionValData = computed(() => {
     return [optionDict[props.value]];
     return [optionDict[props.value]];
   }
   }
 });
 });
+
+const radioWithInputVal = computed(() => {
+  const options =
+    typeof props.config.options === 'string'
+      ? JSON.parse(props.config.options)
+      : props.config.options;
+  let optionDict = {};
+  options.forEach((item) => {
+    optionDict[item.value] = item.label;
+  });
+  const val = props.value ? JSON.parse(props.value) : { input: '', value: '' };
+  return val.input || optionDict[val.value];
+});
 </script>
 </script>

+ 19 - 19
src/views/sop/sop-manage/device-out-in/index.vue

@@ -131,7 +131,7 @@ const fields = ref([
     prop: 'serviceUnitId',
     prop: 'serviceUnitId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 70,
     colSpan: 6,
     colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
@@ -139,7 +139,7 @@ const fields = ref([
     prop: 'usageType',
     prop: 'usageType',
     label: '用途类型',
     label: '用途类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 80,
     colSpan: 6,
     colSpan: 6,
     options: dictToOptionList(DEVICE_USAGE_TYPE),
     options: dictToOptionList(DEVICE_USAGE_TYPE),
     attrs: {
     attrs: {
@@ -158,13 +158,25 @@ const fields = ref([
     prop: 'deviceStatus',
     prop: 'deviceStatus',
     label: '运行状态',
     label: '运行状态',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 80,
     colSpan: 6,
     colSpan: 6,
     options: dictToOptionList(RUNNING_STATUS),
     options: dictToOptionList(RUNNING_STATUS),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
   },
   },
+  {
+    prop: 'deviceNo',
+    label: '设备编号',
+    labelWidth: 70,
+    colSpan: 6,
+  },
+  {
+    prop: 'customName',
+    label: '客户名称',
+    labelWidth: 80,
+    colSpan: 6,
+  },
   {
   {
     prop: 'time',
     prop: 'time',
     label: '出/入库时间',
     label: '出/入库时间',
@@ -176,18 +188,6 @@ const fields = ref([
       valueType: 'time-stamp',
       valueType: 'time-stamp',
     },
     },
   },
   },
-  {
-    prop: 'deviceNo',
-    label: '设备编号',
-    labelWidth: 100,
-    colSpan: 6,
-  },
-  {
-    prop: 'customName',
-    label: '客户名称',
-    labelWidth: 100,
-    colSpan: 6,
-  },
   {
   {
     type: 'buttons',
     type: 'buttons',
     colSpan: 2,
     colSpan: 2,
@@ -204,15 +204,15 @@ const fields = ref([
   {
   {
     prop: 'location',
     prop: 'location',
     label: '当前地',
     label: '当前地',
-    labelWidth: 100,
-    colSpan: 7,
+    labelWidth: 70,
+    colSpan: 6,
     cell: 'location',
     cell: 'location',
   },
   },
   {
   {
     prop: 'address',
     prop: 'address',
     label: '发往地',
     label: '发往地',
-    labelWidth: 100,
-    colSpan: 7,
+    labelWidth: 70,
+    colSpan: 6,
     cell: 'address',
     cell: 'address',
   },
   },
 ]);
 ]);

+ 1 - 1
src/views/sop/sop-manage/office-sop/index.vue

@@ -284,7 +284,7 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 80,
+    labelWidth: 70,
     colSpan: 6,
     colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },

+ 2 - 8
src/views/sop/sop-manage/plan-change/index.vue

@@ -269,20 +269,15 @@ const sopInfo = ref({ ...props.sop });
 const stepHistoryShow = ref(false);
 const stepHistoryShow = ref(false);
 const flowApproveHistoryList = ref([]);
 const flowApproveHistoryList = ref([]);
 
 
-function getFlowApproveHistoryList(data, allStepData) {
+function getFlowApproveHistoryList(data) {
   if (!data) return [];
   if (!data) return [];
 
 
-  let setupData = {};
-  allStepData.forEach((item) => {
-    setupData[item.setup] = item.taskName;
-  });
   let lastTime = 0;
   let lastTime = 0;
   return data.map((item, index) => {
   return data.map((item, index) => {
     let nitem = { ...item };
     let nitem = { ...item };
     nitem.duration =
     nitem.duration =
       index === 0 ? '-' : timeNumberToText(item.createTime - lastTime);
       index === 0 ? '-' : timeNumberToText(item.createTime - lastTime);
     lastTime = item.createTime;
     lastTime = item.createTime;
-    nitem.taskName = setupData[item.approveSetup];
     return nitem;
     return nitem;
   });
   });
 }
 }
@@ -374,8 +369,7 @@ const initData = async () => {
   sopInfo.value.statusStr = props.sop.projectExchangeFlowStatusStr;
   sopInfo.value.statusStr = props.sop.projectExchangeFlowStatusStr;
 
 
   flowApproveHistoryList.value = getFlowApproveHistoryList(
   flowApproveHistoryList.value = getFlowApproveHistoryList(
-    res.flowApproveHistoryList,
-    res.flowTaskHistoryList
+    res.flowApproveHistoryList
   );
   );
 
 
   for (const key in res.tbProjectExchange) {
   for (const key in res.tbProjectExchange) {

+ 16 - 16
src/views/sop/sop-manage/project-change-report/index.vue

@@ -132,24 +132,24 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 70,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
     prop: 'createUserId',
     prop: 'createUserId',
     label: '提交人',
     label: '提交人',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 80,
+    colSpan: 6,
     cell: 'user',
     cell: 'user',
   },
   },
   {
   {
     prop: 'type',
     prop: 'type',
     label: '变更类型',
     label: '变更类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 110,
+    colSpan: 6,
     options: dictToOptionList(PLAN_CHANGE_TYPE),
     options: dictToOptionList(PLAN_CHANGE_TYPE),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -159,8 +159,8 @@ const fields = ref([
     prop: 'customType',
     prop: 'customType',
     label: '客户类型',
     label: '客户类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(CUSTOMER_TYPE),
     options: dictToOptionList(CUSTOMER_TYPE),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -170,8 +170,8 @@ const fields = ref([
     prop: 'flowStatus',
     prop: 'flowStatus',
     label: '流程状态',
     label: '流程状态',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 70,
+    colSpan: 6,
     options: dictToOptionList(FLOW_CHECK_STATUS),
     options: dictToOptionList(FLOW_CHECK_STATUS),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -193,8 +193,8 @@ const fields = ref([
   {
   {
     prop: 'customName',
     prop: 'customName',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -202,8 +202,8 @@ const fields = ref([
   {
   {
     prop: 'exchangeNo',
     prop: 'exchangeNo',
     label: '变更申请编号',
     label: '变更申请编号',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 110,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -212,8 +212,8 @@ const fields = ref([
     prop: 'time',
     prop: 'time',
     label: '提交时间',
     label: '提交时间',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 9,
+    labelWidth: 70,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',

+ 2 - 8
src/views/sop/sop-manage/quality-issue/index.vue

@@ -182,20 +182,15 @@ const emit = defineEmits(['confirm', 'cancel']);
 
 
 const stepHistoryShow = ref(false);
 const stepHistoryShow = ref(false);
 const flowApproveHistoryList = ref([]);
 const flowApproveHistoryList = ref([]);
-function getFlowApproveHistoryList(data, allStepData) {
+function getFlowApproveHistoryList(data) {
   if (!data) return [];
   if (!data) return [];
 
 
-  let setupData = {};
-  allStepData.forEach((item) => {
-    setupData[item.setup] = item.taskName;
-  });
   let lastTime = 0;
   let lastTime = 0;
   return data.map((item, index) => {
   return data.map((item, index) => {
     let nitem = { ...item };
     let nitem = { ...item };
     nitem.duration =
     nitem.duration =
       index === 0 ? '-' : timeNumberToText(item.createTime - lastTime);
       index === 0 ? '-' : timeNumberToText(item.createTime - lastTime);
     lastTime = item.createTime;
     lastTime = item.createTime;
-    nitem.taskName = setupData[item.approveSetup];
     return nitem;
     return nitem;
   });
   });
 }
 }
@@ -325,8 +320,7 @@ const initFill = async () => {
     });
     });
   });
   });
   flowApproveHistoryList.value = getFlowApproveHistoryList(
   flowApproveHistoryList.value = getFlowApproveHistoryList(
-    res.flowApproveHistoryList,
-    allSteps.value
+    res.flowApproveHistoryList
   );
   );
   loading.value = false;
   loading.value = false;
 };
 };

+ 3 - 10
src/views/sop/sop-manage/sop-step/index.vue

@@ -320,20 +320,15 @@ const stepHistoryShow = ref(false);
 const flowApproveHistoryList = ref([]);
 const flowApproveHistoryList = ref([]);
 const stepDuration = ref('');
 const stepDuration = ref('');
 
 
-function getFlowApproveHistoryList(data, allStepData) {
+function getFlowApproveHistoryList(data) {
   if (!data) return [];
   if (!data) return [];
 
 
-  let setupData = {};
-  allStepData.forEach((item) => {
-    setupData[item.setup] = item.taskName;
-  });
   let lastTime = 0;
   let lastTime = 0;
   return data.map((item, index) => {
   return data.map((item, index) => {
     let nitem = { ...item };
     let nitem = { ...item };
     nitem.duration =
     nitem.duration =
       index === 0 ? '-' : timeNumberToText(item.createTime - lastTime);
       index === 0 ? '-' : timeNumberToText(item.createTime - lastTime);
     lastTime = item.createTime;
     lastTime = item.createTime;
-    nitem.taskName = setupData[item.approveSetup];
     return nitem;
     return nitem;
   });
   });
 }
 }
@@ -400,8 +395,7 @@ const initFill = async () => {
     });
     });
   });
   });
   flowApproveHistoryList.value = getFlowApproveHistoryList(
   flowApproveHistoryList.value = getFlowApproveHistoryList(
-    res.flowApproveHistoryList,
-    allSteps.value
+    res.flowApproveHistoryList
   );
   );
 };
 };
 const initEdit = async () => {
 const initEdit = async () => {
@@ -415,8 +409,7 @@ const initEdit = async () => {
     (a, b) => a.setup - b.setup
     (a, b) => a.setup - b.setup
   );
   );
   flowApproveHistoryList.value = getFlowApproveHistoryList(
   flowApproveHistoryList.value = getFlowApproveHistoryList(
-    res.flowApproveHistoryList,
-    allSteps.value
+    res.flowApproveHistoryList
   );
   );
   let allFormMap = {};
   let allFormMap = {};
   allSteps.value.forEach((item) => {
   allSteps.value.forEach((item) => {

+ 1 - 1
src/views/sop/sop-manage/student-sop/index.vue

@@ -282,7 +282,7 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 80,
+    labelWidth: 70,
     colSpan: 5,
     colSpan: 5,
     cell: 'service',
     cell: 'service',
   },
   },

+ 8 - 8
src/views/sop/sop-monitor/delay-warning/index.vue

@@ -191,8 +191,8 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
@@ -201,7 +201,7 @@ const fields = ref([
     type: 'select',
     type: 'select',
     labelWidth: 80,
     labelWidth: 80,
     options: dictToOptionList(WARN_TYPE),
     options: dictToOptionList(WARN_TYPE),
-    colSpan: 5,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -212,7 +212,7 @@ const fields = ref([
     type: 'select',
     type: 'select',
     labelWidth: 80,
     labelWidth: 80,
     options: dictToOptionList(WARN_FLOW_STATUS),
     options: dictToOptionList(WARN_FLOW_STATUS),
-    colSpan: 5,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -221,7 +221,7 @@ const fields = ref([
     prop: 'custom',
     prop: 'custom',
     label: '客户名称',
     label: '客户名称',
     labelWidth: 80,
     labelWidth: 80,
-    colSpan: 5,
+    colSpan: 6,
   },
   },
   {
   {
     type: 'buttons',
     type: 'buttons',
@@ -240,14 +240,14 @@ const fields = ref([
     prop: 'sopNo',
     prop: 'sopNo',
     label: 'SOP流水号',
     label: 'SOP流水号',
     labelWidth: 80,
     labelWidth: 80,
-    colSpan: 5,
+    colSpan: 6,
   },
   },
   {
   {
     prop: 'time',
     prop: 'time',
     label: '预警时间',
     label: '预警时间',
     type: 'daterange',
     type: 'daterange',
     labelWidth: 80,
     labelWidth: 80,
-    colSpan: 10,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',
@@ -257,7 +257,7 @@ const fields = ref([
     prop: 'fieldObj',
     prop: 'fieldObj',
     label: '预警字段',
     label: '预警字段',
     labelWidth: 80,
     labelWidth: 80,
-    colSpan: 5,
+    colSpan: 6,
   },
   },
 ]);
 ]);
 const params = reactive({
 const params = reactive({

+ 16 - 16
src/views/sop/sop-monitor/violation-registration/index.vue

@@ -192,17 +192,17 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 70,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
     prop: 'type',
     prop: 'type',
     label: '违规类型',
     label: '违规类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 95,
     options: dictToOptionList(VIOLATION_TYPE),
     options: dictToOptionList(VIOLATION_TYPE),
-    colSpan: 4.5,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -211,9 +211,9 @@ const fields = ref([
     prop: 'status',
     prop: 'status',
     label: '跟进状态',
     label: '跟进状态',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
+    labelWidth: 80,
     options: dictToOptionList(VIOLATION_FLOW_STATUS),
     options: dictToOptionList(VIOLATION_FLOW_STATUS),
-    colSpan: 4.5,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -222,8 +222,8 @@ const fields = ref([
     prop: 'userId',
     prop: 'userId',
     label: '节点负责人',
     label: '节点负责人',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 90,
+    colSpan: 6,
     cell: 'user',
     cell: 'user',
   },
   },
   {
   {
@@ -242,28 +242,28 @@ const fields = ref([
   {
   {
     prop: 'custom',
     prop: 'custom',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 70,
+    colSpan: 6,
   },
   },
   {
   {
     prop: 'sopNo',
     prop: 'sopNo',
     label: 'SOP流水号',
     label: 'SOP流水号',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 95,
+    colSpan: 6,
   },
   },
   {
   {
     prop: 'createId',
     prop: 'createId',
     label: '登记人',
     label: '登记人',
-    labelWidth: 100,
-    colSpan: 4.5,
+    labelWidth: 80,
+    colSpan: 6,
     cell: 'creator',
     cell: 'creator',
   },
   },
   {
   {
     prop: 'time',
     prop: 'time',
     label: '登记时间',
     label: '登记时间',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 9,
+    labelWidth: 70,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',

+ 14 - 14
src/views/system/config-manage/checkin-manage/index.vue

@@ -139,8 +139,8 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元名称',
     label: '服务单元名称',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 95,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -150,8 +150,8 @@ const fields = ref([
     prop: 'status',
     prop: 'status',
     label: '服务单元发布状态',
     label: '服务单元发布状态',
     type: 'select',
     type: 'select',
-    labelWidth: 160,
-    colSpan: 5,
+    labelWidth: 135,
+    colSpan: 6,
     options: dictToOptionList(SERVICE_UNIT_STATUS),
     options: dictToOptionList(SERVICE_UNIT_STATUS),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -161,16 +161,16 @@ const fields = ref([
     prop: 'supplierIds',
     prop: 'supplierIds',
     label: '适用供应商',
     label: '适用供应商',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 95,
+    colSpan: 6,
     cell: 'supplier',
     cell: 'supplier',
   },
   },
   {
   {
     prop: 'dingRoleIds',
     prop: 'dingRoleIds',
     label: '适用考勤对象',
     label: '适用考勤对象',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 110,
+    colSpan: 6,
     cell: 'dingRole',
     cell: 'dingRole',
   },
   },
   {
   {
@@ -190,16 +190,16 @@ const fields = ref([
     prop: 'approveRoleIds',
     prop: 'approveRoleIds',
     label: '审核角色',
     label: '审核角色',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 95,
+    colSpan: 6,
     cell: 'approveRole',
     cell: 'approveRole',
   },
   },
   {
   {
     prop: 'faceOpen',
     prop: 'faceOpen',
     label: '是否开启人脸',
     label: '是否开启人脸',
     type: 'select',
     type: 'select',
-    labelWidth: 160,
-    colSpan: 5,
+    labelWidth: 135,
+    colSpan: 6,
     options: [
     options: [
       {
       {
         label: '是',
         label: '是',
@@ -218,8 +218,8 @@ const fields = ref([
     prop: 'createTime',
     prop: 'createTime',
     label: '创建时间',
     label: '创建时间',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 10,
+    labelWidth: 95,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',

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

@@ -119,8 +119,8 @@ const fields = ref([
     prop: 'type',
     prop: 'type',
     label: '客户类型',
     label: '客户类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     options: dictToOptionList(CUSTOMER_TYPE),
     options: dictToOptionList(CUSTOMER_TYPE),
   },
   },
   {
   {
@@ -128,14 +128,14 @@ const fields = ref([
     cell: 'manager',
     cell: 'manager',
     label: '客户经理',
     label: '客户经理',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
   },
   },
   {
   {
     prop: 'name',
     prop: 'name',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       placeholder: '消息名称模糊查询',
       placeholder: '消息名称模糊查询',
       clearable: true,
       clearable: true,
@@ -146,8 +146,8 @@ const fields = ref([
     cell: 'level',
     cell: 'level',
     label: '服务档位',
     label: '服务档位',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
   },
   },
   {
   {
     type: 'buttons',
     type: 'buttons',

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

@@ -207,29 +207,29 @@ const fields = ref([
     prop: 'supplierId',
     prop: 'supplierId',
     label: '设备供应商',
     label: '设备供应商',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     cell: 'supplier',
     cell: 'supplier',
   },
   },
   {
   {
     prop: 'brand',
     prop: 'brand',
     label: '品牌',
     label: '品牌',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
   },
   },
   {
   {
     prop: 'model',
     prop: 'model',
     label: '型号',
     label: '型号',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
   },
   },
   {
   {
     prop: 'deviceCode',
     prop: 'deviceCode',
     label: '设备编号',
     label: '设备编号',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -251,8 +251,8 @@ const fields = ref([
     prop: 'status',
     prop: 'status',
     label: '运行状态',
     label: '运行状态',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(RUNNING_STATUS),
     options: dictToOptionList(RUNNING_STATUS),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -262,8 +262,8 @@ const fields = ref([
     prop: 'bound',
     prop: 'bound',
     label: '出库/入库',
     label: '出库/入库',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     options: dictToOptionList(INOUT_TYPE),
     options: dictToOptionList(INOUT_TYPE),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -273,8 +273,8 @@ const fields = ref([
     prop: 'enable',
     prop: 'enable',
     label: '启用/禁用',
     label: '启用/禁用',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     options: dictToOptionList(ABLE_TYPE),
     options: dictToOptionList(ABLE_TYPE),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,

+ 4 - 4
src/views/system/notice-log/log-manage/index.vue

@@ -41,8 +41,8 @@ const fields = ref([
     prop: 'createTime',
     prop: 'createTime',
     label: '时间范围',
     label: '时间范围',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 7,
+    labelWidth: 70,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',
@@ -51,8 +51,8 @@ const fields = ref([
   {
   {
     prop: 'content',
     prop: 'content',
     label: '关键字',
     label: '关键字',
-    labelWidth: 80,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     attrs: {
     attrs: {
       placeholder: '内容关键字模糊查询',
       placeholder: '内容关键字模糊查询',
       clearable: true,
       clearable: true,

+ 1 - 1
src/views/system/notice-log/notice-manage/edit-notice-dialog.vue

@@ -78,7 +78,7 @@
         >
         >
         <div>
         <div>
           <t-button theme="default" @click="save(false)">保存草稿</t-button>
           <t-button theme="default" @click="save(false)">保存草稿</t-button>
-          <t-button theme="primary" ghost @click="onPreview">预览</t-button>
+<!--          <t-button theme="primary" ghost @click="onPreview">预览</t-button>-->
           <t-button theme="primary" @click="save(true)">保存并发布</t-button>
           <t-button theme="primary" @click="save(true)">保存并发布</t-button>
         </div>
         </div>
       </div>
       </div>

+ 30 - 31
src/views/system/notice-log/notice-manage/index.vue

@@ -40,19 +40,16 @@
           {{ noticeTypeFilter(row[col.colKey]) }}
           {{ noticeTypeFilter(row[col.colKey]) }}
         </template>
         </template>
         <template #name="{ col, row }">
         <template #name="{ col, row }">
-          <t-link
-              hover="color"
-              @click="open(row)"
-          >
-          <span>{{ row.title }}</span>
-          <span>
-            【 {{ row.createName + ':'
-            }}{{
-              row.status === 'PUBLISH'
-                ? timestampFilter(row.publishTime)
-                : '暂未发布'
-            }}】
-          </span>
+          <t-link hover="color" @click="open(row)">
+            <span>{{ row.title }}</span>
+            <span>
+              【 {{ row.createName + ':'
+              }}{{
+                row.status === 'PUBLISH'
+                  ? timestampFilter(row.publishTime)
+                  : '暂未发布'
+              }}】
+            </span>
           </t-link>
           </t-link>
         </template>
         </template>
         <template #status="{ col, row }">
         <template #status="{ col, row }">
@@ -118,13 +115,15 @@
       :curRow="curRow"
       :curRow="curRow"
     ></notice-message-dialog>
     ></notice-message-dialog>
     <t-drawer
     <t-drawer
-        v-model:visible="visible"
-        header="通知公告"
-        size="80%"
-        :close-btn="true"
+      v-model:visible="visible"
+      header="通知公告"
+      size="80%"
+      :close-btn="true"
     >
     >
       <h2 class="text-center notice-title">{{ curRow?.title }}</h2>
       <h2 class="text-center notice-title">{{ curRow?.title }}</h2>
-      <div class="text-center notice-subtitle">创建时间:{{ timestampFilter(curRow?.createTime) }}</div>
+      <div class="text-center notice-subtitle"
+        >创建时间:{{ timestampFilter(curRow?.createTime) }}</div
+      >
       <div class="notice-content" v-html="curRow?.content"></div>
       <div class="notice-content" v-html="curRow?.content"></div>
 
 
       <template #footer>
       <template #footer>
@@ -147,7 +146,7 @@ import {
   noticePublishApi,
   noticePublishApi,
   noticeCancelPublishApi,
   noticeCancelPublishApi,
 } from '@/api/system';
 } from '@/api/system';
-import {dateFormat, dictToOptionList} from '@/utils/tool';
+import { dateFormat, dictToOptionList } from '@/utils/tool';
 import { NOTICE_TYPE, PUBLISH_STATUS } from '@/config/constants';
 import { NOTICE_TYPE, PUBLISH_STATUS } from '@/config/constants';
 import { noticeTypeFilter, timestampFilter } from '@/utils/filter';
 import { noticeTypeFilter, timestampFilter } from '@/utils/filter';
 import usePermission from '@/hooks/usePermission';
 import usePermission from '@/hooks/usePermission';
@@ -163,8 +162,8 @@ const fields = ref([
     prop: 'status',
     prop: 'status',
     label: '发布状态',
     label: '发布状态',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     options: dictToOptionList(PUBLISH_STATUS),
     options: dictToOptionList(PUBLISH_STATUS),
   },
   },
   {
   {
@@ -172,7 +171,7 @@ const fields = ref([
     label: '类型',
     label: '类型',
     type: 'select',
     type: 'select',
     labelWidth: 60,
     labelWidth: 60,
-    colSpan: 5,
+    colSpan: 6,
     options: dictToOptionList(NOTICE_TYPE),
     options: dictToOptionList(NOTICE_TYPE),
   },
   },
   {
   {
@@ -180,7 +179,7 @@ const fields = ref([
     label: '发布时间',
     label: '发布时间',
     type: 'daterange',
     type: 'daterange',
     labelWidth: 100,
     labelWidth: 100,
-    colSpan: 7,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',
@@ -189,8 +188,8 @@ const fields = ref([
   {
   {
     prop: 'query',
     prop: 'query',
     label: '消息名称',
     label: '消息名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     attrs: {
     attrs: {
       placeholder: '消息名称模糊查询',
       placeholder: '消息名称模糊查询',
       clearable: true,
       clearable: true,
@@ -334,10 +333,10 @@ const handlePublish = (row) => {
     font-size: 13px;
     font-size: 13px;
     margin-top: 6px;
     margin-top: 6px;
   }
   }
-//.notice-content {
-//  font-size: 14px;
-//  margin-top: 10px;
-//  text-indent: 2em;
-//}
+  //.notice-content {
+  //  font-size: 14px;
+  //  margin-top: 10px;
+  //  text-indent: 2em;
+  //}
 }
 }
-</style>
+</style>

+ 6 - 6
src/views/system/task/task-manage/index.vue

@@ -100,15 +100,15 @@ const fields = ref([
     prop: 'type',
     prop: 'type',
     label: '任务类型',
     label: '任务类型',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
   },
   },
   {
   {
     prop: 'status',
     prop: 'status',
     label: '任务状态',
     label: '任务状态',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(DATA_TASK_STATUS),
     options: dictToOptionList(DATA_TASK_STATUS),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -118,8 +118,8 @@ const fields = ref([
     prop: 'result',
     prop: 'result',
     label: '任务结果',
     label: '任务结果',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(DATA_TASK_RESULT),
     options: dictToOptionList(DATA_TASK_RESULT),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,

+ 2 - 8
src/views/work-hours/work-hours-manage/abnormal-check/abnormal-detail-dialog.vue

@@ -199,20 +199,15 @@ const getUrls = (type) => {
   }
   }
 };
 };
 
 
-function getFlowApproveHistoryList(data, allStepData) {
+function getFlowApproveHistoryList(data) {
   if (!data) return [];
   if (!data) return [];
 
 
-  let setupData = {};
-  allStepData.forEach((item) => {
-    setupData[item.setup] = item.taskName;
-  });
   let lastTime = 0;
   let lastTime = 0;
   return data.map((item, index) => {
   return data.map((item, index) => {
     let nitem = { ...item };
     let nitem = { ...item };
     nitem.duration =
     nitem.duration =
       index === 0 ? '-' : timeNumberToText(item.createTime - lastTime);
       index === 0 ? '-' : timeNumberToText(item.createTime - lastTime);
     lastTime = item.createTime;
     lastTime = item.createTime;
-    nitem.taskName = setupData[item.approveSetup];
     return nitem;
     return nitem;
   });
   });
 }
 }
@@ -221,8 +216,7 @@ const initDetail = async () => {
   flowApproveHistoryList.value = [];
   flowApproveHistoryList.value = [];
   const res = await workHoursCheckDetailApi(props.row.objId);
   const res = await workHoursCheckDetailApi(props.row.objId);
   flowApproveHistoryList.value = getFlowApproveHistoryList(
   flowApproveHistoryList.value = getFlowApproveHistoryList(
-    res.flowApproveHistoryList,
-    res.flowTaskHistoryList
+    res.flowApproveHistoryList
   );
   );
 };
 };
 const toViewHistory = () => {
 const toViewHistory = () => {

+ 14 - 14
src/views/work-hours/work-hours-manage/abnormal-check/done-check.vue

@@ -77,15 +77,15 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
     prop: 'name',
     prop: 'name',
     label: '姓名',
     label: '姓名',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -94,16 +94,16 @@ const fields = ref([
     prop: 'supplierId',
     prop: 'supplierId',
     label: '所属供应商',
     label: '所属供应商',
     type: 'select',
     type: 'select',
-    labelWidth: 120,
-    colSpan: 5,
+    labelWidth: 95,
+    colSpan: 6,
     cell: 'supplier',
     cell: 'supplier',
   },
   },
   {
   {
     prop: 'dingExceptionApprove',
     prop: 'dingExceptionApprove',
     label: '审核结果',
     label: '审核结果',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(AUDITING_RESULT),
     options: dictToOptionList(AUDITING_RESULT),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -112,8 +112,8 @@ const fields = ref([
   {
   {
     prop: 'customName',
     prop: 'customName',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -122,8 +122,8 @@ const fields = ref([
     prop: 'exceptionTime',
     prop: 'exceptionTime',
     label: '异常时间',
     label: '异常时间',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 10,
+    labelWidth: 80,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',
@@ -133,8 +133,8 @@ const fields = ref([
     prop: 'applyTime',
     prop: 'applyTime',
     label: '申请时间',
     label: '申请时间',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 10,
+    labelWidth: 70,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',

+ 12 - 12
src/views/work-hours/work-hours-manage/abnormal-check/wait-check.vue

@@ -125,15 +125,15 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 70,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
     prop: 'name',
     prop: 'name',
     label: '姓名',
     label: '姓名',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 55,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -142,15 +142,15 @@ const fields = ref([
     prop: 'supplierId',
     prop: 'supplierId',
     label: '所属供应商',
     label: '所属供应商',
     type: 'select',
     type: 'select',
-    labelWidth: 120,
-    colSpan: 5,
+    labelWidth: 95,
+    colSpan: 6,
     cell: 'supplier',
     cell: 'supplier',
   },
   },
   {
   {
     prop: 'customName',
     prop: 'customName',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -172,8 +172,8 @@ const fields = ref([
     prop: 'exceptionTime',
     prop: 'exceptionTime',
     label: '异常时间',
     label: '异常时间',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 10,
+    labelWidth: 70,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',
@@ -183,8 +183,8 @@ const fields = ref([
     prop: 'applyTime',
     prop: 'applyTime',
     label: '申请时间',
     label: '申请时间',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 10,
+    labelWidth: 95,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',

+ 18 - 18
src/views/work-hours/work-hours-manage/work-attendance-detail/index.vue

@@ -76,15 +76,15 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
     prop: 'userName',
     prop: 'userName',
     label: '姓名',
     label: '姓名',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -93,8 +93,8 @@ const fields = ref([
     prop: 'createTime',
     prop: 'createTime',
     label: '考勤日期',
     label: '考勤日期',
     type: 'daterange',
     type: 'daterange',
-    labelWidth: 100,
-    colSpan: 10,
+    labelWidth: 90,
+    colSpan: 12,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
       valueType: 'time-stamp',
       valueType: 'time-stamp',
@@ -118,15 +118,15 @@ const fields = ref([
     prop: 'supplierId',
     prop: 'supplierId',
     label: '所属供应商',
     label: '所属供应商',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     cell: 'supplier',
     cell: 'supplier',
   },
   },
   {
   {
     prop: 'custom',
     prop: 'custom',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -134,8 +134,8 @@ const fields = ref([
   {
   {
     prop: 'sopNo',
     prop: 'sopNo',
     label: 'SOP流水号',
     label: 'SOP流水号',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -144,8 +144,8 @@ const fields = ref([
     prop: 'abnormal',
     prop: 'abnormal',
     type: 'number',
     type: 'number',
     label: '考勤异常数',
     label: '考勤异常数',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     attrs: {
     attrs: {
       theme: 'column',
       theme: 'column',
       decimalPlaces: 0,
       decimalPlaces: 0,
@@ -159,8 +159,8 @@ const fields = ref([
     prop: 'type',
     prop: 'type',
     type: 'select',
     type: 'select',
     label: '考勤类型',
     label: '考勤类型',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     options: dictToOptionList(ATTENDANCE_TYPE),
     options: dictToOptionList(ATTENDANCE_TYPE),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -170,8 +170,8 @@ const fields = ref([
     prop: 'status',
     prop: 'status',
     type: 'select',
     type: 'select',
     label: '考勤结果',
     label: '考勤结果',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(ATTENDANCE_RESULT),
     options: dictToOptionList(ATTENDANCE_RESULT),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,

+ 22 - 22
src/views/work-hours/work-hours-manage/work-attendance/index.vue

@@ -159,16 +159,16 @@ const fields = ref([
     prop: 'serviceUnitId',
     prop: 'serviceUnitId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
     prop: 'dingSubmitStatusDesc',
     prop: 'dingSubmitStatusDesc',
     label: '提交状态',
     label: '提交状态',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 110,
+    colSpan: 6,
     options: [
     options: [
       {
       {
         value: '已提交',
         value: '已提交',
@@ -187,15 +187,15 @@ const fields = ref([
     prop: 'submitUserId',
     prop: 'submitUserId',
     label: '提交人',
     label: '提交人',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 110,
+    colSpan: 6,
     cell: 'creator',
     cell: 'creator',
   },
   },
   {
   {
     prop: 'archivesName',
     prop: 'archivesName',
     label: '姓名',
     label: '姓名',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -218,15 +218,15 @@ const fields = ref([
     prop: 'supplierId',
     prop: 'supplierId',
     label: '所属供应商',
     label: '所属供应商',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     cell: 'supplier',
     cell: 'supplier',
   },
   },
   {
   {
     prop: 'customName',
     prop: 'customName',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 110,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -234,8 +234,8 @@ const fields = ref([
   {
   {
     prop: 'sopNo',
     prop: 'sopNo',
     label: 'SOP流水号',
     label: 'SOP流水号',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 110,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -244,8 +244,8 @@ const fields = ref([
     prop: 'violationHoursLimit',
     prop: 'violationHoursLimit',
     type: 'number',
     type: 'number',
     label: '违规工时',
     label: '违规工时',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       theme: 'column',
       theme: 'column',
       decimalPlaces: 0,
       decimalPlaces: 0,
@@ -259,8 +259,8 @@ const fields = ref([
     prop: 'dingExceptionLimit',
     prop: 'dingExceptionLimit',
     type: 'number',
     type: 'number',
     label: '考勤异常数',
     label: '考勤异常数',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     attrs: {
     attrs: {
       theme: 'column',
       theme: 'column',
       decimalPlaces: 0,
       decimalPlaces: 0,
@@ -274,8 +274,8 @@ const fields = ref([
     prop: 'remainLimit',
     prop: 'remainLimit',
     type: 'number',
     type: 'number',
     label: '剩余补卡次数',
     label: '剩余补卡次数',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 110,
+    colSpan: 6,
     attrs: {
     attrs: {
       theme: 'column',
       theme: 'column',
       decimalPlaces: 0,
       decimalPlaces: 0,
@@ -289,8 +289,8 @@ const fields = ref([
     prop: 'exceptionLimit',
     prop: 'exceptionLimit',
     type: 'number',
     type: 'number',
     label: '待处理异常数',
     label: '待处理异常数',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 110,
+    colSpan: 6,
     attrs: {
     attrs: {
       theme: 'column',
       theme: 'column',
       decimalPlaces: 0,
       decimalPlaces: 0,

+ 16 - 16
src/views/work-hours/work-hours-manage/work-statistics/index.vue

@@ -106,16 +106,16 @@ const fields = ref([
     prop: 'serviceId',
     prop: 'serviceId',
     label: '服务单元',
     label: '服务单元',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     cell: 'service',
     cell: 'service',
   },
   },
   {
   {
     prop: 'status',
     prop: 'status',
     label: '提交状态',
     label: '提交状态',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     options: dictToOptionList(FLOW_STATUS),
     options: dictToOptionList(FLOW_STATUS),
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
@@ -125,15 +125,15 @@ const fields = ref([
     prop: 'createId',
     prop: 'createId',
     label: '提交人',
     label: '提交人',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 95,
+    colSpan: 6,
     cell: 'creator',
     cell: 'creator',
   },
   },
   {
   {
     prop: 'userName',
     prop: 'userName',
     label: '姓名',
     label: '姓名',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -156,15 +156,15 @@ const fields = ref([
     prop: 'supplierId',
     prop: 'supplierId',
     label: '所属供应商',
     label: '所属供应商',
     type: 'select',
     type: 'select',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 90,
+    colSpan: 6,
     cell: 'supplier',
     cell: 'supplier',
   },
   },
   {
   {
     prop: 'custom',
     prop: 'custom',
     label: '客户名称',
     label: '客户名称',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -172,8 +172,8 @@ const fields = ref([
   {
   {
     prop: 'sopNo',
     prop: 'sopNo',
     label: 'SOP流水号',
     label: 'SOP流水号',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 95,
+    colSpan: 6,
     attrs: {
     attrs: {
       clearable: true,
       clearable: true,
     },
     },
@@ -182,8 +182,8 @@ const fields = ref([
     prop: 'days',
     prop: 'days',
     type: 'number',
     type: 'number',
     label: '违规工时',
     label: '违规工时',
-    labelWidth: 100,
-    colSpan: 5,
+    labelWidth: 80,
+    colSpan: 6,
     attrs: {
     attrs: {
       theme: 'column',
       theme: 'column',
       decimalPlaces: 0,
       decimalPlaces: 0,