| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- <script setup lang="ts">
- import { ref } from 'vue';
- import Institution from '@/components/institution.vue';
- import EditSystemService from '@/service/EditSystemService.vue';
- import type { SystemCwModel, SystemCwQuery } from '@/model/care.model';
- import ServicePackageDetail from '@/service/ServicePackageDetail.vue';
- // 接口数据
- import { getSystemCpListMethod, deleteSystemCwMethod } from '@/request/api/care.api';
- import { usePagination, useRequest } from 'alova/client';
- import { notification } from 'ant-design-vue';
- import { type VxeFormListeners, type VxeFormProps, type VxeCardInstance, type VxeCardListeners, type VxeCardProps, VxeUI } from 'vxe-pc-ui';
- const model = shallowRef<SystemCwQuery>();
- const searchFormProps = reactive<VxeFormProps<SystemCwQuery>>({
- titleWidth: 100,
- titleAlign: 'right',
- titleColon: true,
- data: {},
- items: [
- {
- field: 'name',
- title: '服务包名称',
- span: 5,
- itemRender: { name: 'VxeInput', props: { placeholder: '请输入' } },
- },
- {
- field: 'diagnoseDiseaseName',
- title: '专病',
- span: 5,
- itemRender: { name: 'VxeInput', props: { placeholder: '请输入' } },
- },
- {
- field: 'diagnoseSyndromeName',
- title: '证型',
- span: 5,
- itemRender: { name: 'VxeInput', props: { placeholder: '请输入' } },
- },
- {
- field: 'constitutionGroupName',
- title: '体质',
- span: 5,
- itemRender: { name: 'VxeInput', props: { placeholder: '请输入' } },
- },
- {
- span: 4,
- itemRender: {
- name: 'VxeButtonGroup',
- options: [
- { name: 'submits', type: 'submit', content: '查询', status: 'primary' },
- { name: 'reset', type: 'reset', content: '清空' },
- { name: 'add', content: '新增', status: 'primary' },
- ],
- events: {
- click(slotParams, { name }) {
- if (name === 'add') {
- // 新增
- editSystemService();
- }
- },
- },
- },
- },
- ],
- });
- const searchFormEmits: VxeFormListeners<SystemCwQuery> = {
- submit({ data }) {
- model.value = { ...data };
- },
- // 重置
- reset({ data }) {
- model.value = { ...data };
- },
- };
- const gridRef = ref<VxeGridInstance<SystemCwModel>>();
- const gridOptions = reactive<VxeGridProps<SystemCwModel>>({
- id: 'tag-list',
- border: true,
- showOverflow: true,
- height: 'auto',
- autoResize: false,
- syncResize: true,
- scrollY: { enabled: true, gt: 0 },
- toolbarConfig: {
- custom: true,
- zoom: true,
- slots: {
- tools: 'toolbar-extra',
- },
- },
- columnConfig: {
- resizable: true,
- },
- customConfig: {
- storage: true,
- },
- columns: [
- { type: 'seq', width: 70, fixed: 'left' },
- { field: 'name', title: '服务包名称' },
- { field: 'conditioningWrapPatientMatchRule.diagnoseDiseaseNames', title: '专病' },
- { field: 'conditioningWrapPatientMatchRule.diagnoseSyndromeNames', title: '证型' },
- { field: 'conditioningWrapPatientMatchRule.constitutionGroupNames', title: '体质' },
- { field: 'createBy', title: '创建者' },
- { field: 'createTime', title: '创建时间' },
- {
- field: 'action',
- title: '操作',
- align: 'center',
- width: 150,
- showOverflow: false,
- cellRender: {
- name: 'VxeButtonGroup',
- props: {
- mode: 'text',
- },
- options: [
- { content: '详情', status: 'primary', name: 'seeInstitution' },
- { content: '编辑', status: 'primary', name: 'editSystemService' },
- { content: '删除', status: 'primary', name: 'deleteSystemService' },
- ],
- events: {
- click({ row, rowIndex }, { name }) {
- let method;
- if (name === 'editSystemService') {
- method = editSystemService;
- } else if (name === 'deleteSystemService') {
- method = deleteSystemService;
- } else if (name === 'seeInstitution') {
- method = seeInstitution;
- }
- method?.(row, rowIndex);
- },
- },
- },
- },
- ],
- data: [],
- });
- const gridEvents: VxeGridListeners = {};
- const { loading, page, pageSize, total, onSuccess, replace, refresh, remove } = usePagination((page, size) => getSystemCpListMethod(page, size, model.value), {
- initialData: { data: [], total: 0 },
- initialPage: 1,
- initialPageSize: 100,
- watchingStates: [model],
- immediate: true,
- });
- onSuccess(({ data: { data } }) => {
- gridRef.value?.loadData(data);
- loading.value = false;
- });
- onBeforeMount(async () => {
- if (model.value?.id) {
- model.value = { ...model.value };
- }
- });
- onMounted(() => {
- model.value = toRaw(searchFormProps.data);
- });
- function deleteSystemService(model: SystemCwModel, index: number) {
- const { name } = model;
- VxeUI.modal.confirm({
- title: `删除系统服务`,
- content: `确认要删除 ${name} 系统服务吗?`,
- showClose: false,
- onConfirm() {
- deleteSystemCwMethod(model).then(() => {
- notification.success({
- message: `删除系统服务: ${name}`,
- description: '操作成功',
- });
- refresh(page.value);
- });
- },
- });
- }
- function seeInstitution(model?: SystemCwModel, index?: number) {
- const types = 'system';
- VxeUI.modal.open({
- id: 'servicePackageDetail-modal',
- title: '系统服务',
- // height: 700,
- // width: 1000,
- height: window.innerHeight,
- width: window.innerWidth,
- escClosable: true,
- destroyOnClose: true,
- slots: {
- default() {
- return h(ServicePackageDetail, <any>{
- data: { ...model, types },
- });
- },
- },
- });
- }
- function editSystemService(model?: SystemCwModel, index?: number) {
- const types = 'system';
- VxeUI.modal.open({
- id: 'edit-system-service-modal',
- title: model?.id ? `修改系统服务` : `新增系统服务`,
- // height: 700,
- // width: 1200,
- height: window.innerHeight,
- width: window.innerWidth,
- // position: {
- // top: Math.min(100, window.innerHeight * 0.1),
- // },
- escClosable: true,
- destroyOnClose: true,
- slots: {
- default() {
- return h(EditSystemService, <any>{
- data: { ...model, types },
- onSubmitSubmit(data: SystemCwModel) {
- refresh(page.value);
- VxeUI.modal.close(`edit-system-service-modal`);
- },
- });
- },
- },
- });
- }
- </script>
- <template>
- <div class="page-container flex flex-col">
- <header class="flex-none mt-4">
- <vxe-form v-bind="searchFormProps" v-on="searchFormEmits"></vxe-form>
- </header>
- <main class="flex-auto overflow-hidden">
- <vxe-grid ref="gridRef" v-bind="gridOptions" v-on="gridEvents" :loading="loading">
- <template #toolbar-extra>
- <vxe-button style="margin-right: 12px;" icon="vxe-icon-repeat" circle @click="refresh(page)"></vxe-button>
- </template>
- </vxe-grid>
- </main>
- <footer class="flex-none">
- <vxe-pager
- v-model:current-page="page"
- v-model:page-size="pageSize"
- :total="total"
- :layouts="['Home', 'PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'End', 'Sizes', 'FullJump', 'Total']"
- />
- </footer>
- </div>
- </template>
- <style scoped lang="scss">
- .page-container {
- padding: 0 24px;
- max-height: var(--page-main-container);
- }
- </style>
|