Commit 60c63b7a by 蒋勇

d

parent 38be4bbe
import axios from '@/libs/api.request' import axios from '@/libs/api.request'
export const getTableData = () => { export const getTableData = (url,query) => {
console.log(url)
return axios.request({ return axios.request({
url: 'get_table_data', url: url,
method: 'get' method: 'post',
data:query
}) })
} }
......
...@@ -19,6 +19,9 @@ ...@@ -19,6 +19,9 @@
<Button @click="handleSearch" class="search-btn" type="primary"> <Button @click="handleSearch" class="search-btn" type="primary">
<Icon type="search"/>&nbsp;&nbsp;搜索 <Icon type="search"/>&nbsp;&nbsp;搜索
</Button> </Button>
<Button @click="advSearch" class="search-btn" type="primary">
<Icon type="search"/>&nbsp;&nbsp;高级
</Button>
</div> </div>
<Table <Table
ref="tablesMain" ref="tablesMain"
...@@ -99,6 +102,7 @@ export default { ...@@ -99,6 +102,7 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
border: { border: {
type: Boolean, type: Boolean,
default: false default: false
...@@ -172,6 +176,9 @@ export default { ...@@ -172,6 +176,9 @@ export default {
}; };
}, },
methods: { methods: {
advSearch(){
this.$emit("on-adv-search")
},
suportEdit(item, index) { suportEdit(item, index) {
item.render = (h, params) => { item.render = (h, params) => {
return h(TablesEdit, { return h(TablesEdit, {
...@@ -262,6 +269,7 @@ export default { ...@@ -262,6 +269,7 @@ export default {
return item; return item;
}, },
handleColumns(columns) { handleColumns(columns) {
this.insideColumns = columns.map((item, index) => { this.insideColumns = columns.map((item, index) => {
let res = item; let res = item;
if (res.editable) res = this.suportEdit(res, index); if (res.editable) res = this.suportEdit(res, index);
...@@ -339,7 +347,7 @@ export default { ...@@ -339,7 +347,7 @@ export default {
}, },
value(val) { value(val) {
this.handleTableData(); this.handleTableData();
if (this.searchable) this.handleSearch(); //if (this.searchable) this.handleSearch();
} }
}, },
mounted() { mounted() {
......
...@@ -5,6 +5,10 @@ import { treeData } from './data/tree-select' ...@@ -5,6 +5,10 @@ import { treeData } from './data/tree-select'
const Random = Mock.Random const Random = Mock.Random
export const getTableData = req => { export const getTableData = req => {
let rtn={}
console.log("========================================")
let q=JSON.parse(req.body)
console.log(q)
let tableData = [] let tableData = []
doCustomTimes(100, () => { doCustomTimes(100, () => {
tableData.push(Mock.mock({ tableData.push(Mock.mock({
...@@ -13,7 +17,17 @@ export const getTableData = req => { ...@@ -13,7 +17,17 @@ export const getTableData = req => {
createTime: '@date' createTime: '@date'
})) }))
}) })
return tableData rtn.status=0;
rtn.data={
results:{
count:100,
rows:tableData.slice(0,q.pageInfo.pageSize)
},
aggresult:{},
bizmsg:null
}
return rtn
} }
export const getDragList = req => { export const getDragList = req => {
......
...@@ -13,7 +13,7 @@ Mock.setup({ ...@@ -13,7 +13,7 @@ Mock.setup({
Mock.mock(/\/login/, login) Mock.mock(/\/login/, login)
Mock.mock(/\/get_info/, getUserInfo) Mock.mock(/\/get_info/, getUserInfo)
Mock.mock(/\/logout/, logout) Mock.mock(/\/logout/, logout)
Mock.mock(/\/get_table_data/, getTableData) Mock.mock(/.*findAndCountAll/, getTableData)
Mock.mock(/\/get_drag_list/, getDragList) Mock.mock(/\/get_drag_list/, getDragList)
Mock.mock(/\/save_error_logger/, 'success') Mock.mock(/\/save_error_logger/, 'success')
Mock.mock(/\/image\/upload/, uploadImage) Mock.mock(/\/image\/upload/, uploadImage)
......
...@@ -14,53 +14,70 @@ export default { ...@@ -14,53 +14,70 @@ export default {
], ],
"form":{ "form":{
name:"xxx", name:"xxx",
data:[ main:[
// {
// "title":"控制信息",
// ctls:[
// {"type":"switch","label":"是否管理员","prop":"isAdmin","opentext":"是","closetext":"否","trurcolor":"","falsecolor":"","placeHolder":"请输入单次使用消耗的宝币数","style":""},
// // {"type":"select","refModel":"pmproduct","isMulti":false,"label":"所属产品","prop":"pmproduct_id","labelField":"name","valueField":"id","style":""},
// {"type":"dic-select","dicName":"app_type","isMulti":true,"label":"所属产品","prop":"apptype","placeHolder":"请选择 应用类型"},
// {"type":"model-select","refModel":"user","isMulti":false,"label":"所属产品","prop":"uid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id"},
// {"type":"remote-select","refModel":"user","isMulti":false,"label":"所属产品x","prop":"xid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id"},
// {"type":"checkgroup","refModel":"user","label":"所属产品","prop":"mmmid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id","isBorder":true},
// {"type":"radiogroup","refModel":"user","label":"所属产品","prop":"xmmmid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id","isBorder":true},
// ]
// },
{ {
"title":"控制信息", "title":"基本信息",
"key":"baseinfo",
ctls:[ ctls:[
{"type":"switch","label":"是否管理员","prop":"isAdmin","opentext":"是","closetext":"否","trurcolor":"","falsecolor":"","placeHolder":"请输入单次使用消耗的宝币数","style":""}, {"type":"input","label":"姓名","prop":"name","placeHolder":"登录账号","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
// {"type":"select","refModel":"pmproduct","isMulti":false,"label":"所属产品","prop":"pmproduct_id","labelField":"name","valueField":"id","style":""}, {"type":"input","label":"邮件","prop":"email","placeHolder":"昵称","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
{"type":"dic-select","dicName":"app_type","isMulti":true,"label":"所属产品","prop":"apptype","placeHolder":"请选择 应用类型"}, {"type":"input","label":"创建时间","prop":"createTime","placeHolder":"请输入电话","style":"",rules:[ { "validator":"validatex","trigger": 'blur' },{ "required": true, "message": ' ', "trigger": 'blur' },]},
{"type":"model-select","refModel":"user","isMulti":false,"label":"所属产品","prop":"uid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id"}, // {"type":"select","refModel":"auth.role","isMulti":true,"label":"角色","prop":"roles","labelField":"name","valueField":"id","style":""},
{"type":"remote-select","refModel":"user","isMulti":false,"label":"所属产品x","prop":"xid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id"},
{"type":"checkgroup","refModel":"user","label":"所属产品","prop":"mmmid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id","isBorder":true},
{"type":"radiogroup","refModel":"user","label":"所属产品","prop":"xmmmid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id","isBorder":true},
] ]
}, }
],
lists:[
{
title:"子列表",
refBizCode:"xxx"
}
]
},
"search":{
name:"search",
main:[
{ {
"title":"基本信息", "title":"基本信息",
"key":"baseinfo",
ctls:[ ctls:[
{"type":"input","label":"账号","prop":"userName","placeHolder":"登录账号","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]}, {"type":"input","label":"姓名","prop":"name","placeHolder":"登录账号","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
{"type":"input","label":"昵称","prop":"nickName","placeHolder":"昵称","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]}, {"type":"input","label":"邮件","prop":"email","placeHolder":"昵称","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
{"type":"input","label":"电话","prop":"mobile","placeHolder":"请输入电话","style":"",rules:[ { "validator":"validatex","trigger": 'blur' },{ "required": true, "message": ' ', "trigger": 'blur' },]}, {"type":"input","label":"创建时间","prop":"createTime","placeHolder":"请输入电话","style":"",rules:[ { "validator":"validatex","trigger": 'blur' },{ "required": true, "message": ' ', "trigger": 'blur' },]},
// {"type":"select","refModel":"auth.role","isMulti":true,"label":"角色","prop":"roles","labelField":"name","valueField":"id","style":""}, // {"type":"select","refModel":"auth.role","isMulti":true,"label":"角色","prop":"roles","labelField":"name","valueField":"id","style":""},
] ]
} }
] ]
}, },
"search":[
{
"title":"基本查询",
ctls:[
{"type":"input","label":"昵称","prop":"nickName","placeHolder":"请输入昵称","style":""},
]
},
],
"auths":{ "auths":{
"add":[ "add":[
{"icon":"el-icon-plus","title":"新增","type":"default","key":"new","isOnGrid":true}, {"icon":"el-icon-plus","title":"新增","type":"text","key":"new","isOnGrid":true},
{"icon":"el-icon-save","title":"保存","type":"default","key":"save","isOnForm":true}, {"icon":"el-icon-save","title":"保存","type":"text","key":"save","isOnForm":true},
], ],
"edit":[ "edit":[
{"icon":"el-icon-edit","title":"修改","type":"default","key":"edit","isInRow":true}, {"icon":"el-icon-edit","title":"修改","type":"text","key":"edit","isInRow":true},
], ],
"delete":[ "delete":[
{"icon":"el-icon-remove","title":"删除","type":"default","key":"delete","isInRow":true}, {"icon":"el-icon-remove","title":"删除","type":"text","key":"delete","isInRow":true},
{"icon":"el-icon-edit","title":"停用","type":"default","key":"stopUser","isInRow":true,"boolProp":"isEnabled","falseText":"启用"}, {"icon":"el-icon-edit","title":"停用","type":"text","key":"stopUser","isInRow":true,"boolProp":"isEnabled","falseText":"启用"},
], ],
"common":[ "common":[
{"icon":"el-icon-cancel","title":"取消","type":"default","key":"cancel","isOnForm":true}, {"icon":"el-icon-cancel","title":"取消","type":"text","key":"cancel","isOnForm":true},
{"icon":"el-icon-cancel","title":"取消","type":"text","key":"cancel-search","isInSearch":true},
{"icon":"el-icon-cancel","title":"搜索","type":"text","key":"start-search","isInSearch":true},
], ],
} }
} }
\ No newline at end of file
<template> <template>
<div> <div>
<Card> <Card style="height:100%">
<div> <p slot="title">
<button type="primary" @click="testclick">test</button> <Icon type="ios-film-outline"></Icon>
</div> {{forminfo.name}}
<p slot="title"> </p>
<Icon type="ios-film-outline"></Icon> <Form ref="ofm" :model="formModel" :rules="metaRules">
{{forminfo.name}} <template v-if="forminfo.lists && forminfo.lists.length>0">
</p> <Tabs value="main">
<Form ref="formInline" :model="formModel" :rules="metaRules"> <TabPane label="表单信息" name="main">
<template v-for="group in forminfo.data"> <template v-for="group in forminfo.main">
<Divider orientation="left" :key="group.title">{{group.title}}</Divider>
<Row type="flex" justify="space-around" align="top" :key="'r'+group.title">
<Col :xs="2" :sm="4" :md="6" :lg="8" v-for="ctl in group.ctls" :key="ctl.prop">
<FormItem v-if="ctlVisable[ctl.prop]" :label="ctl.label" :prop="ctl.prop">
<template v-if="ctl.type=='input'">
<input v-model="formModel[ctl.prop]">
</template>
<template v-if="ctl.type=='btn'">
<button :type="ctl.btncss" :icon="ctl.icon">{{ctl.label}}</button>
</template>
<template v-if="ctl.type=='dic-select'">
<DicSelect
v-model="formModel[ctl.prop]"
:dicName="ctl.dicName"
:placeHolder="ctl.placeHolder"
:isMulti="ctl.isMulti"
></DicSelect>
</template>
<template v-if="ctl.type=='model-select'">
<ModelSelect
v-model="formModel[ctl.prop]"
:refModel="ctl.refModel"
:placeHolder="ctl.placeHolder"
:isMulti="ctl.isMulti"
></ModelSelect>
</template>
<template v-if="ctl.type=='remote-select'">
<RemoteSelect
v-model="formModel[ctl.prop]"
:refModel="ctl.refModel"
:placeHolder="ctl.placeHolder"
:isMulti="ctl.isMulti"
></RemoteSelect>
</template>
<template v-if="ctl.type=='switch'">
<Switchs
v-model="formModel[ctl.prop]"
:openlabel="ctl.opentext"
:closelabel="ctl.closetext"
:truecolor="ctl.truecolor"
:falsecolor="ctl.falsecolor"
></Switchs>
</template>
<template v-if="ctl.type=='checkgroup'">
<Checkgroups
v-model="formModel[ctl.prop]"
:dicName="ctl.dicName"
:refModel="ctl.refModel"
:isborder="ctl.isBorder"
></Checkgroups>
</template>
<template v-if="ctl.type=='radiogroup'">
<Radiogroups
v-model="formModel[ctl.prop]"
:dicName="ctl.dicName"
:refModel="ctl.refModel"
:isborder="ctl.isBorder"
></Radiogroups>
</template>
</FormItem>
</Col>
</Row>
</template>
</TabPane>
<TabPane v-for="lst in forminfo.lists" :key="lst.refBizCode" :label="lst.title" :name="lst.refBizCode">
标签二的内容
</TabPane>
</Tabs>
</template>
<template v-else v-for="group in forminfo.main">
<Divider orientation="left" :key="group.title">{{group.title}}</Divider> <Divider orientation="left" :key="group.title">{{group.title}}</Divider>
<Row type="flex" justify="space-around" align="top" :key="'r'+group.title"> <Row type="flex" justify="space-around" align="top" :key="'r'+group.title">
<Col :xs="2" :sm="4" :md="6" :lg="8" v-for="ctl in group.ctls" :key="ctl.prop"> <Col :xs="12" :sm="8" :md="6" :lg="6" v-for="ctl in group.ctls" :key="ctl.prop">
<FormItem v-if="ctlVisable[ctl.prop]" :label="ctl.label" :prop="ctl.prop"> <FormItem v-if="ctlVisable[ctl.prop]" :label="ctl.label" :prop="ctl.prop">
<template v-if="ctl.type=='input'"> <template v-if="ctl.type=='input'">
<input v-model="formModel[ctl.prop]" /> <input v-model="formModel[ctl.prop]">
</template> </template>
<template v-if="ctl.type=='btn'"> <template v-if="ctl.type=='btn'">
<button :type="ctl.btncss" :icon="ctl.icon">{{ctl.label}}</button> <button :type="ctl.btncss" :icon="ctl.icon">{{ctl.label}}</button>
</template> </template>
<template v-if="ctl.type=='dic-select'"> <template v-if="ctl.type=='dic-select'">
<DicSelect v-model="formModel[ctl.prop]" :dicName="ctl.dicName" :placeHolder="ctl.placeHolder" :isMulti="ctl.isMulti"></DicSelect> <DicSelect
v-model="formModel[ctl.prop]"
:dicName="ctl.dicName"
:placeHolder="ctl.placeHolder"
:isMulti="ctl.isMulti"
></DicSelect>
</template> </template>
<template v-if="ctl.type=='model-select'"> <template v-if="ctl.type=='model-select'">
<ModelSelect v-model="formModel[ctl.prop]" :refModel="ctl.refModel" :placeHolder="ctl.placeHolder" :isMulti="ctl.isMulti"></ModelSelect> <ModelSelect
v-model="formModel[ctl.prop]"
:refModel="ctl.refModel"
:placeHolder="ctl.placeHolder"
:isMulti="ctl.isMulti"
></ModelSelect>
</template> </template>
<template v-if="ctl.type=='remote-select'"> <template v-if="ctl.type=='remote-select'">
<RemoteSelect v-model="formModel[ctl.prop]" :refModel="ctl.refModel" :placeHolder="ctl.placeHolder" :isMulti="ctl.isMulti"></RemoteSelect> <RemoteSelect
v-model="formModel[ctl.prop]"
:refModel="ctl.refModel"
:placeHolder="ctl.placeHolder"
:isMulti="ctl.isMulti"
></RemoteSelect>
</template> </template>
<template v-if="ctl.type=='switch'"> <template v-if="ctl.type=='switch'">
<Switchs v-model="formModel[ctl.prop]" :openlabel="ctl.opentext" :closelabel="ctl.closetext" :truecolor="ctl.truecolor" :falsecolor="ctl.falsecolor"></Switchs> <Switchs
v-model="formModel[ctl.prop]"
:openlabel="ctl.opentext"
:closelabel="ctl.closetext"
:truecolor="ctl.truecolor"
:falsecolor="ctl.falsecolor"
></Switchs>
</template> </template>
<template v-if="ctl.type=='checkgroup'"> <template v-if="ctl.type=='checkgroup'">
<Checkgroups v-model="formModel[ctl.prop]" :dicName="ctl.dicName" :refModel="ctl.refModel" :isborder="ctl.isBorder"></Checkgroups> <Checkgroups
v-model="formModel[ctl.prop]"
:dicName="ctl.dicName"
:refModel="ctl.refModel"
:isborder="ctl.isBorder"
></Checkgroups>
</template> </template>
<template v-if="ctl.type=='radiogroup'"> <template v-if="ctl.type=='radiogroup'">
<Radiogroups v-model="formModel[ctl.prop]" :dicName="ctl.dicName" :refModel="ctl.refModel" :isborder="ctl.isBorder"></Radiogroups> <Radiogroups
v-model="formModel[ctl.prop]"
:dicName="ctl.dicName"
:refModel="ctl.refModel"
:isborder="ctl.isBorder"
></Radiogroups>
</template> </template>
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
</template> </template>
</Form> </Form>
<div class="form-footer">
<slot :fm="formModel">
</slot>
</div>
</Card> </Card>
</div> </div>
</template> </template>
<script> <script>
// import { getTableData } from '@/api/data' // import { getTableData } from '@/api/data'
import DicSelect from "./childs/dicselects" import DicSelect from "./childs/dicselects";
import ModelSelect from "./childs/modelselects" import ModelSelect from "./childs/modelselects";
import RemoteSelect from "./childs/remoteselects" import RemoteSelect from "./childs/remoteselects";
import Switchs from "./childs/switchs" import Switchs from "./childs/switchs";
import Checkgroups from "./childs/checkgroups" import Checkgroups from "./childs/checkgroups";
import Radiogroups from "./childs/rediogroups" import Radiogroups from "./childs/rediogroups";
export default { export default {
name: "forms", name: "forms",
components: { components: {
...@@ -86,16 +192,19 @@ export default { ...@@ -86,16 +192,19 @@ export default {
formModel: {}, formModel: {},
metaRules: {}, metaRules: {},
btninfos: [], btninfos: [],
ctlVisable:{}, ctlVisable: {}
}; };
}, },
watch: { watch: {
fminfo(nf, of) { fminfo(nf, of) {
console.log(">>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<"); console.log(">>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<");
this.initFormModel() this.initFormModel();
} }
}, },
methods: { methods: {
resetForm(){
this.$refs.ofm.resetFields()
},
validatex(rule, value, callback) { validatex(rule, value, callback) {
if (this.refvalidatemethod) { if (this.refvalidatemethod) {
return this.refvalidatemethod(rule, value, callback); return this.refvalidatemethod(rule, value, callback);
...@@ -107,7 +216,7 @@ export default { ...@@ -107,7 +216,7 @@ export default {
console.log(JSON.stringify(this.formModel)); console.log(JSON.stringify(this.formModel));
}, },
initFormModel() { initFormModel() {
this.forminfo.data.forEach(m => { this.forminfo.main.forEach(m => {
if (!m || !m.ctls) { if (!m || !m.ctls) {
return; return;
} }
...@@ -121,14 +230,17 @@ export default { ...@@ -121,14 +230,17 @@ export default {
}); });
this.metaRules[ctl.prop] = ctl.rules; this.metaRules[ctl.prop] = ctl.rules;
} }
if (ctl.type.indexOf("select")>=0 || ctl.type.indexOf("checkgroups")>=0) { if (
ctl.type.indexOf("select") >= 0 ||
ctl.type.indexOf("checkgroups") >= 0
) {
this.$set(this.formModel, ctl.prop, []); this.$set(this.formModel, ctl.prop, []);
} else { } else {
console.log(ctl.prop); console.log(ctl.prop);
if (ctl.type == "number") { if (ctl.type == "number") {
this.$set(this.formModel, ctl.prop, 0); this.$set(this.formModel, ctl.prop, 0);
} else { } else {
console.log("=============") console.log("=============");
this.$set(this.formModel, ctl.prop, ""); this.$set(this.formModel, ctl.prop, "");
} }
} }
...@@ -136,13 +248,22 @@ export default { ...@@ -136,13 +248,22 @@ export default {
}); });
} }
}, },
created(){ created() {
this.initFormModel(); this.initFormModel();
}, },
mounted() { mounted() {}
}
}; };
</script> </script>
<style> <style>
.form-footer{
width: 100%;
position: absolute;
bottom: 0;
left: 0;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
background: #fff;
}
</style> </style>
<template> <template>
<div> <div>
<Card> <Card style="height:100%">
<tables <Drawer placement="right" :closable="false" v-model="showsearch" width="600">
ref="tables" <Forms ref="searchform" :fminfo="searchinfo" style="height:100%">
editable <template v-slot:default="slotProps">
searchable <Button
search-place="top" v-for="bt in searchbtns"
v-model="tableData" :key="bt.key"
:columns="colswithauth" :type="bt.type"
@on-rapid-query="doquery" @click="doquery(slotProps.fm,bt.key)"
@on-exec="doexec" >{{ bt.title }}</Button>
/> </template>
<Button style="margin: 10px 0;" type="primary" @click="exportExcel">导出为Csv文件</Button> </Forms>
<Forms :fminfo="forminfo"></Forms> </Drawer>
<div>
<tables
ref="tables"
editable
searchable
search-place="top"
highlightRow
v-model="tableData"
:columns="colswithauth"
@on-rapid-query="doquery"
@on-exec="doexec"
@on-select="onsels"
@on-adv-search="advsearch"
/>
<div style="text-align:center">
<Page
:total="pageInfo.total"
:current.sync="pageInfo.pageNo"
:page-size="pageInfo.pageSize"
show-sizer
@on-page-size-change="onsizeChange"
@on-change="onpagechange"
/>
</div>
</div>
<!-- <Button style="margin: 10px 0;" type="primary" @click="exportExcel">导出为Csv文件</Button> -->
<Drawer placement="right" :closable="false" v-model="showedform" width="70">
<Forms ref="edform" :fminfo="forminfo" style="height:100%"></Forms>
</Drawer>
</Card> </Card>
<Modal v-model="isdel" width="360">
<p slot="header" style="color:#f60;text-align:center">
<Icon type="ios-information-circle"></Icon>
<span>Delete confirmation</span>
</p>
<div style="text-align:center">
<p>After this task is deleted, the downstream 10 tasks will not be implemented.</p>
<p>Will you delete it?</p>
</div>
<div slot="footer">
<Button type="error" size="large" long :loading="modal_loading" @click="delpost">Delete</Button>
</div>
</Modal>
</div> </div>
</template> </template>
...@@ -28,58 +72,185 @@ export default { ...@@ -28,58 +72,185 @@ export default {
Forms Forms
}, },
props: { props: {
metaName: String, packageName: String,
default: "user_info" metaName: {
type: String,
default: "user_info"
},
isMulti: Boolean,
sumfields: {
type: Array,
default() {
return [];
}
},
avgfields: {
type: Array,
default() {
return [];
}
},
calcfields: {
type: Array,
default() {
return [];
}
}
}, },
data() { data() {
this.packageName = "auth";
this.metaName = "user_info"; this.metaName = "user_info";
return { return {
metainfo:this.$store.getters[this.metaName], metainfo: this.$store.getters[this.metaName],
tableData: [] tableData: [],
isdel: false,
modal_loading: false,
currentRow: null,
currentSels: null,
pageInfo: {
pageNo: 1,
pageSize: 10,
total: 100
},
searchModel: {},
showsearch: false,
showedform: false,
sum_fields: this.sumfields ? this.sumfields : [],
avg_fields: this.avgfields ? this.avgfields : [],
calcdata: this.calcfields
? this.calcfields
: [{ label: "余额", value: 1000 }],
sumdata: {},
avgdata: {}
}; };
}, },
methods: { methods: {
onpagechange() {
this.fetchData();
},
buildQuery(qobj) {
let rtn = {};
if (qobj) {
rtn.search = qobj;
} else {
rtn.search = this.$refs.searchform.formModel;
}
rtn.aggsinfo = { sum: this.sum_fields, avg: this.avg_fields };
rtn.pageInfo = {
pageSize: this.pageInfo.pageSize,
pageNo: this.pageInfo.pageNo
};
return rtn;
},
advsearch() {
this.showsearch = true;
},
onsizeChange(s) {
this.pageInfo.pageSize = s;
},
onsels(sels, lastsel) {
this.currentSels = currentSels;
this.currentRow = lastsel;
},
delpost() {
this.modal_loading = true;
setTimeout(() => {
this.isdel = false;
this.modal_loading = false;
this.currentRow = null;
}, 2000);
},
doexec(key, row) { doexec(key, row) {
if (key == "delete") {
this.currentRow = row;
this.isdel = true;
}
if (key == "edit") {
this.showedform = true;
}
console.log(key, row); console.log(key, row);
}, },
doquery(q) { doquery(q, k) {
console.log(q); if (k == "cancel-search") {
this.$refs.searchform.resetForm();
this.showsearch = false;
return;
}
if (k == "start-search") {
this.showsearch = false;
}
this.fetchData(q);
}, },
exportExcel() { exportExcel() {
this.$refs.tables.exportCsv({ this.$refs.tables.exportCsv({
filename: `table-${new Date().valueOf()}.csv` filename: `table-${new Date().valueOf()}.csv`
}); });
},
fetchData(q) {
let modelname = this.metaName.split("_");
let url =
"/web/" +
this.packageName +
"/" +
modelname +
"Ctl/" +
"findAndCountAll";
console.log(url);
let query = this.buildQuery(q);
getTableData(url, query).then(res => {
console.log(res.data);
this.tableData = res.data.data.results.rows;
this.pageInfo.total = res.data.data.results.count;
});
} }
}, },
mounted() { mounted() {
getTableData().then(res => { //从缓存中恢复查询条件
this.tableData = res.data; this.fetchData();
}); },
created() {
if (this.isMulti && this.metainfo) {
this.metainfo["list"].unshift({
type: "selection",
width: 60,
align: "center"
});
}
}, },
computed: { computed: {
forminfo(){ searchinfo() {
return this.metainfo["form"] return this.metainfo["search"];
},
forminfo() {
return this.metainfo["form"];
}, },
formbtns() { formbtns() {
return this.metainfo["auths"].filter(bt => { return this.metainfo["auths"].filter(bt => {
return bt.isOnForm; return bt.isOnForm;
}); });
}, },
searchbtns() {
return this.metainfo["auths"].filter(bt => {
return bt.isInSearch;
});
},
onlistbtns() { onlistbtns() {
return this.metainfo["auths"].filter(bt => { return this.metainfo["auths"].filter(bt => {
return bt.isOnGrid; return bt.isOnGrid;
}); });
}, },
colswithauth(){ colswithauth() {
let listbtns=this.metainfo["auths"].filter(bt => { let listbtns = this.metainfo["auths"].filter(bt => {
return bt.isInRow; return bt.isInRow;
}); });
this.metainfo["list"].forEach(c=>{ this.metainfo["list"].forEach(c => {
if(c.key=="handle"){ if (c.key == "handle") {
c.button.push(...listbtns) c.button.push(...listbtns);
} }
}) });
return this.metainfo["list"]
return this.metainfo["list"];
} }
} }
}; };
......
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