添加长者信息、物料信息、机构信息、供应商信息、员工信息功能

This commit is contained in:
yangjun 2026-04-10 13:45:03 +08:00
parent 65a17a99b5
commit d173c00c11
15 changed files with 1560 additions and 135 deletions

View File

@ -5,6 +5,16 @@ import { render } from '/@/utils/common/renderUtils';
import { getWeekMonthQuarterYear } from '/@/utils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '机构编码',
align: "center",
dataIndex: 'orgCode'
},
{
title: '机构名称',
align: "center",
dataIndex: 'departName'
},
{
title: '物料名称',
align: "center",
@ -23,12 +33,14 @@ export const columns: BasicColumn[] = [
{
title: '销售单价',
align: "center",
dataIndex: 'salesUnitPrice'
dataIndex: 'salesUnitPrice',
defaultHidden: true
},
{
title: '销售单位',
align: "center",
dataIndex: 'salesUnit'
dataIndex: 'salesUnit',
defaultHidden: true
},
];

View File

@ -4,41 +4,43 @@
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="6">
<a-form-item name="orgCode">
<template #label><span title="机构名称">机构名称</span></template>
<j-dict-select-tag placeholder="请选择机构名称" v-model:value="queryParam.orgCode"
dictCode="sys_depart,depart_name,org_code" />
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="suppliersName">
<template #label><span title="物料名称">物料名称</span></template>
<JInput v-model:value="queryParam.suppliersName" placeholder="请输入物料名称" />
</a-form-item>
</a-col>
<a-col :span="12">
<span style="float: right; overflow: hidden" class="table-page-search-submitButtons">
<a-col :lg="6">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
<a-button type="primary" preIcon="ant-design:reload-outlined" @click="searchReset"
style="margin-left: 8px">重置</a-button>
</a-col>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<BasicTable @register="registerTable" >
<!--插槽:table标题-->
<template #tableTitle>
<a-button type="primary" v-auth="'allMaterialInfo:nu_biz_all_material_info:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
<a-button type="primary" v-auth="'allMaterialInfo:nu_biz_all_material_info:exportXls'" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<j-upload-button type="primary" v-auth="'allMaterialInfo:nu_biz_all_material_info:importExcel'" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button v-auth="'allMaterialInfo:nu_biz_all_material_info:deleteBatch'">批量操作
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
<!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" />
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
<TableAction />
</template>
<template v-slot:bodyCell="{ column, record, index, text }">
</template>
</BasicTable>
<!-- 表单区域 -->
<NuBizAllMaterialInfoModal ref="registerModal" @success="handleSuccess"></NuBizAllMaterialInfoModal>
</div>
</template>
@ -47,16 +49,12 @@
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, superQuerySchema } from './NuBizAllMaterialInfo.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl } from './NuBizAllMaterialInfo.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import NuBizAllMaterialInfoModal from './components/NuBizAllMaterialInfoModal.vue'
import { useUserStore } from '/@/store/modules/user';
import { list } from './NuBizAllMaterialInfo.api';
import JInput from "/@/components/Form/src/jeecg/components/JInput.vue";
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
const formRef = ref();
const queryParam = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const userStore = useUserStore();
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
@ -65,6 +63,8 @@
columns,
canResize:false,
useSearchForm: false,
showActionColumn: false,
showIndexColumn: true,
actionColumn: {
width: 120,
fixed: 'right',
@ -73,15 +73,6 @@
return Object.assign(params, queryParam);
},
},
exportConfig: {
name: "物料信息汇总",
url: getExportUrl,
params: queryParam,
},
importConfig: {
url: getImportUrl,
success: handleSuccess
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] = tableContext;
const labelCol = reactive({
@ -94,97 +85,8 @@
xs: 24,
sm: 20,
});
//
const superQueryConfig = reactive(superQuerySchema);
/**
* 高级查询事件
*/
function handleSuperQuery(params) {
Object.keys(params).map((k) => {
queryParam[k] = params[k];
});
searchQuery();
}
/**
* 新增事件
*/
function handleAdd() {
registerModal.value.disableSubmit = false;
registerModal.value.add();
}
/**
* 编辑事件
*/
function handleEdit(record: Recordable) {
registerModal.value.disableSubmit = false;
registerModal.value.edit(record);
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({ id: record.id }, handleSuccess);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ ids: selectedRowKeys.value }, handleSuccess);
}
/**
* 成功回调
*/
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '编辑',
onClick: handleEdit.bind(null, record),
auth: 'allMaterialInfo:nu_biz_all_material_info:edit'
},
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record) {
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
}, {
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
auth: 'allMaterialInfo:nu_biz_all_material_info:delete'
}
]
}
/**
* 查询

View File

@ -84,7 +84,7 @@
canResize:false,
useSearchForm: false,
actionColumn: {
width: 120,
width: 80,
fixed: 'right',
},
beforeFetch: async (params) => {
@ -168,10 +168,10 @@
label: '详情',
onClick: handleDetail.bind(null, record),
},
{
label: '物料',
onClick: handleWlEdit.bind(null, record),
},
// {
// label: '',
// onClick: handleWlEdit.bind(null, record),
// },
];
}

View File

@ -5,6 +5,7 @@ const { createConfirm } = useMessage();
enum Api {
list = '/admin/orgapplyinfo/orgApplyInfo/list',
departList = '/sys/sysDepart/list',
save='/admin/orgapplyinfo/orgApplyInfo/add',
edit='/admin/orgapplyinfo/orgApplyInfo/edit',
editCg='/admin/orgapplyinfo/orgApplyInfo/editCg',
@ -32,6 +33,7 @@ export const getImportUrl = Api.importExcel;
* @param params
*/
export const list = (params) => defHttp.get({ url: Api.list, params });
export const departList = (params) => defHttp.get({ url: Api.departList, params });
/**
* sys_depart信息

View File

@ -0,0 +1,244 @@
<template>
<div class="p-2">
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol"
:wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="6">
<a-form-item name="title">
<template #label><span title="机构信息">机构信息</span></template>
<JInput v-model:value="queryParam.title" placeholder="请输入机构名称/负责人/联系电话" :type="'default'" />
</a-form-item>
</a-col>
<!-- <a-col :lg="6">
<a-form-item name="orgLeader">
<template #label><span title="机构负责人">机构负责人</span></template>
<JInput v-model:value="queryParam.orgLeader" placeholder="请输入机构负责人" />
</a-form-item>
</a-col> -->
<a-col :lg="6">
<a-form-item name="createTime">
<template #label><span title="申请日期">申请日期</span></template>
<a-range-picker value-format="YYYY-MM-DD" v-model:value="queryParam.createTime"
class="query-group-cust" />
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="status">
<template #label><span title="审核状态">审核状态</span></template>
<a-select v-model:value="queryParam.status" style="width: 200px" placeholder="请选择审核状态">
<a-select-option value="1,4">待审核</a-select-option>
<a-select-option value="2">审核通过</a-select-option>
<a-select-option value="3,5">审核驳回</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: right; overflow: hidden" class="table-page-search-submitButtons">
<a-col :lg="6">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
<a-button type="primary" preIcon="ant-design:reload-outlined" @click="searchReset"
style="margin-left: 8px">重置</a-button>
</a-col>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<template #tableTitle>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
<template v-slot:bodyCell="{ column, record, index, text }">
</template>
</BasicTable>
<!-- 表单区域 -->
<OrgApplyInfoModal ref="registerModal" @success="handleSuccess"></OrgApplyInfoModal>
<!-- 护理单元 -->
<OrgApplyHldyModal ref="hldyModal" @success="handleSuccess"></OrgApplyHldyModal>
</div>
</template>
<script lang="ts" name="orgapplyinfo-orgApplyInfo" setup>
import { ref, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { orgColumns } from '/@/views/admin/orgapply\info/OrgApplyInfo.data';
import { departList } from '/@/views/admin/orgInfo/OrgApplyInfo.api';
import OrgApplyInfoModal from '/@/views/admin/orgInfo/components/OrgApplyInfoModal.vue'
import OrgApplyHldyModal from '/@/views/admin/orgInfo/components/OrgApplyHldyModal.vue'
import JInput from "/@/components/Form/src/jeecg/components/JInput.vue";
import { cloneDeep } from "lodash-es";
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
const { createMessage } = useMessage();
const formRef = ref();
const queryParam = reactive<any>({});
const registerModal = ref();
const hldyModal = ref();
//table
const { prefixCls, tableContext } = useListPage({
tableProps: {
title: '机构加盟申请信息表',
api: departList,
columns:orgColumns,
canResize: false,
useSearchForm: false,
showIndexColumn: true,
actionColumn: {
width: 180,
fixed: 'right',
},
pagination: {
current: 1,
pageSize: 15,
pageSizeOptions: ['15', '50', '70', '100'],
},
beforeFetch: async (params) => {
let rangerQuery = await setRangeQuery();
return Object.assign(params, rangerQuery);
},
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] = tableContext;
const labelCol = reactive({
xs: 24,
sm: 4,
xl: 6,
xxl: 5
});
const wrapperCol = reactive({
xs: 24,
sm: 19,
});
/**
* 详情
*/
function handleDetail(record: Recordable) {
record.isHistory = "N";
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
}
/**
* 成功回调
*/
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
function handleQyxx(record) {
hldyModal.value.disableSubmit = true;
hldyModal.value.edit(record);
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '机构详情',
onClick: handleDetail.bind(null, record),
},
{
label: '区域信息',
onClick: handleQyxx.bind(null, record),
},
];
}
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 重置
*/
function searchReset() {
formRef.value.resetFields();
queryParam.title = ''
selectedRowKeys.value = [];
//
reload();
}
let rangeField = 'createTime,'
/**
* 设置范围查询条件
*/
async function setRangeQuery() {
let queryParamClone = cloneDeep(queryParam);
if (rangeField) {
let fieldsValue = rangeField.split(',');
fieldsValue.forEach(item => {
if (queryParamClone[item]) {
let range = queryParamClone[item];
queryParamClone[item + '_begin'] = range[0];
queryParamClone[item + '_end'] = range[1];
delete queryParamClone[item];
} else {
queryParamClone[item + '_begin'] = '';
queryParamClone[item + '_end'] = '';
}
})
}
return queryParamClone;
}
</script>
<style lang="less" scoped>
.jeecg-basic-table-form-container {
padding: 0;
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
white-space: nowrap;
}
.query-group-cust {
min-width: 100px !important;
}
.query-group-split-cust {
width: 30px;
display: inline-block;
text-align: center
}
.ant-form-item:not(.ant-form-item-with-help) {
margin-bottom: 16px;
height: 32px;
}
:deep(.ant-picker),
:deep(.ant-input-number) {
width: 100%;
}
}
.jee-hidden-zhcsh {
display: none !important;
}
</style>

