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

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

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