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 };