This commit is contained in:
2025-06-27 14:50:01 +08:00
parent 3872667131
commit de0762dba8
6 changed files with 52 additions and 24 deletions

View File

@@ -146,11 +146,11 @@ const plTaskChildren = async () => {
:columns="columns" :columns="columns"
class="flex-grow"> class="flex-grow">
<template v-slot:status_text="{record}"> <template v-slot:status_text="{record}">
<TooltipTag v-if="record.status === 0" color="red" :content="record.check_remark">待上传素材 <TooltipTag v-if="record.status === 0" color="cyan" :content="record.check_remark">待上传素材
</TooltipTag> </TooltipTag>
<TooltipTag v-if="record.status === 1" color="orangered" :content="record.check_remark">素材审核中 <TooltipTag v-if="record.status === 1" color="orangered" :content="record.check_remark">素材审核中
</TooltipTag> </TooltipTag>
<TooltipTag v-if="record.status === 2" color="orangered" :content="record.check_remark"> <TooltipTag v-if="record.status === 2" color="red" :content="record.check_remark">
重新上传素材 重新上传素材
</TooltipTag> </TooltipTag>
<TooltipTag v-if="record.status === 3" color="gray" :content="record.check_remark">待领取 <TooltipTag v-if="record.status === 3" color="gray" :content="record.check_remark">待领取

View File

@@ -64,7 +64,7 @@ const success = async () => {
<a-radio :value="1"></a-radio> <a-radio :value="1"></a-radio>
</a-radio-group> </a-radio-group>
</a-form-item> </a-form-item>
<a-form-item label="需要回复的评论"> <a-form-item label="需要回复的评论" v-if="item.comment.length !== 0">
<x-select <x-select
:disabled="form.is_reply===0" :disabled="form.is_reply===0"
v-model:model-value="form.pid" v-model:model-value="form.pid"

View File

@@ -4,6 +4,8 @@ import XSelect from "../../../../../components/XSelect/index.vue";
import XTimePicker from "../../../../../components/XTimePicker/XTimePicker.vue"; import XTimePicker from "../../../../../components/XTimePicker/XTimePicker.vue";
import {dayjs} from "@arco-design/web-vue/es/_utils/date.js"; import {dayjs} from "@arco-design/web-vue/es/_utils/date.js";
import FastSetting from "../../../components/FastSetting.vue"; import FastSetting from "../../../components/FastSetting.vue";
import {useTemplateRef} from "vue";
import {Message} from "@arco-design/web-vue";
const {form, index} = defineProps({ const {form, index} = defineProps({
form: { form: {
@@ -15,7 +17,22 @@ const {form, index} = defineProps({
default: null default: null
} }
}); });
const formRef = useTemplateRef('formRef');
const po = defineModel('po'); const po = defineModel('po');
const rules = {
start_time: [{
required: true,
message: '回填时间不完整',
}],
end_time: [{
required: true,
message: '回填时间不完整',
}],
content_id: [{
required: true,
message: '回填内容不能为空',
}]
}
function range(start, end) { function range(start, end) {
const result = []; const result = [];
@@ -25,19 +42,35 @@ function range(start, end) {
return result; return result;
} }
const getDisabledTime = (date) => { const getDisabledTime = (date, type) => {
return { return {
disabledHours: () => range(0, dayjs(form.start_time).hour()), disabledHours: () => type === 'start' ? range(0, dayjs(form.start_time).hour()) : range(0, 0),
disabledMinutes: () => range(0, dayjs(form.start_time).add(1, 'minute').minute()), disabledMinutes: () => type === 'start' ? range(0, dayjs(form.start_time).add(1, 'minute').minute()) : range(0, 0),
} }
} }
const validate = async () => {
const res = await formRef.value.validate();
if (res) {
const firstKey = Object.keys(res)[0];
Message.warning(res[firstKey].message);
throw new Error(res[firstKey].message);
}
}
defineExpose({
validate
});
</script> </script>
<template> <template>
<div id="block"> <div id="block">
<a-form <a-form
ref="formRef"
:model="po"
:rules="rules"
:auto-label-width="true"> :auto-label-width="true">
<a-form-item label="回填时间"> <a-form-item label="回填时间" field="end_time">
<x-time-picker <x-time-picker
:disabledDate="(current) => dayjs(current).add(1, 'day').isBefore(dayjs(form.start_time))" :disabledDate="(current) => dayjs(current).add(1, 'day').isBefore(dayjs(form.start_time))"
:disabledTime="getDisabledTime" :disabledTime="getDisabledTime"
@@ -53,7 +86,7 @@ const getDisabledTime = (date) => {
</FastSetting> </FastSetting>
</a-form-item> </a-form-item>
<a-form-item label="回填内容"> <a-form-item label="回填内容" field="content_id">
<XSelect <XSelect
class="w-auto" class="w-auto"
:init="true" :init="true"

View File

@@ -74,7 +74,7 @@ const success = async () => {
<a-form-item label="特殊要求" field="special_text"> <a-form-item label="特殊要求" field="special_text">
<a-textarea <a-textarea
:max-length="300" :max-length="299"
placeholder="请输入特殊要求,如:请勿截图,必须下载原图再上传到抖音" placeholder="请输入特殊要求,如:请勿截图,必须下载原图再上传到抖音"
v-model:model-value="form.special_text"> v-model:model-value="form.special_text">
</a-textarea> </a-textarea>

View File

@@ -12,6 +12,7 @@ const INDEX = ['一', '二', '三'];
const emits = defineEmits(['success', 'prev']); const emits = defineEmits(['success', 'prev']);
const form = defineModel('form'); const form = defineModel('form');
const formRef = useTemplateRef('formRef'); const formRef = useTemplateRef('formRef');
const BackfillRef = useTemplateRef('BackfillRef');
const rules = { const rules = {
start_time: [{ start_time: [{
required: true, required: true,
@@ -22,16 +23,6 @@ const rules = {
message: '任务可接时段不完整', message: '任务可接时段不完整',
}], }],
is_other: [], is_other: [],
backfill: [{
required: true,
validator: (value, callback) => {
for (const v of value) {
if (!v.end_time || !v.start_time || !v.content_id) {
callback('回填内容不完整');
}
}
}
}],
} }
if (form.value.backfill.length === 0) form.value.backfill.push({ if (form.value.backfill.length === 0) form.value.backfill.push({
@@ -60,11 +51,14 @@ const addHT = () => {
} }
const success = async () => { const success = async () => {
formRef.value.validate().then((res) => { formRef.value.validate().then(async (res) => {
if (res) { if (res) {
const firstKey = Object.keys(res)[0]; const firstKey = Object.keys(res)[0];
Message.warning(res[firstKey].message); Message.warning(res[firstKey].message);
} else { } else {
for (const v of BackfillRef.value) {
await v.validate();
}
emits('success', form.value); emits('success', form.value);
} }
}); });
@@ -117,7 +111,8 @@ onMounted(() => {
:key="item.id" :key="item.id"
:label="`第${INDEX[index]}次回填`"> :label="`第${INDEX[index]}次回填`">
<div class="flex flex-col gap-[20px]"> <div class="flex flex-col gap-[20px]">
<Backfill :form="form" :index="index" v-model:po="form.backfill[index]"></Backfill> <Backfill ref="BackfillRef" :form="form" :index="index"
v-model:po="form.backfill[index]"></Backfill>
<div class="flex gap-[8px]"> <div class="flex gap-[8px]">
<Preview <Preview

View File

@@ -70,10 +70,10 @@ function range(start, end) {
return result; return result;
} }
const getDisabledTime = (date) => { const getDisabledTime = (date, type) => {
return { return {
disabledHours: () => range(0, dayjs(taskDetail.start_time).hour()), disabledHours: () => type === 'start' ? range(0, dayjs(taskDetail.start_time).hour()) : range(0, 0),
disabledMinutes: () => range(0, dayjs(taskDetail.start_time).add(1, 'minute').minute()), disabledMinutes: () => type === 'start' ? range(0, dayjs(taskDetail.start_time).add(1, 'minute').minute()) : range(0, 0),
} }
} }