index.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <template>
  2. <el-row :gutter="20">
  3. <el-col :span="4" :xs="24">
  4. <ContentWrap class="h-1/1">
  5. <DeptTree @node-click="handleDeptNodeClick" />
  6. </ContentWrap>
  7. </el-col>
  8. <el-col :span="20" :xs="24">
  9. <ContentWrap>
  10. <!-- 搜索工作栏 -->
  11. <el-form
  12. class="-mb-15px"
  13. :model="queryParams"
  14. ref="queryFormRef"
  15. :inline="true"
  16. label-width="68px"
  17. >
  18. <el-form-item label="工单名" prop="orderName">
  19. <el-input
  20. v-model="queryParams.orderName"
  21. placeholder="请输入工单名"
  22. clearable
  23. @keyup.enter="handleQuery"
  24. class="!w-240px"
  25. />
  26. </el-form-item>
  27. <el-form-item label="工单状态" prop="orderStatus">
  28. <el-select
  29. v-model="queryParams.orderStatus"
  30. placeholder="工单状态"
  31. clearable
  32. class="!w-240px"
  33. >
  34. <el-option
  35. v-for="dict in getStrDictOptions(DICT_TYPE.OPERATION_FILL_ORDER_STATUS)"
  36. :key="dict.value"
  37. :label="dict.label"
  38. :value="dict.value"
  39. />
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item label="创建时间" prop="createTime">
  43. <el-date-picker
  44. v-model="queryParams.createTime"
  45. value-format="YYYY-MM-DD HH:mm:ss"
  46. type="daterange"
  47. start-placeholder="开始日期"
  48. end-placeholder="结束日期"
  49. :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
  50. class="!w-220px"
  51. />
  52. </el-form-item>
  53. <el-form-item>
  54. <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
  55. <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
  56. <!-- <el-button-->
  57. <!-- type="primary"-->
  58. <!-- plain-->
  59. <!-- @click="openForm('create')"-->
  60. <!-- v-hasPermi="['rq:iot-inspect-order:create']"-->
  61. <!-- >-->
  62. <!-- <Icon icon="ep:plus" class="mr-5px" /> 新增-->
  63. <!-- </el-button>-->
  64. <!-- <el-button
  65. type="success"
  66. plain
  67. @click="handleExport"
  68. :loading="exportLoading"
  69. v-hasPermi="['rq:iot-inspect-order:export']"
  70. >
  71. <Icon icon="ep:download" class="mr-5px" /> 导出
  72. </el-button>-->
  73. </el-form-item>
  74. </el-form>
  75. </ContentWrap>
  76. <!-- 列表 -->
  77. <ContentWrap>
  78. <el-table v-loading="loading" :data="list" :stripe="true" >
  79. <el-table-column label="序号" width="60" align="center">
  80. <template #default="scope">
  81. {{ scope.$index + 1 }}
  82. </template>
  83. </el-table-column>
  84. <el-table-column label="工单名称" align="center" prop="orderName" width="300"/>
  85. <el-table-column label="责任人" align="center" prop="userName" />
  86. <!-- <el-table-column label="工单类型" align="center" prop="orderType" />-->
  87. <el-table-column label="工单状态" align="center" prop="orderStatus" >
  88. <template #default="scope">
  89. <dict-tag :type="DICT_TYPE.OPERATION_FILL_ORDER_STATUS" :value="scope.row.orderStatus" />
  90. </template>
  91. </el-table-column>
  92. <!-- <el-table-column label="备注" align="center" prop="remark" />-->
  93. <!-- <el-table-column
  94. label="创建时间"
  95. align="center"
  96. prop="createTime"
  97. :formatter="dateFormatter"
  98. width="180px"
  99. />-->
  100. <el-table-column label="操作" align="center" min-width="120px">
  101. <template #default="scope">
  102. <el-button
  103. link
  104. type="primary"
  105. @click="openWrite(scope.row.deptId+','+scope.row.userId+','+scope.row.createTime
  106. +','+scope.row.id+','+scope.row.orderStatus)"
  107. v-hasPermi="['rq:iot-opeation-fill:update']"
  108. v-if="scope.row.orderStatus !== 1"
  109. >
  110. 填写
  111. </el-button>
  112. <el-button
  113. link
  114. type="primary"
  115. @click="openWrite(scope.row.deptId+','+scope.row.userId+','+scope.row.createTime+','+scope.row.id+','+scope.row.orderStatus)"
  116. v-else
  117. >
  118. 查看
  119. </el-button>
  120. </template>
  121. </el-table-column>
  122. </el-table>
  123. <!-- 分页 -->
  124. <Pagination
  125. :total="total"
  126. v-model:page="queryParams.pageNo"
  127. v-model:limit="queryParams.pageSize"
  128. @pagination="getList"
  129. />
  130. </ContentWrap>
  131. </el-col>
  132. </el-row>
  133. <!-- 表单弹窗:添加/修改 -->
  134. <IotInspectOrderForm ref="formRef" @success="getList" />
  135. </template>
  136. <script setup lang="ts">
  137. import { dateFormatter } from '@/utils/formatTime'
  138. import download from '@/utils/download'
  139. import { IotInspectOrderApi, IotInspectOrderVO } from '@/api/pms/inspect/order'
  140. //import IotInspectOrderForm from './IotInspectOrderForm.vue'
  141. import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
  142. import DeptTree from "@/views/system/user/DeptTree.vue";
  143. import {IotOpeationFillApi, IotOpeationFillVO} from "@/api/pms/iotopeationfill";
  144. import {useUserStore} from "@/store/modules/user";
  145. const { push } = useRouter()
  146. /** 巡检工单 列表 */
  147. defineOptions({ name: 'IotOpeationFill' })
  148. const message = useMessage() // 消息弹窗
  149. const { t } = useI18n() // 国际化
  150. const loading = ref(true) // 列表的加载中
  151. const list = ref<IotOpeationFillVO[]>([]) // 列表的数据
  152. const total = ref(0) // 列表的总页数
  153. const queryParams = reactive({
  154. pageNo: 1,
  155. pageSize: 10,
  156. inspectOrderTitle: undefined,
  157. inspectOrderCode: undefined,
  158. status: undefined,
  159. remark: undefined,
  160. createTime: [],
  161. deptId: useUserStore().getUser.deptId,
  162. deviceIds: undefined,
  163. //userId:useUserStore().getUser.id
  164. })
  165. const queryFormRef = ref() // 搜索的表单
  166. const exportLoading = ref(false) // 导出的加载中
  167. const handleDeptNodeClick = async (row) => {
  168. queryParams.deptId = row.id
  169. await getList()
  170. }
  171. /** 查询列表 */
  172. const getList = async () => {
  173. loading.value = true
  174. try {
  175. const data = await IotOpeationFillApi.getIotOpeationFillPage1(queryParams)
  176. list.value = data.list
  177. total.value = data.total
  178. } finally {
  179. loading.value = false
  180. }
  181. }
  182. /** 搜索按钮操作 */
  183. const handleQuery = () => {
  184. queryParams.pageNo = 1
  185. getList()
  186. }
  187. /** 重置按钮操作 */
  188. const resetQuery = () => {
  189. queryFormRef.value.resetFields()
  190. handleQuery()
  191. }
  192. /** 添加/修改操作 */
  193. const formRef = ref()
  194. const openForm = (id?: number) => {
  195. push({ name: 'InspectOrderDetail', params:{id} })
  196. }
  197. const openWrite = (id?: string) => {
  198. push({ name: 'FillOrderInfo',params:{id}})
  199. }
  200. /** 删除按钮操作 */
  201. const handleDelete = async (id: number) => {
  202. try {
  203. // 删除的二次确认
  204. await message.delConfirm()
  205. // 发起删除
  206. await IotInspectOrderApi.deleteIotInspectOrder(id)
  207. message.success(t('common.delSuccess'))
  208. // 刷新列表
  209. await getList()
  210. } catch {}
  211. }
  212. /** 导出按钮操作 */
  213. const handleExport = async () => {
  214. try {
  215. // 导出的二次确认
  216. await message.exportConfirm()
  217. // 发起导出
  218. exportLoading.value = true
  219. const data = await IotInspectOrderApi.exportIotInspectOrder(queryParams)
  220. download.excel(data, '巡检工单.xls')
  221. } catch {
  222. } finally {
  223. exportLoading.value = false
  224. }
  225. }
  226. /** 初始化 **/
  227. onMounted(() => {
  228. getList()
  229. })
  230. </script>