Browse Source

增加打卡情况查看

qinyan 2 tháng trước cách đây
mục cha
commit
d88fce5fc1

+ 2 - 1
ruoyi-system/src/main/resources/mapper/care/CareNurseRecordsMapper.xml

@@ -16,10 +16,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="remark"    column="remark"    />
         <result property="calDays" column="cal_days"/>
         <result property="clockNum" column="clock_Num"/>
+        <result property="calDayReason" column="cal_day_reason"/>
     </resultMap>
 
     <sql id="selectCareNurseRecordsVo">
-        select nursing_record_id, apply_id, nursing_time,cal_days, clock_Num,del_flag, create_by, create_time, update_by, update_time, remark from care_nurse_records
+        select nursing_record_id, apply_id, nursing_time,cal_days, clock_Num,del_flag, create_by, create_time, update_by, update_time, remark,cal_day_reason from care_nurse_records
     </sql>
 
     <select id="selectCareNurseRecordsList" parameterType="CareNurseRecords" resultMap="CareNurseRecordsResult">

+ 141 - 136
ruoyi-vue/src/views/care/clocks/index_task.vue

@@ -73,142 +73,144 @@
         v-model:limit="queryParams.pageSize"
         @pagination="getList"
     />
-  </div>
 
-  <el-dialog :title="title" v-model="open" width="800px" append-to-body>
-    <el-form ref="applicationsRef" :model="form" label-width="80px">
-      <el-row :gutter="20">
-        <el-col :span="12">
-          <el-form-item label="申请人" prop="personName">
-            <el-input v-model="form.personName"  disabled />
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="是否残疾" prop="disability">
-            <el-select v-model="form.disability" placeholder="请选择" disabled>
-              <el-option
-                  v-for="dict in sys_yes_no"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="24">
-          <el-form-item label="护理需求" prop="careNeeds">
-            <el-input v-model="form.careNeeds" type="textarea" placeholder="请输入详细护理需求" disabled />
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="12">
-          <el-form-item label="所在医院" prop="hospital">
-            <el-input v-model="form.hospital" type="textarea" placeholder="请输入详细护理需求" disabled />
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="详细地址" prop="address">
-            <el-input v-model="form.address" placeholder="请输入科室具体楼层房间床号" disabled/>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20">
-
-        <el-col :span="12">
-          <el-form-item label="首选性别" prop="nurseGender">
-            <el-select v-model="form.nurseGender" placeholder="请选择首选护理人员性别" disabled>
-              <el-option
-                  v-for="dict in sys_user_sex"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.value"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="预计天数" prop="careDays">
-            <el-input v-model="form.careDays" placeholder="请输入预计天数" disabled/>
-          </el-form-item>
-        </el-col>
-
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="12">
-          <el-form-item label="申请日期" prop="applyDate">
-            <el-input v-model="form.applyDate" placeholder="请输入申请日期" disabled/>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="出院日期" prop="leaveTime">
-            <el-date-picker clearable
-                            v-model="form.leaveTime"
-                            type="datetime"
-                            value-format="YYYY-MM-DD HH:mm:ss"
-                            placeholder="请选择出院日期" disabled>
-            </el-date-picker>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="24">
-          <el-form-item label="备注" prop="remark">
-            <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" disabled/>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="24">
-          <el-form-item label="护理备注" prop="assignRemark">
-            <el-input v-model="form.assignRemark" type="textarea" placeholder="请输入内容" disabled/>
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
-  </el-dialog>
-
-  <el-dialog v-model="openClock" width="80%">
-    <div>
-      <component :is="currentComponent" v-bind="componentProps"></component>
-    </div>
-
-  </el-dialog>
-
-  <el-dialog :title="title" v-model="dieOpen" width="500px" append-to-body>
-    <el-form ref="dieRef" :model="dieForm" :rules="dieRules" label-width="80px">
-      <el-form-item label="死亡时间" prop="dieTime">
-        <el-date-picker clearable
-                        v-model="dieForm.dieTime"
-                        type="datetime"
-                        value-format="YYYY-MM-DD HH:mm:ss"
-                        placeholder="请选择死亡时间"
-        >
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="死亡证明" prop="imgPaths">
-        <el-upload
-            v-model:file-list="fileLists"
-            :action="uploadImgUrl"
-            :headers="uploadHeaders"
-            list-type="picture-card"
-            :on-remove="handleRemove"
-            :on-success="handleSuccess"
-            :data="uploadImgData"
-        >
-          <el-icon><Plus /></el-icon>
-        </el-upload>
-      </el-form-item>
-    </el-form>
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
+    <el-dialog :title="title" v-model="open" width="800px" append-to-body>
+      <el-form ref="applicationsRef" :model="form" label-width="80px">
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="申请人" prop="personName">
+              <el-input v-model="form.personName"  disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="是否残疾" prop="disability">
+              <el-select v-model="form.disability" placeholder="请选择" disabled>
+                <el-option
+                    v-for="dict in sys_yes_no"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="护理需求" prop="careNeeds">
+              <el-input v-model="form.careNeeds" type="textarea" placeholder="请输入详细护理需求" disabled />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="所在医院" prop="hospital">
+              <el-input v-model="form.hospital" type="textarea" placeholder="请输入详细护理需求" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="详细地址" prop="address">
+              <el-input v-model="form.address" placeholder="请输入科室具体楼层房间床号" disabled/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+
+          <el-col :span="12">
+            <el-form-item label="首选性别" prop="nurseGender">
+              <el-select v-model="form.nurseGender" placeholder="请选择首选护理人员性别" disabled>
+                <el-option
+                    v-for="dict in sys_user_sex"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="预计天数" prop="careDays">
+              <el-input v-model="form.careDays" placeholder="请输入预计天数" disabled/>
+            </el-form-item>
+          </el-col>
+
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="申请日期" prop="applyDate">
+              <el-input v-model="form.applyDate" placeholder="请输入申请日期" disabled/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="出院日期" prop="leaveTime">
+              <el-date-picker clearable
+                              v-model="form.leaveTime"
+                              type="datetime"
+                              value-format="YYYY-MM-DD HH:mm:ss"
+                              placeholder="请选择出院日期" disabled>
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" disabled/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="护理备注" prop="assignRemark">
+              <el-input v-model="form.assignRemark" type="textarea" placeholder="请输入内容" disabled/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </el-dialog>
+
+    <el-dialog v-model="openClock" width="80%">
+      <div>
+        <component :is="currentComponent" v-bind="componentProps" :key="componentKey"></component>
       </div>
