diff --git a/Code/Fe/public/config.js b/Code/Fe/public/config.js index f150e76..8a6e680 100644 --- a/Code/Fe/public/config.js +++ b/Code/Fe/public/config.js @@ -1,6 +1,7 @@ // dev_win window.SITE_CONFIG['base'] = 'http://dev.ccwin-in.com:60069' -window.SITE_CONFIG['columnsApiNames'] = '/api/abp/application-configuration' +window.SITE_CONFIG['columnsApiNames'] = '/api/abp/application-localization' +// window.SITE_CONFIG['columnsApiNames'] = '/api/abp/application-configuration' window.SITE_CONFIG['columnsApiNamesZh'] = 'Winin' window.SITE_CONFIG['isAutoLogin'] = false window.SITE_CONFIG['isSinglePage'] = false diff --git a/Code/Fe/src/api/wms-interface.js b/Code/Fe/src/api/wms-interface.js index a11d6a2..8c28acf 100644 --- a/Code/Fe/src/api/wms-interface.js +++ b/Code/Fe/src/api/wms-interface.js @@ -7,7 +7,9 @@ let colum_url = localStorage.getItem('columnsApiNames') export function getInterfaceBoard() { return request({ method:'get', - url: base_api + colum_url + url: base_api + colum_url, + params:{CultureName:'zh-Hans'} + // params:{IncludeLocalizationResources:true} }) } diff --git a/Code/Fe/src/components/commonTabel-drawer copy/index.vue b/Code/Fe/src/components/commonTabel-drawer copy/index.vue new file mode 100644 index 0000000..6d9e66d --- /dev/null +++ b/Code/Fe/src/components/commonTabel-drawer copy/index.vue @@ -0,0 +1,559 @@ + + + + + + + {{ propsData[title[0].prop] }} + {{ title[0].label }} + + + + + + + + + {{ item.label }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 关闭 + + + + + \ No newline at end of file diff --git a/Code/Fe/src/components/commonTabel-drawer copy/style/index.scss b/Code/Fe/src/components/commonTabel-drawer copy/style/index.scss new file mode 100644 index 0000000..877fd49 --- /dev/null +++ b/Code/Fe/src/components/commonTabel-drawer copy/style/index.scss @@ -0,0 +1,122 @@ +.el-drawer__wrapper { + z-index: 10 !important; + position: absolute; + left: 32%; + overflow: visible; + // height:calc(100% - 28px); + // top: 14px; + // right:14px + + ::v-deep .el-drawer { + height: 100%; + overflow: visible; + box-shadow: 0 8px 10px -5px rgb(0 0 0 / 15%), 0 16px 24px 2px rgb(0 0 0 / 9%), 0 6px 30px 5px rgb(0 0 0 / 7%); + + .el-drawer__body { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + + .drawer-heder { + display: flex; + padding: 15px 10px; + justify-content: space-between; + align-items: center; + + .heder-left { + display: flex; + justify-content: space-between; + + .heder-img { + width: 40px; + height: 40px; + margin-right: 10px; + } + + .header-text { + padding:0 20px; + display: flex; + flex-direction: column; + justify-content: space-between; + + span:nth-child(1) { + color: #333; + font-size: 22px; + } + + span:nth-child(2) { + color: #999; + font-size: 16px; + } + } + } + } + + .Descriptions { + padding: 0 10px; + } + + .drawer-main { + // padding-top: 20px; + flex: 1; + overflow: hidden; + // background-color: #efefef; + padding: 10px 20px 20px 30px; + border-top: solid 5px #f6f6f6; + + .el-tabs { + height: 100%; + display: flex; + flex-direction: column; + .el-tabs__header{ + // padding-bottom: 5px ; + .el-tabs__nav{ + z-index: auto !important; + } + } + + .el-tabs__content { + flex: 1; + + .el-tab-pane { + width: 100%; + height: 100%; + overflow-y: auto; + } + + .el-descriptions-item__label { + padding-right: 40px; + } + } + } + } + + .drawer-Shut { + width: 35px; + height: 100px; + position: absolute; + top: 200px; + left: -35px; + + .el-button { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + + ::v-deep span { + font-size: 12px; + letter-spacing: 10px; + writing-mode: tb-rl; + } + } + } + } + } +} + +::v-deep .el-tabs__nav-wrap::after{ + content: unset !important; +} diff --git a/Code/Fe/src/components/commonTabel-drawer/index.vue b/Code/Fe/src/components/commonTabel-drawer/index.vue index 6d9e66d..cd64cba 100644 --- a/Code/Fe/src/components/commonTabel-drawer/index.vue +++ b/Code/Fe/src/components/commonTabel-drawer/index.vue @@ -66,7 +66,20 @@ :propsData="propsData" > + + + @@ -198,6 +199,8 @@ data () { return { dialogShow:true, URLOption_detailList:allUrlOption[this.$route.name].detailListURL,//明细-列表 + URLOption_masterId:allUrlOption[this.$route.name].masterId || 'masterId',//明细-查看主表的连接id + URLOption_masterName:allUrlOption[this.$route.name].masterName,//明细-列表//明细-查看主表的连接title名称 URLOption_parent:allUrlOption[this.$route.name].parentURL ? allUrlOption[this.$route.name].parentURL : allUrlOption[this.$route.name].detailURL,//明细-查看主表 currenButtonData: [],//头部按钮 operaButtons:[],//操作列按钮 @@ -256,10 +259,10 @@ methods: { }, // 查看主表信息 showParentHandleForDetail(data){ - this.showParentTitle = `[${data.studentName}] 主表信息` + this.showParentTitle = `${data[this.URLOption_masterName]} 主表信息` this.showParentDialog = true this.showParentLoading = true - getListDesById(this.URLOption_parent,data.masterId) + getListDesById(this.URLOption_parent,data[this.URLOption_masterId]) .then(res => { this.showParentTableData = res this.showParentLoading = false diff --git a/Code/Fe/src/components/rowDrop/index.vue b/Code/Fe/src/components/rowDrop/index.vue index 5df37ed..1e7b8a3 100644 --- a/Code/Fe/src/components/rowDrop/index.vue +++ b/Code/Fe/src/components/rowDrop/index.vue @@ -54,12 +54,14 @@ export default { }, data() { return { + historyTableColumns:null, name: null, oldData: null, newData: null, dataList: [], // 全选 allSelect hasSelect NoSelect allSeletType:'NoSelect', + userName:JSON.parse(localStorage.getItem('currentUserInfo')).userName } }, props: { @@ -77,8 +79,9 @@ export default { }, }, mounted() { - this.formatData(this.tableColumns) - this.initSelectSta() + this.historyTableColumns = JSON.parse(JSON.stringify(this.tableColumns)) + this.formatData(this.tableColumns) + this.initSelectSta() }, methods: { reset() { @@ -88,10 +91,11 @@ export default { type: 'warning', cancelButtonClass:'rowDropNotHideItem' }).then(() => { - // 先set是为了字段设置按钮可以监听到缓存变化,之后在移除缓存 - localStorage.setItem('tableColumns_' + this.$store.getters.name.userName + '_' + this.$route.name, JSON.stringify([])) - localStorage.removeItem('tableColumns_' + this.$store.getters.name.userName + '_' + this.$route.name) - let _resetCol = this.$isTableColumns[this.$route.name] + // 先set是为了字段设置按钮可以监听到缓存变化,之后在移除缓存 this.$store.getters.name.userName + localStorage.setItem('tableColumns_' + this.userName + '_' + this.$route.name, JSON.stringify([])) + localStorage.removeItem('tableColumns_' + this.userName + '_' + this.$route.name) + // let _resetCol = this.$isTableColumns[this.$route.name] + let _resetCol = this.historyTableColumns _resetCol.forEach(item => { item.istrue = true }) @@ -110,16 +114,16 @@ export default { formatData (val) { this.dataList = JSON.parse(JSON.stringify(val)) this.dataList.forEach(item => { - if (item.istrue == undefined) { - item.istrue = true - } + if (item.istrue == undefined) { + item.istrue = true + } }) }, save () { this.$forceUpdate() this.$emit('radio',this.dataList) // 本地缓存 当前用户名 + 路由名称 - localStorage.setItem('tableColumns_' + this.$store.getters.name.userName + '_' + this.$route.name, JSON.stringify(this.dataList)) + localStorage.setItem('tableColumns_' + this.userName + '_' + this.$route.name, JSON.stringify(this.dataList)) }, dragstart(value) { this.oldData = value @@ -149,9 +153,12 @@ export default { }, // item元素点击眼睛事件 rediochange(index){ - this.dataList[index].istrue = !this.dataList[index].istrue + // this.dataList[index].istrue = !this.dataList[index].istrue + this.$set(this.dataList[index],'istrue', !this.dataList[index].istrue) this.initSelectSta() - this.save() + this.$nextTick(()=>{ + this.save() + }) }, // 初始化当前全选状态 initSelectSta(){ diff --git a/Code/Fe/src/components/tablePagination/index.vue b/Code/Fe/src/components/tablePagination/index.vue index df69402..8c826c6 100644 --- a/Code/Fe/src/components/tablePagination/index.vue +++ b/Code/Fe/src/components/tablePagination/index.vue @@ -49,6 +49,7 @@ @sortChange="sortChange" @handleSelectionChange="handleSelectionChange" @inlineDialog="inlineDialog" + :buttonOperationList="buttonOperationList" @buttonOperationClick="buttonOperationClick" :tableBorder="true" :firstFixed="true" @@ -107,6 +108,11 @@ export default { return [] } }, + // 操作列按钮 + buttonOperationList:{ + type: Array, + default: null, + }, // 列表数据 tableData: { type: Array, @@ -325,6 +331,10 @@ export default { buttonOperationClick(row, index, label) { this.$emit("buttonOperationClick", row, index, label); }, + //点击table操作列按钮 + buttonOperationClick(row, item, index) { + this.$emit("buttonOperationClick", row, item, index); + }, // 全面筛选组件配置 // 全面筛选组件内部显示/隐藏更改触发,同步当前的showSearchOverall值 getShowSearchOverall(val){ diff --git a/Code/Fe/src/components/umyTable/index.vue b/Code/Fe/src/components/umyTable/index.vue index d708364..9b0ccab 100644 --- a/Code/Fe/src/components/umyTable/index.vue +++ b/Code/Fe/src/components/umyTable/index.vue @@ -19,6 +19,27 @@ header-row-class-name="uTableHeader" > + + + + 操作 + + + {{itemButton.label}} + + @@ -257,18 +278,6 @@ >{{item.label}} - - - - {{itemButton}} - {{ scope.row[item.prop] ? scope.row[item.prop][item.showProp] : "" }} @@ -432,6 +441,11 @@ export default { }, }, props: { + // 操作列按钮 + buttonOperationList:{ + type: Array, + default: null, + }, // 超出内容是否提示 showOverflowTooltip:{ type: Boolean, @@ -867,8 +881,8 @@ export default { this.$emit("buttonClick", row, index, label); }, //点击table操作列按钮 - buttonOperationClick(row, label) { - this.$emit("buttonOperationClick", row, label); + buttonOperationClick(row, item, index) { + this.$emit("buttonOperationClick", row, item, index); }, }, }; @@ -911,9 +925,6 @@ export default { .el-table__fixed-right::before { z-index: auto !important; } -.buttonOperation-btn{ - padding: 0; -} .spamHover { color: #409eff; cursor: pointer; diff --git a/Code/Fe/src/mixins/TableMixins.js b/Code/Fe/src/mixins/TableMixins.js index 9147252..c3d2d08 100644 --- a/Code/Fe/src/mixins/TableMixins.js +++ b/Code/Fe/src/mixins/TableMixins.js @@ -38,6 +38,10 @@ export const tableMixins = { tableDataDetails:[], //默认tag firstTabs:'xq', + // api的表头原始数据 + apiColumns_Table_copy:null, + apiColumns_DesTions_copy:null, + apiColumns_DetailsTable_copy:null, // api的表头数据 apiColumns_Table:null, apiColumns_DesTions:null, @@ -46,9 +50,34 @@ export const tableMixins = { URLOption_base:allUrlOption[this.$route.name].baseURL, //主表-明细 URLOption_detail:allUrlOption[this.$route.name].detailURL, + // 主表-操作列 + operationButtonsTable:[{label:'查看详情',name:'info'}] } }, + mounted() { + // 用于api表头的字段设置监听同步 + window.addEventListener('setItemEvent', (item) => { + if (item.key.indexOf('tableColumns') > -1) { + if(JSON.parse(item.newValue).length <= 0){ + this.apiColumns_Table = this.apiColumns_Table_copy[this.$route.name] + }else{ + this.apiColumns_Table = JSON.parse(item.newValue) + } + } + }) + }, methods: { + // 获取通过api的表头数据,不可以在初始化处理,因为接口返回问题 + initApiColumns(tableColumns_api,tabsDesTions_api,detailsTableColumns_api){ + // 复制一份原始数据(目的:字段设置恢复) + this.apiColumns_Table_copy = JSON.parse(JSON.stringify(tableColumns_api)) + this.apiColumns_DesTions_copy = JSON.parse(JSON.stringify(tabsDesTions_api)) + this.apiColumns_DetailsTable_copy = JSON.parse(JSON.stringify(detailsTableColumns_api)) + // 赋值表头数据 + this.apiColumns_Table = this.initTableColumns(tableColumns_api[this.$route.name]) + this.apiColumns_DesTions = tabsDesTions_api[this.$route.name] + this.apiColumns_DetailsTable = detailsTableColumns_api[this.$route.name] + }, //渲染数据 paging(callback) { this.Loading.tableLoading = true; @@ -212,13 +241,18 @@ export const tableMixins = { /** * * @param {*} row 当前行数据 - * @param {*} label 按钮name + * @param {*} item 按钮信息 + * @param {*} index 按钮索引 */ - buttonOperationClick(row, label) { + buttonOperationClick(row, item, index) { // 获取当前行数据,赋值给 propsData this.propsData = row - - if (label == "edit") { + // 查看详情 + if (item.name == "info") { + this.inlineDialog(row) + } + // 编辑 + if (item.name == "edit") { this.formTitle = this.$route.meta.title + "编辑"; this.formReveal = false this.theEvent = "edit" @@ -234,7 +268,8 @@ export const tableMixins = { } this.displayDialog.editDialog = true } - if (label == 'delete') { + // 删除 + if (item.name == 'delete') { this.$confirm('此操作将永久删除该消息, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', diff --git a/Code/Fe/src/mixins/mixins.js b/Code/Fe/src/mixins/mixins.js index e39638a..441c825 100644 --- a/Code/Fe/src/mixins/mixins.js +++ b/Code/Fe/src/mixins/mixins.js @@ -55,10 +55,10 @@ export const mixins = { methods: { // 结合默认及缓存中的列表tableColumns数据做初始化 initTableColumns(){ - let _list_defalut = this.$isTableColumns[this.$route.name] + let _list_defalut = columnsData ? columnsData : this.$isTableColumns[this.$route.name] if(!_list_defalut)return - let _local = localStorage.getItem('tableColumns_' + this.$store.getters.name.userName + '_' + this.$route.name) - let _list_local = JSON.parse(localStorage.getItem('tableColumns_' + this.$store.getters.name.userName + '_' + this.$route.name)) + let _local = localStorage.getItem('tableColumns_' + JSON.parse(localStorage.getItem('currentUserInfo')).userName + '_' + this.$route.name) + let _list_local = JSON.parse(localStorage.getItem('tableColumns_' + JSON.parse(localStorage.getItem('currentUserInfo')).userName + '_' + this.$route.name)) let _new_list = [] //格式化后的数据 // 如果没有缓存则直接为默认值 if(!_local){ diff --git a/Code/Fe/src/permission.js b/Code/Fe/src/permission.js index 10cb5ce..fc684ad 100644 --- a/Code/Fe/src/permission.js +++ b/Code/Fe/src/permission.js @@ -39,21 +39,23 @@ router.beforeEach(async (to, from, next) => { isAutoLogin = JSON.parse(_url_isAutoLogin) } let userInfo = localStorage.getItem('currentUserInfo') + let _zh = localStorage.getItem('columnsApiNamesZh') // 是否有用户信息: // 1、如果没有判断是否为自动登录(是自动登录则自动执行登录,账号密码为配置信息中的值,不是自动登录则跳到登录页) // 2、如果有用户信息:则检查是否有api接口的表头数据,没有的话重新获取 if(!userInfo){ - if(isAutoLogin){ - let loginForm= { - userNameOrEmailAddress:localStorage.getItem("userNameOrEmailAddress"), - password:localStorage.getItem("client_secret"), - // rememberMe:true, - // grant_type: 'password', - // client_id: 'Auth_App', - } + if(isAutoLogin || to.query.loginName){ + // let loginForm= { + // userNameOrEmailAddress:localStorage.getItem("userNameOrEmailAddress"), + // password:localStorage.getItem("client_secret"), + // // rememberMe:true, + // // grant_type: 'password', + // // client_id: 'Auth_App', + // } // store.dispatch('user/login', loginForm).then(() => { - login(loginForm).then(()=>{ + // login(loginForm).then(()=>{ getUsersByUserName(localStorage.getItem("userNameOrEmailAddress")).then(res=>{ + // todo:currentUserInfo全程需要优化 localStorage.setItem("currentUserInfo", JSON.stringify(res)); }) .catch(err => { @@ -61,16 +63,16 @@ router.beforeEach(async (to, from, next) => { }) // 提前获取接口监控看板表头数据并存储 getInterfaceBoard().then(result => { - localStorage.setItem("interfaceBoardColumnsNames", JSON.stringify(result.localization.values.Winin)); - next() + localStorage.setItem("interfaceBoardColumnsNames", JSON.stringify(result.resources[_zh].texts)); + next('/') }) .catch(err => { console.log('获取表头失败,请重试') }) - }) - .catch((error) => { - console.log('登录失败') - }) + // }) + // .catch((error) => { + // console.log('登录失败') + // }) }else{ if (to.path != '/login') { next('/login') @@ -84,8 +86,8 @@ router.beforeEach(async (to, from, next) => { // const _interfaceBoardColumnsNames = localStorage.getItem("interfaceBoardColumnsNames") // if( !_interfaceBoardColumnsNames || _interfaceBoardColumnsNames == 'undefined' || _interfaceBoardColumnsNames == 'null'){ getInterfaceBoard().then(result => { - let _zh = localStorage.getItem('columnsApiNamesZh') - localStorage.setItem("interfaceBoardColumnsNames", JSON.stringify(result.localization.values[_zh])); + // todo-new:columnsApiNamesZh配置的地址补全(evel) + localStorage.setItem("interfaceBoardColumnsNames", JSON.stringify(result.resources[_zh].texts)); setTimeout(()=>{ next() },0) diff --git a/Code/Fe/src/utils/baseData/urlOption.js b/Code/Fe/src/utils/baseData/urlOption.js index db30f20..fee01c4 100644 --- a/Code/Fe/src/utils/baseData/urlOption.js +++ b/Code/Fe/src/utils/baseData/urlOption.js @@ -3,6 +3,8 @@ export const TestSchool = { baseURL:'TestSchool/base',//主表-列表 detailURL:'app/test-school',//主表-明细 + 明细-查看主表 detailListURL:'TestStudentDetail/base',//明细-列表, + masterId:'masterId',//明细获取主表信息的masterId(默认) + masterName:'studentName'//明细获取主表信息的title名称 // parentURL:null,//明细-查看主表:特殊接口,如果没有则走detailURL // deleteURL:null,//删除特殊URL // updataURL:null,//新增+编辑特殊URL(新增+编辑使用一个) diff --git a/Code/Fe/src/utils/defaultButtons.js b/Code/Fe/src/utils/defaultButtons.js index d5fba58..d952763 100644 --- a/Code/Fe/src/utils/defaultButtons.js +++ b/Code/Fe/src/utils/defaultButtons.js @@ -42,7 +42,7 @@ export function defaultExportBtn(option) { // 字段设置 export function defaultFieldSettingBtn(option) { // todo:监听已经配置过的字段按钮更改状态特殊显示 - let _local = localStorage.getItem('tableColumns_' + this.$store.getters.name.userName + '_' + this.$route.name) + let _local = localStorage.getItem('tableColumns_' + JSON.parse(localStorage.getItem('currentUserInfo')).userName + '_' + this.$route.name) let _type = '' let _num = 0 if(_local){ diff --git a/Code/Fe/src/utils/tableColumns_api/index.js b/Code/Fe/src/utils/tableColumns_api/index.js index 48248df..b4b0a73 100644 --- a/Code/Fe/src/utils/tableColumns_api/index.js +++ b/Code/Fe/src/utils/tableColumns_api/index.js @@ -4,6 +4,6 @@ import { initFromApiColumnsLable } from '@/utils/index' // 测试数据 export const TestSchool = [ - { label: initFromApiColumnsLable('TestSchoolSchoolName'), prop: "schoolName", fixed: "left", type: "name" }, + { label: initFromApiColumnsLable('TestSchoolSchoolName'), prop: "schoolName", fixed: "left" }, { label: initFromApiColumnsLable('TestStudentDetailOrderType'), prop: "orderType" }, ] \ No newline at end of file diff --git a/Code/Fe/src/views/dashboard/index.vue b/Code/Fe/src/views/dashboard/index.vue index ca5d4ba..2f72066 100644 --- a/Code/Fe/src/views/dashboard/index.vue +++ b/Code/Fe/src/views/dashboard/index.vue @@ -178,7 +178,7 @@ display: flex; padding-top: 10px; .title{ - width: 180px; + width: 240px; text-align: right; font-weight: bold; flex-shrink: 0; diff --git a/Code/Fe/src/views/interfaceBoard/TestSchool.vue b/Code/Fe/src/views/interfaceBoard/TestSchool.vue index d861436..8a98178 100644 --- a/Code/Fe/src/views/interfaceBoard/TestSchool.vue +++ b/Code/Fe/src/views/interfaceBoard/TestSchool.vue @@ -23,6 +23,8 @@ :primarySearchOption="primarySearchOption" @overallSearchFormClick="overallSearchFormClick" :httpOverallSearchData="httpOverallSearchData" + @buttonOperationClick="buttonOperationClick" + :buttonOperationList="operationButtonsTable" >