View File

@ -11,7 +11,7 @@
</a-col>
<a-col :span="8" v-for="(item, index) in dataSource" style="padding: 7px;">
<a-card :title="`NUID`+item.nuId" >
<template #extra>{{item.nuType}}</template>
<!-- <template #extra>{{item.nuType}}</template> -->
<p>摄像头{{item.sxtList}}</p>
<p>电表{{item.dbList}}</p>
<p>水表{{item.sbList}}</p>

View File

@ -70,6 +70,46 @@ export const columns: BasicColumn[] = [
},
},
];
//列表数据
export const orgColumns: BasicColumn[] = [
{
title: '机构编码',
align: 'center',
dataIndex: 'orgCode',
width: 100,
},
{
title: '机构名称',
align: 'center',
dataIndex: 'departName',
},
{
title: '机构负责人',
align: 'center',
dataIndex: 'orgLeader',
width: 100,
},
{
title: '联系电话',
align: 'center',
dataIndex: 'orgLeaderPhone',
width: 120,
},
{
title: '加盟地址',
align: 'center',
dataIndex: 'comRegisterAddress',
},
{
title: '加盟日期',
align: 'center',
dataIndex: 'createTime',
width: 150,
customRender: ({ record,text }) => {
return text?text.substring(0,10):'-'
},
},
];
//列表数据
export const hisColumns: BasicColumn[] = [

View File

@ -0,0 +1,18 @@
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
const { createConfirm } = useMessage();
enum Api {
list = '/elderInfo/elderInfo/getElderTjList',
}
/**
*
* @param params
*/
export const list = (params) => defHttp.get({ url: Api.list, params });

View File

@ -0,0 +1,309 @@
import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { rules } from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
import { getWeekMonthQuarterYear } from '/@/utils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '机构编码',
align: 'center',
dataIndex: 'sysOrgCode',
},
{
title: '机构名称',
align: 'center',
dataIndex: 'departName',
},
{
title: 'NUID',
align: 'center',
dataIndex: 'nuId',
},
{
title: '护理单元',
align: 'center',
dataIndex: 'nuName',
},
{
title: '长者姓名',
align: 'center',
dataIndex: 'name',
},
{
title: '长者性别',
align: 'center',
dataIndex: 'sex',
},
{
title: '长者年龄',
align: 'center',
dataIndex: 'age',
},
{
title: '监护人姓名',
align: 'center',
dataIndex: 'guardianName',
},
// {
// title: '关系',
// align: 'center',
// dataIndex: 'relationship',
// },
{
title: '监护人电话',
align: 'center',
dataIndex: 'guardianPhone',
},
{
title: '入住日期',
align: 'center',
dataIndex: 'checkinTime',
customRender: function ({ text }) {
text = !text ? "" : (text.length > 10 ? text.substr(0,10) : text);
return text;
},
},
];
export const auditHisColumns: BasicColumn[] = [
{
title: 'NUID',
align: 'center',
dataIndex: 'nuId',
width: 100,
},
{
title: '护理单元',
align: 'center',
dataIndex: 'nuId_dictText',
},
{
title: '长者姓名',
align: 'center',
dataIndex: 'name',
width: 100,
},
{
title: '长者性别',
align: 'center',
dataIndex: 'sex',
width: 80,
},
{
title: '长者年龄',
align: 'center',
dataIndex: 'age',
width: 80,
},
{
title: '监护人姓名',
align: 'center',
dataIndex: 'guardianName',
width: 100,
},
// {
// title: '关系',
// align: 'center',
// dataIndex: 'relationship',
// },
{
title: '监护人电话',
align: 'center',
dataIndex: 'guardianPhone',
width: 140,
},
{
title: '审核类型',
align: 'center',
dataIndex: 'guardianPhone',
customRender: function ({ text }) {
return '变更';
},
width: 100,
},
{
title: '审核时间',
align: 'center',
dataIndex: 'updateTime',
},
{
title: '审核结果',
align: 'center',
dataIndex: 'modifyStatus',
customRender: ({ text, record }) => {
console.log(text);
var applyStatus = '';
if (text == '2') {
applyStatus = '审核通过';
} else if (text == '3') {
applyStatus = '审核驳回';
}
return applyStatus;
},
width: 100,
},
{
title: '驳回原因',
align: 'center',
dataIndex: 'auditContent',
},
];
export const elderColumns: BasicColumn[] = [
{
title: '护理单元',
align: 'center',
dataIndex: 'nuId',
},
{
title: '长者姓名',
align: 'center',
dataIndex: 'name',
},
{
title: '长者性别',
align: 'center',
dataIndex: 'sex',
},
{
title: '长者年龄',
align: 'center',
dataIndex: 'age',
},
// {
// title: '监护人姓名',
// align: 'center',
// dataIndex: 'guardianName',
// },
// {
// title: '监护人电话',
// align: 'center',
// dataIndex: 'guardianPhone',
// },
// {
// title: '关系',
// align: 'center',
// dataIndex: 'relationship',
// },
];
export const guaColumns: BasicColumn[] = [
// {
// title: '护理单元',
// align: 'center',
// dataIndex: 'nuId',
// },
// {
// title: '性别',
// align: 'center',
// dataIndex: 'sex',
// },
// {
// title: '年龄',
// align: 'center',
// dataIndex: 'age',
// },
{
title: '监护人姓名',
align: 'center',
dataIndex: 'guardianName',
},
// {
// title: '关系',
// align: 'center',
// dataIndex: 'relationship',
// },
{
title: '监护人电话',
align: 'center',
dataIndex: 'guardianPhone',
},
{
title: '长者姓名',
align: 'center',
dataIndex: 'name',
},
];
// 高级查询数据
export const superQuerySchema = {
nuId: { title: '护理单元', order: 0, view: 'text', type: 'string' },
name: { title: '姓名', order: 1, view: 'text', type: 'string' },
sex: { title: '性别', order: 2, view: 'text', type: 'string' },
age: { title: '年龄', order: 3, view: 'text', type: 'string' },
idCard: { title: '身份证号码', order: 4, view: 'text', type: 'string' },
dateOfBirth: { title: '出生日期', order: 5, view: 'datetime', type: 'string' },
national: { title: '民族', order: 6, view: 'text', type: 'string' },
houseAddress: { title: '户籍所在地', order: 7, view: 'textarea', type: 'string' },
idCardPositive: { title: '人像面', order: 8, view: 'image', type: 'string' },
idCardNegative: { title: '国徽面', order: 9, view: 'image', type: 'string' },
guardianName: { title: '监护人姓名', order: 10, view: 'text', type: 'string' },
relationship: { title: '关系', order: 11, view: 'text', type: 'string' },
guardianIdCard: { title: '监护人身份证号', order: 12, view: 'text', type: 'string' },
guardianPhone: { title: '联系电话', order: 13, view: 'text', type: 'string' },
guardianHomeAddress: { title: '监护人家庭住址', order: 14, view: 'text', type: 'string' },
guardianWorkUnit: { title: '监护人工作单位', order: 15, view: 'text', type: 'string' },
issuingAuthority: { title: '签发机关', order: 16, view: 'text', type: 'string' },
startTime: { title: '有效开始日期', order: 17, view: 'datetime', type: 'string' },
endTime: { title: '有效结束日期', order: 18, view: 'datetime', type: 'string' },
};
export const applyObj = {
id: 'id',
nuId: '护理单元',
name: '姓名',
sex: '性别',
age: '年龄',
idCard: '身份证号码',
dateOfBirth: '出生日期',
national: '民族',
houseAddress: '住址',
avatarPath: '头像',
yblxName: '医保类型',
reimbType: '报销类型',
medicalCard: '医保卡号',
educationLevel: '文化程度',
maritalStatus: '婚姻状况',
religiousBeliefs: '宗教信仰',
idCardPositive: '人像面',
idCardNegative: '国徽面',
accountBookHimself: '户口本本人页',
frontMedical: '医保卡正面',
negaticeMedical: '医保卡反面',
content: '备注',
currentState: '当前状态 0咨询 1入住 2留床 3退住',
guardianOpenId: '监护人openId',
guardianName: '监护人姓名',
// relationship: '监护人与老人关系',
guardianIdCard: '监护人身份证号',
guardianPhone: '监护人联系电话',
guardianDateOfBirth: '监护人出生日期',
guardianHomeAddress: '监护人家庭住址',
guardianWorkUnit: '监护人工作单位',
homeAddress: '住址',
delFlag: '是否删除 0未删除 1删除',
createBy: '创建人',
createTime: '创建日期',
updateBy: '更新人',
updateTime: '更新日期',
sysOrgCode: '所属部门',
issuingAuthority: '签发机关',
startTime: '有效开始日期',
endTime: '有效结束日期',
cardIssuing: '发卡日期',
bloodType: '血型',
militaryType: '兵役状况',
guardianModifyStatus: '监护人信息变更状态 1修改申请中 2通过 3驳回',
guardianModifyContent: '监护人信息变更驳回原因',
guardianModifyId: '监护人变更信息对应子表id nu_biz_elder_modify_info.id',
elderModifyStatus: '长者信息变更状态 1修改申请中 2通过 3驳回',
elderModifyContent: '长者信息变更驳回原因',
elderModifyId: '长者变更信息对应子表id nu_biz_elder_modify_info.id',
guardianIdCardPositive: '监护人身份证人像面',
sndjName: '失能等级',
jfztName: '缴费状态',
headPath: '长者头像',
guardianHeadPath: '监护人头像',
};