-    </template>
-  </el-dialog>
+
+    </el-dialog>
+
+    <el-dialog :title="title" v-model="dieOpen" width="500px" append-to-body>
+      <el-form ref="dieRef" :model="dieForm" :rules="dieRules" label-width="80px">
+        <el-form-item label="死亡时间" prop="dieTime">
+          <el-date-picker clearable
+                          v-model="dieForm.dieTime"
+                          type="datetime"
+                          value-format="YYYY-MM-DD HH:mm:ss"
+                          placeholder="请选择死亡时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="死亡证明" prop="imgPaths">
+          <el-upload
+              v-model:file-list="fileLists"
+              :action="uploadImgUrl"
+              :headers="uploadHeaders"
+              list-type="picture-card"
+              :on-remove="handleRemove"
+              :on-success="handleSuccess"
+              :data="uploadImgData"
+          >
+            <el-icon><Plus /></el-icon>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+
+
 </template>
 
 <script setup name="ClocksTask">
@@ -230,6 +232,8 @@ const applicationsList = ref([]);
 const hispitalList=ref([]);
 const currentComponent = ref(null); // 使用 ref 来管理组件
 const componentProps = ref({});     // 使用 ref 来管理传递给组件的属性
+const componentKey = ref(0);        // 使用 ref 来管理组件的 key
+
 const loading = ref(true);
 const showSearch = ref(true);
 const ids = ref([]);
