update
This commit is contained in:
@@ -38,40 +38,44 @@ const reset = () => {
|
||||
|
||||
<div class="flex">
|
||||
<div class="flex-grow">
|
||||
<a-form class="AFORM">
|
||||
<div class="grid grid-cols-3">
|
||||
<a-form
|
||||
:auto-label-width="true"
|
||||
class="AFORM">
|
||||
<a-row :gutter="24">
|
||||
<template v-for="(item, index) in config" :key="index">
|
||||
<a-form-item :label="item.label">
|
||||
<template v-if="item.type === FROM_TYPE.INPUT">
|
||||
<a-input
|
||||
class="w-full"
|
||||
v-model:model-value="from[item.key]"
|
||||
:placeholder="item.placeholder">
|
||||
</a-input>
|
||||
</template>
|
||||
<a-col :span="item.span || 8">
|
||||
<a-form-item :label="item.label">
|
||||
<template v-if="item.type === FROM_TYPE.INPUT">
|
||||
<a-input
|
||||
class="w-full"
|
||||
v-model:model-value="from[item.key]"
|
||||
:placeholder="item.placeholder">
|
||||
</a-input>
|
||||
</template>
|
||||
|
||||
<template v-if="item.type === FROM_TYPE.SELECT">
|
||||
<x-select
|
||||
class="w-full"
|
||||
v-model:model-value="from[item.key]"
|
||||
:placeholder="item.placeholder"
|
||||
:api="item.api">
|
||||
</x-select>
|
||||
</template>
|
||||
<template v-if="item.type === FROM_TYPE.SELECT">
|
||||
<x-select
|
||||
class="w-full"
|
||||
v-model:model-value="from[item.key]"
|
||||
:placeholder="item.placeholder"
|
||||
:api="item.api">
|
||||
</x-select>
|
||||
</template>
|
||||
|
||||
<template v-if="item.type === FROM_TYPE.DATETIME">
|
||||
<a-range-picker
|
||||
class="w-full"
|
||||
@change="(v) => from[item.key] = `${v[0]}~${v[1]}`">
|
||||
</a-range-picker>
|
||||
</template>
|
||||
<template v-if="item.type === FROM_TYPE.DATETIME">
|
||||
<a-range-picker
|
||||
class="w-full"
|
||||
@change="(v) => from[item.key] = `${v[0]}~${v[1]}`">
|
||||
</a-range-picker>
|
||||
</template>
|
||||
|
||||
<template v-if="item.type === FROM_TYPE.CUSTOM">
|
||||
<slot :name="item.slotName" :scope="item"></slot>
|
||||
</template>
|
||||
</a-form-item>
|
||||
<template v-if="item.type === FROM_TYPE.CUSTOM">
|
||||
<slot :name="item.slotName" :scope="item"></slot>
|
||||
</template>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</template>
|
||||
</div>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
|
||||
@@ -86,7 +90,7 @@ const reset = () => {
|
||||
</a-button>
|
||||
<a-button @click="reset">
|
||||
<template #icon>
|
||||
<icon-refresh />
|
||||
<icon-refresh/>
|
||||
</template>
|
||||
重置
|
||||
</a-button>
|
||||
@@ -104,9 +108,13 @@ const reset = () => {
|
||||
text-align: left;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.AFORM {
|
||||
:deep(.arco-row) {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
:deep(.arco-form-item-label) {
|
||||
@apply whitespace-nowrap;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -38,7 +38,10 @@ function useTableQuery({
|
||||
pagination.pageSize = data.page;
|
||||
pagination.total = data.total;
|
||||
|
||||
callback && callback(data);
|
||||
callback && callback({
|
||||
...data,
|
||||
rows: data.rows.map(v => ({...v, key: v.id})),
|
||||
});
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,161 @@
|
||||
<script setup>
|
||||
|
||||
import Filter from "../../../../components/Filter/index.vue";
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../api/index.js";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: '编号',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '任务编号',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '子任务编号',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '文字',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '图片',
|
||||
dataIndex: 'image',
|
||||
slotName: 'image',
|
||||
},
|
||||
{
|
||||
title: '来源',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: 'ID',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '类型',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '时间',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 110,
|
||||
fixed: 'right',
|
||||
},
|
||||
];
|
||||
const FilterConfig = [
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '任务编号',
|
||||
placeholder: '请输入任务编号',
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '子任务编号',
|
||||
placeholder: '请输入子任务编号',
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'select',
|
||||
label: '标签',
|
||||
placeholder: '请选择标签',
|
||||
span: 6,
|
||||
api: async () => ({
|
||||
data: [
|
||||
{
|
||||
name: '选项一',
|
||||
id: 1,
|
||||
},
|
||||
{
|
||||
name: '选项二',
|
||||
id: 2,
|
||||
},
|
||||
{
|
||||
name: '选项三',
|
||||
id: 3,
|
||||
},
|
||||
]
|
||||
}),
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '商家ID',
|
||||
placeholder: '请输入商家ID',
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'datetime',
|
||||
label: '创建日期',
|
||||
}
|
||||
];
|
||||
|
||||
const rowSelection = reactive({
|
||||
type: 'checkbox',
|
||||
showCheckedAll: true,
|
||||
onlyCurrent: false,
|
||||
});
|
||||
const po = reactive({
|
||||
wd: null,
|
||||
});
|
||||
const vo = reactive({
|
||||
page: '',
|
||||
rows: [],
|
||||
total: 0,
|
||||
});
|
||||
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
parameter: po,
|
||||
api: Api.system.getData,
|
||||
callback: (data) => {
|
||||
Object.assign(vo, data);
|
||||
console.log(vo);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- 免审审核 -->
|
||||
免审审核
|
||||
<a-card>
|
||||
<Filter
|
||||
v-model:from="po"
|
||||
:config="FilterConfig">
|
||||
</Filter>
|
||||
|
||||
<a-table
|
||||
:row-selection="rowSelection"
|
||||
:data="vo.rows"
|
||||
@page-change="(e) => pagination.current = e"
|
||||
:pagination="pagination"
|
||||
:loading="loading"
|
||||
:columns="columns"
|
||||
class="flex-grow">
|
||||
<template v-slot:image>
|
||||
<a-image
|
||||
width="40px"
|
||||
height="40px"
|
||||
src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a8c8cdb109cb051163646151a4a5083b.png~tplv-uwbnlip3yd-webp.webp">
|
||||
</a-image>
|
||||
</template>
|
||||
|
||||
<template v-slot:action>
|
||||
<div class="flex items-center gap-[20px]">
|
||||
<a-link :hoverable="false" status="success">通过</a-link>
|
||||
<a-link :hoverable="false" status="danger">拒绝</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -1,10 +1,207 @@
|
||||
<script setup>
|
||||
|
||||
import Filter from "../../../../components/Filter/index.vue";
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../api/index.js";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: '编号',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '任务编号',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '子任务编号',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '文字',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '图片',
|
||||
dataIndex: 'image',
|
||||
slotName: 'image',
|
||||
},
|
||||
{
|
||||
title: '来源',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: 'ID',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '类型',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '时间',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 110,
|
||||
fixed: 'right',
|
||||
},
|
||||
];
|
||||
const FilterConfig = [
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '任务编号',
|
||||
placeholder: '请输入任务编号',
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '子任务编号',
|
||||
placeholder: '请输入子任务编号',
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'select',
|
||||
label: '审核状态',
|
||||
placeholder: '请选择审核状态',
|
||||
api: async () => ({
|
||||
data: [
|
||||
{
|
||||
name: '选项一',
|
||||
id: 1,
|
||||
},
|
||||
{
|
||||
name: '选项二',
|
||||
id: 2,
|
||||
},
|
||||
{
|
||||
name: '选项三',
|
||||
id: 3,
|
||||
},
|
||||
]
|
||||
}),
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'select',
|
||||
label: '类型',
|
||||
placeholder: '请选择类型',
|
||||
span: 6,
|
||||
api: async () => ({
|
||||
data: [
|
||||
{
|
||||
name: '选项一',
|
||||
id: 1,
|
||||
},
|
||||
{
|
||||
name: '选项二',
|
||||
id: 2,
|
||||
},
|
||||
{
|
||||
name: '选项三',
|
||||
id: 3,
|
||||
},
|
||||
]
|
||||
}),
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'select',
|
||||
label: '来源',
|
||||
placeholder: '请选择来源',
|
||||
span: 6,
|
||||
api: async () => ({
|
||||
data: [
|
||||
{
|
||||
name: '选项一',
|
||||
id: 1,
|
||||
},
|
||||
{
|
||||
name: '选项二',
|
||||
id: 2,
|
||||
},
|
||||
{
|
||||
name: '选项三',
|
||||
id: 3,
|
||||
},
|
||||
]
|
||||
}),
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: 'ID',
|
||||
placeholder: '请输入ID',
|
||||
span: 6,
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'datetime',
|
||||
label: '创建日期',
|
||||
span: 6,
|
||||
}
|
||||
];
|
||||
|
||||
const rowSelection = reactive({
|
||||
type: 'checkbox',
|
||||
showCheckedAll: true,
|
||||
onlyCurrent: false,
|
||||
});
|
||||
const po = reactive({
|
||||
wd: null,
|
||||
});
|
||||
const vo = reactive({
|
||||
page: '',
|
||||
rows: [],
|
||||
total: 0,
|
||||
});
|
||||
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
parameter: po,
|
||||
api: Api.system.getData,
|
||||
callback: (data) => {
|
||||
Object.assign(vo, data);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- 消息审核 -->
|
||||
消息审核
|
||||
<a-card>
|
||||
<Filter
|
||||
v-model:from="po"
|
||||
:config="FilterConfig">
|
||||
</Filter>
|
||||
|
||||
<a-table
|
||||
:row-selection="rowSelection"
|
||||
:data="vo.rows"
|
||||
@page-change="(e) => pagination.current = e"
|
||||
:pagination="pagination"
|
||||
:loading="loading"
|
||||
:columns="columns"
|
||||
class="flex-grow">
|
||||
<template v-slot:image>
|
||||
<a-image
|
||||
width="40px"
|
||||
height="40px"
|
||||
src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a8c8cdb109cb051163646151a4a5083b.png~tplv-uwbnlip3yd-webp.webp">
|
||||
</a-image>
|
||||
</template>
|
||||
|
||||
<template v-slot:action>
|
||||
<div class="flex items-center gap-[20px]">
|
||||
<a-link :hoverable="false" status="success">通过</a-link>
|
||||
<a-link :hoverable="false" status="danger">拒绝</a-link>
|
||||
</div>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -1,10 +1,193 @@
|
||||
<script setup>
|
||||
import {reactive} from "vue";
|
||||
import useTableQuery from "../../../../hooks/useTableQuery.js";
|
||||
import Api from "../../../../api/index.js";
|
||||
import Filter from "../../../../components/Filter/index.vue";
|
||||
import XSelect from "../../../../components/XSelect/index.vue";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: '沟通事件ID',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '商家ID',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '任务编号',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '子任务编号',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '申诉状态',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '结算状态',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '达人ID',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '达人账号',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '领取时间',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '扣除',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '金额',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '原因',
|
||||
dataIndex: 'why',
|
||||
slotName: 'why',
|
||||
width: 60,
|
||||
},
|
||||
{
|
||||
title: '达人到手',
|
||||
dataIndex: 'key',
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
slotName: 'action',
|
||||
width: 240,
|
||||
fixed: 'right',
|
||||
},
|
||||
];
|
||||
const FilterConfig = [
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '任务编号',
|
||||
placeholder: '请输入任务编号',
|
||||
span: 6,
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '子任务编号',
|
||||
placeholder: '请输入子任务编号',
|
||||
span: 6,
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'custom',
|
||||
label: '扣除',
|
||||
slotName: 'deduct',
|
||||
span: 6,
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'custom',
|
||||
label: '达人到手',
|
||||
slotName: 'hands',
|
||||
span: 6,
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '达人ID',
|
||||
placeholder: '请输入达人ID',
|
||||
span: 6,
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '商家ID',
|
||||
placeholder: '请输入商家ID',
|
||||
span: 6,
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'input',
|
||||
label: '达人账号',
|
||||
placeholder: '请输入达人账号',
|
||||
span: 6,
|
||||
},
|
||||
{
|
||||
key: 'wd',
|
||||
type: 'datetime',
|
||||
label: '领取时间',
|
||||
span: 6,
|
||||
},
|
||||
];
|
||||
|
||||
const po = reactive({
|
||||
wd: null,
|
||||
});
|
||||
const vo = reactive({
|
||||
page: '',
|
||||
rows: [],
|
||||
total: 0,
|
||||
});
|
||||
const {loading, pagination, initFetchData} = useTableQuery({
|
||||
parameter: po,
|
||||
api: Api.system.getData,
|
||||
callback: (data) => {
|
||||
Object.assign(vo, data);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- 平台介入 -->
|
||||
平台介入
|
||||
<a-card>
|
||||
<Filter
|
||||
v-model:from="po"
|
||||
:config="FilterConfig">
|
||||
<template v-slot:deduct>
|
||||
<XSelect :api="Api.system.getSelect"></XSelect>
|
||||
<a-input-number placeholder="请输入比例" class="ml-[20px]">
|
||||
<template #suffix>%</template>
|
||||
</a-input-number>
|
||||
</template>
|
||||
<template v-slot:hands>
|
||||
<XSelect :api="Api.system.getSelect"></XSelect>
|
||||
<a-input-number placeholder="请输入金额" class="ml-[20px]">
|
||||
</a-input-number>
|
||||
</template>
|
||||
</Filter>
|
||||
|
||||
<a-tabs type="rounded">
|
||||
<a-tab-pane title="待处理" key="1">
|
||||
</a-tab-pane>
|
||||
<a-tab-pane title="已处理" key="2">
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
|
||||
<a-table
|
||||
:data="vo.rows"
|
||||
@page-change="(e) => pagination.current = e"
|
||||
:pagination="pagination"
|
||||
:loading="loading"
|
||||
:columns="columns"
|
||||
class="flex-grow">
|
||||
<template v-slot:action>
|
||||
<div class="flex gap-[16px]">
|
||||
<a-link :hoverable="false">沟通记录</a-link>
|
||||
<a-link :hoverable="false">查看回填</a-link>
|
||||
<a-link :hoverable="false" status="success">确认结算</a-link>
|
||||
</div>
|
||||
</template>
|
||||
<template v-slot:why>
|
||||
<a-link :hoverable="false">原因</a-link>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -266,7 +266,7 @@ const mockRoutes2 = [
|
||||
meta: {
|
||||
name: '免审审核'
|
||||
},
|
||||
component: 'subtask-review',
|
||||
component: 'exemption-from-audit-review',
|
||||
},
|
||||
{
|
||||
path: 'platform-intervention',
|
||||
|
||||
@@ -28,7 +28,7 @@ const routesMap = {
|
||||
'contact-customer-service': () => import('../pages/merchant/pages/get-help/contact-customer-service.vue'),
|
||||
|
||||
/**
|
||||
* 达人端
|
||||
* 管理端
|
||||
*/
|
||||
|
||||
'manage-reward-mission': () => import('../pages/manage/pages/manage-reward-mission/index.vue'),
|
||||
|
||||
@@ -33,7 +33,7 @@ body {
|
||||
.arco-card {
|
||||
@apply min-h-full flex-grow flex;
|
||||
.arco-card-body {
|
||||
@apply min-h-full flex flex-col p-[20px] flex-grow;
|
||||
@apply min-h-full flex flex-col p-[20px] flex-grow max-w-full;
|
||||
.arco-table-container {
|
||||
@apply h-full;
|
||||
.arco-table-element {
|
||||
|
||||
Reference in New Issue
Block a user