xiongxing 2 месяцев назад
Родитель
Сommit
52ad1ee864

+ 0 - 16
src/views/elderly/nursing/column.ts

@@ -128,24 +128,8 @@ export const NurseLogColumns = reactive([
     label: '床位',
     field: 'bedName'
   },
-  {
-    label: '护理日期',
-    field: 'nurseDate'
-  },
-  {
-    label: '护理员',
-    field: 'creator'
-  },
   {
     label: '护理等级',
     field: 'nurseLevelName'
   },
-  {
-    label: '备注',
-    field: 'remark'
-  },
-  {
-    label: '创建时间',
-    field: 'createTime'
-  },
 ])

+ 75 - 39
src/views/elderly/nursing/nursing-log-list/Detail.vue

@@ -2,25 +2,42 @@
   <Dialog v-model="dialogVisible" width="90%" @close="handleClosed" title="护理日志详情" class="form-tag-dialog" scroll>
     <el-form class="nursing-log-detail" inline>
     <!-- <template #content> -->
-      <div class="header-flex">
-        <div class="left">
-          <el-tag type="primary" effect="light" round>
-            {{ header.elderName }} / {{ header.nurseLevelName }} / {{ header.bedName }}
-          </el-tag>
-        </div>
+      <div class="info-title">长者信息</div>
+      <div class="info-wrap">
+        <el-row :gutter="20">
+          <el-col :span="8" :xs="24" class="header-item">长者名称:{{ header.elderName || '-' }}</el-col>
+          <el-col :span="8" :xs="24" class="header-item">护理等级:{{ header.nurseLevelName || '-' }}</el-col>
+          <el-col :span="8" :xs="24" class="header-item">床位号:{{ header.bedName || '-' }}</el-col>
+        </el-row>
       </div>
       <el-table :data="records" height="60vh" :header-cell-style="(data) => tableHeaderColor(data) || {}">
         <el-table-column label="护理日期" prop="nurseDate" />
-        <el-table-column label="护理员" prop="creator" />
-        <el-table-column label="护理项目" prop="nursingPlanItemId" />
+        <el-table-column label="护理员" prop="nurse" />
+        <el-table-column label="护理项目" prop="nursingItemName" />
         <el-table-column label="图片">
           <template #default="scope">
-            <el-image v-if="scope.row.image" :src="scope.row.image" fit="cover" />
+            <div v-if="scope.row.image" class="image-list">
+              <el-image
+                v-for="(img, index) in scope.row.image.split(',').filter((item: string) => item)"
+                :key="index"
+                :src="img"
+                :preview-src-list="scope.row.image.split(',').filter((item: string) => item)"
+                :initial-index="Number(index)"
+                preview-teleported
+                fit="cover"
+                class="image-item"
+              />
+            </div>
             <span v-else>-</span>
           </template>
         </el-table-column>
         <el-table-column label="备注" prop="remark" />
         <el-table-column label="创建时间" prop="createTime" />
+        <el-table-column label="操作" width="80" v-hasPermi="['nursing-log-list:delete']">
+          <template #default="scope">
+            <el-button link type="danger" @click="handleDelete(scope.row.id)">删除</el-button>
+          </template>
+        </el-table-column>
       </el-table>
     </el-form>
     <template #footer>
@@ -29,10 +46,12 @@
   </Dialog>
 </template>
 <script setup lang="ts">
-import { getNursingLogDetail } from '@/api/elderly/nursing'
+import { getNursingLogDetail, deleteNursingLog } from '@/api/elderly/nursing'
 import { tableHeaderColor } from '@/utils/table'
+import { ElMessageBox } from 'element-plus'
 defineOptions({ name: 'NurseLogDetail' })
 const dialogVisible = ref(false)
