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"
class="flex-grow">
<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 v-if="record.status === 1" color="orangered" :content="record.check_remark">素材审核中
</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 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-group>
</a-form-item>
<a-form-item label="需要回复的评论">
<a-form-item label="需要回复的评论" v-if="item.comment.length !== 0">
<x-select
:disabled="form.is_reply===0"
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 {dayjs} from "@arco-design/web-vue/es/_utils/date.js";
import FastSetting from "../../../components/FastSetting.vue";
import {useTemplateRef} from "vue";
import {Message} from "@arco-design/web-vue";
const {form, index} = defineProps({
form: {
@@ -15,7 +17,22 @@ const {form, index} = defineProps({
default: null
}
});
const formRef = useTemplateRef('formRef');
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) {
const result = [];
@@ -25,19 +42,35 @@ function range(start, end) {
return result;
}
const getDisabledTime = (date) => {
const getDisabledTime = (date, type) => {
return {
disabledHours: () => range(0, dayjs(form.start_time).hour()),
disabledMinutes: () => range(0, dayjs(form.start_time).add(1, 'minute').minute()),
disabledHours: () => type === 'start' ? range(0, dayjs(form.start_time).hour()) : range(0, 0),
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>
<template>
<div id="block">
<a-form
ref="formRef"
:model="po"
:rules="rules"
:auto-label-width="true">
<a-form-item label="回填时间">
<a-form-item label="回填时间" field="end_time">
<x-time-picker
:disabledDate="(current) => dayjs(current).add(1, 'day').isBefore(dayjs(form.start_time))"
:disabledTime="getDisabledTime"
@@ -53,7 +86,7 @@ const getDisabledTime = (date) => {
</FastSetting>
</a-form-item>
<a-form-item label="回填内容">
<a-form-item label="回填内容" field="content_id">
<XSelect
class="w-auto"
:init="true"

View File

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

View File

@@ -12,6 +12,7 @@ const INDEX = ['一', '二', '三'];
const emits = defineEmits(['success', 'prev']);
const form = defineModel('form');
const formRef = useTemplateRef('formRef');
const BackfillRef = useTemplateRef('BackfillRef');
const rules = {
start_time: [{
required: true,
@@ -22,16 +23,6 @@ const rules = {
message: '任务可接时段不完整',
}],
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({
@@ -60,11 +51,14 @@ const addHT = () => {
}
const success = async () => {
formRef.value.validate().then((res) => {
formRef.value.validate().then(async (res) => {
if (res) {
const firstKey = Object.keys(res)[0];
Message.warning(res[firstKey].message);
} else {
for (const v of BackfillRef.value) {
await v.validate();
}
emits('success', form.value);
}
});
@@ -117,7 +111,8 @@ onMounted(() => {
:key="item.id"
:label="`第${INDEX[index]}次回填`">
<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]">
<Preview

View File

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