_processing.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. <script setup lang="ts">
  2. import { ref, computed } from "vue"
  3. import moment from "moment"
  4. import router from "@/router"
  5. import Rs from "@/core/services/RequestService"
  6. import { ElInput, ElSelect } from "element-plus"
  7. import ProcessDetail from "./__processDetail.vue"
  8. const cols = ref([
  9. {
  10. name: "公司名称",
  11. field: "company_name",
  12. },
  13. {
  14. name: "区域",
  15. field: "org_name",
  16. },
  17. {
  18. name: "报警类型",
  19. field: "warn_type_name",
  20. },
  21. {
  22. name: "状态",
  23. field: "work_order_stats_name",
  24. },
  25. {
  26. name: "操作",
  27. width: 150,
  28. field: "action",
  29. },
  30. ])
  31. const size = ref<any>("default")
  32. const dySearchSelectStyle = { width: "180px" }
  33. const dateRange = ref<[Date, Date]>([moment(new Date()).add(-7, "d").toDate(), new Date()])
  34. const companyName = ref("")
  35. const warnType = ref("")
  36. const workOrderState = ref("")
  37. //const orgId = ref("0")
  38. //const monitoringType = ref("")
  39. //const abnormalState = ref("")
  40. const queryParams = ref<any>({
  41. query_start_time: moment(dateRange.value[0]).format("YYYYMMDD"),
  42. query_end_time: moment(dateRange.value[1]).format("YYYYMMDD"),
  43. })
  44. const table = ref()
  45. const jump = function (v: any) {
  46. console.log("jump", v)
  47. router.push({
  48. path: "/goLineData/oilFumeConcentration",
  49. query: {
  50. back: 1,
  51. comName: v.company_name,
  52. company_id: v.company_id,
  53. },
  54. })
  55. }
  56. function query() {
  57. const params = {
  58. //monitoring_type: monitoringType.value,
  59. //org_id: orgId.value,
  60. //abnormal_state: abnormalState.value,
  61. company_name: companyName.value,
  62. warn_type: warnType.value,
  63. work_order_state: workOrderState.value,
  64. query_start_time: moment(dateRange.value[0]).format("YYYYMMDD"),
  65. query_end_time: moment(dateRange.value[1]).format("YYYYMMDD"),
  66. }
  67. const keys = Object.keys(params)
  68. keys.forEach((key) => {
  69. if (params[key] == "" && params[key] !== 0) {
  70. delete params[key]
  71. }
  72. })
  73. queryParams.value = params
  74. }
  75. function reset() {
  76. //orgId.value = "0"
  77. //monitoringType.value = ""
  78. //abnormalState.value = ""
  79. companyName.value = ""
  80. warnType.value = ""
  81. workOrderState.value = ""
  82. dateRange.value = [moment(new Date()).add(-7, "d").toDate(), new Date()]
  83. query()
  84. }
  85. const modal = ref()
  86. const warnDetails = ref<any>({})
  87. const userList = ref<Array<any>>([])
  88. const operationType = ref<"D" | "A" | "T">("D")
  89. const url = computed(() => {
  90. return operationType.value == "A"
  91. ? "sys/workOrderOrg/transferByOrg"
  92. : operationType.value == "T"
  93. ? "sys/workOrderOrg/auditByOrg"
  94. : ""
  95. })
  96. const title = computed(() => {
  97. return operationType.value == "D"
  98. ? "详情"
  99. : operationType.value == "A"
  100. ? "审核"
  101. : operationType.value == "T"
  102. ? "转交"
  103. : ""
  104. })
  105. const auditFormData = ref<any>({
  106. audit_state: "1",
  107. content: "",
  108. })
  109. const transferFormData = ref<any>({
  110. law_user_id: "",
  111. content: "",
  112. })
  113. const formData = computed(() => {
  114. return operationType.value == "A" ? auditFormData.value : operationType.value == "T" ? transferFormData.value : {}
  115. })
  116. const formItems = computed(() => {
  117. return operationType.value == "A"
  118. ? [
  119. {
  120. label: "审核意见",
  121. field: "audit_state",
  122. required: true,
  123. component: ElSelect,
  124. data: [
  125. { label: "审核通过", value: "1" },
  126. { label: "审核不通过", value: "2" },
  127. ],
  128. },
  129. {
  130. label: "审核备注",
  131. field: "content",
  132. required: true,
  133. component: ElInput,
  134. },
  135. ]
  136. : operationType.value == "T"
  137. ? [
  138. {
  139. label: "转交人员",
  140. field: "law_user_id",
  141. required: true,
  142. component: ElSelect,
  143. data: userList.value.map((v: any) => {
  144. return {
  145. label: v.name,
  146. value: v.code,
  147. }
  148. }),
  149. },
  150. {
  151. label: "转交备注",
  152. field: "content",
  153. required: true,
  154. component: ElInput,
  155. },
  156. ]
  157. : []
  158. })
  159. function detail(row: any) {
  160. operationType.value = "D"
  161. queryDetail(row.work_order_id)
  162. }
  163. function audit(row: any) {
  164. operationType.value = "A"
  165. auditFormData.value.audit_state = "1"
  166. auditFormData.value.content = ""
  167. queryDetail(row.work_order_id)
  168. }
  169. function transfer(row: any) {
  170. operationType.value = "T"
  171. transferFormData.value.law_user_id = ""
  172. transferFormData.value.content = ""
  173. Rs.post("sys/workOrderOrg/getLawList", {
  174. data: {
  175. work_order_id: row.work_order_id,
  176. },
  177. }).then((res) => {
  178. userList.value = res.data.list
  179. queryDetail(row.work_order_id)
  180. })
  181. }
  182. function queryDetail(id: string) {
  183. Rs.post("sys/workOrderOrg/getWorkOrderDetailByOrg", {
  184. data: {
  185. work_order_id: id,
  186. },
  187. }).then((res) => {
  188. console.log("WARN", res.data)
  189. res.data.processInfoList.forEach((item: any) => {
  190. if (item.picture_url != null) {
  191. const picList = item.picture_url.split(",")
  192. const picReall: Array<any> = [] //去除空的
  193. picList.forEach((pic: string, index: number) => {
  194. if (pic != "") {
  195. pic = pic.substring(pic.indexOf("/api/file/"))
  196. picReall.push({
  197. uid: index,
  198. name: "image.png",
  199. status: "done",
  200. url: pic,
  201. })
  202. }
  203. })
  204. item.fileList = picReall
  205. } else {
  206. item.fileList = []
  207. }
  208. })
  209. warnDetails.value = res.data
  210. modal.value.show()
  211. })
  212. }
  213. function onSave() {
  214. if (url.value) {
  215. Rs.post(url.value, { data: formData.value })
  216. }
  217. }
  218. </script>
  219. <template>
  220. <VbDataTable
  221. ref="table"
  222. :header="cols"
  223. url="sys/workOrderOrg/getHandingWorkOrderByOrgAdmin"
  224. method="post"
  225. :query-params="queryParams"
  226. :has-checkbox="false"
  227. >
  228. <template v-slot:table-tool="">
  229. <el-form class="align-items-center" :inline="true">
  230. <el-form-item class="mb-0 me-5 align-items-center" label="商户名称">
  231. <el-input
  232. class=""
  233. :style="dySearchSelectStyle"
  234. v-model="companyName"
  235. placeholder="请输入商户名称"
  236. :size="size"
  237. />
  238. </el-form-item>
  239. <el-form-item class="mb-0 me-5 align-items-center" label="日期">
  240. <el-date-picker
  241. v-model="dateRange"
  242. type="daterange"
  243. range-separator="~"
  244. start-placeholder="开始时间"
  245. end-placeholder="结束时间"
  246. :size="size"
  247. />
  248. </el-form-item>
  249. <el-form-item class="mb-0 me-5 align-items-center" label="告警类型">
  250. <DySelect
  251. v-model="warnType"
  252. :formatRemoteData="(v:any)=>{return v?.list}"
  253. :url="'sys/dict/getExceedWarnType?type=1'"
  254. :style="dySearchSelectStyle"
  255. placeholder="请选择告警类型"
  256. ></DySelect>
  257. </el-form-item>
  258. <el-form-item class="mb-0 me-5 align-items-center" label="状态:">
  259. <el-select v-model="workOrderState" placeholder="请选择状态" clearable>
  260. <el-option value="0" label="待审核"></el-option>
  261. <el-option value="1" label="待反馈"></el-option>
  262. <el-option value="2" label="已转交"></el-option>
  263. <el-option value="3" label="已完结"></el-option>
  264. </el-select>
  265. </el-form-item>
  266. <el-form-item class="mb-0 me-0 align-items-center">
  267. <el-button class="ms-3 mt-0 btn btn-sm btn-primary" @click="query">查询</el-button>
  268. <el-button class="ms-3 mt-0 btn btn-sm btn-light-primary btn-outline" @click="reset">重置</el-button>
  269. </el-form-item>
  270. </el-form>
  271. </template>
  272. <template #company_name="{ row }">
  273. <span class="text-primary" @click="jump(row)" style="cursor: pointer">{{ row["company_name"] }}</span>
  274. </template>
  275. <template #action="{ row }">
  276. <span v-if="row.work_order_stats == 0" class="table-action" @click="audit(row)">审核</span>
  277. <span v-if="row.work_order_stats == 0" class="table-action" @click="transfer(row)">转交</span>
  278. <span v-else class="table-action" @click="detail(row)">查看详情</span>
  279. </template>
  280. </VbDataTable>
  281. <VbModal v-model:modal="modal" :title="title" :form-data="formData" :form-items="formItems" @confirm="onSave">
  282. <template #body>
  283. <ProcessDetail :data="warnDetails"></ProcessDetail>
  284. </template>
  285. </VbModal>
  286. </template>