_WarnNoProcess.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <script setup lang="ts">
  2. import { ref, computed, onMounted } from "vue"
  3. import moment from "moment"
  4. import router from "@/router"
  5. import Rs from "@/core/services/RequestService"
  6. const props = withDefaults(
  7. defineProps<{
  8. type?: number
  9. columns?: any
  10. }>(),
  11. { type: 0 }
  12. )
  13. const tableUrl = computed(() => {
  14. return props.type == 0 || props.type == 1
  15. ? "sys/workOrderOrg/getNoOrderWarnByOrgForPage"
  16. : "sys/workOrderCom/getNoOrderWarnByComForPage"
  17. })
  18. const cols = ref<Array<any>>([
  19. {
  20. name: "公司名称",
  21. field: "company_name",
  22. },
  23. {
  24. name: "区域",
  25. field: "org_name",
  26. width: 150,
  27. },
  28. {
  29. name: "设备名称",
  30. field: "device_name",
  31. },
  32. {
  33. name: "报警类型",
  34. field: "warn_type_name",
  35. },
  36. {
  37. name: "报警时间",
  38. field: "warn_time",
  39. },
  40. {
  41. name: "操作",
  42. width: 150,
  43. field: "action",
  44. },
  45. ])
  46. const size = ref<any>("default")
  47. const dySearchSelectStyle = { width: "180px" }
  48. const dateRange = ref<[Date, Date]>([moment(new Date()).add(-7, "d").toDate(), new Date()])
  49. const companyName = ref("")
  50. const warnType = ref("")
  51. //const orgId = ref("0")
  52. //const monitoringType = ref("")
  53. //const abnormalState = ref("")
  54. const queryParams = ref<any>({
  55. query_start_time: moment(dateRange.value[0]).format("YYYYMMDD"),
  56. query_end_time: moment(dateRange.value[1]).format("YYYYMMDD"),
  57. })
  58. const table = ref()
  59. const jump = function (v: any) {
  60. console.log("jump", v)
  61. router.push({
  62. path: "/goLineData/oilFumeConcentration",
  63. query: {
  64. back: 1,
  65. comName: v.company_name,
  66. company_id: v.company_id,
  67. },
  68. })
  69. }
  70. function query() {
  71. const params = {
  72. //monitoring_type: monitoringType.value,
  73. //org_id: orgId.value,
  74. //abnormal_state: abnormalState.value,
  75. company_name: companyName.value,
  76. warn_type: warnType.value,
  77. query_start_time: moment(dateRange.value[0]).format("YYYYMMDD"),
  78. query_end_time: moment(dateRange.value[1]).format("YYYYMMDD"),
  79. }
  80. const keys = Object.keys(params)
  81. keys.forEach((key) => {
  82. if (params[key] == "" && params[key] !== 0) {
  83. delete params[key]
  84. }
  85. })
  86. queryParams.value = params
  87. }
  88. function reset() {
  89. //orgId.value = "0"
  90. //monitoringType.value = ""
  91. //abnormalState.value = ""
  92. companyName.value = ""
  93. warnType.value = ""
  94. dateRange.value = [moment(new Date()).add(-7, "d").toDate(), new Date()]
  95. query()
  96. }
  97. const modal = ref()
  98. const noticeDetails = ref<any>({})
  99. const formData = ref({ content: "" })
  100. function Urging(row: any) {
  101. formData.value.content = ""
  102. noticeDetails.value = Object.assign({}, row)
  103. modal.value.show()
  104. }
  105. function onSave() {
  106. Rs.post("sys/workOrderOrg/startWorkOrderByOrg", {
  107. data: {
  108. warn_id: noticeDetails.value.id,
  109. content: formData.value.content,
  110. },
  111. })
  112. }
  113. function init() {
  114. if (props.type != 0 && props.type != 1) {
  115. cols.value = props.columns
  116. }
  117. }
  118. onMounted(init)
  119. </script>
  120. <template>
  121. <VbDataTable
  122. ref="table"
  123. :header="cols"
  124. :url="tableUrl"
  125. method="post"
  126. :query-params="queryParams"
  127. :has-checkbox="false"
  128. >
  129. <template v-slot:table-tool="">
  130. <el-form class="align-items-center" :inline="true">
  131. <el-form-item class="mb-0 me-5 align-items-center" label="商户名称" v-if="props.type == 0 || props.type == 1">
  132. <el-input
  133. class=""
  134. :style="dySearchSelectStyle"
  135. v-model="companyName"
  136. placeholder="请输入商户名称"
  137. :size="size"
  138. />
  139. </el-form-item>
  140. <el-form-item class="mb-0 me-5 align-items-center" label="日期">
  141. <el-date-picker
  142. v-model="dateRange"
  143. type="daterange"
  144. range-separator="~"
  145. start-placeholder="开始时间"
  146. end-placeholder="结束时间"
  147. :size="size"
  148. />
  149. </el-form-item>
  150. <el-form-item class="mb-0 me-5 align-items-center" label="告警类型">
  151. <DySelect
  152. v-model="warnType"
  153. :formatRemoteData="(v:any)=>{return v?.list}"
  154. :url="'sys/dict/getExceedWarnType?type=1'"
  155. :style="dySearchSelectStyle"
  156. placeholder="请选择告警类型"
  157. ></DySelect>
  158. </el-form-item>
  159. <el-form-item class="mb-0 me-0 align-items-center">
  160. <el-button class="ms-3 mt-0 btn btn-sm btn-primary" @click="query">查询</el-button>
  161. <el-button class="ms-3 mt-0 btn btn-sm btn-light-primary btn-outline" @click="reset">重置</el-button>
  162. </el-form-item>
  163. </el-form>
  164. </template>
  165. <template #company_name="{ row }">
  166. <span class="text-primary" @click="jump(row)" style="cursor: pointer">{{ row["company_name"] }}</span>
  167. </template>
  168. <template #action="{ row }">
  169. <span class="table-action" @click="Urging(row)">发起催办</span>
  170. </template>
  171. </VbDataTable>
  172. <VbModal
  173. v-model:modal="modal"
  174. title="发起催办"
  175. :form-data="formData"
  176. :form-items="[
  177. {
  178. label: '催办内容:',
  179. field: 'content',
  180. component: 'slot',
  181. rules: [{ required: true, message: '请填写催办内容', trigger: ['blur'] }],
  182. },
  183. ]"
  184. @confirm="onSave"
  185. >
  186. <template #body>
  187. <el-row>
  188. <el-col :span="12">
  189. <dl>
  190. <dt>企业名称:</dt>
  191. <dd>{{ noticeDetails.company_name }}</dd>
  192. </dl>
  193. </el-col>
  194. <el-col :span="12">
  195. <dl>
  196. <dt>异常类型:</dt>
  197. <dd>{{ noticeDetails.warn_type_name }}</dd>
  198. </dl>
  199. </el-col>
  200. <el-col :span="12">
  201. <dl>
  202. <dt>告警设备:</dt>
  203. <dd>{{ noticeDetails.device_name }}</dd>
  204. </dl>
  205. </el-col>
  206. <el-col :span="12">
  207. <dl>
  208. <dt>告警时间:</dt>
  209. <dd>{{ noticeDetails.warn_time }}</dd>
  210. </dl>
  211. </el-col>
  212. </el-row>
  213. <div class="separator mt-2 mb-5"></div>
  214. </template>
  215. <template #content_form>
  216. <el-input v-model="formData.content" type="textarea" placeholder="请输入催办内容"></el-input>
  217. </template>
  218. </VbModal>
  219. </template>