Files
jczxw-java/src/views/water/river/dict/autonomous.vue
2021-11-22 22:22:25 +08:00

483 lines
19 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="ele-body">
<a-card :bordered="false">
<a-form
:model="where"
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
>
<a-row>
<a-col :lg="6" :md="12" :sm="24" :xs="24">
<a-form-item label="年份:">
<a-select v-model:value="where.year" allow-clear show-search>
<a-select-option
v-for="(item) in yearOptions"
:key="item.value"
>{{ item.label }}
</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :sm="24" :xs="24">
<a-space>
<a-button type="primary" @click="reload">查询</a-button>
<a-button @click="reset">重置</a-button>
</a-space>
</a-col>
</a-row>
<a-row>
</a-row>
</a-form>
<a-modal
v-model:visible="showNYear"
:title="'批量复制'"
:confirm-loading="loading"
:body-style="{ paddingBottom: '8px' }"
@ok="copyBatch"
>
<a-form
ref="form"
:model="form"
:rules="rules"
:label-col="{ md: { span: 6 }, sm: { span: 24 } }"
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
>
<a-form-item label="新年份" name="nYear">
<a-input-number autonomousWaterFunctionAreaPointId="inputNumber" v-model:value="nYear" :min="1970" :max="2050" />
</a-form-item>
</a-form>
</a-modal>
<a-modal
v-model:visible="showEdit"
:title="form.autonomousWaterFunctionAreaPointId !== undefined ? '修改' : '添加'"
:confirm-loading="loading"
:width="500"
:body-style="{ paddingBottom: '8px' }"
@ok="save"
>
<a-form
ref="form"
:model="form"
:rules="rules"
:label-col="{ md: { span: 6 }, sm: { span: 24 } }"
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
>
<a-form-item label="年份" name="year">
<a-input-number v-model:value="form.year" :min="1970" :max="2050" />
</a-form-item>
<a-form-item label="考核城市" name="assessmentCity">
<a-input v-model:value="form.assessmentCity" placeholder="请输入考核城市" allow-clear />
</a-form-item>
<a-form-item label="水资源一级区名称" name="waterResourcesFirstLevelZoneName">
<a-input v-model:value="form.waterResourcesFirstLevelZoneName" placeholder="请输入水资源一级区名称" allow-clear />
</a-form-item>
<a-form-item label="水资源二级区名称" name="waterResourcesTwoLevelZoneName" >
<a-input v-model:value="form.waterResourcesTwoLevelZoneName" placeholder="请输入水资源二级区名称" allow-clear />
</a-form-item>
<a-form-item label="水资源三级区名称" name="waterResourcesThreeLevelZoneName">
<a-input v-model:value="form.waterResourcesThreeLevelZoneName" placeholder="请输入水资源三级区名称" allow-clear />
</a-form-item>
<a-form-item label="河流、湖库名称" name="riverLakeLibrary">
<a-input v-model:value="form.riverLakeLibrary" placeholder="请输入河流、湖库名称" allow-clear />
</a-form-item>
<a-form-item label="二级水功能区名称" name="secondLevelWaterFunctionZoneName" >
<a-input v-model:value="form.secondLevelWaterFunctionZoneName" placeholder="请输入二级水功能区名称" allow-clear />
</a-form-item>
<a-form-item label="水功能区编码" name="waterFunctionalAreaCode">
<a-input v-model:value="form.waterFunctionalAreaCode" placeholder="请输入水功能区编码" allow-clear />
</a-form-item>
<a-form-item label="水功能区等级" name="waterFunctionalAreaLevel">
<a-input v-model:value="form.waterFunctionalAreaLevel" placeholder="请输入水功能区等级" allow-clear />
</a-form-item>
<a-form-item label="水功能区类型" name="waterFunctionalAreaType">
<a-input v-model:value="form.waterFunctionalAreaType" placeholder="请输入水功能区类型" allow-clear />
</a-form-item>
<a-form-item label="水域类型" name="basinType">
<a-input v-model:value="form.basinType" placeholder="请输入水域类型" allow-clear />
</a-form-item>
<a-form-item label="断面名称" name="sectionName">
<a-input v-model:value="form.sectionName" placeholder="请输入断面名称" allow-clear />
</a-form-item>
<a-form-item label="水质目标" name="waterQualityGoal">
<a-input v-model:value="form.waterQualityGoal" placeholder="请输入水质目标" allow-clear />
</a-form-item>
<a-form-item label="河流长度Km" name="riverLength">
<a-input v-model:value="form.riverLength" placeholder="请输入河流长度" allow-clear />
</a-form-item>
<a-form-item label="湖泊面积km2" name="lakeArea">
<a-input v-model:value="form.lakeArea" placeholder="请输入湖泊面积km2" allow-clear />
</a-form-item>
<a-form-item label="备注" name="remark">
<a-input
v-model:value="form.remark"
placeholder="备注"
allow-clear
/>
</a-form-item>
<!-- <a-form-item label="排序" name="sortNumber">-->
<!-- <a-input-number :step="1" :precision="0" v-model:value="form.sortNumber" />-->
<!-- </a-form-item>-->
</a-form>
</a-modal>
<!-- 表格 -->
<ele-pro-table
v-model:selection="selectionList"
ref="table"
row-key="autonomousWaterFunctionAreaPointId"
:datasource="url"
:columns="columns"
:where="where"
:scroll="{ x: 'max-content' }"
@done="(d) => (data = d.data)"
>
<template #toolbar>
<a-space>
<a-button @click="openEdit" type="primary">新增</a-button>
<a-dropdown>
<template #overlay>
<a-menu @click="setCYear">
<a-menu-item v-for="item in yearOptions" :key="item.value">
{{ item.label }}
</a-menu-item>
</a-menu>
</template>
<a-button>
批量复制
<DownOutlined/>
</a-button>
</a-dropdown>
<a-popconfirm
:disabled="selectionList.length == 0"
:title="`确认删除${selectionList.length}条数据吗?`"
ok-text="Yes"
cancel-text="No"
@confirm="removeBatch"
>
<a-button
:disabled="selectionList.length == 0"
type="primary"
ghost
danger
>删除
</a-button>
</a-popconfirm>
<a-button @click="exportData" type="primary">导出</a-button>
</a-space>
</template>
<template #action="{ record }">
<a-space>
<a-button
@click="openEdit(record)"
type="primary"
shape="round"
size="small"
>修改</a-button
>
<a-popconfirm
:title="`确认删除这条数据吗?`"
ok-text="Yes"
cancel-text="No"
@confirm="remove(record)"
>
<a-button type="primary" danger shape="round" size="small"
>删除</a-button
>
</a-popconfirm>
</a-space>
</template>
</ele-pro-table>
</a-card>
</div>
<!-- 编辑弹窗 -->
</template>
<script>
// import _ from "lodash";
import {
listAllUrl,
saveStandard,
updateStandard,
removeStandard,
removeBatchStandard,
copyBatchStandard,
getColumnOptions
} from "@/api/ecology/water/river-autonomous";
import {DownOutlined} from '@ant-design/icons-vue';
import XLSX from "xlsx";
// import { message } from 'ant-design-vue';
// import moment from "moment";
export default {
name: "autonomous",
components: {DownOutlined},
data() {
return {
data: [],
// 表格数据接口
url: listAllUrl,
selection: [],
// 表格列配置
columns: [
{title: "年份", dataIndex: "year",sorter: true,},
{
title: "考核城市",
dataIndex: "assessmentCity",
},
{
title: "水资源一级区名称",
dataIndex: "waterResourcesFirstLevelZoneName",
},
{
title: "水资源二级级区名称",
dataIndex: "waterResourcesTwoLevelZoneName",
},
{
title: "水资源三级区名称",
dataIndex: "waterResourcesThreeLevelZoneName",
// customRender: ({text})=>{
// return text!=undefined? text.toFixed(1):undefined
// }
},
{
title: "河流、湖库名称",
dataIndex: "riverLakeLibrary",
},
{
title: "二级水功能区名称",
dataIndex: "secondLevelWaterFunctionZoneName",
},
{
title: "水功能区编码",
dataIndex: "waterFunctionalAreaCode",
},
{
title: "水功能区等级",
dataIndex: "waterFunctionalAreaLevel",
},
{
title: "水功能区类型",
dataIndex: "waterFunctionalAreaType",
},
{
title: "水域类型",
dataIndex: "basinType",
},
{
title: "断面名称",
dataIndex: "sectionName",
},
{
title: "水质目标",
dataIndex: "waterQualityGoal",
},
{
title: "河流长度Km",
dataIndex: "riverLength",
},
{
title: "湖泊面积km2",
dataIndex: "lakeArea",
},
{
title: "备注",
dataIndex: "remark",
},
{
title: "操作",
key: "action",
width: 150,
align: "center",
fixed: "right",
slots: {
customRender: "action",
},
},
],
// 表格搜索条件
where: {},
// 表格选中数据
selectionList: [],
// 是否显示编辑弹窗
showEdit: false,
// 表单数据
form: {},
loading: false,
rules: {
year: [{required: true, message: '请输入年份'}],
waterQualityGoal:[{
required:true,message: "请输入考核目标",
}]
},
yearOptions: [],
showNYear:false,
cYear: undefined,
nYear:undefined,
};
},
mounted() {
this.getOptions();
},
methods: {
minLeqChange(e){
console.log(e)
},
/* 刷新表格 */
reload() {
this.$refs.table.reload({
where: this.where,
});
},
/* 重置搜索 */
reset() {
this.where = {};
this.reload();
},
/* 打开编辑弹窗 */
openEdit(row) {
// cloneRecord.mi
this.form = Object.assign({}, row);
this.showEdit = true;
this.$nextTick(() => {
this.$refs.form.clearValidate(); // 清除表单验证信息
});
},
async save() {
await this.$refs.form.validate();
// const {minLeq,maxLeq } = this.form;
// if(minLeq == undefined && maxLeq == undefined ){
// message.error("最小值和最大值请至少填写一项!")
// return;
// }
const hide = this.$message.loading('请求中..', 0);
const form = this.form;
if (form.autonomousWaterFunctionAreaPointId) {
updateStandard(form)
.then((res) => {
if (res.data.code == 0) {
this.showEdit = false;
this.$message.success(res.data.msg);
this.reload();
this.getOptions();
} else {
this.$message.error(res.data.msg);
}
})
.catch((error) => {
this.$message.error(error.message);
})
.finally(() => {
hide();
});
} else {
saveStandard(form)
.then((res) => {
if (res.data.code == 0) {
this.showEdit = false;
this.$message.success(res.data.msg);
this.reload();
this.getOptions();
} else {
this.$message.error(res.data.msg);
}
})
.catch((error) => {
this.$message.error(error.message);
})
.finally(() => {
hide();
});
}
},
/* 删除单个 */
remove(row) {
const hide = this.$message.loading('请求中..', 0);
removeStandard(row.autonomousWaterFunctionAreaPointId).then((res) => {
hide();
if (res.data.code === 0) {
this.$message.success(res.data.msg);
this.reload();
} else {
this.$message.error(res.data.msg);
}
}).catch(e => {
hide();
this.$message.error(e.message);
})
},
/* 批量删除 */
removeBatch() {
const hide = this.$message.loading('请求中..', 0);
const ids = this.selectionList.map((item) => item.autonomousWaterFunctionAreaPointId);
removeBatchStandard(ids).then((res) => {
if (res.data.code === 0) {
this.$message.success(res.data.msg);
this.reload();
} else {
this.$message.error(res.data.msg);
}
}).catch(e => {
this.$message.error(e.message);
}).finally(() => {
hide();
})
},
getOptions(){
getColumnOptions("year").then(res => {
console.log(res)
if (res.data.code == 0) {
this.yearOptions = res.data.data.map(item => {
return {
label: item,
value: item
}
})
}
})
},
setCYear(e){
this.cYear = e.key;
this.showNYear = true;
},
copyBatch(){
const hide = this.$message.loading('请求中..', 0);
copyBatchStandard({cyear:Number(this.cYear),nyear:this.nYear}).then(res=>{
if (res.data.code === 0) {
this.$message.success(res.data.msg);
this.reload();
this.getOptions();
} else {
this.$message.error(res.data.msg);
}
this.showNYear = false;
}).catch(e => {
this.$message.error(e.message);
}).finally(() => {
hide();
})
},
exportData(){
const columns = this.columns.filter(item=>item.dataIndex);
const arr = [];
const th = columns.map((item) => item.title);
arr.push(th);
this.data.forEach((d) => {
const td = columns.map((item) => d[item.dataIndex]);
arr.push(td);
});
let sheet = XLSX.utils.aoa_to_sheet(arr);
this.$util.exportSheet(XLSX, sheet, new Date().getTime().toString());
}
},
};
</script>
<style scoped lang="less">
</style>