zhengnaiwen_citu vor 5 Monaten
Ursprung
Commit
89057fcddc

+ 1 - 1
src/api/approval.js

@@ -5,7 +5,7 @@ export function getApprovalList (data) {
   return http.post('/work/flow/instance/page', data)
 }
 
-// 审
+// 审
 export function setApproval (data) {
   return http.post('/work/flow/instance/approve', data)
 }

+ 1 - 1
src/api/bonus.js

@@ -15,7 +15,7 @@ export function getAllocationEmployeeCategory (data) {
   return http.post('/employee/performance/category/dict', data)
 }
 
-// 业绩分配 检查审状态
+// 业绩分配 检查审状态
 export function checkAllocationSubmitStatus (data) {
   return http.post('/employee/performance/confirmation/check/submit', data)
 }

+ 3 - 3
src/utils/dict.js

@@ -14,10 +14,10 @@ export const ORGANIZATION_CATEGORY = [
   { label: '部室', value: '部室' }
 ]
 
-// 审状态字典
+// 审状态字典
 export const APPROVAL_STATUS = [
   { text: '处理中', color: 'default' },
-  { text: '审通过', color: 'success' },
-  { text: '审拒绝', color: 'danger' },
+  { text: '审通过', color: 'success' },
+  { text: '审拒绝', color: 'danger' },
   { text: '异常结束', color: 'warning' }
 ]

+ 3 - 3
src/utils/request.js