View File

@ -0,0 +1,203 @@
<template>
<div class="p-2">
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol"
:wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="6">
<a-form-item name="orgCode">
<template #label><span title="机构名称">机构名称</span></template>
<j-dict-select-tag placeholder="请选择机构名称" v-model:value="queryParam.orgCode"
dictCode="sys_depart,depart_name,org_code" />
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="name">
<template #label><span title="长者姓名">长者姓名</span></template>
<JInput v-model:value="queryParam.name" placeholder="请输入长者姓名" />
</a-form-item>
</a-col>
<a-col :span="12">
<span style="float: right; overflow: hidden" class="table-page-search-submitButtons">
<a-col :lg="6">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
<a-button type="primary" preIcon="ant-design:reload-outlined" @click="searchReset"
style="margin-left: 8px">重置</a-button>
</a-col>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!--引用表格-->
<BasicTable @register="registerTable">
<!--插槽:table标题-->
<template #tableTitle>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
<template v-slot:bodyCell="{ column, record, index, text }">
<template v-if="column.dataIndex === 'age'">
<span>{{ handleComputedAge(record.dateOfBirth) }}</span>
</template>
</template>
</BasicTable>
<!-- 表单区域 -->
<ElderInfoModal ref="registerModal" @success="handleSuccess" ></ElderInfoModal>
</div>
</template>
<script lang="ts" name="elderinfo-elderInfo" setup>
import { ref, reactive, onMounted } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, superQuerySchema } from './ElderInfo.data';
import { list } from './ElderInfo.api';
import ElderInfoModal from './components/ElderInfoModal.vue'
import { useUserStore } from '/@/store/modules/user';
import JInput from "/@/components/Form/src/jeecg/components/JInput.vue";
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import { getManyDictItems } from '/@/api/common/api'
const formRef = ref();
const queryParam = reactive<any>({});
const registerModal = ref();
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
title: '长者信息',
api: list,
columns,
canResize: false,
useSearchForm: false,
showIndexColumn: true,
actionColumn: {
width: 100,
fixed: 'right',
},
beforeFetch: async (params) => {
return Object.assign(params, queryParam);
},
},
});
const [registerTable, { reload }, { rowSelection, selectedRowKeys }] = tableContext;
const labelCol = reactive({
xs: 24,
sm: 8,
xl: 8,
xxl: 8
});
const wrapperCol = reactive({
xs: 24,
sm: 16,
});
/**
* 详情
*/
function handleDetail(record: Recordable) {
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
}
/**
* 成功回调
*/
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
},
];
}
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 重置
*/
function searchReset() {
formRef.value.resetFields();
selectedRowKeys.value = [];
//
reload();
}
function handleComputedAge(ageText) {
//
if (!ageText || typeof ageText !== 'string') {
return NaN;
}
//
const birthDate = new Date(ageText);
// '2025-99-99'
if (isNaN(birthDate.getTime())) {
return NaN;
}
const today = new Date();
let age = today.getFullYear() - birthDate.getFullYear();
const monthDiff = today.getMonth() - birthDate.getMonth();
const dayDiff = today.getDate() - birthDate.getDate();
// 1
if (monthDiff < 0 || (monthDiff === 0 && dayDiff < 0)) {
age--;
}
return age >= 0 ? age : 0; //
}
</script>
<style lang="less" scoped>
.jeecg-basic-table-form-container {
padding: 0;
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
white-space: nowrap;
}
.query-group-cust {
min-width: 100px !important;
}
.query-group-split-cust {
width: 30px;
display: inline-block;
text-align: center
}
.ant-form-item:not(.ant-form-item-with-help) {
margin-bottom: 16px;
height: 32px;
}
:deep(.ant-picker),
:deep(.ant-input-number) {
width: 100%;
}
}
</style>

