管理后台增加分佣查询

This commit is contained in:
lccsw
2025-12-10 14:54:46 +08:00
parent fd6ce7c799
commit a7af170360
3 changed files with 344 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
import request from '@/utils/request';
export async function pageCmmssn(params) {
const res = await request.get('/cmmssn/cmmssn/page', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* 导出
* @param params 查询条件
*/
export async function exportCmmssn(params) {
const res = await request.get('/cmmssn/cmmssn/export', {
params
});
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
export async function updateCmmssnSend(data) {
const res = await request.put('/cmmssn/cmmssn', data);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
@@ -0,0 +1,90 @@
<!-- 搜索表单 -->
<template>
<el-form
label-width="77px"
class="ele-form-search"
@keyup.enter.native="search"
@submit.native.prevent
>
<el-row :gutter="15">
<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
<el-form-item label="坐席:">
<el-input clearable v-model="where.username" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
<el-form-item label="类型:">
<el-select
clearable
v-model="where.type"
placeholder="请选择"
class="ele-fluid"
>
<el-option label="线索" :value="1"/>
<el-option label="订单" :value="2"/>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
<el-form-item label="是否发放:">
<el-select
clearable
v-model="where.ifSend"
placeholder="请选择"
class="ele-fluid"
>
<el-option label="否" :value="0"/>
<el-option label="是" :value="1"/>
</el-select>
</el-form-item>
</el-col>
<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
<div class="ele-form-actions">
<el-button
type="primary"
icon="el-icon-search"
class="ele-btn-icon"
@click="search"
>
查询
</el-button>
<el-button @click="reset">重置</el-button>
</div>
</el-col>
</el-row>
</el-form>
</template>
<script>
export default {
data() {
// 默认表单数据
const defaultWhere = {
username: '',
type: '',
ifSend: ''
}
return {
// 表单数据
where: { ...defaultWhere }
}
},
computed: {
// 是否开启响应式布局
styleResponsive() {
return this.$store.state.theme.styleResponsive
}
},
methods: {
/* 搜索 */
search() {
this.$emit('search', this.where)
},
/* 重置 */
reset() {
this.where = { ...this.defaultWhere }
this.search()
}
}
}
</script>
+221
View File
@@ -0,0 +1,221 @@
<template>
<div class="ele-body">
<el-card shadow="never">
<!-- 搜索表单 -->
<cmmssn-search @search="reload"/>
<!-- 数据表格 -->
<ele-pro-table
ref="table"
:columns="columns"
:datasource="datasource"
:selection.sync="selection"
cache-key="systemUserTable"
>
<!-- 表头工具栏 -->
<template v-slot:toolbar>
<el-button
size="small"
type="primary"
icon="el-icon-download"
class="ele-btn-icon"
@click="exportData"
>
导出
</el-button>
</template>
<!-- 操作列 -->
<template v-slot:action="{ row }">
<el-link
v-if="row.ifSend!=='1'"
type="primary"
:underline="false"
@click="setSend(row)"
>
标记已发放
</el-link>
</template>
</ele-pro-table>
</el-card>
</div>
</template>
<script>
import CmmssnSearch from './components/cmmssn-search.vue'
import { pageCmmssn, exportCmmssn, updateCmmssnSend } from '@/api/cmmssn/cmmssn'
import { utils, writeFile } from 'xlsx'
export default {
name: 'cmmssn',
components: { CmmssnSearch },
data() {
return {
// 表格列配置
columns: [
{
prop: 'mobile',
label: '线索',
width: 120,
align: 'center',
showOverflowTooltip: true,
fixed: 'left'
},
{
prop: 'bizName',
label: '解锁门店',
showOverflowTooltip: true,
width: 120,
align: 'center'
},
{
prop: 'centerName',
label: '中心',
showOverflowTooltip: true,
minWidth: 110,
align: 'center'
},
{
prop: 'orgName',
label: '机构',
showOverflowTooltip: true,
minWidth: 80,
align: 'center'
},
{
prop: 'userName',
label: '坐席',
showOverflowTooltip: true,
minWidth: 110,
align: 'center'
},
{
prop: 'userCode',
label: '坐席工号',
showOverflowTooltip: true,
minWidth: 110,
align: 'center'
},
{
prop: 'typeCn',
label: '类型',
showOverflowTooltip: true,
minWidth: 80,
align: 'center'
},
{
prop: 'unlockTime',
label: '解锁时间',
showOverflowTooltip: true,
minWidth: 110,
align: 'center',
formatter: (_row, _column, cellValue) => {
return this.$util.toDateString(cellValue)
}
},
{
prop: 'orderTime',
label: '订单时间',
showOverflowTooltip: true,
minWidth: 110,
align: 'center',
formatter: (_row, _column, cellValue) => {
return this.$util.toDateString(cellValue)
}
},
{
prop: 'money',
label: '佣金',
align: 'center',
width: 80,
resizable: false,
showOverflowTooltip: true
},
{
prop: 'sendCn',
label: '是否发放',
showOverflowTooltip: true,
minWidth: 80,
align: 'center'
},
{
columnKey: 'action',
label: '操作',
width: 100,
align: 'center',
resizable: false,
slot: 'action',
showOverflowTooltip: true,
fixed: 'right'
}
],
// 表格选中数据
selection: [],
// 当前编辑数据
current: null,
// 是否显示编辑弹窗
showEdit: false,
// 是否显示导入弹窗
showImport: false,
title: '用户佣金'
}
},
methods: {
/* 表格数据源 */
datasource({ page, limit, where, order }) {
return pageCmmssn({ ...where, ...order, page, limit })
},
/* 刷新表格 */
reload(where) {
this.$refs.table.reload({ page: 1, where: where })
},
/* 打开编辑弹窗 */
openEdit(row) {
this.current = row
this.showEdit = true
},
exportData() {
const loading = this.$loading({ lock: true })
this.$refs.table.doRequest(({ where, order }) => {
exportCmmssn({ ...where, ...order })
.then((data) => {
loading.close()
const array = [data.columns]
data.list.forEach((d) => {
let arrayItem = []
for (let key in d) {
arrayItem.push(d[key])
}
array.push(arrayItem)
})
writeFile(
{
SheetNames: ['Sheet1'],
Sheets: {
Sheet1: utils.aoa_to_sheet(array)
}
},
this.title + '.xlsx'
)
})
.catch((e) => {
loading.close()
this.$message.error(e.message)
})
})
},
setSend(row) {
this.$confirm('确定要标记【' + row['mobile'] + '】已发放吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
updateCmmssnSend({ id: row.id }).then((res) => {
this.$message.success(res)
this.reload()
}).catch((e) => {
this.$message.error(e.message)
})
})
}
}
}
</script>