@@ -85,16 +85,16 @@ service.interceptors.response.use(
       return Promise.reject(res)
     }
     if (res.code === 72000) {
-      // 审拦截
+      // 审拦截
       try {
-        await Vue.prototype.$confirm('当前操作需要执行审流程,是否继续', '提示')
+        await Vue.prototype.$confirm('当前操作需要执行审流程,是否继续', '提示')
         const obj = store.getters.workOrder
         await instanceWorkflow({
           ...res.data,
           createUserPageRoute: obj[2] ?? '/',
           approvePageRoute: obj[1] ?? '/'
         })
-        const str = '已发起工作流,请等待审'
+        const str = '已发起工作流,请等待审'
         return Promise.reject(str)
       } catch (error) {
         const str = '取消操作'

+ 1 - 1
src/views/bonus/allocation/index.vue

@@ -6,7 +6,7 @@
         <div class="content">
           <div>
             <template v-if="auditStatusList[auditStatus]">
-              审状态:
+              审状态:
               <el-tag :type="auditStatusList[auditStatus]?.type ?? 'info'" class="mr-3">
                 {{ auditStatusList[auditStatus]?.label ?? '未知状态' }}
               </el-tag>

+ 51 - 14
src/views/bonus/approve/approveDetails.vue

@@ -1,12 +1,50 @@
 <template>
-  <m-dialog ref="dialog" title="审批详情" v-bind="$attrs" v-on="$listeners" hideFooter>
-    <div class="mb-3 content">
-      <div>
-        <el-tag v-if="item.month" class="mr-3">{{ item.month }}</el-tag>
-        <el-tag v-if="item.opOrganizationName" class="mr-3">{{ item.opOrganizationName }}</el-tag>
-        <el-tag v-if="item.employeeCategory" class="mr-3">{{ item.employeeCategory }}</el-tag>
-      </div>
-      <div>
+  <m-dialog ref="dialog" title="审核详情" v-bind="$attrs" hideFooter>
+    <el-form label-width="120px">
+      <el-form-item label="审核状态">
+        <div :class="{ 'd-flex': item.status === 0 }" class="justify-between align-center fullHeight">
+          <el-tag :type="statusList[item.status]?.type ?? 'info'">{{ statusList[item.status]?.label ?? '未知状态' }}</el-tag>
+          <div v-if="item.status === 0">
+            <m-button type="success" size="small" icon="el-icon-check" class="mr-3" @click="onResolve">通过</m-button>
+            <el-popover
+              placement="bottom"
+              v-model="visible"
+              width="300"
+              trigger="click"
+            >
+              <el-input v-model="rejectText" type="textarea" :rows="3" placeholder="请输入拒绝原因"></el-input>
+              <div class="pt-3 text-right">
+                <m-button size="mini" @click="visible = false">取消</m-button>
+                <m-button size="mini" type="orange" @click="onReject">提交</m-button>
+              </div>
+              <template #reference>
+                <m-button type="danger" size="small" icon="el-icon-close">拒绝</m-button>
+              </template>
+            </el-popover>
+          </div>
+        </div>
+      </el-form-item>
+      <el-form-item label="拒绝理由" v-if="item.status === 2">
+        {{ item.authMsg }}
+      </el-form-item>
+      <el-form-item label="基本信息">
+        <el-descriptions class="margin-top" :column="3" direction="vertical" border>
+          <el-descriptions-item label="月份">
+            <el-tag class="mr-3">{{ item.month || '无' }}</el-tag>
+          </el-descriptions-item>
+          <el-descriptions-item label="发起机构">
+            <el-tag class="mr-3">{{ item.opOrganizationName || '无' }}</el-tag>
+          </el-descriptions-item>
+          <el-descriptions-item label="员工类型">
+            <el-tag class="mr-3">{{ item.employeeCategory || '无' }}</el-tag>
+          </el-descriptions-item>
+        </el-descriptions>
+      </el-form-item>
+      <el-form-item label="分配明细">
+        <BonusTable ref="bonusTableRefs" clearHeader :filter-header="filterHeader" :show-summary="true" shadow="never"></BonusTable>
+      </el-form-item>
+    </el-form>
+      <!-- <div>
         <template v-if="item.status !== 0">
           <el-tag :type="statusList[item.status]?.type ?? 'info'">{{ statusList[item.status]?.label ?? '未知状态' }}</el-tag>
         </template>
@@ -29,9 +67,9 @@
           </el-popover>
         </template>
 
-      </div>
-    </div>
-    <BonusTable ref="bonusTableRefs" clearHeader :filter-header="filterHeader" :show-summary="true" shadow="never"></BonusTable>
+      </div> -->
+    <!-- </div> -->
+    <!-- <BonusTable ref="bonusTableRefs" clearHeader :filter-header="filterHeader" :show-summary="true" shadow="never"></BonusTable> -->
   </m-dialog>
 </template>
 
@@ -108,8 +146,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-.content {
-  display: flex;
-  justify-content: space-between;
+.fullHeight {
+  height: 100%;
 }
 </style>

+ 1 - 1
src/views/bonus/approve/index.vue

@@ -14,7 +14,7 @@
         <el-tag :type="statusList[row.status]?.type ?? 'info'">{{ statusList[row.status]?.label ?? '未知状态' }}</el-tag>
       </template>
       <template #actions="{ row }">
-        <m-button type="text" @click="onShowDetails(row)">查看详情</m-button>
+        <m-button text type="primary" @click="onShowDetails(row)">查看明细</m-button>
       </template>
     </m-table>
     <ApproveDetails ref="approveDetailsRefs" @onRefresh="onInit"></ApproveDetails>

+ 1 - 1
src/views/system/workflow/index.vue

@@ -14,7 +14,7 @@
       </template>
       <template #actions="{ row }">
         <m-button type="primary" text @click="getDetails(row, 'workflowEditRefs')">编辑</m-button>
-        <m-button type="primary" text @click="getDetails(row, 'workflowApprovedRefs')">审配置</m-button>
+        <m-button type="primary" text @click="getDetails(row, 'workflowApprovedRefs')">审配置</m-button>
         <m-button type="danger" text @click="onDelete(row)">删除</m-button>
       </template>
     </m-table>

+ 1 - 1
src/views/system/workflow/workflowApproved.vue

@@ -1,5 +1,5 @@
 <template>
-  <m-dialog title="审配置" ref="dialog" @sure="onSure">
+  <m-dialog title="审配置" ref="dialog" @sure="onSure">
     <el-form label-width="70px" >
       <el-form-item label="工作流">
         <el-tag>{{ item.workFlowTmplate?.name }}</el-tag>

+ 0 - 49
src/views/workOrder/approval/approvalReject.vue

@@ -1,49 +0,0 @@
-<template>
-  <m-dialog title="拒绝理由" ref="dialog" @sure="onSure" width="400px">
-    <el-input v-model="approveRejectText" type="textarea" :rows="8" placeholder="请输入拒绝原因"></el-input>
-  </m-dialog>
-</template>
-
-<script>
-import {
-  setApproval
-} from '@/api/approval'
-export default {
-  name: 'approvalReject',
-  data () {
-    return {
-      workFlowInstanceId: null,
-      approveRejectText: null
-    }
-  },
-  methods: {
-    open (item) {
-      this.workFlowInstanceId = item.workFlowInstanceId
-      this.approveRejectText = null
-      this.$refs.dialog.open()
-    },
-    async onSure () {
-      if (!this.approveRejectText) {
-        this.$message.error('请输入拒绝原因')
-        return
-      }
-      try {
-        await setApproval({
-          workFlowInstanceId: this.workFlowInstanceId,
-          status: 2,
-          msg: this.approveRejectText
-        })
-        this.$message.success('拒绝成功')
-        this.$refs.dialog.close()
-        this.$emit('refresh')
-      } catch (error) {
-        this.$message.error(error)
-      }
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-
-</style>

+ 45 - 21
src/views/workOrder/approval/index.vue

@@ -2,20 +2,29 @@
   <div v-loading="loading">
     <IndexPage ref="indexPageRefs" :dataType="dataType">
       <template #actions="{ row }">
-        <m-button type="danger" text @click="onDetails(row)">审批</m-button>
-        <!-- <m-button  type="primary" text @click="onApproval(row.workFlowInstanceId)">通过审核</m-button>
-        <m-button type="danger" text @click="onApprovalReject(row)">拒绝通过</m-button> -->
+        <m-button type="danger" text @click="onDetails(row)">审核</m-button>
       </template>
     </IndexPage>
-    <ApprovalReject ref="approvalRejectRefs" @refresh="onRefresh"></ApprovalReject>
-    <ApprovalDetails
-      ref="approvalDetailsRefs"
-      :option="{ textSure: '通过', colorSure: 'success'}"
-      @sure="onApproval(itemData.workFlowInstanceId)"
-      @close="onClose"
-    >
-      <template #button-after="{ item }">
-        <m-button type="danger" @click="onApprovalReject(item)">拒绝</m-button>
+    <ApprovalDetails ref="approvalDetailsRefs" @close="onClose">
+      <template #approval-btn>
+        <div>
+          <m-button type="success" size="small" icon="el-icon-check" class="mr-3" @click="onApproval">通过</m-button>
+          <el-popover
+            placement="bottom"
+            v-model="visible"
+            width="300"
+            trigger="click"
+          >
+            <el-input v-model="msg" type="textarea" :rows="3" placeholder="请输入拒绝原因"></el-input>
+            <div class="pt-3 text-right">
+              <m-button size="mini" @click="visible = false">取消</m-button>
+              <m-button size="mini" type="orange" @click="onApprovalReject">提交</m-button>
+            </div>
+            <template #reference>
+              <m-button type="danger" size="small" icon="el-icon-close">拒绝</m-button>
+            </template>
+          </el-popover>
+        </div>
       </template>
     </ApprovalDetails>
   </div>
@@ -24,7 +33,6 @@
 <script>
 import IndexPage from '../components/IndexPage.vue'
 import ApprovalDetails from '../components/ApprovalDetails.vue'
-import ApprovalReject from './approvalReject.vue'
 
 import {
   setApproval,
@@ -34,11 +42,12 @@ export default {
   name: 'ApprovalPage',
   components: {
     IndexPage,
-    ApprovalReject,
     ApprovalDetails
   },
   data () {
     return {
+      msg: null,
+      visible: false,
       loading: false,
       dataType: 3,
       itemData: {}
@@ -66,7 +75,7 @@ export default {
         if (!data.records.length) {
           return
         }
-        // 唤起审详情
+        // 唤起审详情
         this.onDetails(data.records[0])
       } catch (error) {
         this.$message.error(error)
@@ -80,24 +89,39 @@ export default {
     },
     onDetails (item) {
       this.itemData = item
+      this.msg = null
       this.$refs.approvalDetailsRefs.open(item)
     },
-    onApproval (workFlowInstanceId, status) {
-      this.$confirm('确定审通过吗?', '提示').then(async _ => {
+    onApproval () {
+      this.$confirm('确定审通过吗?', '提示').then(async _ => {
         try {
           await setApproval({
-            workFlowInstanceId: workFlowInstanceId,
+            workFlowInstanceId: this.itemData.workFlowInstanceId,
             status: 1
           })
-          this.$message.success('审通过')
+          this.$message.success('审通过')
           this.$refs.indexPageRefs.onInit()
         } catch (error) {
           this.$message.error(error)
         }
       }).catch(_ => {})
     },
-    onApprovalReject (item) {
-      this.$refs.approvalRejectRefs.open(item)
+    async onApprovalReject () {
+      if (!this.msg) {
+        this.$message.error('请输入拒绝原因')
+        return
+      }
+      try {
+        await setApproval({
+          workFlowInstanceId: this.itemData.workFlowInstanceId,
+          status: 2,
+          msg: this.msg
+        })
+        this.$message.success('拒绝成功')
+        this.onRefresh()
+      } catch (error) {
+        this.$message.error(error)
+      }
     }
   }
 }

+ 11 - 5
src/views/workOrder/components/ApprovalDetails.vue

@@ -1,11 +1,17 @@
 <template>
-  <m-dialog ref="dialog" title="申请单" v-bind="$attrs" v-on="$listeners">
+  <m-dialog ref="dialog" title="申请单" v-bind="$attrs" v-on="$listeners" hideFooter>
     <el-form label-width="120px" v-loading="loading">
-      <el-form-item label="审批功能名称">
-        <el-tag type="default">{{ itemData.title }}</el-tag>
+      <el-form-item label="审核状态">
+        <div class="justify-between align-center" :class="{'d-flex': itemData.status === 0}">
+          <el-tag :type="itemData.statusColor">{{ itemData.statusText }}</el-tag>
+          <slot name="approval-btn"></slot>
+        </div>
+      </el-form-item>
+      <el-form-item label="拒绝理由" v-if="itemData.status === 2">
+        无
       </el-form-item>
-      <el-form-item label="审批状态">
-        <el-tag :type="itemData.statusColor">{{ itemData.statusText }}</el-tag>
+      <el-form-item label="审核功能名称">
+        <el-tag type="default">{{ itemData.title }}</el-tag>
       </el-form-item>
       <el-form-item label="申请明细">
         <el-descriptions :column="1" border>

+ 1 - 1
src/views/workOrder/components/ApprovalProgress.vue

@@ -1,5 +1,5 @@
 <template>
-  <m-dialog ref="dialog" title="审进度">
+  <m-dialog ref="dialog" title="审进度">
     <el-steps align-center finish-status="success" v-loading="loading" :space="800 / items.length">
       <el-step
         v-for="(item) in items"

+ 2 - 2
src/views/workOrder/components/IndexPage.vue

@@ -14,7 +14,7 @@
         <el-tag size="small" :type="statusList[row.status].color">{{ statusList[row.status].text }}</el-tag>
       </template>
       <template #actions="{ row }">
-        <m-button type="primary" text @click="onProcess(row)">审进度</m-button>
+        <m-button type="primary" text @click="onProcess(row)">审进度</m-button>
         <slot name="actions" :row="row"></slot>
       </template>
     </m-table>
@@ -58,7 +58,7 @@ export default {
         title: null
       },
       headers: [
-        { label: '审功能名称', prop: 'title' },
+        { label: '审功能名称', prop: 'title' },
         { label: '发起人', prop: 'createUserName' },
         { label: '发起时间', prop: 'createDate' },
         { label: '审核状态', prop: 'status', align: 'center' },

+ 2 - 2
src/views/workOrder/myOrder/index.vue

@@ -3,7 +3,7 @@
     <IndexPage ref="indexPageRefs" :dataType="1">
       <template #actions="{ row }">
         <m-button type="primary" text @click="onDetails(row)">查看申请单</m-button>
-        <m-button text type="danger" @click="onUrgent(row)">加急</m-button>
+        <m-button v-if="row.status === 0" text type="danger" @click="onUrgent(row)">加急</m-button>
       </template>
     </IndexPage>
     <ApprovalDetails ref="approvalDetailsRefs" @close="onClose"></ApprovalDetails>
@@ -50,7 +50,7 @@ export default {
         if (!data.records.length) {
           return
         }
-        // 唤起审详情
+        // 唤起审详情
         this.onDetails(data.records[0])
       } catch (error) {
         this.$message.error(error)