Переглянути джерело

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

fan 2 роки тому
батько
коміт
7d4e3e1c94

+ 6 - 6
src/api/biz/parameter/parameter.ts

@@ -1,13 +1,13 @@
 import { defHttp } from '/@/utils/http/axios';
 enum Api {
-  edit = '/biz/sys/params/edit',
-  get = '/biz/sys/params/query/list',
+  editParameter = '/biz/sys/params/edit',
+  getParameter = '/biz/sys/params/query/list',
 }
 
-export const get = (params?: object) => {
-  return defHttp.post({ url: Api.get, params: params });
+export const getParameter = (params?: object) => {
+  return defHttp.post({ url: Api.getParameter, params: params });
 };
 
-export const edit = (params?: object) => {
-  return defHttp.post({ url: Api.edit, params: params });
+export const editParameter = (params?: object) => {
+  return defHttp.post({ url: Api.editParameter, params: params });
 };

+ 1 - 1
src/api/sys/model/uploadModel.ts

@@ -1,6 +1,6 @@
 export interface UploadApiResult {
   message: string;
-  code: number;
+  code: string;
   url: string;
   data: {
     absolutePath: string;

+ 12 - 4
src/components/Upload/src/UploadModal.vue

@@ -124,7 +124,7 @@
         const { maxSize } = props;
         // 设置最大值,则判断
         if (maxSize && file.size / 1024 / 1024 >= maxSize) {
-          createMessage.error(locales.upload.maxSizeMultiple, maxSize);
+          createMessage.error('只能上传不超过' + maxSize + 'MB的文件!');
           return false;
         }
 
@@ -212,7 +212,7 @@
       async function handleStartUpload() {
         const { maxNumber } = props;
         if ((fileListRef.value.length + props.previewFileList?.length ?? 0) > maxNumber) {
-          return createMessage.warning(locales.upload.maxNumber, maxNumber);
+          return createMessage.warning('最多只能上传' + maxNumber + '个文件');
         }
         try {
           isUploadingRef.value = true;
@@ -222,6 +222,8 @@
           const data = await Promise.all(
             uploadFileList.map(item => {
               const result = uploadApiByItem(item);
+              console.log(result);
+              debugger;
               return result;
             }),
           );
@@ -240,7 +242,7 @@
         const { maxNumber } = props;
 
         if (fileListRef.value.length > maxNumber) {
-          return createMessage.warning(locales.upload.maxNumber, maxNumber);
+          return createMessage.warning('最多只能上传' + maxNumber + '个文件');
         }
         if (isUploadingRef.value) {
           return createMessage.warning(locales.upload.saveWarn);
@@ -250,7 +252,13 @@
         for (const item of fileListRef.value) {
           const { status, responseData } = item;
           if (status === UploadResultStatus.SUCCESS && responseData) {
-            fileList.push(responseData.data.absolutePath);
+            console.log(responseData);
+            debugger;
+            if (responseData.code == 'B0001') {
+              createMessage.error('上传失败,请联系管理员查看配置是否正确');
+            } else {
+              fileList.push(responseData.data.absolutePath);
+            }
           }
         }
         // 存在一个上传成功的即可保存

+ 3 - 2
src/views/biz/management/complication/data.ts

@@ -38,10 +38,11 @@ export const noteInfoColumns: BasicColumn[] = [
   },
   {
     title: '模板内容',
-    dataIndex: 'name',
+    dataIndex: 'context',
   },
   {
     title: '排序',
-    dataIndex: 'name',
+    dataIndex: 'sort',
+    width: 100,
   },
 ];

+ 150 - 107
src/views/biz/management/complication/index.vue

@@ -1,115 +1,121 @@
 <template>
-  <Card title="并发症维护" type="inner" class="main-card" size="default">
-    <Row>
-      <Col :span="6">
-        <Card style="height: 600px">
-          <Input
-            v-model:value="searchName"
-            placeholder="请输入并发症名称"
-            style="width: 70%; margin-bottom: 10px"
-            @change="handleSearch"
-          >
-            <template #prefix> <Icon icon="icon-search|iconfont" :size="14" /></template>
-          </Input>
-          <a-dropdown-button size="small">
-            <template #overlay>
-              <a-menu @click="handleMenuClick">
-                <a-menu-item key="1">添加并发症</a-menu-item>
-                <a-menu-item key="2">批量导入</a-menu-item>
-                <a-menu-item key="3">批量导出</a-menu-item>
-              </a-menu>
-            </template>
-          </a-dropdown-button>
-          <List item-layout="horizontal" :data-source="complicationList">
-            <template #renderItem="{ item, index }">
-              <ListItem
-                @click="handleDetail(item, index)"
-                :key="index"
-                :class="{ actives: classIndex === index }"
+  <div class="m-4">
+    <div>
+      <XTTitle title="并发症维护" />
+      <div style="margin-top: 16px">
+        <Row>
+          <Col :span="6">
+            <Card>
+              <Input
+                v-model:value="searchName"
+                placeholder="请输入并发症名称"
+                style="width: 70%; margin-bottom: 10px"
+                @change="handleSearch"
               >
-                <ListItemMeta>
-                  <template #title>
-                    {{ item.name }}
-                  </template>
-                </ListItemMeta>
-              </ListItem>
-            </template>
-          </List>
-        </Card></Col
-      >
-      <Col :span="1" />
-      <Col :span="17">
-        <Card :title="detailName">
-          <template #extra>
-            <Button shape="circle" v-auth="['bizSys:wardInfo:add']" @click="handleEditInfo"
-              ><Icon icon="icon-xt-details_edit_default|iconfont" :size="14"
-            /></Button>
-            <Button
-              shape="circle"
-              v-auth="['bizSys:wardInfo:add']"
-              @click="handleDel(detailForm.id)"
-              style="margin-left: 20px"
-              ><Icon icon="icon-xt-details_delete_default|iconfont" :size="14"
-            /></Button>
-          </template>
-          <div class="mx-3 my-2">
-            <DescCard :showHead="false" type="touxi" :data="detailFromData" />
-          </div>
-          <Card
-            title="说明模板"
-            size="small"
-            style="border: 0"
-            headStyle="background: #FFFFFF;border: 0px;font-size: 14px !important;"
+                <template #prefix> <Icon icon="icon-search|iconfont" :size="14" /></template>
+              </Input>
+              <a-dropdown-button size="small">
+                <template #overlay>
+                  <a-menu @click="handleMenuClick">
+                    <a-menu-item key="1">添加并发症</a-menu-item>
+                    <a-menu-item key="2">批量导入</a-menu-item>
+                    <a-menu-item key="3">批量导出</a-menu-item>
+                  </a-menu>
+                </template>
+              </a-dropdown-button>
+              <List item-layout="horizontal" :data-source="complicationList">
+                <template #renderItem="{ item, index }">
+                  <ListItem
+                    @click="handleDetail(item, index)"
+                    :key="index"
+                    :class="{ actives: classIndex === index }"
+                  >
+                    <ListItemMeta>
+                      <template #title>
+                        {{ item.name }}
+                      </template>
+                    </ListItemMeta>
+                  </ListItem>
+                </template>
+              </List>
+            </Card></Col
           >
-            <template #extra
-              ><Button shape="circle" v-auth="['bizSys:wardInfo:add']" @click="handleAddNote"
-                ><Icon icon="icon-plus|iconfont" :size="14" /></Button
-            ></template>
-            <BasicTable @register="registerTable">
-              <template #bodyCell="{ column, record }">
-                <!-- <template v-if="column.key === 'disable'">
+          <Col :span="18">
+            <Card :title="detailName">
+              <template #extra>
+                <Button shape="circle" v-auth="['bizSys:wardInfo:add']" @click="handleEditInfo"
+                  ><Icon icon="icon-xt-details_edit_default|iconfont" :size="14"
+                /></Button>
+                <Button
+                  shape="circle"
+                  v-auth="['bizSys:wardInfo:add']"
+                  @click="handleDel(detailForm.id)"
+                  style="margin-left: 20px"
+                  ><Icon icon="icon-xt-details_delete_default|iconfont" :size="14"
+                /></Button>
+              </template>
+              <div class="mx-3 my-2">
+                <DescCard :showHead="false" type="touxi" :data="detailFromData" />
+              </div>
+              <Card
+                title="说明模板"
+                size="small"
+                class="note-card"
+                headStyle="background: #FFFFFF;border: 0px;font-size: 14px !important;"
+              >
+                <template #extra
+                  ><Button shape="circle" v-auth="['bizSys:wardInfo:add']" @click="handleAddNote"
+                    ><Icon icon="icon-plus|iconfont" :size="14" /></Button
+                ></template>
+                <BasicTable @register="registerTable">
+                  <template #bodyCell="{ column, record }">
+                    <!-- <template v-if="column.key === 'disable'">
                 <Tag :color="formatDictColor(disableOptions, record.disable)">
                   {{ formatDictValue(disableOptions, record.disable) }}
                 </Tag>
               </template> -->
-                <template v-if="column.key === 'action'">
-                  <TableAction
-                    :actions="[
-                      {
-                        auth: 'bizSys:complicationExplain:edit',
-                        icon: 'icon-xt-details_edit_default|iconfont',
-                        tooltip: '编辑',
-                        onClick: handleEditNote.bind(null, record),
-                      },
-                      {
-                        auth: 'bizSys:complicationExplain:remove',
-                        icon: 'icon-xt-details_delete_default|iconfont',
-                        tooltip: '删除',
-                        popConfirm: {
-                          title: '是否删除此说明模板',
-                          placement: 'left',
-                          confirm: handleDelNote.bind(null, record),
-                        },
-                      },
-                    ]"
-                  />
-                </template>
-              </template>
-            </BasicTable>
-          </Card>
-        </Card>
-      </Col>
-    </Row>
-  </Card>
-  <ComplicationFormModal
-    @register="registerComplicationModal"
-    @success="handleComplicationSuccess"
-  />
-  <NoteFormModal @register="registerNoteModal" @success="handleAddNoteSuccess" />
+                    <template v-if="column.key === 'action'">
+                      <TableAction
+                        :actions="[
+                          {
+                            auth: 'bizSys:complicationExplain:edit',
+                            icon: 'icon-xt-details_edit_default|iconfont',
+                            tooltip: '编辑',
+                            onClick: handleEditNote.bind(null, record),
+                          },
+                          {
+                            auth: 'bizSys:complicationExplain:remove',
+                            icon: 'icon-xt-details_delete_default|iconfont',
+                            tooltip: '删除',
+                            popConfirm: {
+                              title: '是否删除此说明模板',
+                              placement: 'left',
+                              confirm: handleDelNote.bind(null, record),
+                            },
+                          },
+                        ]"
+                      />
+                    </template>
+                  </template>
+                </BasicTable>
+              </Card>
+            </Card>
+          </Col>
+        </Row>
+      </div>
+    </div>
+    <ComplicationFormModal
+      @register="registerComplicationModal"
+      @success="handleComplicationSuccess"
+    />
+    <NoteFormModal @register="registerNoteModal" @success="handleAddNoteSuccess" />
+  </div>
 </template>
 
 <script lang="ts" setup>
   import { Card, Row, Col, List, Input, Button } from 'ant-design-vue';
+
+  import { XTTitle } from '/@/components/XTTitle/index';
   import Icon from '/@/components/Icon/src/Icon.vue';
   import {
     getComplicationList,
@@ -158,6 +164,7 @@
     rowKey: 'id',
     columns: noteInfoColumns,
     showIndexColumn: false,
+    striped: false,
     formConfig: {
       labelWidth: 120,
       autoSubmitOnEnter: true,
@@ -171,7 +178,6 @@
     },
     pagination: false,
     useSearchForm: false,
-    bordered: true,
     actionColumn: {
       width: 320,
       title: '操作',
@@ -334,11 +340,6 @@
   }
 </script>
 <style lang="less" scoped>
-  .main-card {
-    width: 100%;
-    height: 700px;
-  }
-
   ::v-deep(.ant-btn-group-sm .ant-btn.ant-btn-icon-only) {
     height: 32px !important;
     width: 32px !important;
@@ -365,4 +366,46 @@
     font-weight: 600;
     color: #000a18;
   }
+
+  ::v-deep(.ant-btn-link) {
+    color: rgb(61 65 85 / 100%);
+  }
+
+  ::v-deep(.ant-card) {
+    height: 800px;
+  }
+
+  ::v-deep(.ant-table-body) {
+    height: 460px !important;
+  }
+
+  .note-card {
+    border: 0;
+    height: 520px !important;
+
+    ::v-deep(.ant-card-body) {
+      height: 500px;
+    }
+  }
+
+  ::v-deep(.ant-table-tbody > tr > td) {
+    text-align: left !important;
+    border-top: 0 !important;
+    border-right: 0 !important;
+    border-bottom: 1px solid #f0f0f0 !important;
+    border-left: 0 !important;
+  }
+
+  ::v-deep(.fan-basic-table .ant-table-wrapper table) {
+    border: 0 !important;
+  }
+
+  ::v-deep(.ant-table-thead > tr > th) {
+    text-align: left !important;
+    color: #818694;
+  }
+
+  ::v-deep(.fan-basic-table-action.center) {
+    justify-content: left !important;
+  }
 </style>

+ 124 - 84
src/views/biz/management/parameter/index.vue

@@ -1,94 +1,103 @@
 <template>
-  <div>
-    <BasicTable @register="registerTable">
-      <template #bodyCell="{ column, record }">
-        <template
-          v-if="
-            column.key === 'contents' &&
-            record.key != 1 &&
-            record.key != 2 &&
-            record.key != 3 &&
-            record.key != 4
-          "
-        >
-          <div>
-            <a-input-number
-              v-if="editableData[record.key]"
-              v-model:value="editableData[record.key][column.dataIndex]"
-              placeholder="请输入参数内容"
-            />
-            <template v-else> {{ record.contents }} </template>
-          </div>
-        </template>
+  <div class="m-4">
+    <XTTitle title="业务参数设置" />
+    <div class="page-body">
+      <!-- <Input placeholder="请输入医嘱类型" class="search-input" @change="handleSearch">
+        <template #prefix> <Icon icon="icon-search|iconfont" :size="14" /></template>
+      </Input> -->
+      <BasicTable @register="registerTable">
+        <template #bodyCell="{ column, record }">
+          <template
+            v-if="
+              column.key === 'contents' &&
+              record.key != 1 &&
+              record.key != 2 &&
+              record.key != 3 &&
+              record.key != 4
+            "
+          >
+            <div>
+              <a-input-number
+                v-if="editableData[record.key]"
+                v-model:value="editableData[record.key][column.dataIndex]"
+                placeholder="请输入参数内容"
+              />
+              <template v-else> {{ record.contents }} </template>
+            </div>
+          </template>
 
-        <template
-          v-if="
-            column.key === 'contents' && (record.key == 2 || record.key == 3 || record.key == 4)
-          "
-        >
-          <div>
-            <a-radio-group
-              v-model:value="editableData[record.key][column.dataIndex]"
-              v-if="editableData[record.key]"
-            >
-              <a-radio :value="1">是</a-radio>
-              <a-radio :value="0">否</a-radio>
-            </a-radio-group>
+          <template
+            v-if="
+              column.key === 'contents' && (record.key == 2 || record.key == 3 || record.key == 4)
+            "
+          >
+            <div>
+              <a-radio-group
+                v-model:value="editableData[record.key][column.dataIndex]"
+                v-if="editableData[record.key]"
+              >
+                <a-radio :value="1">是</a-radio>
+                <a-radio :value="0">否</a-radio>
+              </a-radio-group>
 
-            <template v-else>
-              {{ record.contents == 0 ? '否' : '是' }}
-            </template>
-          </div>
-        </template>
+              <template v-else>
+                {{ record.contents == 0 ? '否' : '是' }}
+              </template>
+            </div>
+          </template>
 
-        <template v-if="column.key === 'contents' && record.key == 1">
-          <div>
-            <DatePicker
-              v-if="editableData[record.key]"
-              :show-time="true"
-              :format="'YYYY-MM-DD HH:mm:ss'"
-              :value-format="'YYYY-MM-DD HH:mm:ss'"
-              v-model:value="editableData[record.key][column.dataIndex]"
-              placeholder="请选择时间"
+          <template v-if="column.key === 'contents' && record.key == 1">
+            <div>
+              <DatePicker
+                v-if="editableData[record.key]"
+                :show-time="true"
+                :format="'YYYY-MM-DD HH:mm:ss'"
+                :value-format="'YYYY-MM-DD HH:mm:ss'"
+                v-model:value="editableData[record.key][column.dataIndex]"
+                placeholder="请选择时间"
+              />
+              <template v-else>
+                {{ record.contents }}
+              </template>
+            </div>
+          </template>
+          <template v-if="column.key === 'action'">
+            <TableAction
+              :actions="[
+                {
+                  auth: ['bizSys:params:add', 'bizSys:params:edit', 'bizSys:params:remove'],
+                  ifShow: editableData[record.key] ? false : true,
+                  icon: 'icon-xt-details_edit_default|iconfont',
+                  tooltip: '编辑',
+                  label: '',
+                  onClick: handleEdit.bind(null, record),
+                },
+                {
+                  auth: ['bizSys:params:add', 'bizSys:params:edit', 'bizSys:params:remove'],
+                  ifShow: editableData[record.key] ? true : false,
+                  icon: 'icon-check|iconfont',
+                  tooltip: '保存',
+                  label: '',
+                  onClick: handleSave.bind(null, record),
+                },
+              ]"
             />
-            <template v-else>
-              {{ record.contents }}
-            </template>
-          </div>
+          </template>
         </template>
-        <template v-if="column.key === 'action'">
-          <TableAction
-            :actions="[
-              {
-                auth: ['bizSys:params:add', 'bizSys:params:edit', 'bizSys:params:remove'],
-                ifShow: editableData[record.key] ? false : true,
-                icon: 'icon-xt-details_edit_default|iconfont',
-                tooltip: '编辑',
-                label: '',
-                onClick: handleEdit.bind(null, record),
-              },
-              {
-                auth: ['bizSys:params:add', 'bizSys:params:edit', 'bizSys:params:remove'],
-                ifShow: editableData[record.key] ? true : false,
-                icon: 'icon-check|iconfont',
-                tooltip: '保存',
-                label: '',
-                onClick: handleSave.bind(null, record),
-              },
-            ]"
-          />
-        </template>
-      </template>
-    </BasicTable>
+      </BasicTable>
+    </div>
   </div>
 </template>
 <script lang="ts" setup>
   import { ref, UnwrapRef, reactive } from 'vue'; // onBeforeMount,
-  import { DatePicker } from 'ant-design-vue';
+  import { DatePicker } from 'ant-design-vue'; // , Input
+
+  // import Icon from '/@/components/Icon/src/Icon.vue';
+  import { XTTitle } from '/@/components/XTTitle/index';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { cloneDeep } from 'lodash-es';
   import { BasicTable, useTable, TableAction } from '/@/components/Table';
-  import { get, edit } from '/@/api/biz/parameter/parameter';
+  import { getParameter, editParameter } from '/@/api/biz/parameter/parameter';
   import { columns } from './data';
 
   interface DataItem {
@@ -120,18 +129,16 @@
       },
     },
     useSearchForm: false,
-    bordered: true,
     actionColumn: {
       width: 320,
       title: '操作',
       dataIndex: 'action',
     },
-    beforeFetch: handleBeforeFetch,
   });
   // 获取数据结构变更
