fix: resolve admin acceptance defects
This commit is contained in:
@@ -26,6 +26,10 @@
|
||||
<n-spin :show="loading">
|
||||
<n-descriptions v-if="detail.id" bordered :column="2">
|
||||
<n-descriptions-item label="任务">{{ detail.taskTitle }}</n-descriptions-item>
|
||||
<n-descriptions-item label="订单">
|
||||
{{ detail.tradeOrderNo || `#${detail.tradeOrderId || '-'}` }}
|
||||
</n-descriptions-item>
|
||||
<n-descriptions-item label="商品">{{ detail.productName || '-' }}</n-descriptions-item>
|
||||
<n-descriptions-item label="会员">
|
||||
{{ detail.username }} / {{ detail.mobile }}
|
||||
</n-descriptions-item>
|
||||
|
||||
@@ -35,6 +35,7 @@ export const columns = [
|
||||
{ title: '用户名', key: 'username', width: 130 },
|
||||
{ title: '手机号', key: 'mobile', width: 130 },
|
||||
{ title: '任务标题', key: 'taskTitle', width: 180 },
|
||||
{ title: '订单号', key: 'tradeOrderNo', width: 180, render: (r) => r.tradeOrderNo || `#${r.tradeOrderId || '-'}` },
|
||||
{ title: '等级', key: 'levelName', width: 110 },
|
||||
{
|
||||
title: '佣金',
|
||||
|
||||
@@ -13,6 +13,13 @@
|
||||
><n-select
|
||||
v-model:value="form.hallId"
|
||||
:options="dict.getOptionUnRef('taskHallOption')" /></n-form-item-gi
|
||||
><n-form-item-gi label="关联商品" path="productId"
|
||||
><n-select
|
||||
v-model:value="form.productId"
|
||||
filterable
|
||||
:loading="productLoading"
|
||||
:options="productOptions"
|
||||
placeholder="请选择关联商品" /></n-form-item-gi
|
||||
><n-form-item-gi label="会员等级" :span="2" path="levelIds"
|
||||
><n-select
|
||||
v-model:value="form.levelIds"
|
||||
@@ -61,7 +68,7 @@
|
||||
import Editor from '@/components/Editor/editor.vue';
|
||||
import UploadImage from '@/components/Upload/uploadImage.vue';
|
||||
import { useDictStore } from '@/store/modules/dict';
|
||||
import { TaskEdit, TaskView } from '@/api/productTask';
|
||||
import { ProductList, TaskEdit, TaskView } from '@/api/productTask';
|
||||
const emit = defineEmits(['reload']),
|
||||
message = useMessage(),
|
||||
dict = useDictStore(),
|
||||
@@ -70,7 +77,9 @@
|
||||
saving = ref(false),
|
||||
formRef = ref(),
|
||||
dateRange = ref<any>(),
|
||||
commissionPercent = ref(0);
|
||||
commissionPercent = ref(0),
|
||||
productLoading = ref(false),
|
||||
productOptions = ref<any[]>([]);
|
||||
const init = () => ({
|
||||
id: 0,
|
||||
version: 0,
|
||||
@@ -80,6 +89,7 @@
|
||||
coverAttachmentId: 0,
|
||||
coverUrl: '',
|
||||
hallId: null,
|
||||
productId: null,
|
||||
levelIds: [],
|
||||
commission: '0.00',
|
||||
dailyLimit: 0,
|
||||
@@ -93,6 +103,7 @@
|
||||
description: { required: true, message: '请输入任务描述' },
|
||||
coverUrl: { required: true, message: '请上传任务封面' },
|
||||
hallId: { required: true, type: 'number', message: '请选择任务大厅' },
|
||||
productId: { required: true, type: 'number', message: '请选择关联商品' },
|
||||
levelIds: { required: true, type: 'array', min: 1, message: '请选择会员等级' },
|
||||
commission: { required: true, message: '请输入固定佣金' },
|
||||
};
|
||||
@@ -101,6 +112,16 @@
|
||||
commissionPercent.value = 0;
|
||||
dateRange.value = null;
|
||||
show.value = true;
|
||||
productLoading.value = true;
|
||||
try {
|
||||
const result: any = await ProductList({ page: 1, perPage: 500 });
|
||||
productOptions.value = (result.list || []).map((item) => ({
|
||||
label: `${item.name}(${item.productNo})`,
|
||||
value: item.id,
|
||||
}));
|
||||
} finally {
|
||||
productLoading.value = false;
|
||||
}
|
||||
if (row) {
|
||||
loading.value = true;
|
||||
try {
|
||||
|
||||
@@ -1 +1,27 @@
|
||||
import{computed,h,ref}from'vue';import{NImage,NTag}from'naive-ui';import{FormSchema}from'@/components/Form';import{useDictStore}from'@/store/modules/dict';const dict=useDictStore();export const schemas=ref<FormSchema[]>([{field:'title',component:'NInput',label:'任务标题',componentProps:{clearable:true}},{field:'levelId',component:'NSelect',label:'会员类型',componentProps:{options:computed(()=>dict.getOptionUnRef('memberLevelOption')),clearable:true}},{field:'hallId',component:'NSelect',label:'任务大厅',componentProps:{options:computed(()=>dict.getOptionUnRef('taskHallOption')),clearable:true}},{field:'publishStatus',component:'NSelect',label:'状态',componentProps:{options:computed(()=>dict.getOptionUnRef('bizPublishStatus')),clearable:true}}]);const tag=(k,v)=>h(NTag,{type:dict.getType(k,v),bordered:false},()=>dict.getLabel(k,v)||'-');export const columns=[{title:'任务编号',key:'taskNo',width:180},{title:'封面',key:'coverUrl',width:100,render:r=>h(NImage,{src:r.coverUrl,width:64,height:64,objectFit:'cover'})},{title:'标题',key:'title',width:180},{title:'描述',key:'description',width:220,ellipsis:{tooltip:true}},{title:'任务大厅',key:'hallName',width:130},{title:'会员等级',key:'levelNames',width:180,render:r=>(r.levelNames||[]).join('、')},{title:'固定佣金',key:'commissionAmount',width:100,render:r=>`¥${((r.commissionAmount||0)/100).toFixed(2)}`},{title:'比例佣金',key:'commissionRate',width:100,render:r=>`${((r.commissionRate||0)/100).toFixed(2)}%`},{title:'状态',key:'publishStatus',width:100,render:r=>tag('bizPublishStatus',r.publishStatus)},{title:'创建时间',key:'createdAt',width:180}];export const loadOptions=()=>dict.loadOptions(['memberLevelOption','taskHallOption','bizPublishStatus']);
|
||||
import { computed, h, ref } from 'vue';
|
||||
import { NImage, NTag } from 'naive-ui';
|
||||
import { FormSchema } from '@/components/Form';
|
||||
import { useDictStore } from '@/store/modules/dict';
|
||||
|
||||
const dict = useDictStore();
|
||||
export const schemas = ref<FormSchema[]>([
|
||||
{ field: 'title', component: 'NInput', label: '任务标题', componentProps: { clearable: true } },
|
||||
{ field: 'levelId', component: 'NSelect', label: '会员类型', componentProps: { options: computed(() => dict.getOptionUnRef('memberLevelOption')), clearable: true } },
|
||||
{ field: 'hallId', component: 'NSelect', label: '任务大厅', componentProps: { options: computed(() => dict.getOptionUnRef('taskHallOption')), clearable: true } },
|
||||
{ field: 'publishStatus', component: 'NSelect', label: '状态', componentProps: { options: computed(() => dict.getOptionUnRef('bizPublishStatus')), clearable: true } },
|
||||
]);
|
||||
const tag = (key, value) => h(NTag, { type: dict.getType(key, value), bordered: false }, () => dict.getLabel(key, value) || '-');
|
||||
export const columns = [
|
||||
{ title: '任务编号', key: 'taskNo', width: 180 },
|
||||
{ title: '封面', key: 'coverUrl', width: 100, render: (row) => h(NImage, { src: row.coverUrl, width: 64, height: 64, objectFit: 'cover' }) },
|
||||
{ title: '标题', key: 'title', width: 180 },
|
||||
{ title: '关联商品', key: 'productName', width: 180, render: (row) => row.productName || '待补录' },
|
||||
{ title: '描述', key: 'description', width: 220, ellipsis: { tooltip: true } },
|
||||
{ title: '任务大厅', key: 'hallName', width: 130 },
|
||||
{ title: '会员等级', key: 'levelNames', width: 180, render: (row) => (row.levelNames || []).join('、') },
|
||||
{ title: '固定佣金', key: 'commissionAmount', width: 100, render: (row) => `¥${((row.commissionAmount || 0) / 100).toFixed(2)}` },
|
||||
{ title: '比例佣金', key: 'commissionRate', width: 100, render: (row) => `${((row.commissionRate || 0) / 100).toFixed(2)}%` },
|
||||
{ title: '状态', key: 'publishStatus', width: 100, render: (row) => tag('bizPublishStatus', row.publishStatus) },
|
||||
{ title: '创建时间', key: 'createdAt', width: 180 },
|
||||
];
|
||||
export const loadOptions = () => dict.loadOptions(['memberLevelOption', 'taskHallOption', 'bizPublishStatus']);
|
||||
|
||||
Reference in New Issue
Block a user