员工管理

This commit is contained in:
1378012178@qq.com 2025-09-17 15:36:52 +08:00
parent 78ba1e64d1
commit 7dbb11039a
8 changed files with 83 additions and 26 deletions

View File

@ -2,7 +2,7 @@
VITE_USE_MOCK = false
# 发布路径
VITE_PUBLIC_PATH = /biz101
VITE_PUBLIC_PATH = /biz102
# 是否启用gzip或brotli压缩
# 选项值: gzip | brotli | none
@ -13,10 +13,10 @@ VITE_BUILD_COMPRESS = 'gzip'
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
#后台接口父地址(必填)
VITE_GLOB_API_URL=/nursingunit101
VITE_GLOB_API_URL=/nursingunit102
#后台接口全路径地址(必填)
VITE_GLOB_DOMAIN_URL=https://www.focusnu.com/nursingunit101
VITE_GLOB_DOMAIN_URL=https://www.focusnu.com/nursingunit102
# 接口父路径前缀
VITE_GLOB_API_URL_PREFIX=

View File

@ -11,6 +11,7 @@ enum Api {
deleteBatch = '/admin/employeesAdvisoryInfo/deleteBatch',
importExcel = '/admin/employeesAdvisoryInfo/importExcel',
exportXls = '/admin/employeesAdvisoryInfo/exportXls',
acquireIdenCard = '/admin/employeesAdvisoryInfo/acquireIdenCard',
}
/**
@ -70,3 +71,11 @@ export const saveOrUpdate = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
return defHttp.post({ url: url, params }, { isTransformResponse: false });
};
/**
*
* @param params
*/
export const acquireIdenCard = (params) => {
return defHttp.post({ url: Api.acquireIdenCard, params });
};

View File

@ -54,7 +54,7 @@ import { ref, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, superQuerySchema } from './NuEmployeesAdvisoryInfo.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './NuEmployeesAdvisoryInfo.api';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl, acquireIdenCard } from './NuEmployeesAdvisoryInfo.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import NuEmployeesAdvisoryInfoModal from './components/NuEmployeesAdvisoryInfoModal.vue'
import { useUserStore } from '/@/store/modules/user';
@ -78,7 +78,7 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
canResize: false,
useSearchForm: false,
actionColumn: {
width: 120,
width: 200,
fixed: 'right',
},
beforeFetch: async (params) => {
@ -206,6 +206,13 @@ function handleInvite(data) {
});
}
/**
* 获取身份证
*/
function handleAcquireIdenCard(record) {
acquireIdenCard(record)
}
/**
* 操作栏
*/
@ -218,6 +225,26 @@ function getTableAction(record) {
{
label: '邀请',
onClick: handleInvite.bind(null, record),
},
{
label: '获取身份证',
onClick: handleAcquireIdenCard.bind(null, record),
ifShow: () => {
//hasCardZmPathhasCardFmPath 1 0 2 /null/undefined
let result = false
if (record.hasCardZmPath == '2' || record.hasCardFmPath == '2') {
//
return false;
}
if (record.hasCardZmPath == '1' && record.hasCardFmPath == '1') {
//
return false;
}
if (record.hasCardZmPath == null || record.hasCardZmPath == undefined || record.hasCardFmPath == null || record.hasCardFmPath == undefined) {
result = true
}
return result
}
}
];
}

View File

@ -46,7 +46,7 @@
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="住址" v-bind="validateInfos.idCardAddress"
<a-form-item label="户籍所在地" v-bind="validateInfos.idCardAddress"
id="NuEmployeesAdvisoryInfoForm-idCardAddress" name="idCardAddress">
<!-- <a-input v-model:value="formData.idCardAddress" placeholder="请输入住址" allow-clear disabled ></a-input> -->
{{ formData.idCardAddress }}
@ -123,6 +123,19 @@
{{ formData.hukouType }}
</a-form-item>
</a-col>
<a-col :span="24">
<SectionDivider :title="'身份证'" />
</a-col>
<a-col :span="12">
<a-form-item label="身份证正面">
<j-image-upload :fileMax="1" v-model:value="formData.cardZmPath" disabled></j-image-upload>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="身份证反面">
<j-image-upload :fileMax="1" v-model:value="formData.cardFmPath" disabled></j-image-upload>
</a-form-item>
</a-col>
</a-row>
</a-form>
</template>
@ -150,6 +163,7 @@ const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
const formData = reactive<Record<string, any>>({
id: '',
openId: '',
tel: '',
name: '',
sex: '',

View File

@ -85,7 +85,7 @@ const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
pageSizeOptions: ['15', '50', '70', '100'],
},
beforeFetch: async (params) => {
queryParam.sta
queryParam.isInvited = '1'
return Object.assign(params, queryParam);
},
},