-  async function getData() {
+  async function getData(type) {
     dataList.value = [];
-    const res = await get();
+    const res = await getParameter(type);
     resObj.value = res;
     Object.keys(res).forEach(value => {
       switch (value) {
@@ -372,7 +379,7 @@
     return dataList.value;
   }
 
-  function handleBeforeFetch() {}
+  // function handleSearch() {}
   // 编辑业务
   function handleEdit(record) {
     const key = record.key;
@@ -393,7 +400,7 @@
         parseFloat(editableData[key].contents).toFixed(2),
       );
     }
-    await edit(resObj.value);
+    await editParameter(resObj.value);
     delete editableData[key];
     createMessage.success('参数[' + editName + ']修改成功!');
     reload();
@@ -403,4 +410,37 @@
   ::v-deep(.ant-btn-link) {
     color: rgb(61 65 85 / 100%);
   }
+
+  ::v-deep(.ant-table-thead > tr > th) {
+    text-align: left !important;
+    color: #818694;
+  }
+
+  ::v-deep(.ant-table-tbody > tr > td) {
+    text-align: left !important;
+    border-top: 0 !important;
+    border-right: 0 !important;
+    border-bottom: 1px solid #f0f0f0 !important;
+    border-left: 0 !important;
+  }
+
+  .page-body {
+    background-color: #fff;
+    padding: 16px;
+    margin-top: 16px;
+  }
+
+  .search-input {
+    width: 300px;
+    margin: 0.6rem;
+    float: right;
+  }
+
+  ::v-deep(.fan-basic-table .ant-table-wrapper table) {
+    border: 0 !important;
+  }
+
+  ::v-deep(.fan-basic-table-action.center) {
+    justify-content: left !important;
+  }
 </style>

+ 10 - 0
src/views/biz/management/ward/data.ts

@@ -72,6 +72,16 @@ export const wardInfoDataFormSchema: FormSchema[] = [
       placeholder: '请输入病区名',
     },
   },
+  {
+    label: '排序',
+    field: 'sort',
+    required: true,
+    component: 'InputNumber',
+    componentProps: {
+      placeholder: '请输入排序',
+      min: 0,
+    },
+  },
   {
     label: '状态',
     field: 'disable',

+ 227 - 185
src/views/biz/management/ward/index.vue

@@ -1,192 +1,205 @@
 <template>
-  <PageWrapper>
-    <Card
-      :bordered="false"
-      :active-tab-key="activeKey"
-      :tab-list="tabList"
-      style="height: 800px"
-      @tabChange="
-        key => {
-          activeKey = key;
-        }
-      "
-    >
-      <p :key="0" v-if="activeKey == 0">
-        <Row>
-          <Col :span="6">
-            <Card title="病区属性" style="height: 680px">
-              <template #extra
-                ><Button
-                  shape="circle"
-                  v-auth="['bizSys:wardProperties:add']"
-                  @click="handleAddAttr"
-                  ><Icon icon="icon-plus|iconfont" :size="14" /></Button
-              ></template>
-              <Row>
-                <div class="type-title">阴性</div>
-              </Row>
-              <Row v-for="item in attributeFeminineList" :key="item.key" style="margin: 4px 0">
-                <Tag
-                  class="attrs"
-                  closable
-                  @close="handleDeleteAttr(item.key)"
-                  @click="handleSelectWard(item)"
-                  :value="item.key"
-                  >{{ item.label }}
-                </Tag>
-              </Row>
-              <Row>
-                <div class="type-title">阳性</div>
-              </Row>
-              <Row v-for="item in attributePositiveList" :key="item.key" style="margin: 4px 0">
-                <Tag
-                  class="attrs"
-                  closable
-                  @close="handleDeleteAttr(item.key)"
-                  @click="handleSelectWard(item)"
-                  :value="item.key"
-                  >{{ item.label }}</Tag
-                >
-              </Row>
-            </Card>
-          </Col>
-          <Col :span="1" />
-          <Col :span="17">
-            <Card title="病区信息" style="height: 680px">
-              <template #extra
-                ><Button shape="circle" v-auth="['bizSys:wardInfo:add']" @click="handleAddInfo"
-                  ><Icon icon="icon-plus|iconfont" :size="14" /></Button
-              ></template>
-              <BasicTable @register="registerTable">
-                <template #bodyCell="{ column, record }">
-                  <template v-if="column.key === 'disable'">
-                    <Tag :color="formatDictColor(disableOptions, record.disable)">
-                      {{ formatDictValue(disableOptions, record.disable) }}
-                    </Tag>
-                  </template>
-                  <template v-if="column.key === 'action'">
-                    <TableAction
-                      :actions="[
-                        {
-                          auth: 'bizSys:wardInfo:edit',
-                          icon: 'icon-xt-details_edit_default|iconfont',
-                          tooltip: '编辑',
-                          onClick: handleEdit.bind(null, record),
-                        },
-                        {
-                          auth: 'bizSys:wardInfo:status',
-                          icon: 'icon-xt-details_delete_default|iconfont',
-                          tooltip: '停用',
-                          ifShow: record.disable == 0,
-                          popConfirm: {
-                            title: '是否确认停用',
-                            placement: 'left',
-                            confirm: handleChangeState.bind(null, record),
-                          },
-                        },
-                        {
-                          auth: 'bizSys:wardInfo:status',
-                          icon: 'icon-plus|iconfont',
-                          tooltip: '启用',
-                          label: '',
-                          ifShow: record.disable == 1,
-                          popConfirm: {
-                            title: '是否确认启用',
-                            placement: 'left',
-                            confirm: handleChangeState.bind(null, record),
-                          },
-                        },
-                      ]"
-                    />
-                  </template>
-                </template>
-              </BasicTable>
-            </Card>
-          </Col>
-        </Row>
-      </p>
-      <p :key="1" v-else>
-        <Row>
-          <Col :span="6">
-            <Card title="工作日配置" style="height: 680px">
-              <template #extra
-                ><Button shape="circle" v-auth="['bizSys:workday:edit']" @click="handleEditWorkDay">
-                  <Icon icon="icon-xt-details_edit_default|iconfont" :size="14" /></Button
-              ></template>
-              <Row v-for="(item, index) in workDays" :key="index">
-                <div class="wrak-day">{{ item.label }}</div>
-              </Row>
-            </Card>
-          </Col>
-          <Col :span="1" />
-          <Col :span="17">
-            <Card title="班次配置" style="height: 680px">
-              <template #extra
-                ><Button v-auth="['bizSys:wardInfo:add']" @click="handleAddSailing" shape="circle"
-                  ><Icon icon="icon-xt-details_edit_default|iconfont" :size="14" /></Button
-              ></template>
-              <BasicTable @register="registerSailingsTable">
-                <template #bodyCell="{ column, record }">
-                  <template v-if="column.key === 'disable'">
-                    <Tag :color="formatDictColor(disableOptions, record.disable)">
-                      {{ formatDictValue(disableOptions, record.disable) }}
+  <div class="m-4">
+    <div>
+      <XTTitle title="病区班次" />
+      <PageWrapper>
+        <Card
+          :bordered="false"
+          :active-tab-key="activeKey"
+          :tab-list="tabList"
+          style="height: 800px"
+          @tabChange="
+            key => {
+              activeKey = key;
+            }
+          "
+        >
+          <p :key="0" v-if="activeKey == 0">
+            <Row>
+              <Col :span="6">
+                <Card title="病区属性" style="height: 690px">
+                  <template #extra
+                    ><Button
+                      shape="circle"
+                      v-auth="['bizSys:wardProperties:add']"
+                      @click="handleAddAttr"
+                      ><Icon icon="icon-plus|iconfont" :size="14" /></Button
+                  ></template>
+                  <Row>
+                    <div class="type-title">阴性</div>
+                  </Row>
+                  <Row v-for="item in attributeFeminineList" :key="item.key" style="margin: 4px 0">
+                    <Tag
+                      class="attrs"
+                      closable
+                      @close="handleDeleteAttr(item.key)"
+                      @click="handleSelectWard(item)"
+                      :value="item.key"
+                      >{{ item.label }}
                     </Tag>
-                  </template>
-                  <template v-if="column.key === 'action'">
-                    <TableAction
-                      :actions="[
-                        {
-                          auth: 'bizSys:wardInfo:edit',
-                          icon: 'icon-xt-details_edit_default|iconfont',
-                          tooltip: '编辑',
-                          label: '',
-                          onClick: handleEdit.bind(null, record),
-                        },
-                        {
-                          auth: 'bizSys:wardInfo:status',
-                          icon: 'icon-minus-square|iconfont',
-                          tooltip: '停用',
-                          label: '',
-                          color: 'error',
-                          ifShow: record.disable == 0,
-                          popConfirm: {
-                            title: '是否确认停用',
-                            placement: 'left',
-                            confirm: handleChangeState.bind(null, record),
-                          },
-                        },
-                        {
-                          auth: 'bizSys:wardInfo:status',
-                          icon: 'icon-plus|iconfont',
-                          tooltip: '启用',
-                          label: '',
-                          ifShow: record.disable == 1,
-                          color: 'error',
-                          popConfirm: {
-                            title: '是否确认启用',
-                            placement: 'left',
-                            confirm: handleChangeState.bind(null, record),
-                          },
-                        },
-                      ]"
-                    />
-                  </template>
-                </template>
-              </BasicTable>
-            </Card>
-          </Col>
-        </Row>
-      </p>
-    </Card>
-  </PageWrapper>
-  <WardTypeFormModal @register="registerWardTypeModal" @success="handleWardTypeSuccess" />
-  <WardInfoFormModal @register="registerWardInfoModal" @success="handleWardInfoSuccess" />
-  <WorkDayFormModal @register="registerWorkDayModal" @success="handleWorkDaySuccess" />
-  <SailingEdit @register="registerSailingEditModal" @success="handleSailingSuccess" />
+                  </Row>
+                  <Row>
+                    <div class="type-title">阳性</div>
+                  </Row>
+                  <Row v-for="item in attributePositiveList" :key="item.key" style="margin: 4px 0">
+                    <Tag
+                      class="attrs"
+                      closable
+                      @close="handleDeleteAttr(item.key)"
+                      @click="handleSelectWard(item)"
+                      :value="item.key"
+                      >{{ item.label }}</Tag
+                    >
+                  </Row>
+                </Card>
+              </Col>
+              <Col :span="1" />
+              <Col :span="17">
+                <Card title="病区信息" style="height: 690px">
+                  <template #extra
+                    ><Button shape="circle" v-auth="['bizSys:wardInfo:add']" @click="handleAddInfo"
+                      ><Icon icon="icon-plus|iconfont" :size="14" /></Button
+                  ></template>
+                  <BasicTable @register="registerTable">
+                    <template #bodyCell="{ column, record }">
+                      <template v-if="column.key === 'disable'">
+                        <Tag :color="formatDictColor(disableOptions, record.disable)">
+                          {{ formatDictValue(disableOptions, record.disable) }}
+                        </Tag>
+                      </template>
+                      <template v-if="column.key === 'action'">
+                        <TableAction
+                          :actions="[
+                            {
+                              auth: 'bizSys:wardInfo:edit',
+                              icon: 'icon-xt-details_edit_default|iconfont',
+                              tooltip: '编辑',
+                              onClick: handleEdit.bind(null, record),
+                            },
+                            {
+                              auth: 'bizSys:wardInfo:status',
+                              icon: 'icon-xt-details_delete_default|iconfont',
+                              tooltip: '停用',
+                              ifShow: record.disable == 0,
+                              popConfirm: {
+                                title: '是否确认停用',
+                                placement: 'left',
+                                confirm: handleChangeState.bind(null, record),
+                              },
+                            },
+                            {
+                              auth: 'bizSys:wardInfo:status',
+                              icon: 'icon-plus|iconfont',
+                              tooltip: '启用',
+                              label: '',
+                              ifShow: record.disable == 1,
+                              popConfirm: {
+                                title: '是否确认启用',
+                                placement: 'left',
+                                confirm: handleChangeState.bind(null, record),
+                              },
+                            },
+                          ]"
+                        />
+                      </template>
+                    </template>
+                  </BasicTable>
+                </Card>
+              </Col>
+            </Row>
+          </p>
+          <p :key="1" v-else>
+            <Row>
+              <Col :span="6">
+                <Card title="工作日配置" style="height: 690px">
+                  <template #extra
+                    ><Button
+                      shape="circle"
+                      v-auth="['bizSys:workday:edit']"
+                      @click="handleEditWorkDay"
+                    >
+                      <Icon icon="icon-xt-details_edit_default|iconfont" :size="14" /></Button
+                  ></template>
+                  <Row v-for="(item, index) in workDays" :key="index">
+                    <div class="wrak-day">{{ item.label }}</div>
+                  </Row>
+                </Card>
+              </Col>
+              <Col :span="1" />
+              <Col :span="17">
+                <Card title="班次配置" style="height: 690px">
+                  <template #extra
+                    ><Button
+                      v-auth="['bizSys:wardInfo:add']"
+                      @click="handleAddSailing"
+                      shape="circle"
+                      ><Icon icon="icon-xt-details_edit_default|iconfont" :size="14" /></Button
+                  ></template>
+                  <BasicTable @register="registerSailingsTable">
+                    <template #bodyCell="{ column, record }">
+                      <template v-if="column.key === 'disable'">
+                        <Tag :color="formatDictColor(disableOptions, record.disable)">
+                          {{ formatDictValue(disableOptions, record.disable) }}
+                        </Tag>
+                      </template>
+                      <template v-if="column.key === 'action'">
+                        <TableAction
+                          :actions="[
+                            {
+                              auth: 'bizSys:wardInfo:edit',
+                              icon: 'icon-xt-details_edit_default|iconfont',
+                              tooltip: '编辑',
+                              label: '',
+                              onClick: handleEdit.bind(null, record),
+                            },
+                            {
+                              auth: 'bizSys:wardInfo:status',
+                              icon: 'icon-minus-square|iconfont',
+                              tooltip: '停用',
+                              label: '',
+                              color: 'error',
+                              ifShow: record.disable == 0,
+                              popConfirm: {
+                                title: '是否确认停用',
+                                placement: 'left',
+                                confirm: handleChangeState.bind(null, record),
+                              },
+                            },
+                            {
+                              auth: 'bizSys:wardInfo:status',
+                              icon: 'icon-plus|iconfont',
+                              tooltip: '启用',
+                              label: '',
+                              ifShow: record.disable == 1,
+                              color: 'error',
+                              popConfirm: {
+                                title: '是否确认启用',
+                                placement: 'left',
+                                confirm: handleChangeState.bind(null, record),
+                              },
+                            },
+                          ]"
+                        />
+                      </template>
+                    </template>
+                  </BasicTable>
+                </Card>
+              </Col>
+            </Row>
+          </p>
+        </Card>
+      </PageWrapper>
+    </div>
+    <WardTypeFormModal @register="registerWardTypeModal" @success="handleWardTypeSuccess" />
+    <WardInfoFormModal @register="registerWardInfoModal" @success="handleWardInfoSuccess" />
+    <WorkDayFormModal @register="registerWorkDayModal" @success="handleWorkDaySuccess" />
+    <SailingEdit @register="registerSailingEditModal" @success="handleSailingSuccess" />
+  </div>
 </template>
 
 <script lang="ts" setup>
   import { onBeforeMount, ref } from 'vue';