+const message = useMessage()
 
 const state = reactive({
   header: {
@@ -40,59 +59,62 @@ const state = reactive({
     bedName: '',
     nurseLevelName: ''
   },
-  records: []
+  records: [],
 })
 const { header, records } = toRefs(state)
 const resetHeader = reactive({ ...header.value })
+const currentElderId = ref<number | null>(null)
+const dateRange = ref<string[]>([] as string[])
 
 /** 打开弹窗 */
-const open = async (row: { elderId: number }) => {
+const open = async (row: { elderId: number }, nurseDate: string[]) => {
   dialogVisible.value = true
-  await getDetail(row.elderId)
+  currentElderId.value = row.elderId
+  dateRange.value = nurseDate as string[]
+  await getDetail(row.elderId, dateRange.value)
 }
 
-const getDetail = async (elderId: number) => {
-  const res = await getNursingLogDetail({ elderId })
+const getDetail = async (elderId: number, nurseDate: string[]) => {
+  const res = await getNursingLogDetail({ elderId, start: nurseDate[0], end: nurseDate[1] })
   header.value = res.header || { ...resetHeader }
   records.value = res.records || []
 }
 
 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 
+const handleDelete = (id: number) => {
+  ElMessageBox.confirm('确定删除该护理记录?', '提示', {
+    confirmButtonText: '确 认',
+    cancelButtonText: '取 消'
+  })
+    .then(async () => {
+      const res = await deleteNursingLog(id)
+      if (res) {
+        message.success('删除成功')
+        if (currentElderId.value) {
+          await getDetail(currentElderId.value, dateRange.value)
+        }
+      }
+    })
+    .catch(() => {})
+}
+
 const handleClosed = () => {
   header.value = { ...resetHeader }
   records.value = []
   dialogVisible.value = false
+  currentElderId.value = null
 }
 
 </script>
 <style lang="scss" scoped>
-.header-flex{
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  padding: 10px;
-  .right{
-    display: flex;
-    .group{
-      display: flex;
-      .column{
-        display: flex;
-        flex-direction: column;
-        align-items: center;
-        cursor: pointer;
-        img{
-          width: 16px;
-          height: 16px;
-        }
-      }
-    }
-  }
-  .blue{
-    color: var(--el-color-primary);
-  }
+.info-title{
+  font-weight: 600;
+  color: #303133;
+  margin: 10px 0 6px;
 }
 .info-wrap{
+  margin-bottom: 10px;
   .time-round{
     padding: 10px 0;
     margin: 8px;
@@ -102,6 +124,20 @@ const handleClosed = () => {
     text-align: center;
   }
 }
+.header-item{
+  color: #606266;
+  padding-bottom: 10px;
+}
+.image-list{
+  display: flex;
+  flex-wrap: wrap;
+  gap: 6px;
+}
+.image-item{
+  width: 48px;
+  height: 48px;
+  border-radius: 4px;
+}
 .el-card{
   position: relative;
   .header{

+ 16 - 24
src/views/elderly/nursing/nursing-log-list/index.vue

@@ -32,15 +32,16 @@
     </el-form>
   </ContentWrap>
   <ContentWrap>
-    <TabBarBtn />
     <Table2
       v-loading="loading"
       :data="list"
       :columns="NurseLogColumns"
       :queryParams="queryParams"
-      @detail="openDetail"
-      @del="handleDelete"
-    />
+    >
+      <template #pre="{ scope }">
+        <el-button v-hasPermi="['nursing-log-list:detail']" link type="primary" @click="openDetail(scope)">查看</el-button>
+      </template>
+    </Table2>
     <!-- 分页 -->
     <Pagination
       :total="total"
@@ -53,21 +54,26 @@
   </ContentWrap>
 </template>
 <script setup lang="ts">
-import { getNursingLogPage, deleteNursingLog } from '@/api/elderly/nursing'
+import { getNursingLogPage } from '@/api/elderly/nursing'
 import Detail from './Detail.vue';
 import { NurseLogColumns } from '../column'
-import { ElMessageBox } from 'element-plus'
 import { useUserStore } from '@/store/modules/user'
 const userStore = useUserStore()
 
 defineOptions({ name: 'NursingLog' })
-const message = useMessage()
+const getDefaultMonthRange = () => {
+  const now = new Date()
+  const start = new Date(now.getFullYear(), now.getMonth(), 1)
+  const end = new Date(now.getFullYear(), now.getMonth() + 1, 0)
+  const format = (date: Date) => date.toISOString().slice(0, 10)
+  return [format(start), format(end)]
+}
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
   elderName: '',
   tenantIds: userStore.orgTenantId,
-  nurseDate: []
+  nurseDate: getDefaultMonthRange()
 })
 const loading = ref(true) // 列表的加载中
 const total = ref(0) // 列表的总页数
@@ -83,6 +89,7 @@ const handleQuery = () => {
 /** 重置按钮操作 */
 const resetQuery = () => {
   queryFormRef.value.resetFields()
+  queryParams.nurseDate = getDefaultMonthRange()
   handleQuery()
 }
 
@@ -100,22 +107,7 @@ const getList = async () => {
 
 const detailRef = ref()
 const openDetail = (row:{}) => {
-  detailRef.value.open(row)
-}
-
-const handleDelete = (id: number) => {
-  ElMessageBox.confirm('确定删除该护理日志?', '提示', {
-    confirmButtonText: '确 认',
-    cancelButtonText: '取 消'
-  })
-    .then(async () => {
-      const res = await deleteNursingLog(id)
-      if (res) {
-        message.success('删除成功')
-        await getList()
-      }
-    })
-    .catch(() => {})
+  detailRef.value.open(row,queryParams.nurseDate)
 }
 
 onMounted(()=>{

+ 15 - 7
src/views/warehouses/stockSearch/index.vue

@@ -9,9 +9,9 @@
             <el-option v-for="w in warehouseOptions" :key="w.id" :label="w.storeName" :value="w.id" />
           </el-select>
         </el-form-item>
-        <el-form-item label="月份范围" prop="month">
+        <el-form-item label="月份范围" prop="months">
           <el-date-picker
-            v-model="queryParams.month"
+            v-model="queryParams.months"
             type="monthrange"
             value-format="YYYY-MM"
             range-separator="至"
@@ -103,13 +103,21 @@ const tableHeaderColor = () => ({
   fontWeight: '600',
 })
 
+const getDefaultMonthRange = () => {
+  const now = new Date()
+  const start = new Date(now.getFullYear(), now.getMonth(), 1)
+  const end = new Date(now.getFullYear(), now.getMonth() + 1, 0)
+  const format = (date) => date.toISOString().slice(0, 7)
+  return [format(start), format(end)]
+}
+
 // 搜索条件
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
   tenantIds: userStore.orgTenantId,
   storeId: '',
-  month: [],
+  months: getDefaultMonthRange(),
   keyword: '',
 })
 
@@ -138,7 +146,7 @@ const getTableData = async () => {
     pageSize: queryParams.pageSize,
     tenantIds: queryParams.tenantIds,
     storeId: queryParams.storeId,
-    month: queryParams.month,
+    months: queryParams.months,
     keyword: queryParams.keyword,
   }
   try {
@@ -165,7 +173,7 @@ const handleSearch = () => {
 
 const handleReset = () => {
   queryParams.storeId = ''
-  queryParams.month = []
+  queryParams.months = getDefaultMonthRange()
   queryParams.keyword = ''
   queryParams.pageNo = 1
   queryParams.tenantIds = userStore.orgTenantId
@@ -184,7 +192,7 @@ const handleCurrentChange = (page) => {
 }
 
 const handleView = async(row) => {
-  const [startMonth] = queryParams.month || []
+  const [startMonth] = queryParams.months || []
   if (!startMonth) {
     ElMessage.error('请选择月份')
     return
@@ -192,7 +200,7 @@ const handleView = async(row) => {
   try {
     const res = await materialStockFlowDetail({
       inboundItemId: row.inboundItemId,
-      month: startMonth,
+      months: startMonth,
     })
     currentStockDetail.value = res
     stockDialogVisible.value = true