electripper-v2-ui/src/views/bst/areaJoin/index.vue
2025-04-16 15:02:17 +08:00

295 lines
9.5 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="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="运营区" prop="areaName">
<el-input
v-model="queryParams.areaName"
placeholder="请输入运营区"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择类型" clearable @change="handleQuery">
<template v-for="dict in dict.type.area_join_type">
<el-option
v-if="types.includes(dict.value)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</template>
</el-select>
</el-form-item>
<el-form-item label="用户" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input
v-model="queryParams.remark"
placeholder="请输入备注"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-has-permi="['bst:areaJoin:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-has-permi="['bst:areaJoin:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-has-permi="['bst:areaJoin:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="areaJoinList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="onSortChange">
<el-table-column type="selection" width="55" align="center" />
<template v-for="column of showColumns">
<el-table-column
:key="column.key"
:label="column.label"
:prop="column.key"
:align="column.align"
:min-width="column.minWidth"
:sort-orders="orderSorts"
:sortable="column.sortable"
:show-overflow-tooltip="column.overflow"
:width="column.width"
>
<template slot-scope="d">
<template v-if="column.key === 'id'">
{{d.row[column.key]}}
</template>
<template v-else-if="column.key === 'userName'">
{{d.row.userName | dv}}
<template v-if="d.row.remark">{{d.row.remark}}</template>
<dict-tag :options="dict.type.area_join_type" :value="d.row.type" size="mini"/>
</template>
<template v-else-if="column.key === 'point'">
<span>{{d.row[column.key] | fix2 | dv}} %</span>
</template>
<template v-else-if="column.key === 'permissions'">
<dict-tag :options="dict.type.area_join_permission" :value="d.row[column.key]" size="mini"/>
</template>
<template v-else>
{{d.row[column.key]}}
</template>
</template>
</el-table-column>
</template>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-has-permi="['bst:areaJoin:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-has-permi="['bst:areaJoin:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 引入运营加盟编辑对话框组件 -->
<area-join-edit-dialog
:visible.sync="dialogVisible"
:id="editId"
:init-data="initData"
@success="getList"
:types="types"
/>
</div>
</template>
<script>
import { listAreaJoin, delAreaJoin } from "@/api/bst/areaJoin";
import { $showColumns } from '@/utils/mixins';
import AreaJoinEditDialog from './components/AreaJoinEditDialog';
// 默认排序字段
const defaultSort = {
prop: "createTime",
order: "descending"
}
export default {
name: "AreaJoin",
mixins: [$showColumns],
dicts: ['area_join_type', 'area_join_permission'],
components: { AreaJoinEditDialog },
data() {
return {
// 字段列表
columns: [
{key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
{key: 'userName', visible: true, label: '用户', minWidth: null, sortable: true, overflow: false, align: 'left', width: null},
{key: 'areaName', visible: true, label: '运营区', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'point', visible: true, label: '分成比例', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
{key: 'permissions', visible: true, label: '权限', minWidth: null, sortable: false, overflow: false, align: 'center', width: null},
{key: 'createName', visible: true, label: '创建人', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'createTime', visible: true, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "180"},
],
// 排序方式
orderSorts: ['ascending', 'descending', null],
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 运营加盟表格数据
areaJoinList: [],
// 编辑id
editId: null,
// 初始数据
initData: {},
// 对话框显示状态
dialogVisible: false,
defaultSort,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 20,
orderByColumn: defaultSort.prop,
isAsc: defaultSort.order,
id: null,
type: null,
areaId: null,
userId: null,
remark: null,
createId: null
},
types: [], // 类型列表
};
},
created() {
this.types = this.$route.query?.types?.split(',') || [];
this.queryParams.types = this.types;
this.getList();
},
methods: {
/** 当排序按钮被点击时触发 **/
onSortChange(column) {
if (column.order == null) {
this.queryParams.orderByColumn = defaultSort.prop;
this.queryParams.isAsc = defaultSort.order;
} else {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
}
this.getList();
},
/** 查询运营加盟列表 */
getList() {
this.loading = true;
listAreaJoin(this.queryParams).then(response => {
this.areaJoinList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.editId = null;
this.initData = {};
this.dialogVisible = true;
},
/** 修改按钮操作 */
handleUpdate(row) {
this.editId = row.id || this.ids;
this.initData = {};
this.dialogVisible = true;
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除运营加盟编号为"' + ids + '"的数据项?').then(function() {
return delAreaJoin(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('bst/areaJoin/export', {
...this.queryParams
}, `areaJoin_${new Date().getTime()}.xlsx`)
}
}
};
</script>