刘洋 1 éve
szülő
commit
886bdd72d7

+ 1 - 1
package.json

@@ -34,7 +34,7 @@
     "pinia-plugin-persistedstate": "^3.2.0",
     "qs": "^6.11.2",
     "spark-md5": "^3.0.2",
-    "tdesign-vue-next": "^1.4.2",
+    "tdesign-vue-next": "^1.5.1",
     "tvision-color": "^1.5.0",
     "unplugin-vue-setup-extend-plus": "^1.0.0",
     "vue": "^3.3.4",

+ 6 - 0
src/api/my-workbenches.js

@@ -5,3 +5,9 @@ export const getMyMessages = (data) =>
     url: '/api/sys/message/pageByTypes',
     params: data,
   });
+
+export const getMyWaits = (data) =>
+  request({
+    url: 'api/admin/flow/task/list',
+    params: data,
+  });

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
src/assets/none_message.svg


+ 12 - 4
src/config/constants.js

@@ -115,19 +115,27 @@ export const FLOW_STATUS = {
   END: '已终止',
   FINISH: '已结束',
 };
-
+//工作台-消息类型
 export const MESSAGE_TYPE = {
-  // BEFORE: '提前提醒',
-  // AFTER: '延期提醒',
+  BEFORE: '提前提醒',
+  AFTER: '延期提醒',
   // OFFICE_SOP: '教务处SOP',
   // CLOUD_MARK_SOP: '云阅卷SOP',
   QUALITY: '质量问题提醒',
   EXCEPTION_APPROVE: '异常审核提醒',
   VIOLATION: '违规提醒',
   SYSTEM_PLAN_CHANGE: '系统计划变更提醒',
-  SYSTEM: '系统公告',
+  // SYSTEM: '系统公告',
 };
 