View File

@ -0,0 +1,356 @@
<template>
<a-spin :spinning="confirmLoading">
<JFormContainer :disabled="disabled">
<template #detail>
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol"
name="ElderInfoForm">
<a-row class="card-class" v-show="!detailSign || detailSign == 'zz'">
<a-col :span="24" style="border-bottom: 2px solid #f7f7f7; margin-bottom: 14px;">
<SectionDivider :title="'长者身份证'" />
</a-col>
<a-col :span="12">
<a-form-item label="人像面" v-bind="validateInfos.idCardPositive" id="ElderInfoForm-idCardPositive"
name="idCardPositive">
<j-image-upload :fileMax="1" :value="opeMediaAddress + formData.idCardPositive"></j-image-upload>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="国徽面" v-bind="validateInfos.idCardNegative" id="ElderInfoForm-idCardNegative"
name="idCardNegative">
<j-image-upload :fileMax="1" :value="opeMediaAddress + formData.idCardNegative"></j-image-upload>
</a-form-item>
</a-col>
</a-row>
<a-row class="card-class" v-show="!detailSign || detailSign == 'zz'">
<a-col :span="24" style="border-bottom: 2px solid #f7f7f7; margin-bottom: 14px;">
<SectionDivider :title="'长者信息'" />
</a-col>
<a-col :span="24">
<a-row>
<a-col :span="12">
<a-row>
<a-col :span="24">
<a-form-item label="NUID" v-bind="validateInfos.nuId" id="ElderInfoForm-nuId" name="nuId">
<a-input v-model:value="formData.nuId"></a-input>
<!-- <span>{{ formData.nuId }}</span> -->
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="姓名" v-bind="validateInfos.name" id="ElderInfoForm-name" name="name">
<a-input v-model:value="formData.name"></a-input>
<!-- <span>{{ formData.name }}</span> -->
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="身份证号码" v-bind="validateInfos.idCard" id="ElderInfoForm-idCard" name="idCard">
<a-input v-model:value="formData.idCard"></a-input>
<!-- <span>{{ formData.idCard }}</span> -->
</a-form-item>
</a-col>
</a-row>
</a-col>
<a-col :span="6" :push="2">
<a-row>
<a-col :span="24">
<a-form-item label="护理单元">
<a-input v-model:value="formData.nuId_dictText"></a-input>
<!-- <j-dict-select-tag type='list' v-model:value="formData.nuId" :dictCode="`nu_base_info,nu_name,nu_id`"
placeholder="请选择分类标签" allowClear @upDictCode="upNuNameFunc" />-->
<!-- <span>{{ formData.nuId_dictText }}</span> -->
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="性别" v-bind="validateInfos.sex" id="ElderInfoForm-sex" name="sex">
<a-input v-model:value="formData.sex"></a-input>
<!-- <span>{{ formData.sex }}</span> -->
</a-form-item>
</a-col>
<a-col :span="24">
<a-form-item label="出生日期" v-bind="validateInfos.dateOfBirth" id="ElderInfoForm-dateOfBirth"
name="dateOfBirth">
<a-date-picker v-model:value="formData.dateOfBirth" value-format="YYYY-MM-DD"
format="YYYY年MM月DD日" style="width: 100%" />
<!-- <span>{{ formData.dateOfBirth }}</span> -->
</a-form-item>
</a-col>
</a-row>
</a-col>
<a-col :span="2" :push="3">
<a-form-item label="" v-bind="validateInfos.headPath" id="ElderInfoForm-headPath" name="headPath">
<j-image-upload :fileMax="1"
:value="opeMediaAddress + (formData.headPath ? formData.headPath : mrtxPic)"></j-image-upload>
</a-form-item>
</a-col>
</a-row>
</a-col>
<a-col :span="12">
<a-form-item label="民族" v-bind="validateInfos.national" id="ElderInfoForm-national" name="national">
<a-input v-model:value="formData.national"></a-input>
<!-- <span>{{ formData.national }}</span> -->
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="住址" v-bind="validateInfos.houseAddress" id="ElderInfoForm-houseAddress"
name="houseAddress">
<a-textarea v-model:value="formData.houseAddress" :autosize="{ minRows: 1 }" />
<!-- <span>{{ formData.houseAddress }}</span> -->
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="医保类型" v-bind="validateInfos.medicalType_dictText">
<a-textarea v-model:value="formData.medicalType_dictText" :autosize="{ minRows: 1 }" />
<!-- <span>{{ formData.houseAddress }}</span> -->
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="失能等级" v-bind="validateInfos.sndjName">
<a-textarea v-model:value="formData.sndjName" :autosize="{ minRows: 1 }" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="缴费状态" v-bind="validateInfos.paymentStatus_dictText">
<a-textarea v-model:value="formData.paymentStatus_dictText" :autosize="{ minRows: 1 }" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="有效开始日期" v-bind="validateInfos.startTime" id="ElderInfoForm-startTime"
name="startTime">
<a-date-picker v-model:value="formData.startTime" value-format="YYYY-MM-DD" style="width: 100%" />
<!-- <span>{{ formData.startTime }}</span> -->
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="有效结束日期" v-bind="validateInfos.endTime" id="ElderInfoForm-endTime" name="endTime">
<a-input v-if="formData.endTime == '9999-12-31'" :value="'长期'"></a-input>
<a-date-picker v-else v-model:value="formData.endTime" value-format="YYYY-MM-DD" style="width: 100%" />
<!-- {{ formData.endTime == '9999-12-31' ? '长期' : formData.endTime }} -->
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="签发机关" v-bind="validateInfos.issuingAuthority" id="ElderInfoForm-issuingAuthority"
name="issuingAuthority">
<a-input v-model:value="formData.issuingAuthority"></a-input>
<!-- <span>{{ formData.issuingAuthority }}</span> -->
</a-form-item>
</a-col>
</a-row>
<a-row class="card-class" v-if="!detailSign || detailSign == 'jhr'">
<a-col :span="24" style="border-bottom: 2px solid #f7f7f7; margin-bottom: 14px;">
<SectionDivider :title="'监护人信息'" />
</a-col>
<a-col :span="24">
<a-form-item label="人像面" v-bind="validateInfos.guardianIdCardPositive"
id="ElderInfoForm-guardianIdCardPositive" name="guardianIdCardPositive" :labelCol="labelCol2"
:wrapperCol="wrapperCol2">
<j-image-upload :fileMax="1"
:value="opeMediaAddress + formData.guardianIdCardPositive"></j-image-upload>
</a-form-item>
</a-col>
<!-- <a-col :span="12">
<a-form-item label="监护人头像" v-bind="validateInfos.guardianHeadPath" id="ElderInfoForm-guardianHeadPath"
name="guardianHeadPath">
<j-image-upload :fileMax="1" :value="opeMediaAddress + (formData.guardianHeadPath?formData.guardianHeadPath:mrtxPic)"></j-image-upload>
</a-form-item>
</a-col> -->
<a-col :span="12">
<a-form-item label="姓名" v-bind="validateInfos.guardianName" id="ElderInfoForm-guardianName"
name="guardianName">
<a-input v-model:value="formData.guardianName"></a-input>
<!-- <span>{{ formData.guardianName }}</span> -->
</a-form-item>
</a-col>
<!-- <a-col :span="12">
<a-form-item label="关系" v-bind="validateInfos.relationship" id="ElderInfoForm-relationship"
name="relationship">
<a-input v-model:value="formData.relationship" ></a-input>
<span>{{ formData.relationship }}</span>
</a-form-item>
</a-col> -->
<a-col :span="12">
<a-form-item label="身份证号" v-bind="validateInfos.guardianIdCard" id="ElderInfoForm-guardianIdCard"
name="guardianIdCard">
<a-input v-model:value="formData.guardianIdCard"></a-input>
<!-- <span>{{ formData.guardianIdCard }}</span> -->
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="联系电话" v-bind="validateInfos.guardianPhone" id="ElderInfoForm-guardianPhone"
name="guardianPhone">
<a-input v-model:value="formData.guardianPhone"></a-input>
<!-- <span>{{ formData.guardianPhone }}</span> -->
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="家庭住址" v-bind="validateInfos.guardianHomeAddress"
id="ElderInfoForm-guardianHomeAddress" name="guardianHomeAddress">
<a-textarea v-model:value="formData.guardianHomeAddress" :autosize="{ minRows: 1 }" />
<!-- <span>{{ formData.guardianHomeAddress }}</span> -->
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="工作单位" v-bind="validateInfos.guardianWorkUnit" id="ElderInfoForm-guardianWorkUnit"
name="guardianWorkUnit">
<a-textarea v-model:value="formData.guardianWorkUnit" :autosize="{ minRows: 1 }" />
<!-- <span>{{ formData.guardianWorkUnit }}</span> -->
</a-form-item>
</a-col>
</a-row>
</a-form>
</template>
</JFormContainer>
</a-spin>
</template>
<script lang="ts" setup>
import { ref, reactive, nextTick, computed } from 'vue';
import { useMessage } from '/@/hooks/web/useMessage';
import JImageUpload from '/@/components/Form/src/jeecg/components/JImageUpload.vue';
import { Form } from 'ant-design-vue';
import JFormContainer from '/@/components/Form/src/container/JFormContainer.vue';
const mrtxPic = import.meta.env.VITE_DEFAULT_MORENTOUXIANG_PIC//
const props = defineProps({
formDisabled: { type: Boolean, default: false },
formData: { type: Object, default: () => ({}) },
formBpm: { type: Boolean, default: true },
detailSign: { type: String, default: '' },
sndjDicts: null
});
const opeMediaAddress = import.meta.env.VITE_OPE_MEDIA_ADDRESS
const formRef = ref();
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
const formData = reactive<Record<string, any>>({
id: '',
nuId: '',
nuId_dictText: '',
name: '',
sex: '',
age: '',
idCard: '',
dateOfBirth: '',
national: '',
houseAddress: '',
idCardPositive: '',
idCardNegative: '',
guardianName: '',
relationship: '',
guardianIdCard: '',
guardianPhone: '',
guardianHomeAddress: '',
guardianWorkUnit: '',
issuingAuthority: '',
startTime: '',
endTime: '',
guardianBirthDate: '',
guardianSex: '',
guardianNational: '',
guardianCardHome: '',
guardianIdCardPositive: '',
medicalType: '',
medicalType_dictText: '',
disabilityReimbursementType: '',
sndjName: '',
paymentStatus_dictText: '',
headPath: '',
guardianHeadPath: '',
});
const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 8 } });
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 16 } });
const labelCol2 = ref<any>({ xs: { span: 24 }, sm: { span: 4 } });
const wrapperCol2 = ref<any>({ xs: { span: 24 }, sm: { span: 22 } });
const confirmLoading = ref<boolean>(false);
//
const validatorRules = reactive({
});
const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: false });
//
const disabled = computed(() => {
if (props.formBpm === true) {
if (props.formData.disabled === false) {
return false;
} else {
return true;
}
}
return props.formDisabled;
});
/**
* 新增
*/
function add() {
edit({});
}
/**
* 编辑
*/
function edit(record) {
console.log("🌊 ~ edit ~ record:", record)
nextTick(() => {
resetFields();
const tmpData = {};
Object.keys(formData).forEach((key) => {
if (record.hasOwnProperty(key)) {
tmpData[key] = record[key]
}
})
//
Object.assign(formData, tmpData);
console.log("🌊 ~ edit ~ formData:", formData)
formData.sndjName = '无'
if (!!record.disabilityReimbursementType) {
if (record.medicalType == 'syb') {
formData.sndjName = props.sndjDicts.syb_reimbursement_type.filter(item => item.value == formData.disabilityReimbursementType)[0].text
}
if (record.medicalType == 'zgyb') {
formData.sndjName = props.sndjDicts.zgyb_reimbursement_type.filter(item => item.value == formData.disabilityReimbursementType)[0].text
}
if (record.medicalType == 'jmyb') {
formData.sndjName = props.sndjDicts.jmyb_reimbursement_type.filter(item => item.value == formData.disabilityReimbursementType)[0].text
}
}
});
}
/**
* 提交数据
*/
async function submitForm() {
}
defineExpose({
add,
edit,
submitForm,
});
</script>
<style lang="less" scoped>
.antd-modal-form {
// padding: 14px;
}
.card-class {
padding-top: 24px;
padding-bottom: 24px;
padding-left: 14px;
padding-right: 14px;
// background-color: rgba(255, 255, 255, 0.9);
background-color: #fcfdff;
border-radius: 10px;
// box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 12px;
margin-bottom: 14px;
}
</style>

