This commit is contained in:
2025-03-18 11:29:04 +08:00
parent 0c53dc4d54
commit 11b632d4a9
9 changed files with 505 additions and 4 deletions

View File

@@ -0,0 +1,96 @@
<script setup>
import {ref} from 'vue';
const visible = ref(false);
const activeKey = ref(1);
const success = () => {
}
const refuse = () => {
}
</script>
<template>
<a-link :hoverable="false" @click="visible=true">预览</a-link>
<a-modal
title-align="start"
title="预览"
v-model:visible="visible">
<a-tabs v-model:active-key="activeKey" type="rounded">
<a-tab-pane v-for="item in 3" :title="`素材${item}`" :key="item">
<a-form
layout="vertical">
<a-form-item label="标题">
<a-input model-value="终于让我给发现啦!就这个再加上芙贝柔一起绝了"></a-input>
</a-form-item>
<a-form-item label="正文">
<a-textarea
auto-size
:max-length="1000"
show-word-limit
model-value="终于让我给发现啦!就这个再加上芙贝柔一起绝了终于让我给发现啦!就这个再加上芙贝柔一起绝风格反对赌东道赌东道了终于让我给发现啦!就这个再加上芙贝柔一起绝了就这个再加...">
</a-textarea>
</a-form-item>
<a-form-item label="话题">
<div id="tag-list" class="w-full bg-[var(--color-neutral-2)] p-[4px]">
<a-tag>#一起变美</a-tag>
</div>
</a-form-item>
<a-form-item label="素材">
<a-image
width="60px"
height="60px"
src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a8c8cdb109cb051163646151a4a5083b.png~tplv-uwbnlip3yd-webp.webp">
</a-image>
</a-form-item>
<a-form-item label="评论区内容">
<div class="flex flex-col gap-[8px] w-full">
<div class="w-full flex gap-[10px] items-center">
1.
<div class="flex-grow bg-[var(--color-neutral-2)] p-[4px] h-[40px] flex items-center">
<a-image
class="mr-[12px]"
width="30px"
height="30px"
src="https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/a8c8cdb109cb051163646151a4a5083b.png~tplv-uwbnlip3yd-webp.webp">
</a-image>
第三个很好用大家可以在网上搜同款
</div>
</div>
</div>
</a-form-item>
</a-form>
</a-tab-pane>
</a-tabs>
<template #footer>
<div class="flex items-center gap-[8px]">
<a-radio-group>
<template v-for="item in 3" :key="item">
<a-radio v-show="activeKey === item" :value="item">选中</a-radio>
</template>
</a-radio-group>
<a-button @click="success" type="primary" class="ml-auto">通过</a-button>
<a-button @click="refuse">拒绝</a-button>
</div>
</template>
</a-modal>
</template>
<style lang="scss" scoped>
#tag-list {
:deep(.arco-tag) {
color: #000;
background-color: #fff;
border: 1px solid rgb(229, 230, 235);
box-sizing: border-box;
}
}
</style>

View File

@@ -0,0 +1,29 @@
<script setup>
import {ref, reactive} from "vue";
import XSelect from '../../../../../components/XSelect/index.vue';
import Api from "../../../../../api/index.js";
const visible = ref(false);
const form = reactive({
state: ''
});
</script>
<template>
<a-link :hoverable="false" status="danger" @click="visible=true">拒绝</a-link>
<a-modal
title-align="start"
title="任务审核拒绝"
v-model:visible="visible">
<a-form :model="form">
<a-form-item label="拒绝原因">
<XSelect :api="Api.system.getSelect" placeholder="请输入拒绝原因"></XSelect>
</a-form-item>
</a-form>
</a-modal>
</template>
<style scoped>
</style>

View File

@@ -0,0 +1,35 @@
<script setup>
import XSelect from "../../../../../components/XSelect/index.vue";
import {ref, reactive} from "vue";
import Api from "../../../../../api/index.js";
const visible = ref(false);
const form = reactive({
name: null,
});
</script>
<template>
<a-link :hoverable="false" status="success" @click="visible=true">通过</a-link>
<a-modal
title-align="start"
title="任务审核通过"
v-model:visible="visible">
<a-form :model="form" layout="vertical">
<a-form-item label="该任务对达人端的展示价格为:">
<XSelect :api="Api.system.getSelect"></XSelect>
</a-form-item>
<a-form-item label="安全评分">
<XSelect :api="Api.system.getSelect" placeholder="请输入安全评分满分100"></XSelect>
</a-form-item>
<a-form-item label="耗时评分">
<XSelect :api="Api.system.getSelect" placeholder="请输入耗时评分满分100"></XSelect>
</a-form-item>
</a-form>
</a-modal>
</template>
<style scoped>
</style>

View File

@@ -0,0 +1,23 @@
import {h} from 'vue';
import {Modal} from "@arco-design/web-vue";
const openTerminateTask = () => {
Modal.warning({
title: '确认终止任务',
width: 464,
hideCancel: false,
okText: '确定终止',
okButtonProps: {
status: 'danger',
},
content: h('div', {}, [
h('div', {class: 'text-[14px]'}, '终止任务后,后续达人将无法接单,但不影响已经接单的达人'),
h('div', {class: 'text-[14px] text-[#4E5969]'}, '*请商家及时处理已经被接单的子任务,处理完毕后,剩余任务金额将返款至商家钱包')
]),
onOk: () => {
}
});
}
export default openTerminateTask;

View File

