Files
----/后端源码/yifan.action-ai.cn/index/js/index.C9fbkg-5.js

1457 lines
59 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { a1 as ElUpload, b3 as circle_close_filled_default, i as ElIcon, b4 as video_camera_default, E as ElMessage, x as ElFormItem, y as ElInput, aq as ElSelect, ar as ElOption, h as ElButton, t as ElLink, ag as arrow_up_default, af as arrow_down_default, w as ElForm, U as ElRow, V as ElCol, m as ElDropdown, n as ElDropdownMenu, o as ElDropdownItem, N as check_default, a8 as circle_close_default, l as ElTooltip, ax as ElPopover, F as ElScrollbar, aC as ElCheckbox, al as ElTable, am as ElTableColumn, R as ElImage, q as ElTag, u as ElEmpty, ao as vLoading, a9 as question_filled_default, T as ElCard, a3 as ElDescriptions, a4 as ElDescriptionsItem, P as ElRadioGroup, Q as ElRadio, v as ElDialog, D as ElMessageBox } from "./element-plus.CkEW9frc.js";
import { _ as __unplugin_components_19 } from "./index.fgd49PES.js";
import { _ as _sfc_main$2 } from "./UserTableSelect.vue_vue_type_script_setup_true_lang.7Fjc3bJT.js";
import { J as defineComponent, ev as useModel, m as watch, S as openBlock, _ as createElementBlock, $ as createVNode, a0 as withCtx, aw as withModifiers, T as createBlock, o as unref, a8 as createCommentVNode, a1 as createBaseVNode, aa as toDisplayString, ez as mergeModels, r as ref, t as onMounted, aP as resolveDirective, a6 as withDirectives, ab as vShow, a9 as createTextVNode, H as Fragment, ay as renderList, ak as reactive } from "./.pnpm.BW3P1y8f.js";
import { l as httpRequest, P as ParamsAPI, j as useDictStore, R as ResultEnum } from "./index.CMd5bD1r.js";
import { _ as _sfc_main$3 } from "./ImportModal.vue_vue_type_script_setup_true_lang.DYvH1hkB.js";
import { _ as _sfc_main$4 } from "./ExportModal.vue_vue_type_script_setup_true_lang.Bok1HJuH.js";
import { S as SingleImageUpload } from "./SingleImageUpload.CngBsWfh.js";
import { _ as _export_sfc } from "./_plugin-vue_export-helper.1tPrXgE0.js";
import "./codemirror.CvJAcn2d.js";
import "./exceljs.CkFT-P7Q.js";
const API_PATH = "/yifan/yifan_about_video";
const YifanAboutVideoAPI = {
// 列表查询
listYifanAboutVideo(query) {
return httpRequest({
url: `${API_PATH}/list`,
method: "get",
params: query
});
},
// 详情查询
detailYifanAboutVideo(id) {
return httpRequest({
url: `${API_PATH}/detail/${id}`,
method: "get"
});
},
// 新增
createYifanAboutVideo(body) {
return httpRequest({
url: `${API_PATH}/create`,
method: "post",
data: body
});
},
// 修改(带主键)
updateYifanAboutVideo(id, body) {
return httpRequest({
url: `${API_PATH}/update/${id}`,
method: "put",
data: body
});
},
// 删除(支持批量)
deleteYifanAboutVideo(ids) {
return httpRequest({
url: `${API_PATH}/delete`,
method: "delete",
data: ids
});
},
// 批量启用/停用
batchYifanAboutVideo(body) {
return httpRequest({
url: `${API_PATH}/available/setting`,
method: "patch",
data: body
});
},
// 导出
exportYifanAboutVideo(query) {
return httpRequest({
url: `${API_PATH}/export`,
method: "post",
data: query,
responseType: "blob"
});
},
// 下载导入模板
downloadTemplateYifanAboutVideo() {
return httpRequest({
url: `${API_PATH}/download/template`,
method: "post",
responseType: "blob"
});
},
// 导入
importYifanAboutVideo(body) {
return httpRequest({
url: `${API_PATH}/import`,
method: "post",
data: body,
headers: { "Content-Type": "multipart/form-data" }
});
}
};
const _hoisted_1$1 = { class: "single-video-upload" };
const _hoisted_2$1 = {
key: 0,
class: "single-upload__video-wrapper"
};
const _hoisted_3$1 = ["src"];
const _hoisted_4$1 = {
key: 1,
class: "single-upload__placeholder"
};
const _hoisted_5$1 = {
key: 0,
class: "el-upload__tip"
};
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
__name: "SingleVideoUpload",
props: /* @__PURE__ */ mergeModels({
data: {
type: Object,
default: () => ({})
},
name: {
type: String,
default: "file"
},
maxFileSize: {
type: Number,
default: 500
},
accept: {
type: String,
default: "video/*"
},
disabled: {
type: Boolean,
default: false
},
showTip: {
type: Boolean,
default: true
},
tipText: {
type: String,
default: ""
}
}, {
"modelValue": { default: "" },
"modelModifiers": {}
}),
emits: /* @__PURE__ */ mergeModels(["success", "error", "update:modelValue"], ["update:modelValue"]),
setup(__props, { emit: __emit }) {
const props = __props;
const modelValue = useModel(__props, "modelValue");
const internalFileList = ref([]);
watch(
() => modelValue.value,
(newVal) => {
if (newVal) {
internalFileList.value = [{ name: newVal.split("/").pop() || "video", url: newVal }];
} else {
internalFileList.value = [];
}
},
{ immediate: true }
);
watch(
() => internalFileList.value,
(newVal) => {
if (newVal && newVal.length > 0 && newVal[0].url) {
modelValue.value = newVal[0].url;
} else {
modelValue.value = "";
}
},
{ deep: true }
);
const emit = __emit;
function handleBeforeUpload(file) {
const acceptTypes = props.accept.split(",").map((type) => type.trim());
const isValidType = acceptTypes.some((type) => {
if (type === "video/*") return file.type.startsWith("video/");
if (type.startsWith(".")) return file.name.toLowerCase().endsWith(type);
return file.type === type;
});
if (!isValidType) {
ElMessage.warning(`上传文件格式不正确,仅支持:${props.accept}`);
return false;
}
if (file.size > props.maxFileSize * 1024 * 1024) {
ElMessage.warning(`上传视频不能大于 ${props.maxFileSize}MB`);
return false;
}
return true;
}
async function handleUpload(options) {
try {
const formData = new FormData();
formData.append(props.name, options.file);
for (const [key, value] of Object.entries(props.data)) {
formData.append(key, String(value));
}
const response = await ParamsAPI.uploadFile(formData);
if (response.data.code === 0 && response.data) {
const fileInfo = response.data.data;
onSuccess(fileInfo);
return fileInfo;
} else {
const errorMsg = response.data.msg || "上传失败";
ElMessage.error(errorMsg);
throw new Error(errorMsg);
}
} catch (error) {
onError(error instanceof Error ? error : new Error(String(error)));
throw error;
}
}
function handleDelete() {
internalFileList.value = [];
}
const onSuccess = (fileInfo) => {
internalFileList.value = [{ name: fileInfo.file_name, url: fileInfo.file_url }];
emit("success", fileInfo);
emit("update:modelValue", fileInfo.file_url);
};
const onError = (error) => {
console.error("视频上传失败:", error);
ElMessage.error("视频上传失败,请重试");
emit("error", error);
};
return (_ctx, _cache) => {
const _component_el_icon = ElIcon;
const _component_el_upload = ElUpload;
return openBlock(), createElementBlock("div", _hoisted_1$1, [
createVNode(_component_el_upload, {
"file-list": internalFileList.value,
"onUpdate:fileList": _cache[1] || (_cache[1] = ($event) => internalFileList.value = $event),
class: "single-upload",
"show-file-list": false,
accept: props.accept,
"before-upload": handleBeforeUpload,
"http-request": handleUpload,
"on-success": onSuccess,
"on-error": onError,
"on-remove": handleDelete,
disabled: props.disabled,
drag: ""
}, {
default: withCtx(() => [
internalFileList.value && internalFileList.value.length > 0 && internalFileList.value[0].url ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
(openBlock(), createElementBlock("video", {
key: internalFileList.value[0].url,
class: "single-upload__video",
src: internalFileList.value[0].url,
controls: "",
onClick: _cache[0] || (_cache[0] = withModifiers(() => {
}, ["stop"]))
}, null, 8, _hoisted_3$1)),
!props.disabled ? (openBlock(), createBlock(_component_el_icon, {
key: 0,
class: "single-upload__delete-btn",
onClick: withModifiers(handleDelete, ["stop"])
}, {
default: withCtx(() => [
createVNode(unref(circle_close_filled_default))
]),
_: 1
})) : createCommentVNode("", true)
])) : (openBlock(), createElementBlock("div", _hoisted_4$1, [
createVNode(_component_el_icon, { class: "single-upload__add-btn" }, {
default: withCtx(() => [
createVNode(unref(video_camera_default))
]),
_: 1
}),
_cache[2] || (_cache[2] = createBaseVNode("div", { class: "single-upload__text" }, "点击或拖拽上传视频", -1))
]))
]),
_: 1
}, 8, ["file-list", "accept", "disabled"]),
props.showTip ? (openBlock(), createElementBlock("div", _hoisted_5$1, toDisplayString(props.tipText || `支持 ${props.accept} 格式,文件大小不超过 ${props.maxFileSize}MB`), 1)) : createCommentVNode("", true)
]);
};
}
});
const SingleVideoUpload = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-c0f17717"]]);
const _hoisted_1 = { class: "app-container" };
const _hoisted_2 = { class: "search-container" };
const _hoisted_3 = { class: "card-header" };
const _hoisted_4 = { class: "data-table__toolbar" };
const _hoisted_5 = { class: "data-table__toolbar--left" };
const _hoisted_6 = { class: "data-table__toolbar--right" };
const _hoisted_7 = { key: 1 };
const _hoisted_8 = { class: "dialog-footer" };
const _sfc_main = /* @__PURE__ */ defineComponent({
...{
name: "YifanAboutVideo",
inheritAttrs: false
},
__name: "index",
setup(__props) {
const visible = ref(true);
const isExpand = ref(false);
const isExpandable = ref(true);
const queryFormRef = ref();
const dataFormRef = ref();
const total = ref(0);
const selectIds = ref([]);
const selectionRows = ref([]);
const loading = ref(false);
const dictStore = useDictStore();
const dictTypes = [];
const pageTableData = ref([]);
const tableColumns = ref([
{ prop: "selection", label: "选择框", show: true },
{ prop: "index", label: "序号", show: true },
{ prop: "title", label: "视频标题", show: true },
{ prop: "subtitle", label: "副标题/期数", show: true },
{ prop: "cover_url", label: "封面图", show: true },
{ prop: "video_url", label: "视频URL", show: true },
{ prop: "status", label: "状态0禁用 1启用", show: true },
{ prop: "created_id", label: "创建人ID", show: true },
{ prop: "updated_id", label: "更新人ID", show: true },
{ prop: "operation", label: "操作", show: true }
]);
const exportColumns = [
{ prop: "title", label: "视频标题" },
{ prop: "subtitle", label: "副标题/期数" },
{ prop: "cover_url", label: "封面图URL" },
{ prop: "video_url", label: "视频URL" },
{ prop: "status", label: "状态0禁用 1启用" },
{ prop: "created_id", label: "创建人ID" },
{ prop: "updated_id", label: "更新人ID" }
];
const curdContentConfig = {
permPrefix: "module_yifan:yifan_about_video",
cols: exportColumns,
importTemplate: () => YifanAboutVideoAPI.downloadTemplateYifanAboutVideo(),
exportsAction: async (params) => {
var _a, _b, _c, _d;
const query = { ...params };
query.status = "0";
query.page_no = 1;
query.page_size = 9999;
const all = [];
while (true) {
const res = await YifanAboutVideoAPI.listYifanAboutVideo(query);
const items = ((_b = (_a = res.data) == null ? void 0 : _a.data) == null ? void 0 : _b.items) || [];
const total2 = ((_d = (_c = res.data) == null ? void 0 : _c.data) == null ? void 0 : _d.total) || 0;
all.push(...items);
if (all.length >= total2 || items.length === 0) break;
query.page_no += 1;
}
return all;
}
};
const detailFormData = ref({});
const createdDateRange = ref([]);
const updatedDateRange = ref([]);
const queryFormData = reactive({
page_no: 1,
page_size: 10,
title: void 0,
subtitle: void 0,
cover_url: void 0,
video_url: void 0,
status: void 0,
created_id: void 0,
updated_id: void 0
});
const formData = reactive({
id: void 0,
title: void 0,
subtitle: void 0,
cover_url: void 0,
video_url: void 0,
status: void 0
});
const dialogVisible = reactive({
title: "",
visible: false,
type: "create"
});
const rules = reactive({
id: [
{ required: false, message: "请输入主键ID", trigger: "blur" }
],
title: [
{ required: true, message: "请输入视频标题", trigger: "blur" }
],
subtitle: [
{ required: false, message: "请输入副标题/期数", trigger: "blur" }
],
cover_url: [
{ required: false, message: "请输入封面图URL", trigger: "blur" }
],
video_url: [
{ required: true, message: "请输入视频URL", trigger: "blur" }
],
status: [
{ required: false, message: "请输入状态0禁用 1启用", trigger: "blur" }
],
created_id: [
{ required: false, message: "请输入创建人ID", trigger: "blur" }
],
updated_id: [
{ required: false, message: "请输入更新人ID", trigger: "blur" }
]
});
const importDialogVisible = ref(false);
const exportsDialogVisible = ref(false);
function handleOpenImportDialog() {
importDialogVisible.value = true;
}
function handleOpenExportsModal() {
exportsDialogVisible.value = true;
}
async function handleRefresh() {
await loadingData();
}
async function loadingData() {
loading.value = true;
try {
const response = await YifanAboutVideoAPI.listYifanAboutVideo(queryFormData);
pageTableData.value = response.data.data.items;
total.value = response.data.data.total;
} catch (error) {
console.error(error);
} finally {
loading.value = false;
}
}
async function handleQuery() {
queryFormData.page_no = 1;
loadingData();
}
function handleConfirm() {
handleQuery();
}
async function handleResetQuery() {
queryFormRef.value.resetFields();
queryFormData.page_no = 1;
createdDateRange.value = [];
updatedDateRange.value = [];
queryFormData.created_time = void 0;
queryFormData.updated_time = void 0;
loadingData();
}
const initialFormData = {
id: void 0,
title: void 0,
subtitle: void 0,
cover_url: void 0,
video_url: void 0,
status: void 0
};
async function resetForm() {
if (dataFormRef.value) {
dataFormRef.value.resetFields();
dataFormRef.value.clearValidate();
}
Object.assign(formData, initialFormData);
}
async function handleSelectionChange(selection) {
selectIds.value = selection.map((item) => item.id);
selectionRows.value = selection;
}
async function handleCloseDialog() {
dialogVisible.visible = false;
resetForm();
}
async function handleOpenDialog(type, id) {
dialogVisible.type = type;
if (id) {
const response = await YifanAboutVideoAPI.detailYifanAboutVideo(id);
if (type === "detail") {
dialogVisible.title = "详情";
Object.assign(detailFormData.value, response.data.data);
} else if (type === "update") {
dialogVisible.title = "修改";
const data = response.data.data;
if (data.status !== void 0 && data.status !== null) {
data.status = String(data.status);
}
Object.assign(formData, data);
}
} else {
dialogVisible.title = "新增YifanAboutVideo";
formData.id = void 0;
formData.title = void 0;
formData.subtitle = void 0;
formData.cover_url = void 0;
formData.video_url = void 0;
formData.status = void 0;
}
dialogVisible.visible = true;
}
async function handleSubmit() {
dataFormRef.value.validate(async (valid) => {
if (valid) {
loading.value = true;
const id = formData.id;
if (id) {
try {
await YifanAboutVideoAPI.updateYifanAboutVideo(id, { id, ...formData });
dialogVisible.visible = false;
resetForm();
handleCloseDialog();
handleResetQuery();
} catch (error) {
console.error(error);
} finally {
loading.value = false;
}
} else {
try {
await YifanAboutVideoAPI.createYifanAboutVideo(formData);
dialogVisible.visible = false;
resetForm();
handleCloseDialog();
handleResetQuery();
} catch (error) {
console.error(error);
} finally {
loading.value = false;
}
}
}
});
}
async function handleDelete(ids) {
ElMessageBox.confirm("确认删除该项数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
try {
loading.value = true;
await YifanAboutVideoAPI.deleteYifanAboutVideo(ids);
handleResetQuery();
} catch (error) {
console.error(error);
} finally {
loading.value = false;
}
}).catch(() => {
ElMessageBox.close();
});
}
async function handleMoreClick(status) {
if (selectIds.value.length) {
ElMessageBox.confirm(`确认${status === "0" ? "启用" : "停用"}该项数据?`, "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
try {
loading.value = true;
await YifanAboutVideoAPI.batchYifanAboutVideo({ ids: selectIds.value, status });
handleResetQuery();
} catch (error) {
console.error(error);
} finally {
loading.value = false;
}
}).catch(() => {
ElMessageBox.close();
});
}
}
const handleUpload = async (formData2) => {
try {
const response = await YifanAboutVideoAPI.importYifanAboutVideo(formData2);
if (response.data.code === ResultEnum.SUCCESS) {
ElMessage.success(`${response.data.msg}${response.data.data}`);
importDialogVisible.value = false;
await handleQuery();
}
} catch (error) {
console.error(error);
}
};
onMounted(async () => {
if (dictTypes.length > 0) {
await dictStore.getDict(dictTypes);
}
loadingData();
});
return (_ctx, _cache) => {
const _component_el_input = ElInput;
const _component_el_form_item = ElFormItem;
const _component_el_option = ElOption;
const _component_el_select = ElSelect;
const _component_UserTableSelect = _sfc_main$2;
const _component_el_button = ElButton;
const _component_el_icon = ElIcon;
const _component_el_link = ElLink;
const _component_el_form = ElForm;
const _component_el_tooltip = ElTooltip;
const _component_el_col = ElCol;
const _component_el_dropdown_item = ElDropdownItem;
const _component_el_dropdown_menu = ElDropdownMenu;
const _component_el_dropdown = ElDropdown;
const _component_el_row = ElRow;
const _component_el_checkbox = ElCheckbox;
const _component_el_scrollbar = ElScrollbar;
const _component_el_popover = ElPopover;
const _component_el_empty = ElEmpty;
const _component_el_table_column = ElTableColumn;
const _component_el_image = ElImage;
const _component_el_tag = ElTag;
const _component_el_table = ElTable;
const _component_pagination = __unplugin_components_19;
const _component_el_card = ElCard;
const _component_el_descriptions_item = ElDescriptionsItem;
const _component_el_descriptions = ElDescriptions;
const _component_el_radio = ElRadio;
const _component_el_radio_group = ElRadioGroup;
const _component_el_dialog = ElDialog;
const _directive_hasPerm = resolveDirective("hasPerm");
const _directive_loading = vLoading;
return openBlock(), createElementBlock("div", _hoisted_1, [
withDirectives(createBaseVNode("div", _hoisted_2, [
createVNode(_component_el_form, {
ref_key: "queryFormRef",
ref: queryFormRef,
model: queryFormData,
"label-suffix": ":",
inline: true,
onSubmit: withModifiers(handleQuery, ["prevent"])
}, {
default: withCtx(() => [
createVNode(_component_el_form_item, {
label: "视频标题",
prop: "title"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: queryFormData.title,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => queryFormData.title = $event),
placeholder: "请输入视频标题",
clearable: ""
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, {
label: "副标题/期数",
prop: "subtitle"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: queryFormData.subtitle,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => queryFormData.subtitle = $event),
placeholder: "请输入副标题/期数",
clearable: ""
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, {
label: "封面图URL",
prop: "cover_url"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: queryFormData.cover_url,
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => queryFormData.cover_url = $event),
placeholder: "请输入封面图URL",
clearable: ""
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, {
label: "视频URL",
prop: "video_url"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: queryFormData.video_url,
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => queryFormData.video_url = $event),
placeholder: "请输入视频URL",
clearable: ""
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, {
prop: "status",
label: "状态"
}, {
default: withCtx(() => [
createVNode(_component_el_select, {
modelValue: queryFormData.status,
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => queryFormData.status = $event),
placeholder: "请选择状态",
style: { "width": "170px" },
clearable: ""
}, {
default: withCtx(() => [
createVNode(_component_el_option, {
value: "0",
label: "启用"
}),
createVNode(_component_el_option, {
value: "1",
label: "停用"
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}),
isExpand.value ? (openBlock(), createBlock(_component_el_form_item, {
key: 0,
prop: "created_id",
label: "创建人"
}, {
default: withCtx(() => [
createVNode(_component_UserTableSelect, {
modelValue: queryFormData.created_id,
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => queryFormData.created_id = $event),
onConfirmClick: handleConfirm,
onClearClick: handleQuery
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
isExpand.value ? (openBlock(), createBlock(_component_el_form_item, {
key: 1,
prop: "updated_id",
label: "更新人"
}, {
default: withCtx(() => [
createVNode(_component_UserTableSelect, {
modelValue: queryFormData.updated_id,
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => queryFormData.updated_id = $event),
onConfirmClick: handleConfirm,
onClearClick: handleQuery
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
createVNode(_component_el_form_item, null, {
default: withCtx(() => [
withDirectives((openBlock(), createBlock(_component_el_button, {
type: "primary",
icon: "search",
onClick: handleQuery
}, {
default: withCtx(() => [..._cache[24] || (_cache[24] = [
createTextVNode(" 查询 ", -1)
])]),
_: 1
})), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:query"]]
]),
withDirectives((openBlock(), createBlock(_component_el_button, {
icon: "refresh",
onClick: handleResetQuery
}, {
default: withCtx(() => [..._cache[25] || (_cache[25] = [
createTextVNode(" 重置 ", -1)
])]),
_: 1
})), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:query"]]
]),
isExpandable.value ? (openBlock(), createBlock(_component_el_link, {
key: 0,
class: "ml-3",
type: "primary",
underline: "never",
onClick: _cache[7] || (_cache[7] = ($event) => isExpand.value = !isExpand.value)
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(isExpand.value ? "收起" : "展开") + " ", 1),
createVNode(_component_el_icon, null, {
default: withCtx(() => [
isExpand.value ? (openBlock(), createBlock(unref(arrow_up_default), { key: 0 })) : (openBlock(), createBlock(unref(arrow_down_default), { key: 1 }))
]),
_: 1
})
]),
_: 1
})) : createCommentVNode("", true)
]),
_: 1
})
]),
_: 1
}, 8, ["model"])
], 512), [
[vShow, visible.value]
]),
createVNode(_component_el_card, { class: "data-table" }, {
header: withCtx(() => [
createBaseVNode("div", _hoisted_3, [
createBaseVNode("span", null, [
_cache[26] || (_cache[26] = createTextVNode(" 视频内容列表 ", -1)),
createVNode(_component_el_tooltip, { content: "视频内容列表" }, {
default: withCtx(() => [
createVNode(unref(question_filled_default), { class: "w-4 h-4 mx-1" })
]),
_: 1
})
])
])
]),
footer: withCtx(() => [
createVNode(_component_pagination, {
total: total.value,
"onUpdate:total": _cache[13] || (_cache[13] = ($event) => total.value = $event),
page: queryFormData.page_no,
"onUpdate:page": _cache[14] || (_cache[14] = ($event) => queryFormData.page_no = $event),
limit: queryFormData.page_size,
"onUpdate:limit": _cache[15] || (_cache[15] = ($event) => queryFormData.page_size = $event),
onPagination: loadingData
}, null, 8, ["total", "page", "limit"])
]),
default: withCtx(() => [
createBaseVNode("div", _hoisted_4, [
createBaseVNode("div", _hoisted_5, [
createVNode(_component_el_row, { gutter: 10 }, {
default: withCtx(() => [
createVNode(_component_el_col, { span: 1.5 }, {
default: withCtx(() => [
withDirectives((openBlock(), createBlock(_component_el_button, {
type: "success",
icon: "plus",
onClick: _cache[8] || (_cache[8] = ($event) => handleOpenDialog("create"))
}, {
default: withCtx(() => [..._cache[27] || (_cache[27] = [
createTextVNode(" 新增 ", -1)
])]),
_: 1
})), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:create"]]
])
]),
_: 1
}),
createVNode(_component_el_col, { span: 1.5 }, {
default: withCtx(() => [
withDirectives((openBlock(), createBlock(_component_el_button, {
type: "danger",
icon: "delete",
disabled: selectIds.value.length === 0,
onClick: _cache[9] || (_cache[9] = ($event) => handleDelete(selectIds.value))
}, {
default: withCtx(() => [..._cache[28] || (_cache[28] = [
createTextVNode(" 批量删除 ", -1)
])]),
_: 1
}, 8, ["disabled"])), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:delete"]]
])
]),
_: 1
}),
createVNode(_component_el_col, { span: 1.5 }, {
default: withCtx(() => [
withDirectives((openBlock(), createBlock(_component_el_dropdown, { trigger: "click" }, {
dropdown: withCtx(() => [
createVNode(_component_el_dropdown_menu, null, {
default: withCtx(() => [
createVNode(_component_el_dropdown_item, {
icon: unref(check_default),
onClick: _cache[10] || (_cache[10] = ($event) => handleMoreClick("0"))
}, {
default: withCtx(() => [..._cache[30] || (_cache[30] = [
createTextVNode(" 批量启用 ", -1)
])]),
_: 1
}, 8, ["icon"]),
createVNode(_component_el_dropdown_item, {
icon: unref(circle_close_default),
onClick: _cache[11] || (_cache[11] = ($event) => handleMoreClick("1"))
}, {
default: withCtx(() => [..._cache[31] || (_cache[31] = [
createTextVNode(" 批量停用 ", -1)
])]),
_: 1
}, 8, ["icon"])
]),
_: 1
})
]),
default: withCtx(() => [
createVNode(_component_el_button, {
type: "default",
disabled: selectIds.value.length === 0,
icon: "ArrowDown"
}, {
default: withCtx(() => [..._cache[29] || (_cache[29] = [
createTextVNode(" 更多 ", -1)
])]),
_: 1
}, 8, ["disabled"])
]),
_: 1
})), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:batch"]]
])
]),
_: 1
})
]),
_: 1
})
]),
createBaseVNode("div", _hoisted_6, [
createVNode(_component_el_row, { gutter: 10 }, {
default: withCtx(() => [
createVNode(_component_el_col, { span: 1.5 }, {
default: withCtx(() => [
createVNode(_component_el_tooltip, { content: "导入" }, {
default: withCtx(() => [
withDirectives(createVNode(_component_el_button, {
type: "success",
icon: "upload",
circle: "",
onClick: handleOpenImportDialog
}, null, 512), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:import"]]
])
]),
_: 1
})
]),
_: 1
}),
createVNode(_component_el_col, { span: 1.5 }, {
default: withCtx(() => [
createVNode(_component_el_tooltip, { content: "导出" }, {
default: withCtx(() => [
withDirectives(createVNode(_component_el_button, {
type: "warning",
icon: "download",
circle: "",
onClick: handleOpenExportsModal
}, null, 512), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:export"]]
])
]),
_: 1
})
]),
_: 1
}),
createVNode(_component_el_col, { span: 1.5 }, {
default: withCtx(() => [
createVNode(_component_el_tooltip, { content: "搜索显示/隐藏" }, {
default: withCtx(() => [
withDirectives(createVNode(_component_el_button, {
type: "info",
icon: "search",
circle: "",
onClick: _cache[12] || (_cache[12] = ($event) => visible.value = !visible.value)
}, null, 512), [
[_directive_hasPerm, ["*:*:*"]]
])
]),
_: 1
})
]),
_: 1
}),
createVNode(_component_el_col, { span: 1.5 }, {
default: withCtx(() => [
createVNode(_component_el_tooltip, { content: "刷新" }, {
default: withCtx(() => [
withDirectives(createVNode(_component_el_button, {
type: "primary",
icon: "refresh",
circle: "",
onClick: handleRefresh
}, null, 512), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:query"]]
])
]),
_: 1
})
]),
_: 1
}),
createVNode(_component_el_col, { span: 1.5 }, {
default: withCtx(() => [
createVNode(_component_el_popover, {
placement: "bottom",
trigger: "click"
}, {
reference: withCtx(() => [
createVNode(_component_el_button, {
type: "danger",
icon: "operation",
circle: ""
})
]),
default: withCtx(() => [
createVNode(_component_el_scrollbar, { "max-height": "350px" }, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(tableColumns.value, (column) => {
return openBlock(), createElementBlock(Fragment, {
key: column.prop
}, [
column.prop ? (openBlock(), createBlock(_component_el_checkbox, {
key: 0,
modelValue: column.show,
"onUpdate:modelValue": ($event) => column.show = $event,
label: column.label
}, null, 8, ["modelValue", "onUpdate:modelValue", "label"])) : createCommentVNode("", true)
], 64);
}), 128))
]),
_: 1
})
]),
_: 1
})
]),
_: 1
})
]),
_: 1
})
])
]),
withDirectives((openBlock(), createBlock(_component_el_table, {
ref: "tableRef",
data: pageTableData.value,
"highlight-current-row": "",
class: "data-table__content",
height: 450,
border: "",
stripe: "",
onSelectionChange: handleSelectionChange
}, {
empty: withCtx(() => [
createVNode(_component_el_empty, {
"image-size": 80,
description: "暂无数据"
})
]),
default: withCtx(() => {
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
return [
((_a = tableColumns.value.find((col) => col.prop === "selection")) == null ? void 0 : _a.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 0,
type: "selection",
"min-width": "55",
align: "center"
})) : createCommentVNode("", true),
((_b = tableColumns.value.find((col) => col.prop === "index")) == null ? void 0 : _b.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 1,
fixed: "",
label: "序号",
"min-width": "60"
}, {
default: withCtx((scope) => [
createTextVNode(toDisplayString((queryFormData.page_no - 1) * queryFormData.page_size + scope.$index + 1), 1)
]),
_: 1
})) : createCommentVNode("", true),
((_c = tableColumns.value.find((col) => col.prop === "title")) == null ? void 0 : _c.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 2,
label: "视频标题",
prop: "title",
"min-width": "140"
})) : createCommentVNode("", true),
((_d = tableColumns.value.find((col) => col.prop === "subtitle")) == null ? void 0 : _d.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 3,
label: "副标题/期数",
prop: "subtitle",
"min-width": "140"
})) : createCommentVNode("", true),
((_e = tableColumns.value.find((col) => col.prop === "cover_url")) == null ? void 0 : _e.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 4,
label: "封面图",
prop: "cover_url",
"min-width": "120"
}, {
default: withCtx((scope) => [
scope.row.cover_url ? (openBlock(), createBlock(_component_el_image, {
key: 0,
src: scope.row.cover_url,
"preview-src-list": [scope.row.cover_url],
"preview-teleported": "",
fit: "cover",
style: { "width": "80px", "height": "60px", "border-radius": "4px" }
}, null, 8, ["src", "preview-src-list"])) : (openBlock(), createElementBlock("span", _hoisted_7, "-"))
]),
_: 1
})) : createCommentVNode("", true),
((_f = tableColumns.value.find((col) => col.prop === "video_url")) == null ? void 0 : _f.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 5,
label: "视频URL",
prop: "video_url",
"min-width": "140"
})) : createCommentVNode("", true),
((_g = tableColumns.value.find((col) => col.prop === "status")) == null ? void 0 : _g.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 6,
label: "状态0禁用 1启用",
prop: "status",
"min-width": "140"
}, {
default: withCtx((scope) => [
createVNode(_component_el_tag, {
type: scope.row.status == "0" ? "success" : "info"
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(scope.row.status == "0" ? "启用" : "停用"), 1)
]),
_: 2
}, 1032, ["type"])
]),
_: 1
})) : createCommentVNode("", true),
((_h = tableColumns.value.find((col) => col.prop === "created_id")) == null ? void 0 : _h.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 7,
label: "创建人ID",
prop: "created_id",
"min-width": "140"
}, {
default: withCtx((scope) => [
createVNode(_component_el_tag, null, {
default: withCtx(() => {
var _a2;
return [
createTextVNode(toDisplayString((_a2 = scope.row.created_by) == null ? void 0 : _a2.name), 1)
];
}),
_: 2
}, 1024)
]),
_: 1
})) : createCommentVNode("", true),
((_i = tableColumns.value.find((col) => col.prop === "updated_id")) == null ? void 0 : _i.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 8,
label: "更新人ID",
prop: "updated_id",
"min-width": "140"
}, {
default: withCtx((scope) => [
createVNode(_component_el_tag, null, {
default: withCtx(() => {
var _a2;
return [
createTextVNode(toDisplayString((_a2 = scope.row.updated_by) == null ? void 0 : _a2.name), 1)
];
}),
_: 2
}, 1024)
]),
_: 1
})) : createCommentVNode("", true),
((_j = tableColumns.value.find((col) => col.prop === "operation")) == null ? void 0 : _j.show) ? (openBlock(), createBlock(_component_el_table_column, {
key: 9,
fixed: "right",
label: "操作",
align: "center",
"min-width": "180"
}, {
default: withCtx((scope) => [
withDirectives((openBlock(), createBlock(_component_el_button, {
type: "info",
size: "small",
link: "",
icon: "document",
onClick: ($event) => handleOpenDialog("detail", scope.row.id)
}, {
default: withCtx(() => [..._cache[32] || (_cache[32] = [
createTextVNode(" 详情 ", -1)
])]),
_: 1
}, 8, ["onClick"])), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:detail"]]
]),
withDirectives((openBlock(), createBlock(_component_el_button, {
type: "primary",
size: "small",
link: "",
icon: "edit",
onClick: ($event) => handleOpenDialog("update", scope.row.id)
}, {
default: withCtx(() => [..._cache[33] || (_cache[33] = [
createTextVNode(" 编辑 ", -1)
])]),
_: 1
}, 8, ["onClick"])), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:update"]]
]),
withDirectives((openBlock(), createBlock(_component_el_button, {
type: "danger",
size: "small",
link: "",
icon: "delete",
onClick: ($event) => handleDelete([scope.row.id])
}, {
default: withCtx(() => [..._cache[34] || (_cache[34] = [
createTextVNode(" 删除 ", -1)
])]),
_: 1
}, 8, ["onClick"])), [
[_directive_hasPerm, ["module_yifan:yifan_about_video:delete"]]
])
]),
_: 1
})) : createCommentVNode("", true)
];
}),
_: 1
}, 8, ["data"])), [
[_directive_loading, loading.value]
])
]),
_: 1
}),
createVNode(_component_el_dialog, {
modelValue: dialogVisible.visible,
"onUpdate:modelValue": _cache[21] || (_cache[21] = ($event) => dialogVisible.visible = $event),
title: dialogVisible.title,
onClose: handleCloseDialog
}, {
footer: withCtx(() => [
createBaseVNode("div", _hoisted_8, [
createVNode(_component_el_button, { onClick: handleCloseDialog }, {
default: withCtx(() => [..._cache[37] || (_cache[37] = [
createTextVNode("取消", -1)
])]),
_: 1
}),
dialogVisible.type !== "detail" ? (openBlock(), createBlock(_component_el_button, {
key: 0,
type: "primary",
onClick: handleSubmit
}, {
default: withCtx(() => [..._cache[38] || (_cache[38] = [
createTextVNode(" 确定 ", -1)
])]),
_: 1
})) : (openBlock(), createBlock(_component_el_button, {
key: 1,
type: "primary",
onClick: handleCloseDialog
}, {
default: withCtx(() => [..._cache[39] || (_cache[39] = [
createTextVNode("确定", -1)
])]),
_: 1
}))
])
]),
default: withCtx(() => [
dialogVisible.type === "detail" ? (openBlock(), createBlock(_component_el_descriptions, {
key: 0,
column: 4,
border: ""
}, {
default: withCtx(() => [
createVNode(_component_el_descriptions_item, {
label: "主键ID",
span: 2
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(detailFormData.value.id), 1)
]),
_: 1
}),
createVNode(_component_el_descriptions_item, {
label: "视频标题",
span: 2
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(detailFormData.value.title), 1)
]),
_: 1
}),
createVNode(_component_el_descriptions_item, {
label: "副标题/期数",
span: 2
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(detailFormData.value.subtitle), 1)
]),
_: 1
}),
createVNode(_component_el_descriptions_item, {
label: "封面图URL",
span: 2
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(detailFormData.value.cover_url), 1)
]),
_: 1
}),
createVNode(_component_el_descriptions_item, {
label: "视频URL",
span: 2
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(detailFormData.value.video_url), 1)
]),
_: 1
}),
createVNode(_component_el_descriptions_item, {
label: "状态",
span: 2
}, {
default: withCtx(() => [
createVNode(_component_el_tag, {
type: detailFormData.value.status == "0" ? "success" : "danger"
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(detailFormData.value.status == "0" ? "启用" : "停用"), 1)
]),
_: 1
}, 8, ["type"])
]),
_: 1
}),
createVNode(_component_el_descriptions_item, {
label: "创建人",
span: 2
}, {
default: withCtx(() => {
var _a;
return [
createTextVNode(toDisplayString((_a = detailFormData.value.created_by) == null ? void 0 : _a.name), 1)
];
}),
_: 1
}),
createVNode(_component_el_descriptions_item, {
label: "更新人",
span: 2
}, {
default: withCtx(() => {
var _a;
return [
createTextVNode(toDisplayString((_a = detailFormData.value.updated_by) == null ? void 0 : _a.name), 1)
];
}),
_: 1
})
]),
_: 1
})) : (openBlock(), createBlock(_component_el_form, {
key: 1,
ref_key: "dataFormRef",
ref: dataFormRef,
model: formData,
rules,
"label-suffix": ":",
"label-width": "auto",
"label-position": "right"
}, {
default: withCtx(() => [
createVNode(_component_el_form_item, {
label: "视频标题",
prop: "title",
required: false
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: formData.title,
"onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => formData.title = $event),
placeholder: "请输入视频标题"
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, {
label: "副标题/期数",
prop: "subtitle",
required: false
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: formData.subtitle,
"onUpdate:modelValue": _cache[17] || (_cache[17] = ($event) => formData.subtitle = $event),
placeholder: "请输入副标题/期数"
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, {
label: "封面图URL",
prop: "cover_url",
required: false
}, {
default: withCtx(() => [
createVNode(SingleImageUpload, {
modelValue: formData.cover_url,
"onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => formData.cover_url = $event)
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, {
label: "视频URL",
prop: "video_url",
required: false
}, {
default: withCtx(() => [
createVNode(SingleVideoUpload, {
modelValue: formData.video_url,
"onUpdate:modelValue": _cache[19] || (_cache[19] = ($event) => formData.video_url = $event)
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, {
label: "状态",
prop: "status",
required: true
}, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: formData.status,
"onUpdate:modelValue": _cache[20] || (_cache[20] = ($event) => formData.status = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio, { value: "0" }, {
default: withCtx(() => [..._cache[35] || (_cache[35] = [
createTextVNode("启用", -1)
])]),
_: 1
}),
createVNode(_component_el_radio, { value: "1" }, {
default: withCtx(() => [..._cache[36] || (_cache[36] = [
createTextVNode("停用", -1)
])]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
})
]),
_: 1
}, 8, ["model", "rules"]))
]),
_: 1
}, 8, ["modelValue", "title"]),
createVNode(_sfc_main$3, {
modelValue: importDialogVisible.value,
"onUpdate:modelValue": _cache[22] || (_cache[22] = ($event) => importDialogVisible.value = $event),
"content-config": curdContentConfig,
onUpload: handleUpload
}, null, 8, ["modelValue"]),
createVNode(_sfc_main$4, {
modelValue: exportsDialogVisible.value,
"onUpdate:modelValue": _cache[23] || (_cache[23] = ($event) => exportsDialogVisible.value = $event),
"content-config": curdContentConfig,
"query-params": queryFormData,
"page-data": pageTableData.value,
"selection-data": selectionRows.value
}, null, 8, ["modelValue", "query-params", "page-data", "selection-data"])
]);
};
}
});
export {
_sfc_main as default
};