diff --git a/fe/PC/public/config.js b/fe/PC/public/config.js
index c9dd0413d..c0c0b4ef2 100644
--- a/fe/PC/public/config.js
+++ b/fe/PC/public/config.js
@@ -24,7 +24,16 @@ window.SITE_CONFIG['versionUrl'] = 'http://dev.ccwin-in.com:60070'
window.SITE_CONFIG['companyName'] = '长春一汽富维东阳汽车塑料零部件(安徽)有限公司'
// 接口看板地址
window.SITE_CONFIG['interfaceBoardUrl'] = 'http://dev.ccwin-in.com:60090/'
-// window.SITE_CONFIG['interfaceBoardUrl'] = 'http://dev.ccwin-in.com:60069/'
+// 主子表
+window.SITE_CONFIG['MOrDFasterUrl_store'] = 'http://dev.ccwin-in.com:60075/' // 查看store外链地址
+window.SITE_CONFIG['MOrDFasterUrl_job'] = 'http://dev.ccwin-in.com:60075/' // 查看job外链地址
+window.SITE_CONFIG['MOrDFasterUrl_inventory'] = 'http://dev.ccwin-in.com:60075/' // 查看inventory外链地址
+// 显示主子表按钮的页面,前缀为路由名称。
+// 后缀_mrt显示【查询主表】;后缀_det显示【查询子表】
+window.SITE_CONFIG['pageHasMOrDList'] = [
+ // 'PurchaseOrder_mrt','PurchaseOrder_det',//采购订单信息
+]
+
// mock
// window.SITE_CONFIG['apifoxToken'] = 'NXHNi5mp0dnUHGt0wkCrjvfcidsFKV33'
diff --git a/fe/PC/src/App.vue b/fe/PC/src/App.vue
index be7af16b3..eb3d10113 100644
--- a/fe/PC/src/App.vue
+++ b/fe/PC/src/App.vue
@@ -1,12 +1,19 @@
+
+
+
\ No newline at end of file
diff --git a/fe/PC/src/components/currenButton/index.vue b/fe/PC/src/components/currenButton/index.vue
index 40e53c9f1..31810831b 100644
--- a/fe/PC/src/components/currenButton/index.vue
+++ b/fe/PC/src/components/currenButton/index.vue
@@ -46,6 +46,11 @@ export default {
default: false
}
},
+ watch: {
+ Butttondata(n,o) {
+ this.initButtonsData()
+ }
+ },
data () {
return {
buttonsLeft:null,//左侧按钮数据
diff --git a/fe/PC/src/mixins/TableHeaderMixins.js b/fe/PC/src/mixins/TableHeaderMixins.js
index d1ffcda34..fc176239e 100644
--- a/fe/PC/src/mixins/TableHeaderMixins.js
+++ b/fe/PC/src/mixins/TableHeaderMixins.js
@@ -131,6 +131,50 @@ export const TableHeaderMixins = {
else if(val == 'custom'){
item.customHandle()
}
+ // 查看主表
+ if(val == 'showMrt'){
+ // this.$store.dispatch('outerIframeForMOrD/removeMOrDShow', {name:this.$route.name,type:'det'})
+ this.$store.dispatch('outerIframeForMOrD/addMOrDShow', {
+ name:this.$route.name,
+ type:'mrt',
+ moudle:this.getMOrDUrlMoudle(),
+ listUrl:this.getMOrDUrlSuffix()
+ })
+ }
+ // 查看子表
+ if(val == 'showDet'){
+ // this.$store.dispatch('outerIframeForMOrD/removeMOrDShow', {name:this.$route.name,type:'mrt'})
+ this.$store.dispatch('outerIframeForMOrD/addMOrDShow', {
+ name:this.$route.name,
+ type:'det',
+ moudle:this.getMOrDUrlMoudle(),
+ listUrl:this.getMOrDUrlSuffix()
+ })
+ }
+ },
+ // 获取主子表列表url模块
+ getMOrDUrlMoudle(url){
+ let _url = url || this.URL
+ let _type = null
+ if(_url.indexOf('wms/store/') >= 0){
+ _type = 'store'
+ }
+ else if(_url.indexOf('wms/job/') >= 0){
+ _type = 'job'
+ }
+ else if(_url.indexOf('wms/inventory/') >= 0){
+ _type = 'inventory'
+ }
+ return _type
+ },
+ // 获取主子表列表url后缀
+ getMOrDUrlSuffix(){
+ let _url = this.MOrDURL || this.URL
+ let _suffix = null
+ let _moudle = this.getMOrDUrlMoudle()
+ let _index = _url.indexOf(_moudle) + _moudle.length + 1
+ _suffix = _url.slice(_index,_url.length)
+ return _moudle + '-' + _suffix
},
// 快速搜索按钮
quicklySearchClick(val,option,searchOverallRef){
diff --git a/fe/PC/src/mixins/TableMixins.js b/fe/PC/src/mixins/TableMixins.js
index df23776d3..f6ef8321b 100644
--- a/fe/PC/src/mixins/TableMixins.js
+++ b/fe/PC/src/mixins/TableMixins.js
@@ -42,8 +42,38 @@ export const tableMixins = {
}
},
methods: {
+ // 批量添加判断显示主子表默认按钮、字段设置
+ initPagingHeaderBtn(){
+ let _allBtns = []
+ this.currenButtonData.forEach(item => {
+ _allBtns.push(item.name)
+ });
+ if(_allBtns.indexOf('showMrt') < 0){
+ this.currenButtonData = [
+ ...this.currenButtonData,
+ {
+ label: "查看主表",
+ name: "showMrt",
+ size: "small",
+ hide: ()=>{return localStorage.getItem('pageHasMOrDList').indexOf(this.$route.name+'_mrt') < 0}
+ },
+ ]
+ }
+ if(_allBtns.indexOf('showDet') < 0){
+ this.currenButtonData = [
+ ...this.currenButtonData,
+ {
+ label: "查看子表",
+ name: "showDet",
+ size: "small",
+ hide: ()=>{return localStorage.getItem('pageHasMOrDList').indexOf(this.$route.name+'_det') < 0}
+ },
+ ]
+ }
+ },
//渲染数据
paging(callback) {
+ this.initPagingHeaderBtn()
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount,
getPageList(this.PageListParams, this.URL).then(res => {
diff --git a/fe/PC/src/store/getters.js b/fe/PC/src/store/getters.js
index a73b4b363..7c93bebf6 100644
--- a/fe/PC/src/store/getters.js
+++ b/fe/PC/src/store/getters.js
@@ -12,6 +12,9 @@ const getters = {
roles: state => state.user.roles,
permission_routes: state => state.permission.routes,
errorLogs: state => state.errorLog.logs,
- dictionaries: state => state.dictionaries.dict
+ dictionaries: state => state.dictionaries.dict,
+ currentShowMrtOrDet: state => state.outerIframeForMOrD.showMrtOrDet,//当前展开的主表/子表集合
+ pageListMrt: state => state.outerIframeForMOrD.pageList_Mrt,//所有有【查看主表】的页面配置
+ pageListDet: state => state.outerIframeForMOrD.pageList_Det,//所有有【查看子表】的页面配置
}
export default getters
diff --git a/fe/PC/src/store/modules/outerIframeForMOrD.js b/fe/PC/src/store/modules/outerIframeForMOrD.js
new file mode 100644
index 000000000..7da184f87
--- /dev/null
+++ b/fe/PC/src/store/modules/outerIframeForMOrD.js
@@ -0,0 +1,119 @@
+const state = {
+ showMrtOrDet: [],// 当前未关闭(保留缓存)的ifram项
+ pageList_Mrt: [],// 主表iframe的数据
+ pageList_Det: [],// 子表iframe的数据
+}
+
+// 驼峰转义
+const changeToHump = (sName) => {
+ const reg = /-(.)/g;
+ return sName.replace(reg, (fullMatch, g1, index) => {
+ if (index === 0) return g1;
+ return g1.toUpperCase();
+ });
+}
+
+ // 首字母转换 type='Lower'(小写,默认) Upper(大写)
+const firstWordSizeChange = (str,type='Upper') => {
+ switch(type){
+ case 'Lower':
+ return str.substring(0,1).toLowerCase() + str.substring(1,str.length);
+ case 'Upper':
+ return str.substring(0,1).toUpperCase() + str.substring(1,str.length);
+ }
+}
+
+// 添加时候,pageList处理
+const addPageListHandle = (list,data) => {
+ let urlName = firstWordSizeChange(changeToHump(data.option.listUrl))
+
+ let mrt_url = localStorage.getItem('MOrDFasterUrl_'+data.option.moudle) + '#/' + urlName
+ let det_url = localStorage.getItem('MOrDFasterUrl_'+data.option.moudle) + '#/' + urlName + 'Detail'
+ // 查看主表、查看子表 有缓存的iframe 相关配置
+ const singlePage = '?isSinglePage=true'
+ const RefreshId = '&RefreshId='
+ let _userName = localStorage.getItem('userName')
+ const loginName = _userName && _userName.length > 0 ? '&loginName='+_userName : ''
+ let _type_url = data.option.type == 'mrt' ? mrt_url : det_url
+ let _url_pr = _type_url + singlePage + loginName + RefreshId
+ let _has_index
+ // 判断列表中是否已经存在当前项
+ let _list = list.filter((item,key)=>{
+ if(item.name == data.option.name)_has_index=key
+ return item.name == data.option.name
+ })
+ // 如果不存在追加
+ if(_list.length <= 0){
+ list.push({
+ name:data.option.name,
+ url:_url_pr + new Date().getTime()
+ })
+ }
+ // 如果存在更改其url的RefreshId,重新渲染
+ else{
+ list[_has_index].url = _url_pr + new Date().getTime()
+ }
+ return list
+}
+
+
+// 移除时候,pageList处理
+const removePageListHandle = (list,data) => {
+ let _has_index
+ let _list = list.filter((item,key)=>{
+ if(item.name == data.option.name)_has_index=key
+ return item.name == data.option.name
+ })
+ // 如果存在删除url 目的:重新渲染页面,处理没关遮罩时候全部关闭,遮罩错乱问题
+ if(_list.length > 0){
+ list[_has_index].url = null
+ }
+ return list
+}
+
+
+const mutations = {
+ // 添加当前显示项集合元素
+ ADD_MORD_SHOW: (state, data) => {
+ if(state.showMrtOrDet.indexOf(data.name) < 0){
+ state.showMrtOrDet.push(data.name)
+ }
+ //新增时候 pageList处理
+ if(data.option.type == 'mrt'){
+ state.pageList_Mrt = addPageListHandle(state.pageList_Mrt,data)
+ }else{
+ state.pageList_Det = addPageListHandle(state.pageList_Det,data)
+ }
+ },
+ // 删除当前显示项集合元素
+ REMOVE_MORD_SHOW: (state, data) => {
+ if(state.showMrtOrDet.indexOf(data.name) >= 0){
+ state.showMrtOrDet = state.showMrtOrDet.filter(item=>{
+ return item != data.name
+ })
+ }
+ //移除时候 pageList处理
+ if(data.option.type == 'mrt'){
+ state.pageList_Mrt = removePageListHandle(state.pageList_Mrt,data)
+ }else{
+ state.pageList_Det = removePageListHandle(state.pageList_Det,data)
+ }
+ },
+}
+
+const actions = {
+ addMOrDShow({ commit }, option) {
+ commit('ADD_MORD_SHOW', {name:option.name + '-' + option.type,option:option})
+ },
+ removeMOrDShow({ commit }, option) {
+ commit('REMOVE_MORD_SHOW', {name:option.name + '-' + option.type,option:option})
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
+