This commit is contained in:
2025-06-21 19:27:06 +08:00
parent e50aa7cbdf
commit 9abc42de68
17 changed files with 370 additions and 99 deletions

View File

@@ -5,8 +5,12 @@ import Api from "../../api/index.ts";
import {Message} from "@arco-design/web-vue";
import Comment from "../Comment/index.vue";
import Talk from "../Talk/index.vue";
import AddMaterial from "../../pages/merchant/components/AddMaterial.vue";
import AddComment from "../../pages/merchant/components/AddComment.vue";
import RejectTaskModal from "../../pages/manage/pages/manage-reward-mission/components/RejectTaskModal.vue";
const emits = defineEmits(['success']);
const selecdKey = ref([]);
const {id} = defineProps({
id: {
type: Number,
@@ -17,22 +21,65 @@ const visible = ref(false);
const detail = reactive({});
const activeKey = ref(0);
const getData = async (update) => {
Api.admin.getTaskChildrenInfo(id).then(({data}) => {
if (update) {
detail.content.forEach((v, index) => {
v.comment = data.content[index].comment;
});
} else {
Object.assign(detail, data);
}
});
}
watch(
() => visible.value,
(val) => {
if (val) Api.admin.getTaskChildrenInfo(id).then(({data}) => {
Object.assign(detail, data);
console.log('我看看我看看', data);
});
if (val) getData();
},
{deep: true}
)
const passTaskChildren = async () => {
const {code, msg} = await Api.admin.passTaskChildren(id);
if (code === 1) Message.success(msg);
visible.value = false;
emits('success');
console.log(selecdKey.value);
const pro_list = [];
if (selecdKey.value.length === 0) {
pro_list.push(new Promise((reactive, reject) => {
Api.admin.passChildrenMaterial(detail.content[activeKey.value]).then((res) => {
reactive(res);
}).catch((err) => {
reject(err);
})
}));
}
selecdKey.value.forEach(v => {
pro_list.push(new Promise((reactive, reject) => {
Api.admin.passChildrenMaterial(v).then((res) => {
reactive(res);
}).catch((err) => {
reject(err);
})
}));
})
const res = await Promise.all(pro_list);
let flag = true;
for (const v of res) {
if (v.code !== 1) {
Message.warning(v.msg)
flag = false;
}
}
if (flag) {
Message.success(res[0].msg);
visible.value = false;
emits('success');
}
}
const refuseTaskChildren = async () => {
@@ -57,41 +104,66 @@ const refuseTaskChildren = async () => {
<a-tab-pane v-for="(item, index) in detail.content" :title="`素材${index+1}`" :key="index">
<a-form
layout="vertical">
<a-form-item label="标题">
<a-input v-model:model-value="item.title" :disabled="detail.check_status !== 0"></a-input>
<a-form-item label="标题" v-if="item?.material_type?.title_limit > 0">
<a-input v-model:model-value="item.title" :disabled="detail.check_status !== 0"
:max-length="item.material_type.title_limit"></a-input>
</a-form-item>
<a-form-item label="正文">
<a-form-item label="正文" v-if="item?.material_type?.desc_limit > 0">
<a-textarea
auto-size
:max-length="1000"
v-model:model-value="item.content"
:max-length="item.material_type.desc_limit"
show-word-limit
:disabled="detail.check_status !== 0"
:model-value="item.content">
</a-textarea>
</a-form-item>
<a-form-item label="话题">
<Talk v-model:model-value="item.tags_arr" :disabled="detail.check_status !== 0"></Talk>
<a-form-item label="话题" v-if="item?.material_type?.tags_limit > 0">
<Talk v-model:model-value="item.tags" :disabled="detail.check_status !== 0"
:limit="item?.material_type?.tags_limit"></Talk>
</a-form-item>
<a-form-item label="素材">
<div v-if="item.materia_arr.length > 0" class="flex flex-wrap gap-[16px]">
<div class="flex flex-wrap gap-[16px]">
<x-image
v-for="(v, index) in item.materia_arr"
v-for="(v, index) in item.material"
@delete="item.material.splice(index, 1)"
:hide-delete="detail.check_status !== 0"
:key="index"
width="60px"
height="60px"
:src="v">
</x-image>
</div>
<div v-else>
暂无素材
<add-material
v-if="detail.check_status === 0"
@success="val => item.material = val"
ref="AddMaterialRef"
:id="item.task_id"
:material="item">
<div
class="size-[60px] bg-[#F2F3F5] flex justify-center items-center flex-col rounded-[8px] cursor-pointer">
<icon-plus/>
<div>添加</div>
</div>
</add-material>
</div>
</a-form-item>
<a-form-item label="评论区内容">
<div v-if="item?.comment?.length > 0" class="flex flex-col gap-[8px] w-full">
<comment :data="item.comment" :hide-delete="true"></comment>
<div class="flex-grow">
<div v-if="item.comment.length > 0" class="flex flex-col gap-[8px] w-full mb-[12px]">
<comment :data="item.comment" :hide-delete="detail.check_status !== 0"
@success="getData(true)"></comment>
</div>
<add-comment
v-if="detail.check_status === 0"
@success="getData(true)"
:material="{id: id}"
:item="item">
<a-button>
<icon-plus/>
<div>添加评论</div>
</a-button>
</add-comment>
</div>
</a-form-item>
</a-form>
@@ -100,16 +172,25 @@ const refuseTaskChildren = async () => {
<template #footer>
<div class="flex items-center gap-[8px]">
<!-- <a-checkbox-group>-->
<!-- <template v-for="(item, index) in detail.content" :key="item">-->
<!-- <a-checkbox v-show="activeKey === index" :value="item">选中</a-checkbox>-->
<!-- </template>-->
<!-- </a-checkbox-group>-->
<a-checkbox-group v-model:model-value="selecdKey">
<template v-for="(item, index) in detail.content" :key="item">
<a-checkbox v-show="activeKey === index" :value="item">选中
</a-checkbox>
</template>
</a-checkbox-group>
<template v-if="detail.check_status === 0">
<a-button @click="passTaskChildren" type="primary" class="ml-auto">通过
</a-button>
<a-button @click="refuseTaskChildren">拒绝</a-button>
<RejectTaskModal
:api="Api.admin.refuseTaskChildren"
:id="detail.id"
@success="() => {
visible = false;
emits('success')
}">
<a-button>拒绝</a-button>
</RejectTaskModal>
</template>
<a-button v-else @click="visible=false" class="ml-auto">关闭</a-button>
</div>