提交 b24f538e authored 作者: 龙菲's avatar 龙菲

对接审核列表;对接展览模块新接口

上级 cadb721d
...@@ -69,11 +69,11 @@ export function getDisplayById(params) { ...@@ -69,11 +69,11 @@ export function getDisplayById(params) {
} }
// 修改展览(临时表) // 修改展览(临时表)
export function getDisplayByIdTemp(params) { export function getDisplayByIdTemp(data) {
return request({ return request({
url: '/bizExhibitionTemp/detailById', url: '/bizExhibitionTemp/detailById',
method: 'get', method: 'post',
params data
}) })
} }
......
// 本文件用于提取一些通用的业务层面的公共方法
import store from '@/store'
const bizCommon = {
}
\ No newline at end of file
...@@ -143,5 +143,19 @@ const fileUploadFuctions = { ...@@ -143,5 +143,19 @@ const fileUploadFuctions = {
}); });
return arr; return arr;
}, },
/**
* @param {array} fileArr 需要被删除的文件ID数组
*/
async handleDeleteFiles(fileArr) {
console.log("doing delete");
if (fileArr.length == 0) {
console.log("nothing to delete");
return;
}
await deleteFiles(fileArr);
console.log("delete done");
},
}; };
export default fileUploadFuctions; export default fileUploadFuctions;
// 本文件提供一些前端和后端数据交互和转换的一些方法,可批量使用的
const transformData = { const transformData = {
/** /**
* 转换服务器的封面数据到前端可用的封面数据 * 转换服务器的封面数据到前端可用的封面数据
......
...@@ -280,12 +280,12 @@ ...@@ -280,12 +280,12 @@
<script> <script>
import { getLiteratureList } from "@/api/literature"; import { getLiteratureList } from "@/api/literature";
import { addOrUpdateCulturalRelic } from "@/api/culturalRelic"; import { addOrUpdateCulturalRelic } from "@/api/culturalRelic";
import { mapGetters } from "vuex"; import { mapGetters, mapActions } from "vuex";
import { uploadV1 } from "@/utils/file"; import { uploadV1 } from "@/utils/file";
import { deleteFiles } from "@/api/file"; import { deleteFiles } from "@/api/file";
import { rules } from "./js/validateRules"; import { rules } from "../configs/validateRules";
import fileUploadFunctions from "./js/fileUploadFuctions"; import fileUploadFunctions from "@/utils/fileUploadFuctions";
import transformData from "./js/transformData"; import transformData from "@/utils/transformData";
const { const {
faceImageToClient, faceImageToClient,
literatureIdArrToStr, literatureIdArrToStr,
...@@ -294,7 +294,7 @@ const { ...@@ -294,7 +294,7 @@ const {
statusStrToBool, statusStrToBool,
getDeptIdArr, getDeptIdArr,
getDeptIdStr, getDeptIdStr,
file3dToClient file3dToClient,
} = transformData; } = transformData;
export default { export default {
name: "InfoEditDialog", name: "InfoEditDialog",
...@@ -374,11 +374,23 @@ export default { ...@@ -374,11 +374,23 @@ export default {
}; };
}, },
async created() { async created() {
await this.getDictList(); await this.getDictList([
await this.getDictTree(); "culturalRelicLevel",
await this.getMuseumData(); "culturalRelicType",
"culturalRelicSourceWay",
]);
const res = await this.getDictTree([
"culturalRelicTextureType",
"culturalRelicYears",
]);
this.culturalRelicTextureType = res.culturalRelicTextureType;
this.culturalRelicYears = res.culturalRelicYears;
this.orgTreeData = await this.getMuseumTreeData(false);
this.searchLiterature();
}, },
methods: { methods: {
...mapActions("dict", ["getDictList", "getDictTree"]),
...mapActions("org", ["getMuseumTreeData"]),
//回显服务器传来的数据 //回显服务器传来的数据
covertServerData(serverData) { covertServerData(serverData) {
this.dialogForm = JSON.parse(JSON.stringify(serverData)); this.dialogForm = JSON.parse(JSON.stringify(serverData));
...@@ -391,43 +403,21 @@ export default { ...@@ -391,43 +403,21 @@ export default {
status, status,
literatureVo, literatureVo,
deptId, deptId,
file3d,
file3dUrl,
} = this.dialogForm; } = this.dialogForm;
this.dialogForm.status = statusStrToBool(status); this.dialogForm.status = statusStrToBool(status);
this.faceImage = faceImageToClient(faceImagePressUrl, faceImageUrl); this.faceImage = faceImageToClient(faceImagePressUrl, faceImageUrl);
this.file3d = file3dToClient(faceImagePressUrl, faceImageUrl); this.file3d = file3dToClient(file3d, file3dUrl);
this.images = imagesVo || []; this.images = imagesVo || [];
this.videos = videosVo || []; this.videos = videosVo || [];
this.audios = audiosVo || []; this.audios = audiosVo || [];
this.literatureIdArr = literatureListToIds(literatureVo); this.literatureIdArr = literatureListToIds(literatureVo);
this.dialogForm.deptId = getDeptIdArr(deptId, this.userInfo); this.dialogForm.deptId = getDeptIdArr(deptId, this.userInfo);
}, },
// 获取字典列表
async getDictList() {
await this.$store.dispatch("dict/getDictList", [
"culturalRelicLevel",
"culturalRelicType",
"culturalRelicSourceWay",
]);
},
// 获取字典树
async getDictTree() {
let res = await this.$store.dispatch("dict/getDictTree", [
"culturalRelicTextureType",
"culturalRelicYears",
]);
this.culturalRelicTextureType = res.culturalRelicTextureType;
this.culturalRelicYears = res.culturalRelicYears;
},
// 获取博物馆数据
async getMuseumData() {
let res = await this.$store.dispatch("org/getMuseumTreeData", false);
this.orgTreeData = res;
},
// 关联文献查询 // 关联文献查询
searchLiterature(queryString) { searchLiterature(queryString) {
if (!queryString.trim()) { if (!queryString || !queryString.trim()) {
this.literatureList = []; this.literatureList = [];
return; return;
} }
...@@ -477,14 +467,13 @@ export default { ...@@ -477,14 +467,13 @@ export default {
this.submitLoading = true; this.submitLoading = true;
this.uploadMediaFiles(this.mediaKeys, this.dialogForm) this.uploadMediaFiles(this.mediaKeys, this.dialogForm)
.then(async (mediaForm) => { .then(async (mediaForm) => {
console.log(mediaForm); // console.log(mediaForm);
this.loadingText = "正在提交表单..."; this.loadingText = "正在提交表单...";
const form = this.getSubmitForm(this.dialogForm, mediaForm); const form = this.getSubmitForm(this.dialogForm, mediaForm);
const { status, years, textureType, deptId } = form; const { status, years, textureType, deptId } = form;
const { literatureIdArr } = this; const { literatureIdArr } = this;
form.status = statusBoolToNum(status); form.status = statusBoolToNum(status);
form.literature = literatureIdArrToStr(literatureIdArr); form.literature = literatureIdArrToStr(literatureIdArr);
// 处理年份
form.years = this.processYear(years); form.years = this.processYear(years);
form.textureType = this.processTextureType(textureType); form.textureType = this.processTextureType(textureType);
form.deptId = getDeptIdStr(deptId); form.deptId = getDeptIdStr(deptId);
...@@ -492,6 +481,8 @@ export default { ...@@ -492,6 +481,8 @@ export default {
this.submitLoading = false; this.submitLoading = false;
if (res.code == 0) { if (res.code == 0) {
this.$message.success("提交成功!"); this.$message.success("提交成功!");
this.$emit("refresh");
this.$emit("handleClose");
} }
}) })
.catch((err) => { .catch((err) => {
...@@ -523,18 +514,7 @@ export default { ...@@ -523,18 +514,7 @@ export default {
return ""; return "";
} }
}, },
/**
* @param {array} fileArr 需要被删除的文件ID数组
*/
async handleDeleteFiles(fileArr) {
console.log("doing delete");
if (fileArr.length == 0) {
console.log("nothing to delete");
return;
}
await deleteFiles(fileArr);
console.log("delete done");
},
/** /**
* 上传对应的媒体文件,并返回一个promise * 上传对应的媒体文件,并返回一个promise
* @param {array} dialogForm 当前需要提交的表单 * @param {array} dialogForm 当前需要提交的表单
...@@ -551,6 +531,7 @@ export default { ...@@ -551,6 +531,7 @@ export default {
getMergedIdsObj, getMergedIdsObj,
getDeleteFileArr, getDeleteFileArr,
isFormDataHasData, isFormDataHasData,
handleDeleteFiles,
} = fileUploadFunctions; } = fileUploadFunctions;
const formData = getNeedUploadFormData(this, mediaKeys); const formData = getNeedUploadFormData(this, mediaKeys);
try { try {
...@@ -571,7 +552,7 @@ export default { ...@@ -571,7 +552,7 @@ export default {
newIdObj, newIdObj,
mediaKeys mediaKeys
); );
this.handleDeleteFiles(deleteIdArr); handleDeleteFiles(deleteIdArr);
console.log("mergedFileIdsObj", mergedIdObj); console.log("mergedFileIdsObj", mergedIdObj);
console.log("deleteFiles", deleteIdArr); console.log("deleteFiles", deleteIdArr);
console.log("uploadMediaFiles done"); console.log("uploadMediaFiles done");
...@@ -579,7 +560,7 @@ export default { ...@@ -579,7 +560,7 @@ export default {
} }
} else { } else {
console.log("uploadMediaFiles nothing to upload"); console.log("uploadMediaFiles nothing to upload");
resolve(false); resolve({});
} }
} catch (error) { } catch (error) {
console.error("uploadMediaFiles error"); console.error("uploadMediaFiles error");
......
...@@ -201,13 +201,13 @@ export const unPassedTitle = [{ ...@@ -201,13 +201,13 @@ export const unPassedTitle = [{
columnAlign: 'center', columnAlign: 'center',
isFaceImage: true, isFaceImage: true,
}, },
{ // {
prop: "status", // prop: "status",
label: "上下架状态", // label: "上下架状态",
width: 100, // width: 100,
columnAlign: 'center', // columnAlign: 'center',
isStatus: true // isStatus: true
}, // },
// { // {
// prop: "num", // prop: "num",
// label: "数量", // label: "数量",
...@@ -284,7 +284,7 @@ export const searchConfig = [ ...@@ -284,7 +284,7 @@ export const searchConfig = [
{ {
prop: "name", prop: "name",
type: "input", type: "input",
label: "文物名称", label: "展览名称",
}, },
{ {
prop: "status", prop: "status",
...@@ -301,11 +301,5 @@ export const searchConfig = [ ...@@ -301,11 +301,5 @@ export const searchConfig = [
}, },
], ],
}, },
// 是否只看3D
{
prop: "upload3dFlag",
type: "checkbox",
label: "只看3D",
},
] ]
...@@ -310,6 +310,7 @@ export default { ...@@ -310,6 +310,7 @@ export default {
this.$refs.View3dDialog.visible = true; this.$refs.View3dDialog.visible = true;
break; break;
case "edit": case "edit":
console.log(value, row);
let detailRes = await getRCDetailByIdTemp({ crId: row.crId }); let detailRes = await getRCDetailByIdTemp({ crId: row.crId });
if (detailRes.code == 0) { if (detailRes.code == 0) {
this.form = detailRes.data; this.form = detailRes.data;
......
import fileUploadFuctions from "@/utils/fileUploadFuctions";
const unitsFunctions = {
/**
* 获取新的布展单元,实装媒体id,
* @param {*} exhibitionUnits
* @param {*} upLoadRes
* @returns
*/
getNewUnits(exhibitionUnits, upLoadRes) {
const unitCopy = JSON.parse(JSON.stringify(exhibitionUnits))//不要修改原本的数据
const callback = (arr) => {
arr.forEach(unitItem => {
// 每一个unitItem有自己的euid,有唯一的一个images,唯一的一个videos
// 目的是要让每一个unitItem的images,videos实装回去,crId拼接回去
// mediaObj形如{
// images: "1,2,3",
// videos: "4,5,6",
// }
const mediaForm = unitsFunctions.getMediaForm(unitItem, upLoadRes)
const crForm = unitsFunctions.getCrForm(unitItem)
unitItem = Object.assign(unitItem, mediaForm, crForm)
});
}
// 遍历布展单元,并执行callback
unitsFunctions.loopUnits(unitCopy, callback)
return unitCopy
},
getMediaForm(unitItem, upLoadRes) {
const { euId } = unitItem
const mediaForm = unitsFunctions.getUnitFileIdstrObj(euId, upLoadRes)
return mediaForm
},
getCrForm(unitItem) {
const obj = {
crIds: ''
}
const { crIds } = unitItem
if (crIds instanceof Array) {
obj.crIds = crIds.join(",");
} else if (crIds) {
obj.crIds = crIds
}
return obj
},
/**
*
* @param {Array} arr 布展单元的数组
* @param {Function} callback 循环处理什么事
*/
loopUnits(arr, callback) {
if (arr.length > 0) {
callback(arr)
if (arr.children) {
unitsFunctions.loopUnits(arr.children, callback)
}
}
},
/**
* 获取布展单元下面的媒体的id字符串
* @param {String} euId 布展单元的key euId
* @param {String} res 上传后的结果 如unit-images-${euid}
* @returns {Obj} euId对应媒体文件ID字符串
* 形如{
images: "1,2,3",
videos: "4,5,6",
}item.fileId
*/
getUnitFileIdstrObj(euId, res) {
const obj = {};
const unitMediaKeys = ["images"];
const unitMediaFileIdArr = unitMediaKeys.map((mediaKey) => {
const filterArr = res.data.filter((item) => {
// 如果是当前的euId下的文件
const str1 = `unit-${mediaKey}-${euId}`
const arr = item.fileKey.split('-')
const str2 = arr.slice(0, 3).join('-') //前三位拼接
return str1 === str2
});
const arr = filterArr.map(item => {
return item.fileId
})
return arr;
});
unitMediaKeys.forEach((key, index) => {
if (unitMediaFileIdArr[index].length > 0) {
obj[key] = unitMediaFileIdArr[index].join(",");
} else {
obj[key] = "";
}
});
return obj;
},
/**
* 添加布展单元的图片至formData
* @param {array} unitData 布展单元数据
* @param {FormData} formData 需要上传的表单
*/
addUnitImageToFormData(unitData, formData) {
const callback = (arr) => {
arr.forEach(unitItem => {
unitsFunctions.appendMediaItemToFormData(unitItem, formData, "images");
})
}
unitsFunctions.loopUnits(unitData, callback)
},
/**
* 添加布展单元媒体item至formData
* @param {array} unitItem 布展单元的item
* @param {FormData} media 表单中存储ids的key
* @param {FormData} mediaVo 表单中存储文件List的key
*/
appendMediaItemToFormData(unitItem, formData, mediaKey) {
const mediaVo = unitItem[`${mediaKey}Vo`];
if (mediaVo && mediaVo.length > 0) {
mediaVo.forEach((file, index) => {
if (fileUploadFuctions.isFileRaw(file)) {
const uploadKey = `unit-${mediaKey}-${unitItem.euId}-${index}`;
formData.append(uploadKey, file.raw);
}
});
}
},
getUnitDeleteArr(newUnit, oldUnit) {
const deleteArr = []
return deleteArr
}
}
export default unitsFunctions
\ No newline at end of file
...@@ -44,7 +44,7 @@ export const searchConfig = [ ...@@ -44,7 +44,7 @@ export const searchConfig = [
}, },
]; ];
export const title = [ export const passedTitle = [
{ {
prop: "title", prop: "title",
label: "标题", label: "标题",
...@@ -118,6 +118,97 @@ export const title = [ ...@@ -118,6 +118,97 @@ export const title = [
sortable: true, sortable: true,
}, },
{
prop: "status",
label: "是否上架",
columnAlign: "center",
isStatus: true,
},
{
prop: "themeType",
label: "模板主题",
columnAlign: "center",
},
{
prop: "remark",
label: "备注",
columnAlign: "center",
showOverFlowToolTip: true,
},
// {
// prop: "images",
// label: "展览图片",
// columnAlign: 'center',
// isImages: true
// },
// {
// prop: "audios",
// label: "展览音频",
// columnAlign: 'center',
// isAudios: true
// },
// {
// prop: "videos",
// label: "展览视频",
// columnAlign: 'center',
// isVideos: true
// },
];
export const unPassedTitle = [
{
prop: "title",
label: "标题",
columnAlign: "center",
width: 120,
showOverFlowToolTip: true,
},
{
prop: "keyword",
label: "关键词",
columnAlign: "center",
showOverFlowToolTip: true,
},
{
prop: "type",
label: "展览类型",
columnAlign: "center",
isDisplayType: true,
showOverFlowToolTip: true,
},
{
prop: "deptName",
label: "展览单位",
columnAlign: "center",
showOverFlowToolTip: true,
},
{
prop: "regionName",
label: "所在地区",
columnAlign: "center",
showOverFlowToolTip: true,
},
{
prop: "faceImageUrl",
label: "封面",
columnAlign: "center",
isFaceImage: true,
width: 130,
},
// {
// prop: "intro",
// label: "展览介绍",
// columnAlign: 'center',
// },
// {
// prop: "literature",
// label: "关联文献",
// columnAlign: 'center',
// width:100
// },
{ {
prop: "status", prop: "status",
label: "是否上架", label: "是否上架",
...@@ -169,13 +260,13 @@ export const title = [ ...@@ -169,13 +260,13 @@ export const title = [
export const operates = { export const operates = {
operate: true, operate: true,
label: "操作", label: "操作",
width: "320px", width: "140px",
minwidth: "220px",
titleAlign: "center", titleAlign: "center",
columnAlign: "center", columnAlign: "center",
}; };
export const operations = [ // 临时表
export const operationsTemp = [
{ {
type: "view", type: "view",
title: "预览", title: "预览",
...@@ -184,10 +275,18 @@ export const operations = [ ...@@ -184,10 +275,18 @@ export const operations = [
type: "edit", type: "edit",
title: "编辑", title: "编辑",
}, },
// { {
// type: 'approval', type: "delete",
// title: '提交审核' title: "删除",
// }, },
];
// 最终表
export const operations = [
{
type: "edit",
title: "编辑",
},
{ {
type: "delete", type: "delete",
title: "删除", title: "删除",
......
export const pageSelectUrl = "/api/bizCulturalRelic/listByPage"
export const upLoadAddress = process.env.VUE_APP_BASE_API + "/sysFiles/upload"
\ No newline at end of file
export const rules = {
title: [{ required: true, message: "请输入展览标题", trigger: "blur" }],
deptId: [
{ required: true, message: "请填写展览单位", trigger: "change" },
],
intro: [{ required: true, message: "请填写展览介绍", trigger: "blur" }],
}
\ No newline at end of file
...@@ -12,8 +12,18 @@ ...@@ -12,8 +12,18 @@
</div> --> </div> -->
</div> </div>
<el-tabs v-model="activeName" type="border-card" ref="tabs"> <el-tabs v-model="activeName" type="border-card" ref="tabs">
<el-tab-pane :label="item.label" :name="item.name" v-for="(item, tabIndex) in tabs" :key="tabIndex"> <el-tab-pane
<TablePage :data="dataList[tabIndex].records" :tableTitle="tableTitle" :operates="tableOperates" v-loading="loading"> :label="item.label"
:name="item.name"
v-for="(item, tabIndex) in tabs"
:key="tabIndex"
>
<TablePage
:data="dataList[tabIndex].records"
:tableTitle="tableTitle"
:operates="tableOperates"
v-loading="loading"
>
<template v-slot:checkStatus="data"> <template v-slot:checkStatus="data">
<!-- {{ data.scope.checkStatus }} --> <!-- {{ data.scope.checkStatus }} -->
<el-tag type="primary" v-if="data.scope.checkStatus == 0"> <el-tag type="primary" v-if="data.scope.checkStatus == 0">
...@@ -30,55 +40,77 @@ ...@@ -30,55 +40,77 @@
{{ dicts.displayType[data.scope.type] }} {{ dicts.displayType[data.scope.type] }}
</template> </template>
<template v-slot:faceImageUrl="data"> <template v-slot:faceImageUrl="data">
<img :src=" <img
$getFullUrl(data.scope.faceImagePressUrl || data.scope.faceImageUrl) :src="
" alt="暂无图片" v-if="$getFullUrl(data.scope.faceImagePressUrl || data.scope.faceImageUrl)" $getFullUrl(
style="cursor: pointer" width="100px" @click="handelPreviewImages(data.scope.faceImageUrl)" /> data.scope.faceImagePressUrl || data.scope.faceImageUrl
)
"
alt="暂无图片"
v-if="
$getFullUrl(
data.scope.faceImagePressUrl || data.scope.faceImageUrl
)
"
style="cursor: pointer"
width="100px"
@click="handelPreviewImages(data.scope.faceImageUrl)"
/>
</template> </template>
<template v-slot:operates="scope"> <template v-slot:operates="scope">
<TableOperation :operations="tableOperations" :rawData="scope.scope.row" @handleOperation="handleOperation"> <TableOperation
:operations="tableOperations"
:rawData="scope.scope.row"
@handleOperation="handleOperation"
>
</TableOperation> </TableOperation>
</template> </template>
</TablePage> </TablePage>
<el-pagination style="margin: 16px 0" @size-change="handleSizeChange" @current-change="handleCurrentChange" <el-pagination
:current-page="Number(dataList[currentTabIndex].current)" :page-sizes="[10, 20, 50, 100]" style="margin: 16px 0"
:page-size="Number(dataList[currentTabIndex].size)" layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
:total="Number(dataList[currentTabIndex].total)" class="pagination"> @current-change="handleCurrentChange"
:current-page="Number(dataList[currentTabIndex].current)"
:page-sizes="[10, 20, 50, 100]"
:page-size="Number(dataList[currentTabIndex].size)"
layout="total, sizes, prev, pager, next, jumper"
:total="Number(dataList[currentTabIndex].total)"
class="pagination"
>
</el-pagination> </el-pagination>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<PreviewDisplayDialog v-if="Object.keys(curPreviewObj).length > 0" <PreviewDisplayDialog
v-if="Object.keys(curPreviewObj).length > 0"
:visible="previewDialogVisible" :visible="previewDialogVisible"
:displayDetail="curPreviewObj" :displayDetail="curPreviewObj"
:loading="previewLoading" :loading="previewLoading"
@handleClose="handleClosePreviewDialog" @handleClose="handleClosePreviewDialog"
@refresh="loadData" /> @refresh="loadData"
/>
<el-image-viewer v-if="imgViewerVisible" :on-close="closeImgViewer" :url-list="imgList" /> <el-image-viewer
v-if="imgViewerVisible"
:on-close="closeImgViewer"
:url-list="imgList"
/>
</div> </div>
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue"; import PreviewDisplayDialog from "./components/PreviewDisplayDialog.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import PreviewDisplayDialog from './components/PreviewDisplayDialog.vue'
import { displayTabletitle, operates, approvalOperations, viewOperations } from "./config";
import { import {
getListPer, displayTabletitle,
getDisplayCheckById, operates,
} from "@/api/display"; approvalOperations,
import SearchBar from "@/components/SearchBar"; viewOperations,
} from "./config";
import { getListPer, getDisplayCheckById } from "@/api/display";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
export default { export default {
components: { components: {
TablePage,
TableOperation,
SearchBar,
PreviewDisplayDialog, PreviewDisplayDialog,
"el-image-viewer": () =>
import("element-ui/packages/image/src/image-viewer"),
}, },
data() { data() {
let that = this; let that = this;
...@@ -101,7 +133,7 @@ export default { ...@@ -101,7 +133,7 @@ export default {
size: 10, size: 10,
current: 1, current: 1,
total: 0, total: 0,
} },
], ],
searchConfig: [ searchConfig: [
{ {
...@@ -115,21 +147,23 @@ export default { ...@@ -115,21 +147,23 @@ export default {
previewDialogVisible: false, previewDialogVisible: false,
curPreviewObj: {}, //当前预览的对象 curPreviewObj: {}, //当前预览的对象
currentPageIds: [], //当前的id数组,用于给详情页切换用 currentPageIds: [], //当前的id数组,用于给详情页切换用
tabs: [{ tabs: [
name: '0', {
label: '待审核' name: "0",
}, { label: "待审核",
name: '1', },
label: '已通过' {
}, name: "1",
{ label: "已通过",
name: '-2', },
label: '已驳回' {
} name: "-2",
label: "已驳回",
},
], ],
activeName: '0', activeName: "0",
currentTabIndex: 0, currentTabIndex: 0,
dialogLoading:false dialogLoading: false,
}; };
}, },
computed: { computed: {
...@@ -141,18 +175,18 @@ export default { ...@@ -141,18 +175,18 @@ export default {
return operates; return operates;
}, },
tableOperations() { tableOperations() {
if (this.activeName == '0') { if (this.activeName == "0") {
return approvalOperations return approvalOperations;
} else { } else {
return viewOperations return viewOperations;
} }
} },
}, },
watch: { watch: {
activeName(value) { activeName(value) {
this.currentTabIndex = Number(Math.abs(value)) //当前索引正好对应状态的绝对值 this.currentTabIndex = Number(Math.abs(value)); //当前索引正好对应状态的绝对值
this.loadData() this.loadData();
} },
}, },
async created() { async created() {
...@@ -171,7 +205,7 @@ export default { ...@@ -171,7 +205,7 @@ export default {
} }
let res = await getListPer(params); let res = await getListPer(params);
if (res.code == 0) { if (res.code == 0) {
this.$set(this.dataList, this.currentTabIndex, res.data) this.$set(this.dataList, this.currentTabIndex, res.data);
// this.dataList[this.currentTabIndex] = res.data // this.dataList[this.currentTabIndex] = res.data
// this.currentPageIds = this.dataList[this.currentTabIndex].records.map((item) => { // this.currentPageIds = this.dataList[this.currentTabIndex].records.map((item) => {
// return item.exhibitionId; // return item.exhibitionId;
...@@ -184,35 +218,36 @@ export default { ...@@ -184,35 +218,36 @@ export default {
// 加载表格数据 // 加载表格数据
async loadData() { async loadData() {
this.loading = true this.loading = true;
var params = { var params = {
page: this.dataList[this.currentTabIndex].current, page: this.dataList[this.currentTabIndex].current,
limit: this.dataList[this.currentTabIndex].size, limit: this.dataList[this.currentTabIndex].size,
checkStatus: Number(this.activeName) checkStatus: Number(this.activeName),
}; };
let res = await getListPer(params); let res = await getListPer(params);
if (res.code == 0) { if (res.code == 0) {
this.$set(this.dataList, this.currentTabIndex, res.data) this.$set(this.dataList, this.currentTabIndex, res.data);
// this.currentPageIds = this.dataList[this.currentTabIndex].records.map((item) => { // this.currentPageIds = this.dataList[this.currentTabIndex].records.map((item) => {
// return item.exhibitionId; // return item.exhibitionId;
// }); // });
} }
this.loading = false this.loading = false;
}, },
async handleOperation(value, row) { async handleOperation(value, row) {
console.log(value, row); console.log(value, row);
// debugger // debugger
if (value.type == 'approval' || value.type == 'view') { if (value.type == "approval" || value.type == "view") {
this.previewLoading = true this.previewLoading = true;
if (row) { if (row) {
this.previewDialogVisible = true; this.previewDialogVisible = true;
let res = await getDisplayCheckById({ exhibitionId: row.exhibitionId }); let res = await getDisplayCheckById({
exhibitionId: row.exhibitionId,
});
this.curPreviewObj = res.data; this.curPreviewObj = res.data;
this.previewLoading = false; this.previewLoading = false;
} }
} }
}, },
// 多选 // 多选
...@@ -256,7 +291,7 @@ export default { ...@@ -256,7 +291,7 @@ export default {
handleClosePreviewDialog() { handleClosePreviewDialog() {
this.previewDialogVisible = false; this.previewDialogVisible = false;
} },
}, },
}; };
</script> </script>
...@@ -283,4 +318,4 @@ export default { ...@@ -283,4 +318,4 @@ export default {
} }
} }
} }
</style> </style>
\ No newline at end of file
...@@ -23,13 +23,13 @@ export const displayTabletitle = [{ ...@@ -23,13 +23,13 @@ export const displayTabletitle = [{
{ {
prop: "deptName", prop: "deptName",
label: "展览单位", label: "展览单位",
columnAlign: 'center', columnAlign: 'center',
showOverFlowToolTip: true, showOverFlowToolTip: true,
}, },
{ {
prop: "regionName", prop: "regionName",
label: "所在地区", label: "所在地区",
columnAlign: 'center', columnAlign: 'center',
showOverFlowToolTip: true, showOverFlowToolTip: true,
}, },
...@@ -51,7 +51,7 @@ export const displayTabletitle = [{ ...@@ -51,7 +51,7 @@ export const displayTabletitle = [{
prop: "literatureVo", prop: "literatureVo",
label: "关联文献", label: "关联文献",
columnAlign: 'center', columnAlign: 'center',
width:100 width: 100
}, },
{ {
prop: "themeType", prop: "themeType",
...@@ -62,26 +62,26 @@ export const displayTabletitle = [{ ...@@ -62,26 +62,26 @@ export const displayTabletitle = [{
prop: "remark", prop: "remark",
label: "备注", label: "备注",
columnAlign: 'center', columnAlign: 'center',
showOverFlowToolTip: true, showOverFlowToolTip: true,
},
{
prop: "imagesVo",
label: "展览图片",
columnAlign: 'center',
isImages: true
},
{
prop: "audiosVo",
label: "展览音频",
columnAlign: 'center',
isAudios: true
},
{
prop: "videosVo",
label: "展览视频",
columnAlign: 'center',
isVideos: true
}, },
{
prop: "imagesVo",
label: "展览图片",
columnAlign: 'center',
isImages: true
},
{
prop: "audiosVo",
label: "展览音频",
columnAlign: 'center',
isAudios: true
},
{
prop: "videosVo",
label: "展览视频",
columnAlign: 'center',
isVideos: true
},
] ]
export const operates = { export const operates = {
...@@ -147,7 +147,7 @@ export const crTabletitle = [{ ...@@ -147,7 +147,7 @@ export const crTabletitle = [{
label: "类别", label: "类别",
width: 100, width: 100,
columnAlign: 'center', columnAlign: 'center',
isCulturalRelicType:true isCulturalRelicType: true
}, },
{ {
prop: "createId", prop: "createId",
...@@ -193,25 +193,25 @@ export const crTabletitle = [{ ...@@ -193,25 +193,25 @@ export const crTabletitle = [{
isFaceImage: true, isFaceImage: true,
}, },
{ {
prop:"imagesVo", prop: "imagesVo",
label: "文物图片", label: "文物图片",
columnAlign: 'center', columnAlign: 'center',
isFaceImage: true, isFaceImage: true,
}, },
{ {
prop:"audiosVo", prop: "audiosVo",
label: "文物音频", label: "文物音频",
columnAlign: 'center', columnAlign: 'center',
isFaceImage: true, isFaceImage: true,
}, },
{ {
prop:"videosVo", prop: "videosVo",
label: "文物视频", label: "文物视频",
columnAlign: 'center', columnAlign: 'center',
isFaceImage: true, isFaceImage: true,
}, },
{ {
prop:"literatureVo", prop: "literatureVo",
label: "相关文献", label: "相关文献",
columnAlign: 'center', columnAlign: 'center',
isFaceImage: true, isFaceImage: true,
...@@ -287,7 +287,7 @@ export const approvleTableTitle = [ ...@@ -287,7 +287,7 @@ export const approvleTableTitle = [
columnAlign: 'center', columnAlign: 'center',
}, },
{ {
prop: "status", prop: "checkStatus",
label: "审核状态", label: "审核状态",
columnAlign: 'center', columnAlign: 'center',
isStatus: true isStatus: true
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<SearchBar :config="searchConfig" @search="search" @reset="reset" /> <SearchBar :config="searchConfig" @search="search" @reset="reset" />
</div> </div>
<TablePage <TablePage
:data="dataList.records" :data="list.records"
:tableTitle="approvleTableTitle" :tableTitle="approvleTableTitle"
:operates="operates" :operates="operates"
v-loading="loading" v-loading="loading"
...@@ -30,11 +30,11 @@ ...@@ -30,11 +30,11 @@
style="margin: 16px 0" style="margin: 16px 0"
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="Number(dataList.current)" :current-page="Number(list.current)"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
:page-size="Number(dataList.size)" :page-size="Number(list.size)"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="Number(dataList.total)" :total="Number(list.total)"
class="pagination" class="pagination"
> >
</el-pagination> </el-pagination>
...@@ -50,25 +50,19 @@ ...@@ -50,25 +50,19 @@
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import PreviewDialog from "./components/PreviewDialog.vue"; import PreviewDialog from "./components/PreviewDialog.vue";
import { approvleTableTitle, operates, operations } from "./config"; import { approvleTableTitle, operates, operations } from "./config";
import { getListPer } from "@/api/display"; import { getFlowListPagePer } from "@/api/approval";
import SearchBar from "@/components/SearchBar";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { approvalData } from "./mock"; import { approvalData } from "./mock";
export default { export default {
components: { components: {
TablePage,
TableOperation,
SearchBar,
PreviewDialog, PreviewDialog,
}, },
data() { data() {
let that = this; let that = this;
return { return {
dataList: { list: {
record: [], record: [],
size: 10, size: 10,
current: 1, current: 1,
...@@ -81,17 +75,17 @@ export default { ...@@ -81,17 +75,17 @@ export default {
label: "标题", label: "标题",
}, },
{ {
prop: "type", prop: "sourceType",
type: "select", type: "select",
label: "类别", label: "类别",
selectOptions: [ selectOptions: [
{ {
label: "文物", label: "文物",
value: "1", value: "文物",
}, },
{ {
label: "展览", label: "展览",
value: "2", value: "展览",
}, },
], ],
}, },
...@@ -129,41 +123,24 @@ export default { ...@@ -129,41 +123,24 @@ export default {
}, },
methods: { methods: {
async search(form) { async search(form) {
this.loadData(); this.loadData(form);
// var params = {
// page: 1,
// limit: this.dataList[this.currentTabIndex].size,
// ...form,
// };
// if (params.status == "") {
// delete params.status;
// }
// let res = await getListPer(params);
// if (res.code == 0) {
// this.$set(this.dataList, this.currentTabIndex, res.data);
// // this.dataList[this.currentTabIndex] = res.data
// // this.currentPageIds = this.dataList[this.currentTabIndex].records.map((item) => {
// // return item.exhibitionId;
// // });
// }
}, },
reset() { reset() {
this.loadData(); this.loadData();
}, },
// 加载表格数据 // 加载表格数据
async loadData() { async loadData(form) {
this.loading = true; this.loading = true;
this.dataList = approvalData; const params = {
// var params = { page: this.list.current,
// page: this.dataList.current, limit: this.list.size,
// limit: this.dataList.size, ...form,
// checkStatus: Number(this.activeName), };
// }; let res = await getFlowListPagePer(params);
// let res = await getListPer(params); if (res.code == 0) {
// if (res.code == 0) { this.list = res.data;
// this.$set(this.dataList, this.currentTabIndex, res.data); }
// }
this.loading = false; this.loading = false;
}, },
...@@ -182,13 +159,13 @@ export default { ...@@ -182,13 +159,13 @@ export default {
// 改变页容量 // 改变页容量
handleSizeChange(value) { handleSizeChange(value) {
this.dataList[this.currentTabIndex].size = value; this.list[this.currentTabIndex].size = value;
this.loadData(); this.loadData();
}, },
// 改变当前显示页 // 改变当前显示页
handleCurrentChange(value) { handleCurrentChange(value) {
this.dataList[this.currentTabIndex].current = value; this.list[this.currentTabIndex].current = value;
this.loadData(); this.loadData();
}, },
......
...@@ -34,19 +34,10 @@ ...@@ -34,19 +34,10 @@
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import { importRecordsTitle, importOperates, importOperations } from "./config"; import { importRecordsTitle, importOperates, importOperations } from "./config";
import { getImportListPage, deleteByBatchNum } from "@/api/file"; import { getImportListPage, deleteByBatchNum } from "@/api/file";
import SearchBar from "@/components/SearchBar";
export default { export default {
components: {
TablePage,
TableOperation,
SearchBar,
},
data() { data() {
return { return {
list: { list: {
...@@ -139,7 +130,7 @@ export default { ...@@ -139,7 +130,7 @@ export default {
case "view": case "view":
break; break;
case "delete": case "delete":
let { batchNum, type,id } = row; let { batchNum, type, id } = row;
let deleteRes = await deleteByBatchNum({ batchNum, type }); let deleteRes = await deleteByBatchNum({ batchNum, type });
if (deleteRes.code == 0) { if (deleteRes.code == 0) {
this.$message.success("删除成功!"); this.$message.success("删除成功!");
...@@ -174,4 +165,4 @@ export default { ...@@ -174,4 +165,4 @@ export default {
.pagination { .pagination {
margin: 16px; margin: 16px;
} }
</style> </style>
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="top-bar"> <div class="top-bar">
<SearchBar :config="searchConfig" @search="search" @reset="reset" /> <SearchBar :config="searchConfig" @search="search" @reset="reset" />
<el-button <el-button
size="mini" size="mini"
type="primary" type="primary"
@click.native="handleOperation({ type: 'add' })" @click.native="handleOperation({ type: 'add' })"
icon="el-icon-plus" icon="el-icon-plus"
...@@ -59,20 +59,14 @@ ...@@ -59,20 +59,14 @@
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import { title, operates, operations } from "./config"; import { title, operates, operations } from "./config";
import { editLiterature, deleteLt } from "@/api/literature"; import { editLiterature, deleteLt } from "@/api/literature";
import InfoEditDialog from "./components/InfoEditDialog"; import InfoEditDialog from "./components/InfoEditDialog";
import SearchBar from "@/components/SearchBar";
import { downloadFile, previewFile, downloadBlob } from "@/utils/file"; import { downloadFile, previewFile, downloadBlob } from "@/utils/file";
export default { export default {
components: { components: {
TablePage,
TableOperation,
InfoEditDialog, InfoEditDialog,
SearchBar,
}, },
data() { data() {
return { return {
...@@ -122,7 +116,7 @@ export default { ...@@ -122,7 +116,7 @@ export default {
status: 1, //上下架状态 status: 1, //上下架状态
remark: "", //备注 remark: "", //备注
}, },
loading:false loading: false,
}; };
}, },
...@@ -151,7 +145,7 @@ export default { ...@@ -151,7 +145,7 @@ export default {
}, },
methods: { methods: {
async search(form) { async search(form) {
this.loading = true this.loading = true;
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
...@@ -164,7 +158,7 @@ export default { ...@@ -164,7 +158,7 @@ export default {
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.list = res.data;
} }
this.loading = false this.loading = false;
}, },
reset() { reset() {
...@@ -173,7 +167,7 @@ export default { ...@@ -173,7 +167,7 @@ export default {
// 加载表格数据 // 加载表格数据
async loadData() { async loadData() {
this.loading = true this.loading = true;
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
...@@ -182,7 +176,7 @@ export default { ...@@ -182,7 +176,7 @@ export default {
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.list = res.data;
} }
this.loading = false this.loading = false;
}, },
async handleOperation(value, row) { async handleOperation(value, row) {
switch (value.type) { switch (value.type) {
...@@ -190,7 +184,7 @@ export default { ...@@ -190,7 +184,7 @@ export default {
this.drawerVisible = true; this.drawerVisible = true;
break; break;
case "view": case "view":
if (row.files && row.files.length > 0 && row.files[0].url ) { if (row.files && row.files.length > 0 && row.files[0].url) {
previewFile(row.files[0].url, row.name); previewFile(row.files[0].url, row.name);
} else { } else {
let m = this.$message.info("暂无文献附件!"); let m = this.$message.info("暂无文献附件!");
...@@ -291,4 +285,4 @@ export default { ...@@ -291,4 +285,4 @@ export default {
padding: 10px 20px; padding: 10px 20px;
font-weight: bold; font-weight: bold;
} }
</style> </style>
\ No newline at end of file
...@@ -3,7 +3,12 @@ ...@@ -3,7 +3,12 @@
<div class="top-bar"> <div class="top-bar">
<SearchBar :config="searchConfig" @search="search" @reset="reset" /> <SearchBar :config="searchConfig" @search="search" @reset="reset" />
</div> </div>
<TablePage :data="list.records" :tableTitle="tableTitle" v-loading="loading"> </TablePage> <TablePage
:data="list.records"
:tableTitle="tableTitle"
v-loading="loading"
>
</TablePage>
<el-pagination <el-pagination
@size-change="handleSizeChange" @size-change="handleSizeChange"
...@@ -20,19 +25,10 @@ ...@@ -20,19 +25,10 @@
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import { title } from "./config"; import { title } from "./config";
import { getLogList } from "@/api/log"; import { getLogList } from "@/api/log";
import SearchBar from "@/components/SearchBar";
export default { export default {
components: {
TablePage,
TableOperation,
SearchBar,
},
data() { data() {
return { return {
list: { list: {
...@@ -82,7 +78,7 @@ export default { ...@@ -82,7 +78,7 @@ export default {
}, },
], ],
}, },
{ {
prop: "optType", prop: "optType",
type: "select", type: "select",
...@@ -156,7 +152,7 @@ export default { ...@@ -156,7 +152,7 @@ export default {
label: "用户名", label: "用户名",
}, },
], ],
loading:false loading: false,
}; };
}, },
...@@ -182,7 +178,7 @@ export default { ...@@ -182,7 +178,7 @@ export default {
}, },
methods: { methods: {
async search(form) { async search(form) {
this.loading = true this.loading = true;
this.list.current = 1; this.list.current = 1;
var params = { var params = {
page: this.list.current, page: this.list.current,
...@@ -202,7 +198,7 @@ export default { ...@@ -202,7 +198,7 @@ export default {
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.list = res.data;
} }
this.loading = false this.loading = false;
}, },
reset() { reset() {
...@@ -211,7 +207,7 @@ export default { ...@@ -211,7 +207,7 @@ export default {
// 加载表格数据 // 加载表格数据
async loadData() { async loadData() {
this.loading = true this.loading = true;
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
...@@ -220,7 +216,7 @@ export default { ...@@ -220,7 +216,7 @@ export default {
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.list = res.data;
} }
this.loading = false this.loading = false;
}, },
// 改变页容量 // 改变页容量
...@@ -249,7 +245,7 @@ export default { ...@@ -249,7 +245,7 @@ export default {
margin: 16px; margin: 16px;
} }
::v-deep .el-form-item{ ::v-deep .el-form-item {
margin-bottom: 20px; margin-bottom: 20px;
} }
</style> </style>
\ No newline at end of file
...@@ -112,20 +112,12 @@ ...@@ -112,20 +112,12 @@
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import { title, operates, operations } from "./config"; import { title, operates, operations } from "./config";
import InfoEditDialog from "./components/InfoEditDialog"; import InfoEditDialog from "./components/InfoEditDialog";
import SearchBar from "@/components/SearchBar";
import { deleteMuseum, editMuseum } from "@/api/org"; import { deleteMuseum, editMuseum } from "@/api/org";
export default { export default {
components: { components: {
TablePage,
TableOperation,
InfoEditDialog, InfoEditDialog,
SearchBar,
"el-image-viewer": () =>
import("element-ui/packages/image/src/image-viewer"),
}, },
data() { data() {
return { return {
......
...@@ -2,57 +2,93 @@ ...@@ -2,57 +2,93 @@
<div class="app-container"> <div class="app-container">
<div class="top-bar"> <div class="top-bar">
<SearchBar :config="searchConfig" @search="search" @reset="reset" /> <SearchBar :config="searchConfig" @search="search" @reset="reset" />
<el-button size="mini" type="primary" @click.native="handleOperation({ type: 'add' })" icon="el-icon-plus"> <el-button
添加</el-button> size="mini"
type="primary"
@click.native="handleOperation({ type: 'add' })"
icon="el-icon-plus"
>
添加</el-button
>
</div> </div>
<TablePage :data="list.records" :tableTitle="tableTitle" :operates="tableOperates" v-loading="loading"> <TablePage
:data="list.records"
:tableTitle="tableTitle"
:operates="tableOperates"
v-loading="loading"
>
<template v-slot:images="data"> <template v-slot:images="data">
<img :src="$getFullUrl(data.scope.imagesVo[0].pressUrl)" alt="暂无图片" v-if="data.scope.imagesVo.length > 0" style=" <img
:src="$getFullUrl(data.scope.imagesVo[0].pressUrl)"
alt="暂无图片"
v-if="data.scope.imagesVo.length > 0"
style="
cursor: pointer; cursor: pointer;
height: 100px; height: 100px;
width: 100px; width: 100px;
object-fit: contain; object-fit: contain;
" width="100px" @click=" "
width="100px"
@click="
handelPreviewImages($getFullUrl(data.scope.imagesVo[0].pressUrl)) handelPreviewImages($getFullUrl(data.scope.imagesVo[0].pressUrl))
" /> "
/>
</template> </template>
<template v-slot:status="data"> <template v-slot:status="data">
<el-popconfirm :title="getStatusTitle(data.scope.status)" @confirm="handleChangeStatus(data.scope)"> <el-popconfirm
<el-switch slot="reference" :value="Boolean(Number(data.scope.status))"></el-switch> :title="getStatusTitle(data.scope.status)"
@confirm="handleChangeStatus(data.scope)"
>
<el-switch
slot="reference"
:value="Boolean(Number(data.scope.status))"
></el-switch>
</el-popconfirm> </el-popconfirm>
</template> </template>
<template v-slot:operates="scope"> <template v-slot:operates="scope">
<TableOperation :operations="tableOperations" :rawData="scope.scope.row" @handleOperation="handleOperation"> <TableOperation
:operations="tableOperations"
:rawData="scope.scope.row"
@handleOperation="handleOperation"
>
</TableOperation> </TableOperation>
</template> </template>
</TablePage> </TablePage>
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" <el-pagination
:current-page="Number(list.current)" :page-sizes="[10, 20, 40, 50]" :page-size="Number(list.size)" @size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper" :total="Number(list.total)" class="pagination"> @current-change="handleCurrentChange"
:current-page="Number(list.current)"
:page-sizes="[10, 20, 40, 50]"
:page-size="Number(list.size)"
layout="total, sizes, prev, pager, next, jumper"
:total="Number(list.total)"
class="pagination"
>
</el-pagination> </el-pagination>
<InfoEditDialog :visible="drawerVisible" :form="form" :orgTreeData="orgTreeData" @handleClose="handleClose" <InfoEditDialog
@refresh="loadData" /> :visible="drawerVisible"
<el-image-viewer v-if="imgViewerVisible" :on-close="closeImgViewer" :url-list="imgList" /> :form="form"
:orgTreeData="orgTreeData"
@handleClose="handleClose"
@refresh="loadData"
/>
<el-image-viewer
v-if="imgViewerVisible"
:on-close="closeImgViewer"
:url-list="imgList"
/>
</div> </div>
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import { title, operates, operations } from "./config"; import { title, operates, operations } from "./config";
import { getCcProduct, deleteCcProduct } from "@/api/literature"; import { getCcProduct, deleteCcProduct } from "@/api/literature";
import InfoEditDialog from "./components/InfoEditDialog"; import InfoEditDialog from "./components/InfoEditDialog";
import SearchBar from "@/components/SearchBar";
export default { export default {
components: { components: {
TablePage,
TableOperation,
InfoEditDialog, InfoEditDialog,
SearchBar,
"el-image-viewer": () =>
import("element-ui/packages/image/src/image-viewer"),
}, },
data() { data() {
return { return {
...@@ -149,7 +185,7 @@ export default { ...@@ -149,7 +185,7 @@ export default {
// 加载表格数据 // 加载表格数据
async loadData() { async loadData() {
this.loading = true this.loading = true;
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
...@@ -158,7 +194,7 @@ export default { ...@@ -158,7 +194,7 @@ export default {
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.list = res.data;
} }
this.loading = false this.loading = false;
}, },
loadOrgTree() { loadOrgTree() {
this.$store.dispatch("org/getMuseumTreeData", true).then((res) => { this.$store.dispatch("org/getMuseumTreeData", true).then((res) => {
...@@ -355,4 +391,4 @@ export default { ...@@ -355,4 +391,4 @@ export default {
border-radius: 0; border-radius: 0;
} }
} }
</style> </style>
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="top-bar"> <div class="top-bar">
<SearchBar :config="searchConfig" @search="search" @reset="reset" /> <SearchBar :config="searchConfig" @search="search" @reset="reset" />
<el-button <el-button
size="mini" size="mini"
type="primary" type="primary"
@click.native="handleOperation({ type: 'add' })" @click.native="handleOperation({ type: 'add' })"
icon="el-icon-plus" icon="el-icon-plus"
...@@ -65,21 +65,15 @@ ...@@ -65,21 +65,15 @@
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import { title, operates, operations } from "./config"; import { title, operates, operations } from "./config";
import { getRoleList, getRoleById, deleteRole, upadateRole } from "@/api/user"; import { getRoleList, getRoleById, deleteRole, upadateRole } from "@/api/user";
import InfoEditDialog from "./components/InfoEditDialog"; import InfoEditDialog from "./components/InfoEditDialog";
import DataEditDialog from "./components/DataEditDialog"; import DataEditDialog from "./components/DataEditDialog";
import SearchBar from "@/components/SearchBar";
export default { export default {
components: { components: {
TablePage,
TableOperation,
InfoEditDialog, InfoEditDialog,
DataEditDialog, DataEditDialog,
SearchBar,
}, },
data() { data() {
return { return {
...@@ -120,12 +114,12 @@ export default { ...@@ -120,12 +114,12 @@ export default {
name: "", name: "",
remark: "", remark: "",
status: 1, status: 1,
permissionRespNodes: [],//菜单权限树 permissionRespNodes: [], //菜单权限树
dataScope: 5,//默认数据权限为自己 dataScope: 5, //默认数据权限为自己
}, },
dataScopeForm: {},//编辑数据权限的表单 dataScopeForm: {}, //编辑数据权限的表单
dataEditDialog: false, //编辑数据的对话框 dataEditDialog: false, //编辑数据的对话框
loading:false loading: false,
}; };
}, },
...@@ -155,7 +149,7 @@ export default { ...@@ -155,7 +149,7 @@ export default {
}, },
methods: { methods: {
async search(form) { async search(form) {
this.loading = true this.loading = true;
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
...@@ -168,7 +162,7 @@ export default { ...@@ -168,7 +162,7 @@ export default {
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.list = res.data;
} }
this.loading = false this.loading = false;
}, },
reset() { reset() {
...@@ -278,4 +272,4 @@ export default { ...@@ -278,4 +272,4 @@ export default {
padding: 10px 20px; padding: 10px 20px;
font-weight: bold; font-weight: bold;
} }
</style> </style>
\ No newline at end of file
...@@ -2,56 +2,98 @@ ...@@ -2,56 +2,98 @@
<div class="users app-container"> <div class="users app-container">
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="4" class="left-tree"> <el-col :span="4" class="left-tree">
<el-scrollbar style="height:100%;"> <el-scrollbar style="height: 100%">
<el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick" default-expand-all <el-tree
:expand-on-click-node="false"></el-tree> :data="treeData"
:props="defaultProps"
@node-click="handleNodeClick"
default-expand-all
:expand-on-click-node="false"
></el-tree>
</el-scrollbar> </el-scrollbar>
</el-col> </el-col>
<el-col :span="20"> <el-col :span="20">
<div class="top-bar"> <div class="top-bar">
<SearchBar :config="searchConfig" @search="search" @reset="reset" /> <SearchBar :config="searchConfig" @search="search" @reset="reset" />
<el-button size="mini" type="primary" @click.native="handleOperation({ type: 'add' })" icon="el-icon-plus"> <el-button
新增</el-button> size="mini"
type="primary"
@click.native="handleOperation({ type: 'add' })"
icon="el-icon-plus"
>
新增</el-button
>
</div> </div>
<TablePage :data="list.records" :tableTitle="tableTitle" :operates="tableOperates" v-loading="loading"> <TablePage
:data="list.records"
:tableTitle="tableTitle"
:operates="tableOperates"
v-loading="loading"
>
<template v-slot:status="data"> <template v-slot:status="data">
<el-popconfirm :title="getStatusTitle(data.scope.status)" @confirm="handleChangeStatus(data.scope)"> <el-popconfirm
<el-switch slot="reference" :value="Boolean(Number(data.scope.status))"></el-switch> :title="getStatusTitle(data.scope.status)"
@confirm="handleChangeStatus(data.scope)"
>
<el-switch
slot="reference"
:value="Boolean(Number(data.scope.status))"
></el-switch>
</el-popconfirm> </el-popconfirm>
</template> </template>
<template v-slot:operates="scope"> <template v-slot:operates="scope">
<TableOperation :operations="tableOperations" :rawData="scope.scope.row" @handleOperation="handleOperation"> <TableOperation
:operations="tableOperations"
:rawData="scope.scope.row"
@handleOperation="handleOperation"
>
</TableOperation> </TableOperation>
</template> </template>
</TablePage> </TablePage>
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" <el-pagination
:current-page="Number(list.current)" :page-sizes="[10, 20, 40, 50]" :page-size="Number(list.size)" @size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper" :total="Number(list.total)" class="pagination"> @current-change="handleCurrentChange"
:current-page="Number(list.current)"
:page-sizes="[10, 20, 40, 50]"
:page-size="Number(list.size)"
layout="total, sizes, prev, pager, next, jumper"
:total="Number(list.total)"
class="pagination"
>
</el-pagination> </el-pagination>
</el-col> </el-col>
</el-row> </el-row>
<InfoEditDialog :visible="dialogVisible" :form="form" :orgTreeData="treeData" @handleClose="handleClose" <InfoEditDialog
@refresh="loadListData" /> :visible="dialogVisible"
<EditRole :visible="editRoleVisible" :roleData="currentRoleData" :id="currentId" :form="form"
@handleClose="handleCloseEditRole" /> :orgTreeData="treeData"
<EditPassword :visible="editPasswordVisible" :id="currentId" @handleClose="handleCloseEditPassword" /> @handleClose="handleClose"
@refresh="loadListData"
/>
<EditRole
:visible="editRoleVisible"
:roleData="currentRoleData"
:id="currentId"
@handleClose="handleCloseEditRole"
/>
<EditPassword
:visible="editPasswordVisible"
:id="currentId"
@handleClose="handleCloseEditPassword"
/>
</div> </div>
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import SearchBar from "@/components/SearchBar";
import { title, operates, operations } from "./config"; import { title, operates, operations } from "./config";
import { import {
getDeptTree, getDeptTree,
getUserList, getUserList,
deleteUser, deleteUser,
getUserOwnRoles, getUserOwnRoles,
getUserOwnRolesV1 getUserOwnRolesV1,
} from "@/api/user"; } from "@/api/user";
import InfoEditDialog from "./components/InfoEditDialog.vue"; import InfoEditDialog from "./components/InfoEditDialog.vue";
import EditRole from "./components/EditRole.vue"; import EditRole from "./components/EditRole.vue";
...@@ -59,12 +101,9 @@ import EditPassword from "./components/EditPassword.vue"; ...@@ -59,12 +101,9 @@ import EditPassword from "./components/EditPassword.vue";
export default { export default {
components: { components: {
TablePage,
TableOperation,
SearchBar,
InfoEditDialog, InfoEditDialog,
EditRole, EditRole,
EditPassword EditPassword,
}, },
computed: { computed: {
tableTitle() { tableTitle() {
...@@ -127,7 +166,7 @@ export default { ...@@ -127,7 +166,7 @@ export default {
editPasswordVisible: false, editPasswordVisible: false,
currentRoleData: {}, currentRoleData: {},
currentId: null, currentId: null,
loading:false loading: false,
}; };
}, },
mounted() { mounted() {
...@@ -136,19 +175,16 @@ export default { ...@@ -136,19 +175,16 @@ export default {
methods: { methods: {
// 加载树结构数据 // 加载树结构数据
async loadTreeData() { async loadTreeData() {
const res = await getDeptTree(); const res = await getDeptTree();
if (res.code == 0) { if (res.code == 0) {
this.treeData = res.data[0].children; //去除默认顶级部门 this.treeData = res.data[0].children; //去除默认顶级部门
this.currentDeptNo = this.treeData[0].deptNo; this.currentDeptNo = this.treeData[0].deptNo;
this.loadListData(); this.loadListData();
} }
}, },
// 加载表格数据 // 加载表格数据
async loadListData() { async loadListData() {
this.loading = true this.loading = true;
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
...@@ -158,7 +194,7 @@ export default { ...@@ -158,7 +194,7 @@ export default {
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.list = res.data;
} }
this.loading = false this.loading = false;
}, },
async search(form) { async search(form) {
...@@ -217,8 +253,8 @@ export default { ...@@ -217,8 +253,8 @@ export default {
this.currentRoleData = roleRes.data; this.currentRoleData = roleRes.data;
this.currentId = row.id; this.currentId = row.id;
break; break;
case 'editPassword': case "editPassword":
console.log('editPassword'); console.log("editPassword");
this.editPasswordVisible = true; this.editPasswordVisible = true;
this.currentId = row.id; this.currentId = row.id;
break; break;
...@@ -237,10 +273,10 @@ export default { ...@@ -237,10 +273,10 @@ export default {
this.currentId = null; this.currentId = null;
}, },
handleCloseEditPassword(){ handleCloseEditPassword() {
this.editPasswordVisible = false; this.editPasswordVisible = false;
this.currentId = null; this.currentId = null;
} },
}, },
}; };
</script> </script>
...@@ -268,4 +304,4 @@ export default { ...@@ -268,4 +304,4 @@ export default {
::v-deep .el-scrollbar .el-scrollbar__wrap { ::v-deep .el-scrollbar .el-scrollbar__wrap {
overflow-x: hidden; overflow-x: hidden;
} }
</style> </style>
\ No newline at end of file
...@@ -2,51 +2,86 @@ ...@@ -2,51 +2,86 @@
<div class="app-container"> <div class="app-container">
<div class="top-bar"> <div class="top-bar">
<SearchBar :config="searchConfig" @search="search" @reset="reset" /> <SearchBar :config="searchConfig" @search="search" @reset="reset" />
<el-button size="mini" type="primary" @click.native="handleOperation({ type: 'add' })" icon="el-icon-plus"> <el-button
添加</el-button> size="mini"
type="primary"
@click.native="handleOperation({ type: 'add' })"
icon="el-icon-plus"
>
添加</el-button
>
</div> </div>
<TablePage :data="list.records" :tableTitle="tableTitle" :operates="tableOperates" v-loading="loading"> <TablePage
:data="list.records"
:tableTitle="tableTitle"
:operates="tableOperates"
v-loading="loading"
>
<template v-slot:faceImageUrl="data"> <template v-slot:faceImageUrl="data">
<img :src="data.scope.faceImageUrl" alt="暂无图片" v-if="data.scope.faceImageUrl" style="cursor: pointer" <img
width="100px" @click="handelPreviewImages(data.scope.faceImageUrl)" /> :src="data.scope.faceImageUrl"
alt="暂无图片"
v-if="data.scope.faceImageUrl"
style="cursor: pointer"
width="100px"
@click="handelPreviewImages(data.scope.faceImageUrl)"
/>
</template> </template>
<template v-slot:status="data"> <template v-slot:status="data">
<el-popconfirm :title="getStatusTitle(data.scope.status)" @confirm="handleChangeStatus(data.scope)"> <el-popconfirm
<el-switch slot="reference" :value="Boolean(Number(data.scope.status))"></el-switch> :title="getStatusTitle(data.scope.status)"
@confirm="handleChangeStatus(data.scope)"
>
<el-switch
slot="reference"
:value="Boolean(Number(data.scope.status))"
></el-switch>
</el-popconfirm> </el-popconfirm>
</template> </template>
<template v-slot:operates="scope"> <template v-slot:operates="scope">
<TableOperation :operations="tableOperations" :rawData="scope.scope.row" @handleOperation="handleOperation"> <TableOperation
:operations="tableOperations"
:rawData="scope.scope.row"
@handleOperation="handleOperation"
>
</TableOperation> </TableOperation>
</template> </template>
</TablePage> </TablePage>
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" <el-pagination
:current-page="Number(list.current)" :page-sizes="[10, 20, 40, 50]" :page-size="Number(list.size)" @size-change="handleSizeChange"
layout="total, sizes, prev, pager, next, jumper" :total="Number(list.total)" class="pagination"> @current-change="handleCurrentChange"
:current-page="Number(list.current)"
:page-sizes="[10, 20, 40, 50]"
:page-size="Number(list.size)"
layout="total, sizes, prev, pager, next, jumper"
:total="Number(list.total)"
class="pagination"
>
</el-pagination> </el-pagination>
<InfoEditDialog :visible="drawerVisible" :form="form" :orgTreeData="orgTreeData" @handleClose="handleClose" <InfoEditDialog
@refresh="loadData" /> :visible="drawerVisible"
<el-image-viewer v-if="imgViewerVisible" :on-close="closeImgViewer" :url-list="imgList" /> :form="form"
:orgTreeData="orgTreeData"
@handleClose="handleClose"
@refresh="loadData"
/>
<el-image-viewer
v-if="imgViewerVisible"
:on-close="closeImgViewer"
:url-list="imgList"
/>
</div> </div>
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import { title, operates, operations } from "./config"; import { title, operates, operations } from "./config";
import { deleteVirtual, editVirtual, getVirtualListPer } from "@/api/vitual"; import { deleteVirtual, editVirtual, getVirtualListPer } from "@/api/vitual";
import InfoEditDialog from "./components/InfoEditDialog"; import InfoEditDialog from "./components/InfoEditDialog";
import SearchBar from "@/components/SearchBar";
export default { export default {
components: { components: {
TablePage,
TableOperation,
InfoEditDialog, InfoEditDialog,
SearchBar,
"el-image-viewer": () =>
import("element-ui/packages/image/src/image-viewer"),
}, },
data() { data() {
return { return {
...@@ -124,7 +159,7 @@ export default { ...@@ -124,7 +159,7 @@ export default {
}, },
methods: { methods: {
async search(form) { async search(form) {
this.loading = true this.loading = true;
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
...@@ -137,7 +172,7 @@ export default { ...@@ -137,7 +172,7 @@ export default {
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.list = res.data;
} }
this.loading = false this.loading = false;
}, },
reset() { reset() {
...@@ -146,7 +181,7 @@ export default { ...@@ -146,7 +181,7 @@ export default {
// 加载表格数据 // 加载表格数据
async loadData() { async loadData() {
this.loading = true this.loading = true;
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
...@@ -155,7 +190,7 @@ export default { ...@@ -155,7 +190,7 @@ export default {
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.list = res.data;
} }
this.loading = false this.loading = false;
}, },
loadOrgTree() { loadOrgTree() {
this.$store.dispatch("org/getMuseumTreeData", true).then((res) => { this.$store.dispatch("org/getMuseumTreeData", true).then((res) => {
...@@ -352,4 +387,4 @@ export default { ...@@ -352,4 +387,4 @@ export default {
border-radius: 0; border-radius: 0;
} }
} }
</style> </style>
\ No newline at end of file
...@@ -31,7 +31,7 @@ module.exports = { ...@@ -31,7 +31,7 @@ module.exports = {
lintOnSave: false, lintOnSave: false,
productionSourceMap: false, productionSourceMap: false,
devServer: { devServer: {
host: 'localhost', host: '172.24.100.158',
port: port, port: port,
open: true, open: true,
overlay: { overlay: {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论