View File

@ -45,8 +45,8 @@
</template>
<template v-if="column.dataIndex === 'status_dictText'">
<span v-if="record.status == '1'">待确认</span>
<span v-else-if="record.status == '2'">同意</span>
<span v-else-if="record.status == '3'">已拒绝</span>
<span v-else-if="record.status == '2'">审核同意</span>
<span v-else-if="record.status == '3'">审核驳回</span>
<span v-else></span>
</template>
</template>

View File

@ -47,12 +47,6 @@
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="家庭住址" v-bind="validateInfos.address" id="EmployeesApplyForm-address" name="address">
<!-- <a-textarea v-model:value="formData.address" :rows="4" placeholder="请输入家庭住址" disabled /> -->
<span>{{ formData.address }}</span>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="身份证号">
<span>{{ formData.idCard }}</span>
</a-form-item>
@ -241,21 +235,23 @@
dictCode="employees_audit_status_form" placeholder="请选择审核意见" allow-clear disabled/> -->
<div v-if="disabled">
<span v-if="formData.status == 1">待审核</span>
<span v-if="formData.status == 2">通过</span>
<span v-if="formData.status == 3">拒绝</span>
<span v-if="formData.status == 2">审核通过</span>
<span v-if="formData.status == 3">审核驳回</span>
</div>
<a-select v-else v-model:value="statusVal" placeholder="请选择审核意见" style="width: 200px" :disabled="false">
<a-select-option value="auditPass">审核通过</a-select-option>
<a-select-option value="auditFaild">审核不通过</a-select-option>
<a-select-option value="auditFaild">审核驳回</a-select-option>
</a-select>
</a-form-item>
</a-col>
<!-- <a-col :span="12" v-show="statusVal == 'auditFaild'">
<a-form-item label="审核备注" v-bind="validateInfos.auditContent" id="EmployeesApplyForm-auditContent"
<a-col :span="12" v-show="statusVal == 'auditFaild' && !disabled">
<a-form-item label="驳回原因" v-bind="validateInfos.auditContent" id="EmployeesApplyForm-auditContent"
name="auditContent">
<a-input v-model:value="formData.auditContent" placeholder="请输入审核备注" allow-clear></a-input>
<a-textarea v-if="!disabled" :autosize="{ minRows: 3 }" maxlength="50" show-count
v-model:value="formData.auditContent" allow-clear placeholder="请输入驳回原因"></a-textarea>
<span v-else>{{ formData.auditContent }} </span>
</a-form-item>
</a-col> -->
</a-col>
</a-row>
</a-form>
</template>
@ -284,7 +280,8 @@ const emit = defineEmits(['register', 'ok']);
const activeKey = ref('1')
const formData = reactive<Record<string, any>>({
id: '',
employeeId:'',
openId: '',
employeeId: '',
name: '',
sex: '',
national: '',
@ -326,6 +323,16 @@ const labelCol3 = ref<any>({ xs: { span: 24 }, sm: { span: 2 } });
const confirmLoading = ref<boolean>(false);
//
const validatorRules = reactive({
auditContent: [
{
validator: async (_rule, value) => {
if (statusVal.value === 'auditFaild' && !value) {
return Promise.reject('请输入驳回原因!');
}
return Promise.resolve();
},
},
],
});
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
@ -409,7 +416,7 @@ async function submitForm() {
if (!disabled.value) {
if (!statusVal.value) {
createMessage.warning('请选择审批意见');
return ;
return;
}
}
confirmLoading.value = true;

View File

@ -24,7 +24,7 @@
<j-dict-select-tag type='radio' v-model:value="formData.advisoryType" dictCode="advisory_type" placeholder="请选择咨询类型" allow-clear disabled/>
</a-form-item>
</a-col>
<a-col :span="24" v-if="formData.advisoryType == '1'">
<!-- <a-col :span="24" v-if="formData.advisoryType == '1'">
<a-row>
<a-col :span="24">
<a-form-item label="老人姓名" v-bind="validateInfos.oldManName" id="NuBizAdvisoryInfoForm-oldManName" name="oldManName">
@ -57,7 +57,7 @@
</a-form-item>
</a-col>
</a-row>
</a-col>
</a-col> -->
<a-col :span="24">
<a-form-item label="审核状态" v-bind="validateInfos.status" id="NuBizAdvisoryInfoForm-status" name="status">
<j-dict-select-tag type='radio' v-model:value="formData.status" dictCode="advisory_approval" placeholder="请选择状态" allow-clear />