View File

@ -0,0 +1,75 @@
<template>
<a-drawer :title="title" width="1000px" :visible="visible" :closable="true" :footer-style="{ textAlign: 'right' }"
:bodyStyle="{ padding: '14px' }" @close="handleCancel">
<template #footer>
<a-button type="primary" style="margin-right: 8px" @click="handleCancel">关闭</a-button>
<a-button type="primary" @click="handleOk" v-if="!disableSubmit">确认</a-button>
</template>
<ElderInfoForm v-if="visible" ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit"
:sndjDicts="sndjDicts" :detailSign="detailSign" :formBpm="false">
</ElderInfoForm>
</a-drawer>
</template>
<script lang="ts" setup>
import { ref, nextTick, defineExpose } from 'vue';
import ElderInfoForm from './ElderInfoForm.vue'
const props = defineProps({
sndjDicts: null
});
const title = ref<string>('');
const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false);
const registerForm = ref();
const emit = defineEmits(['register', 'success']);
const detailSign = ref('')
/**
* 编辑
* @param record
*/
function edit(record) {
title.value = '详情' ;
visible.value = true;
nextTick(() => {
registerForm.value.edit(record);
});
}
/**
* 确定按钮点击事件
*/
function handleOk() {
registerForm.value.submitForm();
}
/**
* form保存回调事件
*/
function submitCallback() {
handleCancel();
emit('success');
}
/**
* 取消按钮回调事件
*/
function handleCancel() {
visible.value = false;
}
defineExpose({
edit,
disableSubmit,
});
</script>
<style lang="less">
/**隐藏样式-modal确定按钮 */
.jee-hidden {
display: none !important;
}
</style>
<style lang="less" scoped></style>

