Browse Source

【接口看板+job+inventory】查看主表封装-暂存

master
安虹睿 9 months ago
parent
commit
3b66042572
  1. 26
      PC/InterFace.Dash/README.md
  2. 54
      PC/InterFace.Dash/src/components/commonTabel-drawer/index.vue
  3. 405
      PC/InterFace.Dash/src/components/filterForDetailPage/index.vue
  4. 184
      PC/InterFace.Dash/src/mixins/TableMixins.js
  5. 6
      PC/InterFace.Dash/src/mixins/mixins.js
  6. 34
      PC/InterFace.Dash/src/utils/baseData/urlOption.js
  7. 100
      PC/InterFace.Dash/src/utils/index.js
  8. 26
      PC/UI.WinIn.FasterZ.Inventory/README.md
  9. 54
      PC/UI.WinIn.FasterZ.Inventory/src/components/commonTabel-drawer/index.vue
  10. 405
      PC/UI.WinIn.FasterZ.Inventory/src/components/filterForDetailPage/index.vue
  11. 184
      PC/UI.WinIn.FasterZ.Inventory/src/mixins/TableMixins.js
  12. 6
      PC/UI.WinIn.FasterZ.Inventory/src/mixins/mixins.js
  13. 17
      PC/UI.WinIn.FasterZ.Inventory/src/utils/baseData/urlOption.js
  14. 230
      PC/UI.WinIn.FasterZ.Inventory/src/utils/index.js
  15. 26
      PC/UI.WinIn.FasterZ.Job/README.md
  16. 54
      PC/UI.WinIn.FasterZ.Job/src/components/commonTabel-drawer/index.vue
  17. 405
      PC/UI.WinIn.FasterZ.Job/src/components/filterForDetailPage/index.vue
  18. 184
      PC/UI.WinIn.FasterZ.Job/src/mixins/TableMixins.js
  19. 6
      PC/UI.WinIn.FasterZ.Job/src/mixins/mixins.js
  20. 56
      PC/UI.WinIn.FasterZ.Job/src/utils/baseData/urlOption.js
  21. 230
      PC/UI.WinIn.FasterZ.Job/src/utils/index.js

26
PC/InterFace.Dash/README.md

@ -123,4 +123,28 @@ validType type仅等于input时:实时keyUp校验,类型如下:
pointNumberFixed 组合上方validType值仅等于pointNumber时:
小数点后方保留位数,如不填写默认为100位
<validType>+<pointNumberFixed>示例:
{ type:"input", label:"金额", prop:"money", validType:'pointNumber',pointNumberFixed:2},
{ type:"input", label:"金额", prop:"money", validType:'pointNumber',pointNumberFixed:2},
[urlOpion示例]
// 添加页面需要配置位置
// 示例数据
export const TestSchool = {
baseURL:'TestSchool/base',//主表-列表
detailURL:'app/test-school',//主表-明细 + 明细-查看主表
// detailInfoName:'asnNbr',//主表-明细查看详情的title名称
detailListURL:'TestStudentDetail/base',//明细-列表,
masterId:'masterId',//明细获取主表信息的masterId,默认依次为[默认配置defalutMasterId,固定值masterId]
masterName:'studentName'//明细获取主表信息的title名称
// parentURL:null,//明细-查看主表:特殊接口,如果没有则走detailURL
// deleteURL:null,//删除特殊URL
// addURL:null,//新增特殊URL
// editURL:null,//编辑特殊URL
// exportURL:'exportURL',//导出特殊URL
<!-- 20231124 有主表的子列表 查看详情的主表信息处理 -->
//有主表的子表单页的主表信息接口,默认为当前的[detailURL]去掉[-Detail]
// mainShowMasterUrl:null,
//有主表的子表单页的主表链接参数,默认依次为[默认配置defalutMasterId,上方配置中masterId,固定值masterId]
// mainShowMasterId:'masterId',
//有主表的子表单页的主表路由[用于显示列转义],默认为[当前路由]去掉[Detail]
// masterRoute:null,
}

54
PC/InterFace.Dash/src/components/commonTabel-drawer/index.vue

