Browse Source

Merge branch 'master' of http://192.168.100.32:3000/fanfan/xt-front

Tong 2 năm trước cách đây
mục cha
commit
ac46698d66

+ 2 - 5
src/views/biz/mission/article/data.ts

@@ -53,7 +53,7 @@ export const dataFormSchema: FormSchema[] = [
 
   {
     label: '封面',
-    field: 'file',
+    field: 'files',
     component: 'XTUpload',
     componentProps: ({ formModel, schema }) => {
       return {
@@ -63,14 +63,11 @@ export const dataFormSchema: FormSchema[] = [
         helpText: '仅支持上传jpg/png/pdf文件,文件大小不超过10M',
         accept: ['image/*', '.pdf', '.doc', 'docx', 'xls', 'jpg', 'png'],
         onChange: data => {
-          console.log('🚀 ~ file: data.ts:57 ~ data:', data[0].id);
+          console.log('🚀 ~ file: data.ts:57 ~ data:', data);
           formModel[schema.field] = data;
         },
       };
     },
-    colProps: {
-      span: 22,
-    },
   },
   {
     label: '宣教内容',

+ 3 - 0
src/views/biz/mission/article/formDrawer.vue

@@ -53,6 +53,9 @@
       rowId.value = data.record.id;
       const resData = await articleById(data.record.id);
       console.log('resData::::', resData);
+      const files = [];
+      files.push(resData?.file);
+      resData.files = files;
       await setFieldsValue({
         ...resData,
       });

+ 3 - 7
src/views/biz/mission/article/index.vue

@@ -12,18 +12,14 @@
           :columns="columns"
         />
         <XTForm :form-data="formData" @change="callForm" />
-        <!-- <div>
-          <Select
-            @search="searchArticle"
-            @change="changeArticle"
-            v-model:value="searchArticleField"
-        /></div> -->
       </div>
     </div>
     <BasicTable @register="registerTable">
       <template #bodyCell="{ column, record }">
         <template v-if="column.dataIndex === 'cover'">
-          <Image :src="record.cover" :width="80" />
+          <Image :width="80" v-if="record.file" :src="record.file?.absolutePath" />
+          <span v-else />
+          <!-- <Image :src="record.cover" :width="80" /> -->
         </template>
         <template v-if="column.dataIndex === 'updatorName'">
           <Image :src="record.updateAvatar" style="width: 20; height: 20px" />

+ 12 - 11
src/views/biz/visit/check/data.ts

@@ -12,34 +12,35 @@ export const BasicTab = [
   },
   {
     key: '1',
-    label: '透中患者',
-    value: 12,
+    label: '关注',
+    value: 18,
     hasValue: true,
-    prefixColor: '#1BC1B3',
+    prefixColor: '#33CCFF',
     hasBracket: true,
   },
   {
     key: '2',
-    label: '非透中患者',
+    label: '患者',
     value: 18,
     hasValue: true,
-    prefixColor: '#D3D8DD',
+    prefixColor: '#F7B500',
     hasBracket: true,
   },
   {
     key: '3',
-    label: '患者',
+    label: '透中患者',
     value: 18,
     hasValue: true,
-    prefixColor: '#F7B500',
+    prefixColor: '#D3D8DD',
     hasBracket: true,
   },
+
   {
     key: '4',
-    label: '关注',
-    value: 18,
+    label: '非透中患者',
+    value: 12,
     hasValue: true,
-    prefixColor: '#33CCFF',
+    prefixColor: '#1BC1B3',
     hasBracket: true,
   },
 ];
@@ -64,7 +65,7 @@ export const checkColumns: BasicColumn[] = [
   },
   {
     title: '记录人',
-    dataIndex: 'recorder',
+    dataIndex: 'updatorName',
   },
 ];
 export const columns: BasicColumn[] = [

+ 76 - 59
src/views/biz/visit/check/index.vue

@@ -12,11 +12,22 @@
         />
         <XTForm :form-data="formData" @change="callFormChange" @click="callFormClick" />
       </div>
+      <div class="flex mb-2" v-if="siftData.length">
+        <Sift :data="siftData" />
+      </div>
       <BasicTable @register="registerTable">
         <template #bodyCell="{ column, record }">
           <template v-if="column.key === 'name'">
             <span :class="['table-dot', 'table-dot--' + record.status]" />
-            <span>{{ record.name }}</span>
+            <span :title="record.name">{{ record.name }}</span>
+          </template>
+          <template v-if="column.dataIndex === 'updatorName'">
+            <Image
+              v-if="record.updateAvatar"
+              :src="record.updateAvatar"
+              style="width: 20; height: 20px"
+            />
+            {{ record.updatorName }}
           </template>
           <template v-if="column.key === 'gender'">
             <Icon
@@ -42,7 +53,6 @@
                   tooltip: '查房记录',
                   label: '查房记录',
                   onClick: handleDetail.bind(null, record),
-                  // ifShow: !record.master,
                 },
                 {
                   auth: 'archives:patrolWard:edit',
@@ -51,10 +61,10 @@
                   onClick: handleEdit.bind(null, record),
                 },
                 {
-                  auth: 'storage:config:remove',
+                  auth: 'archives:patrolWard:followOrNo',
                   tooltip: '关注',
                   label: '关注',
-                  color: 'error',
+                  ifShow: record.status > 1,
                   popConfirm: {
                     title: '是否确定要关注?',
                     placement: 'left',
@@ -62,21 +72,21 @@
                   },
                 },
                 {
-                  auth: 'storage:config:remove',
+                  auth: 'archives:patrolWard:followOrNo',
                   tooltip: '取消关注',
                   label: '取消关注',
-                  color: 'error',
+                  ifShow: record.status == 1,
                   popConfirm: {
                     title: '是否确定要取消关注?',
                     placement: 'left',
-                    confirm: handleCancel.bind(null, record),
+                    confirm: handleClick.bind(null, record),
                   },
                 },
               ]"
               :actions="[
                 {
                   auth: 'archives:patrolWard:query',
-                  icon: 'icon-eye|iconfont',
+                  icon: 'icon-xt-ward_default|iconfont',
                   tooltip: '查房',
                   onClick: handleView.bind(null, record),
                 },
@@ -88,7 +98,6 @@
     </div>
     <FormModal @register="registerModal" @success="handleSuccess" />
     <ViewDrawer @register="registerDrawerView" @success="handleSuccess" />
-    <!-- <DatailModal @register="registerModalView" /> -->
   </div>
 </template>
 
@@ -97,11 +106,11 @@
   import { XTTab } from '/@/components/XTTab/index';
   import { XTForm } from '/@/components/XTForm/index';
   import { Icon } from '/@/components/Icon';
+  import { Image } from 'ant-design-vue';
   import { BasicTable, useTable, TableAction } from '/@/components/TableCard';
-  import { BasicTab, BasicTabActive, checkColumns } from './data';
+  import { checkColumns, BasicTabActive, BasicTab } from './data';
   import { ref } from 'vue';
   import { useRouter } from 'vue-router';
-
   import {
     checkQueryCheckRoomRecord,
     checkQueryPersonNumber,
@@ -114,9 +123,9 @@
   import FormModal from './formModal.vue';
   import ViewDrawer from './viewDrawer.vue';
   import { useDrawer } from '@/components/Drawer';
-
   import { useMessage } from '/@/hooks/web/useMessage';
 
+  // const bizDictOptions = reactive<any>({});
   //路由跳转
 
   const router = useRouter();
@@ -124,31 +133,11 @@
   const tabData = ref(BasicTab);
   const [registerModal, { openModal }] = useModal();
   const [registerDrawerView, { openDrawer, openDrawer: openDrawerView }] = useDrawer();
-
   onMounted(async () => {
-    const stats = await checkQueryPersonNumber();
-    console.log('🚀 ~ file: index.vue:104 ~ onMounted ~ stats:', stats);
-    tabData.value = tabData.value.map(ele => {
-      if (ele.key == '0') {
-        ele.value = stats.all;
-      }
-      if (ele.key == '1') {
-        ele.value = stats.dialysisPatients;
-      }
-      if (ele.key == '2') {
-        ele.value = stats.noDialysisPatients;
-      }
-      if (ele.key == '3') {
-        ele.value = stats.newPatient;
-      }
-      if (ele.key == '4') {
-        ele.value = stats.attention;
-      }
-      return ele;
-    });
+    getTab();
     console.log('🚀 ~ file: index.vue:118 ~ onMounted ~ tabData.value:', tabData.value);
   });
-  const [registerTable, { reload }] = useTable({
+  const [registerTable, { reload, clearSelectedRowKeys }] = useTable({
     api: checkQueryCheckRoomRecord,
     // exportAuthList: ['sys:log:export'],
     rowKey: 'id',
@@ -174,10 +163,10 @@
       componentType: 'Select',
       placeholder: '请选择',
       width: 120,
-      defaultValue: 'patrolTime',
+      defaultValue: 'st_patrol_time',
       dicts: [
-        { label: '按查房时间', value: 'patrolTime' },
-        { label: '按姓氏', value: 'patientNamePinyin' },
+        { label: '按查房时间', value: 'st_patrol_time' },
+        { label: '按姓氏', value: 'st_family_name' },
       ],
     },
     {
@@ -191,25 +180,41 @@
 
   const formValue = reactive({
     name: '',
+    tableSort: 'st_patrol_time',
   }) as any;
 
+  async function getTab() {
+    const personNumber = await checkQueryPersonNumber();
+    console.log('🚀 ~ file: index.vue:104 ~ onMounted ~ stats:', personNumber);
+    tabData.value = tabData.value.map(ele => {
+      if (ele.key == '0') {
+        ele.value = personNumber.all;
+      }
+      if (ele.key == '1') {
+        ele.value = personNumber.attention;
+      }
+      if (ele.key == '2') {
+        ele.value = personNumber.newPatient;
+      }
+      if (ele.key == '3') {
+        ele.value = personNumber.dialysisPatients;
+      }
+      if (ele.key == '4') {
+        ele.value = personNumber.noDialysisPatients;
+      }
+      return ele;
+    });
+  }
   // 表格请求之前,对参数进行处理, 添加默认 排序
   function handleBeforeFetch(params) {
-    // return { ...params, orders: tableSort.value };
-    const sift = {};
-    siftData.value.forEach(ele => {
-      sift[ele.field] = ele.isDict ? ele.dict : ele.value;
-    });
     return {
       ...params,
-      queryType: activeKey.value == '0' ? '0' : activeKey.value,
+      patientType: activeKey.value == '0' ? '0' : activeKey.value,
       name: formValue.name,
-      orders: [{ field: 'patrolTime', direction: 'DESC' }],
-      sortType: 'st_patrol_time',
-      ...sift,
+      orders: [],
+      sortType: formValue.tableSort,
     };
   }
-
   function handleAfterFetch(data) {
     // data.forEach(item => {
     //   item.status = 2;
@@ -235,12 +240,11 @@
         name: record.name,
         gender: record.gender,
         age: record.age,
+        activeKeys: 5,
       },
     });
   }
 
-  const { createMessage } = useMessage();
-
   // 编辑按钮事件
   function handleEdit(record: Recordable) {
     openModal(true, {
@@ -250,23 +254,33 @@
   }
 
   // 取消按钮事件
-  async function handleCancel(record) {
-    // clearSelectedRowKeys();
-    await checkFollowOrNo(record.id);
-    createMessage.success('操作成功!');
+  const { createMessage } = useMessage();
+  async function handleCancel(record: Recordable) {
+    await checkFollowOrNo(record.patientBasicId);
+    createMessage.success('关注成功!');
+    clearSelectedRowKeys();
+    await getTab();
+    await reload();
+  }
+  async function handleClick(record: Recordable) {
+    await checkFollowOrNo(record.patientBasicId);
+    createMessage.success('取消关注成功!');
+    clearSelectedRowKeys();
+    await getTab();
     await reload();
-    // await getTab();
   }
 
   // 弹窗回调事件
   async function handleSuccess({ isUpdate, values }) {
     console.log(isUpdate);
     console.log(values);
+    await getTab();
     await reload();
   }
   // 回调
   async function callTab(data) {
     activeKey.value = data.value;
+    await getTab();
     await reload();
   }
 
@@ -281,6 +295,9 @@
 
   async function callFormChange(data) {
     formValue.name = data.name ? data.name : '';
+    //   formValue.patientName = data.patientName ? data.patientName : '';
+    formValue.tableSort = data.tableSort ? data.tableSort : '';
+    await getTab();
     await reload();
   }
 
@@ -312,20 +329,20 @@
     margin-right: 6px;
     border-radius: 50%;
 
-    &hb--1 {
-      background-color: #1bc1b3;
+    &--1 {
+      background-color: #3cf;
     }
 
     &--2 {
-      background-color: #d3d8dd;
+      background-color: #f7b500;
     }
 
     &--3 {
-      background-color: #f7b500;
+      background-color: #d3d8dd;
     }
 
     &--4 {
-      background-color: #3cf;
+      background-color: #1bc1b3;
     }
   }
 

+ 57 - 58
src/views/biz/visit/check/viewDrawer.vue

@@ -6,10 +6,11 @@
       @register="registerDrawer"
       :title="getTitle"
       :width="width"
+      @item-click="callTab"
     >
-      <Description @register="registerDesc" :data="descData" />
+      <BasicForm @register="registerForm" layout="vertical" />
       <div>
-        <a-button type="primary" size="large" class="btn-add" @click="handleCreate">新增</a-button>
+        <a-button type="primary" size="large" class="btn-add" @click="handleSubmit">添加</a-button>
       </div>
 
       <BasicTable @register="registerTable">
@@ -20,7 +21,6 @@
                 {
                   auth: 'archives:patrolWard:edit',
                   icon: 'icon-edit|iconfont',
-                  // label: '编辑',
                   onClick: handleEdit.bind(null, record),
                 },
                 {
@@ -38,24 +38,25 @@
           </template>
         </template>
       </BasicTable>
-      <FormModal @register="registerModal" @success="handleSuccess" />
+      <FormModal @register="registerModal" @success="handleSuccess" @cancel="handleCancel" />
     </BasicDrawer>
   </div>
 </template>
 <script lang="ts" setup>
   import { onBeforeMount, ref, nextTick } from 'vue'; // onBeforeMount,
   import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
-  import { Description, useDescription } from '/@/components/Description';
-  import { viewSchema, columns } from './data';
+  // import { Description, useDescription } from '/@/components/Description';
+  import { columns } from './data';
+  import { BasicForm, useForm } from '/@/components/Form';
 
-  import { checkDetail, checkRemove, checkQueryPage } from '/@/api/biz/visit/checkApi';
+  import { checkDetail, checkRemove, checkQueryPage, checkAdd } from '/@/api/biz/visit/checkApi';
   import { listDictModel } from '/@/api/common';
   import { useMessage } from '/@/hooks/web/useMessage';
   import FormModal from './formModal.vue';
   import { BasicTable, useTable, TableAction } from '/@/components/TableCard';
   import { formatDictValue } from '/@/utils';
   import { useModal } from '/@/components/Modal';
-
+  import { dataFormSchema } from './data';
   const descData = ref({});
   const lists = ref([]);
   const getTitle = '查看查房记录';
@@ -64,43 +65,54 @@
   const [registerModal, { openModal }] = useModal();
   const { createMessage } = useMessage();
   // const siftData = ref([]);
-  // const activeKey = ref();
+  const activeKey = ref();
   const patientBasicId = ref();
-
+  // const isUpdate = ref(false);
   const typeOptions = ref();
   onBeforeMount(async () => {
     typeOptions.value = await listDictModel({ dictCode: 'sys_login_log_type' });
   });
   // 新增按钮事件
 
-  function handleCreate(data) {
-    openModal(true, {
-      isUpdate: false,
-      record: data,
-    });
+  async function handleSubmit() {
+    const values = await validate();
+    values.patientBasicId = patientBasicId.value;
+    // console.log('🚀 ~ file: index.vue:141 ~ handleSubmit ~ record', record);
+    await checkAdd({ ...values });
+    createMessage.success('新增成功!');
+    await getList();
   }
+  import dayjs from 'dayjs';
+  const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
+    labelWidth: 100,
+    schemas: dataFormSchema,
+    showActionButtonGroup: false,
+    actionColOptions: {
+      span: 23,
+    },
+  });
+
+  const params = ref();
   const [registerDrawer] = useDrawerInner(async data => {
+    await resetFields();
     console.log('::::::::::', data.record);
     const resData = await checkDetail(data.record.id);
     patientBasicId.value = resData.patientBasicId;
+    await setFieldsValue({
+      patrolTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
+    });
     descData.value = {
       ...resData,
       type: formatDictValue(typeOptions.value, resData.type),
     };
-    const params = {
+    params.value = {
       pageNum: 1,
       pageSize: 999,
       patientBasicId: resData.patientBasicId,
     };
-    const list = await checkQueryPage(params);
-    console.log(list);
-    if (list && list.data) {
-      lists.value = list.data;
-    }
-    await nextTick();
-    await setTableData(lists.value);
+    await getList();
   });
-  const [registerTable, { reload, setTableData }] = useTable({
+  const [registerTable, { setTableData, clearSelectedRowKeys }] = useTable({
     dataSource: lists.value,
     rowKey: 'id',
     columns,
@@ -114,15 +126,15 @@
     afterFetch: handleAfterFetch,
   });
 
-  const [registerDesc] = useDescription({
-    schema: viewSchema,
-    column: 1,
-    size: 'middle',
-    labelStyle: {
-      width: '120px',
-    },
-  });
-
+  async function getList() {
+    const list = await checkQueryPage(params.value);
+    console.log(list);
+    if (list && list.data) {
+      lists.value = list.data;
+    }
+    await nextTick();
+    await setTableData(lists.value);
+  }
   // 编辑按钮事件
   function handleEdit(record: Recordable) {
     openModal(true, {
@@ -131,26 +143,6 @@
     });
   }
 
-  // 删除按钮事件
-  // async function handleDelete(record: Recordable) {
-  //   if (record) {
-  //     await archivesPatrolWardRemove([record.id]);
-  //     createMessage.success('删除成功!');
-  //     clearSelectedRowKeys();
-  //     await reload();
-  //   } else {
-  //     createConfirm({
-  //       content: '你确定要删除?',
-  //       iconType: 'warning',
-  //       onOk: async () => {
-  //         const keys = getSelectRowKeys();
-  //         await archivesPatrolWardRemove(keys);
-  //         createMessage.success('删除成功!');
-  //         await reload();
-  //       },
-  //     });
-  //   }
-  // }
   function handleAfterFetch(data) {
     // data.forEach(item => {
     //   item.status = 2;
@@ -162,13 +154,20 @@
     console.log('🚀 ~ file: index.vue:141 ~ handleDelete ~ record', record);
     await checkRemove([record.id]);
     createMessage.success('删除成功!');
-    await reload();
+    await getList();
   }
 
-  // 弹窗回调事件
-  async function handleSuccess({ isUpdate, values }) {
-    console.log(isUpdate);
-    console.log(values);
+  // //取消按钮事件
+  async function handleCancel() {
+    clearSelectedRowKeys();
+  }
+  // // 弹窗回调事件
+  async function handleSuccess() {
+    await getList();
+  }
+  // 回调
+  async function callTab(data) {
+    activeKey.value = data.value;
   }
 </script>