西铁院项目调整

This commit is contained in:
fan 2019-10-29 14:14:14 +08:00
parent b8834f5bb4
commit 973168970c
9 changed files with 276 additions and 131 deletions

View File

@ -140,3 +140,20 @@ export function updatePublishMapCity(data) {
data: data
});
}
/** 设置归属项目 */
export function setMapProject(data) {
return request({
url: `/api/map/${data.id}/project`,
method: 'put',
data: data
});
}
/** 根据定制项目编号查询地图列表 */
export function getMapListByProjectCode(projectCode) {
return request({
url: `/api/map/project/${projectCode}/list`,
method: 'get'
});
}

View File

@ -85,3 +85,11 @@ export function deleteSubSystem(id) {
});
}
export function getSubSystemByProjectCode(projectCode) {
/** 根据项目编号查询地图子系统 */
return request({
url: `/api/mapSystem/project/${projectCode}`,
method: 'get'
});
}

View File

@ -2203,3 +2203,8 @@ export const loginTitle = {
design: '城市轨道交通设计平台',
designxty: '西铁院设计平台'
};
export const ProjectCode = {
xty: 'XTY',
designxty: 'XTY'
};

View File

@ -3,9 +3,9 @@ export function getBaseUrl() {
let BASE_API;
if (process.env.NODE_ENV === 'development') {
// BASE_API = 'https://joylink.club/jlcloud';
BASE_API = 'https://test.joylink.club/jlcloud';
// BASE_API = 'https://test.joylink.club/jlcloud';
// BASE_API = 'http://192.168.3.5:9000'; // 袁琪
// BASE_API = 'http://192.168.3.6:9000'; // 旭强
BASE_API = 'http://192.168.3.6:9000'; // 旭强
// BASE_API = 'http://192.168.3.41:9000'; // 王兴杰
} else {
BASE_API = process.env.VUE_APP_BASE_API;

View File

@ -4,8 +4,8 @@
<span>{{ $t('map.publishedMapList') }}</span>
</div>
<div class="text_item" style="height: calc(100% - 47px);">
<filter-city ref="filerCity" filter-empty :query-function="queryFunction" :local-param-name="localParamName" @filterSelectChange="refresh" />
<el-input v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
<filter-city v-if="project==='design'" ref="filerCity" filter-empty :query-function="queryFunction" :local-param-name="localParamName" @filterSelectChange="refresh" />
<el-input v-if="project==='design'" v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
<div style="height: calc(100% - 76px);">
<el-tree ref="tree" class="tree_box" :data="treeList" node-key="id" :props="defaultProps" highlight-current :span="22" :filter-node-method="filterNode" @node-click="clickEvent">
<span slot-scope="{ node:tnode, data }">
@ -18,12 +18,13 @@
</div>
</template>
<script>
import { listPublishMap } from '@/api/jmap/map';
import { listPublishMap, getMapListByProjectCode } from '@/api/jmap/map';
import { UrlConfig } from '@/router/index';
import { superAdmin, admin } from '@/router';
import { getSessionStorage, setSessionStorage, removeSessionStorage } from '@/utils/auth';
import FilterCity from '@/views/components/filterCity';
import localStore from 'storejs';
import { ProjectCode } from '@/scripts/ConstDic';
export default {
name: 'PublicMapList',
@ -56,10 +57,14 @@ export default {
y: 0
},
editModel: {},
localParamName: 'publish_cityCode',
cityCode: ''
localParamName: 'publish_cityCode'
};
},
computed: {
project() {
return getSessionStorage('project');
}
},
watch: {
filterText(val) {
this.treeList = this.treeData.filter((res) => {
@ -70,6 +75,11 @@ export default {
beforeDestroy () {
removeSessionStorage('demonList');
},
mounted() {
if (this.project === 'designxty') {
this.refresh();
}
},
methods: {
filterNode(value, data) {
if (!value) return true;
@ -90,7 +100,7 @@ export default {
}
case 'lessonDesign': {
setSessionStorage('designType', 'lessonDesign');
this.$router.push({ path: `${UrlConfig.design.lessonHome}/${obj.mapId}/${obj.skinCode}`, query: {cityCode: this.cityCode} });
this.$router.push({ path: `${UrlConfig.design.lessonHome}/${obj.mapId}/${obj.skinCode}`, query: {cityCode: obj.cityCode} });
break;
}
case 'runPlanDesign': {
@ -109,30 +119,36 @@ export default {
}
},
async refresh(filterSelect) {
this.cityCode=filterSelect;
this.loading = true;
this.treeData = this.treeList = [];
try {
const res = await listPublishMap({cityCode: filterSelect});
let res = '';
if (this.project === 'designxty') {
res = await getMapListByProjectCode(ProjectCode[this.project]);
} else {
res = await listPublishMap({cityCode: filterSelect});
}
res.data.forEach(elem=>{
res.data && res.data.forEach(elem=>{
// elem.children.find(n => { return n.name.includes("")})
elem.children=[
{
id: '1',
name: this.$t('designPlatform.mapPreview'),
type: 'mapPreview',
mapId: elem.id
mapId: elem.id,
cityCode: elem.cityCode
}
];
this.isAdministrator()?elem.children.push({id: '2', name: this.$t('designPlatform.lessonDesign'), type: 'lessonDesign', mapId: elem.id, skinCode: elem.skinCode}):'';
this.isAdministrator()?elem.children.push({id: '2', name: this.$t('designPlatform.lessonDesign'), type: 'lessonDesign', mapId: elem.id, skinCode: elem.skinCode, cityCode: elem.cityCode}):'';
elem.children.push(
{
id: '3',
name: this.$t('designPlatform.scriptDesign'),
type: 'scriptDesign',
mapId: elem.id,
skinCode: elem.skinCode
skinCode: elem.skinCode,
cityCode: elem.cityCode
// code:elem.children.find(n => { return n.name.includes("")})
});
elem.children.push(
@ -141,7 +157,8 @@ export default {
name: this.$t('designPlatform.runPlanDesign'),
type: 'runPlanDesign',
mapId: elem.id,
skinCode: elem.skinCode
skinCode: elem.skinCode,
cityCode: elem.cityCode
}
);
});

View File

@ -1,13 +1,13 @@
<template>
<div>
<el-dialog :title="title" :visible.sync="dialogVisible" width="500px" :before-close="doClose" center>
<data-form ref="dataform" :form="form" :formModel="formModel" :rules="rules"></data-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="doCreate">{{$t('global.confirm')}}</el-button>
<el-button @click="doClose">{{$t('global.cancel')}}</el-button>
</span>
</el-dialog>
</div>
<div>
<el-dialog :title="title" :visible.sync="dialogVisible" width="500px" :before-close="doClose" center>
<data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" />
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="doCreate">{{ $t('global.confirm') }}</el-button>
<el-button @click="doClose">{{ $t('global.cancel') }}</el-button>
</span>
</el-dialog>
</div>
<!-- <div class="card-box">
<el-steps class="steps" :active="display">
<el-step :title="title" icon="el-icon-edit-outline" />
@ -28,97 +28,96 @@
</template>
<script>
// import { updatePublishMapName } from '@/api/jmap/map';
export default {
name: 'PublishMapDraft',
data() {
return {
dialogVisible: false,
cityList:[],
formModel:{
mapId:'',
cityCode:'',
name:'',
}
}
// import { updatePublishMapName } from '@/api/jmap/map';
export default {
name: 'PublishMapDraft',
props: {
title: String,
type: String
},
data() {
return {
dialogVisible: false,
cityList: [],
formModel: {
mapId: '',
cityCode: '',
name: ''
}
};
},
computed: {
form() {
let form={};
if (this.type=='updateMapName') {
form={
labelWidth: '150px',
items: [
{ prop: 'name', label: this.$t('publish.mapName'), type: 'text', required: true}
]
};
} else {
form={
labelWidth: '150px',
items: [
{ prop: 'cityCode', label: this.$t('publish.city'), type: 'select', required: true, options: this.cityList}
]
};
}
return form;
},
mounted(){
this.loadInitData();
rules() {
let crules ={};
if (this.type=='updateMapName') {
crules ={
name: [
{ required: true, message: this.$t('rules.pleaseInputMapName'), trigger: 'blur', max: 100 },
{ required: true, message: this.$t('rules.pleaseInputMapName'), trigger: 'change', max: 100 }
]
};
} else {
crules ={
id: [
{ required: true, message: this.$t('rules.pleaseSelectCity'), trigger: 'change', max: 100 }
]
};
}
return crules;
}
},
mounted() {
this.loadInitData();
},
methods: {
async loadInitData() {
this.cityList = [];
const res=await this.$Dictionary.cityType();
this.cityList = res.map(elem => { return { value: elem.code, label: elem.name }; });
},
props: {
title: String,
type:String,
},
computed: {
form() {
let form={};
if(this.type=="updateMapName"){
form={
labelWidth: '150px',
items: [
{ prop: 'name', label: this.$t('publish.mapName'), type: 'text', required: true},
]
}
}else{
form={
labelWidth: '150px',
items: [
{ prop: 'cityCode', label: this.$t('publish.city'), type: 'select', required: true,options:this.cityList},
]
}
}
return form
},
rules() {
let crules ={};
if(this.type=="updateMapName"){
crules ={
name:[
{ required: true, message: this.$t('rules.pleaseInputMapName'), trigger: 'blur',max:100 },
{ required: true, message: this.$t('rules.pleaseInputMapName'), trigger: 'change',max:100 },
]
}
}else{
crules ={
id:[
{ required: true, message: this.$t('rules.pleaseSelectCity'), trigger: 'change',max:100 },
]
}
}
return crules
},
},
methods: {
async loadInitData() {
this.cityList = [];
let res=await this.$Dictionary.cityType();
this.cityList = res.map(elem => { return { value: elem.code, label: elem.name } });
},
doShow(row) {
this.formModel.mapId=row.id;
if(this.type=="updateMapName"){
this.formModel.name=row.name;
}else{
this.formModel.cityCode=row.cityCode;
}
this.dialogVisible = true
},
doCreate() {
let self = this
this.$refs.dataform.validateForm(() => {
self.$emit('create', Object.assign({}, this.formModel));
self.doClose()
})
},
doClose() {
this.$refs.dataform.resetForm();
this.isShow = false;
this.dialogVisible = false
}
}
};
doShow(row) {
this.formModel.mapId=row.id;
if (this.type=='updateMapName') {
this.formModel.name=row.name;
} else {
this.formModel.cityCode=row.cityCode;
}
this.dialogVisible = true;
},
doCreate() {
const self = this;
this.$refs.dataform.validateForm(() => {
self.$emit('create', Object.assign({}, this.formModel));
self.doClose();
});
},
doClose() {
this.$refs.dataform.resetForm();
this.isShow = false;
this.dialogVisible = false;
}
}
};
// export default {
// name: 'PublishMapDraft',

View File

@ -1,24 +1,24 @@
<template>
<div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
<update-operate ref='updateMapName' @create="handleUpdateMap" :title="$t('publish.updateMapName')" type="updateMapName">
</update-operate>
<update-operate ref='updateCityName' @create="handleCityUpdate" :title="$t('publish.updateCityName')" type="updateCityName">
</update-operate>
<update-operate ref="updateMapName" :title="$t('publish.updateMapName')" type="updateMapName" @create="handleUpdateMap" />
<update-operate ref="updateCityName" :title="$t('publish.updateCityName')" type="updateCityName" @create="handleCityUpdate" />
<set-project ref="setProject" @refresh="reloadTable" />
</div>
</template>
<script>
import { getPublishMapList, delPublishMap, getPublishMapExport, putMapOnLine, putMapOffLine,updatePublishMapName,updatePublishMapCity } from '@/api/jmap/map';
import { getPublishMapList, delPublishMap, getPublishMapExport, putMapOnLine, putMapOffLine, updatePublishMapName, updatePublishMapCity } from '@/api/jmap/map';
import { getSkinCodeList } from '@/api/management/mapskin';
import { UrlConfig } from '@/router/index';
import localStore from 'storejs';
import UpdateOperate from './draft.vue';
import SetProject from './project';
export default {
name: 'PublishMap',
components:{
UpdateOperate
components: {
UpdateOperate,
SetProject
},
data() {
return {
@ -117,6 +117,10 @@ export default {
name: this.$t('global.export'),
handleClick: this.handleExportMapSame,
showControl: () => { return process.env.NODE_ENV === 'development'; }
},
{
name: '设置所属项目',
handleClick: this.handleSetProject
}
]
}
@ -156,8 +160,11 @@ export default {
// this.$router.push({ path: `${UrlConfig.publish.mapDraft}/edit/${row.id}`, query: { name: row.name } });
this.$refs.updateMapName.doShow(row);
},
handleSetProject(index, row) {
this.$refs.setProject.doShow(row);
},
//
handleUpdateCity(index, row){
handleUpdateCity(index, row) {
this.$refs.updateCityName.doShow(row);
},
//
@ -177,7 +184,7 @@ export default {
});
}).catch(() => { });
},
handleUpdateMap(data){
handleUpdateMap(data) {
delete data.cityCode;
updatePublishMapName(data).then(response => {
this.reloadTable();
@ -186,14 +193,14 @@ export default {
this.$messageBox(this.$t('error.updateFailed'));
});
},
handleCityUpdate(data){
handleCityUpdate(data) {
delete data.name;
updatePublishMapCity(data).then(response => {
this.reloadTable();
this.$message.success(this.$t('publish.updateSuccess'));
}).catch(() => {
this.$messageBox(this.$t('error.updateFailed'));
});
});
},
reloadTable() {
this.queryList.reload();

View File

@ -0,0 +1,87 @@
<template>
<el-dialog v-dialogDrag title="设置归属项目" :visible.sync="dialogVisible" width="30%" center>
<el-form ref="form" :model="formModel" label-width="100px" label-position="left">
<el-form-item label="地图名称">
<span>{{ formModel.name }}</span>
</el-form-item>
<el-form-item label="是否归属项目" prop="project">
<el-radio-group v-model="formModel.project" @change="changeProject">
<el-radio :label="booleanValue.t"></el-radio>
<el-radio :label="booleanValue.f"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
v-if="formModel.project"
label="归属项目"
prop="projectCode"
:rules="{
required: true, message: '归属项目不能为空', trigger: 'change'
}"
>
<el-select v-model="formModel.projectCode" placeholder="请选择归属项目">
<el-option label="西铁院" value="XTY" />
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="dialogVisible = false">{{ $t('global.cancel') }}</el-button>
</span>
</el-dialog>
</template>
<script>
import { setMapProject } from '@/api/jmap/map';
export default {
name: 'SetMapProject',
data() {
return {
dialogVisible: false,
formModel: {
id: '',
name: '',
cityCode: '',
skinCode: '',
project: false,
projectCode: ''
},
projectCodeShow: false,
booleanValue: {
t: true,
f: false
}
};
},
computed: {
},
methods: {
doShow(row) {
this.dialogVisible = true;
this.formModel.id = row.id;
this.formModel.name = row.name;
this.formModel.cityCode = row.cityCode;
this.formModel.skinCode = row.skinCode;
},
doSave() {
this.$refs['form'].validate((valid) => {
if (valid) {
setMapProject(this.formModel).then(resp =>{
this.$message.success('设置归属项目成功!');
this.dialogVisible = false;
this.$emit('refresh');
});
} else {
return false;
}
});
},
changeProject(val) {
if (!val) {
this.formModel.projectCode = '';
}
}
}
};
</script>

View File

@ -3,8 +3,8 @@
<div slot="header" class="clearfix">
<span>{{ $t('global.mapList') }}</span>
</div>
<filter-city ref="filerCity" filter-empty :query-function="queryFunction" :local-param-name="localParamName" @filterSelectChange="refresh" />
<el-input v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
<filter-city v-if="project==='login'" ref="filerCity" filter-empty :query-function="queryFunction" :local-param-name="localParamName" @filterSelectChange="refresh" />
<el-input v-if="project==='login'" v-model="filterText" :placeholder="this.$t('global.filteringKeywords')" clearable />
<el-scrollbar wrap-class="scrollbar-wrapper" :style="{ height: (height-125) +'px' }">
<el-tree
ref="tree"
@ -36,11 +36,12 @@
</template>
<script>
import { getPublishMapTree } from '@/api/management/mapprd';
import { getTrainingSystemList, getSubSystemInfo } from '@/api/trainingPlatform';
import { getTrainingSystemList, getSubSystemInfo, getSubSystemByProjectCode } from '@/api/trainingPlatform';
import { UrlConfig } from '@/router/index';
import FilterCity from '@/views/components/filterCity';
import localStore from 'storejs';
import { getSessionStorage } from '@/utils/auth';
import { ProjectCode } from '@/scripts/ConstDic';
export default {
name: 'DemonList',
@ -89,6 +90,9 @@ export default {
beforeDestroy () {
},
mounted() {
if (this.project === 'xty') {
this.refresh();
}
},
methods: {
filterNode(value, data) {
@ -158,12 +162,13 @@ export default {
this.treeList = [];
this.filterSelect = filterSelect;
try {
let params={};
let res={};
if (this.project === 'xty') {
params={'customized': 'xty'};
res = await getSubSystemByProjectCode(ProjectCode[this.project]);
} else {
res = await getTrainingSystemList(filterSelect);
}
const res = await getTrainingSystemList(filterSelect, params);
res.data.forEach(item =>{
res.data && res.data.forEach(item =>{
item.key = item.id + item.type;
item.children && item.children.forEach(childrenItem => {
childrenItem.key = childrenItem.id + item.type;