@@ -1,10 +1,146 @@
<script setup>
import {reactive, ref} from "vue";
import Filter from "../../../../components/Filter/index.vue";
import useTableQuery from "../../../../hooks/useTableQuery.js";
import Api from "../../../../api/index.js";
import RejectTaskModal from "./components/RejectTaskModal.vue";
import TaskPassedReviewModal from "./components/TaskPassedReviewModal.vue";
import PreviewTaskModal from "./components/PreviewTaskModal.vue";
import openTerminateTask from "../../../../components/TerminateTask/TerminateTask.js";
const columns = [
{
title: '任务编号',
dataIndex: 'key',
},
{
title: '子任务编号',
dataIndex: 'key',
},
{
title: '子任务状态',
dataIndex: 'key',
},
{
title: '平台审核状态',
dataIndex: 'key',
},
{
title: '操作',
dataIndex: 'action',
slotName: 'action',
width: 300,
},
];
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: '请选择子任务状态',
api: async () => ({
data: [
{
name: '选项一',
id: 1,
},
{
name: '选项二',
id: 2,
},
{
name: '选项三',
id: 3,
},
]
}),
},
{
key: 'wd',
type: 'input',
label: '达人任务编号',
placeholder: '请输入达人任务编号'
},
];
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
: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 items-center gap-[20px] justify-between">
<PreviewTaskModal></PreviewTaskModal>
<TaskPassedReviewModal></TaskPassedReviewModal>
<RejectTaskModal></RejectTaskModal>
<a-link :hoverable="false" status="danger" @click="openTerminateTask">终止子任务</a-link>
</div>
</template>
</a-table>
</a-card>
</template>
<style scoped>

View File

@@ -1,10 +1,191 @@
<script setup>
import {reactive} from 'vue';
import Filter from "../../../../components/Filter/index.vue";
import useTableQuery from "../../../../hooks/useTableQuery.js";
import Api from "../../../../api/index.js";
import TaskPassedReviewModal from "./components/TaskPassedReviewModal.vue";
import openTerminateTask from "./components/openTerminateTask.js";
import RejectTaskModal from "./components/RejectTaskModal.vue";
import TerminateTask from "../../../../components/TerminateTask/TerminateTask.js";
const columns = [
{
title: '任务编号',
dataIndex: 'key',
},
{
title: '任务名称',
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: 'action',
slotName: 'action',
width: 250,
},
];
const FilterConfig = [
{
key: 'wd',
type: 'input',
label: '商家ID',
placeholder: '请输入商家ID',
},
{
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: '请选择任务状态',
api: async () => ({
data: [
{
name: '选项一',
id: 1,
},
{
name: '选项二',
id: 2,
},
{
name: '选项三',
id: 3,
},
]
}),
},
{
key: 'wd',
type: 'datetime',
label: '创建时间',
},
{
key: 'wd',
type: 'select',
label: '审核状态',
placeholder: '请选择审核状态',
api: async () => ({
data: [
{
name: '选项一',
id: 1,
},
{
name: '选项二',
id: 2,
},
{
name: '选项三',
id: 3,
},
]
}),
}
];
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
: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 items-center gap-[20px]">
<a-link :hoverable="false">编辑</a-link>
<TaskPassedReviewModal></TaskPassedReviewModal>
<RejectTaskModal></RejectTaskModal>
<a-link :hoverable="false" status="danger" class="ml-auto" @click="TerminateTask">终止</a-link>
</div>
</template>
</a-table>
</a-card>
</template>
<style scoped>

View File

@@ -1,62 +0,0 @@
import {Modal, Tag} from "@arco-design/web-vue";
import {h} from 'vue';
const ModalContent = {
props: {
status: {
type: String,
default: 'success',
},
status_text: {
type: String,
default: null,
}
},
setup(props) {
switch (props.status) {
case 'success':
return () => h('div', {}, [
h('div', {class: 'flex items-center gap-[8px]'}, [
h('div', {}, '该子任务状态为:'),
h(Tag, {color: 'orangered'}, props.status_text)
]),
h('div', {class: 'text-[14px] text-[rgb(78, 89, 105)]'}, '点击终止子任务后,达人将无法再领取子任务')
]);
case 'warning':
return () => h('div', {}, [
h('div', {class: 'flex items-center gap-[8px]'}, [
h('div', {}, '该子任务状态为:'),
h(Tag, {color: 'orangered'}, props.status_text)
]),
h('div', {class: 'text-[14px] text-[rgb(78, 89, 105)]'}, '无法终止')
]);
}
}
}
const openTerminateTask = (type, status_text = '待上传素材') => {
const status = 'success';
Modal.warning({
title: '确认终止子任务',
draggable: true,
hideCancel: false,
content: () =>
h(
ModalContent,
{
status: 'success',
status_text: status_text
}
),
okButtonProps: {
status: 'danger',
},
okText: status === 'success' ? '确认终止' : '确认',
onOk: () => {
}
});
}
export default openTerminateTask;

View File

@@ -4,7 +4,7 @@ import {reactive} from "vue";
import useTableQuery from "../../../../hooks/useTableQuery.js";
import Api from "../../../../api/index.js";
import RefuseModal from "./components/RefuseModal.vue";
import openTerminateTask from "../../components/TerminateTask.js";
import openTerminateTask from "../../../../components/TerminateTask/TerminateTask.js";
import BlackjackExpertModal from "../../components/BlackjackExpertModal.vue";
const columns = [