Commit 59f0b415 by 蒋勇

d

parent 42a5a9d6
import axios from '@/libs/api.request' import axios from '@/libs/api.request'
export const getTableData = (url,query) => { export const getTableData = (url,query) => {
console.log(url) console.log(url,"========================")
return axios.request({ return axios.request({
url: url, url: url,
method: 'post', method: 'post',
data:query data:query
}) })
} }
export const saveFormData = (url,data) => {
return axios.request({
url: url,
method: 'post',
data:data
})
}
export const deleteData = (url,data) => {
return axios.request({
url: url,
method: 'post',
data:data
})
}
export const bulkDeleteData = (url,data) => {
return axios.request({
url: url,
method: 'post',
data:data
})
}
export const getDragList = () => { export const getDragList = () => {
return axios.request({ return axios.request({
......
import axios from '@/libs/api.request' import axios from '@/libs/api.request'
export const refQuery = (url,q) => { export const refQuery = (url,q) => {
console.log(">>>>>>>>>>>.",url,q)
return axios.request({ return axios.request({
url: url, url: url,
method: 'post', method: 'post',
......
...@@ -6,7 +6,7 @@ export const login = ({ userName, password }) => { ...@@ -6,7 +6,7 @@ export const login = ({ userName, password }) => {
password password
} }
return axios.request({ return axios.request({
url: 'login', url: '/web/auth/userCtl/pmlogin',
data, data,
method: 'post' method: 'post'
}) })
...@@ -14,11 +14,8 @@ export const login = ({ userName, password }) => { ...@@ -14,11 +14,8 @@ export const login = ({ userName, password }) => {
export const getUserInfo = (token) => { export const getUserInfo = (token) => {
return axios.request({ return axios.request({
url: 'get_info', url: '/web/auth/userCtl/getUserInfo',
params: { method: 'post'
token
},
method: 'get'
}) })
} }
......
...@@ -43,7 +43,7 @@ export default { ...@@ -43,7 +43,7 @@ export default {
data () { data () {
return { return {
form: { form: {
userName: 'super_admin', userName: '',
password: '' password: ''
} }
} }
......
...@@ -4,8 +4,10 @@ ...@@ -4,8 +4,10 @@
<side-menu accordion ref="sideMenu" :active-name="$route.name" :collapsed="collapsed" @on-select="turnToPage" :menu-list="menuList"> <side-menu accordion ref="sideMenu" :active-name="$route.name" :collapsed="collapsed" @on-select="turnToPage" :menu-list="menuList">
<!-- 需要放在菜单上面的内容,如Logo,写在side-menu标签内部,如下 --> <!-- 需要放在菜单上面的内容,如Logo,写在side-menu标签内部,如下 -->
<div class="logo-con"> <div class="logo-con">
<img v-show="!collapsed" :src="maxLogo" key="max-logo" /> <!-- <img v-show="!collapsed" :src="maxLogo" key="max-logo" /> -->
<img v-show="collapsed" :src="minLogo" key="min-logo" /> <img v-show="collapsed" :src="minLogo" key="min-logo" />
<div v-show="!collapsed" style="font-size:28px;color:white">
<Icon type="ios-apps" size="28" color="white"/>智慧中台</div>
</div> </div>
</side-menu> </side-menu>
</Sider> </Sider>
......
...@@ -54,6 +54,9 @@ ...@@ -54,6 +54,9 @@
@on-row-dblclick="onRowDblclick" @on-row-dblclick="onRowDblclick"
@on-expand="onExpand" @on-expand="onExpand"
> >
<template v-for="cl in tmplcols" slot-scope="{ row, index }" :slot="cl.key">
<div :key="'tml'+cl.prop" v-html="formatCol(row,cl.key,index)"></div>
</template>
<slot name="header" slot="header"></slot> <slot name="header" slot="header"></slot>
<slot name="footer" slot="footer"></slot> <slot name="footer" slot="footer"></slot>
<slot name="loading" slot="loading"></slot> <slot name="loading" slot="loading"></slot>
...@@ -89,6 +92,12 @@ export default { ...@@ -89,6 +92,12 @@ export default {
return []; return [];
} }
}, },
formatCol:{
type:Function,
default(){
return (row,key,index)=>row[key]
}
},
columns: { columns: {
type: Array, type: Array,
default() { default() {
...@@ -366,6 +375,10 @@ export default { ...@@ -366,6 +375,10 @@ export default {
computed:{ computed:{
searchcols:function(){ searchcols:function(){
return this.columns?this.columns.filter(item=>item.insearch):[] return this.columns?this.columns.filter(item=>item.insearch):[]
},
tmplcols(){
let rtns=this.columns.filter(item=>{ return item.slot && item.slot!=""})
return rtns
} }
} }
}; };
......
...@@ -2,7 +2,7 @@ export default { ...@@ -2,7 +2,7 @@ export default {
/** /**
* @description 配置显示在浏览器标签的title * @description 配置显示在浏览器标签的title
*/ */
title: 'iView-admin', title: '智慧中台 ',
/** /**
* @description token在Cookie中存储的天数,默认1天 * @description token在Cookie中存储的天数,默认1天
*/ */
...@@ -12,7 +12,7 @@ export default { ...@@ -12,7 +12,7 @@ export default {
* 如果不使用,则需要在路由中给需要在菜单中展示的路由设置meta: {title: 'xxx'} * 如果不使用,则需要在路由中给需要在菜单中展示的路由设置meta: {title: 'xxx'}
* 用来在菜单中显示文字 * 用来在菜单中显示文字
*/ */
useI18n: true, useI18n: false,
/** /**
* @description api请求基础路径 * @description api请求基础路径
*/ */
......
import axios from 'axios' import axios from 'axios'
import store from '@/store' import store from '@/store'
import { getToken } from './util'
// import { Spin } from 'iview' // import { Spin } from 'iview'
const addErrorLog = errorInfo => { const addErrorLog = errorInfo => {
const { statusText, status, request: { responseURL } } = errorInfo const { statusText, status, request: { responseURL } } = errorInfo
...@@ -21,7 +22,7 @@ class HttpRequest { ...@@ -21,7 +22,7 @@ class HttpRequest {
const config = { const config = {
baseURL: this.baseUrl, baseURL: this.baseUrl,
headers: { headers: {
// Authorization:"Bearer "+getToken()
} }
} }
return config return config
......
...@@ -12,9 +12,10 @@ export const getTableData = req => { ...@@ -12,9 +12,10 @@ export const getTableData = req => {
let tableData = [] let tableData = []
doCustomTimes(100, () => { doCustomTimes(100, () => {
tableData.push(Mock.mock({ tableData.push(Mock.mock({
name: '@name', userName:'@name',
nickName: '@name',
email: '@email', email: '@email',
createTime: '@date' created_time: '@date'
})) }))
}) })
rtn.status=0; rtn.status=0;
......
...@@ -11,9 +11,9 @@ Mock.setup({ ...@@ -11,9 +11,9 @@ 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(/.*findAndCountAll/, 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)
...@@ -26,6 +26,6 @@ Mock.mock(/\/message\/count/, messageCount) ...@@ -26,6 +26,6 @@ Mock.mock(/\/message\/count/, messageCount)
Mock.mock(/\/get_org_data/, getOrgData) Mock.mock(/\/get_org_data/, getOrgData)
Mock.mock(/\/get_tree_select_data/, getTreeSelectData) Mock.mock(/\/get_tree_select_data/, getTreeSelectData)
Mock.mock(/.*refQuery/, refQuery) // Mock.mock(/.*refQuery/, refQuery)
export default Mock export default Mock
...@@ -24,6 +24,7 @@ const turnTo = (to, access, next) => { ...@@ -24,6 +24,7 @@ const turnTo = (to, access, next) => {
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
iView.LoadingBar.start() iView.LoadingBar.start()
const token = getToken() const token = getToken()
console.log(token,to.name)
if (!token && to.name !== LOGIN_PAGE_NAME) { if (!token && to.name !== LOGIN_PAGE_NAME) {
// 未登录且要跳转的页面不是登录页 // 未登录且要跳转的页面不是登录页
next({ next({
......
...@@ -42,7 +42,7 @@ export default [ ...@@ -42,7 +42,7 @@ export default [
name: 'home', name: 'home',
meta: { meta: {
hideInMenu: true, hideInMenu: true,
title: '首页', title: '仪表盘',
notCache: true, notCache: true,
icon: 'md-home' icon: 'md-home'
}, },
...@@ -51,6 +51,64 @@ export default [ ...@@ -51,6 +51,64 @@ export default [
] ]
}, },
{ {
path: '/user',
name: 'user',
meta: {
icon: 'ios-settings',
title: '系统管理'
},
component: Main,
children: [
{
path: 'user_info',
name: 'user_info',
meta: {
icon: 'ios-man',
title: '用户信息'
},
component: () => import('@/view/userinfo/userinfo_page.vue')
},
{
path: 'update_paste_page',
name: 'update_paste_page',
meta: {
icon: 'md-clipboard',
title: '角色信息'
},
component: () => import('@/view/update/update-paste.vue')
}
]
},
{
path: '/opinfo',
name: 'opinfo',
meta: {
icon: 'ios-podium',
title: '运营管理'
},
component: Main,
children: [
{
path: 'channel_info',
name: 'channel_info',
meta: {
icon: 'ios-man-outline',
title: '渠道信息'
},
component: () => import('@/view/update/update-table.vue')
},
{
path: 'update_paste_page',
name: 'update_paste_page',
meta: {
icon: 'md-clipboard',
title: '结算信息'
},
component: () => import('@/view/update/update-paste.vue')
}
]
},
{
path: '', path: '',
name: 'doc', name: 'doc',
meta: { meta: {
...@@ -171,15 +229,6 @@ export default [ ...@@ -171,15 +229,6 @@ export default [
component: () => import('@/view/components/cropper/cropper.vue') component: () => import('@/view/components/cropper/cropper.vue')
}, },
{ {
path: 'tables_page',
name: 'tables_page',
meta: {
icon: 'md-grid',
title: '多功能表格'
},
component: () => import('@/view/components/tables/tables.vue')
},
{
path: 'split_pane_page', path: 'split_pane_page',
name: 'split_pane_page', name: 'split_pane_page',
meta: { meta: {
......
export default { export default {
bizCode:"userinfo", bizCode: "userinfo",
name:"用户信息维护", name: "用户信息维护",
list: [ list: [
{ title: '姓名', key: 'name', sortable: true ,insearch:true}, { title: '账号', key: 'userName', sortable: true, insearch: true},//slot--自定义列 insearch--是否快速查询
{ title: '邮件', key: 'email', editable: true,insearch:true}, { title: '昵称', key: 'nickName', sortable: true, insearch: true },
{ title: '创建时间', key: 'createTime' }, { title: '角色', key: 'roleName', sortable: false, insearch: false,slot:'roleName' },
{ { title: '邮件', key: 'mail', editable: true, insearch: true },
title: 'Handle', { title: '创建时间', key: 'created_time' },
key: 'handle', {
button: [//这个数组中内容,需要按照权限字符串,在服务端构造 title: 'Handle',
] key: 'handle',
} button: [//这个数组中内容,需要按照权限字符串,在服务端构造
], ]
"form":{ }
name:"xxx", ],
main:[ "form": {
// { name: "xxx",
// "title":"控制信息", main: [
// ctls:[ // {
// {"type":"switch","label":"是否管理员","prop":"isAdmin","opentext":"是","closetext":"否","trurcolor":"","falsecolor":"","placeHolder":"请输入单次使用消耗的宝币数","style":""}, // "title":"控制信息",
// // {"type":"select","refModel":"pmproduct","isMulti":false,"label":"所属产品","prop":"pmproduct_id","labelField":"name","valueField":"id","style":""}, // ctls:[
// {"type":"dic-select","dicName":"app_type","isMulti":true,"label":"所属产品","prop":"apptype","placeHolder":"请选择 应用类型"}, // {"type":"switch","label":"是否管理员","prop":"isAdmin","opentext":"是","closetext":"否","trurcolor":"","falsecolor":"","placeHolder":"请输入单次使用消耗的宝币数","style":""},
// {"type":"model-select","refModel":"user","isMulti":false,"label":"所属产品","prop":"uid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id"}, // // {"type":"select","refModel":"pmproduct","isMulti":false,"label":"所属产品","prop":"pmproduct_id","labelField":"name","valueField":"id","style":""},
// {"type":"remote-select","refModel":"user","isMulti":false,"label":"所属产品x","prop":"xid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id"}, // {"type":"dic-select","dicName":"app_type","isMulti":true,"label":"所属产品","prop":"apptype","placeHolder":"请选择 应用类型"},
// {"type":"checkgroup","refModel":"user","label":"所属产品","prop":"mmmid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id","isBorder":true}, // {"type":"model-select","refModel":"user","isMulti":false,"label":"所属产品","prop":"uid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id"},
// {"type":"radiogroup","refModel":"user","label":"所属产品","prop":"xmmmid","placeHolder":"请选择 应用类型","labelField":"name","valueField":"id","isBorder":true}, // {"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":"基本信息", // },
"key":"baseinfo", {
ctls:[ "title": "基本信息",
{"type":"input","label":"姓名","prop":"name","placeHolder":"登录账号","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]}, "key": "baseinfo",
{"type":"input","label":"邮件","prop":"email","placeHolder":"昵称","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]}, ctls: [
{"type":"input","label":"创建时间","prop":"createTime","placeHolder":"请输入电话","style":"",rules:[ { "validator":"validatex","trigger": 'blur' },{ "required": true, "message": ' ', "trigger": 'blur' },]}, { "type": "input", "label": "昵称", "prop": "nickName", "placeHolder": "请输入昵称", "style": "", rules: [{ "required": true, "message": ' ', "trigger": 'blur' },] },
// {"type":"select","refModel":"auth.role","isMulti":true,"label":"角色","prop":"roles","labelField":"name","valueField":"id","style":""}, { "type": "input", "label": "邮件", "prop": "mail", "placeHolder": "请输入邮件", "style": "", rules: [{ "required": true, "message": ' ', "trigger": 'blur' },] },
] {"type":"model-select","refModel":"auth.role","isMulti":true,"label":"角色","prop":"roles","labelField":"name","valueField":"id","style":""},
}
],
lists:[
{
title:"子列表",
refBizCode:"xxx"
}
] ]
}, }
"search":{ ],
name:"search", lists: [
main:[ {
{ title: "子列表",
"title":"基本信息", refBizCode: "xxx"
"key":"baseinfo", }
ctls:[ ]
{"type":"input","label":"姓名","prop":"name","placeHolder":"登录账号","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]}, },
{"type":"input","label":"邮件","prop":"email","placeHolder":"昵称","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]}, "search": {
{"type":"input","label":"创建时间","prop":"createTime","placeHolder":"请输入电话","style":"",rules:[ { "validator":"validatex","trigger": 'blur' },{ "required": true, "message": ' ', "trigger": 'blur' },]}, name: "search",
// {"type":"select","refModel":"auth.role","isMulti":true,"label":"角色","prop":"roles","labelField":"name","valueField":"id","style":""}, main: [
] {
} "title": "基本信息",
"key": "baseinfo",
ctls: [
{ "type": "input", "label": "昵称", "prop": "nickName", "placeHolder": "昵称", "style": "", rules: [] },
{ "type": "input", "label": "邮件", "prop": "mail", "placeHolder": "邮件", "style": "", rules: [] },
// {"type":"select","refModel":"auth.role","isMulti":true,"label":"角色","prop":"roles","labelField":"name","valueField":"id","style":""},
] ]
},
"auths":{
"add":[
{"icon":"ios-add-circle-outline","title":"新增","type":"text","key":"create","isOnGrid":true},
{"icon":"el-icon-save","title":"保存","type":"text","key":"save","isOnForm":true},
],
"edit":[
{"icon":"el-icon-edit","title":"修改","type":"text","key":"edit","isInRow":true},
],
"delete":[
{"icon":"el-icon-remove","title":"删除","type":"text","key":"delete","isInRow":true},
{"icon":"el-icon-edit","title":"停用","type":"text","key":"stopUser","isInRow":true,"boolProp":"isEnabled","falseText":"启用"},
],
"common":[
{"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},
{"icon":"ios-search-outline","title":"高级","type":"text","key":"adv-search","isOnGrid":true},
],
} }
} ]
\ No newline at end of file
},
"auths": {
"add": [
{ "icon": "ios-add-circle-outline", "title": "新增", "type": "text", "key": "create", "isOnGrid": true },
{ "icon": "ios-square-outline", "title": "保存", "type": "text", "key": "save", "isOnForm": true },
{ "icon": "ios-cloud-download-outline", "title": "下载", "type": "text", "key": "export", "isOnGrid": true },
],
"edit": [
{ "icon": "ios-create-outline", "title": "修改", "type": "text", "key": "edit", "isInRow": true }
],
"delete": [
{ "icon": "ios-trash-outline", "title": "删除", "type": "text", "key": "deletes", "isOnGrid": true },
{ "icon": "ios-trash-outline", "title": "删除", "type": "text", "key": "delete", "isInRow": true },
],
"common": [
{ "icon": "ios-undo-outline", "title": "取消", "type": "text", "key": "cancel", "isOnForm": true },
{ "icon": "ios-undo-outline", "title": "取消", "type": "text", "key": "cancel-search", "isInSearch": true },
{ "icon": "ios-search-outline", "title": "搜索", "type": "text", "key": "start-search", "isInSearch": true },
{ "icon": "ios-search-outline", "title": "高级", "type": "text", "key": "adv-search", "isOnGrid": true },
],
}
}
...@@ -81,14 +81,47 @@ export default { ...@@ -81,14 +81,47 @@ export default {
userName, userName,
password password
}).then(res => { }).then(res => {
const data = res.data const rtn = res.data
commit('setToken', data.token) console.log(rtn)
resolve() if(rtn.status==0){
commit('setToken', rtn.data.token)
commit('setAvatar', "https://file.iviewui.com/dist/a0e88e83800f138b94d2414621bd9704.png")
commit('setUserName', rtn.data.user.userName)
commit('setUserId', rtn.data.user.id)
commit('setAccess', ['super_admin', 'admin'])
commit('setHasGetInfo', true)
resolve(rtn.data)
}else{
reject(rtn.data)
}
}).catch(err => { }).catch(err => {
reject(err) reject(err)
}) })
}) })
}, },
// 获取用户相关信息
getUserInfo ({ state, commit }) {
return new Promise((resolve, reject) => {
try {
getUserInfo(state.token).then(res => {
const rtn = res.data
if(rtn.status==0){
commit('setAvatar', "https://file.iviewui.com/dist/a0e88e83800f138b94d2414621bd9704.png")
commit('setUserName', rtn.data.userName)
commit('setUserId', rtn.data.id)
commit('setAccess', ['super_admin', 'admin'])
commit('setHasGetInfo', true)
rtn.data.access= ['super_admin', 'admin']
resolve(rtn.data)
}else{
reject(rtn.data)
}
})
} catch (error) {
reject(error)
}
})
},
// 退出登录 // 退出登录
handleLogOut ({ state, commit }) { handleLogOut ({ state, commit }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
...@@ -105,26 +138,6 @@ export default { ...@@ -105,26 +138,6 @@ export default {
// resolve() // resolve()
}) })
}, },
// 获取用户相关信息
getUserInfo ({ state, commit }) {
return new Promise((resolve, reject) => {
try {
getUserInfo(state.token).then(res => {
const data = res.data
commit('setAvatar', data.avatar)
commit('setUserName', data.name)
commit('setUserId', data.user_id)
commit('setAccess', data.access)
commit('setHasGetInfo', true)
resolve(data)
}).catch(err => {
reject(err)
})
} catch (error) {
reject(error)
}
})
},
// 此方法用来获取未读消息条数,接口只返回数值,不返回消息列表 // 此方法用来获取未读消息条数,接口只返回数值,不返回消息列表
getUnreadMessageCount ({ state, commit }) { getUnreadMessageCount ({ state, commit }) {
getUnreadCount().then(res => { getUnreadCount().then(res => {
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
editable editable
searchable searchable
search-place="top" search-place="top"
:loading="tblloading"
highlightRow highlightRow
v-model="tableData" v-model="tableData"
:columns="colswithauth" :columns="colswithauth"
...@@ -27,8 +28,9 @@ ...@@ -27,8 +28,9 @@
@on-exec="doexec" @on-exec="doexec"
@on-select="onsels" @on-select="onsels"
@on-adv-search="advsearch" @on-adv-search="advsearch"
:formatCol="formatCol"
> >
<template v-slot:tblbtnarea="slotProps"> <template v-slot:tblbtnarea="slotProps">
<Button <Button
v-for="bt in onlistbtns" v-for="bt in onlistbtns"
:key="bt.key" :key="bt.key"
...@@ -83,9 +85,9 @@ ...@@ -83,9 +85,9 @@
<script> <script>
import Tables from "_c/tables"; import Tables from "_c/tables";
import Forms from "./forms/forms"; import Forms from "./forms/forms";
import { getTableData } from "@/api/data"; import { getTableData, saveFormData,deleteData,bulkDeleteData} from "@/api/data";
export default { export default {
name: "tables_page", name: "biztables",
components: { components: {
Tables, Tables,
Forms Forms
...@@ -114,18 +116,23 @@ export default { ...@@ -114,18 +116,23 @@ export default {
default() { default() {
return []; return [];
} }
} },
formatCol:{
type:Function,
default(){
return (row,key,index)=>row[key]
}
},
}, },
data() { data() {
this.packageName = "auth";
this.metaName = "user_info";
return { return {
tblloading:false,
metainfo: this.$store.getters[this.metaName], metainfo: this.$store.getters[this.metaName],
tableData: [], tableData: [],
isdel: false, isdel: false,
modal_loading: false, modal_loading: false,
currentRow: null, currentRow: null,
currentSels: null, currentSels: [],
pageInfo: { pageInfo: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
...@@ -134,7 +141,7 @@ export default { ...@@ -134,7 +141,7 @@ export default {
searchModel: {}, searchModel: {},
showsearch: false, showsearch: false,
showedform: false, showedform: false,
fm_status:"normal", fm_status: "normal",
sum_fields: this.sumfields ? this.sumfields : [], sum_fields: this.sumfields ? this.sumfields : [],
avg_fields: this.avgfields ? this.avgfields : [], avg_fields: this.avgfields ? this.avgfields : [],
...@@ -142,10 +149,16 @@ export default { ...@@ -142,10 +149,16 @@ export default {
? this.calcfields ? this.calcfields
: [{ label: "余额", value: 1000 }], : [{ label: "余额", value: 1000 }],
sumdata: {}, sumdata: {},
avgdata: {} avgdata: {},
clickcount: { save: 0 },
isrowdel:true
}; };
}, },
methods: { methods: {
deepclone(objin) {
let rtnstr = JSON.stringify(objin);
return JSON.parse(rtnstr);
},
onpagechange() { onpagechange() {
this.fetchData(); this.fetchData();
}, },
...@@ -171,43 +184,118 @@ export default { ...@@ -171,43 +184,118 @@ export default {
this.fetchData(); this.fetchData();
}, },
onsels(sels, lastsel) { onsels(sels, lastsel) {
this.currentSels = currentSels; console.log("dddddddddddddddddddddddddddd");
this.currentRow = lastsel; this.currentSels = sels;
}, },
delpost() { delpost() {
let url=""
if(this.isrowdel){//行删除
let url=this.buildUrl("delete")
let data={id: this.currentRow.id}
deleteData(url,data).then(res=>{
if(res.data.data.status==0){
this.$Message.success("当前记录已经成功删除.");
this.fetchData()
}else{
this.$Message.success("当前记录删除失败,请重试或联系管理员.");
}
})
}else{//多行删除
let url=this.buildUrl("bulkDelete")
let ids= this.currentSels.map(item=>{
return item.id
})
bulkDeleteData(url,ids).then(res=>{
if(res.data.data.status==0){
this.$Message.success("批量删除已经成功完成.");
this.currentSels=[]
this.fetchData()
}else{
this.$Message.success("当前删除失败,请重试或联系管理员.");
}
})
}
this.modal_loading = true; this.modal_loading = true;
setTimeout(() => { setTimeout(() => {
this.isdel = false; this.isdel = false;
this.modal_loading = false; this.modal_loading = false;
this.currentRow = null; this.currentRow = null;
}, 2000); }, 500);
}, },
doexec(key, row) { doexec(key, row) {
if (key == "delete") { if (key == "delete") {
this.currentRow = row; this.currentRow = row;
this.isdel = true; this.isdel = true;
this.isrowdel=true;
}
if(key=="deletes"){
if(this.currentSels.length==0){
}else{
this.isdel = true;
this.isrowdel=false;
}
} }
if (key == "edit") { if (key == "edit") {
this.fm_status="edit" this.fm_status = "edit";
this.showedform = true; this.showedform = true;
setTimeout(() => {
this.$refs.edform.formModel = this.deepclone(row);
}, 100);
} }
if (key == "create") { if (key == "create") {
this.fm_status="create" this.fm_status = "create";
this.showedform = true; this.showedform = true;
} }
if (key == "save") { if (key == "save") {
this.fm_status="normal" if (this.clickcount["save"] == 0) {
this.showedform = false; this.clickcount["save"] = this.clickcount["save"] + 1;
let url = "";
let msg = "";
if (this.fm_status == "edit") {
url = this.buildUrl("update");
msg = "当前的更新操作已成功.";
}
if (this.fm_status == "create") {
url = this.buildUrl("create");
msg = "当前的新增操作已成功.";
}
saveFormData(url, row).then(res => {
let rtn=res.data
console.log(rtn)
if (rtn.status == 0) {
this.$refs.edform.resetForm();
this.fm_status = "normal";
this.showedform = false;
this.clickcount["save"] = this.clickcount["save"] - 1;
this.$Message.success(msg);
this.fetchData()
} else {
this.fm_status = "normal";
this.showedform = false;
this.$Message.error("当前操作失败,请稍后重试或联系管理员.");
this.fetchData()
}
});
} else {
this.$Message.warning("当前进行了重复的无效操作.");
}
} }
if (key == "cancel") { if (key == "cancel") {
this.fm_status="normal" this.fm_status = "normal";
this.showedform = false; this.showedform = false;
this.$refs.edform.resetForm();
if( this.clickcount["save"]==1){
this.clickcount["save"]=this.clickcount["save"]-1
}
} }
if (key == "export") { if (key == "export") {
this.exportExcel() this.exportExcel();
} }
if(key=="adv-search"){ if (key == "adv-search") {
this.advsearch() this.advsearch();
} }
console.log(key, row); console.log(key, row);
}, },
...@@ -227,21 +315,29 @@ export default { ...@@ -227,21 +315,29 @@ export default {
filename: `table-${new Date().valueOf()}.csv` filename: `table-${new Date().valueOf()}.csv`
}); });
}, },
fetchData(q) { buildUrl(methodName) {
let modelname = this.metaName.split("_"); let modelname = this.metaName.split("_")[0];
console.log(modelname,">>>>>>>>>>>>>>>>>>")
let url = let url =
"/web/" + "/web/" + this.packageName + "/" + modelname + "Ctl/" + methodName;
this.packageName +
"/" + return url;
modelname + },
"Ctl/" + fetchData(q) {
"findAndCountAll"; let url = this.buildUrl("findAndCountAll");
console.log(url);
let query = this.buildQuery(q); let query = this.buildQuery(q);
this.tblloading=true
getTableData(url, query).then(res => { getTableData(url, query).then(res => {
console.log(res.data); let rtn=res.data
this.tableData = res.data.data.results.rows; if(rtn.status==0){
this.pageInfo.total = res.data.data.results.count; console.log(res.data);
this.tableData = rtn.data.results.rows;
this.pageInfo.total = rtn.data.results.count;
this.tblloading=false
}else{
//this.$Message.error("查询数据有问题,请稍后重试或联系管理员");
this.tblloading=false
}
}); });
} }
}, },
...@@ -286,6 +382,7 @@ export default { ...@@ -286,6 +382,7 @@ export default {
}); });
this.metainfo["list"].forEach(c => { this.metainfo["list"].forEach(c => {
if (c.key == "handle") { if (c.key == "handle") {
c.button=[]
c.button.push(...listbtns); c.button.push(...listbtns);
} }
}); });
......
...@@ -4,10 +4,11 @@ ...@@ -4,10 +4,11 @@
style="width:150px" style="width:150px"
@on-change="onchange" @on-change="onchange"
clearable clearable
transfer
:multiple="isMulti" :multiple="isMulti"
:placeholder="placeHolder" :placeholder="placeHolder"
> >
<Option v-for="item in datasource" :value="item.value" :key="item.value">{{ item.label }}</Option> <Option v-for="item in transdatas" :value="item.value" :key="item.value">{{ item.label }}</Option>
</Select> </Select>
</template> </template>
<script> <script>
...@@ -31,6 +32,21 @@ export default { ...@@ -31,6 +32,21 @@ export default {
this.sels = nv; this.sels = nv;
} }
}, },
computed:{
transdatas(){
if(this.labelField && this.valueField){
let mrtn= this.datasource.map(item=>{
return {
value:item[this.valueField],
label:item[this.labelField]
}
})
return mrtn
}else{
return this.datasource
}
}
},
methods: { methods: {
onchange(v) { onchange(v) {
console.log("=============", v); console.log("=============", v);
...@@ -39,11 +55,13 @@ export default { ...@@ -39,11 +55,13 @@ export default {
initDataSource(slike) { initDataSource(slike) {
// this.datasource=[] // this.datasource=[]
let query = {}; let query = {};
let url = "/web/common/" + this.refModel + "Ctl/refQuery"; let p=this.refModel.split(".").join("/")
let url = "/web/" + p + "Ctl/refQuery";
query.fields = [this.labelField, this.valueField]; query.fields = [this.labelField, this.valueField];
query.likestr = slike; query.likestr = slike;
query.refwhere = this.refwhere ? this.refwhere : {}; query.refwhere = this.refwhere ? this.refwhere : {};
refQuery(url, query).then(r => { refQuery(url, query).then(r => {
console.log(">>>>>>>>>>>>>>>>>>>>..==================")
if(r.data){ if(r.data){
this.datasource=r.data; this.datasource=r.data;
} }
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
<div> <div>
<Card style="height:100%"> <Card style="height:100%">
<p slot="title"> <p slot="title">
<Icon type="ios-film-outline"></Icon> <Icon type="ios-paper-outline"/>
{{forminfo.name}} {{forminfo.name}}
</p> </p>
<Form ref="ofm" :model="formModel" :rules="metaRules"> <Form ref="ofm" :model="formModel" :rules="metaRules">
<template v-if="forminfo.lists && forminfo.lists.length>0"> <template v-if="forminfo.lists && forminfo.lists.length>0">
<Tabs value="main"> <Tabs value="main">
<TabPane label="表单信息" name="main"> <TabPane label="表单信息" name="main">
<template v-for="group in forminfo.main"> <template 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="2" :sm="4" :md="6" :lg="8" v-for="ctl in group.ctls" :key="ctl.prop">
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
:refModel="ctl.refModel" :refModel="ctl.refModel"
:placeHolder="ctl.placeHolder" :placeHolder="ctl.placeHolder"
:isMulti="ctl.isMulti" :isMulti="ctl.isMulti"
:labelField="ctl.labelField"
:valueField="ctl.valueField"
></ModelSelect> ></ModelSelect>
</template> </template>
<template v-if="ctl.type=='remote-select'"> <template v-if="ctl.type=='remote-select'">
...@@ -42,6 +44,8 @@ ...@@ -42,6 +44,8 @@
:refModel="ctl.refModel" :refModel="ctl.refModel"
:placeHolder="ctl.placeHolder" :placeHolder="ctl.placeHolder"
:isMulti="ctl.isMulti" :isMulti="ctl.isMulti"
:labelField="ctl.labelField"
:valueField="ctl.valueField"
></RemoteSelect> ></RemoteSelect>
</template> </template>
<template v-if="ctl.type=='switch'"> <template v-if="ctl.type=='switch'">
...@@ -74,9 +78,12 @@ ...@@ -74,9 +78,12 @@
</Row> </Row>
</template> </template>
</TabPane> </TabPane>
<TabPane v-for="lst in forminfo.lists" :key="lst.refBizCode" :label="lst.title" :name="lst.refBizCode"> <TabPane
标签二的内容 v-for="lst in forminfo.lists"
</TabPane> :key="lst.refBizCode"
:label="lst.title"
:name="lst.refBizCode"
>标签二的内容</TabPane>
</Tabs> </Tabs>
</template> </template>
<template v-else v-for="group in forminfo.main"> <template v-else v-for="group in forminfo.main">
...@@ -145,9 +152,7 @@ ...@@ -145,9 +152,7 @@
</template> </template>
</Form> </Form>
<div class="form-footer"> <div class="form-footer">
<slot :fm="formModel"> <slot :fm="formModel"></slot>
</slot>
</div> </div>
</Card> </Card>
</div> </div>
...@@ -202,8 +207,8 @@ export default { ...@@ -202,8 +207,8 @@ export default {
} }
}, },
methods: { methods: {
resetForm(){ resetForm() {
this.$refs.ofm.resetFields() this.$refs.ofm.resetFields();
}, },
validatex(rule, value, callback) { validatex(rule, value, callback) {
if (this.refvalidatemethod) { if (this.refvalidatemethod) {
...@@ -256,14 +261,14 @@ export default { ...@@ -256,14 +261,14 @@ export default {
</script> </script>
<style> <style>
.form-footer{ .form-footer {
width: 100%; width: 100%;
position: absolute; position: absolute;
bottom: 0; bottom: 0;
left: 0; left: 0;
border-top: 1px solid #e8e8e8; border-top: 1px solid #e8e8e8;
padding: 10px 16px; padding: 10px 16px;
text-align: right; text-align: right;
background: #fff; background: #fff;
} }
</style> </style>
...@@ -29,11 +29,14 @@ export default { ...@@ -29,11 +29,14 @@ export default {
]), ]),
handleSubmit ({ userName, password }) { handleSubmit ({ userName, password }) {
this.handleLogin({ userName, password }).then(res => { this.handleLogin({ userName, password }).then(res => {
this.getUserInfo().then(res => { this.$router.push({
this.$router.push({
name: this.$config.homeName name: this.$config.homeName
})
}) })
}).catch(err=>{
this.$Notice.error({
title: '系统通知',
desc: '账号或密码有误!'
});
}) })
} }
} }
......
<template>
<div>
<BizTable :formatCol="formatCol" metaName="user_info" packageName="auth" isMulti></BizTable>
</div>
</template>
<script>
import BizTable from "../components/tables/biztables"
export default {
name: 'userinfo_page',
data () {
return {
}
},
components: {
BizTable
},
methods:{
formatCol(row,key,index){
if(key=="roleName"){
let rolestr=row.Roles.map(item=>item.name).join(",")
row.roles=row.Roles.map(item=>item.id)
return `<span style="color:red">rolestr</span>`
}
return row[key]
}
}
}
</script>
<style>
</style>
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