@ -49,6 +49,7 @@
@handleClick="handleClick"
>
<template slot-scope="scope">
<!-- 详情 -->
<curren-descriptions
border
v-if="scope.value == 'xq'"
@ -59,6 +60,17 @@
:propsData="propsData"
>
</curren-descriptions>
<!-- 主表信息 -->
<curren-descriptions
border
v-if="scope.value == 'masterInfo'"
:column="column"
:direction="direction"
:colon="false"
:tabsDesTions="masterColums"
:propsData="propsData.masterInfo"
>
</curren-descriptions>
<!-- 明细 包含分页 头部按钮等 -->
<tablePagination
ref="tablePaginationForMX_Ref"
@ -104,11 +116,12 @@
</template>
</umyTable>
<!-- 自定义扩展 -->
<umyTable
<!-- <umyTable
v-if="
scope.value == zdyValue &&
scope.value != 'xq' &&
scope.value != 'mx' &&
scope.value != 'masterInfo' &&
scope.value != 'hz' &&
scope.value != 'zwlcj'
"
@ -127,7 +140,7 @@
<template>
<slot></slot>
</template>
</umyTable>
</umyTable> -->
</template>
</curren-tabs>
</div>
@ -171,6 +184,10 @@ import pagination from "@/components/Pagination"
import rowDrop from "@/components/rowDrop/index.vue"
import * as allUrlOption from '@/utils/baseData/urlOption'
import { LoadingMixins } from "@/mixins/LoadingMixins";
import {
initApiColumnsForDto,
sliceStrEndDelete
} from '@/utils/index'
export default {
name: 'currenTabel-drawer',
components: {
@ -309,7 +326,8 @@ export default {
// tabs
if (this.dropdownTabsData.length !== 0) {
return this.dropdownTabsData
} else {
}
else {
//
// if (Object.keys(this.propsData).length != 0) {
if (Object.keys(this.propsData)) {
@ -317,6 +335,14 @@ export default {
label: "详情",
name: 'xq'
}]
if(this.propsData.masterInfo && this.propsData.masterInfo.length > 0){
this.initDropdownTabsData.push({
label: "主表信息",
name: 'masterInfo'
})
let _master_name = this.URLOption.masterRoute || sliceStrEndDelete(this.$route.name,'Detail')
this.masterColums = initApiColumnsForDto(this.propsData.masterInfo,_master_name,this)
}
// 使
if(this.propsData.details){
this.initDropdownTabsData.push({
@ -343,9 +369,9 @@ export default {
detailHeaderButton:null,//-
detailInfoTableData:null,//-
detailInfoTitle:null,//-title
otherData:[], // tabs
zdyTableColumns:[], //
zdyValue:'', //
// otherData:[], // tabs
// zdyTableColumns:[], //
// zdyValue:'', //
// firstTabs:'xq',
initDropdownTabsData:[
{
@ -375,10 +401,14 @@ export default {
MaxResultCount: 20,
},
totalCountForDetail:0,
//-id
URLOption:allUrlOption[this.$route.name],
//-id
URLOption_masterId:allUrlOption[this.$route.name].masterId || 'masterId',
URLOption_masterId:allUrlOption[this.$route.name].masterId || allUrlOption.defalutMasterId || 'masterId',
//-
URLOption_detailList:allUrlOption[this.$route.name].detailListURL,
//
masterColums:null
}
},
methods: {
@ -574,7 +604,7 @@ export default {
// tabs
handleClick (val) {
this.$emit("currenTabsChange", val);//tab
this.zdyValue = val.name
// this.zdyValue = val.name
this.dropdownTabsData.forEach( item => {
if (item.name == val.name) {
let parent = this.$parent
@ -582,12 +612,12 @@ export default {
//
parent.firstTabs = val.name
if (val.name == 'xq' || val.name == 'mx' || val.name == 'hz') {
this.zdyTableColumns = []
this.otherData = []
// this.zdyTableColumns = []
// this.otherData = []
parent.tableLoading = false
} else {
this.zdyTableColumns = []
this.otherData = []
// this.zdyTableColumns = []
// this.otherData = []
// this.firstTabs = val.name
// tab
// if (item.functionName == 'getListByItemcode') {

405
PC/InterFace.Dash/src/components/filterForDetailPage/index.vue

@ -120,219 +120,216 @@
</el-table> -->
</el-dialog>
</div>
</template>
<script>
import currenDescriptions from "@/components/currenDescriptions"
import { tableMixins } from "@/mixins/TableMixins";
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins";
import { LoadingMixins } from "@/mixins/LoadingMixins";
import { mixins } from "@/mixins/mixins";
import { filterSelectMixins } from '@/mixins/filter-Select'
import {getListDesById,getPageListForDetail} from "@/api/wms-api"
export default {
name: 'filterForDetailPage',
mixins: [
tableMixins,
TableHeaderMixins,
mixins,
filterSelectMixins,
LoadingMixins
],
components:{
currenDescriptions
},
props: {
// app-main100%
setUTableHeight: {
type: Number,
default: 340
},
//
isShowIndex:{
type: Boolean,
default: false
},
//
tableSelection: {
type: Boolean,
default: false
},
cellStyle: {
type: Function,
default: () => {
return Function;
}
},
//
showOverflowTooltip:{
type: Boolean,
default: false,
},
// api
DeleteApi: {
type: String,
default: null
},
// -
parentColumns:{
type: Array,
default: null
},
showHandleButtons:{
type:Array,
default:() => {
//'add','edit' 'delete'
// showParentfreshfilterfield
return ['showParent','fresh','filter','field'];
}
},
// 2
column: {
</template>
<script>
import currenDescriptions from "@/components/currenDescriptions"
import { tableMixins } from "@/mixins/TableMixins";
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins";
import { LoadingMixins } from "@/mixins/LoadingMixins";
import { mixins } from "@/mixins/mixins";
import { filterSelectMixins } from '@/mixins/filter-Select'
import {getListDesById,getPageListForDetail} from "@/api/wms-api"
import { initApiColumnsForDto } from '@/utils/index'
export default {
name: 'filterForDetailPage',
mixins: [
tableMixins,
TableHeaderMixins,
mixins,
filterSelectMixins,
LoadingMixins
],
components:{
currenDescriptions
},
props: {
// app-main100%
setUTableHeight: {
type: Number,
default: 2
},
//
direction: {
default: 340
},
//
isShowIndex:{
type: Boolean,
default: false
},
//
tableSelection: {
type: Boolean,
default: false
},
cellStyle: {
type: Function,
default: () => {
return Function;
}
},
//
showOverflowTooltip:{
type: Boolean,
default: false,
},
// api
DeleteApi: {
type: String,
default: 'horizontal'
},
rowMaxHeight:{
type:String,
default:'calc(90vh - 450px)'
},
default: null
},
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:[],//
showParentDialog:false,//
showParentTitle:null,//-title
showParentTableData:null,//-
showParentLoading:false,//-
listColumns:[],//
// -
parentColumns:{
type: Array,
default: null
},
showHandleButtons:{
type:Array,
default:() => {
//'add','edit' 'delete'
// showParentfreshfilterfield
return ['showParent','fresh','filter','field'];
}
},
activated(){
//
// 2
column: {
type: Number,
default: 2
},
//
direction: {
type: String,
default: 'horizontal'
},
rowMaxHeight:{
type:String,
default:'calc(90vh - 450px)'
},
},
data () {
return {
dialogShow:true,
currenButtonData: [],//
operaButtons:[],//
showParentDialog:false,//
showParentTitle:null,//-title
showParentTableData:null,//-
showParentLoading:false,//-
listColumns:[],//
}
},
activated(){
//
this.dialogShow = false
this.$nextTick(() => {
this.dialogShow = true
});
},
mounted(){
this.paging()
this.initHandleButtons()
},
methods: {
rowDropForDetail(data,type){
this.listColumns = data
this.$emit("rowDropForDetail", data,type)
},
//
initHandleButtons(){
//
let _arr_header = []
if(this.showHandleButtons.indexOf('add') >= 0){_arr_header.push(this.defaultAddBtn())}
if(this.showHandleButtons.indexOf('field') >= 0){_arr_header.push(this.defaultFieldSettingBtn())}
if(this.showHandleButtons.indexOf('fresh') >= 0){_arr_header.push(this.defaultFreshBtn())}
if(this.showHandleButtons.indexOf('filter') >= 0){_arr_header.push(this.defaultFilterBtn())}
this.currenButtonData = _arr_header
//
let _arr_op = []
if(this.showHandleButtons.indexOf('edit') >= 0){_arr_op.push('edit')}
if(this.showHandleButtons.indexOf('delete') >= 0){_arr_op.push('delete')}
if(this.showHandleButtons.indexOf('showParent') >= 0){_arr_op.push('showParent')}
this.operaButtons = _arr_op
},
//
closeDialog(data){
this.dialogShow = false
this.$nextTick(() => {
this.dialogShow = true
});
this.$emit("closeDialog", data)
},
//
paging(callback){
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount
getPageListForDetail(this.PageListParams,this.URLOption_detailList)
.then(res=>{
//
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
let _Columns = initApiColumnsForDto(res.items[0],_parentName,this)
this.listColumns = this.initTableColumns(_Columns,'detailPage_api')
//
if(res){
this.Loading.tableLoading = false
this.tableData = []
res.items.forEach(item=>{
item.deleteTipVisible = false
this.tableData.push(item)
})
this.totalCount = res.totalCount
}
this.pagingCallback(callback)
})
.catch(err=>{
this.Loading.tableLoading = false
this.$message.error("数据获取失败")
})
},
mounted(){
this.paging()
this.initHandleButtons()
//
showParentHandleForDetail(data){
this.showParentTitle = `${data[this.URLOption_masterName] || ''} 主表信息`
this.showParentDialog = true
this.showParentLoading = true
getListDesById(this.URLOption_parent,data[this.URLOption_masterId])
.then(res => {
this.showParentTableData = res
this.showParentLoading = false
})
.catch(err => {
this.showParentLoading = false
this.$message.error("主表信息获取失败!")
})
},
methods: {
rowDropForDetail(data,type){
this.listColumns = data
this.$emit("rowDropForDetail", data,type)
},
//
initHandleButtons(){
//
let _arr_header = []
if(this.showHandleButtons.indexOf('add') >= 0){_arr_header.push(this.defaultAddBtn())}
if(this.showHandleButtons.indexOf('field') >= 0){_arr_header.push(this.defaultFieldSettingBtn())}
if(this.showHandleButtons.indexOf('fresh') >= 0){_arr_header.push(this.defaultFreshBtn())}
if(this.showHandleButtons.indexOf('filter') >= 0){_arr_header.push(this.defaultFilterBtn())}
this.currenButtonData = _arr_header
//
editHandleForDetail(data){
console.log(data)
},
//
deleteHandleForDetail(data){
this.Loading.appMainLoading = true
data.deleteTipVisible = false
// interfaceApi[this.DeleteApi](data.id).then(res => {
// this.$successMsg('!')
// this.oldSkipCount = 1
// this.Loading.appMainLoading = false
// this.paging()
// }).catch(err => {
// this.Loading.appMainLoading = false
// this.$message.error("!")
// })
},
}
}
</script>
<style lang="scss">
.filterForDetailPage {
//
let _arr_op = []
if(this.showHandleButtons.indexOf('edit') >= 0){_arr_op.push('edit')}
if(this.showHandleButtons.indexOf('delete') >= 0){_arr_op.push('delete')}
if(this.showHandleButtons.indexOf('showParent') >= 0){_arr_op.push('showParent')}
this.operaButtons = _arr_op
},
//
closeDialog(data){
this.dialogShow = false
this.$emit("closeDialog", data)
},
//
paging(callback){
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount
getPageListForDetail(this.PageListParams,this.URLOption_detailList)
.then(res=>{
//
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
let _Columns = this.initApiColumnsForDto(res.items[0],_parentName)
this.listColumns = this.initTableColumns(_Columns,'detailPage_api')
//
if(res){
this.Loading.tableLoading = false
this.tableData = []
res.items.forEach(item=>{
item.deleteTipVisible = false
this.tableData.push(item)
})
this.totalCount = res.totalCount
}
this.pagingCallback(callback)
})
.catch(err=>{
this.Loading.tableLoading = false
this.$message.error("数据获取失败")
})
},
//
showParentHandleForDetail(data){
this.showParentTitle = `${data[this.URLOption_masterName] || ''} 主表信息`
this.showParentDialog = true
this.showParentLoading = true
getListDesById(this.URLOption_parent,data[this.URLOption_masterId])
.then(res => {
this.showParentTableData = res
this.showParentLoading = false
})
.catch(err => {
this.showParentLoading = false
this.$message.error("主表信息获取失败!")
})
},
//
editHandleForDetail(data){
console.log(data)
},
//
deleteHandleForDetail(data){
this.Loading.appMainLoading = true
data.deleteTipVisible = false
// interfaceApi[this.DeleteApi](data.id).then(res => {
// this.$successMsg('!')
// this.oldSkipCount = 1
// this.Loading.appMainLoading = false
// this.paging()
// }).catch(err => {
// this.Loading.appMainLoading = false
// this.$message.error("!")
// })
},
.mainTable-dialog{
.el-dialog{
height: calc(100% - 100px);
}
}
</script>
<style lang="scss">
.filterForDetailPage {
.mainTable-dialog{
.el-dialog{
height: calc(100% - 100px);
}
}
.el-dialog__body{
min-height: 200px;
padding-bottom: 20px !important;
}
}
.filterForDetailPage-list{
height: calc(100%);
overflow: auto;
.el-dialog__body{
min-height: 200px;
padding-bottom: 20px !important;
}
}
</style>
.filterForDetailPage-list{
height: calc(100%);
overflow: auto;
}
</style>

184
PC/InterFace.Dash/src/mixins/TableMixins.js

@ -1,11 +1,13 @@
import i18n from "@/lang"
import {
getPageList,
getDetailed,
postDelete,
ApiTypeDelete
} from '@/api/wms-api'
import { zhApiColumnsLable,firstWordSizeChange } from '@/utils/index'
import {
initApiColumnsForDto,
sliceStrEndDelete
} from '@/utils/index'
export const tableMixins = {
data() {
return {
@ -103,9 +105,22 @@ export const tableMixins = {
}
// 编辑 api
else if (item.name == "editFromApi") {
this.addEditApiType = 'edit'
this.editFromApiRowData = row
this.displayDialog.addEditApiDialog = true;
// this.addEditApiType = 'edit'
// this.editFromApiRowData = row
// this.displayDialog.addEditApiDialog = true;
let _url = this.URLOption_detail ? this.URLOption_detail : this.URLOption_base
this.Loading.tableLoading = true
getDetailed(row.id, _url)
.then(res=>{
this.addEditApiType = 'edit'
this.editFromApiRowData = res
this.displayDialog.addEditApiDialog = true;
this.Loading.tableLoading = false
})
.catch(err=>{
this.Loading.tableLoading = false
})
}
// 删除
else if (item.name == "delete"){
@ -158,95 +173,6 @@ export const tableMixins = {
// if(detailsTable && detailsTable[this.$route.name])this.apiColumns_DetailsTable = this.initTableColumns(detailsTable[this.$route.name],'detail_api')
// if(detailsPage && detailsPage[this.$route.name])this.apiColumns_DetailsPage = this.initTableColumns(detailsPage[this.$route.name],'detailPage_api')
// },
// get-dto-column-type接口表头类型初始化
initApiColumnsForDto(list,titleName){
let data = this.$store.getters.dtoColumnTypes
let _coloums = data[titleName].S
let _Columns_Table = []
if(_coloums){
let _data = _coloums.dtoList
_data.forEach(item=>{
// 如果list接口存在数据 ,与list接口返回字段比较处理,list接口存在的话则追加
let _if = firstWordSizeChange(item.name) != 'details'
if(list){
_if = firstWordSizeChange(item.name) in list && firstWordSizeChange(item.name) != 'details'
}
if(_if){
_Columns_Table.push(item)
}
})
}
if(list){
_Columns_Table = _Columns_Table.concat(this.specialAddColumns(list,titleName))
}
return _Columns_Table
},
// 添加特殊字段(api中没有的字段特殊处理)
specialAddColumns(list,titleName){
let _apiName = titleName
let _special_list=[]
// creationTime
if('creationTime' in list){
_special_list.push(
{
"name": "CreationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'CreationTime',
"label": zhApiColumnsLable(_apiName + 'CreationTime') || i18n.t('columNames.CreationTime'),
"prop": "creationTime",
}
)
}
// creatorId
if('creatorId' in list){
_special_list.push(
{
"name": "CreatorId",
"apiBaseType": "string",
"baseApiName": _apiName + 'CreatorId',
"label": zhApiColumnsLable(_apiName + 'CreatorId') || i18n.t('columNames.CreatorId'),
"prop": "creatorId",
}
)
}
// lastModificationTime
if('lastModificationTime' in list){
_special_list.push(
{
"name": "LastModificationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'LastModificationTime',
"label": zhApiColumnsLable(_apiName + 'LastModificationTime') || i18n.t('columNames.LastModificationTime'),
"prop": "lastModificationTime",
}
)
}
// lastModifierId
if('lastModifierId' in list){
_special_list.push(
{
"name": "LastModifierId",
"apiBaseType": "string",
"baseApiName": _apiName + 'LastModifierId',
"label": zhApiColumnsLable(_apiName + 'LastModifierId') || i18n.t('columNames.LastModifierId'),
"prop": "lastModifierId",
}
)
}
// tenantId
if('tenantId' in list){
_special_list.push(
{
"name": "TenantId",
"apiBaseType": "string",
"baseApiName": _apiName + 'TenantId',
"label": zhApiColumnsLable(_apiName + 'TenantId') || i18n.t('columNames.TenantId'),
"prop": "tenantId",
}
)
}
return _special_list
},
//渲染数据
paging(callback,repeat) {
this.Loading.tableLoading = true;
@ -255,7 +181,7 @@ export const tableMixins = {
.then(res=>{
// 表头处理
let _list = res.items && res.items.length > 0 ? res.items[0] : null
let _Columns = this.initApiColumnsForDto(_list,this.$route.name)
let _Columns = initApiColumnsForDto(_list,this.$route.name,this)
this.apiColumns_Table = this.initTableColumns(_Columns)
this.apiColumns_DesTions = _Columns
// 页面数据处理
@ -312,30 +238,54 @@ export const tableMixins = {
this.Loading.DrawerLoading = true
this.displayDialog.detailsDialog = true;
let _url = this.URLOption_detail ? this.URLOption_detail : this.URLOption_base
getDetailed(val.id, _url)
.then(res=>{
// 打印使用的全部数据存储
this.tableDataDetails = JSON.parse(JSON.stringify(res))
// 数据处理
this.propsData = res
if (res.details) {
// 表头处理
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
this.apiColumns_DetailsTable = this.initTableColumns(this.initApiColumnsForDto(res.details[0],_parentName),'detail_api')
if(this.$refs.currenDrawer_Ref){
this.$refs.currenDrawer_Ref.getDetailList(res,()=>{
this.inlineDialogCallback()
},()=>{
this.Loading.DrawerLoading = false
})
}
}else{
this.Loading.DrawerLoading = false
}
})
.catch(err=>{
// 有主表信息子表(表头处理)
if(!this.URLOption.isMaster && this.URLOption.hasDetail){
let _showMasterUrl = this.URLOption.mainShowMasterUrl
if(!this.URLOption.mainShowMasterUrl){
_showMasterUrl = sliceStrEndDelete(this.URLOption_detail,'-Detail')
}
Promise.all([
getDetailed(val.id, _url),
getDetailed(val[this.URLOption.mainShowMasterId || this.URLOption.masterId || this.allUrlOption.defalutMasterId || 'masterId'], _showMasterUrl)
]).then((res) => {
let _allRes = JSON.parse(JSON.stringify(res[0]))
_allRes.masterInfo = res[1]
this.initInlineHttpBack(_allRes)
}).catch(()=>{
this.Loading.DrawerLoading = false
})
}
// 没有主表信息
else{
getDetailed(val.id, _url)
.then(res=>{
this.initInlineHttpBack(res)
})
.catch(err=>{
this.Loading.DrawerLoading = false
})
}
},
// 查看详情获取返回值后处理
initInlineHttpBack(res){
// 打印使用的全部数据存储
this.tableDataDetails = JSON.parse(JSON.stringify(res))
// 数据处理
this.propsData = res
if (res.details) {
// 表头处理
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
this.apiColumns_DetailsTable = this.initTableColumns(initApiColumnsForDto(res.details[0],_parentName,this),'detail_api')
if(this.$refs.currenDrawer_Ref){
this.$refs.currenDrawer_Ref.getDetailList(res,()=>{
this.inlineDialogCallback()
},()=>{
this.Loading.DrawerLoading = false
})
}
}else{
this.Loading.DrawerLoading = false
}
},
// 前端分页处理
// detailListPageFromFE(data){

6
PC/InterFace.Dash/src/mixins/mixins.js

@ -8,6 +8,9 @@ import { getLoginName } from "@/utils/auth"
export const mixins = {
data() {
return {
allUrlOption:allUrlOption,
// 当前路由配置
URLOption:allUrlOption[this.$route.name],
//主表-列表
URLOption_base:allUrlOption[this.$route.name].baseURL,
//主表-明细
@ -23,7 +26,7 @@ export const mixins = {
//明细-查看主表
URLOption_parent:allUrlOption[this.$route.name].parentURL ? allUrlOption[this.$route.name].parentURL : allUrlOption[this.$route.name].detailURL,
//明细-查看主表的连接id
URLOption_masterId:allUrlOption[this.$route.name].masterId || 'masterId',
URLOption_masterId:allUrlOption[this.$route.name].masterId || allUrlOption.defalutMasterId || 'masterId',
//明细-查看主表的连接title名称
URLOption_masterName:allUrlOption[this.$route.name].masterName,
// 列表-明细-查看详情标题名称
@ -65,7 +68,6 @@ export const mixins = {
name: "determine"
},
],
addEditApiType: null,//Api新增编辑方式(add,edit)
editFromApiRowData:null,//Api编辑方式的默认值
}

34
PC/InterFace.Dash/src/utils/baseData/urlOption.js

@ -1,4 +1,6 @@
// 添加页面需要配置位置
// 默认配置
export const defalutMasterId = 'masterId'
// 示例数据
export const TestSchool = {
baseURL:'TestSchool/base',//主表-列表
@ -16,6 +18,7 @@ export const ExportCustomUserSetting = {
// baseURL:'get-by-user-and-table-name',//主表-列表
baseURL:'ExportCustomUserSetting/base',//主表-列表
detailURL:'app/export-custom-user-setting',//主表-明细 + 明细-查看主表
hasDetail:false,
}
// 接口看板管理-AsnMstr【主子表】
@ -25,19 +28,23 @@ export const AsnMstr = {
// detailInfoName:'asnNbr',//主表-明细查看详情的title名称
detailListURL:'AsnDet/base',//明细-列表,
masterId:'asnMstrId',//明细获取主表信息的masterId
masterName:'asnNbr'//明细获取主表信息的title名称
masterName:'asnNbr',//明细获取主表信息的title名称
hasDetail:true,
isMaster:true
}
// 接口看板管理-IncomingData
export const IncomingData = {
baseURL:'IncomingData/base',//主表-列表
detailURL:'app/incoming-data',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-IncomingDataHistory
export const IncomingDataHistory = {
baseURL:'IncomingDataHistory/base',//主表-列表
detailURL:'app/incoming-data-history',//主表-明细 + 明细-查看主表
hasDetail:false
}
@ -45,60 +52,70 @@ export const IncomingDataHistory = {
export const OutgoingData = {
baseURL:'OutgoingData/base',//主表-列表
detailURL:'app/outgoing-data',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-OutgoingDataHistory
export const OutgoingDataHistory = {
baseURL:'OutgoingDataHistory/base',//主表-列表
detailURL:'app/outgoing-data-history',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-MessageReceive
export const MessageReceive = {
baseURL:'MessageReceive/base',//主表-列表
detailURL:'app/message-receive',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-MesProductL7PartsNote
export const MesProductL7PartsNote = {
baseURL:'MesProductL7PartsNote/base',//主表-列表
detailURL:'app/mes-product-l7Parts-note',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-Bom
export const Bom = {
baseURL:'Bom/base',//主表-列表
detailURL:'app/bom',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-CustPart
export const CustPart = {
baseURL:'CustPart/base',//主表-列表
detailURL:'app/cust-part',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-Cust
export const Cust = {
baseURL:'Cust/base',//主表-列表
detailURL:'app/cust',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-Inventory
export const Inventory = {
baseURL:'Inventory/base',//主表-列表
detailURL:'app/inventory',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-Loc
export const Loc = {
baseURL:'Loc/base',//主表-列表
detailURL:'app/loc',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-Part
export const Part = {
baseURL:'Part/base',//主表-列表
detailURL:'app/part',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-PoMstr【主子表】
@ -108,19 +125,23 @@ export const PoMstr = {
// detailInfoName:'asnNbr',//主表-明细查看详情的title名称
detailListURL:'PoDet/base',//明细-列表,
masterId:'poMstrId',//明细获取主表信息的masterId
masterName:'poNbr'//明细获取主表信息的title名称
masterName:'poNbr',//明细获取主表信息的title名称
hasDetail:true,
isMaster:true
}
// 接口看板管理-PrhHist
export const PrhHist = {
baseURL:'PrhHist/base',//主表-列表
detailURL:'app/prh-hist',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-ProdLine
export const ProdLine = {
baseURL:'ProdLine/base',//主表-列表
detailURL:'app/prod-line',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-ReceiptMstr【主子表】
@ -131,6 +152,8 @@ export const ReceiptMstr = {
detailListURL:'ReceiptDet/base',//明细-列表,
masterId:'receiptMstrId',//明细获取主表信息的masterId
// masterName:'receiptMstrAsnNbr'//明细获取主表信息的title名称
hasDetail:true,
isMaster:true
}
// 接口看板管理-ReturnMstr【主子表】
@ -141,23 +164,28 @@ export const ReturnMstr = {
detailListURL:'ReturnDet/base',//明细-列表,
masterId:'returnMstrId',//明细获取主表信息的masterId
// masterName:'returnMstrAsnNbr'//明细获取主表信息的title名称
hasDetail:true,
isMaster:true
}
// 接口看板管理-VendPart
export const VendPart = {
baseURL:'VendPart/base',//主表-列表
detailURL:'app/vend-part',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-Vend
export const Vend = {
baseURL:'Vend/base',//主表-列表
detailURL:'app/vend',//主表-明细 + 明细-查看主表
hasDetail:false
}
// 接口看板管理-SodDet
export const SodDet = {
baseURL:'SodDet/base',//主表-列表
detailURL:'app/sod-det',//主表-明细 + 明细-查看主表
hasDetail:false
}

100
PC/InterFace.Dash/src/utils/index.js

@ -3,6 +3,7 @@
*/
import {fileStorage, getPageList } from '@/api/wms-api'
import store from '@/store'
import i18n from "@/lang"
/**
* @param {string} url
@ -428,4 +429,101 @@ export function firstWordSizeChange (str,type='Lower') {
return str.substring(0,1).toUpperCase() + str.substring(1,str.length);
}
}
}
// get-dto-column-type接口表头类型初始化
export function initApiColumnsForDto (list,titleName,that) {
let data = that.$store.getters.dtoColumnTypes
let _coloums = data[titleName].S
let _Columns_Table = []
if(_coloums){
let _data = _coloums.dtoList
_data.forEach(item=>{
// 如果list接口存在数据 ,与list接口返回字段比较处理,list接口存在的话则追加
let _if = firstWordSizeChange(item.name) != 'details'
if(list){
_if = firstWordSizeChange(item.name) in list && firstWordSizeChange(item.name) != 'details'
}
if(_if){
_Columns_Table.push(item)
}
})
}
if(list){
_Columns_Table = _Columns_Table.concat(specialAddColumns(list,titleName))
}
return _Columns_Table
}
// 特殊字段转义处理(api中没有的字段特殊处理)
export function specialAddColumns(list,titleName){
let _apiName = titleName
let _special_list=[]
// creationTime
if('creationTime' in list){
_special_list.push(
{
"name": "CreationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'CreationTime',
"label": zhApiColumnsLable(_apiName + 'CreationTime') || i18n.t('columNames.CreationTime'),
"prop": "creationTime",
}
)
}
// creatorId
if('creatorId' in list){
_special_list.push(
{
"name": "CreatorId",
"apiBaseType": "string",
"baseApiName": _apiName + 'CreatorId',
"label": zhApiColumnsLable(_apiName + 'CreatorId') || i18n.t('columNames.CreatorId'),
"prop": "creatorId",
}
)
}
// lastModificationTime
if('lastModificationTime' in list){
_special_list.push(
{
"name": "LastModificationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'LastModificationTime',
"label": zhApiColumnsLable(_apiName + 'LastModificationTime') || i18n.t('columNames.LastModificationTime'),
"prop": "lastModificationTime",
}
)
}
// lastModifierId
if('lastModifierId' in list){
_special_list.push(
{
"name": "LastModifierId",
"apiBaseType": "string",
"baseApiName": _apiName + 'LastModifierId',
"label": zhApiColumnsLable(_apiName + 'LastModifierId') || i18n.t('columNames.LastModifierId'),
"prop": "lastModifierId",
}
)
}
// tenantId
if('tenantId' in list){
_special_list.push(
{
"name": "TenantId",
"apiBaseType": "string",
"baseApiName": _apiName + 'TenantId',
"label": zhApiColumnsLable(_apiName + 'TenantId') || i18n.t('columNames.TenantId'),
"prop": "tenantId",
}
)
}
return _special_list
}
// 从字段中删除最后某字段
export function sliceStrEndDelete(str,deleteStr){
let _d_l = str.length - deleteStr.length
return str.slice(0,_d_l)
}

26
PC/UI.WinIn.FasterZ.Inventory/README.md

@ -123,4 +123,28 @@ validType type仅等于input时:实时keyUp校验,类型如下:
pointNumberFixed 组合上方validType值仅等于pointNumber时:
小数点后方保留位数,如不填写默认为100位
<validType>+<pointNumberFixed>示例:
{ type:"input", label:"金额", prop:"money", validType:'pointNumber',pointNumberFixed:2},
{ type:"input", label:"金额", prop:"money", validType:'pointNumber',pointNumberFixed:2},
[urlOpion示例]
// 添加页面需要配置位置
// 示例数据
export const TestSchool = {
baseURL:'TestSchool/base',//主表-列表
detailURL:'app/test-school',//主表-明细 + 明细-查看主表
// detailInfoName:'asnNbr',//主表-明细查看详情的title名称
detailListURL:'TestStudentDetail/base',//明细-列表,
masterId:'masterId',//明细获取主表信息的masterId,默认依次为[默认配置defalutMasterId,固定值masterId]
masterName:'studentName'//明细获取主表信息的title名称
// parentURL:null,//明细-查看主表:特殊接口,如果没有则走detailURL
// deleteURL:null,//删除特殊URL
// addURL:null,//新增特殊URL
// editURL:null,//编辑特殊URL
// exportURL:'exportURL',//导出特殊URL
<!-- 20231124 有主表的子列表 查看详情的主表信息处理 -->
//有主表的子表单页的主表信息接口,默认为当前的[detailURL]去掉[-Detail]
// mainShowMasterUrl:null,
//有主表的子表单页的主表链接参数,默认依次为[默认配置defalutMasterId,上方配置中masterId,固定值masterId]
// mainShowMasterId:'masterId',
//有主表的子表单页的主表路由[用于显示列转义],默认为[当前路由]去掉[Detail]
// masterRoute:null,
}

54
PC/UI.WinIn.FasterZ.Inventory/src/components/commonTabel-drawer/index.vue

@ -49,6 +49,7 @@
@handleClick="handleClick"
>
<template slot-scope="scope">
<!-- 详情 -->
<curren-descriptions
border
v-if="scope.value == 'xq'"
@ -59,6 +60,17 @@
:propsData="propsData"
>
</curren-descriptions>
<!-- 主表信息 -->
<curren-descriptions
border
v-if="scope.value == 'masterInfo'"
:column="column"
:direction="direction"
:colon="false"
:tabsDesTions="masterColums"
:propsData="propsData.masterInfo"
>
</curren-descriptions>
<!-- 明细 包含分页 头部按钮等 -->
<tablePagination
ref="tablePaginationForMX_Ref"
@ -104,11 +116,12 @@
</template>
</umyTable>
<!-- 自定义扩展 -->
<umyTable
<!-- <umyTable
v-if="
scope.value == zdyValue &&
scope.value != 'xq' &&
scope.value != 'mx' &&
scope.value != 'masterInfo' &&
scope.value != 'hz' &&
scope.value != 'zwlcj'
"
@ -127,7 +140,7 @@
<template>
<slot></slot>
</template>
</umyTable>
</umyTable> -->
</template>
</curren-tabs>
</div>
@ -171,6 +184,10 @@ import pagination from "@/components/Pagination"
import rowDrop from "@/components/rowDrop/index.vue"
import * as allUrlOption from '@/utils/baseData/urlOption'
import { LoadingMixins } from "@/mixins/LoadingMixins";
import {
initApiColumnsForDto,
sliceStrEndDelete
} from '@/utils/index'
export default {
name: 'currenTabel-drawer',
components: {
@ -309,7 +326,8 @@ export default {
// tabs
if (this.dropdownTabsData.length !== 0) {
return this.dropdownTabsData
} else {
}
else {
//
// if (Object.keys(this.propsData).length != 0) {
if (Object.keys(this.propsData)) {
@ -317,6 +335,14 @@ export default {
label: "详情",
name: 'xq'
}]
if(this.propsData.masterInfo && this.propsData.masterInfo.length > 0){
this.initDropdownTabsData.push({
label: "主表信息",
name: 'masterInfo'
})
let _master_name = this.URLOption.masterRoute || sliceStrEndDelete(this.$route.name,'Detail')
this.masterColums = initApiColumnsForDto(this.propsData.masterInfo,_master_name,this)
}
// 使
if(this.propsData.details){
this.initDropdownTabsData.push({
@ -343,9 +369,9 @@ export default {
detailHeaderButton:null,//-
detailInfoTableData:null,//-
detailInfoTitle:null,//-title
otherData:[], // tabs
zdyTableColumns:[], //
zdyValue:'', //
// otherData:[], // tabs
// zdyTableColumns:[], //
// zdyValue:'', //
// firstTabs:'xq',
initDropdownTabsData:[
{
@ -375,10 +401,14 @@ export default {
MaxResultCount: 20,
},
totalCountForDetail:0,
//-id
URLOption:allUrlOption[this.$route.name],
//-id
URLOption_masterId:allUrlOption[this.$route.name].masterId || 'masterId',
URLOption_masterId:allUrlOption[this.$route.name].masterId || allUrlOption.defalutMasterId || 'masterId',
//-
URLOption_detailList:allUrlOption[this.$route.name].detailListURL,
//
masterColums:null
}
},
methods: {
@ -574,7 +604,7 @@ export default {
// tabs
handleClick (val) {
this.$emit("currenTabsChange", val);//tab
this.zdyValue = val.name
// this.zdyValue = val.name
this.dropdownTabsData.forEach( item => {
if (item.name == val.name) {
let parent = this.$parent
@ -582,12 +612,12 @@ export default {
//
parent.firstTabs = val.name
if (val.name == 'xq' || val.name == 'mx' || val.name == 'hz') {
this.zdyTableColumns = []
this.otherData = []
// this.zdyTableColumns = []
// this.otherData = []
parent.tableLoading = false
} else {
this.zdyTableColumns = []
this.otherData = []
// this.zdyTableColumns = []
// this.otherData = []
// this.firstTabs = val.name
// tab
// if (item.functionName == 'getListByItemcode') {

405
PC/UI.WinIn.FasterZ.Inventory/src/components/filterForDetailPage/index.vue

@ -120,219 +120,216 @@
</el-table> -->
</el-dialog>
</div>
</template>
<script>
import currenDescriptions from "@/components/currenDescriptions"
import { tableMixins } from "@/mixins/TableMixins";
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins";
import { LoadingMixins } from "@/mixins/LoadingMixins";
import { mixins } from "@/mixins/mixins";
import { filterSelectMixins } from '@/mixins/filter-Select'
import {getListDesById,getPageListForDetail} from "@/api/wms-api"
export default {
name: 'filterForDetailPage',
mixins: [
tableMixins,
TableHeaderMixins,
mixins,
filterSelectMixins,
LoadingMixins
],
components:{
currenDescriptions
},
props: {
// app-main100%
setUTableHeight: {
type: Number,
default: 340
},
//
isShowIndex:{
type: Boolean,
default: false
},
//
tableSelection: {
type: Boolean,
default: false
},
cellStyle: {
type: Function,
default: () => {
return Function;
}
},
//
showOverflowTooltip:{
type: Boolean,
default: false,
},
// api
DeleteApi: {
type: String,
default: null
},
// -
parentColumns:{
type: Array,
default: null
},
showHandleButtons:{
type:Array,
default:() => {
//'add','edit' 'delete'
// showParentfreshfilterfield
return ['showParent','fresh','filter','field'];
}
},
// 2
column: {
</template>
<script>
import currenDescriptions from "@/components/currenDescriptions"
import { tableMixins } from "@/mixins/TableMixins";
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins";
import { LoadingMixins } from "@/mixins/LoadingMixins";
import { mixins } from "@/mixins/mixins";
import { filterSelectMixins } from '@/mixins/filter-Select'
import {getListDesById,getPageListForDetail} from "@/api/wms-api"
import { initApiColumnsForDto } from '@/utils/index'
export default {
name: 'filterForDetailPage',
mixins: [
tableMixins,
TableHeaderMixins,
mixins,
filterSelectMixins,
LoadingMixins
],
components:{
currenDescriptions
},
props: {
// app-main100%
setUTableHeight: {
type: Number,
default: 2
},
//
direction: {
default: 340
},
//
isShowIndex:{
type: Boolean,
default: false
},
//
tableSelection: {
type: Boolean,
default: false
},
cellStyle: {
type: Function,
default: () => {
return Function;
}
},
//
showOverflowTooltip:{
type: Boolean,
default: false,
},
// api
DeleteApi: {
type: String,
default: 'horizontal'
},
rowMaxHeight:{
type:String,
default:'calc(90vh - 450px)'
},
default: null
},
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:[],//
showParentDialog:false,//
showParentTitle:null,//-title
showParentTableData:null,//-
showParentLoading:false,//-
listColumns:[],//
// -
parentColumns:{
type: Array,
default: null
},
showHandleButtons:{
type:Array,
default:() => {
//'add','edit' 'delete'
// showParentfreshfilterfield
return ['showParent','fresh','filter','field'];
}
},
activated(){
//
// 2
column: {
type: Number,
default: 2
},
//
direction: {
type: String,
default: 'horizontal'
},
rowMaxHeight:{
type:String,
default:'calc(90vh - 450px)'
},
},
data () {
return {
dialogShow:true,
currenButtonData: [],//
operaButtons:[],//
showParentDialog:false,//
showParentTitle:null,//-title
showParentTableData:null,//-
showParentLoading:false,//-
listColumns:[],//
}
},
activated(){
//
this.dialogShow = false
this.$nextTick(() => {
this.dialogShow = true
});
},
mounted(){
this.paging()
this.initHandleButtons()
},
methods: {
rowDropForDetail(data,type){
this.listColumns = data
this.$emit("rowDropForDetail", data,type)
},
//
initHandleButtons(){
//
let _arr_header = []
if(this.showHandleButtons.indexOf('add') >= 0){_arr_header.push(this.defaultAddBtn())}
if(this.showHandleButtons.indexOf('field') >= 0){_arr_header.push(this.defaultFieldSettingBtn())}
if(this.showHandleButtons.indexOf('fresh') >= 0){_arr_header.push(this.defaultFreshBtn())}
if(this.showHandleButtons.indexOf('filter') >= 0){_arr_header.push(this.defaultFilterBtn())}
this.currenButtonData = _arr_header
//
let _arr_op = []
if(this.showHandleButtons.indexOf('edit') >= 0){_arr_op.push('edit')}
if(this.showHandleButtons.indexOf('delete') >= 0){_arr_op.push('delete')}
if(this.showHandleButtons.indexOf('showParent') >= 0){_arr_op.push('showParent')}
this.operaButtons = _arr_op
},
//
closeDialog(data){
this.dialogShow = false
this.$nextTick(() => {
this.dialogShow = true
});
this.$emit("closeDialog", data)
},
//
paging(callback){
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount
getPageListForDetail(this.PageListParams,this.URLOption_detailList)
.then(res=>{
//
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
let _Columns = initApiColumnsForDto(res.items[0],_parentName,this)
this.listColumns = this.initTableColumns(_Columns,'detailPage_api')
//
if(res){
this.Loading.tableLoading = false
this.tableData = []
res.items.forEach(item=>{
item.deleteTipVisible = false
this.tableData.push(item)
})
this.totalCount = res.totalCount
}
this.pagingCallback(callback)
})
.catch(err=>{
this.Loading.tableLoading = false
this.$message.error("数据获取失败")
})
},
mounted(){
this.paging()
this.initHandleButtons()
//
showParentHandleForDetail(data){
this.showParentTitle = `${data[this.URLOption_masterName] || ''} 主表信息`
this.showParentDialog = true
this.showParentLoading = true
getListDesById(this.URLOption_parent,data[this.URLOption_masterId])
.then(res => {
this.showParentTableData = res
this.showParentLoading = false
})
.catch(err => {
this.showParentLoading = false
this.$message.error("主表信息获取失败!")
})
},
methods: {
rowDropForDetail(data,type){
this.listColumns = data
this.$emit("rowDropForDetail", data,type)
},
//
initHandleButtons(){
//
let _arr_header = []
if(this.showHandleButtons.indexOf('add') >= 0){_arr_header.push(this.defaultAddBtn())}
if(this.showHandleButtons.indexOf('field') >= 0){_arr_header.push(this.defaultFieldSettingBtn())}
if(this.showHandleButtons.indexOf('fresh') >= 0){_arr_header.push(this.defaultFreshBtn())}
if(this.showHandleButtons.indexOf('filter') >= 0){_arr_header.push(this.defaultFilterBtn())}
this.currenButtonData = _arr_header
//
editHandleForDetail(data){
console.log(data)
},
//
deleteHandleForDetail(data){
this.Loading.appMainLoading = true
data.deleteTipVisible = false
// interfaceApi[this.DeleteApi](data.id).then(res => {
// this.$successMsg('!')
// this.oldSkipCount = 1
// this.Loading.appMainLoading = false
// this.paging()
// }).catch(err => {
// this.Loading.appMainLoading = false
// this.$message.error("!")
// })
},
}
}
</script>
<style lang="scss">
.filterForDetailPage {
//
let _arr_op = []
if(this.showHandleButtons.indexOf('edit') >= 0){_arr_op.push('edit')}
if(this.showHandleButtons.indexOf('delete') >= 0){_arr_op.push('delete')}
if(this.showHandleButtons.indexOf('showParent') >= 0){_arr_op.push('showParent')}
this.operaButtons = _arr_op
},
//
closeDialog(data){
this.dialogShow = false
this.$emit("closeDialog", data)
},
//
paging(callback){
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount
getPageListForDetail(this.PageListParams,this.URLOption_detailList)
.then(res=>{
//
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
let _Columns = this.initApiColumnsForDto(res.items[0],_parentName)
this.listColumns = this.initTableColumns(_Columns,'detailPage_api')
//
if(res){
this.Loading.tableLoading = false
this.tableData = []
res.items.forEach(item=>{
item.deleteTipVisible = false
this.tableData.push(item)
})
this.totalCount = res.totalCount
}
this.pagingCallback(callback)
})
.catch(err=>{
this.Loading.tableLoading = false
this.$message.error("数据获取失败")
})
},
//
showParentHandleForDetail(data){
this.showParentTitle = `${data[this.URLOption_masterName] || ''} 主表信息`
this.showParentDialog = true
this.showParentLoading = true
getListDesById(this.URLOption_parent,data[this.URLOption_masterId])
.then(res => {
this.showParentTableData = res
this.showParentLoading = false
})
.catch(err => {
this.showParentLoading = false
this.$message.error("主表信息获取失败!")
})
},
//
editHandleForDetail(data){
console.log(data)
},
//
deleteHandleForDetail(data){
this.Loading.appMainLoading = true
data.deleteTipVisible = false
// interfaceApi[this.DeleteApi](data.id).then(res => {
// this.$successMsg('!')
// this.oldSkipCount = 1
// this.Loading.appMainLoading = false
// this.paging()
// }).catch(err => {
// this.Loading.appMainLoading = false
// this.$message.error("!")
// })
},
.mainTable-dialog{
.el-dialog{
height: calc(100% - 100px);
}
}
</script>
<style lang="scss">
.filterForDetailPage {
.mainTable-dialog{
.el-dialog{
height: calc(100% - 100px);
}
}
.el-dialog__body{
min-height: 200px;
padding-bottom: 20px !important;
}
}
.filterForDetailPage-list{
height: calc(100%);
overflow: auto;
.el-dialog__body{
min-height: 200px;
padding-bottom: 20px !important;
}
}
</style>
.filterForDetailPage-list{
height: calc(100%);
overflow: auto;
}
</style>

184
PC/UI.WinIn.FasterZ.Inventory/src/mixins/TableMixins.js

@ -1,11 +1,13 @@
import i18n from "@/lang"
import {
getPageList,
getDetailed,
postDelete,
ApiTypeDelete
} from '@/api/wms-api'
import { zhApiColumnsLable,firstWordSizeChange } from '@/utils/index'
import {
initApiColumnsForDto,
sliceStrEndDelete
} from '@/utils/index'
export const tableMixins = {
data() {
return {
@ -103,9 +105,22 @@ export const tableMixins = {
}
// 编辑 api
else if (item.name == "editFromApi") {
this.addEditApiType = 'edit'
this.editFromApiRowData = row
this.displayDialog.addEditApiDialog = true;
// this.addEditApiType = 'edit'
// this.editFromApiRowData = row
// this.displayDialog.addEditApiDialog = true;
let _url = this.URLOption_detail ? this.URLOption_detail : this.URLOption_base
this.Loading.tableLoading = true
getDetailed(row.id, _url)
.then(res=>{
this.addEditApiType = 'edit'
this.editFromApiRowData = res
this.displayDialog.addEditApiDialog = true;
this.Loading.tableLoading = false
})
.catch(err=>{
this.Loading.tableLoading = false
})
}
// 删除
else if (item.name == "delete"){
@ -158,95 +173,6 @@ export const tableMixins = {
// if(detailsTable && detailsTable[this.$route.name])this.apiColumns_DetailsTable = this.initTableColumns(detailsTable[this.$route.name],'detail_api')
// if(detailsPage && detailsPage[this.$route.name])this.apiColumns_DetailsPage = this.initTableColumns(detailsPage[this.$route.name],'detailPage_api')
// },
// get-dto-column-type接口表头类型初始化
initApiColumnsForDto(list,titleName){
let data = this.$store.getters.dtoColumnTypes
let _coloums = data[titleName].S
let _Columns_Table = []
if(_coloums){
let _data = _coloums.dtoList
_data.forEach(item=>{
// 如果list接口存在数据 ,与list接口返回字段比较处理,list接口存在的话则追加
let _if = firstWordSizeChange(item.name) != 'details'
if(list){
_if = firstWordSizeChange(item.name) in list && firstWordSizeChange(item.name) != 'details'
}
if(_if){
_Columns_Table.push(item)
}
})
}
if(list){
_Columns_Table = _Columns_Table.concat(this.specialAddColumns(list,titleName))
}
return _Columns_Table
},
// 添加特殊字段(api中没有的字段特殊处理)
specialAddColumns(list,titleName){
let _apiName = titleName
let _special_list=[]
// creationTime
if('creationTime' in list){
_special_list.push(
{
"name": "CreationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'CreationTime',
"label": zhApiColumnsLable(_apiName + 'CreationTime') || i18n.t('columNames.CreationTime'),
"prop": "creationTime",
}
)
}
// creatorId
if('creatorId' in list){
_special_list.push(
{
"name": "CreatorId",
"apiBaseType": "string",
"baseApiName": _apiName + 'CreatorId',
"label": zhApiColumnsLable(_apiName + 'CreatorId') || i18n.t('columNames.CreatorId'),
"prop": "creatorId",
}
)
}
// lastModificationTime
if('lastModificationTime' in list){
_special_list.push(
{
"name": "LastModificationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'LastModificationTime',
"label": zhApiColumnsLable(_apiName + 'LastModificationTime') || i18n.t('columNames.LastModificationTime'),
"prop": "lastModificationTime",
}
)
}
// lastModifierId
if('lastModifierId' in list){
_special_list.push(
{
"name": "LastModifierId",
"apiBaseType": "string",
"baseApiName": _apiName + 'LastModifierId',
"label": zhApiColumnsLable(_apiName + 'LastModifierId') || i18n.t('columNames.LastModifierId'),
"prop": "lastModifierId",
}
)
}
// tenantId
if('tenantId' in list){
_special_list.push(
{
"name": "TenantId",
"apiBaseType": "string",
"baseApiName": _apiName + 'TenantId',
"label": zhApiColumnsLable(_apiName + 'TenantId') || i18n.t('columNames.TenantId'),
"prop": "tenantId",
}
)
}
return _special_list
},
//渲染数据
paging(callback,repeat) {
this.Loading.tableLoading = true;
@ -255,7 +181,7 @@ export const tableMixins = {
.then(res=>{
// 表头处理
let _list = res.items && res.items.length > 0 ? res.items[0] : null
let _Columns = this.initApiColumnsForDto(_list,this.$route.name)
let _Columns = initApiColumnsForDto(_list,this.$route.name,this)
this.apiColumns_Table = this.initTableColumns(_Columns)
this.apiColumns_DesTions = _Columns
// 页面数据处理
@ -312,30 +238,54 @@ export const tableMixins = {
this.Loading.DrawerLoading = true
this.displayDialog.detailsDialog = true;
let _url = this.URLOption_detail ? this.URLOption_detail : this.URLOption_base
getDetailed(val.id, _url)
.then(res=>{
// 打印使用的全部数据存储
this.tableDataDetails = JSON.parse(JSON.stringify(res))
// 数据处理
this.propsData = res
if (res.details) {
// 表头处理
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
this.apiColumns_DetailsTable = this.initTableColumns(this.initApiColumnsForDto(res.details[0],_parentName),'detail_api')
if(this.$refs.currenDrawer_Ref){
this.$refs.currenDrawer_Ref.getDetailList(res,()=>{
this.inlineDialogCallback()
},()=>{
this.Loading.DrawerLoading = false
})
}
}else{
this.Loading.DrawerLoading = false
}
})
.catch(err=>{
// 有主表信息子表(表头处理)
if(!this.URLOption.isMaster && this.URLOption.hasDetail){
let _showMasterUrl = this.URLOption.mainShowMasterUrl
if(!this.URLOption.mainShowMasterUrl){
_showMasterUrl = sliceStrEndDelete(this.URLOption_detail,'-Detail')
}
Promise.all([
getDetailed(val.id, _url),
getDetailed(val[this.URLOption.mainShowMasterId || this.URLOption.masterId || this.allUrlOption.defalutMasterId || 'masterId'], _showMasterUrl)
]).then((res) => {
let _allRes = JSON.parse(JSON.stringify(res[0]))
_allRes.masterInfo = res[1]
this.initInlineHttpBack(_allRes)
}).catch(()=>{
this.Loading.DrawerLoading = false
})
}
// 没有主表信息
else{
getDetailed(val.id, _url)
.then(res=>{
this.initInlineHttpBack(res)
})
.catch(err=>{
this.Loading.DrawerLoading = false
})
}
},
// 查看详情获取返回值后处理
initInlineHttpBack(res){
// 打印使用的全部数据存储
this.tableDataDetails = JSON.parse(JSON.stringify(res))
// 数据处理
this.propsData = res
if (res.details) {
// 表头处理
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
this.apiColumns_DetailsTable = this.initTableColumns(initApiColumnsForDto(res.details[0],_parentName,this),'detail_api')
if(this.$refs.currenDrawer_Ref){
this.$refs.currenDrawer_Ref.getDetailList(res,()=>{
this.inlineDialogCallback()
},()=>{
this.Loading.DrawerLoading = false
})
}
}else{
this.Loading.DrawerLoading = false
}
},
// 前端分页处理
// detailListPageFromFE(data){

6
PC/UI.WinIn.FasterZ.Inventory/src/mixins/mixins.js

@ -8,6 +8,9 @@ import { getLoginName } from "@/utils/auth"
export const mixins = {
data() {
return {
allUrlOption:allUrlOption,
// 当前路由配置
URLOption:allUrlOption[this.$route.name],
//主表-列表
URLOption_base:allUrlOption[this.$route.name].baseURL,
//主表-明细
@ -23,7 +26,7 @@ export const mixins = {
//明细-查看主表
URLOption_parent:allUrlOption[this.$route.name].parentURL ? allUrlOption[this.$route.name].parentURL : allUrlOption[this.$route.name].detailURL,
//明细-查看主表的连接id
URLOption_masterId:allUrlOption[this.$route.name].masterId || 'masterId',
URLOption_masterId:allUrlOption[this.$route.name].masterId || allUrlOption.defalutMasterId || 'masterId',
//明细-查看主表的连接title名称
URLOption_masterName:allUrlOption[this.$route.name].masterName,
// 列表-明细-查看详情标题名称
@ -65,7 +68,6 @@ export const mixins = {
name: "determine"
},
],
addEditApiType: null,//Api新增编辑方式(add,edit)
editFromApiRowData:null,//Api编辑方式的默认值
}

17
PC/UI.WinIn.FasterZ.Inventory/src/utils/baseData/urlOption.js

@ -1,3 +1,6 @@
// 默认配置
export const defalutMasterId = 'masterID'
// 示例数据
export const TestSchool = {
baseURL:'TestSchool/base',//主表-列表
@ -17,58 +20,70 @@ export const TestSchool = {
export const ExportCustomUserSetting = {
baseURL:'ExportCustomUserSetting/base',//主表-列表
detailURL:'app/export-custom-user-setting',//主表-明细 + 明细-查看主表
hasDetail:false,
}
export const Container = {
baseURL:'Container/base',//主表-列表
detailURL:'app/container',//主表-明细 + 明细-查看主表
detailListURL:'ContainerDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const ContainerDetail = {
baseURL:'ContainerDetail/base',//主表-列表
detailURL:'app/container-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const ErpInventoryBalance = {
baseURL:'ErpInventoryBalance/base',//主表-列表
detailURL:'app/erp-inventory-balance',//主表-明细 + 明细-查看主表
hasDetail:false,
}
export const InventoryBalance = {
baseURL:'InventoryBalance/base',//主表-列表
detailURL:'app/inventory-balance',//主表-明细 + 明细-查看主表
hasDetail:false,
}
export const InventoryOccupied = {
baseURL:'InventoryOccupied/base',//主表-列表
detailURL:'app/inventory-occupied',//主表-明细 + 明细-查看主表
hasDetail:false,
}
export const InventoryPredictable = {
baseURL:'InventoryPredictable/base',//主表-列表
detailURL:'app/inventory-predictable',//主表-明细 + 明细-查看主表
hasDetail:false,
}
export const InventorySnapshot = {
baseURL:'InventorySnapshot/base',//主表-列表
detailURL:'app/inventory-snapshot',//主表-明细 + 明细-查看主表
hasDetail:false,
}
export const InventoryTransaction = {
baseURL:'InventoryTransaction/base',//主表-列表
detailURL:'app/inventory-transaction',//主表-明细 + 明细-查看主表
hasDetail:false,
}
export const InventoryTransferLog = {
baseURL:'InventoryTransferLog/base',//主表-列表
detailURL:'app/inventory-transfer-log',//主表-明细 + 明细-查看主表
hasDetail:false,
}
export const LocationCapacity = {
baseURL:'LocationCapacity/base',//主表-列表
detailURL:'app/location-capacity',//主表-明细 + 明细-查看主表
hasDetail:false,
}

230
PC/UI.WinIn.FasterZ.Inventory/src/utils/index.js

@ -3,11 +3,12 @@
*/
import {fileStorage, getPageList } from '@/api/wms-api'
import store from '@/store'
import i18n from "@/lang"
/**
* @param {string} url
* @returns {Object}
*/
* @param {string} url
* @returns {Object}
*/
export function getQueryObject(url) {
url = url == null ? window.location.href : url
const search = url.substring(url.lastIndexOf('?') + 1)
@ -25,9 +26,9 @@
// 返回utf8字符串的字节长度
/**
* @param {string} input value
* @returns {number} output value
*/
* @param {string} input value
* @returns {number} output value
*/
export function byteLength(str) {
// returns the byte length of an utf8 string
let s = str.length
@ -41,9 +42,9 @@
}
/**
* @param {Array} actual
* @returns {Array}
*/
* @param {Array} actual
* @returns {Array}
*/
export function cleanArray(actual) {
const newArray = []
for (let i = 0; i < actual.length; i++) {
@ -55,9 +56,9 @@
}
/**
* @param {Object} json
* @returns {Array}
*/
* @param {Object} json
* @returns {Array}
*/
export function param(json) {
if (!json) return ''
return cleanArray(
@ -69,9 +70,9 @@
}
/**
* @param {string} url
* @returns {Object}
*/
* @param {string} url
* @returns {Object}
*/
export function param2Obj(url) {
const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
if (!search) {
@ -91,9 +92,9 @@
}
/**
* @param {string} val
* @returns {string}
*/
* @param {string} val
* @returns {string}
*/
export function html2Text(val) {
const div = document.createElement('div')
div.innerHTML = val
@ -101,11 +102,11 @@
}
/**
* Merges two objects, giving the last one precedence
* @param {Object} target
* @param {(Object|Array)} source
* @returns {Object}
*/
* Merges two objects, giving the last one precedence
* @param {Object} target
* @param {(Object|Array)} source
* @returns {Object}
*/
export function objectMerge(target, source) {
if (typeof target !== 'object') {
target = {}
@ -125,9 +126,9 @@
}
/**
* @param {HTMLElement} element
* @param {string} className
*/
* @param {HTMLElement} element
* @param {string} className
*/
// export function toggleClass(element, className) {
// if (!element || !className) {
// return
@ -145,11 +146,11 @@
// }
/**
* @param {Function} func
* @param {number} wait
* @param {boolean} immediate
* @return {*}
*/
* @param {Function} func
* @param {number} wait
* @param {boolean} immediate
* @return {*}
*/
export function debounce(func, wait, immediate) {
let timeout, args, context, timestamp, result
// console.log('我在防抖函数里面')
@ -186,12 +187,12 @@
}
/**
* This is just a simple version of deep copy
* Has a lot of edge cases bug
* If you want to use a perfect deep copy, use lodash's _.cloneDeep
* @param {Object} source
* @returns {Object}
*/
* This is just a simple version of deep copy
* Has a lot of edge cases bug
* If you want to use a perfect deep copy, use lodash's _.cloneDeep
* @param {Object} source
* @returns {Object}
*/
export function deepClone(source) {
if (!source && typeof source !== 'object') {
throw new Error('error arguments', 'deepClone')
@ -208,16 +209,16 @@
}
/**
* @param {Array} arr
* @returns {Array}
*/
* @param {Array} arr
* @returns {Array}
*/
export function uniqueArr(arr) {
return Array.from(new Set(arr))
}
/**
* @returns {string}
*/
* @returns {string}
*/
export function createUniqueString() {
const timestamp = +new Date() + ''
const randomNum = parseInt((1 + Math.random()) * 65536) + ''
@ -225,29 +226,29 @@
}
/**
* Check if an element has a class
* @param {HTMLElement} elm
* @param {string} cls
* @returns {boolean}
*/
* Check if an element has a class
* @param {HTMLElement} elm
* @param {string} cls
* @returns {boolean}
*/
export function hasClass(ele, cls) {
return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
}
/**
* Add class to element
* @param {HTMLElement} elm
* @param {string} cls
*/
* Add class to element
* @param {HTMLElement} elm
* @param {string} cls
*/
export function addClass(ele, cls) {
if (!hasClass(ele, cls)) ele.className += ' ' + cls
}
/**
* Remove class from element
* @param {HTMLElement} elm
* @param {string} cls
*/
* Remove class from element
* @param {HTMLElement} elm
* @param {string} cls
*/
export function removeClass(ele, cls) {
if (hasClass(ele, cls)) {
const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
@ -274,10 +275,10 @@
// 判断是否存在某个父级元素,层级不定
/**
* @param {*} obj 当前节点如点击事件返回的e.target
* @param {*} searchName 要查找是否存在的父级节点class
* @returns
*/
* @param {*} obj 当前节点如点击事件返回的e.target
* @param {*} searchName 要查找是否存在的父级节点class
* @returns
*/
export function getParentNode(obj,searchName) {
let node = obj;
let ofDiv = true;
@ -322,11 +323,11 @@
// 匹配正则返回值
/** README.md[:currenForm]
* @param {*} type 需要匹配的正则类型
* @param {*} defaultValue 当前传入值即需要校验值
* @param {*} fixedNum 如果type为pointNumber需要保留小数点后的位数
* @returns
*/
* @param {*} type 需要匹配的正则类型
* @param {*} defaultValue 当前传入值即需要校验值
* @param {*} fixedNum 如果type为pointNumber需要保留小数点后的位数
* @returns
*/
export function getMatchRegConformValue(type,defaultValue,fixedNum){
let value = defaultValue ? String(defaultValue) : ''
let _conformValue = ""
@ -414,8 +415,8 @@
// faster-new
// 转义及读取api接口返回的表头信息
export function zhApiColumnsLable (data,list) {
let _list = list ? list : store.getters.columZHList
return _list ? _list[data] : data
let _list = list ? list : store.getters.columZHList
return _list ? _list[data] : data
}
// 首字母转换 type='Lower'(小写,默认) Upper(大写)
@ -428,4 +429,101 @@
return str.substring(0,1).toUpperCase() + str.substring(1,str.length);
}
}
// get-dto-column-type接口表头类型初始化
export function initApiColumnsForDto (list,titleName,that) {
let data = that.$store.getters.dtoColumnTypes
let _coloums = data[titleName].S
let _Columns_Table = []
if(_coloums){
let _data = _coloums.dtoList
_data.forEach(item=>{
// 如果list接口存在数据 ,与list接口返回字段比较处理,list接口存在的话则追加
let _if = firstWordSizeChange(item.name) != 'details'
if(list){
_if = firstWordSizeChange(item.name) in list && firstWordSizeChange(item.name) != 'details'
}
if(_if){
_Columns_Table.push(item)
}
})
}
if(list){
_Columns_Table = _Columns_Table.concat(specialAddColumns(list,titleName))
}
return _Columns_Table
}
// 特殊字段转义处理(api中没有的字段特殊处理)
export function specialAddColumns(list,titleName){
let _apiName = titleName
let _special_list=[]
// creationTime
if('creationTime' in list){
_special_list.push(
{
"name": "CreationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'CreationTime',
"label": zhApiColumnsLable(_apiName + 'CreationTime') || i18n.t('columNames.CreationTime'),
"prop": "creationTime",
}
)
}
// creatorId
if('creatorId' in list){
_special_list.push(
{
"name": "CreatorId",
"apiBaseType": "string",
"baseApiName": _apiName + 'CreatorId',
"label": zhApiColumnsLable(_apiName + 'CreatorId') || i18n.t('columNames.CreatorId'),
"prop": "creatorId",
}
)
}
// lastModificationTime
if('lastModificationTime' in list){
_special_list.push(
{
"name": "LastModificationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'LastModificationTime',
"label": zhApiColumnsLable(_apiName + 'LastModificationTime') || i18n.t('columNames.LastModificationTime'),
"prop": "lastModificationTime",
}
)
}
// lastModifierId
if('lastModifierId' in list){
_special_list.push(
{
"name": "LastModifierId",
"apiBaseType": "string",
"baseApiName": _apiName + 'LastModifierId',
"label": zhApiColumnsLable(_apiName + 'LastModifierId') || i18n.t('columNames.LastModifierId'),
"prop": "lastModifierId",
}
)
}
// tenantId
if('tenantId' in list){
_special_list.push(
{
"name": "TenantId",
"apiBaseType": "string",
"baseApiName": _apiName + 'TenantId',
"label": zhApiColumnsLable(_apiName + 'TenantId') || i18n.t('columNames.TenantId'),
"prop": "tenantId",
}
)
}
return _special_list
}
// 从字段中删除最后某字段
export function sliceStrEndDelete(str,deleteStr){
let _d_l = str.length - deleteStr.length
return str.slice(0,_d_l)
}

26
PC/UI.WinIn.FasterZ.Job/README.md

@ -123,4 +123,28 @@ validType type仅等于input时:实时keyUp校验,类型如下:
pointNumberFixed 组合上方validType值仅等于pointNumber时:
小数点后方保留位数,如不填写默认为100位
<validType>+<pointNumberFixed>示例:
{ type:"input", label:"金额", prop:"money", validType:'pointNumber',pointNumberFixed:2},
{ type:"input", label:"金额", prop:"money", validType:'pointNumber',pointNumberFixed:2},
[urlOpion示例]
// 添加页面需要配置位置
// 示例数据
export const TestSchool = {
baseURL:'TestSchool/base',//主表-列表
detailURL:'app/test-school',//主表-明细 + 明细-查看主表
// detailInfoName:'asnNbr',//主表-明细查看详情的title名称
detailListURL:'TestStudentDetail/base',//明细-列表,
masterId:'masterId',//明细获取主表信息的masterId,默认依次为[默认配置defalutMasterId,固定值masterId]
masterName:'studentName'//明细获取主表信息的title名称
// parentURL:null,//明细-查看主表:特殊接口,如果没有则走detailURL
// deleteURL:null,//删除特殊URL
// addURL:null,//新增特殊URL
// editURL:null,//编辑特殊URL
// exportURL:'exportURL',//导出特殊URL
<!-- 20231124 有主表的子列表 查看详情的主表信息处理 -->
//有主表的子表单页的主表信息接口,默认为当前的[detailURL]去掉[-Detail]
// mainShowMasterUrl:null,
//有主表的子表单页的主表链接参数,默认依次为[默认配置defalutMasterId,上方配置中masterId,固定值masterId]
// mainShowMasterId:'masterId',
//有主表的子表单页的主表路由[用于显示列转义],默认为[当前路由]去掉[Detail]
// masterRoute:null,
}

54
PC/UI.WinIn.FasterZ.Job/src/components/commonTabel-drawer/index.vue

@ -49,6 +49,7 @@
@handleClick="handleClick"
>
<template slot-scope="scope">
<!-- 详情 -->
<curren-descriptions
border
v-if="scope.value == 'xq'"
@ -59,6 +60,17 @@
:propsData="propsData"
>
</curren-descriptions>
<!-- 主表信息 -->
<curren-descriptions
border
v-if="scope.value == 'masterInfo'"
:column="column"
:direction="direction"
:colon="false"
:tabsDesTions="masterColums"
:propsData="propsData.masterInfo"
>
</curren-descriptions>
<!-- 明细 包含分页 头部按钮等 -->
<tablePagination
ref="tablePaginationForMX_Ref"
@ -104,11 +116,12 @@
</template>
</umyTable>
<!-- 自定义扩展 -->
<umyTable
<!-- <umyTable
v-if="
scope.value == zdyValue &&
scope.value != 'xq' &&
scope.value != 'mx' &&
scope.value != 'masterInfo' &&
scope.value != 'hz' &&
scope.value != 'zwlcj'
"
@ -127,7 +140,7 @@
<template>
<slot></slot>
</template>
</umyTable>
</umyTable> -->
</template>
</curren-tabs>
</div>
@ -171,6 +184,10 @@ import pagination from "@/components/Pagination"
import rowDrop from "@/components/rowDrop/index.vue"
import * as allUrlOption from '@/utils/baseData/urlOption'
import { LoadingMixins } from "@/mixins/LoadingMixins";
import {
initApiColumnsForDto,
sliceStrEndDelete
} from '@/utils/index'
export default {
name: 'currenTabel-drawer',
components: {
@ -309,7 +326,8 @@ export default {
// tabs
if (this.dropdownTabsData.length !== 0) {
return this.dropdownTabsData
} else {
}
else {
//
// if (Object.keys(this.propsData).length != 0) {
if (Object.keys(this.propsData)) {
@ -317,6 +335,14 @@ export default {
label: "详情",
name: 'xq'
}]
if(this.propsData.masterInfo && this.propsData.masterInfo.length > 0){
this.initDropdownTabsData.push({
label: "主表信息",
name: 'masterInfo'
})
let _master_name = this.URLOption.masterRoute || sliceStrEndDelete(this.$route.name,'Detail')
this.masterColums = initApiColumnsForDto(this.propsData.masterInfo,_master_name,this)
}
// 使
if(this.propsData.details){
this.initDropdownTabsData.push({
@ -343,9 +369,9 @@ export default {
detailHeaderButton:null,//-
detailInfoTableData:null,//-
detailInfoTitle:null,//-title
otherData:[], // tabs
zdyTableColumns:[], //
zdyValue:'', //
// otherData:[], // tabs
// zdyTableColumns:[], //
// zdyValue:'', //
// firstTabs:'xq',
initDropdownTabsData:[
{
@ -375,10 +401,14 @@ export default {
MaxResultCount: 20,
},
totalCountForDetail:0,
//-id
URLOption:allUrlOption[this.$route.name],
//-id
URLOption_masterId:allUrlOption[this.$route.name].masterId || 'masterId',
URLOption_masterId:allUrlOption[this.$route.name].masterId || allUrlOption.defalutMasterId || 'masterId',
//-
URLOption_detailList:allUrlOption[this.$route.name].detailListURL,
//
masterColums:null
}
},
methods: {
@ -574,7 +604,7 @@ export default {
// tabs
handleClick (val) {
this.$emit("currenTabsChange", val);//tab
this.zdyValue = val.name
// this.zdyValue = val.name
this.dropdownTabsData.forEach( item => {
if (item.name == val.name) {
let parent = this.$parent
@ -582,12 +612,12 @@ export default {
//
parent.firstTabs = val.name
if (val.name == 'xq' || val.name == 'mx' || val.name == 'hz') {
this.zdyTableColumns = []
this.otherData = []
// this.zdyTableColumns = []
// this.otherData = []
parent.tableLoading = false
} else {
this.zdyTableColumns = []
this.otherData = []
// this.zdyTableColumns = []
// this.otherData = []
// this.firstTabs = val.name
// tab
// if (item.functionName == 'getListByItemcode') {

405
PC/UI.WinIn.FasterZ.Job/src/components/filterForDetailPage/index.vue

@ -120,219 +120,216 @@
</el-table> -->
</el-dialog>
</div>
</template>
<script>
import currenDescriptions from "@/components/currenDescriptions"
import { tableMixins } from "@/mixins/TableMixins";
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins";
import { LoadingMixins } from "@/mixins/LoadingMixins";
import { mixins } from "@/mixins/mixins";
import { filterSelectMixins } from '@/mixins/filter-Select'
import {getListDesById,getPageListForDetail} from "@/api/wms-api"
export default {
name: 'filterForDetailPage',
mixins: [
tableMixins,
TableHeaderMixins,
mixins,
filterSelectMixins,
LoadingMixins
],
components:{
currenDescriptions
},
props: {
// app-main100%
setUTableHeight: {
type: Number,
default: 340
},
//
isShowIndex:{
type: Boolean,
default: false
},
//
tableSelection: {
type: Boolean,
default: false
},
cellStyle: {
type: Function,
default: () => {
return Function;
}
},
//
showOverflowTooltip:{
type: Boolean,
default: false,
},
// api
DeleteApi: {
type: String,
default: null
},
// -
parentColumns:{
type: Array,
default: null
},
showHandleButtons:{
type:Array,
default:() => {
//'add','edit' 'delete'
// showParentfreshfilterfield
return ['showParent','fresh','filter','field'];
}
},
// 2
column: {
</template>
<script>
import currenDescriptions from "@/components/currenDescriptions"
import { tableMixins } from "@/mixins/TableMixins";
import { TableHeaderMixins } from "@/mixins/TableHeaderMixins";
import { LoadingMixins } from "@/mixins/LoadingMixins";
import { mixins } from "@/mixins/mixins";
import { filterSelectMixins } from '@/mixins/filter-Select'
import {getListDesById,getPageListForDetail} from "@/api/wms-api"
import { initApiColumnsForDto } from '@/utils/index'
export default {
name: 'filterForDetailPage',
mixins: [
tableMixins,
TableHeaderMixins,
mixins,
filterSelectMixins,
LoadingMixins
],
components:{
currenDescriptions
},
props: {
// app-main100%
setUTableHeight: {
type: Number,
default: 2
},
//
direction: {
default: 340
},
//
isShowIndex:{
type: Boolean,
default: false
},
//
tableSelection: {
type: Boolean,
default: false
},
cellStyle: {
type: Function,
default: () => {
return Function;
}
},
//
showOverflowTooltip:{
type: Boolean,
default: false,
},
// api
DeleteApi: {
type: String,
default: 'horizontal'
},
rowMaxHeight:{
type:String,
default:'calc(90vh - 450px)'
},
default: null
},
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:[],//
showParentDialog:false,//
showParentTitle:null,//-title
showParentTableData:null,//-
showParentLoading:false,//-
listColumns:[],//
// -
parentColumns:{
type: Array,
default: null
},
showHandleButtons:{
type:Array,
default:() => {
//'add','edit' 'delete'
// showParentfreshfilterfield
return ['showParent','fresh','filter','field'];
}
},
activated(){
//
// 2
column: {
type: Number,
default: 2
},
//
direction: {
type: String,
default: 'horizontal'
},
rowMaxHeight:{
type:String,
default:'calc(90vh - 450px)'
},
},
data () {
return {
dialogShow:true,
currenButtonData: [],//
operaButtons:[],//
showParentDialog:false,//
showParentTitle:null,//-title
showParentTableData:null,//-
showParentLoading:false,//-
listColumns:[],//
}
},
activated(){
//
this.dialogShow = false
this.$nextTick(() => {
this.dialogShow = true
});
},
mounted(){
this.paging()
this.initHandleButtons()
},
methods: {
rowDropForDetail(data,type){
this.listColumns = data
this.$emit("rowDropForDetail", data,type)
},
//
initHandleButtons(){
//
let _arr_header = []
if(this.showHandleButtons.indexOf('add') >= 0){_arr_header.push(this.defaultAddBtn())}
if(this.showHandleButtons.indexOf('field') >= 0){_arr_header.push(this.defaultFieldSettingBtn())}
if(this.showHandleButtons.indexOf('fresh') >= 0){_arr_header.push(this.defaultFreshBtn())}
if(this.showHandleButtons.indexOf('filter') >= 0){_arr_header.push(this.defaultFilterBtn())}
this.currenButtonData = _arr_header
//
let _arr_op = []
if(this.showHandleButtons.indexOf('edit') >= 0){_arr_op.push('edit')}
if(this.showHandleButtons.indexOf('delete') >= 0){_arr_op.push('delete')}
if(this.showHandleButtons.indexOf('showParent') >= 0){_arr_op.push('showParent')}
this.operaButtons = _arr_op
},
//
closeDialog(data){
this.dialogShow = false
this.$nextTick(() => {
this.dialogShow = true
});
this.$emit("closeDialog", data)
},
//
paging(callback){
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount
getPageListForDetail(this.PageListParams,this.URLOption_detailList)
.then(res=>{
//
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
let _Columns = initApiColumnsForDto(res.items[0],_parentName,this)
this.listColumns = this.initTableColumns(_Columns,'detailPage_api')
//
if(res){
this.Loading.tableLoading = false
this.tableData = []
res.items.forEach(item=>{
item.deleteTipVisible = false
this.tableData.push(item)
})
this.totalCount = res.totalCount
}
this.pagingCallback(callback)
})
.catch(err=>{
this.Loading.tableLoading = false
this.$message.error("数据获取失败")
})
},
mounted(){
this.paging()
this.initHandleButtons()
//
showParentHandleForDetail(data){
this.showParentTitle = `${data[this.URLOption_masterName] || ''} 主表信息`
this.showParentDialog = true
this.showParentLoading = true
getListDesById(this.URLOption_parent,data[this.URLOption_masterId])
.then(res => {
this.showParentTableData = res
this.showParentLoading = false
})
.catch(err => {
this.showParentLoading = false
this.$message.error("主表信息获取失败!")
})
},
methods: {
rowDropForDetail(data,type){
this.listColumns = data
this.$emit("rowDropForDetail", data,type)
},
//
initHandleButtons(){
//
let _arr_header = []
if(this.showHandleButtons.indexOf('add') >= 0){_arr_header.push(this.defaultAddBtn())}
if(this.showHandleButtons.indexOf('field') >= 0){_arr_header.push(this.defaultFieldSettingBtn())}
if(this.showHandleButtons.indexOf('fresh') >= 0){_arr_header.push(this.defaultFreshBtn())}
if(this.showHandleButtons.indexOf('filter') >= 0){_arr_header.push(this.defaultFilterBtn())}
this.currenButtonData = _arr_header
//
editHandleForDetail(data){
console.log(data)
},
//
deleteHandleForDetail(data){
this.Loading.appMainLoading = true
data.deleteTipVisible = false
// interfaceApi[this.DeleteApi](data.id).then(res => {
// this.$successMsg('!')
// this.oldSkipCount = 1
// this.Loading.appMainLoading = false
// this.paging()
// }).catch(err => {
// this.Loading.appMainLoading = false
// this.$message.error("!")
// })
},
}
}
</script>
<style lang="scss">
.filterForDetailPage {
//
let _arr_op = []
if(this.showHandleButtons.indexOf('edit') >= 0){_arr_op.push('edit')}
if(this.showHandleButtons.indexOf('delete') >= 0){_arr_op.push('delete')}
if(this.showHandleButtons.indexOf('showParent') >= 0){_arr_op.push('showParent')}
this.operaButtons = _arr_op
},
//
closeDialog(data){
this.dialogShow = false
this.$emit("closeDialog", data)
},
//
paging(callback){
this.Loading.tableLoading = true;
this.PageListParams.SkipCount = (this.oldSkipCount - 1) * this.PageListParams.MaxResultCount
getPageListForDetail(this.PageListParams,this.URLOption_detailList)
.then(res=>{
//
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
let _Columns = this.initApiColumnsForDto(res.items[0],_parentName)
this.listColumns = this.initTableColumns(_Columns,'detailPage_api')
//
if(res){
this.Loading.tableLoading = false
this.tableData = []
res.items.forEach(item=>{
item.deleteTipVisible = false
this.tableData.push(item)
})
this.totalCount = res.totalCount
}
this.pagingCallback(callback)
})
.catch(err=>{
this.Loading.tableLoading = false
this.$message.error("数据获取失败")
})
},
//
showParentHandleForDetail(data){
this.showParentTitle = `${data[this.URLOption_masterName] || ''} 主表信息`
this.showParentDialog = true
this.showParentLoading = true
getListDesById(this.URLOption_parent,data[this.URLOption_masterId])
.then(res => {
this.showParentTableData = res
this.showParentLoading = false
})
.catch(err => {
this.showParentLoading = false
this.$message.error("主表信息获取失败!")
})
},
//
editHandleForDetail(data){
console.log(data)
},
//
deleteHandleForDetail(data){
this.Loading.appMainLoading = true
data.deleteTipVisible = false
// interfaceApi[this.DeleteApi](data.id).then(res => {
// this.$successMsg('!')
// this.oldSkipCount = 1
// this.Loading.appMainLoading = false
// this.paging()
// }).catch(err => {
// this.Loading.appMainLoading = false
// this.$message.error("!")
// })
},
.mainTable-dialog{
.el-dialog{
height: calc(100% - 100px);
}
}
</script>
<style lang="scss">
.filterForDetailPage {
.mainTable-dialog{
.el-dialog{
height: calc(100% - 100px);
}
}
.el-dialog__body{
min-height: 200px;
padding-bottom: 20px !important;
}
}
.filterForDetailPage-list{
height: calc(100%);
overflow: auto;
.el-dialog__body{
min-height: 200px;
padding-bottom: 20px !important;
}
}
</style>
.filterForDetailPage-list{
height: calc(100%);
overflow: auto;
}
</style>

184
PC/UI.WinIn.FasterZ.Job/src/mixins/TableMixins.js

@ -1,11 +1,13 @@
import i18n from "@/lang"
import {
getPageList,
getDetailed,
postDelete,
ApiTypeDelete
} from '@/api/wms-api'
import { zhApiColumnsLable,firstWordSizeChange } from '@/utils/index'
import {
initApiColumnsForDto,
sliceStrEndDelete
} from '@/utils/index'
export const tableMixins = {
data() {
return {
@ -103,9 +105,22 @@ export const tableMixins = {
}
// 编辑 api
else if (item.name == "editFromApi") {
this.addEditApiType = 'edit'
this.editFromApiRowData = row
this.displayDialog.addEditApiDialog = true;
// this.addEditApiType = 'edit'
// this.editFromApiRowData = row
// this.displayDialog.addEditApiDialog = true;
let _url = this.URLOption_detail ? this.URLOption_detail : this.URLOption_base
this.Loading.tableLoading = true
getDetailed(row.id, _url)
.then(res=>{
this.addEditApiType = 'edit'
this.editFromApiRowData = res
this.displayDialog.addEditApiDialog = true;
this.Loading.tableLoading = false
})
.catch(err=>{
this.Loading.tableLoading = false
})
}
// 删除
else if (item.name == "delete"){
@ -158,95 +173,6 @@ export const tableMixins = {
// if(detailsTable && detailsTable[this.$route.name])this.apiColumns_DetailsTable = this.initTableColumns(detailsTable[this.$route.name],'detail_api')
// if(detailsPage && detailsPage[this.$route.name])this.apiColumns_DetailsPage = this.initTableColumns(detailsPage[this.$route.name],'detailPage_api')
// },
// get-dto-column-type接口表头类型初始化
initApiColumnsForDto(list,titleName){
let data = this.$store.getters.dtoColumnTypes
let _coloums = data[titleName].S
let _Columns_Table = []
if(_coloums){
let _data = _coloums.dtoList
_data.forEach(item=>{
// 如果list接口存在数据 ,与list接口返回字段比较处理,list接口存在的话则追加
let _if = firstWordSizeChange(item.name) != 'details'
if(list){
_if = firstWordSizeChange(item.name) in list && firstWordSizeChange(item.name) != 'details'
}
if(_if){
_Columns_Table.push(item)
}
})
}
if(list){
_Columns_Table = _Columns_Table.concat(this.specialAddColumns(list,titleName))
}
return _Columns_Table
},
// 添加特殊字段(api中没有的字段特殊处理)
specialAddColumns(list,titleName){
let _apiName = titleName
let _special_list=[]
// creationTime
if('creationTime' in list){
_special_list.push(
{
"name": "CreationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'CreationTime',
"label": zhApiColumnsLable(_apiName + 'CreationTime') || i18n.t('columNames.CreationTime'),
"prop": "creationTime",
}
)
}
// creatorId
if('creatorId' in list){
_special_list.push(
{
"name": "CreatorId",
"apiBaseType": "string",
"baseApiName": _apiName + 'CreatorId',
"label": zhApiColumnsLable(_apiName + 'CreatorId') || i18n.t('columNames.CreatorId'),
"prop": "creatorId",
}
)
}
// lastModificationTime
if('lastModificationTime' in list){
_special_list.push(
{
"name": "LastModificationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'LastModificationTime',
"label": zhApiColumnsLable(_apiName + 'LastModificationTime') || i18n.t('columNames.LastModificationTime'),
"prop": "lastModificationTime",
}
)
}
// lastModifierId
if('lastModifierId' in list){
_special_list.push(
{
"name": "LastModifierId",
"apiBaseType": "string",
"baseApiName": _apiName + 'LastModifierId',
"label": zhApiColumnsLable(_apiName + 'LastModifierId') || i18n.t('columNames.LastModifierId'),
"prop": "lastModifierId",
}
)
}
// tenantId
if('tenantId' in list){
_special_list.push(
{
"name": "TenantId",
"apiBaseType": "string",
"baseApiName": _apiName + 'TenantId',
"label": zhApiColumnsLable(_apiName + 'TenantId') || i18n.t('columNames.TenantId'),
"prop": "tenantId",
}
)
}
return _special_list
},
//渲染数据
paging(callback,repeat) {
this.Loading.tableLoading = true;
@ -255,7 +181,7 @@ export const tableMixins = {
.then(res=>{
// 表头处理
let _list = res.items && res.items.length > 0 ? res.items[0] : null
let _Columns = this.initApiColumnsForDto(_list,this.$route.name)
let _Columns = initApiColumnsForDto(_list,this.$route.name,this)
this.apiColumns_Table = this.initTableColumns(_Columns)
this.apiColumns_DesTions = _Columns
// 页面数据处理
@ -312,30 +238,54 @@ export const tableMixins = {
this.Loading.DrawerLoading = true
this.displayDialog.detailsDialog = true;
let _url = this.URLOption_detail ? this.URLOption_detail : this.URLOption_base
getDetailed(val.id, _url)
.then(res=>{
// 打印使用的全部数据存储
this.tableDataDetails = JSON.parse(JSON.stringify(res))
// 数据处理
this.propsData = res
if (res.details) {
// 表头处理
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
this.apiColumns_DetailsTable = this.initTableColumns(this.initApiColumnsForDto(res.details[0],_parentName),'detail_api')
if(this.$refs.currenDrawer_Ref){
this.$refs.currenDrawer_Ref.getDetailList(res,()=>{
this.inlineDialogCallback()
},()=>{
this.Loading.DrawerLoading = false
})
}
}else{
this.Loading.DrawerLoading = false
}
})
.catch(err=>{
// 有主表信息子表(表头处理)
if(!this.URLOption.isMaster && this.URLOption.hasDetail){
let _showMasterUrl = this.URLOption.mainShowMasterUrl
if(!this.URLOption.mainShowMasterUrl){
_showMasterUrl = sliceStrEndDelete(this.URLOption_detail,'-Detail')
}
Promise.all([
getDetailed(val.id, _url),
getDetailed(val[this.URLOption.mainShowMasterId || this.URLOption.masterId || this.allUrlOption.defalutMasterId || 'masterId'], _showMasterUrl)
]).then((res) => {
let _allRes = JSON.parse(JSON.stringify(res[0]))
_allRes.masterInfo = res[1]
this.initInlineHttpBack(_allRes)
}).catch(()=>{
this.Loading.DrawerLoading = false
})
}
// 没有主表信息
else{
getDetailed(val.id, _url)
.then(res=>{
this.initInlineHttpBack(res)
})
.catch(err=>{
this.Loading.DrawerLoading = false
})
}
},
// 查看详情获取返回值后处理
initInlineHttpBack(res){
// 打印使用的全部数据存储
this.tableDataDetails = JSON.parse(JSON.stringify(res))
// 数据处理
this.propsData = res
if (res.details) {
// 表头处理
let _parentName = this.URLOption_detailList.substr(0,this.URLOption_detailList.indexOf('/'))
this.apiColumns_DetailsTable = this.initTableColumns(initApiColumnsForDto(res.details[0],_parentName,this),'detail_api')
if(this.$refs.currenDrawer_Ref){
this.$refs.currenDrawer_Ref.getDetailList(res,()=>{
this.inlineDialogCallback()
},()=>{
this.Loading.DrawerLoading = false
})
}
}else{
this.Loading.DrawerLoading = false
}
},
// 前端分页处理
// detailListPageFromFE(data){

6
PC/UI.WinIn.FasterZ.Job/src/mixins/mixins.js

@ -8,6 +8,9 @@ import { getLoginName } from "@/utils/auth"
export const mixins = {
data() {
return {
allUrlOption:allUrlOption,
// 当前路由配置
URLOption:allUrlOption[this.$route.name],
//主表-列表
URLOption_base:allUrlOption[this.$route.name].baseURL,
//主表-明细
@ -23,7 +26,7 @@ export const mixins = {
//明细-查看主表
URLOption_parent:allUrlOption[this.$route.name].parentURL ? allUrlOption[this.$route.name].parentURL : allUrlOption[this.$route.name].detailURL,
//明细-查看主表的连接id
URLOption_masterId:allUrlOption[this.$route.name].masterId || 'masterId',
URLOption_masterId:allUrlOption[this.$route.name].masterId || allUrlOption.defalutMasterId || 'masterId',
//明细-查看主表的连接title名称
URLOption_masterName:allUrlOption[this.$route.name].masterName,
// 列表-明细-查看详情标题名称
@ -65,7 +68,6 @@ export const mixins = {
name: "determine"
},
],
addEditApiType: null,//Api新增编辑方式(add,edit)
editFromApiRowData:null,//Api编辑方式的默认值
}

56
PC/UI.WinIn.FasterZ.Job/src/utils/baseData/urlOption.js

@ -1,3 +1,6 @@
// 默认配置
export const defalutMasterId = 'masterID'
// 示例数据
export const TestSchool = {
baseURL:'TestSchool/base',//主表-列表
@ -17,129 +20,162 @@ export const TestSchool = {
export const ExportCustomUserSetting = {
baseURL:'ExportCustomUserSetting/base',//主表-列表
detailURL:'app/export-custom-user-setting',//主表-明细 + 明细-查看主表
hasDetail:false,
}
export const CheckJob = {
baseURL:'CheckJob/base',//主表-列表
detailURL:'app/check-job',//主表-明细 + 明细-查看主表
detailListURL:'CheckJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const CheckJobDetail = {
baseURL:'CheckJobDetail/base',//主表-列表
detailURL:'app/check-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const CountJob = {
baseURL:'CountJob/base',//主表-列表
detailURL:'app/count-job',//主表-明细 + 明细-查看主表
detailListURL:'CountJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const CountJobDetail = {
baseURL:'CountJobDetail/base',//主表-列表
detailURL:'app/count-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const DeliverJob = {
baseURL:'DeliverJob/base',//主表-列表
detailURL:'app/deliver-job',//主表-明细 + 明细-查看主表
detailListURL:'DeliverJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const DeliverJobDetail = {
baseURL:'DeliverJobDetail/base',//主表-列表
detailURL:'app/deliver-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const InspectJob = {
baseURL:'InspectJob/base',//主表-列表
detailURL:'app/inspect-job',//主表-明细 + 明细-查看主表
detailListURL:'InspectJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const InspectJobDetail = {
baseURL:'InspectJobDetail/base',//主表-列表
detailURL:'app/inspect-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const InspectJobSummaryDetail = {
baseURL:'InspectJobSummaryDetail/base',//主表-列表
detailURL:'app/inspect-job-summary-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const IssueJob = {
baseURL:'IssueJob/base',//主表-列表
detailURL:'app/issue-job',//主表-明细 + 明细-查看主表
detailListURL:'IssueJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const IssueJobDetail = {
baseURL:'IssueJobDetail/base',//主表-列表
detailURL:'app/issue-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const JisDeliverJob = {
baseURL:'JisDeliverJob/base',//主表-列表
detailURL:'app/jis-deliver-job',//主表-明细 + 明细-查看主表
detailListURL:'JisDeliverJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const JisDeliverJobDetail = {
baseURL:'JisDeliverJobDetail/base',//主表-列表
detailURL:'app/jis-deliver-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const ProductReceiveJob = {
baseURL:'ProductReceiveJob/base',//主表-列表
detailURL:'app/product-receive-job',//主表-明细 + 明细-查看主表
detailListURL:'ProductReceiveJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const ProductReceiveJobDetail = {
baseURL:'ProductReceiveJobDetail/base',//主表-列表
detailURL:'app/product-receive-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const PurchaseReceiptJob = {
baseURL:'PurchaseReceiptJob/base',//主表-列表
detailURL:'app/purchase-receipt-job',//主表-明细 + 明细-查看主表
detailListURL:'PurchaseReceiptJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const PurchaseReceiptJobDetail = {
baseURL:'PurchaseReceiptJobDetail/base',//主表-列表
detailURL:'app/purchase-receipt-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const PurchaseReturnJob = {
baseURL:'PurchaseReturnJob/base',//主表-列表
detailURL:'app/purchase-return-job',//主表-明细 + 明细-查看主表
detailListURL:'PurchaseReturnJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const PurchaseReturnJobDetail = {
baseURL:'PurchaseReturnJobDetail/base',//主表-列表
detailURL:'app/purchase-return-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}
export const PutawayJob = {
baseURL:'PutawayJob/base',//主表-列表
detailURL:'app/putaway-job',//主表-明细 + 明细-查看主表
detailListURL:'PutawayJobDetail/base',//明细-列表,
masterId:'masterID',//明细获取主表信息的masterId
hasDetail:true,
isMaster:true
}
export const PutawayJobDetail = {
baseURL:'PutawayJobDetail/base',//主表-列表
detailURL:'app/putaway-job-detail',//主表-明细 + 明细-查看主表
hasDetail:true,
isMaster:false
}

230
PC/UI.WinIn.FasterZ.Job/src/utils/index.js

@ -3,11 +3,12 @@
*/
import {fileStorage, getPageList } from '@/api/wms-api'
import store from '@/store'
import i18n from "@/lang"
/**
* @param {string} url
* @returns {Object}
*/
* @param {string} url
* @returns {Object}
*/
export function getQueryObject(url) {
url = url == null ? window.location.href : url
const search = url.substring(url.lastIndexOf('?') + 1)
@ -25,9 +26,9 @@
// 返回utf8字符串的字节长度
/**
* @param {string} input value
* @returns {number} output value
*/
* @param {string} input value
* @returns {number} output value
*/
export function byteLength(str) {
// returns the byte length of an utf8 string
let s = str.length
@ -41,9 +42,9 @@
}
/**
* @param {Array} actual
* @returns {Array}
*/
* @param {Array} actual
* @returns {Array}
*/
export function cleanArray(actual) {
const newArray = []
for (let i = 0; i < actual.length; i++) {
@ -55,9 +56,9 @@
}
/**
* @param {Object} json
* @returns {Array}
*/
* @param {Object} json
* @returns {Array}
*/
export function param(json) {
if (!json) return ''
return cleanArray(
@ -69,9 +70,9 @@
}
/**
* @param {string} url
* @returns {Object}
*/
* @param {string} url
* @returns {Object}
*/
export function param2Obj(url) {
const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
if (!search) {
@ -91,9 +92,9 @@
}
/**
* @param {string} val
* @returns {string}
*/
* @param {string} val
* @returns {string}
*/
export function html2Text(val) {
const div = document.createElement('div')
div.innerHTML = val
@ -101,11 +102,11 @@
}
/**
* Merges two objects, giving the last one precedence
* @param {Object} target
* @param {(Object|Array)} source
* @returns {Object}
*/
* Merges two objects, giving the last one precedence
* @param {Object} target
* @param {(Object|Array)} source
* @returns {Object}
*/
export function objectMerge(target, source) {
if (typeof target !== 'object') {
target = {}
@ -125,9 +126,9 @@
}
/**
* @param {HTMLElement} element
* @param {string} className
*/
* @param {HTMLElement} element
* @param {string} className
*/
// export function toggleClass(element, className) {
// if (!element || !className) {
// return
@ -145,11 +146,11 @@
// }
/**
* @param {Function} func
* @param {number} wait
* @param {boolean} immediate
* @return {*}
*/
* @param {Function} func
* @param {number} wait
* @param {boolean} immediate
* @return {*}
*/
export function debounce(func, wait, immediate) {
let timeout, args, context, timestamp, result
// console.log('我在防抖函数里面')
@ -186,12 +187,12 @@
}
/**
* This is just a simple version of deep copy
* Has a lot of edge cases bug
* If you want to use a perfect deep copy, use lodash's _.cloneDeep
* @param {Object} source
* @returns {Object}
*/
* This is just a simple version of deep copy
* Has a lot of edge cases bug
* If you want to use a perfect deep copy, use lodash's _.cloneDeep
* @param {Object} source
* @returns {Object}
*/
export function deepClone(source) {
if (!source && typeof source !== 'object') {
throw new Error('error arguments', 'deepClone')
@ -208,16 +209,16 @@
}
/**
* @param {Array} arr
* @returns {Array}
*/
* @param {Array} arr
* @returns {Array}
*/
export function uniqueArr(arr) {
return Array.from(new Set(arr))
}
/**
* @returns {string}
*/
* @returns {string}
*/
export function createUniqueString() {
const timestamp = +new Date() + ''
const randomNum = parseInt((1 + Math.random()) * 65536) + ''
@ -225,29 +226,29 @@
}
/**
* Check if an element has a class
* @param {HTMLElement} elm
* @param {string} cls
* @returns {boolean}
*/
* Check if an element has a class
* @param {HTMLElement} elm
* @param {string} cls
* @returns {boolean}
*/
export function hasClass(ele, cls) {
return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
}
/**
* Add class to element
* @param {HTMLElement} elm
* @param {string} cls
*/
* Add class to element
* @param {HTMLElement} elm
* @param {string} cls
*/
export function addClass(ele, cls) {
if (!hasClass(ele, cls)) ele.className += ' ' + cls
}
/**
* Remove class from element
* @param {HTMLElement} elm
* @param {string} cls
*/
* Remove class from element
* @param {HTMLElement} elm
* @param {string} cls
*/
export function removeClass(ele, cls) {
if (hasClass(ele, cls)) {
const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
@ -274,10 +275,10 @@
// 判断是否存在某个父级元素,层级不定
/**
* @param {*} obj 当前节点如点击事件返回的e.target
* @param {*} searchName 要查找是否存在的父级节点class
* @returns
*/
* @param {*} obj 当前节点如点击事件返回的e.target
* @param {*} searchName 要查找是否存在的父级节点class
* @returns
*/
export function getParentNode(obj,searchName) {
let node = obj;
let ofDiv = true;
@ -322,11 +323,11 @@
// 匹配正则返回值
/** README.md[:currenForm]
* @param {*} type 需要匹配的正则类型
* @param {*} defaultValue 当前传入值即需要校验值
* @param {*} fixedNum 如果type为pointNumber需要保留小数点后的位数
* @returns
*/
* @param {*} type 需要匹配的正则类型
* @param {*} defaultValue 当前传入值即需要校验值
* @param {*} fixedNum 如果type为pointNumber需要保留小数点后的位数
* @returns
*/
export function getMatchRegConformValue(type,defaultValue,fixedNum){
let value = defaultValue ? String(defaultValue) : ''
let _conformValue = ""
@ -414,8 +415,8 @@
// faster-new
// 转义及读取api接口返回的表头信息
export function zhApiColumnsLable (data,list) {
let _list = list ? list : store.getters.columZHList
return _list ? _list[data] : data
let _list = list ? list : store.getters.columZHList
return _list ? _list[data] : data
}
// 首字母转换 type='Lower'(小写,默认) Upper(大写)
@ -428,4 +429,101 @@
return str.substring(0,1).toUpperCase() + str.substring(1,str.length);
}
}
// get-dto-column-type接口表头类型初始化
export function initApiColumnsForDto (list,titleName,that) {
let data = that.$store.getters.dtoColumnTypes
let _coloums = data[titleName].S
let _Columns_Table = []
if(_coloums){
let _data = _coloums.dtoList
_data.forEach(item=>{
// 如果list接口存在数据 ,与list接口返回字段比较处理,list接口存在的话则追加
let _if = firstWordSizeChange(item.name) != 'details'
if(list){
_if = firstWordSizeChange(item.name) in list && firstWordSizeChange(item.name) != 'details'
}
if(_if){
_Columns_Table.push(item)
}
})
}
if(list){
_Columns_Table = _Columns_Table.concat(specialAddColumns(list,titleName))
}
return _Columns_Table
}
// 特殊字段转义处理(api中没有的字段特殊处理)
export function specialAddColumns(list,titleName){
let _apiName = titleName
let _special_list=[]
// creationTime
if('creationTime' in list){
_special_list.push(
{
"name": "CreationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'CreationTime',
"label": zhApiColumnsLable(_apiName + 'CreationTime') || i18n.t('columNames.CreationTime'),
"prop": "creationTime",
}
)
}
// creatorId
if('creatorId' in list){
_special_list.push(
{
"name": "CreatorId",
"apiBaseType": "string",
"baseApiName": _apiName + 'CreatorId',
"label": zhApiColumnsLable(_apiName + 'CreatorId') || i18n.t('columNames.CreatorId'),
"prop": "creatorId",
}
)
}
// lastModificationTime
if('lastModificationTime' in list){
_special_list.push(
{
"name": "LastModificationTime",
"apiBaseType": "datetime",
"baseApiName": _apiName + 'LastModificationTime',
"label": zhApiColumnsLable(_apiName + 'LastModificationTime') || i18n.t('columNames.LastModificationTime'),
"prop": "lastModificationTime",
}
)
}
// lastModifierId
if('lastModifierId' in list){
_special_list.push(
{
"name": "LastModifierId",
"apiBaseType": "string",
"baseApiName": _apiName + 'LastModifierId',
"label": zhApiColumnsLable(_apiName + 'LastModifierId') || i18n.t('columNames.LastModifierId'),
"prop": "lastModifierId",
}
)
}
// tenantId
if('tenantId' in list){
_special_list.push(
{
"name": "TenantId",
"apiBaseType": "string",
"baseApiName": _apiName + 'TenantId',
"label": zhApiColumnsLable(_apiName + 'TenantId') || i18n.t('columNames.TenantId'),
"prop": "tenantId",
}
)
}
return _special_list
}
// 从字段中删除最后某字段
export function sliceStrEndDelete(str,deleteStr){
let _d_l = str.length - deleteStr.length
return str.slice(0,_d_l)
}
Loading…
Cancel
Save