parent
2a2203eed9
commit
9279a7d6cb
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* @Author: ch
|
||||
* @Date: 2022-07-04 15:20:02
|
||||
* @LastEditors: ch
|
||||
* @LastEditTime: 2022-07-04 15:50:39
|
||||
* @Description: file content
|
||||
*/
|
||||
import request from '@/utils/request.js';
|
||||
export const getMerchantList = (params) => {
|
||||
return request({
|
||||
url: '/payCenter/mchInfo/page',
|
||||
method: 'get',
|
||||
params,
|
||||
});
|
||||
};
|
||||
export const getMerchantPlatform = (params) => {
|
||||
return request({
|
||||
url: '/payCenter/mchInfo/mchCode',
|
||||
method: 'get',
|
||||
params,
|
||||
});
|
||||
};
|
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* @Author: ch
|
||||
* @Date: 2022-07-04 15:21:30
|
||||
* @LastEditors: ch
|
||||
* @LastEditTime: 2022-07-04 16:22:14
|
||||
* @Description: file content
|
||||
*/
|
||||
import * as api from '@/api/pay/merchant.js';
|
||||
const state = {
|
||||
list: [],
|
||||
detail: {},
|
||||
total: 0,
|
||||
opts: {
|
||||
status: [
|
||||
{
|
||||
value: false,
|
||||
label: '启用',
|
||||
},
|
||||
{
|
||||
value: true,
|
||||
label: '禁用',
|
||||
},
|
||||
],
|
||||
platform: [],
|
||||
},
|
||||
};
|
||||
const getters = {};
|
||||
const mutations = {
|
||||
setList: (state, data) => (state.list = data),
|
||||
setPlatform: (state, data) => (state.opts.platform = data),
|
||||
setTotal: (state, data) => (state.total = data),
|
||||
setDetail: (state, data) => (state.detail = data),
|
||||
};
|
||||
const actions = {
|
||||
async search({ rootGetters, commit }, params) {
|
||||
let data = { ...params };
|
||||
let pagingCode = params.pagingCode;
|
||||
const res = await api.getMerchantList({
|
||||
...rootGetters['local/page'](pagingCode),
|
||||
...data,
|
||||
});
|
||||
if (res) {
|
||||
commit('setList', res?.records || []);
|
||||
commit('setTotal', res?.total || 0);
|
||||
}
|
||||
},
|
||||
async getMerchantPlatform({ commit }, params) {
|
||||
const res = await api.getMerchantPlatform();
|
||||
if (res) {
|
||||
commit('setPlatform', res || []);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export default {
|
||||
state,
|
||||
getters,
|
||||
mutations,
|
||||
actions,
|
||||
};
|
@ -0,0 +1,166 @@
|
||||
<!--
|
||||
* @Author: ch
|
||||
* @Date: 2022-06-15 17:29:32
|
||||
* @LastEditors: ch
|
||||
* @LastEditTime: 2022-07-04 16:12:49
|
||||
* @Description: file content
|
||||
-->
|
||||
<template>
|
||||
<table-list
|
||||
v-loading="loading"
|
||||
:operation="['search']"
|
||||
:code="_pagingCode"
|
||||
:config="config"
|
||||
:data="list"
|
||||
:total="total"
|
||||
@search="handleSearch"
|
||||
:reset="handleReset"
|
||||
>
|
||||
<template #search>
|
||||
<el-form inline>
|
||||
<el-form-item label="商户名称">
|
||||
<el-input v-model="state.condition.mchName" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商户ID">
|
||||
<el-input v-model="state.condition.mchId" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商户平台">
|
||||
<el-select v-model="state.condition.mchCode">
|
||||
<el-option
|
||||
v-for="(item, idx) in opts.platform"
|
||||
:key="idx"
|
||||
:label="item.text"
|
||||
:value="item.code"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="商户状态">
|
||||
<el-select v-model="state.condition.isDisabled">
|
||||
<el-option
|
||||
v-for="(item, idx) in opts.status"
|
||||
:key="idx"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<template #operation="{ selection }">
|
||||
<div class="batch-show-hide" v-if="selection.length">
|
||||
<el-select v-model="allShowHideVal">
|
||||
<el-option
|
||||
v-for="(item, idx) in opts.isShow"
|
||||
:key="idx"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
<el-button type="primary" @click="handleAllShowHide(selection)">确定</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</table-list>
|
||||
</template>
|
||||
<script setup lang="jsx">
|
||||
import ElButton from '@/components/extra/ElButton.vue';
|
||||
import ElSwitch from '@/components/extra/ElSwitch.vue';
|
||||
const router = useRouter();
|
||||
const store = useStore();
|
||||
const loading = ref(false);
|
||||
// 页面字典表数据
|
||||
const opts = computed(() => store.state.merchant.opts);
|
||||
// 表格数据
|
||||
const list = computed(() => _.cloneDeep(store.state.merchant.list));
|
||||
const total = computed(() => store.state.merchant.total);
|
||||
// 分页code需要使用此code到全局sotre取分页参数
|
||||
const _pagingCode = 'PayMerchantManagement';
|
||||
// 表格查询参数
|
||||
const _condition = {
|
||||
mchCode: '',
|
||||
mchId: '',
|
||||
mchName: '',
|
||||
isDisabled: null,
|
||||
};
|
||||
const state = reactive({
|
||||
condition: { ..._condition },
|
||||
});
|
||||
|
||||
/**
|
||||
* 搜索
|
||||
*/
|
||||
const handleSearch = async () => {
|
||||
loading.value = true;
|
||||
await store.dispatch('merchant/search', { ...state.condition, pagingCode: _pagingCode });
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
store.dispatch('merchant/getMerchantPlatform');
|
||||
onActivated(handleSearch);
|
||||
/**
|
||||
* 重置
|
||||
*/
|
||||
const handleReset = () => {
|
||||
state.condition = { ..._condition };
|
||||
};
|
||||
|
||||
const config = reactive({
|
||||
columns: [
|
||||
{
|
||||
label: '商户名称',
|
||||
align: 'left',
|
||||
prop: 'mchName',
|
||||
},
|
||||
{
|
||||
label: '商户ID',
|
||||
align: 'left',
|
||||
prop: 'mchId',
|
||||
},
|
||||
{
|
||||
label: '商户平台',
|
||||
width: 180,
|
||||
slots: {
|
||||
default: ({ row }) => ({ opts }),
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '商户状态',
|
||||
width: 120,
|
||||
prop: 'isDisabledDesc',
|
||||
},
|
||||
{
|
||||
label: '创建时间',
|
||||
prop: 'createTime',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
label: '操作',
|
||||
width: 70,
|
||||
slots: {
|
||||
default: ({ row }) => (
|
||||
<ElButton type="text" onClick={() => handleDetail(row.id)}>
|
||||
查看
|
||||
</ElButton>
|
||||
),
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.batch-show-hide {
|
||||
margin-left: 20px;
|
||||
}
|
||||
:deep(.row-ellipsis) {
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
}
|
||||
:deep(.ctx-link) {
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,242 @@
|
||||
<!--
|
||||
* @Author: ch
|
||||
* @Date: 2022-06-15 17:29:32
|
||||
* @LastEditors: ch
|
||||
* @LastEditTime: 2022-07-04 11:38:11
|
||||
* @Description: file content
|
||||
-->
|
||||
<template>
|
||||
<div>
|
||||
<table-list
|
||||
v-loading="loading"
|
||||
:operation="['search']"
|
||||
:code="_pagingCode"
|
||||
:config="config"
|
||||
:data="list"
|
||||
:total="total"
|
||||
@search="handleSearch"
|
||||
:reset="handleReset"
|
||||
>
|
||||
<template #search>
|
||||
<el-form inline>
|
||||
<el-form-item label="商户平台" prop="productName">
|
||||
<el-input v-model="state.condition.productName" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商户名称">
|
||||
<el-input v-model="state.condition.userName" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商户ID" prop="phone">
|
||||
<el-input v-model="state.condition.phone" />
|
||||
</el-form-item>
|
||||
<el-form-item label="商户状态" prop="status">
|
||||
<el-select v-model="state.condition.isShow">
|
||||
<el-option
|
||||
v-for="(item, idx) in opts.isShow"
|
||||
:key="idx"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<template #operation="{ selection }">
|
||||
<div class="batch-show-hide" v-if="selection.length">
|
||||
<el-select v-model="allShowHideVal">
|
||||
<el-option
|
||||
v-for="(item, idx) in opts.isShow"
|
||||
:key="idx"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
<el-button type="primary" @click="handleAllShowHide(selection)">确定</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</table-list>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="jsx">
|
||||
import ElButton from '@/components/extra/ElButton.vue';
|
||||
import ElSwitch from '@/components/extra/ElSwitch.vue';
|
||||
const router = useRouter();
|
||||
const store = useStore();
|
||||
const loading = ref(false);
|
||||
// 页面字典表数据
|
||||
const opts = computed(() => store.state.comment.opts);
|
||||
// 表格数据
|
||||
const list = computed(() => _.cloneDeep(store.state.comment.list));
|
||||
const total = computed(() => store.state.comment.total);
|
||||
// 分页code需要使用此code到全局sotre取分页参数
|
||||
const _pagingCode = 'CommentManagement';
|
||||
// 表格查询参数
|
||||
const _condition = {
|
||||
productName: '',
|
||||
userName: '',
|
||||
phone: '',
|
||||
scoreList: [],
|
||||
isShow: '',
|
||||
dateRange: '',
|
||||
};
|
||||
const state = reactive({
|
||||
condition: { ..._condition },
|
||||
});
|
||||
// 批量操作的值
|
||||
const allShowHideVal = ref(true);
|
||||
|
||||
// store.dispatch('comment/search', { pagingCode: _pagingCode });
|
||||
|
||||
/**
|
||||
* 搜索
|
||||
*/
|
||||
const handleSearch = async () => {
|
||||
loading.value = true;
|
||||
await store.dispatch('comment/search', { ...state.condition, pagingCode: _pagingCode });
|
||||
loading.value = false;
|
||||
};
|
||||
onActivated(handleSearch);
|
||||
/**
|
||||
* 重置
|
||||
*/
|
||||
const handleReset = () => {
|
||||
state.condition = { ..._condition };
|
||||
};
|
||||
/**
|
||||
* 单行操作显示隐藏
|
||||
*
|
||||
*/
|
||||
const handleShowHide = async (row) => {
|
||||
loading.value = true;
|
||||
try {
|
||||
await store.dispatch('comment/updateShow', {
|
||||
idList: [row.id],
|
||||
isShow: row.isShow,
|
||||
});
|
||||
} catch (e) {
|
||||
row.isShow = !row.isShow;
|
||||
}
|
||||
loading.value = false;
|
||||
};
|
||||
/**
|
||||
* 批量操作显示隐藏
|
||||
*/
|
||||
const handleAllShowHide = async (selection) => {
|
||||
loading.value = true;
|
||||
let val = allShowHideVal.value;
|
||||
try {
|
||||
await store.dispatch('comment/updateShow', {
|
||||
idList: selection.map((i) => i.id),
|
||||
isShow: val,
|
||||
});
|
||||
} catch (e) {
|
||||
val = !val;
|
||||
}
|
||||
loading.value = false;
|
||||
selection.forEach((item) => {
|
||||
item.isShow = val;
|
||||
});
|
||||
};
|
||||
const handleDetail = (id) => {
|
||||
router.push({
|
||||
name: 'CommentDetail',
|
||||
params: {
|
||||
id: id,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const config = reactive({
|
||||
columns: [
|
||||
{
|
||||
type: 'selection',
|
||||
fixed: 'left',
|
||||
width: 60,
|
||||
},
|
||||
{
|
||||
label: '商品名称',
|
||||
width: 180,
|
||||
align: 'left',
|
||||
slots: {
|
||||
default: ({ row }) => <div class="row-ellipsis">{row.productName}</div>,
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '评价内容',
|
||||
align: 'left',
|
||||
slots: {
|
||||
default: ({ row }) => (
|
||||
<div class="row-ellipsis ctx-link" onClick={() => handleDetail(row.id)}>
|
||||
{row.commentContent}
|
||||
</div>
|
||||
),
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '评分',
|
||||
prop: 'scoreName',
|
||||
width: 70,
|
||||
},
|
||||
{
|
||||
label: '用户',
|
||||
width: 120,
|
||||
slots: {
|
||||
default: ({ row }) => (
|
||||
<div>
|
||||
<p class="row-ellipsis">{row.userName}</p>
|
||||
<p>{row.phone}</p>
|
||||
</div>
|
||||
),
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '评价时间',
|
||||
prop: 'time',
|
||||
width: 120,
|
||||
slots: {
|
||||
default: ({ row }) => (
|
||||
<div>
|
||||
<p>{row.createTime.split(' ')[0]}</p>
|
||||
<p>{row.createTime.split(' ')[1]}</p>
|
||||
</div>
|
||||
),
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '显示',
|
||||
width: 80,
|
||||
slots: {
|
||||
default: ({ row }) => <ElSwitch v-model={row.isShow} onChange={() => handleShowHide(row)} />,
|
||||
},
|
||||
},
|
||||
{
|
||||
label: '操作',
|
||||
width: 70,
|
||||
slots: {
|
||||
default: ({ row }) => (
|
||||
<ElButton type="text" onClick={() => handleDetail(row.id)}>
|
||||
查看
|
||||
</ElButton>
|
||||
),
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.batch-show-hide {
|
||||
margin-left: 20px;
|
||||
}
|
||||
:deep(.row-ellipsis) {
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
}
|
||||
:deep(.ctx-link) {
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
}
|
||||
</style>
|
Loading…
Reference in new issue