@@ -329,8 +333,6 @@ function look(row) {
 
 function clock(row){
   const _applyId = row.applyId || ids.value
-
-
   currentComponent.value = clockIndex;
 
   // 传递apply
@@ -339,6 +341,9 @@ function clock(row){
     leaveTime:row.leaveTime
   };
 
+  // 更改组件的 key 来强制重新渲染
+  componentKey.value += 1;
+
   openClock.value=true
 }
 

+ 282 - 0
ruoyi-vue/src/views/care/scores/clock.vue

@@ -0,0 +1,282 @@
+<template>
+  <div>
+    <div class="app-container1">
+      <el-table v-loading="loading" :data="recordsList" @selection-change="handleSelectionChange">
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="护理时间" align="center" prop="nursingTime" width="180">
+        </el-table-column>
+        <el-table-column label="实际计算天数" align="center" prop="calDays" />
+        <el-table-column label="计算原因" align="center" prop="calDayReason" show-overflow-tooltip/>
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+          <template #default="scope">
+            <el-button link type="primary" icon="Edit" @click="check(scope.row)">查看</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <pagination
+          v-show="recordTotal>0"
+          :total="recordTotal"
+          v-model:page="queryRecordParams.pageNum"
+          v-model:limit="queryRecordParams.pageSize"
+          @pagination="getList"
+      />
+      <!--      显示某一天的打卡详细-->
+      <el-dialog title="查看当天打卡详细" v-model="openDay" width="800px" append-to-body>
+        <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="护理时间" prop="nursingTime">
+            <el-date-picker clearable
+                            v-model="queryParams.nursingTime"
+                            type="date"
+                            value-format="YYYY-MM-DD"
+                            placeholder="请选择护理时间">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+            <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
+
+        <el-table v-loading="loading" :data="clocksList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="护理时间" align="center" prop="nursingTime" width="180">
+          </el-table-column>
+
+          <el-table-column label="图片数量" align="center" prop="imgNum" />
+          <el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <template #default="scope">
+              <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">查看</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <pagination
+            v-show="total>0"
+            :total="total"
+            v-model:page="queryParams.pageNum"
+            v-model:limit="queryParams.pageSize"
+            @pagination="getList"
+        />
+      </el-dialog>
+      <!-- 添加或修改护理任务打卡对话框 -->
+      <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+        <el-form ref="clocksRef" :model="form" :rules="rules" label-width="80px">
+          <el-form-item label="护理时间" prop="nursingTime">
+            <el-date-picker clearable
+              v-model="form.nursingTime"
+              type="datetime"
+              value-format="YYYY-MM-DD HH:mm:ss"
+              placeholder="请选择护理时间"
+              :picker-options="pickerOptions" disabled
+            >
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="图片路径" prop="imgPaths">
+            <el-upload
+                v-model:file-list="fileLists"
+                :action="uploadImgUrl"
+                :headers="uploadHeaders"
+                list-type="picture-card"
+                :data="uploadImgData" disabled
+            >
+              <el-icon><Plus /></el-icon>
+            </el-upload>
+          </el-form-item>
+
+          <el-form-item label="备注" prop="remark">
+            <el-input v-model="form.remark" type="textarea" disabled />
+          </el-form-item>
+          <el-form-item>
+            <span style="color: red">注:图片数量不能少于<cite style="font-weight: bolder;font-style: normal">{{leastNum}}</cite>张</span>
+          </el-form-item>
+        </el-form>
+        <template #footer>
+          <div class="dialog-footer">
+            <el-button @click="cancel">取 消</el-button>
+          </div>
+        </template>
+      </el-dialog>
+    </div>
+  </div>
+</template>
+<style>
+.app-container1{
+  height: 700px;
+}
+</style>
+<script setup name="Clocks">
+import { listClocks, getClocks, delClocks, addClocks, updateClocks,removeImg,getleastNum } from "@/api/care/clocks";
+import { ref,computed  } from 'vue'
+import { Plus } from '@element-plus/icons-vue'
+import { getToken } from '@/utils/auth'
+import {listRecords} from "@/api/care/records";
+const { proxy } = getCurrentInstance();
+
+const recordTotal=ref(0);
+const recordsList=ref([]);
+const clocksList = ref([]);
+const open = ref(false);
+const openDay=ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+const leastNum=ref(0);
+const fileLists =ref([]);
+// 定义 props
+const props = defineProps({
+  applyId: {
+    type: Number,
+    required: true
+  }
+});
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    applyId: props.applyId,
+    nursingTime: null,
+    imgPaths: null,
+    imgNum: null,
+  },
+  queryRecordParams: {
+    pageNum: 1,
+    pageSize: 10,
+    applyId: props.applyId
+  },
+  rules: {
+  }
+});
+
+const { queryParams, form, rules,queryRecordParams} = toRefs(data);
+const uploadImgData={applyId:props.applyId,"nursingDate":form.value.nursingTime};
+
+const uploadImgUrl = ref(import.meta.env.VITE_APP_BASE_API + "/care/clocks/upload"); // 上传的图片服务器地址
+const uploadHeaders={Authorization: 'Bearer ' + getToken()};
+const fileSize=1;
+
+/** 查询护理任务记录列表 */
+function getRecordList() {
+  loading.value = true;
+  listRecords(queryRecordParams.value).then(response => {
+    recordsList.value = response.rows;
+    recordTotal.value = response.total;
+    loading.value = false;
+  });
+}
+
+async  function check(row){
+  loading.value = true;
+  queryParams.value.nursingTime=row.nursingTime;
+  await getList();
+
+  openDay.value=true;
+  loading.value = false;
+}
+
+/** 查询护理任务打卡列表 */
+function getList() {
+  loading.value = true;
+  listClocks(queryParams.value).then(response => {
+    clocksList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false;
+  reset();
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    clockId: null,
+    nursingRecordId: props.applyId,
+    nursingTime: null,
+    imgPaths: null,
+    imgNum: null,
+    delFlag: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null,
+    applyId:props.applyId
+  };
+  fileLists.value=[]
+  proxy.resetForm("clocksRef");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.clockId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset();
+  const _clockId = row.clockId || ids.value
+  getClocks(_clockId).then(response => {
+    form.value = response.data;
+    const imgs=response.data.imgPaths.split(",").filter(item => item.trim() !== "");
+    imgs.forEach(function (item){
+      console.info(item)
+      const obj={};
+      obj.name=''
+      obj.url=import.meta.env.VITE_APP_BASE_API + item
+      console.info(obj)
+      fileLists.value.push(obj);
+    })
+
+    open.value = true;
+    title.value = "查看护理任务打卡";
+  });
+}
+
+function handleRemove(file, fileList) {
+  console.log('移除文件:', file, '剩余文件:', fileList);
+  //removeImg(file.response.imgUrl);
+}
+
+function handleSuccess(response, file, fileList)
+{
+  if(response.code==200){
+    fileLists.value=fileList;
+  }
+
+}
+
+//获取图片上传最少数量
+function findleastNum() {
+  getleastNum('need_img_num').then(response => {
+    leastNum.value=response.data.number;
+  });
+}
+findleastNum();
+getRecordList();
+</script>

+ 91 - 58
ruoyi-vue/src/views/care/scores/index.vue

@@ -25,47 +25,47 @@
       </el-form-item>
     </el-form>
 
-<!--    <el-row :gutter="10" class="mb8">-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="primary"-->
-<!--          plain-->
-<!--          icon="Plus"-->
-<!--          @click="handleAdd"-->
-<!--          v-hasPermi="['care:scores:add']"-->
-<!--        >新增</el-button>-->
-<!--      </el-col>-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="success"-->
-<!--          plain-->
-<!--          icon="Edit"-->
-<!--          :disabled="single"-->
-<!--          @click="handleUpdate"-->
-<!--          v-hasPermi="['care:scores:edit']"-->
-<!--        >修改</el-button>-->
-<!--      </el-col>-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="danger"-->
-<!--          plain-->
-<!--          icon="Delete"-->
-<!--          :disabled="multiple"-->
-<!--          @click="handleDelete"-->
-<!--          v-hasPermi="['care:scores:remove']"-->
-<!--        >删除</el-button>-->
-<!--      </el-col>-->
-<!--      <el-col :span="1.5">-->
-<!--        <el-button-->
-<!--          type="warning"-->
-<!--          plain-->
-<!--          icon="Download"-->
-<!--          @click="handleExport"-->
-<!--          v-hasPermi="['care:scores:export']"-->
-<!--        >导出</el-button>-->
-<!--      </el-col>-->
-<!--      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>-->
-<!--    </el-row>-->
+    <!--    <el-row :gutter="10" class="mb8">-->
+    <!--      <el-col :span="1.5">-->
+    <!--        <el-button-->
+    <!--          type="primary"-->
+    <!--          plain-->
+    <!--          icon="Plus"-->
+    <!--          @click="handleAdd"-->
+    <!--          v-hasPermi="['care:scores:add']"-->
+    <!--        >新增</el-button>-->
+    <!--      </el-col>-->
+    <!--      <el-col :span="1.5">-->
+    <!--        <el-button-->
+    <!--          type="success"-->
+    <!--          plain-->
+    <!--          icon="Edit"-->
+    <!--          :disabled="single"-->
+    <!--          @click="handleUpdate"-->
+    <!--          v-hasPermi="['care:scores:edit']"-->
+    <!--        >修改</el-button>-->
+    <!--      </el-col>-->
+    <!--      <el-col :span="1.5">-->
+    <!--        <el-button-->
+    <!--          type="danger"-->
+    <!--          plain-->
+    <!--          icon="Delete"-->
+    <!--          :disabled="multiple"-->
+    <!--          @click="handleDelete"-->
+    <!--          v-hasPermi="['care:scores:remove']"-->
+    <!--        >删除</el-button>-->
+    <!--      </el-col>-->
+    <!--      <el-col :span="1.5">-->
+    <!--        <el-button-->
+    <!--          type="warning"-->
+    <!--          plain-->
+    <!--          icon="Download"-->
+    <!--          @click="handleExport"-->
+    <!--          v-hasPermi="['care:scores:export']"-->
+    <!--        >导出</el-button>-->
+    <!--      </el-col>-->
+    <!--      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>-->
+    <!--    </el-row>-->
 
     <el-table v-loading="loading" :data="scoresList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
@@ -78,18 +78,19 @@
       <el-table-column label="评分" align="center" prop="scoreAssess" show-overflow-tooltip/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="lookClock(scope.row)" v-hasPermi="['care:scores:lookClock']">查看打卡情况</el-button>
           <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['care:scores:edit']">评分</el-button>
           <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['care:scores:remove']">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
-      v-show="total>0"
-      :total="total"
-      v-model:page="queryParams.pageNum"
-      v-model:limit="queryParams.pageSize"
-      @pagination="getList"
+        v-show="total>0"
+        :total="total"
+        v-model:page="queryParams.pageNum"
+        v-model:limit="queryParams.pageSize"
+        @pagination="getList"
     />
 
     <!-- 添加或修改业务评分对话框 -->
@@ -112,17 +113,30 @@
         </div>
       </template>
     </el-dialog>
+
+    <el-dialog title="查看打卡情况" v-model="openClock" width="80%">
+      <div>
+        <component :is="currentComponent" v-bind="componentProps" :key="componentKey"></component>
+      </div>
+
+    </el-dialog>
   </div>
 </template>
 
 <script setup name="Scores">
-import {  getScores, delScores, addScores, updateScores } from "@/api/care/scores";
-import { listAllHospital } from "@/api/care/hospital";
+import {getScores, delScores, addScores, updateScores} from "@/api/care/scores";
+import {listAllHospital} from "@/api/care/hospital";
 import {
   scorelistApplications
 } from "@/api/care/applications";
-import {ref} from "vue";
-const { proxy } = getCurrentInstance();
+import Clock from "@/views/care/scores/clock.vue";
+
+const {proxy} = getCurrentInstance();
+import {ref, reactive, toRefs, getCurrentInstance} from "vue";
+import clockIndex from "@/views/care/clocks/index.vue";
+const currentComponent = ref(null); // 使用 ref 来管理组件
+const componentProps = ref({});     // 使用 ref 来管理传递给组件的属性
+const componentKey = ref(0);        // 使用 ref 来管理组件的 key
 
 const scoresList = ref([]);
 const open = ref(false);
@@ -133,7 +147,8 @@ const single = ref(true);
 const multiple = ref(true);
 const total = ref(0);
 const title = ref("");
-const hispitalList=ref([]);
+const hispitalList = ref([]);
+const openClock=ref(false);
 const data = reactive({
   form: {},
   queryParams: {
@@ -144,18 +159,18 @@ const data = reactive({
   },
   rules: {
     applyId: [
-      { required: true, message: "护理业务数据id不能为空", trigger: "blur" }
+      {required: true, message: "护理业务数据id不能为空", trigger: "blur"}
     ],
     userId: [
-      { required: true, message: "评分人id不能为空", trigger: "blur" }
+      {required: true, message: "评分人id不能为空", trigger: "blur"}
     ],
     assess: [
-      { required: true, message: "评价不能为空", trigger: "blur" }
+      {required: true, message: "评价不能为空", trigger: "blur"}
     ],
   }
 });
 
-const { queryParams, form, rules } = toRefs(data);
+const {queryParams, form, rules} = toRefs(data);
 
 /** 查询业务评分列表 */
 function getList() {
@@ -217,6 +232,21 @@ function handleAdd() {
   title.value = "添加业务评分";
 }
 
+function lookClock(row) {
+  const _applyId = row.applyId || ids.value
+  currentComponent.value = Clock;
+
+  // 传递apply
+  componentProps.value = {
+    applyId: _applyId
+  };
+
+  // 更改组件的 key 来强制重新渲染
+  componentKey.value += 1;
+
+  openClock.value=true
+}
+
 /** 修改按钮操作 */
 function handleUpdate(row) {
   reset();
@@ -252,12 +282,13 @@ function submitForm() {
 /** 删除按钮操作 */
 function handleDelete(row) {
   const _scoreIds = row.scoreId || ids.value;
-  proxy.$modal.confirm('是否确认删除业务评分编号为"' + _scoreIds + '"的数据项?').then(function() {
+  proxy.$modal.confirm('是否确认删除业务评分编号为"' + _scoreIds + '"的数据项?').then(function () {
     return delScores(_scoreIds);
   }).then(() => {
     getList();
     proxy.$modal.msgSuccess("删除成功");
-  }).catch(() => {});
+  }).catch(() => {
+  });
 }
 
 /** 导出按钮操作 */
@@ -266,12 +297,14 @@ function handleExport() {
     ...queryParams.value
   }, `scores_${new Date().getTime()}.xlsx`)
 }
+
 /** 查询医院列表 */
 function listHispital() {
   listAllHospital().then(response => {
     hispitalList.value = response;
   });
 }
+
 listHispital();
 getList();
 </script>