|
|
@@ -0,0 +1,276 @@
|
|
|
+<script setup lang="ts">
|
|
|
+import { ref, computed, nextTick } from "vue"
|
|
|
+import type { Header } from "@/components/Table/table-partials/models"
|
|
|
+import Rs from "@/core/services/RequestService"
|
|
|
+import type { VbFormItem } from "@/components/Forms/models"
|
|
|
+import DySelect from "@/components/select/DySelect.vue"
|
|
|
+import { ElSelect } from "element-plus"
|
|
|
+import { toast, dialog } from "@/core/utils/message"
|
|
|
+const operate_status = ref<string>("")
|
|
|
+const name = ref<string>("")
|
|
|
+const monitoring_type = ref<string>("")
|
|
|
+
|
|
|
+const size = ref<any>("default")
|
|
|
+const table = ref()
|
|
|
+const query = () => {
|
|
|
+ const params = {
|
|
|
+ operate_status: operate_status.value,
|
|
|
+ name: name.value,
|
|
|
+ monitoring_type: monitoring_type.value,
|
|
|
+ }
|
|
|
+ const keys = Object.keys(params)
|
|
|
+ keys.forEach((key) => {
|
|
|
+ if (params[key] === "") {
|
|
|
+ delete params[key]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ queryParams.value = Object.assign({}, params)
|
|
|
+}
|
|
|
+const cols = ref<Array<Header>>([
|
|
|
+ {
|
|
|
+ name: "区域",
|
|
|
+ field: "org_name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "企业名称",
|
|
|
+ field: "name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "监测类型",
|
|
|
+ field: "monitoring_type_name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "监测点数量",
|
|
|
+ field: "facilities_num",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "当前状态",
|
|
|
+ field: "operate_status_name",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "操作",
|
|
|
+ field: "action",
|
|
|
+ },
|
|
|
+])
|
|
|
+const queryParams = ref<any>({ monitoring_type: "", name: "", operate_status: "" })
|
|
|
+const reset = () => {
|
|
|
+ monitoring_type.value = ""
|
|
|
+ name.value = ""
|
|
|
+ operate_status.value = ""
|
|
|
+ queryParams.value = {
|
|
|
+ monitoring_type: "",
|
|
|
+ name: "",
|
|
|
+ operate_status: "",
|
|
|
+ }
|
|
|
+}
|
|
|
+const dySearchSelectStyle = { width: "120px" }
|
|
|
+const statusOption = ref<Array<any>>([
|
|
|
+ {
|
|
|
+ value: "0",
|
|
|
+ label: "营业",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: "1",
|
|
|
+ label: "间休",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: "2",
|
|
|
+ label: "停业",
|
|
|
+ },
|
|
|
+])
|
|
|
+//只放增改传到后台的共用参数,其余需要modal显示的参数另外定义
|
|
|
+const emptyData = {
|
|
|
+ company_id: [] as any[],
|
|
|
+ operate_status: 0,
|
|
|
+}
|
|
|
+const formData = ref<any>({
|
|
|
+ company_id: 0,
|
|
|
+ operate_status: 0,
|
|
|
+ name: "",
|
|
|
+ monitoring_type_name: "",
|
|
|
+ facilities_num: 0,
|
|
|
+ org_name: "",
|
|
|
+})
|
|
|
+const items: Array<VbFormItem> = [
|
|
|
+ {
|
|
|
+ field: "name",
|
|
|
+ label: "企业名称:",
|
|
|
+ required: false,
|
|
|
+ component: "innerText",
|
|
|
+ span: 24,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "org_name",
|
|
|
+ label: "企业地址:",
|
|
|
+ required: false,
|
|
|
+ component: "innerText",
|
|
|
+ span: 24,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "facilities_num",
|
|
|
+ labelWidth: 90,
|
|
|
+ label: "监测点数量:",
|
|
|
+ component: "innerText",
|
|
|
+ span: 24,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: "operate_status",
|
|
|
+ label: "当前状态:",
|
|
|
+ class: "w-100",
|
|
|
+ component: ElSelect,
|
|
|
+ span: 24,
|
|
|
+ data: [
|
|
|
+ {
|
|
|
+ value: 0,
|
|
|
+ label: "营业",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 1,
|
|
|
+ label: "间休",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 2,
|
|
|
+ label: "停业",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+]
|
|
|
+const modal = ref<any>()
|
|
|
+//定义需要操作的类型
|
|
|
+const opreationType = ref<"A" | "U" | "D" | "BU">("A")
|
|
|
+const modalTitlePrefix = computed(() => {
|
|
|
+ return opreationType.value == "A" ? "新增" : opreationType.value == "U" || opreationType.value == "BU" ? "编辑" : ""
|
|
|
+})
|
|
|
+
|
|
|
+function edit(row: any) {
|
|
|
+ opreationType.value = "U"
|
|
|
+ isBatch.value = false
|
|
|
+ formData.value = Object.assign({}, row)
|
|
|
+ nextTick(() => {
|
|
|
+ modal.value.show()
|
|
|
+ })
|
|
|
+}
|
|
|
+const selectedItems = ref<Array<any>>([])
|
|
|
+
|
|
|
+function onSave() {
|
|
|
+ dialog.confirm("确认更新企业状态?", "提交确认", (isConfirmed: any) => {
|
|
|
+ if (isConfirmed.isConfirmed) {
|
|
|
+ emptyData.company_id = [Number(formData.value.company_id)]
|
|
|
+ if (isBatch.value) {
|
|
|
+ console.log("selectedItems", selectedItems.value)
|
|
|
+ emptyData.company_id = selectedItems.value
|
|
|
+ }
|
|
|
+ emptyData.operate_status = Number(formData.value.operate_status)
|
|
|
+ Rs.post("sys/company/updateCompanyStatus", { data: emptyData }).then(() => {
|
|
|
+ table.value.search()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+const isBatch = ref(false)
|
|
|
+const edit_status = () => {
|
|
|
+ opreationType.value = "BU"
|
|
|
+ isBatch.value = true
|
|
|
+ if (selectedItems.value.length == 0) {
|
|
|
+ toast.error("请选择要操作的数据", {
|
|
|
+ position: "center",
|
|
|
+ timer: 1200,
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ formData.value = Object.assign({}, { operate_status: 0 })
|
|
|
+ modal.value.show()
|
|
|
+}
|
|
|
+const onItemsAllChange = (isChecked: boolean, rows: Array<any>) => {
|
|
|
+ selectedItems.value = rows
|
|
|
+}
|
|
|
+</script>
|
|
|
+<template>
|
|
|
+ <VbDataTable
|
|
|
+ ref="table"
|
|
|
+ :header="cols"
|
|
|
+ url="sys/company/selectStatusForPage"
|
|
|
+ method="post"
|
|
|
+ :query-params="queryParams"
|
|
|
+ :has-checkbox="true"
|
|
|
+ :check-multiple="true"
|
|
|
+ checkbox-field="company_id"
|
|
|
+ v-model:selectedItems="selectedItems"
|
|
|
+ @on-items-all-change="onItemsAllChange"
|
|
|
+ >
|
|
|
+ <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="w-100" v-model="name" placeholder="请输入企业名称" :size="size" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="mb-0 me-5 align-items-center" label="状态:">
|
|
|
+ <DySelect
|
|
|
+ v-model="operate_status"
|
|
|
+ class="w-100"
|
|
|
+ :style="dySearchSelectStyle"
|
|
|
+ :staticOptions="statusOption"
|
|
|
+ placeholder="请选择"
|
|
|
+ :size="size"
|
|
|
+ ></DySelect>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="mb-0 me-5 align-items-center" label="监测类型">
|
|
|
+ <DySelect
|
|
|
+ class="w-100"
|
|
|
+ v-model="monitoring_type"
|
|
|
+ :style="dySearchSelectStyle"
|
|
|
+ url="sys/dict/getCompanyMonitoringType"
|
|
|
+ placeholder="请选择"
|
|
|
+ :size="size"
|
|
|
+ ></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-default" @click="reset">重置</el-button>
|
|
|
+ <el-button
|
|
|
+ class="ms-3 mt-0 btn btn-sm btn-primary"
|
|
|
+ :disabled="selectedItems.length == 0"
|
|
|
+ @click="edit_status"
|
|
|
+ >
|
|
|
+ 修改状态
|
|
|
+ </el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </template>
|
|
|
+ <template #action="{ row }">
|
|
|
+ <div class="text-danger text-center">
|
|
|
+ <span class="table-action" @click="edit(row)">查看详情</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </VbDataTable>
|
|
|
+ <VbModal
|
|
|
+ v-model:modal="modal"
|
|
|
+ :form-data="formData"
|
|
|
+ :form-items="items"
|
|
|
+ backdrop="static"
|
|
|
+ modal-dialog-style="width: 400px"
|
|
|
+ :keyboard="false"
|
|
|
+ :title-prefix="modalTitlePrefix"
|
|
|
+ title="企业运营状态"
|
|
|
+ form-label-width="90"
|
|
|
+ modal-body-class="px-10"
|
|
|
+ @confirm="onSave"
|
|
|
+ >
|
|
|
+ <template v-if="isBatch" #form>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="企业名称:">
|
|
|
+ <el-select v-model="formData.operate_status" placeholder="请输入企业名称" :size="size">
|
|
|
+ <el-option
|
|
|
+ v-for="(select, selectIndex) in items[3].data"
|
|
|
+ :key="selectIndex"
|
|
|
+ :value="select.value"
|
|
|
+ :label="select.label"
|
|
|
+ :class="select.class"
|
|
|
+ :style="select.style"
|
|
|
+ :disabled="select.disabled"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </template>
|
|
|
+ </VbModal>
|
|
|
+</template>
|