+  import { XTTitle } from '/@/components/XTTitle/index';
   import { PageWrapper } from '/@/components/Page';
   import { Button, Card, Row, Col, Tag } from 'ant-design-vue';
   import Icon from '/@/components/Icon/src/Icon.vue';
@@ -223,6 +236,7 @@
     rowKey: 'id',
     columns: wardInfoColumns,
     showIndexColumn: false,
+    striped: false,
     formConfig: {
       labelWidth: 120,
       autoSubmitOnEnter: true,
@@ -235,7 +249,6 @@
       },
     },
     useSearchForm: false,
-    bordered: true,
     actionColumn: {
       width: 320,
       title: '操作',
@@ -248,13 +261,13 @@
     api: getSailings,
     columns: sailingsColumns,
     showIndexColumn: false,
+    striped: false,
     formConfig: {
       labelWidth: 120,
       autoSubmitOnEnter: true,
       baseColProps: { xs: 24, sm: 12, md: 12, lg: 8 },
     },
     useSearchForm: false,
-    bordered: true,
   });
 
   const [registerWardTypeModal, { openModal: openWardTypeModal }] = useModal();
@@ -486,4 +499,33 @@
   ::v-deep(.ant-btn-link) {
     color: rgb(61 65 85 / 100%);
   }
+
+  ::v-deep(.fan-page-wrapper-content) {
+    margin: 16px 0;
+  }
+
+  ::v-deep(.ant-table-body) {
+    height: 500px !important;
+  }
+
+  ::v-deep(.ant-table-thead > tr > th) {
+    text-align: left !important;
+    color: #818694;
+  }
+
+  ::v-deep(.ant-table-tbody > tr > td) {
+    text-align: left !important;
+    border-top: 0 !important;
+    border-right: 0 !important;
+    border-bottom: 1px solid #f0f0f0 !important;
+    border-left: 0 !important;
+  }
+
+  ::v-deep(.fan-basic-table .ant-table-wrapper table) {
+    border: 0 !important;
+  }
+
+  ::v-deep(.fan-basic-table-action.center) {
+    justify-content: left !important;
+  }
 </style>