View File

@ -5,6 +5,7 @@ const { createConfirm } = useMessage();
enum Api {
list = '/admin/nuEmployeesAdvisoryInfo/nuEmployeesAdvisoryInfo/list',
getTjList = '/admin/nuEmployeesAdvisoryInfo/nuEmployeesAdvisoryInfo/getTjList',
save='/admin/nuEmployeesAdvisoryInfo/nuEmployeesAdvisoryInfo/add',
edit='/admin/nuEmployeesAdvisoryInfo/nuEmployeesAdvisoryInfo/edit',
deleteOne = '/admin/nuEmployeesAdvisoryInfo/nuEmployeesAdvisoryInfo/delete',
@ -29,6 +30,7 @@ export const getImportUrl = Api.importExcel;
* @param params
*/
export const list = (params) => defHttp.get({ url: Api.list, params });
export const getTjList = (params) => defHttp.get({ url: Api.getTjList, params });
/**
*

View File

@ -122,6 +122,48 @@ export const columns: BasicColumn[] = [
},
];
export const columnsTj: BasicColumn[] = [
{
title: '机构编码',
align: "center",
dataIndex: 'orgCode',
width: 100
},
{
title: '机构名称',
align: "center",
dataIndex: 'departName',
},
{
title: '员工姓名',
align: "center",
dataIndex: 'name',
width: 100
},
{
title: '员工性别',
align: "center",
dataIndex: 'sex',
width: 100
},
{
title: '联系电话',
align: "center",
dataIndex: 'tel',
width: 120
},
{
title: '入驻日期',
align: "center",
dataIndex: 'createTime',
customRender:({text}) =>{
text = !text ? "" : (text.length > 10 ? text.substr(0,10) : text);
return text;
},
width: 120
},
];
// 高级查询数据
export const superQuerySchema = {
tel: {title: '联系电话',order: 0,view: 'text', type: 'string',},

View File

@ -0,0 +1,220 @@
<template>
<div class="p-2">
<!--查询区域-->
<div class="jeecg-basic-table-form-container">
<a-form ref="formRef" @keyup.enter.native="searchQuery" :model="queryParam" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-row :gutter="24">
<a-col :lg="6">
<a-form-item name="orgCode">
<template #label><span title="机构名称">机构名称</span></template>
<j-dict-select-tag placeholder="请选择机构名称" v-model:value="queryParam.orgCode"
dictCode="sys_depart,depart_name,org_code" />
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="name">
<template #label><span title="员工姓名">员工姓名</span></template>
<JInput v-model:value="queryParam.name" placeholder="请输入员工姓名" />
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="tel">
<template #label><span title="联系电话">联系电话</span></template>
<JInput v-model:value="queryParam.tel" placeholder="请输入联系电话"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="6" :md="6" :sm="24">
<span style="float: right; overflow: hidden" class="table-page-search-submitButtons">
<a-col :lg="6">
<a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button>
<a-button type="primary" preIcon="ant-design:reload-outlined" @click="searchReset"
style="margin-left: 8px">重置</a-button>
</a-col>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!--引用表格-->
<BasicTable @register="registerTable" >
<!--插槽:table标题-->
<template #tableTitle>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction />
</template>
<template v-slot:bodyCell="{ column, record, index, text }">
</template>
</BasicTable>
<!-- 表单区域 -->
<NuEmployeesAdvisoryInfoModal ref="registerModal" @success="handleSuccess"></NuEmployeesAdvisoryInfoModal>
<EmployeesOrgListModal ref="registerOrgModal" @success="handleSuccess"></EmployeesOrgListModal>
</div>
</template>
<script lang="ts" name="nuEmployeesAdvisoryInfo-nuEmployeesAdvisoryInfo" setup>
import { ref, reactive } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { columnsTj } from './NuEmployeesAdvisoryInfo.data';
import { getTjList, deleteOne } from './NuEmployeesAdvisoryInfo.api';
import NuEmployeesAdvisoryInfoModal from './components/NuEmployeesAdvisoryInfoModal.vue'
import EmployeesOrgListModal from './components/EmployeesOrgListModal.vue'
import { useUserStore } from '/@/store/modules/user';
import JInput from "/@/components/Form/src/jeecg/components/JInput.vue";
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
const formRef = ref();
const queryParam = reactive<any>({});
const toggleSearchStatus = ref<boolean>(false);
const registerModal = ref();
const registerOrgModal = ref();
const userStore = useUserStore();
//table
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
tableProps: {
title: '员工信息',
api: getTjList,
columns: columnsTj,
canResize:false,
useSearchForm: false,
showActionColumn: false,
showIndexColumn: true,
actionColumn: {
width: 120,
fixed: 'right',
},
beforeFetch: async (params) => {
return Object.assign(params, queryParam);
},
},
});
const [registerTable, { reload, collapseAll, updateTableDataRecord, findTableDataRecord, getDataSource }, { rowSelection, selectedRowKeys }] = tableContext;
const labelCol = reactive({
xs:24,
sm:4,
xl:6,
xxl:4
});
const wrapperCol = reactive({
xs: 24,
sm: 20,
});
/**
* 详情
*/
function handleDetail(record: Recordable) {
registerModal.value.disableSubmit = true;
registerModal.value.edit(record);
}
function handleOrgDetail(record) {
registerOrgModal.value.disableSubmit = true;
registerOrgModal.value.edit(record);
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({ id: record.id }, handleSuccess);
}
/**
* 成功回调
*/
function handleSuccess() {
(selectedRowKeys.value = []) && reload();
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
// {
// label: '',
// onClick: handleEdit.bind(null, record),
// ifShow: record.status == '1'
// },
{
label: '详情',
onClick: handleDetail.bind(null, record),
},
{
label: '入驻机构',
onClick: handleOrgDetail.bind(null, record),
}
];
}
/**
* 下拉操作栏
*/
function getDropDownAction(record) {
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
}, {
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
placement: 'topLeft',
},
auth: 'nuEmployeesAdvisoryInfo:nu_employees_advisory_info:delete'
}
]
}
/**
* 查询
*/
function searchQuery() {
reload();
}
/**
* 重置
*/
function searchReset() {
formRef.value.resetFields();
selectedRowKeys.value = [];
//
reload();
}
</script>
<style lang="less" scoped>
.jeecg-basic-table-form-container {
padding: 0;
.table-page-search-submitButtons {
display: block;
margin-bottom: 24px;
white-space: nowrap;
}
.query-group-cust{
min-width: 100px !important;
}
.query-group-split-cust{
width: 30px;
display: inline-block;
text-align: center
}
.ant-form-item:not(.ant-form-item-with-help){
margin-bottom: 16px;
height: 32px;
}
:deep(.ant-picker),:deep(.ant-input-number){
width: 100%;
}
}
</style>