+//工作台-待办类型
+export const WAIT_HANDLE_TYPE = {
+  OFFICE_SOP_FLOW: '教务处SOP',
+  CLOUD_MARK_SOP_FLOW: '云阅卷SOP',
+  DING_EXCEPTION_FLOW: '考勤异常审核流程',
+  PROJECT_EXCHANGE_FLOW: '项目计划变更流程',
+  QUALITY_PROBLEM_FLOW: '质量问题反馈流程',
+};
 // SOP管理-延期预警-预警类型
 export const WARN_TYPE = {
   PLAN: '关键信息及计划',

+ 1 - 1
src/layout/index.vue

@@ -42,7 +42,7 @@
             >
               <t-button theme="default" variant="outline" shape="square">
                 <t-icon
-                  name="chevron-down"
+                  name="palette"
                   size="24"
                   color="#fff"
                   :style="{ background: themeColor, borderRadius: '2px' }"

+ 2 - 2
src/router/modules/myWorkbenches.js

@@ -35,9 +35,9 @@ export default {
         },
         {
           name: 'MyTasks',
-          path: '/my-workbenches/workbenches/my-tasks',
+          path: '/my-workbenches/workbenches/my-waits',
           component: () =>
-            import('@/views/my-workbenches/workbenches/my-tasks/index.vue'),
+            import('@/views/my-workbenches/workbenches/my-waits/index.vue'),
           meta: {
             title: '待办任务',
             sort: 2,

+ 9 - 2
src/views/my-workbenches/workbenches/message-reminder/index.vue

@@ -31,7 +31,14 @@
             :onChange="onChange"
           ></MessageList>
         </t-tab-panel>
-        <t-tab-panel value="true" label="已读">111</t-tab-panel>
+        <t-tab-panel value="true" label="已读">
+          <MessageList
+            :loading="loading"
+            :tableData="tableData"
+            :pagination="pagination"
+            :onChange="onChange"
+          ></MessageList>
+        </t-tab-panel>
       </t-tabs>
     </div>
   </div>
@@ -73,7 +80,7 @@ const fields = ref([
     label: '消息类型',
     type: 'multipleSelect',
     labelWidth: 100,
-    colSpan: 8,
+    colSpan: 5,
     options: dictToOptionList(MESSAGE_TYPE),
     attrs: {
       clearable: true,

+ 19 - 18
src/views/my-workbenches/workbenches/message-reminder/message-list.vue

@@ -1,22 +1,5 @@
 <template>
   <div class="message-list">
-    <div class="message-item cursor-pointer">
-      <div class="m-head flex items-center">
-        <span class="m-title">违规提醒</span>
-        <t-tag theme="danger" variant="light">未读</t-tag>
-      </div>
-      <div class="m-body">
-        <div class="m-content"
-          >您的SOP出现“内容违规”,请及时联系您的项目主管进行处理!</div
-        >
-        <div class="m-info flex items-center">
-          <p>发起人:张三</p>
-          <p>服务单元:416计划</p>
-          <p>客户类型:XXX</p>
-          <p>客户名称:武汉大学</p>
-        </div>
-      </div>
-    </div>
     <div
       class="message-item cursor-pointer"
       v-for="item in tableData"
@@ -32,7 +15,7 @@
         <div class="m-content">{{ item.content }}</div>
         <div class="m-info flex items-center">
           <p>发起人:{{ item.formUser }}</p>
-          <p>服务单元:416计划 {{ item.service }} </p>
+          <p>服务单元:{{ item.service }} </p>
           <p>客户类型:{{ item.customType }}</p>
           <p>客户名称:{{ item.custom }}</p>
         </div>
@@ -40,12 +23,18 @@
     </div>
 
     <t-pagination
+      v-if="pagination.total > 0"
       class="m-t-20px"
       v-model="pagination.pageNumber"
       v-model:pageSize="pagination.pageSize"
       :total="pagination.total"
       @change="onChange"
     />
+
+    <div class="none-box" v-if="!tableData.length">
+      <img src="../../../../assets/none_message.svg" />
+      <p>暂无数据</p>
+    </div>
   </div>
 </template>
 
@@ -60,6 +49,18 @@ const { tableData, loading, pagination, onChange } = defineProps([
 
 <style lang="less" scoped>
 .message-list {
+  .none-box {
+    text-align: center;
+    margin-top: 100px;
+    img {
+      height: 120px;
+    }
+    p {
+      color: @light-text-color;
+      font-size: 14px;
+      margin-top: 10px;
+    }
+  }
   .message-item {
     border: 1px solid #e5e5e5;
     border-radius: 4px;

+ 0 - 7
src/views/my-workbenches/workbenches/my-tasks/index.vue

@@ -1,7 +0,0 @@
-<template>
-  <div class="my-tasks">待办任务</div>
-</template>
-
-<script setup name="MyTasks"></script>
-
-<style></style>

+ 124 - 0
src/views/my-workbenches/workbenches/my-waits/index.vue

@@ -0,0 +1,124 @@
+<template>
+  <div class="message-reminder flex flex-col h-full">
+    <SearchForm :fields="fields" :params="params">
+      <template #service="{ item, params }">
+        <select-service-unit
+          v-model="params[item.prop]"
+          clearable
+        ></select-service-unit>
+      </template>
+    </SearchForm>
+    <div class="page-wrap flex-1">
+      <t-tabs
+        v-model="params.flowTaskTypeEnum"
+        class="h-full"
+        @change="tabChange"
+        v-loading="loading"
+      >
+        <t-tab-panel value="ALL" label="全部">
+          <TaskList
+            :loading="loading"
+            :tableData="tableData"
+            :pagination="pagination"
+            :onChange="onChange"
+          ></TaskList>
+        </t-tab-panel>
+        <t-tab-panel value="OVER_TIME" label="已超时">
+          <TaskList
+            :loading="loading"
+            :tableData="tableData"
+            :pagination="pagination"
+            :onChange="onChange"
+          ></TaskList>
+        </t-tab-panel>
+        <t-tab-panel value="DRAFT" label="暂存">
+          <TaskList
+            :loading="loading"
+            :tableData="tableData"
+            :pagination="pagination"
+            :onChange="onChange"
+          ></TaskList>
+        </t-tab-panel>
+      </t-tabs>
+    </div>
+  </div>
+</template>
+
+<script setup name="MyTasks">
+import { reactive, computed, ref } from 'vue';
+import useFetchTable from '@/hooks/useFetchTable';
+import { getMyWaits } from '@/api/my-workbenches';
+import { WAIT_HANDLE_TYPE } from '@/config/constants';
+import { dictToOptionList } from '@/utils/tool';
+import TaskList from './waits-list.vue';
+const params = reactive({
+  types: '',
+  serviceId: '',
+  customName: '',
+  flowTaskTypeEnum: 'ALL',
+});
+
+const {
+  loading: loading,
+  pagination: pagination,
+  tableData: tableData,
+  onChange: onChange,
+  search: search,
+} = useFetchTable(getMyWaits, {
+  params: params,
+});
+const tabChange = () => {
+  search();
+};
+const fields = ref([
+  {
+    prop: 'types',
+    label: '待办类型',
+    type: 'multipleSelect',
+    labelWidth: 100,
+    colSpan: 5,
+    options: dictToOptionList(WAIT_HANDLE_TYPE),
+    attrs: {
+      clearable: true,
+    },
+  },
+  {
+    prop: 'serviceId',
+    label: '服务单元',
+    type: 'select',
+    labelWidth: 100,
+    colSpan: 5,
+    cell: 'service',
+  },
+  {
+    prop: 'custom',
+    label: '客户名称',
+    labelWidth: 100,
+    colSpan: 5,
+  },
+  {
+    type: 'buttons',
+    colSpan: 3,
+    children: [
+      {
+        type: 'button',
+        text: '查询',
+        onClick: () => {
+          search();
+        },
+      },
+    ],
+  },
+]);
+</script>
+
+<style lang="less" scoped>
+.message-reminder {
+  .page-wrap {
+    :deep(.t-tabs__content) {
+      height: calc(100% - var(--td-comp-size-xxl));
+      overflow: auto;
+    }
+  }
+}
+</style>

+ 108 - 0
src/views/my-workbenches/workbenches/my-waits/waits-list.vue

@@ -0,0 +1,108 @@
+<template>
+  <div class="message-list">
+    <div
+      class="message-item cursor-pointer"
+      v-for="item in tableData"
+      :key="item.id"
+    >
+      <div class="m-head">
+        <span class="m-title">{{ item.taskName }}</span>
+        <t-tag theme="success" variant="light" v-if="item.diffTime == 0"
+          >正常</t-tag
+        >
+        <template v-else>
+          <t-tag theme="danger" variant="light">已超时</t-tag>
+          <t-tag class="m-l-5px" theme="danger" variant="light"
+            >超时时长:{{ diffTime <= 30 ? '30天' : '大于30天' }}</t-tag
+          >
+        </template>
+      </div>
+      <div class="m-body">
+        <div class="m-content">{{ item.typeStr }}</div>
+        <div class="m-info flex items-center">
+          <p>发起人:{{ item.createRealName }}</p>
+          <p>服务单元: {{ item.serviceName }} </p>
+          <p>客户类型:{{ item.customType }}</p>
+          <p>客户名称:{{ item.customName }}</p>
+        </div>
+      </div>
+    </div>
+
+    <t-pagination
+      v-if="pagination.total > 0"
+      class="m-t-20px"
+      v-model="pagination.pageNumber"
+      v-model:pageSize="pagination.pageSize"
+      :total="pagination.total"
+      @change="onChange"
+    />
+    <div class="none-box" v-if="!tableData.length">
+      <img src="../../../../assets/none_message.svg" />
+      <p>暂无数据</p>
+    </div>
+  </div>
+</template>
+
+<script setup name="MyTaskList">
+const { tableData, loading, pagination, onChange } = defineProps([
+  'tableData',
+  'loading',
+  'pagination',
+  'onChange',
+]);
+</script>
+
+<style lang="less" scoped>
+.message-list {
+  .none-box {
+    text-align: center;
+    margin-top: 100px;
+    img {
+      height: 120px;
+    }
+    p {
+      color: @light-text-color;
+      font-size: 14px;
+      margin-top: 10px;
+    }
+  }
+  .message-item {
+    border: 1px solid #e5e5e5;
+    border-radius: 4px;
+    background-color: #fff;
+    padding: 0 15px;
+    .m-head {
+      height: 55px;
+      border-bottom: 1px solid #e5e5e5;
+      .m-title {
+        font-size: 16px;
+        color: #262626;
+        font-weight: bold;
+        line-height: 54px;
+        margin-right: 12px;
+      }
+    }
+    .m-body {
+      padding: 15px 0;
+      .m-content {
+        color: #595959;
+        font-size: 14px;
+        font-weight: bold;
+      }
+      .m-info {
+        margin-top: 20px;
+        p {
+          padding-right: 20px;
+          border-right: 1px solid #e5e5e5;
+          color: @light-text-color;
+          line-height: 1;
+          margin-right: 20px;
+          &:last-child {
+            border-right: none;
+          }
+        }
+      }
+    }
+  }
+}
+</style>

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

@@ -31,7 +31,14 @@
             :onChange="onChange"
           ></NoticeList>
         </t-tab-panel>
-        <t-tab-panel value="true" label="已读">111</t-tab-panel>
+        <t-tab-panel value="true" label="已读">
+          <NoticeList
+            :loading="loading"
+            :tableData="tableData"
+            :pagination="pagination"
+            :onChange="onChange"
+          ></NoticeList>
+        </t-tab-panel>
       </t-tabs>
     </div>
   </div>

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

@@ -17,7 +17,7 @@
   </div>
 </template>
 
-<script setup name="MessageList">
+<script setup name="NoticeList">
 const columns = [
   {
     colKey: 'title',

+ 1 - 1
src/views/sop/sop-monitor/violation-registration/flow-dialog.vue

@@ -114,7 +114,7 @@
 <script setup name="ViolationFlowDialog">
 import useClearDialog from '@/hooks/useClearDialog';
 import { ref, computed } from 'vue';
-import { VIOLATION_TYPE, VIOLATION_FLOW_TYPE } from '@/config/constants';
+import { VIOLATION_TYPE, VIOLATION_FLOW_STATUS } from '@/config/constants';
 import { dateFormat } from '@/utils/tool';
 import { useUserStore } from '@/store';
 import { violationDetail, violationDetailList, flowViolation } from '@/api/sop';

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott