han 2 rokov pred
rodič
commit
25da313701

+ 3 - 3
src/api/biz/mission/recordApi.ts

@@ -13,11 +13,11 @@ export const getrecordList = (params?: object) => {
   return defHttp.post({ url: Api.recordList, params: setParams(params) });
 };
 
-export const recordDel = (id?: String) => {
-  return defHttp.post({ url: Api.recordDel + '/' + id });
+export const recordDel = (params?: object) => {
+  return defHttp.post({ url: Api.recordDel, params: params });
 };
 
-export const recordNumber = () => {
+export const getRecordNumber = () => {
   return defHttp.get({ url: Api.recordNumber });
 };
 

+ 16 - 7
src/views/biz/mission/article/data.ts

@@ -1,10 +1,12 @@
-import { BasicColumn, FormSchema } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
 import { listDictModel, uploadApi } from '/@/api/common';
+// import { DescItem } from '@/components/Description';
 
-export const columns: BasicColumn[] = [
+export const columns = [
   {
     title: '封面',
     dataIndex: 'cover',
+    // slots: { customRender: 'pic' },
   },
   {
     title: '标题',
@@ -51,17 +53,17 @@ export const dataFormSchema: FormSchema[] = [
 
   {
     label: '封面',
-    field: 'cover',
+    field: 'file',
     component: 'XTUpload',
     componentProps: ({ formModel, schema }) => {
       return {
         api: uploadApi,
         maxSize: 10,
-        maxNumber: 5,
-        helpText: '仅支持上传jpg/png/pdf文件,文件大小不超过2M',
-        accept: ['image/*', '.pdf', '.doc', 'docx', 'xls'],
+        maxNumber: 1,
+        helpText: '仅支持上传jpg/png/pdf文件,文件大小不超过10M',
+        accept: ['image/*', '.pdf', '.doc', 'docx', 'xls', 'jpg', 'png'],
         onChange: data => {
-          console.log('🚀 ~ file: data.ts:57 ~ data:', data);
+          console.log('🚀 ~ file: data.ts:57 ~ data:', data[0].id);
           formModel[schema.field] = data;
         },
       };
@@ -79,3 +81,10 @@ export const dataFormSchema: FormSchema[] = [
     },
   },
 ];
+// // 表单详情查看
+// export const viewSchema: DescItem[] = [
+//   {
+//     label: '操作名称',
+//     field: 'opName',
+//   },
+// ];

+ 2 - 1
src/views/biz/mission/article/formDrawer.vue

@@ -47,7 +47,7 @@
   const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async data => {
     await resetFields();
     setDrawerProps({ confirmLoading: false });
-    isUpdate.value = !!data?.isUpdate;
+    isUpdate.value = data?.isUpdate;
 
     if (unref(isUpdate)) {
       rowId.value = data.record.id;
@@ -64,6 +64,7 @@
     try {
       const values = await validate();
       setDrawerProps({ confirmLoading: true });
+      values.cover = values.files && values.files.map(ele => ele.id)[0];
       !unref(isUpdate)
         ? await articleAdd({ ...values })
         : await articleEdit({ ...values, id: rowId.value });

+ 52 - 19
src/views/biz/mission/article/index.vue

@@ -9,12 +9,26 @@
           :selected="tabSelected"
           :data="typeOptions"
           @item-click="callTab"
+          :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" />
+        </template>
+        <template v-if="column.dataIndex === 'updatorName'">
+          <Image :src="record.updateAvatar" style="width: 20; height: 20px" />
+          {{ record.updatorName }}
+        </template>
         <template v-if="column.key === 'disable'">
           <span
             :class="['table-dot']"
@@ -60,7 +74,11 @@
                 auth: 'biz:educationLibrary:remove',
                 icon: 'icon-xt-details_delete_default|iconfont',
                 tooltip: '删除',
-                onClick: handleDelete.bind(null, record),
+                popConfirm: {
+                  title: '是否确认删除',
+                  placement: 'left',
+                  confirm: handleDelete.bind(null, record),
+                },
               },
             ]"
           />
@@ -88,13 +106,13 @@
     articleDel,
   } from '/@/api/biz/mission/articleApi';
   import { listDictModel } from '/@/api/common';
-  // import { useModal } from '/@/components/Modal';
   import { XTTitle } from '/@/components/XTTitle/index';
   import { XTTab } from '/@/components/XTTab/index';
   import { XTForm } from '/@/components/XTForm/index';
   import { useDrawer } from '@/components/Drawer';
   import { useModal } from '@/components/Modal';
-
+  import { Image } from 'ant-design-vue';
+  // import { Select } from 'ant-design-vue';
   // 标题数据
   const titleData = [
     {
@@ -113,22 +131,27 @@
       btnText: '新增宣教',
     },
   ];
+
   // formdata
   const formData = [
     {
-      name: 'tableSort',
+      name: 'shiftDate',
       componentType: 'Select',
       placeholder: '请选择',
       width: 120,
-      defaultValue: 'patrolTime',
+      defaultValue: '',
       dicts: [
-        { label: '全部', value: 'patrolTime' },
-        { label: '正常', value: 'disable ="0"' },
-        { label: '停用', value: 'disable ="1"' },
+        { label: '全部', value: '' },
+        { label: '治疗宣教', value: 'het_treatment_education' },
+        { label: '血管通路', value: 'het_vascular_access' },
+        { label: '检查指导', value: 'het_inspection_guidance' },
+        { label: '药物指导', value: 'het_drug_guidance' },
+        { label: '饮食指导', value: 'het_dietary_guidance' },
+        { label: '康复指导', value: 'het_rehabilitative_guidance' },
       ],
     },
     {
-      name: 'title',
+      name: 'searchNames',
       componentType: 'Input',
       prefix: 'icon-xt-search',
       placeholder: '请输入宣教标题',
@@ -153,14 +176,21 @@
   const { createMessage } = useMessage();
   const [registerDrawer, { openDrawer }] = useDrawer();
   const [registerImpModal, { openModal: openImpModal }] = useModal();
+  // const [registerModalView] = useModal();
+  //预览
+  // const previewImg = ref(null);
+  // const handleRowClick = () => {
+  //   previewImg.value.clickHandler();
+  // };
 
-  // const tableSort = ref([
-  //   {
-  //     field: 'create_time',
-  //     direction: 'DESC',
-  //   },
-  // ]) as any;
-
+  // 预览文件地址
+  // function rowClick(record: any, index: number) {
+  //   return {
+  //     onclick: () => {
+  //       console.log(record, index);
+  //     },
+  //   };
+  // }
   const [registerTable, { reload, clearSelectedRowKeys }] = useTable({
     api: articleList,
     batchDelApi: articleStatus,
@@ -169,6 +199,7 @@
     rowKey: 'id',
     columns,
     showIndexColumn: true,
+    rowSelection: { type: 'checkbox' },
     bordered: true,
     actionColumn: {
       width: 200,
@@ -226,9 +257,9 @@
     return {
       ...params,
       // orders: tableSort.value,
-      name: searchNames.value == '' ? undefined : searchNames.value,
+      title: searchNames.value == '' ? undefined : searchNames.value,
       status: tabSelected.value == '' ? undefined : tabSelected.value,
-      time: shiftDate.value.length <= 0 ? undefined : shiftDate.value,
+      type: shiftDate.value.length <= 0 ? undefined : shiftDate.value,
     };
   }
 
@@ -292,6 +323,9 @@
     console.log('callForm:::', searchNames.value);
     await reload();
   }
+  // formValue.patientName = data.patientName ? data.patientName : '';
+  //   formValue.tableSort = data.tableSort ? data.tableSort : '';
+  //   await reload();
 </script>
 <style lang="less" scoped>
   .table-dot {
@@ -319,4 +353,3 @@
     margin-right: 5px;
   }
 </style>
-../../../../api/biz/mission/articleApi

+ 59 - 24
src/views/biz/mission/record/index.vue

@@ -24,11 +24,6 @@
           />
           <span> {{ formatDictValue(responseTypeOptions, record.treatmentStage) }}</span>
         </template>
-        <!-- <template v-if="column.key === 'supplierCategory'">
-          <span>
-            {{ formatDictValue(responsesupplierCategoryOptions, record.supplierCategory) }}</span
-          >
-        </template> -->
         <template v-if="column.key === 'action'">
           <TableAction
             :actions="[
@@ -36,7 +31,11 @@
                 auth: 'biz:drug:edit',
                 icon: 'icon-xt-details_delete_default|iconfont',
                 tooltip: '删除',
-                onClick: handleDelete.bind(null, record),
+                popConfirm: {
+                  title: '是否确认删除',
+                  placement: 'left',
+                  confirm: handleDelete.bind(null, record),
+                },
               },
             ]"
           />
@@ -46,19 +45,19 @@
   </div>
 </template>
 <script lang="ts" setup>
-  import { onBeforeMount, ref } from 'vue';
+  import { onBeforeMount, ref, reactive } from 'vue';
   import { BasicTable, useTable, TableAction } from '/@/components/TableCard';
   import { useMessage } from '/@/hooks/web/useMessage';
 
   import { formatDictValue, formatDictPreColor } from '/@/utils';
   import { columns } from './data';
 
-  import { getrecordList, recordNumber, recordDel } from '/@/api/biz/mission/recordApi';
+  import { getrecordList, getRecordNumber, recordDel } from '/@/api/biz/mission/recordApi';
   import { listDictModel } from '/@/api/common';
   import { XTTitle } from '/@/components/XTTitle/index';
   import { XTTab } from '/@/components/XTTab/index';
   import { XTForm } from '/@/components/XTForm/index';
-
+  import dayjs from 'dayjs';
   // formdata
   const formData = [
     {
@@ -67,7 +66,7 @@
       format: 'YYYY-MM-DD',
       valueFormat: 'YYYY-MM-DD',
       placeholder: '请选择日期',
-      width: 240,
+      width: 300,
     },
     {
       name: 'searchNames',
@@ -77,22 +76,29 @@
       width: 240,
     },
   ];
+
+  const formValue = reactive({
+    shiftDate: [
+      dayjs().subtract(1, 'month').format('YYYY-MM-DD'),
+      dayjs().add(12, 'month').format('YYYY-MM-DD'),
+    ],
+    content: '',
+  });
+
   // tab 切换选中
   const tabSelected = ref();
   // 操作名称
   const searchNames = ref('');
-  const shiftDate = ref([]);
+  // const shiftDate = ref([]);
 
   const typeOptions = ref();
   const responseTypeOptions = ref();
-  const responsesupplierCategoryOptions = ref();
   onBeforeMount(async () => {
-    responseTypeOptions.value = await listDictModel({ dictCode: 'sys_disable_type' });
-    responsesupplierCategoryOptions.value = await listDictModel({ dictCode: 'd' });
+    responseTypeOptions.value = await listDictModel({ dictCode: 'd' });
     getTab();
   });
 
-  const { createMessage } = useMessage();
+  const { createConfirm, createMessage } = useMessage();
 
   // const tableSort = ref([
   //   {
@@ -101,11 +107,11 @@
   //   },
   // ]) as any;
 
-  const [registerTable, { reload, clearSelectedRowKeys }] = useTable({
+  const [registerTable, { reload, clearSelectedRowKeys, getSelectRowKeys }] = useTable({
     api: getrecordList,
     batchDelApi: recordDel,
     // batchExportApi: pharmaceuticalsExport,
-    delAuthList: ['biz:consumable:remove'],
+    delAuthList: ['biz:educationRecord:remove'],
     rowKey: 'id',
     columns,
     showIndexColumn: true,
@@ -121,11 +127,23 @@
   // 删除按钮事件
   async function handleDelete(record: Recordable) {
     if (record) {
-      await recordDel(record.id);
+      await recordDel([record.id]);
       createMessage.success('删除成功!');
       clearSelectedRowKeys();
       await reload();
       await getTab();
+    } else {
+      createConfirm({
+        content: '你确定要删除?',
+        iconType: 'warning',
+        onOk: async () => {
+          const keys = getSelectRowKeys();
+          await recordDel(keys);
+          createMessage.success('删除成功!');
+          await reload();
+          await getTab();
+        },
+      });
     }
   }
 
@@ -135,15 +153,19 @@
     return {
       ...params,
       // orders: tableSort.value,
-      name: searchNames.value == '' ? undefined : searchNames.value,
-      status: tabSelected.value == '' ? undefined : tabSelected.value,
-      time: shiftDate.value.length <= 0 ? undefined : shiftDate.value,
+      title: searchNames.value == '' ? undefined : searchNames.value,
+      treatmentStage: tabSelected.value == '' ? undefined : tabSelected.value,
+      // time: shiftDate.value.length <= 0 ? undefined : shiftDate.value,
+      time: [
+        formValue.shiftDate[0],
+        dayjs(formValue.shiftDate[1]).add(1, 'day').format('YYYY-MM-DD'),
+      ],
     };
   }
 
   async function getTab() {
-    typeOptions.value = await listDictModel({ dictCode: 'sys_disable_type' });
-    const typeNums = await recordNumber(); // 获取各类型数量
+    typeOptions.value = await listDictModel({ dictCode: 'd' });
+    const typeNums = await getRecordNumber(); // 获取各类型数量
     let typeList = [];
     typeOptions.value.forEach(ele => {
       // 变量各类型放置对应数量
@@ -182,8 +204,9 @@
 
   // 查询组件回调
   async function callForm(data) {
-    shiftDate.value = data.shiftDate ? data.shiftDate : '';
+    // shiftDate.value = data.shiftDate ? data.shiftDate : '';
     searchNames.value = data.searchNames ? data.searchNames : '';
+    formValue.shiftDate = data.shiftDate || '';
     console.log('callForm:::', searchNames.value);
     await reload();
   }
@@ -197,6 +220,18 @@
     border-radius: 50%;
   }
 
+  &--d_after {
+    background-color: #1bc1b3;
+  }
+
+  &--d_among {
+    background-color: #2d5aff;
+  }
+
+  &--d_before {
+    background-color: #854aff;
+  }
+
   ::v-deep(.ant-btn-link) {
     color: #3d4155;
   }