提交 6187ea81 authored 作者: 龙菲's avatar 龙菲

对接待审核文物列表接口、优化文物上传和修改的逻辑处理

上级 7a27ee63
import request from '@/utils/request'
// 带权限查询审核分页数据
export function getFlowListPagePer(data) {
return request({
url: '/bizFlow/listByPagePer',
method: 'post',
data
})
}
// 通过流程id查询流程详情
export function getFlowDetailById(params) {
return request({
url: '/bizFlow/detailById',
method: 'get',
params
})
}
// 查询流程关联的文物详情(手动添加的文物详情)
export function getFlowCulturalRelicDetail(params) {
return request({
url: '/bizFlow/flowCulturalRelicDetail',
method: 'get',
params
})
}
// 查询流程关联的展览详情(手动添加的展览详情)
export function getFlowExhibitionDetail(params) {
return request({
url: '/bizFlow/flowExhibitionDetail',
method: 'get',
params
})
}
// 带权限分页查询流程关联的文物信息
export function getListFlowCulturalRelicByPage(data) {
return request({
url: '/bizFlow/listFlowCulturalRelicByPage',
method: 'post',
data
})
}
// 带权限查询审核分页数据
export function getListByPagePer(data) {
return request({
url: '/bizFlow/delete',
method: 'post',
data
})
}
\ No newline at end of file
// 目前文物存在2张表,一张临时表和中间表,只有审核通过的在最终表,未审核和审核驳回等在临时表
// 新增和修改也只是存在临时表
// 最终表的数据不能修改
import request from '@/utils/request' import request from '@/utils/request'
export function getCulturalRelicList(data) { export function getCulturalRelicList(data) {
...@@ -8,6 +12,7 @@ export function getCulturalRelicList(data) { ...@@ -8,6 +12,7 @@ export function getCulturalRelicList(data) {
}) })
} }
// 获取带权限的文物列表分页(最终表)
export function getCulturalRelicListPer(data) { export function getCulturalRelicListPer(data) {
return request({ return request({
url: '/bizCulturalRelic/listByPagePer', url: '/bizCulturalRelic/listByPagePer',
...@@ -16,7 +21,27 @@ export function getCulturalRelicListPer(data) { ...@@ -16,7 +21,27 @@ export function getCulturalRelicListPer(data) {
}) })
} }
// 获取带权限的文物列表分页(临时表)
export function getCulturalRelicListPerTemp(data) {
return request({
url: '/bizCulturalRelicTemp/listByPagePer',
method: 'post',
data
})
}
// 文物新增和修改(临时表)
export function addOrUpdateCulturalRelic(data) {
return request({
url: '/bizCulturalRelicTemp/addOrUpdate',
method: 'post',
data
})
}
// 新增文物(最终表),因为多了临时表暂时废弃
export function addCulturalRelic(data) { export function addCulturalRelic(data) {
return request({ return request({
url: '/bizCulturalRelic/add', url: '/bizCulturalRelic/add',
...@@ -25,6 +50,7 @@ export function addCulturalRelic(data) { ...@@ -25,6 +50,7 @@ export function addCulturalRelic(data) {
}) })
} }
// 修改文物(最终表),因为多了临时表暂时废弃
export function editCulturalRelic(data) { export function editCulturalRelic(data) {
return request({ return request({
url: '/bizCulturalRelic/update', url: '/bizCulturalRelic/update',
...@@ -33,7 +59,7 @@ export function editCulturalRelic(data) { ...@@ -33,7 +59,7 @@ export function editCulturalRelic(data) {
}) })
} }
// 根据文物id查询详情 // 根据文物id查询详情(最终表)
export function getRCDetailById(params) { export function getRCDetailById(params) {
return request({ return request({
url: '/bizCulturalRelic/listById', url: '/bizCulturalRelic/listById',
...@@ -42,6 +68,17 @@ export function getRCDetailById(params) { ...@@ -42,6 +68,17 @@ export function getRCDetailById(params) {
}) })
} }
// 根据文物id查询详情(临时表)
export function getRCDetailByIdTemp(params) {
return request({
url: '/bizCulturalRelicTemp/detailById',
method: 'get',
params
})
}
// 删除文物(最终表)
export function deleteCultralRelic(data) { export function deleteCultralRelic(data) {
return request({ return request({
url: '/bizCulturalRelic/delete', url: '/bizCulturalRelic/delete',
...@@ -50,6 +87,15 @@ export function deleteCultralRelic(data) { ...@@ -50,6 +87,15 @@ export function deleteCultralRelic(data) {
}) })
} }
// 删除文物(临时表)
export function deleteCultralRelicTemp(data) {
return request({
url: '/bizCulturalRelicTemp/delete',
method: 'delete',
data
})
}
// 获取文物数量统计 // 获取文物数量统计
export function getCulturalRelicStatistic(params) { export function getCulturalRelicStatistic(params) {
return request({ return request({
......
// 目前展览存在2张表,一张临时表和中间表,只有审核通过的在最终表,未审核和审核驳回等在临时表
// 新增和修改也只是存在临时表
// 最终表的数据不能修改
import request from '@/utils/request' import request from '@/utils/request'
// 获取布展列表 // 获取布展列表
...@@ -9,7 +13,7 @@ export function getList(data) { ...@@ -9,7 +13,7 @@ export function getList(data) {
}) })
} }
// 获取布展列表 // 获取布展列表(最终表)
export function getListPer(data) { export function getListPer(data) {
return request({ return request({
url: '/bizExhibition/listByPagePer', url: '/bizExhibition/listByPagePer',
...@@ -18,7 +22,27 @@ export function getListPer(data) { ...@@ -18,7 +22,27 @@ export function getListPer(data) {
}) })
} }
// 新增
// 获取布展列表(临时表)
export function getListPerTemp(data) {
return request({
url: '/bizExhibitionTemp/listByPagePer',
method: 'post',
data
})
}
// 新增修改(临时表)
export function addOrUpdateDisplayTemp(data) {
return request({
url: '/bizExhibitionTemp/addOrUpdate',
method: 'post',
data
})
}
// 新增(最终表),因为最终表不允许修改所以废弃
export function addDisplay(data) { export function addDisplay(data) {
return request({ return request({
url: '/bizExhibition/add', url: '/bizExhibition/add',
...@@ -26,6 +50,7 @@ export function addDisplay(data) { ...@@ -26,6 +50,7 @@ export function addDisplay(data) {
data data
}) })
} }
// 修改(最终表),因为最终表不允许修改所以废弃
export function editDisplay(data) { export function editDisplay(data) {
return request({ return request({
url: '/bizExhibition/update', url: '/bizExhibition/update',
...@@ -34,6 +59,7 @@ export function editDisplay(data) { ...@@ -34,6 +59,7 @@ export function editDisplay(data) {
}) })
} }
// 修改展览(最终表)
export function getDisplayById(params) { export function getDisplayById(params) {
return request({ return request({
url: '/bizExhibition/listById', url: '/bizExhibition/listById',
...@@ -42,6 +68,16 @@ export function getDisplayById(params) { ...@@ -42,6 +68,16 @@ export function getDisplayById(params) {
}) })
} }
// 修改展览(临时表)
export function getDisplayByIdTemp(params) {
return request({
url: '/bizExhibitionTemp/detailById',
method: 'get',
params
})
}
// 删除展览(最终表)
export function deleteDisplay(data) { export function deleteDisplay(data) {
return request({ return request({
url: '/bizExhibition/delete', url: '/bizExhibition/delete',
...@@ -49,6 +85,15 @@ export function deleteDisplay(data) { ...@@ -49,6 +85,15 @@ export function deleteDisplay(data) {
data data
}) })
} }
// 删除展览(临时表)
export function deleteDisplayTemp(data) {
return request({
url: '/bizExhibitionTemp/delete',
method: 'delete',
data
})
}
// 获取展览数量统计 // 获取展览数量统计
export function getExhibitionStatistic(params) { export function getExhibitionStatistic(params) {
...@@ -59,14 +104,6 @@ export function getExhibitionStatistic(params) { ...@@ -59,14 +104,6 @@ export function getExhibitionStatistic(params) {
}) })
} }
// 获取展览审核列表
// export function getDisplayChecklist(data) {
// return request({
// url: '/bizExhibition/checklistByPagePer',
// method: 'post',
// data
// })
// }
// 查询审批结果 // 查询审批结果
export function getDisplayCheckById(params) { export function getDisplayCheckById(params) {
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<script> <script>
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
export default { export default {
name: "DictText",
props: { props: {
// 字典名称,必填 // 字典名称,必填
name: { name: {
......
### 全局组件注册操作说明
注册在全局的组件无需引入即可直接使用
1.在 index.js 中引入需要导入的组件
2.并在数组中添加该组件
#### 注意事项
必须保证组件的 name 和组件本身名称一致,否则无法注册成功
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<script> <script>
export default { export default {
name: "RichTextShow",
props: { props: {
richText: { richText: {
type: String, type: String,
......
...@@ -7,14 +7,14 @@ ...@@ -7,14 +7,14 @@
> >
<el-input <el-input
v-if="item.type == 'input'" v-if="item.type == 'input'"
v-model="searchData[item.prop]" v-model="searchForm[item.prop]"
:placeholder="`请输入${item.placeholder || item.label}`" :placeholder="`请输入${item.placeholder || item.label}`"
@keyup.enter.native="handleSearch" @keyup.enter.native="handleSearch"
clearable clearable
></el-input> ></el-input>
<el-select <el-select
v-if="item.type == 'select'" v-if="item.type == 'select'"
v-model="searchData[item.prop]" v-model="searchForm[item.prop]"
:placeholder="`请选择${item.placeholder || item.label}`" :placeholder="`请选择${item.placeholder || item.label}`"
clearable clearable
filterable filterable
...@@ -25,12 +25,11 @@ ...@@ -25,12 +25,11 @@
:value="option.value" :value="option.value"
v-for="option in item.selectOptions" v-for="option in item.selectOptions"
:key="option.value" :key="option.value"
></el-option> ></el-option>
</el-select> </el-select>
<el-date-picker <el-date-picker
v-if="item.type == 'dateTimeRange'" v-if="item.type == 'dateTimeRange'"
v-model="searchData[item.prop]" v-model="searchForm[item.prop]"
type="datetimerange" type="datetimerange"
align="right" align="right"
start-placeholder="开始日期" start-placeholder="开始日期"
...@@ -40,9 +39,12 @@ ...@@ -40,9 +39,12 @@
:value-format="'yyyy-MM-dd HH:mm:ss'" :value-format="'yyyy-MM-dd HH:mm:ss'"
> >
</el-date-picker> </el-date-picker>
<el-checkbox v-if="item.type=='checkbox'" v-model="searchData[item.prop]"></el-checkbox> <el-checkbox
v-if="item.type == 'checkbox'"
v-model="searchForm[item.prop]"
></el-checkbox>
</el-form-item> </el-form-item>
<el-form-item style="margin-left:26px"> <el-form-item style="margin-left: 26px">
<el-button <el-button
type="primary" type="primary"
icon="el-icon-search" icon="el-icon-search"
...@@ -73,49 +75,12 @@ export default { ...@@ -73,49 +75,12 @@ export default {
type: Array, type: Array,
default: () => [], default: () => [],
}, },
/**
*
* form:{
name:'',
status:''
}
config: [
{
prop: "name",
type: "input",
label: "展览名称",
},
{
prop: "status",
type: "select",
label: "状态",
selectOptions: [
{
label: "在线",
value: "true",
},
{
label: "离线",
value: "false",
},
],
},
],
*
*
*/
}, },
watch: { watch: {
config: { config: {
handler: function (value) { handler: function (value) {
if (value) { if (value) {
var obj = {}; this.searchForm = this.getSearchFormInitialValue(value);
this.config.map((item) => {
obj[item.prop] = "";
});
this.searchData = JSON.parse(JSON.stringify(obj));
} }
}, },
immediate: true, immediate: true,
...@@ -124,7 +89,7 @@ export default { ...@@ -124,7 +89,7 @@ export default {
}, },
data() { data() {
return { return {
searchData: {}, searchForm: {},
pickerOptions: { pickerOptions: {
shortcuts: [ shortcuts: [
{ {
...@@ -159,11 +124,23 @@ export default { ...@@ -159,11 +124,23 @@ export default {
}; };
}, },
methods: { methods: {
// 获取searchForm初始值
getSearchFormInitialValue(config) {
let form = {};
config.map((item) => {
if (item.type == "checkbox") {
form[item.prop] = false;
} else {
form[item.prop] = "";
}
});
return JSON.parse(JSON.stringify(form));
},
handleSearch() { handleSearch() {
this.$emit("search", this.searchData); this.$emit("search", this.searchForm);
}, },
handleReset() { handleReset() {
this.searchData = {}; this.searchForm = this.getSearchFormInitialValue(this.config);
this.$emit("reset"); this.$emit("reset");
}, },
handleSelectChange() { handleSelectChange() {
...@@ -177,8 +154,7 @@ export default { ...@@ -177,8 +154,7 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .el-form-item {
::v-deep .el-form-item{
margin-bottom: 0; margin-bottom: 0;
} }
</style> </style>
\ No newline at end of file
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<script> <script>
export default { export default {
name: "TableComponent", name: "TableOperation",
props: { props: {
operations: { operations: {
type: Array, type: Array,
......
<template> <template>
<div class="images-list"> <div class="images-list">
<!-- <el-upload :disabled="onlyRead" action="#" :on-remove="handleRemove" :on-exceed="handleExceed" :on-change="handleChange"
:file-list="fileList" :multiple="fileLimit > 1" :limit="fileLimit" :list-type="listType" :accept="fileAccept"
:auto-upload="false" ref="ManualUploader" :class="{ disabled: uploadDisabled || onlyRead }">
<i v-if="listType === 'picture-card'" class="el-icon-plus" slot="trigger" ></i>
<el-button size="small" type="primary" v-else-if="!onlyRead">点击上传</el-button>
<div v-if="(showTip && !onlyRead)" slot="tip" class="el-upload__tip">
<div v-if="advice" style="color: #f56c6c">建议:{{ advice }}</div>
提示:只能上传{{ fileTypeName || "jpg/png" }}文件,且不超过
{{ fileSize }}MB,最多上传{{ fileLimit }}个文件
</div>
</el-upload> -->
<el-upload <el-upload
action="#" action="#"
:on-remove="handleRemove" :on-remove="handleRemove"
......
import DictText from './DictText/index.vue'//字典文字显示 import DictText from './DictText/index.vue'//字典文字显示
import TextShow from './TextShow/index.vue'//富文本文字显示 import RichTextShow from './RichTextShow/index.vue'//富文本文字显示
import SearchBar from './SearchBar/index.vue'//富文本文字显示
import TablePage from "./Table/TablePage.vue";//分页
import TableOperation from "./Table/TableOperation.vue";//分页操作
import ManualUploader from "./Uploader/ManualUploader.vue";//上传文件组件
import VueQuillEditor from "@/components/VueQuillEditor";//富文本编辑器
import ElImageViewer from "element-ui/packages/image/src/image-viewer"
export default { const components = [DictText, RichTextShow, SearchBar, TablePage, TableOperation, ElImageViewer, ManualUploader, VueQuillEditor]
const plugins = {
install(Vue) { install(Vue) {
//注册全局组件 components.forEach((component) => {
Vue.component('DictText', DictText) Vue.component(component.name, component)
Vue.component('TextShow', TextShow) })
} }
} }
\ No newline at end of file
export default plugins
\ No newline at end of file
...@@ -12,17 +12,14 @@ import '@/permission' // permission control ...@@ -12,17 +12,14 @@ import '@/permission' // permission control
import VideoPlayer from 'vue-video-player' import VideoPlayer from 'vue-video-player'
import 'video.js/dist/video-js.css' import 'video.js/dist/video-js.css'
import 'vue-video-player/src/custom-theme.css' import 'vue-video-player/src/custom-theme.css'
import {
getFullUrl // 导入批量注册的组件
} from '@/utils/index' import plugins from './components'
import { file } from '@/utils/file' import '@/utils/globalFunctions'
import * as echarts from 'echarts';
import Components from '@/components' // 注册导入的插件
Vue.use(plugins)
Vue.use(Components)
Vue.prototype.$getFullUrl = getFullUrl
Vue.prototype.$echarts = echarts
Vue.prototype.$file = file
Vue.use(ElementUI) Vue.use(ElementUI)
Vue.use(VideoPlayer) Vue.use(VideoPlayer)
Vue.config.productionTip = false Vue.config.productionTip = false
......
// 本文件放置一些全局使用的方法,统一管理方便修改
import Vue from 'vue'
import {
getFullUrl
} from '@/utils/index'
import { file } from '@/utils/file'
import * as echarts from 'echarts';
Vue.prototype.$getFullUrl = getFullUrl //获取文件的完整链接
Vue.prototype.$echarts = echarts //Echarts
Vue.prototype.$file = file //文件操作
\ No newline at end of file
...@@ -61,30 +61,24 @@ ...@@ -61,30 +61,24 @@
</el-pagination> </el-pagination>
</div> </div>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" size="mini" @click.native="handleClose">关闭</el-button> <el-button type="primary" size="mini" @click.native="handleClose"
>关闭</el-button
>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import { import {
importRecordsTitle, importRecordsTitle,
importOperates, importOperates,
importOperations, importOperations,
} from "../config"; } from "../configs/import";
import { parseTime, getYestoday ,renderSize} from "@/utils/index"; import { parseTime, getYestoday, renderSize } from "@/utils/index";
import { getImportListPage, deleteByBatchNum } from "@/api/file"; import { getImportListPage, deleteByBatchNum } from "@/api/file";
import SearchBar from "@/components/SearchBar";
export default { export default {
name: "ImportRecordDialog", name: "ImportRecordDialog",
components: {
TablePage,
TableOperation,
SearchBar,
},
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
...@@ -100,7 +94,7 @@ export default { ...@@ -100,7 +94,7 @@ export default {
handler: function (value) { handler: function (value) {
this.dialogVisible = value; this.dialogVisible = value;
if (value) { if (value) {
this.loadData() this.loadData();
} }
}, },
deep: true, deep: true,
...@@ -121,9 +115,9 @@ export default { ...@@ -121,9 +115,9 @@ export default {
// return (fileSize) => { // return (fileSize) => {
// return (Number(fileSize) / 1024 / 1024).toFixed(2) + "M"; // return (Number(fileSize) / 1024 / 1024).toFixed(2) + "M";
// }; // };
return (fileSize)=>{ return (fileSize) => {
return renderSize(Number(fileSize)) return renderSize(Number(fileSize));
} };
}, },
isToday(time) { isToday(time) {
...@@ -187,7 +181,7 @@ export default { ...@@ -187,7 +181,7 @@ export default {
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
type:"biz_cultural_relic", type: "biz_cultural_relic",
...form, ...form,
}; };
let res = await getImportListPage(params); let res = await getImportListPage(params);
...@@ -205,7 +199,7 @@ export default { ...@@ -205,7 +199,7 @@ export default {
var params = { var params = {
page: this.list.current, page: this.list.current,
limit: this.list.size, limit: this.list.size,
type:'biz_cultural_relic' type: "biz_cultural_relic",
}; };
let res = await getImportListPage(params); let res = await getImportListPage(params);
if (res.code == 0) { if (res.code == 0) {
...@@ -245,7 +239,7 @@ export default { ...@@ -245,7 +239,7 @@ export default {
}; };
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.title { .title {
display: flex; display: flex;
.divider { .divider {
...@@ -282,4 +276,4 @@ export default { ...@@ -282,4 +276,4 @@ export default {
.pagination { .pagination {
margin: 16px; margin: 16px;
} }
</style> </style>
\ No newline at end of file
const fileUploadFuctions = {
name: '123',
/**
* 判断文件是否上传过
* @param {File | Object} file 文件对象,可能是File可能就是普通对象
* @returns {Boolean} 文件是否上传过
*/
isFileRaw(file) {
let isFileRaw = false;
isFileRaw = file.status && file.status == "ready";
return isFileRaw;
},
/**
* 判断formData中是否有数据
* @param {FormData} formData 文件对象,可能是File可能就是普通对象
* @returns {Boolean} formData中是否有数据
*/
isFormDataHasData(formData) {
const formDataArr = Array.from(formData.entries(), ([key, prop]) => ({
[key]: {
ContentLength: typeof prop === "string" ? prop.length : prop.size,
},
}));
return formDataArr.length > 0;
},
/**
* 获取对应媒体下的文件
* @param {string} mediaKey 媒体key
* @returns {Array} 媒体对应的文件
*/
getMediaFile($el, mediaKey) {
return $el.$refs[mediaKey].getFiles();
},
/**
* 获取需要上传的FormData
* @param {Array} mediaKeys 媒体keys数组
* @returns {FormData} formData 需要上传的formdata
*/
getNeedUploadFormData($el, mediaKeys) {
const formData = new FormData();
const self = this; // 保存正确的 this
mediaKeys.map((mediaKey) => {
const currentFileList = self.getMediaFile($el, mediaKey);
currentFileList.map((file) => {
if (self.isFileRaw(file)) {
formData.append(mediaKey, file.raw);
}
});
});
return formData;
},
/**
* 获取需要已经存在(数据库已存储的)文件ID对象
* @param {Array} mediaKeys 媒体keys数组
* @returns {Object} 已经存在(数据库已存储的)文件ID对象
*/
getOldIdsObj(mediaKeys, dialogForm) {
let oldFileIdsObj = {};
mediaKeys.forEach((key) => {
if (dialogForm[key]) {
oldFileIdsObj[key] = dialogForm[key];
} else {
oldFileIdsObj[key] = "";
}
});
return oldFileIdsObj;
},
/**
* 获取返回结果中的文件id对象
* @param {Array} mediaKeys 媒体keys数组
* @param {Object} requestRes 上传返回的数据对象
* @returns {Object} 新上传的文件id对象
*/
getNewIdsObj(mediaKeys, requestRes) {
let newUploadedFileIdsObj = {};
mediaKeys.forEach((key) => {
newUploadedFileIdsObj[key] = this.getResIdStrByMedia(key, requestRes);
});
return newUploadedFileIdsObj;
},
/**
* 获取上传返回结果中的id字符串
* @param {Array} mediaKeys 媒体keys数组
* @param {Object} requestRes 上传返回的数据对象
* @returns {string} 新上传的文件id字符串
*/
getResIdStrByMedia(mediaKey, requestRes) {
const arr = [];
requestRes.data.forEach((item) => {
if (item.fileKey == mediaKey) {
arr.push(item.fileId);
}
});
const str = arr.length > 0 ? arr.join(",") : "";
return str;
},
/**
* 获取新旧合并的文件id对象
* @param {Array} mediaKeys 媒体keys数组
* @param {Object} oldObj 已经存在的
* @param {Object} newObj 新上传的
* @returns {string} 新上传的文件id字符串
*/
getMergedIdsObj(oldObj, newObj, mediaKeys) {
const obj = {};
mediaKeys.forEach((key) => {
newArr = newObj[key].split(",");
oldArr = oldObj[key].split(",");
let fullArr = new Set([...newArr, ...oldArr]);
let fullStr = fullArr.join(",");
obj[key] = fullStr;
});
return obj;
},
/**
* 获取需要被删除的文件ID合集
* @param {Array} mediaKeys 媒体keys数组
* @param {Object} dialogForm 表单对象
* @param {Object} newUploadedFileIdsObj 最新上传之后的
* @returns {Object} 新上传的文件id对象
*/
getDeleteFileArr(oldObj, newObj, mediaKeys) {
const arr = [];
mediaKeys.forEach((key) => {
newArr = newObj[key].split(",");
oldArr = oldObj[key].split(",");
let fullArr = new Set([...newArr, ...oldArr]);
oldArr.forEach((oldId) => {
if (!fullArr.includes(oldId)) {
arr.push(oldId);
}
});
});
return arr;
}
}
export default fileUploadFuctions
\ No newline at end of file
// 文物导入的配置文件
export const importRecordsTitle = [{
prop: "createTime",
label: "导入时间",
columnAlign: "left",
needTimeTag: true,
},
{
prop: "batchNum",
label: "导入批次",
columnAlign: "center",
},
{
prop: "fileName",
label: "文件名称",
columnAlign: "center",
width: 300
},
{
prop: "fileSize",
label: "文件大小",
columnAlign: "center",
},
{
prop: "remark",
label: "备注",
columnAlign: "center",
width: "60px",
},
]
export const importOperates = {
operate: true,
label: "操作",
width: "220px",
minwidth: "220px",
titleAlign: "center",
columnAlign: "center",
}
export const importOperations = [{
type: 'delete',
title: '删除记录及文物'
},]
\ No newline at end of file
// 文物分页的配置
export const passedTitle = [{ export const passedTitle = [{
prop: "name", prop: "name",
label: "名称", label: "名称",
...@@ -254,14 +255,11 @@ export const operates = { ...@@ -254,14 +255,11 @@ export const operates = {
label: "操作", label: "操作",
titleAlign: "center", titleAlign: "center",
columnAlign: "center", columnAlign: "center",
width: "280px", width: "180px",
} }
export const operations = [ // 操作(临时表)
{ export const operationsTemp = [
type: 'view3D',
title: '查看3D文物'
},
{ {
type: 'edit', type: 'edit',
title: '编辑' title: '编辑'
...@@ -270,50 +268,44 @@ export const operations = [ ...@@ -270,50 +268,44 @@ export const operations = [
type: 'delete', type: 'delete',
title: '删除' title: '删除'
}, },
] ]
export const importRecordsTitle = [{ // 操作(最终表)
prop: "createTime", export const operations = [
label: "导入时间", {
columnAlign: "left", type: 'delete',
needTimeTag: true, title: '删除'
}, },
{
prop: "batchNum",
label: "导入批次",
columnAlign: "center",
},
{
prop: "fileName",
label: "文件名称",
columnAlign: "center",
width: 300
},
{
prop: "fileSize",
label: "文件大小",
columnAlign: "center",
},
{
prop: "remark",
label: "备注",
columnAlign: "center",
width: "60px",
},
] ]
export const importOperates = { // 搜索配置
operate: true, export const searchConfig = [
label: "操作", {
width: "220px", prop: "name",
minwidth: "220px", type: "input",
titleAlign: "center", label: "文物名称",
columnAlign: "center", },
} {
prop: "status",
type: "select",
label: "状态",
selectOptions: [
{
label: "已上架",
value: "1",
},
{
label: "已下架",
value: "0",
},
],
},
// 是否只看3D
{
prop: "upload3dFlag",
type: "checkbox",
label: "只看3D",
},
]
export const importOperations = [{
type: 'delete',
title: '删除记录及文物'
},]
\ No newline at end of file
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<el-tab-pane label="已审核通过" name="passed"></el-tab-pane> <el-tab-pane label="已审核通过" name="passed"></el-tab-pane>
</el-tabs> </el-tabs>
<TablePage <TablePage
:data="list.records" :data="getCurrentList().records"
:tableTitle="passedTitle" :tableTitle="passedTitle"
:operates="operates" :operates="operates"
> >
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
</template> </template>
<template v-slot:operates="scope"> <template v-slot:operates="scope">
<TableOperation <TableOperation
:operations="operations" :operations="getOperations"
:rawData="scope.scope.row" :rawData="scope.scope.row"
@handleOperation="handleOperation" @handleOperation="handleOperation"
></TableOperation> ></TableOperation>
...@@ -97,11 +97,11 @@ ...@@ -97,11 +97,11 @@
background background
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="Number(list.current)" :current-page="Number(getCurrentList().current)"
:page-sizes="[10, 20, 40, 50]" :page-sizes="[10, 20, 40, 50]"
:page-size="Number(list.size)" :page-size="Number(getCurrentList().size)"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="Number(list.total)" :total="Number(getCurrentList().total)"
class="pagination" class="pagination"
> >
</el-pagination> </el-pagination>
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
@handleClose="handleEditClose" @handleClose="handleEditClose"
@refresh="loadData" @refresh="loadData"
/> />
<UploadDialog ref="UploadDialog" @update="loadData"/> <UploadDialog ref="UploadDialog" @update="loadData" />
<ImportRecordDialog <ImportRecordDialog
:visible="importRecordVisible" :visible="importRecordVisible"
...@@ -136,12 +136,18 @@ ...@@ -136,12 +136,18 @@
</template> </template>
<script> <script>
import TablePage from "@/components/Table/TablePage.vue";
import TableOperation from "@/components/Table/TableOperation.vue";
import SearchBar from "@/components/SearchBar";
import { passedTitle, unPassedTitle, operates, operations } from "./config";
import { import {
passedTitle,
unPassedTitle,
operates,
operations,
operationsTemp,
searchConfig,
} from "./configs/list";
import {
getCulturalRelicListPerTemp,
getCulturalRelicListPer, getCulturalRelicListPer,
getRCDetailByIdTemp,
getRCDetailById, getRCDetailById,
deleteCultralRelic, deleteCultralRelic,
editCulturalRelic, editCulturalRelic,
...@@ -153,58 +159,30 @@ import View3dDialog from "./components/View3dDialog"; ...@@ -153,58 +159,30 @@ import View3dDialog from "./components/View3dDialog";
export default { export default {
components: { components: {
TablePage,
TableOperation,
InfoEditDialog, InfoEditDialog,
SearchBar,
ImportRecordDialog, ImportRecordDialog,
UploadDialog, UploadDialog,
View3dDialog, View3dDialog,
"el-image-viewer": () =>
import("element-ui/packages/image/src/image-viewer"),
}, },
data() { data() {
return { return {
// (存放两份数据的目的是为了防止切换的时候分页被重置)
//最终表
list: { list: {
records: [], records: [],
size: 10, size: 10,
current: 1, current: 1,
total: 0, total: 0,
}, },
searchForm: { // 临时表
name: "", listTemp: {
status: "", records: [],
size: 10,
current: 1,
total: 0,
}, },
searchConfig: [ searchConfig,
{
prop: "name",
type: "input",
label: "文物名称",
},
{
prop: "status",
type: "select",
label: "状态",
selectOptions: [
{
label: "已上架",
value: "1",
},
{
label: "已下架",
value: "0",
},
],
},
// 是否只看3D
{
prop: "onlyShow3d",
type: "checkbox",
label: "只看3D",
},
],
editVisible: false, //编辑 editVisible: false, //编辑
isAdd: true,
form: { form: {
name: "", //名称 name: "", //名称
type: "", //类别(字典值) type: "", //类别(字典值)
...@@ -233,39 +211,20 @@ export default { ...@@ -233,39 +211,20 @@ export default {
imgViewerVisible: false, imgViewerVisible: false,
importRecordVisible: false, //上传记录 importRecordVisible: false, //上传记录
imgList: [], imgList: [],
isUpLoading: false,
view3dDialogVisible: false, //3D文件在线浏览弹窗可见性 view3dDialogVisible: false, //3D文件在线浏览弹窗可见性
passedTitle, passedTitle,
unPassedTitle, unPassedTitle,
operates, operates,
operations, operations,
operationsTemp,
tabActive: "unPassed", tabActive: "unPassed",
}; };
}, },
//watch部分
watch: { watch: {
// //监听弹窗变化
// multiUploadVisible(val) {
// //弹窗关闭记得清空,开启执行批量上传
// if (val) {
// for (let i = 0; i < this.filesList.length; i++) {
// this.uploadSelf(this.filesList[i].file, i); //弹窗显示的时候,就根据文件队列的数量调用上传接口
// }
// } else {
// //弹窗关闭,还原数据到初始位置
// this.filesList = [];
// this.uploadCount = 0;
// this.cancelUploadArr = [];
// }
// },
// 监听Tab值不同调取不同的接口 // 监听Tab值不同调取不同的接口
tabActive(value) { tabActive(value) {
if (value == "passed") { this.resetPage();
console.log("passed to do"); this.loadData();
} else {
console.log("unPassed to do");
}
}, },
}, },
computed: { computed: {
...@@ -278,15 +237,31 @@ export default { ...@@ -278,15 +237,31 @@ export default {
} }
}; };
}, },
getOperations() {
return this.tabActive == "passed" ? this.operations : this.operationsTemp;
},
}, },
async created() { async created() {
this.loadData(); this.loadData();
}, },
methods: { methods: {
async search(form) { async search(form) {
this.resetPage();
this.loadData(form);
},
// 清除分页到初始状态
resetPage() {
this.getCurrentList().current = 1;
},
reset() {
this.loadData();
},
// 加载表格数据
async loadData(form) {
const { current, size } = this.getCurrentList();
var params = { var params = {
page: 1, page: current,
limit: this.list.size, limit: size,
...form, ...form,
}; };
if (!params.level) { if (!params.level) {
...@@ -295,30 +270,37 @@ export default { ...@@ -295,30 +270,37 @@ export default {
if (params.status == "") { if (params.status == "") {
delete params.status; delete params.status;
} }
let res = await getCulturalRelicListPer(params); const currentRequest = this.getCurrentRequest();
const res = await currentRequest(params);
if (res.code == 0) { if (res.code == 0) {
this.list = res.data; this.setList(res.data);
} }
}, },
// 获取当前请求方法
reset() { getCurrentRequest() {
this.loadData(); const currentRequest =
this.tabActive == "passed"
? getCulturalRelicListPer
: getCulturalRelicListPerTemp;
return currentRequest;
}, },
// 加载表格数据 // 设置两张表的数据
async loadData() { setList(data) {
var params = { if (this.tabActive === "passed") {
page: this.list.current, this.list = data;
limit: this.list.size, } else {
}; this.listTemp = data;
let res = await getCulturalRelicListPer(params);
if (res.code == 0) {
// debugger
this.list = res.data;
} }
}, },
// 获取当前加载的list
getCurrentList() {
const currentList =
this.tabActive == "passed" ? this.list : this.listTemp;
return currentList;
},
async handleOperation(value, row) { async handleOperation(value, row) {
console.log(value, row);
switch (value.type) { switch (value.type) {
case "add": case "add":
this.editVisible = true; this.editVisible = true;
...@@ -328,7 +310,7 @@ export default { ...@@ -328,7 +310,7 @@ export default {
this.$refs.View3dDialog.visible = true; this.$refs.View3dDialog.visible = true;
break; break;
case "edit": case "edit":
let detailRes = await getRCDetailById({ 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;
this.editVisible = true; this.editVisible = true;
...@@ -342,9 +324,7 @@ export default { ...@@ -342,9 +324,7 @@ export default {
} }
break; break;
case "multiAdd": case "multiAdd":
// debugger
this.$refs.UploadDialog.visible = true; this.$refs.UploadDialog.visible = true;
// console.log("this.multiUploadVisible", this.multiUploadVisible);
break; break;
case "downloadTemplate": case "downloadTemplate":
...@@ -399,13 +379,13 @@ export default { ...@@ -399,13 +379,13 @@ export default {
// 改变页容量 // 改变页容量
handleSizeChange(value) { handleSizeChange(value) {
this.list.size = value; this.getCurrentList().size = value;
this.loadData(); this.loadData();
}, },
// 改变当前显示页 // 改变当前显示页
handleCurrentChange(value) { handleCurrentChange(value) {
this.list.current = value; this.getCurrentList().current = value;
this.loadData(); this.loadData();
}, },
// 关闭Dialog // 关闭Dialog
......
...@@ -67,10 +67,10 @@ ...@@ -67,10 +67,10 @@
</div> </div>
<span v-else>暂无文献</span> <span v-else>暂无文献</span>
</div> </div>
<TextShow <RichTextShow
v-else-if="item.prop === 'intro'" v-else-if="item.prop === 'intro'"
:richText="info['intro']" :richText="info['intro']"
></TextShow> ></RichTextShow>
<div v-else-if="item.prop === 'type'"> <div v-else-if="item.prop === 'type'">
<DictText name="displayType" :dictValue="info['type']" /> <DictText name="displayType" :dictValue="info['type']" />
</div> </div>
......
<template> <template>
<el-dialog :visible="dialogVisible" width="40%" :before-close="handleClose" top="5vh" lock-scroll v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.5)"> <el-dialog
:visible="dialogVisible"
width="40%"
:before-close="handleClose"
top="5vh"
lock-scroll
v-loading="loading"
element-loading-background="rgba(0, 0, 0, 0.5)"
>
<div class="title" slot="title"> <div class="title" slot="title">
<div class="divider"></div> <div class="divider"></div>
<div class="label">{{ title }}</div> <div class="label">{{ title }}</div>
</div> </div>
<div class="el-dialog-div"> <div class="el-dialog-div">
<div class="dialog-content"> <div class="dialog-content">
<el-form :model="dialogForm" class="basic-info" ref="form" :rules="rules" size="mini"> <el-form
:model="dialogForm"
class="basic-info"
ref="form"
:rules="rules"
size="mini"
>
<el-form-item label="名称" :label-width="formLabelWidth" prop="name"> <el-form-item label="名称" :label-width="formLabelWidth" prop="name">
<el-input v-model="dialogForm.name" autocomplete="off" placeholder="请输入文献名称"></el-input> <el-input
v-model="dialogForm.name"
autocomplete="off"
placeholder="请输入文献名称"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="作者" :label-width="formLabelWidth"> <el-form-item label="作者" :label-width="formLabelWidth">
<el-input v-model="dialogForm.authors" autocomplete="off" placeholder="请输入作者"></el-input> <el-input
v-model="dialogForm.authors"
autocomplete="off"
placeholder="请输入作者"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="文献来源" :label-width="formLabelWidth"> <el-form-item label="文献来源" :label-width="formLabelWidth">
<el-input v-model="dialogForm.source" autocomplete="off" placeholder="请输入文献来源"></el-input> <el-input
v-model="dialogForm.source"
autocomplete="off"
placeholder="请输入文献来源"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="出版/发布日期" :label-width="formLabelWidth"> <el-form-item label="出版/发布日期" :label-width="formLabelWidth">
<el-date-picker style="width: 100%" v-model="dialogForm.date" type="date" placeholder="请选择出版/发布日期" <el-date-picker
value-format="yyyy-MM-dd"> style="width: 100%"
v-model="dialogForm.date"
type="date"
placeholder="请选择出版/发布日期"
value-format="yyyy-MM-dd"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
...@@ -26,19 +57,32 @@ ...@@ -26,19 +57,32 @@
<el-switch v-model="status"> </el-switch> <el-switch v-model="status"> </el-switch>
</el-form-item> </el-form-item>
<el-form-item label="文件" :label-width="formLabelWidth"> <el-form-item label="文件" :label-width="formLabelWidth">
<ManualUploader :files="files" :fileLimit="1" :fileSize="50" listType="text" :fileType="['pdf']" <ManualUploader
ref="pdf" /> :files="files"
:fileLimit="1"
:fileSize="50"
listType="text"
:fileType="['pdf']"
ref="pdf"
/>
</el-form-item> </el-form-item>
<el-form-item label="备注" :label-width="formLabelWidth"> <el-form-item label="备注" :label-width="formLabelWidth">
<el-input type="textarea" placeholder="请输入备注" v-model="dialogForm.remark" maxlength="600" show-word-limit> <el-input
type="textarea"
placeholder="请输入备注"
v-model="dialogForm.remark"
maxlength="600"
show-word-limit
>
</el-input> </el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button size="mini" @click="cancelForm">取 消</el-button> <el-button size="mini" @click="cancelForm">取 消</el-button>
<el-button size="mini" type="primary" @click="handleSubmit">确定<i class="el-icon-circle-check" <el-button size="mini" type="primary" @click="handleSubmit"
style="margin-left: 5px"></i></el-button> >确定<i class="el-icon-circle-check" style="margin-left: 5px"></i
></el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
...@@ -46,14 +90,10 @@ ...@@ -46,14 +90,10 @@
<script> <script>
import { addLiterature, editLiterature } from "@/api/literature"; import { addLiterature, editLiterature } from "@/api/literature";
import ManualUploader from "@/components/Uploader/ManualUploader.vue";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { uploadFile } from "@/utils/file"; import { uploadFile } from "@/utils/file";
export default { export default {
name: "InfoEditDialog", name: "InfoEditDialog",
components: {
ManualUploader,
},
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
...@@ -117,7 +157,7 @@ export default { ...@@ -117,7 +157,7 @@ export default {
}, },
], ],
}, },
loading: false loading: false,
}; };
}, },
methods: { methods: {
...@@ -140,7 +180,7 @@ export default { ...@@ -140,7 +180,7 @@ export default {
}, },
handleSubmit() { handleSubmit() {
let that = this; let that = this;
this.loading = true this.loading = true;
this.$refs.form.validate(async (valid) => { this.$refs.form.validate(async (valid) => {
if (valid) { if (valid) {
let params = JSON.parse(JSON.stringify(that.dialogForm)); let params = JSON.parse(JSON.stringify(that.dialogForm));
...@@ -172,7 +212,7 @@ export default { ...@@ -172,7 +212,7 @@ export default {
that.reloadParent(); that.reloadParent();
that.resetChildData(); that.resetChildData();
} }
this.loading = false this.loading = false;
} else { } else {
let res = await addLiterature(params); let res = await addLiterature(params);
if (res.code == 0) { if (res.code == 0) {
...@@ -180,8 +220,7 @@ export default { ...@@ -180,8 +220,7 @@ export default {
that.reloadParent(); that.reloadParent();
that.resetChildData(); that.resetChildData();
} }
this.loading = false this.loading = false;
} }
} }
}); });
...@@ -194,13 +233,13 @@ export default { ...@@ -194,13 +233,13 @@ export default {
this.reloadParent(); this.reloadParent();
this.resetChildData(); this.resetChildData();
}) })
.catch((_) => { }); .catch((_) => {});
}, },
}, },
}; };
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.title { .title {
display: flex; display: flex;
margin-bottom: 16px; margin-bottom: 16px;
...@@ -240,4 +279,4 @@ export default { ...@@ -240,4 +279,4 @@ export default {
justify-content: flex-end; justify-content: flex-end;
padding: 20px 40px; padding: 20px 40px;
} }
</style> </style>
\ No newline at end of file
...@@ -98,18 +98,12 @@ ...@@ -98,18 +98,12 @@
<script> <script>
import { addMuseum, editMuseum } from "@/api/org"; import { addMuseum, editMuseum } from "@/api/org";
import ManualUploader from "@/components/Uploader/ManualUploader.vue";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { uploadV1 } from "@/utils/file"; import { uploadV1 } from "@/utils/file";
import { deleteFiles } from "@/api/file"; import { deleteFiles } from "@/api/file";
import VueQuillEditor from "@/components/VueQuillEditor";
export default { export default {
name: "InfoEditDialog", name: "InfoEditDialog",
components: {
ManualUploader,
VueQuillEditor,
},
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
......
...@@ -73,8 +73,8 @@ ...@@ -73,8 +73,8 @@
</el-form> </el-form>
</div> </div>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button size="mini" @click="cancelForm">取 消</el-button> <el-button size="mini" @click="cancelForm">取 消</el-button>
<el-button size="mini" type="primary" @click="handleSubmit" <el-button size="mini" type="primary" @click="handleSubmit"
>确定<i class="el-icon-circle-check" style="margin-left: 5px"></i >确定<i class="el-icon-circle-check" style="margin-left: 5px"></i
></el-button> ></el-button>
</div> </div>
...@@ -84,17 +84,12 @@ ...@@ -84,17 +84,12 @@
<script> <script>
import { addCcProduct, updateCcProduct } from "@/api/literature"; import { addCcProduct, updateCcProduct } from "@/api/literature";
import ManualUploader from "@/components/Uploader/ManualUploader.vue";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { uploadV1 } from "@/utils/file"; import { uploadV1 } from "@/utils/file";
import VueQuillEditor from "@/components/VueQuillEditor";
import { deleteFiles } from "@/api/file"; import { deleteFiles } from "@/api/file";
export default { export default {
name: "InfoEditDialog", name: "InfoEditDialog",
components: { components: {},
ManualUploader,
VueQuillEditor,
},
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
...@@ -334,7 +329,7 @@ export default { ...@@ -334,7 +329,7 @@ export default {
}; };
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.title { .title {
display: flex; display: flex;
margin-bottom: 16px; margin-bottom: 16px;
...@@ -363,13 +358,12 @@ export default { ...@@ -363,13 +358,12 @@ export default {
.relate { .relate {
flex: 1; flex: 1;
} }
} }
.dialog-footer { .dialog-footer {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
margin: 20px; margin: 20px;
} }
.upload-box { .upload-box {
background-color: #fbfdff; background-color: #fbfdff;
border: 1px dashed #c0ccda; border: 1px dashed #c0ccda;
...@@ -387,4 +381,4 @@ export default { ...@@ -387,4 +381,4 @@ export default {
color: #8c939d; color: #8c939d;
} }
} }
</style> </style>
\ No newline at end of file
...@@ -14,7 +14,13 @@ ...@@ -14,7 +14,13 @@
<div class="label">{{ title }}</div> <div class="label">{{ title }}</div>
</div> </div>
<div class="dialog-content"> <div class="dialog-content">
<el-form :model="dialogForm" class="basic-info" :rules="rules" ref="form" size="mini"> <el-form
:model="dialogForm"
class="basic-info"
:rules="rules"
ref="form"
size="mini"
>
<el-form-item <el-form-item
label="账号" label="账号"
:label-width="formLabelWidth" :label-width="formLabelWidth"
...@@ -113,14 +119,10 @@ ...@@ -113,14 +119,10 @@
<script> <script>
import { addUser, upadateUser } from "@/api/user"; import { addUser, upadateUser } from "@/api/user";
import ManualUploader from "@/components/Uploader/ManualUploader.vue";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import md5 from "js-md5"; import md5 from "js-md5";
export default { export default {
name: "InfoEditDialog", name: "InfoEditDialog",
components: {
ManualUploader,
},
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
......
<template> <template>
<el-dialog :visible.sync="dialogVisible" width="40%" style="height: 98%" :before-close="handleClose" top="5vh" <el-dialog
lock-scroll v-loading="loading" element-loading-background="rgba(0, 0, 0, 0.5)"> :visible.sync="dialogVisible"
width="40%"
style="height: 98%"
:before-close="handleClose"
top="5vh"
lock-scroll
v-loading="loading"
element-loading-background="rgba(0, 0, 0, 0.5)"
>
<div class="title" slot="title"> <div class="title" slot="title">
<div class="divider"></div> <div class="divider"></div>
<div class="label">{{ title }}</div> <div class="label">{{ title }}</div>
</div> </div>
<div class="dialog-content"> <div class="dialog-content">
<el-form :model="dialogForm" class="basic-info" ref="form" :rules="rules" size="mini"> <el-form
:model="dialogForm"
class="basic-info"
ref="form"
:rules="rules"
size="mini"
>
<el-form-item label="名称" :label-width="formLabelWidth" prop="name"> <el-form-item label="名称" :label-width="formLabelWidth" prop="name">
<el-input v-model="dialogForm.name" autocomplete="off" placeholder="请输入名称"></el-input> <el-input
v-model="dialogForm.name"
autocomplete="off"
placeholder="请输入名称"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="所属博物馆" :label-width="formLabelWidth"> <el-form-item label="所属博物馆" :label-width="formLabelWidth">
<el-cascader style="width: 100%" v-model="dialogForm.deptId" :options="orgTreeData" :props="optionProps" <el-cascader
placeholder="请选择所属博物馆" :key="pidModalKey" filterable> style="width: 100%"
v-model="dialogForm.deptId"
:options="orgTreeData"
:props="optionProps"
placeholder="请选择所属博物馆"
:key="pidModalKey"
filterable
>
</el-cascader> </el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="所属地" :label-width="formLabelWidth"> <el-form-item label="所属地" :label-width="formLabelWidth">
<el-cascader style="width: 100%" v-model="dialogForm.regionCode" :options="regionTree" <el-cascader
:props="regionOptionProps" placeholder="请选择所属地" :key="regionCodeModalKey" filterable> style="width: 100%"
v-model="dialogForm.regionCode"
:options="regionTree"
:props="regionOptionProps"
placeholder="请选择所属地"
:key="regionCodeModalKey"
filterable
>
</el-cascader> </el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="简介" :label-width="formLabelWidth"> <el-form-item label="简介" :label-width="formLabelWidth">
<el-input type="textarea" placeholder="请输入展厅简介" v-model="dialogForm.intro" maxlength="600" show-word-limit> <el-input
type="textarea"
placeholder="请输入展厅简介"
v-model="dialogForm.intro"
maxlength="600"
show-word-limit
>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="状态" :label-width="formLabelWidth"> <el-form-item label="状态" :label-width="formLabelWidth">
...@@ -30,33 +68,40 @@ ...@@ -30,33 +68,40 @@
<el-form-item label="链接" :label-width="formLabelWidth" prop="url"> <el-form-item label="链接" :label-width="formLabelWidth" prop="url">
<!-- <el-switch v-model="dialogForm.url"> </el-switch> --> <!-- <el-switch v-model="dialogForm.url"> </el-switch> -->
<el-input v-model="dialogForm.url" autocomplete="off" placeholder="请输入链接"></el-input> <el-input
v-model="dialogForm.url"
autocomplete="off"
placeholder="请输入链接"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="展览封面" :label-width="formLabelWidth"> <el-form-item label="展览封面" :label-width="formLabelWidth">
<ManualUploader :files="faceImage" :fileLimit="1" :fileSize="50" listType="picture-card" <ManualUploader
:fileType="['png', 'jpeg', 'jpg']" ref="faceImage" /> :files="faceImage"
:fileLimit="1"
:fileSize="50"
listType="picture-card"
:fileType="['png', 'jpeg', 'jpg']"
ref="faceImage"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button size="mini" @click="cancelForm">取 消</el-button> <el-button size="mini" @click="cancelForm">取 消</el-button>
<el-button size="mini" type="primary" @click="handleSubmit">确定<i class="el-icon-circle-check" <el-button size="mini" type="primary" @click="handleSubmit"
style="margin-left: 5px"></i></el-button> >确定<i class="el-icon-circle-check" style="margin-left: 5px"></i
></el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { addVirtual, editVirtual } from "@/api/vitual"; import { addVirtual, editVirtual } from "@/api/vitual";
import ManualUploader from "@/components/Uploader/ManualUploader.vue";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { uploadV1 } from "@/utils/file"; import { uploadV1 } from "@/utils/file";
export default { export default {
name: "InfoEditDialog", name: "InfoEditDialog",
components: {
ManualUploader,
},
props: { props: {
visible: { visible: {
type: Boolean, type: Boolean,
...@@ -77,7 +122,7 @@ export default { ...@@ -77,7 +122,7 @@ export default {
get: function () { get: function () {
return this.visible; return this.visible;
}, },
set: function () { }, set: function () {},
}, },
title() { title() {
if (this.dialogForm.bvId) { if (this.dialogForm.bvId) {
...@@ -170,7 +215,7 @@ export default { ...@@ -170,7 +215,7 @@ export default {
name: [{ required: true, message: "请输入名称", trigger: "blur" }], name: [{ required: true, message: "请输入名称", trigger: "blur" }],
url: [{ required: true, message: "请输入链接", trigger: "blur" }], url: [{ required: true, message: "请输入链接", trigger: "blur" }],
}, },
loading: false loading: false,
}; };
}, },
methods: { methods: {
...@@ -206,9 +251,8 @@ export default { ...@@ -206,9 +251,8 @@ export default {
}, },
handleSubmit() { handleSubmit() {
this.$refs.form.validate(async (valid) => { this.$refs.form.validate(async (valid) => {
this.loading = true this.loading = true;
if (valid) { if (valid) {
let params = { ...this.dialogForm }; let params = { ...this.dialogForm };
// // 回填图片 // // 回填图片
// if (this.faceImage.length > 0) { // if (this.faceImage.length > 0) {
...@@ -256,7 +300,7 @@ export default { ...@@ -256,7 +300,7 @@ export default {
this.$message.success("修改成功!"); this.$message.success("修改成功!");
this.reload(); this.reload();
} }
this.loading = false this.loading = false;
} else { } else {
// let params = { ...this.dialogForm }; // let params = { ...this.dialogForm };
// // // 回填图片 // // // 回填图片
...@@ -275,7 +319,7 @@ export default { ...@@ -275,7 +319,7 @@ export default {
this.$message.success("添加成功!"); this.$message.success("添加成功!");
this.reload(); this.reload();
} }
this.loading = false this.loading = false;
} }
} }
}); });
...@@ -292,13 +336,13 @@ export default { ...@@ -292,13 +336,13 @@ export default {
this.$emit("handleClose"); this.$emit("handleClose");
this.faceImage = []; this.faceImage = [];
}) })
.catch((_) => { }); .catch((_) => {});
}, },
}, },
}; };
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.title { .title {
display: flex; display: flex;
margin-bottom: 16px; margin-bottom: 16px;
...@@ -355,4 +399,4 @@ export default { ...@@ -355,4 +399,4 @@ export default {
.video-lists { .video-lists {
display: flex; display: flex;
} }
</style> </style>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论