|
@@ -13,6 +13,32 @@
|
|
|
:filterParams="{}"
|
|
|
></select-service-unit>
|
|
|
</template>
|
|
|
+ <template #supplier="{ item, params }">
|
|
|
+ <select-supplier
|
|
|
+ v-model="params[item.prop]"
|
|
|
+ :min-collapsed-num="1"
|
|
|
+ :filterable="false"
|
|
|
+ multiple
|
|
|
+ ></select-supplier>
|
|
|
+ </template>
|
|
|
+ <template #dingRole="{ item, params }">
|
|
|
+ <select-role
|
|
|
+ v-model="params[item.prop]"
|
|
|
+ :min-collapsed-num="1"
|
|
|
+ :filterable="false"
|
|
|
+ multiple
|
|
|
+ >
|
|
|
+ </select-role>
|
|
|
+ </template>
|
|
|
+ <template #approveRole="{ item, params }">
|
|
|
+ <select-role
|
|
|
+ v-model="params[item.prop]"
|
|
|
+ :min-collapsed-num="1"
|
|
|
+ :filterable="false"
|
|
|
+ multiple
|
|
|
+ >
|
|
|
+ </select-role>
|
|
|
+ </template>
|
|
|
</SearchForm>
|
|
|
<div class="flex-1 page-wrap">
|
|
|
<t-table
|
|
@@ -52,7 +78,7 @@
|
|
|
}}
|
|
|
</template>
|
|
|
<template #status="{ col, row }">
|
|
|
- {{ serviceUnitStatusFilter(row[col.colKey]) }}
|
|
|
+ <status-tag :value="row[col.colKey]" type="serviceUnit"></status-tag>
|
|
|
</template>
|
|
|
<template #create-time="{ col, row }">
|
|
|
{{ timestampFilter(row[col.colKey]) }}
|
|
@@ -79,13 +105,16 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup name="CheckinManage">
|
|
|
-import { ref, reactive, onMounted } from 'vue';
|
|
|
+import { ref, reactive, onMounted, computed } from 'vue';
|
|
|
import { useRoute } from 'vue-router';
|
|
|
import { DialogPlugin, MessagePlugin } from 'tdesign-vue-next';
|
|
|
import useFetchTable from '@/hooks/useFetchTable';
|
|
|
import EditCheckinDialog from './edit-checkin-dialog.vue';
|
|
|
import { checkinQueryApi, checkinDeleteApi } from '@/api/system';
|
|
|
-import { timestampFilter, serviceUnitStatusFilter } from '@/utils/filter';
|
|
|
+import { timestampFilter } from '@/utils/filter';
|
|
|
+import { SERVICE_UNIT_STATUS } from '@/config/constants';
|
|
|
+import { dictToOptionList } from '@/utils/tool';
|
|
|
+import { omit } from 'lodash';
|
|
|
|
|
|
const showEditCheckinDialog = ref(false);
|
|
|
const curRow = ref(null);
|
|
@@ -100,6 +129,36 @@ const fields = ref([
|
|
|
labelWidth: 100,
|
|
|
colSpan: 5,
|
|
|
cell: 'service',
|
|
|
+ attrs: {
|
|
|
+ clearable: true,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'status',
|
|
|
+ label: '服务单元发布状态',
|
|
|
+ type: 'select',
|
|
|
+ labelWidth: 160,
|
|
|
+ colSpan: 5,
|
|
|
+ options: dictToOptionList(SERVICE_UNIT_STATUS),
|
|
|
+ attrs: {
|
|
|
+ clearable: true,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'supplierIds',
|
|
|
+ label: '适用供应商',
|
|
|
+ type: 'select',
|
|
|
+ labelWidth: 100,
|
|
|
+ colSpan: 5,
|
|
|
+ cell: 'supplier',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'dingRoleIds',
|
|
|
+ label: '适用考勤对象',
|
|
|
+ type: 'select',
|
|
|
+ labelWidth: 100,
|
|
|
+ colSpan: 5,
|
|
|
+ cell: 'dingRole',
|
|
|
},
|
|
|
{
|
|
|
type: 'buttons',
|
|
@@ -114,14 +173,59 @@ const fields = ref([
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
+ {
|
|
|
+ prop: 'approveRoleIds',
|
|
|
+ label: '审核角色',
|
|
|
+ type: 'select',
|
|
|
+ labelWidth: 100,
|
|
|
+ colSpan: 5,
|
|
|
+ cell: 'approveRole',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'faceOpen',
|
|
|
+ label: '是否开启人脸',
|
|
|
+ type: 'select',
|
|
|
+ labelWidth: 160,
|
|
|
+ colSpan: 5,
|
|
|
+ options: [
|
|
|
+ {
|
|
|
+ label: '是',
|
|
|
+ value: 1,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '否',
|
|
|
+ value: 0,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ attrs: {
|
|
|
+ clearable: true,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'createTime',
|
|
|
+ label: '创建时间',
|
|
|
+ type: 'daterange',
|
|
|
+ labelWidth: 100,
|
|
|
+ colSpan: 10,
|
|
|
+ attrs: {
|
|
|
+ clearable: true,
|
|
|
+ valueType: 'time-stamp',
|
|
|
+ },
|
|
|
+ },
|
|
|
]);
|
|
|
const params = reactive({
|
|
|
serviceId: '',
|
|
|
+ status: '',
|
|
|
+ supplierIds: '',
|
|
|
+ dingRoleIds: '',
|
|
|
+ approveRoleIds: '',
|
|
|
+ faceOpen: null,
|
|
|
+ createTime: [],
|
|
|
});
|
|
|
|
|
|
const columns = [
|
|
|
- { colKey: 'service', title: '服务单元', minWidth: 120 },
|
|
|
- { colKey: 'status', title: '发布状态', cell: 'status', width: 100 },
|
|
|
+ { colKey: 'service', title: '服务单元', minWidth: 140 },
|
|
|
+ { colKey: 'status', title: '服务单元发布状态', width: 100 },
|
|
|
{ colKey: 'name', title: '考勤组名称', minWidth: 140 },
|
|
|
{
|
|
|
colKey: 'dingObjs',
|
|
@@ -129,13 +233,18 @@ const columns = [
|
|
|
cell: 'ding-objs',
|
|
|
minWidth: 200,
|
|
|
},
|
|
|
- { colKey: 'supplier', title: '适用供应商', minWidth: 140 },
|
|
|
+ { colKey: 'supplier', title: '适用供应商', minWidth: 200 },
|
|
|
{ colKey: 'signInTime', title: '签到时段', width: 160 },
|
|
|
{ colKey: 'signOutTime', title: '签退时段', width: 160 },
|
|
|
- { colKey: 'auditRoles', title: '审核角色', cell: 'approve-objs', width: 120 },
|
|
|
+ {
|
|
|
+ colKey: 'auditRoles',
|
|
|
+ title: '审核角色',
|
|
|
+ cell: 'approve-objs',
|
|
|
+ minWidth: 200,
|
|
|
+ },
|
|
|
{ colKey: 'faceOpen', title: '是否开启人脸', cell: 'face-open', width: 120 },
|
|
|
{ colKey: 'reissueCardCount', title: '允许补卡次数', width: 120 },
|
|
|
- { colKey: 'createName', title: '创建人', with: 120 },
|
|
|
+ { colKey: 'createName', title: '创建人', with: 140 },
|
|
|
{ colKey: 'createTime', title: '创建时间', cell: 'create-time', width: 180 },
|
|
|
{
|
|
|
title: '管理',
|
|
@@ -144,6 +253,17 @@ const columns = [
|
|
|
width: 120,
|
|
|
},
|
|
|
];
|
|
|
+
|
|
|
+const computedParams = computed(() => {
|
|
|
+ let data = omit(params, ['createTime']);
|
|
|
+ data.createStartTime = params.createTime[0];
|
|
|
+ data.createEndTime = params.createTime[1];
|
|
|
+ if (typeof data.faceOpen === 'number') {
|
|
|
+ data.faceOpen = !!data.faceOpen;
|
|
|
+ }
|
|
|
+ return data;
|
|
|
+});
|
|
|
+
|
|
|
const {
|
|
|
loading: tableLoading,
|
|
|
pagination,
|
|
@@ -151,7 +271,7 @@ const {
|
|
|
fetchData,
|
|
|
search,
|
|
|
onChange,
|
|
|
-} = useFetchTable(checkinQueryApi, { params }, false);
|
|
|
+} = useFetchTable(checkinQueryApi, { params: computedParams }, false);
|
|
|
|
|
|
const handleAdd = () => {
|
|
|
curRow.value = null;
|