|
|
@@ -105,17 +105,27 @@
|
|
|
</el-tooltip>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
-
|
|
|
- <!-- 编辑历史弹窗 -->
|
|
|
- <el-dialog title="编辑历史" v-model="editHistoryDialog.visible" width="800px" append-to-body>
|
|
|
- <div class="edit-history-container" v-html="editHistoryDialog.tableHtml"></div>
|
|
|
- </el-dialog>
|
|
|
</el-table>
|
|
|
</div>
|
|
|
|
|
|
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
|
|
- v-model:limit="queryParams.pageSize" @pagination="getList" />
|
|
|
+ v-model:limit="queryParams.pageSize" @pagination="getList"/>
|
|
|
</el-card>
|
|
|
+ <!-- 编辑历史弹窗 -->
|
|
|
+ <el-dialog title="编辑历史" v-model="editHistoryDialog.visible" width="800px" style="height: 720px" append-to-body>
|
|
|
+ <div class="table-content">
|
|
|
+ <el-table v-loading="editHistoryDialog.loading" :data="itemEditHisList" style="height: 600px">
|
|
|
+ <el-table-column label="文件名称" align="left" prop="sourceName" :show-overflow-tooltip="true"/>
|
|
|
+ <el-table-column label="编辑类型" align="center" prop="editType" width="100">
|
|
|
+ <template #default="scope">
|
|
|
+ <dict-tag :options="smsb_item_edit_type" :value="scope.row.editType"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="编辑时间" align="left" prop="createTime" width="160"/>
|
|
|
+ <el-table-column label="操作人" align="center" prop="createUser" width="120" :show-overflow-tooltip="true"/>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
<!-- 添加或修改轮播组对话框 -->
|
|
|
<el-dialog :title="dialog.title" v-model="dialog.visible" width="1400px" append-to-body @close="onDialogClose">
|
|
|
<div class="dialog-container">
|
|
|
@@ -304,52 +314,27 @@
|
|
|
<script setup name="Item" lang="ts">
|
|
|
import draggable from 'vuedraggable';
|
|
|
import { onActivated, reactive } from 'vue';
|
|
|
-import { getEditHistory } from '@/api/smsb/source/item';
|
|
|
import type { EditHistoryVo, ItemVO, ItemForm } from '@/api/smsb/source/item_type';
|
|
|
|
|
|
// 编辑历史弹窗数据
|
|
|
const editHistoryDialog = reactive({
|
|
|
visible: false,
|
|
|
- list: [] as EditHistoryVo[],
|
|
|
- type: 1 as 1 | 2,
|
|
|
- tableHtml: ref('')
|
|
|
+ loading: false
|
|
|
});
|
|
|
-
|
|
|
+const itemEditHisList = ref<ItemEditHisVO[]>([]);
|
|
|
/**
|
|
|
* 打开编辑历史弹窗
|
|
|
* @param row 当前行数据
|
|
|
*/
|
|
|
-function onShowEditHistory(row: ItemVO) {
|
|
|
+async function onShowEditHistory(row: ItemVO) {
|
|
|
+ editHistoryDialog.loading = true;
|
|
|
editHistoryDialog.visible = true;
|
|
|
- editHistoryDialog.list = [];
|
|
|
- // type: 1=轮播组, 2=分屏组
|
|
|
- const type = row.itemType === 1 ? 1 : 2;
|
|
|
- editHistoryDialog.type = type;
|
|
|
- getEditHistory(row.id, type).then((res) => {
|
|
|
- console.log('编辑历史数据:', res.data);
|
|
|
- let list = res.data || [];
|
|
|
- if (type === 1) {
|
|
|
- // 轮播组过滤掉无selectedFiles的异常数据(第一条保留)
|
|
|
- list = list.filter((item: any, idx: number, arr: any[]) => {
|
|
|
- if (idx === 0) return true;
|
|
|
- try {
|
|
|
- const curr = JSON.parse(item.operParam || '{}');
|
|
|
- const prev = idx > 0 ? JSON.parse(arr[idx - 1].operParam || '{}') : {};
|
|
|
- // 没有selectedFiles字段直接过滤
|
|
|
- if (!Array.isArray(curr.selectedFiles)) return false;
|
|
|
- // diff结果为无变化也过滤
|
|
|
- const diff = diffSelectedFiles({ selectedFiles: prev.selectedFiles || [] }, { selectedFiles: curr.selectedFiles || [] }, 'selectedFiles');
|
|
|
- return diff && diff !== '无变化';
|
|
|
- } catch {
|
|
|
- return false;
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- editHistoryDialog.list = list;
|
|
|
- // 使用新的渲染函数生成表格HTML
|
|
|
- editHistoryDialog.tableHtml = renderOperHistoryTable(list, type);
|
|
|
- console.log('编辑历史数据处理后:', list);
|
|
|
- });
|
|
|
+ const param = {
|
|
|
+ itemId: row.id
|
|
|
+ }
|
|
|
+ const res = await listItemEditHis(param);
|
|
|
+ itemEditHisList.value = res.data;
|
|
|
+ editHistoryDialog.loading = false;
|
|
|
}
|
|
|
|
|
|
function getFileNameSet(selectedFiles?: any[]): Set<string> {
|
|
|
@@ -436,15 +421,16 @@ function renderOperParam(row: EditHistoryVo, index: number, list: EditHistoryVo[
|
|
|
}
|
|
|
|
|
|
import { listItem, getItem, delItem, addItem, updateItem, itemStatistics } from '@/api/smsb/source/item';
|
|
|
-import { MinioDataQuery, MinioDataVO } from '@/api/smsb/source/minioData_type';
|
|
|
+import { MinioDataVO } from '@/api/smsb/source/minioData_type';
|
|
|
import { listMinioData } from '@/api/smsb/source/minioData';
|
|
|
-import { renderOperHistoryTable } from './renderOperHistoryTable';
|
|
|
import { nextTick } from 'vue';
|
|
|
import type { ElTable } from 'element-plus';
|
|
|
+import {ItemEditHisVO} from "@/api/smsb/source/item_edit_his_type";
|
|
|
+import {listItemEditHis} from "@/api/smsb/source/item_edit_his";
|
|
|
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
-const { smsb_item_type, smsb_split_screen, smsb_source_type, smsb_yes_no } = toRefs<any>(
|
|
|
- proxy?.useDict('smsb_item_type', 'smsb_split_screen', 'smsb_source_type', 'smsb_yes_no')
|
|
|
+const { smsb_item_type, smsb_split_screen,smsb_item_edit_type, smsb_source_type, smsb_yes_no } = toRefs<any>(
|
|
|
+ proxy?.useDict('smsb_item_type', 'smsb_split_screen','smsb_item_edit_type', 'smsb_source_type', 'smsb_yes_no')
|
|
|
);
|
|
|
|
|
|
const itemList = ref<ItemVO[]>([]);
|