+ 12 - 12
src/views/infra/storage/oss/index.vue

@@ -17,11 +17,11 @@
         <template v-if="column.key === 'action'">
           <TableAction
             :actions="[
-              {
-                tooltip: '文件上传',
-                label: '文件上传',
-                onClick: handleUpdateModel.bind(null, record),
-              },
+              // {
+              //   tooltip: '文件上传',
+              //   label: '文件上传',
+              //   onClick: handleUpdateModel.bind(null, record),
+              // },
               {
                 auth: 'storage:config:query',
                 icon: 'icon-eye|iconfont',
@@ -87,7 +87,7 @@
     </BasicTable>
     <FormDrawer @register="registerDrawer" @success="handleSuccess" />
     <ViewDrawer @register="registerDrawerView" @success="handleSuccess" />
-    <UploadModal @register="registerUpload" />
+    <!-- <UploadModal @register="registerUpload" /> -->
   </div>
 </template>
 <script lang="ts" setup>
@@ -96,7 +96,7 @@
   import { Button } from '/@/components/Button';
 
   import { BasicTable, useTable, TableAction } from '/@/components/Table';
-  import UploadModal from './uploadModel.vue';
+  // import UploadModal from './uploadModel.vue';
   import { useMessage } from '/@/hooks/web/useMessage';
   import FormDrawer from './formDrawer.vue';
   import ViewDrawer from './viewDrawer.vue';
@@ -109,7 +109,7 @@
   } from '/@/api/infra/infraStorageConfigApi';
   import { useDrawer } from '/@/components/Drawer';
   import { commonDict } from '/@/utils';
