index.vue 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. <template>
  2. <ContentWrap>
  3. <!-- 保护性约束观察记录表 -->
  4. <el-form
  5. class="-mb-15px"
  6. :model="queryParams"
  7. ref="queryFormRef"
  8. :inline="true"
  9. label-width="110px"
  10. >
  11. <el-form-item label="长者姓名">
  12. <el-input
  13. v-model="queryParams.elderName"
  14. placeholder="长者姓名"
  15. class="!w-240px"
  16. clearable
  17. />
  18. </el-form-item>
  19. <el-form-item label="评估人">
  20. <el-input
  21. v-model="queryParams.assessor"
  22. placeholder="长者姓名"
  23. class="!w-240px"
  24. clearable
  25. />
  26. </el-form-item>
  27. <el-form-item label="记录日期">
  28. <el-date-picker
  29. size="default"
  30. ref="selectRef"
  31. class="!w-240px"
  32. v-model="queryParams.assessDate"
  33. type="daterange"
  34. :clearable="true"
  35. :editable="false"
  36. placeholder="选择记录日期"
  37. value-format="YYYY-MM-DD"
  38. format="YYYY-MM-DD"
  39. date-format="YYYY-MM-DD"
  40. />
  41. </el-form-item>
  42. <el-form-item>
  43. <el-button @click="handleQuery" style="margin-left: 2vw"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
  44. <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
  45. </el-form-item>
  46. </el-form>
  47. </ContentWrap>
  48. <!-- 列表 -->
  49. <ContentWrap>
  50. <div class="mb-10px">
  51. <ButtonAdd @click="openForm(undefined)" />
  52. <!-- <el-button @click="inputH" type="success"><Icon icon="fa:cloud-upload" :size="16" class="mr-1"/>导入</el-button>-->
  53. <!-- <ButtonImport @click="handleImportCard" />-->
  54. </div>
  55. <el-table v-loading="loading" :data="list" :header-cell-style="tableHeaderColor">
  56. <el-table-column header-align="center" align="center" label="序号" width="60">
  57. <template #default="scope">
  58. {{
  59. scope.$index + (queryParams.pageNo * queryParams.pageSize - queryParams.pageSize) + 1
  60. }}
  61. </template>
  62. </el-table-column>
  63. <el-table-column prop="elderName" header-align="center" align="center" label="长者姓名" min-width="150" show-overflow-tooltip/>
  64. <el-table-column prop="assessor" header-align="center" align="center" label="床位号" min-width="200" show-overflow-tooltip/>
  65. <el-table-column header-align="center" align="center" label="风险等级" min-width="200" show-overflow-tooltip>
  66. <template #default="scope">
  67. <el-tag v-if="getRiskLevelInfo(scope.row.assessData).text" :type="getRiskLevelInfo(scope.row.assessData).type">
  68. {{ getRiskLevelInfo(scope.row.assessData).text }}
  69. </el-tag>
  70. </template>
  71. </el-table-column>
  72. <el-table-column prop="assessDate" header-align="center" align="center" label="记录日期" min-width="200" show-overflow-tooltip/>
  73. <el-table-column prop="creator" header-align="center" align="center" label="记录人" min-width="200" show-overflow-tooltip/>
  74. <el-table-column label="操作" align="center" width="200" >
  75. <template #default="scope">
  76. <el-button
  77. link
  78. type="primary"
  79. @click="openFormEdit(scope.row, scope.row.id)"
  80. >
  81. 编辑
  82. </el-button>
  83. <el-button
  84. link
  85. type="warning"
  86. @click="openFormDetail(scope.row,scope.row.id)"
  87. >
  88. 详情
  89. </el-button>
  90. <el-button
  91. link
  92. type="danger"
  93. @click="openClose(scope.row)"
  94. >
  95. 删除
  96. </el-button>
  97. </template>
  98. </el-table-column>
  99. </el-table>
  100. <!-- 分页 -->
  101. <Pagination
  102. :total="total"
  103. v-model:page="queryParams.pageNo"
  104. v-model:limit="queryParams.pageSize"
  105. @pagination="getList"
  106. />
  107. </ContentWrap>
  108. <AddForm ref="formRef" @success="getList" />
  109. </template>
  110. <script setup lang="ts">
  111. import AddForm from "./AddForm.vue";
  112. import ButtonAdd from "@/components/ButtonAdd/src/ButtonAdd.vue";
  113. import { useUserStore } from '@/store/modules/user'
  114. import {
  115. attackRiskDelete, attackRiskPage,
  116. } from "@/api/social-work";
  117. import { getRiskLevelInfo } from "@/utils/risk-assessment";
  118. const message = useMessage() // 消息弹窗
  119. const { t } = useI18n() // 国际化
  120. const userStore = useUserStore()
  121. const loading = ref(true) // 列表的加载中
  122. const detailRef = ref()
  123. const importRef = ref()
  124. const total = ref(0) // 列表的总页数
  125. const list = ref([]) // 列表的数据
  126. // 状态管理
  127. const showBatchExport = ref(false)
  128. const exportConfig = ref({
  129. title: '',
  130. batchMin: 1,
  131. batchMax: 999,
  132. countMin: 1,
  133. countMax: 200,
  134. defaultBatch: 1,
  135. defaultCount: 200,
  136. description: [] as string[]
  137. })
  138. const exportLoading = ref(false)
  139. let queryParams = reactive({
  140. pageNo: 1,
  141. pageSize: 10,
  142. elderName: '',
  143. assessor: '',
  144. // assessDate: getCurrentMonthRange(),
  145. assessDate: [],
  146. tenantIds: userStore.orgTenantId
  147. })
  148. const queryFormRef = ref() // 搜索的表单
  149. // 打开导出弹窗
  150. const handleImportCard = async () => {
  151. // showBatchExport.value = true
  152. }
  153. // 处理批量导出
  154. const handleBatchExport = async (batch: number, count: number) => {
  155. exportLoading.value = true
  156. console.log(batch,count)
  157. // try {
  158. // let queryParams = {
  159. // pageNo: batch,
  160. // pageSize: count,
  161. // tenantId: userStore.orgTenantId[0]
  162. // }
  163. // const list = await careRecordsPage(queryParams)
  164. // if (list.length <= 0) {
  165. // message.error('暂无数据可以导出!')
  166. // return
  167. // }
  168. // const headers = [
  169. // { key: 'organizationName', title: '机构名称' },
  170. // { key: 'visitName', title: '姓名' },
  171. // { key: 'visitPhone', title: '手机号' },
  172. // { key: 'visitDate', title: '预约时间' },
  173. // { key: 'accompanyCount', title: '陪同人数' },
  174. // { key: 'reason', title: '理由' }
  175. // ]
  176. // exportWithExpandedObjectArrays(list, headers, `医疗护理记录${formatToDateTime()}.xlsx`, '医疗护理记录')
  177. // } catch (_) {}
  178. }
  179. /** 查询列表 */
  180. const getList = async () => {
  181. loading.value = true
  182. try {
  183. //let queryP = {...queryParams,discoveryTime:queryParams.discoveryTime?[queryParams.discoveryTime[0]+" 00:00:00",queryParams.discoveryTime[1]+" 23:59:59"]:null}
  184. const data = await attackRiskPage(queryParams)
  185. list.value = data.list
  186. total.value = data.total
  187. } finally {
  188. loading.value = false
  189. }
  190. }
  191. /** 搜索按钮操作 */
  192. const handleQuery = async () => {
  193. if (!queryFormRef.value) return
  194. const valid = await queryFormRef.value.validate()
  195. if (!valid) return
  196. queryParams.pageNo = 1
  197. await getList()
  198. }
  199. /** 重置按钮操作 */
  200. const resetQuery = () => {
  201. queryParams.elderName = ''
  202. queryParams.assessor = ''
  203. queryParams.tenantIds = userStore.orgTenantId
  204. // queryParams.assessDate= getCurrentMonthRange()
  205. queryParams.assessDate = []
  206. queryFormRef.value.resetFields()
  207. handleQuery()
  208. }
  209. /** 添加/修改操作 */
  210. const formRef = ref()
  211. const openForm = (id?: number) => {
  212. if(queryParams.tenantIds.length == 0 || queryParams.tenantIds.length > 1){
  213. message.error('新增只能选择一个机构')
  214. return
  215. }
  216. formRef.value.open(queryParams.tenantIds[0], id,false)
  217. }
  218. const editRef = ref()
  219. const openFormEdit = (row: any = {}, id?: number) => {
  220. formRef.value.open(row.tenantId, id,false)
  221. }
  222. const openFormDetail = (row: any = {},id?: number) => {
  223. formRef.value.open(row.tenantId,id,true)
  224. }
  225. const openClose = async (item) => {
  226. try {
  227. console.log("任务ID",item)
  228. const res = await message.confirm('确定要删除吗?', '提示')
  229. if (res == 'confirm') {
  230. // 发起
  231. try {
  232. const res = await attackRiskDelete(item.id)
  233. if (res){
  234. message.success(t('common.updateSuccess'))
  235. }
  236. }catch(err) {}
  237. }
  238. // 刷新列表
  239. await getList()
  240. } catch {}
  241. }
  242. /** 取消按钮操作 */
  243. const cancelDelete = async (id: number) => {
  244. try {
  245. // 取消的二次确认
  246. await message.cancelConfirm()
  247. // 发起取消
  248. // await elderlyBakDel(id)
  249. message.success(t('common.delSuccess'))
  250. // 刷新列表
  251. await getList()
  252. } catch {}
  253. }
  254. const route = useRoute()
  255. /** 初始化 **/
  256. onMounted(() => {
  257. if(route.query && route.query.elderName){
  258. queryParams.elderName = route.query.elderName as string
  259. }
  260. getList()
  261. })
  262. // 表头格式
  263. const tableHeaderColor = ({ rowIndex }: any) => {
  264. if (rowIndex === 0) {
  265. return {
  266. backgroundColor: '#f8f8f9',
  267. color: '#666666',
  268. fontWeight: 'bold'
  269. }
  270. }
  271. }
  272. </script>
  273. <style scoped lang="scss"></style>