|
|
@@ -1,7 +1,333 @@
|
|
|
<script setup lang="ts">
|
|
|
-import { reactive, ref, toRefs } from "vue"
|
|
|
+import { ref, computed } from "vue"
|
|
|
+import configs from "@/core/config/Index"
|
|
|
+import router from "@/router"
|
|
|
+import Rs from "@/core/services/RequestService"
|
|
|
+import { ElInput, ElSelect } from "element-plus"
|
|
|
+import type { VbFormItem } from "@/components/Forms/models"
|
|
|
+const table = ref()
|
|
|
+const cols = ref([
|
|
|
+ {
|
|
|
+ name: "序号",
|
|
|
+ field: configs.TABLE_INDEX_FIELD,
|
|
|
+ width: 60,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "区域",
|
|
|
+ field: "org_name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "企业名称",
|
|
|
+ field: "company_name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "监测类型",
|
|
|
+ field: "monitoring_type_name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "申报类型",
|
|
|
+ field: "declare_type_name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "申报状态",
|
|
|
+ field: "audit_state_name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "申报时间",
|
|
|
+ field: "abnormal_date",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "操作",
|
|
|
+ field: "action",
|
|
|
+ width: 100,
|
|
|
+ },
|
|
|
+])
|
|
|
+const size = ref<any>("default")
|
|
|
+const dySearchSelectStyle = { width: "180px" }
|
|
|
+const companyName = ref("")
|
|
|
+const orgId = ref<string | null>(null)
|
|
|
+const monitoringType = ref("")
|
|
|
+const auditState = ref("")
|
|
|
+const declareType = ref("")
|
|
|
+const queryParams = ref({})
|
|
|
+
|
|
|
+const jump = function (v: any) {
|
|
|
+ console.log("jump", v)
|
|
|
+ router.push({
|
|
|
+ path: "/goLineData/oilFumeConcentration",
|
|
|
+ query: {
|
|
|
+ comName: v.company_name,
|
|
|
+ company_id: v.company_id,
|
|
|
+ back: 1,
|
|
|
+ },
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function query() {
|
|
|
+ const params = {
|
|
|
+ org_id: orgId.value,
|
|
|
+ company_name: companyName.value,
|
|
|
+ monitoring_type: monitoringType.value,
|
|
|
+ audit_state: auditState.value,
|
|
|
+ declare_type: declareType.value,
|
|
|
+ }
|
|
|
+ const keys = Object.keys(params)
|
|
|
+ keys.forEach((key) => {
|
|
|
+ if (params[key] == "") {
|
|
|
+ delete params[key]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ queryParams.value = params
|
|
|
+}
|
|
|
+function reset() {
|
|
|
+ companyName.value = ""
|
|
|
+ orgId.value = "0"
|
|
|
+ monitoringType.value = ""
|
|
|
+ auditState.value = ""
|
|
|
+ declareType.value = ""
|
|
|
+ query()
|
|
|
+}
|
|
|
+const modal = ref<any>()
|
|
|
+const operationType = ref<"D" | "A">("D")
|
|
|
+
|
|
|
+const modalTitle = computed(() => {
|
|
|
+ return operationType.value == "D" ? "申报详情" : operationType.value == "A" ? "审核申报" : ""
|
|
|
+})
|
|
|
+const formData = ref({
|
|
|
+ declare_id: "",
|
|
|
+ audit_user: "",
|
|
|
+ audit_desc: "",
|
|
|
+ audit_state: "",
|
|
|
+ declare_type: "",
|
|
|
+})
|
|
|
+const formItems = computed(() => {
|
|
|
+ return (
|
|
|
+ operationType.value == "A"
|
|
|
+ ? [
|
|
|
+ {
|
|
|
+ field: "audit_org_name",
|
|
|
+ label: "审核机构:",
|
|
|
+ component: "innerText",
|
|
|
+ innerText: details.value.audit_org_name,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "audit_state",
|
|
|
+ label: "审核信息",
|
|
|
+ required: true,
|
|
|
+ component: ElSelect,
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ label: "审核通过",
|
|
|
+ value: "1",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "审核不通过",
|
|
|
+ value: "2",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ span: 12,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "audit_user",
|
|
|
+ label: "审核人",
|
|
|
+ required: true,
|
|
|
+ component: ElInput,
|
|
|
+ span: 12,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "audit_desc",
|
|
|
+ label: "审核意见",
|
|
|
+ required: true,
|
|
|
+ type: "textarea",
|
|
|
+ component: ElInput,
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ : []
|
|
|
+ ) as Array<VbFormItem>
|
|
|
+})
|
|
|
+const details = ref<any>({})
|
|
|
+const detail = function (row: any) {
|
|
|
+ operationType.value = "D"
|
|
|
+ getDetail(row)
|
|
|
+}
|
|
|
+const audit = function (row: any) {
|
|
|
+ operationType.value = "A"
|
|
|
+
|
|
|
+ getDetail(row)
|
|
|
+}
|
|
|
+const download = () => {
|
|
|
+ if (details.value.annex_data_down_url) {
|
|
|
+ window.open(details.value.annex_data_down_url)
|
|
|
+ }
|
|
|
+}
|
|
|
+function getDetail(row: any) {
|
|
|
+ formData.value.declare_id = row.id
|
|
|
+ formData.value.declare_type = row.declare_type
|
|
|
+ formData.value.audit_state = "2"
|
|
|
+ Rs.get(`sys/orgDeclare/selectDeclare?id=${row.id}`).then((res) => {
|
|
|
+ details.value = Object.assign({}, res.data)
|
|
|
+ formData.value.audit_user = res.data.audit_user
|
|
|
+ formData.value.audit_desc = res.data.audit_desc
|
|
|
+ modal.value.show()
|
|
|
+ })
|
|
|
+}
|
|
|
+function onSave() {
|
|
|
+ if (operationType.value == "D") {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ Rs.post("sys/orgDeclare/updateAbnormalDeclare", { data: formData.value }).then(() => {
|
|
|
+ table.value.search()
|
|
|
+ })
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
- <div>appReview</div>
|
|
|
+ <VbDataTable
|
|
|
+ ref="table"
|
|
|
+ :header="cols"
|
|
|
+ url="sys/orgDeclare/selectForMaintainDeclare"
|
|
|
+ method="post"
|
|
|
+ :query-params="queryParams"
|
|
|
+ :has-checkbox="false"
|
|
|
+ >
|
|
|
+ <template v-slot:table-tool="">
|
|
|
+ <el-form class="align-items-center" :inline="true">
|
|
|
+ <el-form-item class="mb-0 me-5 align-items-center" label="商户名称">
|
|
|
+ <el-input class="" style="width: 180px" v-model="companyName" placeholder="请输入商户名称" :size="size" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="mb-0 me-5 align-items-center" label="区域">
|
|
|
+ <OrgSelectTree v-model:value="orgId" style="width: 180px"></OrgSelectTree>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="mb-0 me-5 align-items-center" label="申报类型">
|
|
|
+ <el-select v-model="declareType" :style="dySearchSelectStyle" clearable placeholder="请选择申报类型">
|
|
|
+ <el-option value="0" label="异常申报"></el-option>
|
|
|
+ <el-option value="1" label="维护申报"></el-option>
|
|
|
+ <el-option value="2" label="清洗填报"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="mb-0 me-5 align-items-center" label="审核状态">
|
|
|
+ <el-select v-model="auditState" :style="dySearchSelectStyle" clearable placeholder="请选择审核状态">
|
|
|
+ <el-option value="0" label="未审核"></el-option>
|
|
|
+ <el-option value="1" label="审核通过"></el-option>
|
|
|
+ <el-option value="2" label="未审核通过"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="mb-0 me-5 align-items-center" label="监测类型">
|
|
|
+ <DySelect
|
|
|
+ v-model="monitoringType"
|
|
|
+ :url="'sys/dict/getCompanyMonitoringType'"
|
|
|
+ :style="dySearchSelectStyle"
|
|
|
+ placeholder="请选择监测类型"
|
|
|
+ ></DySelect>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="mb-0 me-0 align-items-center">
|
|
|
+ <el-button class="ms-3 mt-0 btn btn-sm btn-primary" @click="query">查询</el-button>
|
|
|
+ <el-button class="ms-3 mt-0 btn btn-sm btn-light-primary btn-outline" @click="reset">重置</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </template>
|
|
|
+ <template #company_name="{ row }">
|
|
|
+ <span class="text-primary" @click="jump(row)" style="cursor: pointer">{{ row["company_name"] }}</span>
|
|
|
+ </template>
|
|
|
+ <template #audit_state_name="{ row }">
|
|
|
+ <span
|
|
|
+ class="badge"
|
|
|
+ :class="`badge-${row.audit_state == 0 ? 'primary' : row.audit_state == 1 ? 'success' : 'danger'}`"
|
|
|
+ >
|
|
|
+ {{ row["audit_state_name"] }}
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ <template #action="{ row }">
|
|
|
+ <span v-if="row.audit_state == 1" class="table-action" @click="detail(row)">详情</span>
|
|
|
+ <span v-else class="table-action" @click="audit(row)">审核</span>
|
|
|
+ </template>
|
|
|
+ </VbDataTable>
|
|
|
+ <VbModal v-model:modal="modal" :title="modalTitle" :form-data="formData" :form-items="formItems" @confirm="onSave">
|
|
|
+ <template #body>
|
|
|
+ <el-row v-if="details.declare_type">
|
|
|
+ <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>异常信息:</dt>
|
|
|
+ <dd>{{ details.maintain_type }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>时间:</dt>
|
|
|
+ <dd>{{ details.time }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <dl>
|
|
|
+ <dt>异常内容:</dt>
|
|
|
+ <dd>{{ details.content }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row v-else>
|
|
|
+ <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>设备名称:</dt>
|
|
|
+ <dd>{{ details.device_name }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>维护类型:</dt>
|
|
|
+ <dd>{{ details.maintain_type }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <dl>
|
|
|
+ <dt>维护周期:</dt>
|
|
|
+ <dd>{{ details.time }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <div class="separator mt-2 mb-5"></div>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>企业名称:</dt>
|
|
|
+ <dd>{{ details.company_name }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>联系方式:</dt>
|
|
|
+ <dd>{{ details.user_phone }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ <!-- <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>企业申报信息:</dt>
|
|
|
+ <dd>{{ details.content }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col> -->
|
|
|
+ <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>情况描述:</dt>
|
|
|
+ <dd>{{ details.content }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>附件:</dt>
|
|
|
+ <dd>
|
|
|
+ <a v-if="details.annex_data_down_url" @click="download">点击下载</a>
|
|
|
+ <span v-else>暂无</span>
|
|
|
+ </dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <dl>
|
|
|
+ <dt>申报人:</dt>
|
|
|
+ <dd>{{ details.declare_user }}</dd>
|
|
|
+ </dl>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <div v-if="formItems.length" class="separator mt-2 mb-5"></div>
|
|
|
+ </template>
|
|
|
+ </VbModal>
|
|
|
</template>
|