-  import { useModal } from '/@/components/Modal';
+  // import { useModal } from '/@/components/Modal';
 
   onBeforeMount(async () => {});
 
@@ -117,7 +117,7 @@
   // const [registerModal, { openModal }] = useModal();
   const [registerDrawer, { openDrawer }] = useDrawer();
   const [registerDrawerView, { openDrawer: openDrawerView }] = useDrawer();
-  const [registerUpload, { openModal: openUpload }] = useModal();
+  // const [registerUpload, { openModal: openUpload }] = useModal();
   const tableSort = ref([
     {
       field: 'master',
@@ -216,9 +216,9 @@
   }
 
   // 打开上传测试弹窗
-  function handleUpdateModel(record: Recordable) {
-    openUpload(true, { record });
-  }
+  // function handleUpdateModel(record: Recordable) {
+  //   openUpload(true, { record });
+  // }
   // 表格点击字段排序
   function handleSortFn(sortInfo) {
     if (sortInfo?.order && sortInfo?.columnKey) {

+ 17 - 11
src/views/sys/sysTenant/page/index.vue

@@ -112,7 +112,7 @@
     },
   ]) as any;
 
-  const [registerTable, { reload, getSelectRowKeys }] = useTable({
+  const [registerTable, { reload, getSelectRowKeys, clearSelectedRowKeys }] = useTable({
     title: '',
     api: sysTenantQueryPage,
     rowKey: 'id',
@@ -171,16 +171,22 @@
       createMessage.success('删除成功!');
       await reload();
     } else {
-      createConfirm({
-        content: '你确定要删除?',
-        iconType: 'warning',
-        onOk: async () => {
-          const keys = getSelectRowKeys();
-          await sysTenantRemove(keys);
-          createMessage.success('删除成功!');
-          await reload();
-        },
-      });
+      const keys = getSelectRowKeys();
+      if (keys.length > 0) {
+        createConfirm({
+          content: '你确定要删除?',
+          iconType: 'warning',
+          onOk: async () => {
+            const keys = getSelectRowKeys();
+            await sysTenantRemove(keys);
+            createMessage.success('删除成功!');
+            await reload();
+            clearSelectedRowKeys();
+          },
+        });
+      } else {
+        createMessage.warning('请选择要删除的数据');
+      }
     }
   }
   // 表格点击字段排序