修改文章病例库管理相关操作问题111
This commit is contained in:
parent
7103c40c44
commit
1b50770874
@ -31,7 +31,15 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
<a-form-item label="发表时间" name="pushDate">
|
<a-form-item label="发表时间" name="pushDate">
|
||||||
<a-date-picker show-time valueFormat="YYYY-MM-DD HH:mm:ss" v-model:value="form.pushDate" style="width: 100%" placeholder="发表时间" />
|
<a-date-picker
|
||||||
|
show-time
|
||||||
|
valueFormat="YYYY-MM-DD HH:mm:ss"
|
||||||
|
v-model:value="form.pushDate"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="发表时间"
|
||||||
|
:disabled-date="disabledFutureDate"
|
||||||
|
:disabled-time="disabledFutureTime"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="是否外部链接" name="isLink">
|
<a-form-item label="是否外部链接" name="isLink">
|
||||||
<a-switch v-model:checked="isLinkChecked" @change="isLinkCheckedChange" />
|
<a-switch v-model:checked="isLinkChecked" @change="isLinkCheckedChange" />
|
||||||
@ -213,6 +221,7 @@
|
|||||||
import SmartWangeditor from '/@/components/framework/wangeditor/index.vue';
|
import SmartWangeditor from '/@/components/framework/wangeditor/index.vue';
|
||||||
import { FILE_FOLDER_TYPE_ENUM } from '/@/constants/support/file-const';
|
import { FILE_FOLDER_TYPE_ENUM } from '/@/constants/support/file-const';
|
||||||
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons-vue';
|
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons-vue';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
// ------------------------ 事件 ------------------------
|
// ------------------------ 事件 ------------------------
|
||||||
|
|
||||||
@ -329,7 +338,7 @@
|
|||||||
articleTitle: undefined, //标题
|
articleTitle: undefined, //标题
|
||||||
articleStatus: 1, //状态(1:正常 2:禁用)- 默认为正常
|
articleStatus: 1, //状态(1:正常 2:禁用)- 默认为正常
|
||||||
|
|
||||||
pushDate: undefined, //发表时间
|
pushDate: new Date().toISOString().slice(0, 19).replace('T', ' '), //发表时间,默认为当天
|
||||||
isLink: 0, //是否外部链接(0:否 1:是)
|
isLink: 0, //是否外部链接(0:否 1:是)
|
||||||
isLinkUrl: undefined, //外部链接地址
|
isLinkUrl: undefined, //外部链接地址
|
||||||
shareQrcode: undefined, //分享二维码地址
|
shareQrcode: undefined, //分享二维码地址
|
||||||
@ -344,6 +353,54 @@
|
|||||||
// 是否外部链接开关状态
|
// 是否外部链接开关状态
|
||||||
const isLinkChecked = ref(false);
|
const isLinkChecked = ref(false);
|
||||||
|
|
||||||
|
// 禁用未来日期
|
||||||
|
function disabledFutureDate(current) {
|
||||||
|
// 禁用今天之后的日期
|
||||||
|
return current && current > dayjs().endOf('day');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 禁用未来时间
|
||||||
|
function disabledFutureTime(date) {
|
||||||
|
if (date) {
|
||||||
|
const today = dayjs();
|
||||||
|
const selectedDate = dayjs(date);
|
||||||
|
|
||||||
|
// 如果是今天,禁用未来时间
|
||||||
|
if (selectedDate.isSame(today, 'day')) {
|
||||||
|
return {
|
||||||
|
disabledHours: () => {
|
||||||
|
const hours = [];
|
||||||
|
for (let i = today.hour() + 1; i < 24; i++) {
|
||||||
|
hours.push(i);
|
||||||
|
}
|
||||||
|
return hours;
|
||||||
|
},
|
||||||
|
disabledMinutes: (hour) => {
|
||||||
|
if (hour === today.hour()) {
|
||||||
|
const minutes = [];
|
||||||
|
for (let i = today.minute() + 1; i < 60; i++) {
|
||||||
|
minutes.push(i);
|
||||||
|
}
|
||||||
|
return minutes;
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
disabledSeconds: (hour, minute) => {
|
||||||
|
if (hour === today.hour() && minute === today.minute()) {
|
||||||
|
const seconds = [];
|
||||||
|
for (let i = today.second() + 1; i < 60; i++) {
|
||||||
|
seconds.push(i);
|
||||||
|
}
|
||||||
|
return seconds;
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
// 二维码相关数据
|
// 二维码相关数据
|
||||||
const qrcodeLoading = ref(false);
|
const qrcodeLoading = ref(false);
|
||||||
|
|
||||||
@ -626,7 +683,37 @@
|
|||||||
const rules = computed(() => ({
|
const rules = computed(() => ({
|
||||||
articleTitle: [{ required: true, message: '标题 必填' }],
|
articleTitle: [{ required: true, message: '标题 必填' }],
|
||||||
articleStatus: [{ required: true, message: '状态(1:正常 2:禁用) 必填' }],
|
articleStatus: [{ required: true, message: '状态(1:正常 2:禁用) 必填' }],
|
||||||
pushDate: [{ required: true, message: '发表时间 必填' }],
|
pushDate: [
|
||||||
|
{ required: true, message: '发表时间 必填' },
|
||||||
|
{
|
||||||
|
validator: (rule, value) => {
|
||||||
|
if (!value) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
const selectedDate = new Date(value);
|
||||||
|
const currentDate = new Date();
|
||||||
|
// 设置当前时间为当天的23:59:59,允许选择当天
|
||||||
|
currentDate.setHours(23, 59, 59, 999);
|
||||||
|
|
||||||
|
if (selectedDate > currentDate) {
|
||||||
|
return Promise.reject('发表时间不能大于当前时间');
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
authorList: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '作者 必填',
|
||||||
|
validator: (rule, value) => {
|
||||||
|
if (!value || !Array.isArray(value) || value.length === 0) {
|
||||||
|
return Promise.reject('请至少选择一个作者');
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
isLinkUrl: [{
|
isLinkUrl: [{
|
||||||
required: isLinkChecked.value,
|
required: isLinkChecked.value,
|
||||||
message: '外部链接地址 必填',
|
message: '外部链接地址 必填',
|
||||||
|
|||||||
@ -20,9 +20,6 @@
|
|||||||
<a-form-item label="标题" name="videoTitle">
|
<a-form-item label="标题" name="videoTitle">
|
||||||
<a-input style="width: 100%" v-model:value="form.videoTitle" placeholder="标题" />
|
<a-input style="width: 100%" v-model:value="form.videoTitle" placeholder="标题" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="视频编号" name="videoNo">
|
|
||||||
<a-input style="width: 100%" v-model:value="form.videoNo" placeholder="视频编号" />
|
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="状态" name="videoStatus">
|
<a-form-item label="状态" name="videoStatus">
|
||||||
<SmartEnumSelect
|
<SmartEnumSelect
|
||||||
width="100%"
|
width="100%"
|
||||||
@ -34,14 +31,25 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
<a-form-item label="发表时间" name="pushDate">
|
<a-form-item label="发表时间" name="pushDate">
|
||||||
<a-date-picker show-time valueFormat="YYYY-MM-DD HH:mm:ss" v-model:value="form.pushDate" style="width: 100%" placeholder="发表时间" />
|
<a-date-picker
|
||||||
|
show-time
|
||||||
|
valueFormat="YYYY-MM-DD HH:mm:ss"
|
||||||
|
v-model:value="form.pushDate"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="发表时间"
|
||||||
|
:disabled-date="disabledFutureDate"
|
||||||
|
:disabled-time="disabledFutureTime"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="是否外部链接" name="isLink">
|
<a-form-item label="是否外部链接" name="isLink" :colon="false">
|
||||||
<a-switch v-model:checked="isLinkChecked" />
|
<a-switch v-model:checked="isLinkChecked" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="外部链接地址" name="isLinkUrl" v-if="isLinkChecked">
|
<a-form-item label="外部链接地址" name="isLinkUrl" v-if="isLinkChecked">
|
||||||
<a-input style="width: 100%" v-model:value="form.isLinkUrl" placeholder="外部链接地址" />
|
<a-input style="width: 100%" v-model:value="form.isLinkUrl" placeholder="外部链接地址" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
<a-form-item label="视频编号" name="videoNo" v-if="!isLinkChecked">
|
||||||
|
<a-input style="width: 100%" v-model:value="form.videoNo" placeholder="视频编号" />
|
||||||
|
</a-form-item>
|
||||||
<a-form-item label="疾病标签" name="labelList">
|
<a-form-item label="疾病标签" name="labelList">
|
||||||
<div class="label-container">
|
<div class="label-container">
|
||||||
<!-- 标签选择器 -->
|
<!-- 标签选择器 -->
|
||||||
@ -211,6 +219,7 @@
|
|||||||
import { smartSentry } from '/@/lib/smart-sentry';
|
import { smartSentry } from '/@/lib/smart-sentry';
|
||||||
import { DeleteOutlined, PlusOutlined } from '@ant-design/icons-vue';
|
import { DeleteOutlined, PlusOutlined } from '@ant-design/icons-vue';
|
||||||
import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';
|
import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
// ------------------------ 事件 ------------------------
|
// ------------------------ 事件 ------------------------
|
||||||
|
|
||||||
@ -325,7 +334,7 @@
|
|||||||
videoNo: undefined, //视频编号
|
videoNo: undefined, //视频编号
|
||||||
videoStatus: 1, //状态,默认正常
|
videoStatus: 1, //状态,默认正常
|
||||||
deleteStatus: 0, //删除状态,默认未删除
|
deleteStatus: 0, //删除状态,默认未删除
|
||||||
pushDate: undefined, //发表时间
|
pushDate: new Date().toISOString().slice(0, 19).replace('T', ' '), //发表时间,默认为当天
|
||||||
isLink: 0, //是否外部链接,0:否 1:是
|
isLink: 0, //是否外部链接,0:否 1:是
|
||||||
isLinkUrl: undefined, //外部链接地址
|
isLinkUrl: undefined, //外部链接地址
|
||||||
labelList: [], //标签列表
|
labelList: [], //标签列表
|
||||||
@ -335,12 +344,82 @@
|
|||||||
|
|
||||||
let form = reactive({ ...formDefault });
|
let form = reactive({ ...formDefault });
|
||||||
|
|
||||||
const rules = {
|
// ------------------------ 外部链接相关 ------------------------
|
||||||
|
const isLinkChecked = computed({
|
||||||
|
get: () => form.isLink === 1,
|
||||||
|
set: (value) => {
|
||||||
|
form.isLink = value ? 1 : 0;
|
||||||
|
if (value) {
|
||||||
|
// 选择外部链接时,清空视频编号
|
||||||
|
form.videoNo = undefined;
|
||||||
|
} else {
|
||||||
|
// 不选择外部链接时,清空外部链接地址
|
||||||
|
form.isLinkUrl = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const rules = computed(() => ({
|
||||||
videoTitle: [{ required: true, message: '标题 必填' }],
|
videoTitle: [{ required: true, message: '标题 必填' }],
|
||||||
videoNo: [{ required: true, message: '视频编号 必填' }],
|
videoNo: [{
|
||||||
|
required: !isLinkChecked.value,
|
||||||
|
message: '视频编号 必填',
|
||||||
|
validator: (rule, value) => {
|
||||||
|
if (isLinkChecked.value) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
if (!value || value.trim() === '') {
|
||||||
|
return Promise.reject('视频编号 必填');
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
}],
|
||||||
videoStatus: [{ required: true, message: '状态 必填' }],
|
videoStatus: [{ required: true, message: '状态 必填' }],
|
||||||
pushDate: [{ required: true, message: '发表时间 必填' }],
|
pushDate: [
|
||||||
};
|
{ required: true, message: '发表时间 必填' },
|
||||||
|
{
|
||||||
|
validator: (rule, value) => {
|
||||||
|
if (!value) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
const selectedDate = new Date(value);
|
||||||
|
const currentDate = new Date();
|
||||||
|
// 设置当前时间为当天的23:59:59,允许选择当天
|
||||||
|
currentDate.setHours(23, 59, 59, 999);
|
||||||
|
|
||||||
|
if (selectedDate > currentDate) {
|
||||||
|
return Promise.reject('发表时间不能大于当前时间');
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
isLinkUrl: [{
|
||||||
|
required: isLinkChecked.value,
|
||||||
|
message: '外部链接地址 必填',
|
||||||
|
validator: (rule, value) => {
|
||||||
|
if (!isLinkChecked.value) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
if (!value || value.trim() === '') {
|
||||||
|
return Promise.reject('外部链接地址 必填');
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
authorList: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '作者 必填',
|
||||||
|
validator: (rule, value) => {
|
||||||
|
if (!value || !Array.isArray(value) || value.length === 0) {
|
||||||
|
return Promise.reject('请至少选择一个作者');
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
}));
|
||||||
|
|
||||||
// 点击确定,验证表单
|
// 点击确定,验证表单
|
||||||
async function onSubmit() {
|
async function onSubmit() {
|
||||||
@ -371,17 +450,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------ 外部链接相关 ------------------------
|
|
||||||
const isLinkChecked = computed({
|
|
||||||
get: () => form.isLink === 1,
|
|
||||||
set: (value) => {
|
|
||||||
form.isLink = value ? 1 : 0;
|
|
||||||
if (!value) {
|
|
||||||
form.isLinkUrl = undefined;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// ------------------------ 标签相关 ------------------------
|
// ------------------------ 标签相关 ------------------------
|
||||||
const selectedLabels = ref([null, null, null]);
|
const selectedLabels = ref([null, null, null]);
|
||||||
const labelOptions = ref([[], [], []]);
|
const labelOptions = ref([[], [], []]);
|
||||||
@ -612,6 +680,54 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 禁用未来日期
|
||||||
|
function disabledFutureDate(current) {
|
||||||
|
// 禁用今天之后的日期
|
||||||
|
return current && current > dayjs().endOf('day');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 禁用未来时间
|
||||||
|
function disabledFutureTime(date) {
|
||||||
|
if (date) {
|
||||||
|
const today = dayjs();
|
||||||
|
const selectedDate = dayjs(date);
|
||||||
|
|
||||||
|
// 如果是今天,禁用未来时间
|
||||||
|
if (selectedDate.isSame(today, 'day')) {
|
||||||
|
return {
|
||||||
|
disabledHours: () => {
|
||||||
|
const hours = [];
|
||||||
|
for (let i = today.hour() + 1; i < 24; i++) {
|
||||||
|
hours.push(i);
|
||||||
|
}
|
||||||
|
return hours;
|
||||||
|
},
|
||||||
|
disabledMinutes: (hour) => {
|
||||||
|
if (hour === today.hour()) {
|
||||||
|
const minutes = [];
|
||||||
|
for (let i = today.minute() + 1; i < 60; i++) {
|
||||||
|
minutes.push(i);
|
||||||
|
}
|
||||||
|
return minutes;
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
disabledSeconds: (hour, minute) => {
|
||||||
|
if (hour === today.hour() && minute === today.minute()) {
|
||||||
|
const seconds = [];
|
||||||
|
for (let i = today.second() + 1; i < 60; i++) {
|
||||||
|
seconds.push(i);
|
||||||
|
}
|
||||||
|
return seconds;
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 暴露方法
|
// 暴露方法
|
||||||
defineExpose({
|
defineExpose({
|
||||||
|
|||||||
@ -10,13 +10,10 @@
|
|||||||
<a-form class="smart-query-form">
|
<a-form class="smart-query-form">
|
||||||
<a-row class="smart-query-form-row">
|
<a-row class="smart-query-form-row">
|
||||||
<a-form-item label="关键字" class="smart-query-form-item">
|
<a-form-item label="关键字" class="smart-query-form-item">
|
||||||
<a-input style="width: 200px" v-model:value="queryForm.keywords" placeholder="标题/作者/" />
|
<a-input style="width: 200px" v-model:value="queryForm.keywords" placeholder="疾病名称/标题/作者" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="状态" name="videoStatus" class="smart-query-form-item">
|
<a-form-item label="状态" name="videoStatus" class="smart-query-form-item">
|
||||||
<SmartEnumSelect enum-name="STATUS_ENUM" v-model:value="queryForm.videoStatus" width="160px" />
|
<SmartEnumSelect enum-name="STATUS_ENUM" v-model:value="queryForm.videoStatus" width="160px" />
|
||||||
</a-form-item>
|
|
||||||
<a-form-item label="删除状态" name="deleteStatus" class="smart-query-form-item">
|
|
||||||
<SmartEnumSelect enum-name="DELETE_STATUS_ENUM" v-model:value="queryForm.deleteStatus" width="160px" />
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item class="smart-query-form-item">
|
<a-form-item class="smart-query-form-item">
|
||||||
<a-button type="primary" @click="onSearch">
|
<a-button type="primary" @click="onSearch">
|
||||||
@ -107,10 +104,6 @@
|
|||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="column.dataIndex === 'deleteStatus'">
|
|
||||||
<span>{{ text === 1 ? '是' : '否' }}</span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template v-if="column.dataIndex === 'videoTitle'">
|
<template v-if="column.dataIndex === 'videoTitle'">
|
||||||
<div class="text-wrap">{{ text }}</div>
|
<div class="text-wrap">{{ text }}</div>
|
||||||
</template>
|
</template>
|
||||||
@ -196,11 +189,6 @@
|
|||||||
},
|
},
|
||||||
width: 150,
|
width: 150,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: '删除状态',
|
|
||||||
dataIndex: 'deleteStatus',
|
|
||||||
ellipsis: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: '阅读量',
|
title: '阅读量',
|
||||||
dataIndex: 'readNum',
|
dataIndex: 'readNum',
|
||||||
@ -239,7 +227,6 @@
|
|||||||
const queryFormState = {
|
const queryFormState = {
|
||||||
keywords: undefined, //关键字
|
keywords: undefined, //关键字
|
||||||
videoStatus: undefined, //状态
|
videoStatus: undefined, //状态
|
||||||
deleteStatus: undefined, //删除状态
|
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -45,6 +45,8 @@
|
|||||||
v-model:value="form.pushDate"
|
v-model:value="form.pushDate"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
placeholder="发表时间"
|
placeholder="发表时间"
|
||||||
|
:disabled-date="disabledFutureDate"
|
||||||
|
:disabled-time="disabledFutureTime"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="内容" name="exchangeContent">
|
<a-form-item label="内容" name="exchangeContent">
|
||||||
@ -222,13 +224,15 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { reactive, ref, nextTick, computed } from 'vue';
|
import { reactive, ref, nextTick, computed } from 'vue';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { message } from 'ant-design-vue';
|
import { message, Modal } from 'ant-design-vue';
|
||||||
import { SmartLoading } from '/@/components/framework/smart-loading';
|
import { SmartLoading } from '/@/components/framework/smart-loading';
|
||||||
import { caseExchangeApi } from '/@/api/business/case-exchange/case-exchange-api';
|
import { caseExchangeApi } from '/@/api/business/case-exchange/case-exchange-api';
|
||||||
|
import { caseClinicalArticleApi } from '/@/api/business/case-clinical-article/case-clinical-article-api';
|
||||||
import { smartSentry } from '/@/lib/smart-sentry';
|
import { smartSentry } from '/@/lib/smart-sentry';
|
||||||
import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';
|
|
||||||
import SmartWangeditor from '/@/components/framework/wangeditor/index.vue';
|
import SmartWangeditor from '/@/components/framework/wangeditor/index.vue';
|
||||||
|
import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';
|
||||||
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons-vue';
|
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons-vue';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
// ------------------------ 事件 ------------------------
|
// ------------------------ 事件 ------------------------
|
||||||
|
|
||||||
@ -333,7 +337,7 @@
|
|||||||
exchangeTitle: undefined, //标题
|
exchangeTitle: undefined, //标题
|
||||||
exchangeStatus: 1, //状态(1:正常 2:禁用)- 默认为正常
|
exchangeStatus: 1, //状态(1:正常 2:禁用)- 默认为正常
|
||||||
isSelected: 0, //精选状态(0:否 1:是)- 默认为否
|
isSelected: 0, //精选状态(0:否 1:是)- 默认为否
|
||||||
pushDate: undefined, //发表时间
|
pushDate: new Date().toISOString().slice(0, 19).replace('T', ' '), //发表时间,默认为当天
|
||||||
exchangeContent: '', //内容
|
exchangeContent: '', //内容
|
||||||
exchangeSummary: undefined, //总结
|
exchangeSummary: undefined, //总结
|
||||||
labelList: [], //标签列表
|
labelList: [], //标签列表
|
||||||
@ -371,7 +375,25 @@
|
|||||||
exchangeTitle: [{ required: true, message: '标题 必填' }],
|
exchangeTitle: [{ required: true, message: '标题 必填' }],
|
||||||
exchangeStatus: [{ required: true, message: '状态 必填' }],
|
exchangeStatus: [{ required: true, message: '状态 必填' }],
|
||||||
isSelected: [{ required: true, message: '精选状态 必填' }],
|
isSelected: [{ required: true, message: '精选状态 必填' }],
|
||||||
pushDate: [{ required: true, message: '发表时间 必填' }],
|
pushDate: [
|
||||||
|
{ required: true, message: '发表时间 必填' },
|
||||||
|
{
|
||||||
|
validator: (rule, value) => {
|
||||||
|
if (!value) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
const selectedDate = new Date(value);
|
||||||
|
const currentDate = new Date();
|
||||||
|
// 设置当前时间为当天的23:59:59,允许选择当天
|
||||||
|
currentDate.setHours(23, 59, 59, 999);
|
||||||
|
|
||||||
|
if (selectedDate > currentDate) {
|
||||||
|
return Promise.reject('发表时间不能大于当前时间');
|
||||||
|
}
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
exchangeContent: [{ required: true, message: '内容 必填' }],
|
exchangeContent: [{ required: true, message: '内容 必填' }],
|
||||||
exchangeSummary: [{ required: true, message: '总结 必填' }],
|
exchangeSummary: [{ required: true, message: '总结 必填' }],
|
||||||
};
|
};
|
||||||
@ -535,6 +557,53 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 禁用未来日期
|
||||||
|
function disabledFutureDate(current) {
|
||||||
|
return current && current > dayjs().endOf('day').toDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 禁用未来时间
|
||||||
|
function disabledFutureTime(date) {
|
||||||
|
if (date) {
|
||||||
|
const today = dayjs();
|
||||||
|
const selectedDate = dayjs(date);
|
||||||
|
|
||||||
|
// 如果是今天,禁用未来时间
|
||||||
|
if (selectedDate.isSame(today, 'day')) {
|
||||||
|
return {
|
||||||
|
disabledHours: () => {
|
||||||
|
const hours = [];
|
||||||
|
for (let i = today.hour() + 1; i < 24; i++) {
|
||||||
|
hours.push(i);
|
||||||
|
}
|
||||||
|
return hours;
|
||||||
|
},
|
||||||
|
disabledMinutes: (hour) => {
|
||||||
|
if (hour === today.hour()) {
|
||||||
|
const minutes = [];
|
||||||
|
for (let i = today.minute() + 1; i < 60; i++) {
|
||||||
|
minutes.push(i);
|
||||||
|
}
|
||||||
|
return minutes;
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
disabledSeconds: (hour, minute) => {
|
||||||
|
if (hour === today.hour() && minute === today.minute()) {
|
||||||
|
const seconds = [];
|
||||||
|
for (let i = today.second() + 1; i < 60; i++) {
|
||||||
|
seconds.push(i);
|
||||||
|
}
|
||||||
|
return seconds;
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
show,
|
show,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -238,7 +238,7 @@
|
|||||||
title: '操作',
|
title: '操作',
|
||||||
dataIndex: 'action',
|
dataIndex: 'action',
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
width: 90,
|
width: 120,
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user