Commit 09f8dc0f authored by 杨柠瑞's avatar 杨柠瑞

添加外链支持

parent 32acc360
...@@ -149,6 +149,32 @@ ...@@ -149,6 +149,32 @@
type: Array, type: Array,
required: false required: false
}, },
/**
* 用来将本表的外链字段(table_id类似的字段)指向的外链表相关联, 格式为:
* {
* "hm_user": { //外链表 表名 本表所对应的主键表)
* includes:['user_id'] // 与主表所对应的外键
* }
* }
*
*/
includes: {
type: Object,
required: false
},
/**
* 用来将其他表的外链字段指向本表关联,同时返回数据, 格式为:
* {
* 'auth_token': { //主键id所对应的外键表 表名1 (本表所对应的外键表)
* includes: ['user_id'] //外键表的外键字段
* }
* }
*/
refers: {
type: Object,
required: false
},
/** /**
* 指定要显示的列。默认为根据schema得到的所有列。完整示例为: * 指定要显示的列。默认为根据schema得到的所有列。完整示例为:
* [ * [
...@@ -192,7 +218,11 @@ ...@@ -192,7 +218,11 @@
* "showRefresh": false, //默认不显示刷新按钮 * "showRefresh": false, //默认不显示刷新按钮
* "showDeleteButton": false, //默认不显示删除按钮 * "showDeleteButton": false, //默认不显示删除按钮
* "buttonGroup": false //默认不以按钮组的方式呈现button * "buttonGroup": false //默认不以按钮组的方式呈现button
* showDetail: false // 默认不显示详情 * showDetail: {
* isShow: false, // 默认不显示详情
* showColumns: ['mobile', 'loginid', 'username', 'email']
* },
* dataProcessing(value){} // 对接口返回数据进行处理
* "changeValue": { // 数据库字段转化显示,例如(0=否,1=是) * "changeValue": { // 数据库字段转化显示,例如(0=否,1=是)
* username: {1: '是', 0: '否'} * username: {1: '是', 0: '否'}
* }, * },
...@@ -341,7 +371,10 @@ ...@@ -341,7 +371,10 @@
const tableName = self.schema['modelUnderscore'] const tableName = self.schema['modelUnderscore']
const filters = {} const filters = {}
filters[tableName] = {} filters[tableName] = {}
_.each(_.cloneDeep(self.filters), function(filter) { _.each(_.cloneDeep(self.filters), function(filter, index) {
if (filter.isShow === undefined) {
self.filters[index].isShow = true
}
filters[tableName] = Object.assign(filters[tableName], filter) filters[tableName] = Object.assign(filters[tableName], filter)
}) })
delete filters[tableName]['placeholder'] delete filters[tableName]['placeholder']
...@@ -388,13 +421,34 @@ ...@@ -388,13 +421,34 @@
params.filters = self.filterParams params.filters = self.filterParams
params.filters = this.deleteFilter(params.filters) params.filters = this.deleteFilter(params.filters)
if (self.includes) {
params.includes = self.includes
}
if (self.refers) {
params.refers = self.refers
}
request(self.schema.modelUnderscorePlural, { request(self.schema.modelUnderscorePlural, {
params: params params: params
}).then(resp => { }).then(resp => {
// 数据库字段转化显示
if (self.options.changeValue) { if (self.options.changeValue) {
resp.data = self.changeValue(resp.data) resp.data = self.changeValue(resp.data)
} }
self.list = resp.data if (resp.data[0].superior !== undefined && resp.data[0].includes !== undefined &&
resp.data[0].refers !== undefined && resp.data[0].relates !== undefined) {
self.list = []
_.each(resp.data, function(item, index) {
self.list.push(item.superior)
})
} else {
self.list = resp.data
}
// 数据处理
if (self.options.dataProcessing) {
self.list = self.options.dataProcessing(resp.data)
}
self.total = parseInt(resp.headers.total) self.total = parseInt(resp.headers.total)
self.listLoading = false self.listLoading = false
}) })
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
<hm-complex-table :schema="schema['HmUser']" <hm-complex-table :schema="schema['HmUser']"
:columns="showUserColumns" :columns="showUserColumns"
:filters="userFilters" :filters="userFilters"
:includes="userIncludes"
:refers="userRefers"
:options="userOptions"></hm-complex-table> :options="userOptions"></hm-complex-table>
</div> </div>
</template> </template>
...@@ -10,6 +12,7 @@ ...@@ -10,6 +12,7 @@
<script> <script>
import HmComplexTable from './HmComplexTable.vue' import HmComplexTable from './HmComplexTable.vue'
import schema from '../../schemas/hm_org_schema' import schema from '../../schemas/hm_org_schema'
import _ from 'lodash'
export default { export default {
name: 'HmComplexTableIndex', name: 'HmComplexTableIndex',
...@@ -21,11 +24,21 @@ ...@@ -21,11 +24,21 @@
}, },
data() { data() {
return { return {
showUserColumns: ['mobile', 'loginid', 'username', 'email', 'securityLevel'], showUserColumns: ['mobile', 'loginid', 'username', 'email'],
userFilters: [ userFilters: [
{ placeholder: '过滤手机号', 'mobile': { 'like': '' }, isShow: true }, { placeholder: '过滤手机号', 'mobile': { 'like': '' }, isShow: true },
{ placeholder: '过滤用户名', 'username': { 'equalTo': '' }, isShow: true } { placeholder: '过滤用户名', 'username': { 'equalTo': '' }, isShow: true }
] ],
userIncludes: {
'hm_user': {
includes: ['user_id']
}
},
userRefers: {
'auth_token': {
includes: ['userId']
}
}
} }
}, },
filters: { filters: {
...@@ -67,6 +80,18 @@ ...@@ -67,6 +80,18 @@
showDetail: { showDetail: {
isShow: true, isShow: true,
showColumns: ['mobile', 'loginid', 'username', 'email'] showColumns: ['mobile', 'loginid', 'username', 'email']
},
dataProcessing(value) {
let list = []
if (value[0].superior !== undefined && value[0].includes !== undefined &&
value[0].refers !== undefined && value[0].relates !== undefined) {
_.each(value, function(item, index) {
list.push(item.superior)
})
} else {
list = value
}
return list
} }
} }
}, },
......
...@@ -3487,7 +3487,7 @@ const ModelSchema = { ...@@ -3487,7 +3487,7 @@ const ModelSchema = {
] ]
}, },
'HmUser': { 'HmUser': {
'model': 'HmUser3', 'model': 'HmUser',
'modelPlural': 'HmUsers', 'modelPlural': 'HmUsers',
'modelCamel': 'hmUser', 'modelCamel': 'hmUser',
'modelCamelPlural': 'hmUsers', 'modelCamelPlural': 'hmUsers',
...@@ -3505,6 +3505,13 @@ const ModelSchema = { ...@@ -3505,6 +3505,13 @@ const ModelSchema = {
'modifier': 'yide', 'modifier': 'yide',
'dataType': 'varchar(256)', 'dataType': 'varchar(256)',
'length': '256', 'length': '256',
'foreignTable': {
'model': 'authToken',
'modelCamel': 'authToken',
'modelCamelPlural': 'authTokens',
'modelUnderscore': 'auth_token',
'modelUnderscorePlural': 'auth_tokens'
},
'codeCamel': 'username', 'codeCamel': 'username',
'codeCamelPlural': 'usernames', 'codeCamelPlural': 'usernames',
'codeUnderscore': 'username', 'codeUnderscore': 'username',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment