代码修改

master
toesbieya 6 years ago
parent b145efcaa9
commit 5030e3db57
  1. 5
      vue/src/asset/style/element-ui.scss
  2. 5
      vue/src/asset/style/index.scss
  3. 1
      vue/src/component/abstract/Pagination/index.vue
  4. 126
      vue/src/component/form/Search/index.vue
  5. 24
      vue/src/component/form/Search/item.vue
  6. 7
      vue/src/component/form/ValidateInfo/index.vue
  7. 3
      vue/src/config/index.js
  8. 6
      vue/src/globalMethod/Guide/main.vue
  9. 4
      vue/src/globalMethod/Verify/main.vue
  10. 4
      vue/src/main.js
  11. 3
      vue/src/mixin/chart/logic.js
  12. 31
      vue/src/mixin/docTableMixin.js
  13. 0
      vue/src/util/element-ui/elForm.js
  14. 21
      vue/src/util/element-ui/elTree.js
  15. 15
      vue/src/util/errorLog.js
  16. 2
      vue/src/util/file.js
  17. 3
      vue/src/util/secret.js
  18. 14
      vue/src/util/tree.js
  19. 38
      vue/src/view/app/common/ListPage/index.vue
  20. 6
      vue/src/view/app/login/LoginForm.vue
  21. 2
      vue/src/view/app/login/RegisterForm.vue
  22. 2
      vue/src/view/message/manage/EditDialog.vue
  23. 72
      vue/src/view/message/manage/indexPage.vue
  24. 2
      vue/src/view/message/user/MessageStream.vue
  25. 30
      vue/src/view/purchase/inbound/indexPage.vue
  26. 38
      vue/src/view/purchase/order/indexPage.vue
  27. 38
      vue/src/view/sell/order/indexPage.vue
  28. 30
      vue/src/view/sell/outbound/indexPage.vue
  29. 19
      vue/src/view/stock/current/indexPage.vue
  30. 4
      vue/src/view/system/customer/EditDialog.vue
  31. 93
      vue/src/view/system/customer/indexPage.vue
  32. 18
      vue/src/view/system/department/component/EditDialog.vue
  33. 20
      vue/src/view/system/department/indexPage.vue
  34. 6
      vue/src/view/system/menu/indexPage.vue
  35. 17
      vue/src/view/system/role/EditDialog.vue
  36. 81
      vue/src/view/system/role/indexPage.vue
  37. 4
      vue/src/view/system/supplier/EditDialog.vue
  38. 93
      vue/src/view/system/supplier/indexPage.vue
  39. 13
      vue/src/view/system/user/component/EditDialog.vue
  40. 91
      vue/src/view/system/user/indexPage.vue
  41. 2
      vue/src/view/userCenter/component/Account.vue

@ -181,12 +181,15 @@
} }
.el-pagination { .el-pagination {
padding-top: 20px;
text-align: right; text-align: right;
.el-pagination__editor.el-input { .el-pagination__editor.el-input {
margin: 0 5px; margin: 0 5px;
} }
.el-table + & {
padding-top: 20px;
}
} }
.el-scrollbar { .el-scrollbar {

@ -1,3 +1,4 @@
@import "~normalize.css/normalize.css";
@import "./variables"; @import "./variables";
@import "~element-ui/packages/theme-chalk/src/index"; @import "~element-ui/packages/theme-chalk/src/index";
@import "~@ele/style/index.scss"; @import "~@ele/style/index.scss";
@ -54,7 +55,7 @@ a:hover {
&-thumb { &-thumb {
width: 6px; width: 6px;
border-radius: 5px; //border-radius: 5px;
background-color: rgba($--color-primary, 0.8); background-color: rgba($--color-primary, 0.8);
&:hover { &:hover {
@ -79,6 +80,7 @@ a:hover {
align-content: space-between; align-content: space-between;
} }
/*----------路由页面的最大高度开始----------*/ /*----------路由页面的最大高度开始----------*/
$page-header-offsetHeight: $page-header-line-height + #{$page-view-margin * 2}; $page-header-offsetHeight: $page-header-line-height + #{$page-view-margin * 2};
@ -112,6 +114,7 @@ $page-header-offsetHeight: $page-header-line-height + #{$page-view-margin * 2};
/*----------路由页面的最大高度结束----------*/ /*----------路由页面的最大高度结束----------*/
.table-container { .table-container {
margin-top: 10px; margin-top: 10px;
} }

@ -19,7 +19,6 @@ export default {
current-page={page} current-page={page}
page-size={pageSize} page-size={pageSize}
total={total} total={total}
hide-on-single-page
layout="total, prev, pager, next, jumper" layout="total, prev, pager, next, jumper"
{...context.data} {...context.data}
/> />

@ -4,14 +4,11 @@ import {getElementInnerWidth} from '@/util/browser'
export default { export default {
name: "SearchForm", name: "SearchForm",
provide() {
return {
searchForm: this
}
},
props: { props: {
model: Object,
labelWidth: {type: String, default: '120px'}, labelWidth: {type: String, default: '120px'},
/*每个宽度下,一行能有多少个控件,需要是24的因数*/
xs: {type: Number, default: 1}, // <768px xs: {type: Number, default: 1}, // <768px
sm: {type: Number, default: 2}, // >=768px sm: {type: Number, default: 2}, // >=768px
md: {type: Number, default: 3}, // >=998px md: {type: Number, default: 3}, // >=998px
@ -20,10 +17,10 @@ export default {
data() { data() {
return { return {
showCollapse: false, showCollapse: false, //
collapse: true, collapse: true, //
num: 0, num: 0, //
width: 'auto' span: 8 //24
} }
}, },
@ -32,6 +29,18 @@ export default {
this.collapse = !this.collapse this.collapse = !this.collapse
}, },
handleSearch() {
this.$emit('search')
},
handleReset() {
if (!this.initialModel || !this.model) {
return
}
this.$emit('reset')
},
getElementNumInRow() { getElementNumInRow() {
const vw = getElementInnerWidth(this.$el.parentNode) const vw = getElementInnerWidth(this.$el.parentNode)
@ -43,13 +52,49 @@ export default {
resize() { resize() {
const num = this.getElementNumInRow() const num = this.getElementNumInRow()
this.num = num
this.width = `${100 / num}%` this.span = 24 / num
this.showCollapse = num < this.$slots.default.length
//
this.num = num === 1 ? num : num - 1
this.showCollapse = this.num < this.$slots.default.length
},
renderChildren(children, hide) {
return children.map(child => (
<el-col span={this.span} class={{hide}}>{child}</el-col>
))
},
renderAction() {
const ctrl = this.collapse
? {i: 'el-icon-arrow-down', t: '展开'}
: {i: 'el-icon-arrow-up', t: '收起'}
return (
<div class="search-form-action">
<el-button type="primary" size="small" on-click={this.handleSearch}> </el-button>
<el-button type="dashed" size="small" plain on-click={this.handleReset}> </el-button>
{this.showCollapse && (
<el-button
type="text"
size="small"
style="padding-left: 0"
on-click={this.handleCollapse}
>
{ctrl.t}
<v-icon icon={ctrl.i} style="margin-left: 0.5em"/>
</el-button>
)}
</div>
)
} }
}, },
mounted() { mounted() {
//
this.initialModel = this.model
this.resize() this.resize()
this.resizeObserver = new ResizeObserver(() => this.resize()) this.resizeObserver = new ResizeObserver(() => this.resize())
this.resizeObserver.observe(this.$el.parentNode) this.resizeObserver.observe(this.$el.parentNode)
@ -63,50 +108,24 @@ export default {
}, },
render() { render() {
const slots = this.$slots.default const slots = this.$slots.default, collapse = this.showCollapse && this.collapse
const collapseChildren = []
if (this.showCollapse) {
//el-row使v-show
collapseChildren.push(
<el-collapse-transition>
<div v-show={!this.collapse}>
<el-row gutter={20}>
{slots.slice(this.num)}
</el-row>
</div>
</el-collapse-transition>
)
const collapseSlot = this.$scopedSlots.collapse
collapseChildren.push( const display = collapse ? slots.slice(0, this.num) : slots
collapseSlot ? const hidden = collapse ? slots.slice(this.num) : []
collapseSlot({collapse: this.collapse, handle: this.handleCollapse})
:
<div class="searchForm__collapse">
<el-button
type="text"
size="mini"
icon={this.collapse ? 'el-icon-arrow-down' : 'el-icon-arrow-up'}
on-click={this.handleCollapse}
>
{this.collapse ? '展开' : '收起'}
</el-button>
</div>
)
}
return ( return (
<el-form <el-form
class="searchForm" class="search-form"
label-position="right" label-position="right"
label-width={this.labelWidth} label-width={this.labelWidth}
label-suffix="" label-suffix=":"
size="small" size="small"
> >
<el-row gutter={20}> <el-row gutter={20}>
{this.num > slots.length ? slots : slots.slice(0, this.num)} {this.renderChildren(display)}
{this.renderChildren(hidden, true)}
{this.renderAction()}
</el-row> </el-row>
{this.showCollapse && collapseChildren}
</el-form> </el-form>
) )
} }
@ -114,8 +133,10 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
.searchForm { .search-form {
margin-bottom: -15px; &-action {
margin-left: auto;
}
> .el-row { > .el-row {
display: flex; display: flex;
@ -123,11 +144,8 @@ export default {
flex-wrap: wrap; flex-wrap: wrap;
} }
.searchForm__collapse { .hide {
position: relative; display: none;
bottom: 20px;
margin: 0 auto;
text-align: center;
} }
} }
</style> </style>

@ -1,24 +0,0 @@
<script type="text/jsx">
export default {
name: "SearchFormItem",
inject: {
searchForm: {
default: () => ({width: 'auto'})
}
},
props: {label: String},
render() {
const {width} = this.searchForm
return (
<el-col style={{width}} span={100}>
<el-form-item label={this.label}>
{this.$slots.default}
</el-form-item>
</el-col>
)
}
}
</script>

@ -58,12 +58,7 @@ export default {
}, },
getFormRef() { getFormRef() {
let ref = this.form return typeof this.form === 'function' ? this.form() : this.form
if (!ref) return
if (typeof ref === 'function') {
ref = ref()
}
return ref
}, },
findFormItem(prop) { findFormItem(prop) {

@ -23,9 +23,6 @@ module.exports = {
//侧边栏顶上的logo地址 //侧边栏顶上的logo地址
sidebarLogoUrl: 'https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png', sidebarLogoUrl: 'https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png',
//是否使用错误日志捕捉,暂时没啥用
errorLog: true,
//路由配置 //路由配置
route: { route: {
//路由模式,['hash','history'] //路由模式,['hash','history']

@ -122,7 +122,7 @@ export default {
if (this.beforeExit) { if (this.beforeExit) {
const result = this.beforeExit(this.hasDone) const result = this.beforeExit(this.hasDone)
if (result && result.then) { if (result && result.then) {
result.then(() => this.$_clear()) result.then(this.$_clear)
} }
else result !== false && this.$_clear() else result !== false && this.$_clear()
return return
@ -138,7 +138,7 @@ export default {
if (this.step.onPrevious) { if (this.step.onPrevious) {
const result = this.step.onPrevious() const result = this.step.onPrevious()
if (result && result.then) { if (result && result.then) {
result.then(() => this.$_movePrevious()) result.then(this.$_movePrevious)
} }
else result !== false && this.$_movePrevious() else result !== false && this.$_movePrevious()
} }
@ -152,7 +152,7 @@ export default {
if (this.step.onNext) { if (this.step.onNext) {
const result = this.step.onNext() const result = this.step.onNext()
if (result && result.then) { if (result && result.then) {
result.then(() => this.$_moveNext()) result.then(this.$_moveNext)
} }
else result !== false && this.$_moveNext() else result !== false && this.$_moveNext()
} }

@ -140,7 +140,7 @@ export default {
}, },
refresh() { refresh() {
this.initImage().then(() => this.initCanvas()) this.initImage().then(this.initCanvas)
}, },
initCanvas() { initCanvas() {
@ -322,7 +322,7 @@ export default {
}, },
mounted() { mounted() {
this.initImage().then(() => this.initCanvas()) this.refresh()
}, },
} }
</script> </script>

@ -1,13 +1,11 @@
import Vue from 'vue' import Vue from 'vue'
import 'normalize.css/normalize.css' // a modern alternative to CSS resets
import Element from 'element-ui' import Element from 'element-ui'
import ElementPersonal from '@ele' import ElementPersonal from '@ele'
import '@/asset/style/index.scss' // global css import '@/asset/style/index.scss'
import App from '@/App' import App from '@/App'
import store from '@/store' import store from '@/store'
import router from '@/router' import router from '@/router'
import '@/asset/icon' import '@/asset/icon'
import '@/util/errorLog'
import '@/directive' import '@/directive'
import filters from './filter' import filters from './filter'
import globalMethod from '@/globalMethod' import globalMethod from '@/globalMethod'

@ -14,8 +14,7 @@ export default {
data() { data() {
return { return {
loading: false, loading: false
chart: null
} }
}, },

@ -1,5 +1,4 @@
import tableMixin from '@/mixin/tablePageMixin' import tableMixin from '@/mixin/tablePageMixin'
import SearchFormItem from "@/component/form/Search/item"
import LinerProgress from '@/component/LinerProgress' import LinerProgress from '@/component/LinerProgress'
import ListPage from '@/view/app/common/ListPage' import ListPage from '@/view/app/common/ListPage'
import {isEmpty} from "@/util" import {isEmpty} from "@/util"
@ -35,7 +34,7 @@ export const commonMethods = {
export default { export default {
mixins: [tableMixin], mixins: [tableMixin],
components: {SearchFormItem, LinerProgress, ListPage}, components: {LinerProgress, ListPage},
data() { data() {
return { return {
@ -69,24 +68,26 @@ export default {
return auth(this.api.exportExcel.url) return auth(this.api.exportExcel.url)
}, },
buttonGroup() {
return [
{icon: 'el-icon-search', type: 'primary', e: this.search, content: '查 询'},
this.canAdd && {icon: 'el-icon-plus', type: 'primary', e: this.add, content: '添 加'},
{icon: 'el-icon-view', type: 'primary', e: this.see, content: '查 看'},
this.canUpdate && {icon: 'el-icon-edit', type: 'primary', e: this.edit, content: '编 辑'},
this.canDel && {icon: 'el-icon-delete', type: 'danger', e: this.del, content: '删 除'},
this.canExport && {icon: 'el-icon-download', type: 'info', e: this.downloadExcel, content: '导 出'}
]
},
listPageConfig() { listPageConfig() {
return { return {
loading: this.config.loading, pageLoading: this.config.operating,
tableConfig: { buttons: [
this.canAdd && {icon: 'el-icon-plus', e: this.add, content: '添 加'},
{icon: 'el-icon-view', e: this.see, content: '查 看'},
this.canUpdate && {icon: 'el-icon-edit', e: this.edit, content: '编 辑'},
this.canDel && {icon: 'el-icon-delete', e: this.del, content: '删 除'},
this.canExport && {icon: 'el-icon-download', e: this.downloadExcel, content: '导 出'}
],
dataLoading: this.config.loading,
search: {
props: {model: this.searchForm},
on: {search: this.search}
},
table: {
props: {data: this.tableData}, props: {data: this.tableData},
on: {'row-click': this.rowClick, 'expand-change': this.getSubList} on: {'row-click': this.rowClick, 'expand-change': this.getSubList}
}, },
paginationConfig: { pagination: {
props: {model: this.searchForm}, props: {model: this.searchForm},
on: {'current-change': this.pageChange} on: {'current-change': this.pageChange}
} }

@ -0,0 +1,21 @@
/**
* @desc el-tree展开折叠控制
* @param ref el-tree实例
* @param action 'expand' | 'collapse'
* @param level 展开的节点最大深度为0时匹配全部节点
* @param func 自定义展开的函数传入一个node优先使用
*/
export function expandControl(ref, action = 'expand', level = 1, func) {
const handler = function () {
if (typeof func === 'function') {
return node => func(node)
}
const expand = action === 'expand'
const forAll = level === 0
return node => node.expanded = forAll || node.level <= level ? expand : !expand
}()
ref.store._getAllNodes().forEach(handler)
}

@ -1,15 +0,0 @@
import Vue from 'vue'
import {errorLog} from '@/config'
if (errorLog) {
Vue.config.errorHandler = function (err, vm, info, a) {
//忽略image-viewer错误
if (err.message === `Cannot read property 'complete' of undefined`) return
/*store.commit('errorLog/ADD_ERROR_LOG', {
err,
info,
url: window.location.href
})*/
console.error('这是vue捕捉到的异常', err, info)
}
}

@ -63,6 +63,6 @@ export function upload(blob, filename, options = {}) {
//自动补全附件链接前缀 //自动补全附件链接前缀
export function autoCompleteUrl(url) { export function autoCompleteUrl(url) {
if (isEmpty(url)) return '' if (isEmpty(url)) return ''
if (['http', 'https'].some(i => url.startsWith(i))) return url if (url.startsWith('http')) return url
return fileConfig.storePrefix + url return fileConfig.storePrefix + url
} }

@ -1,4 +1,7 @@
import pako from 'pako' import pako from 'pako'
import md5 from 'js-md5'
export {md5}
export function unzip(b64Data) { export function unzip(b64Data) {
let strData = atob(b64Data) let strData = atob(b64Data)

@ -132,20 +132,6 @@ export function calc(node, valueKey = 'value', childrenKey = 'children') {
return value return value
} }
/**
* el-tree展开收缩
* 有兴趣的可以研究下怎么平滑展开收缩
* @param ref el-tree实例
* @param action expand | collapse
* @param level 展开的节点最大深度为0时匹配全部节点
*/
export function elTreeControl(ref, action = 'expand', level = 1) {
ref.store._getAllNodes().forEach(node => {
const value = action === 'expand'
node.expanded = level === 0 || node.level <= level ? value : !value
})
}
export function getNodeId(arr) { export function getNodeId(arr) {
if (!arr) return [] if (!arr) return []

@ -2,18 +2,32 @@
import AbstractTable from "@/component/abstract/Table" import AbstractTable from "@/component/abstract/Table"
import AbstractPagination from "@/component/abstract/Pagination" import AbstractPagination from "@/component/abstract/Pagination"
import SearchForm from "@/component/form/Search" import SearchForm from "@/component/form/Search"
import {isEmpty} from "@/util"
const renderSearchForm = (h, slot) => { const renderSearchForm = (h, config, slot) => {
return slot && <SearchForm>{slot()}</SearchForm> return slot && <SearchForm {...config}>{slot()}</SearchForm>
} }
const renderButtons = (h, buttons) => { const renderButtons = (h, buttons) => {
if (buttons.length > 0 && isEmpty(buttons[0].type)) {
buttons[0].type = 'primary'
}
return ( return (
<el-row class="button-group"> <el-row class="button-group">
{buttons.map(button => { {buttons.map(button => {
if (!button) return if (!button) return
const {icon, type, content, e} = button const {icon, type, content, e} = button
return <el-button icon={icon} size="small" type={type} on-click={e}>{content}</el-button> return (
<el-button
icon={icon}
size="small"
plain={isEmpty(type)}
type={type || 'dashed'}
on-click={e}
>
{content}
</el-button>
)
})} })}
</el-row> </el-row>
) )
@ -34,19 +48,23 @@ export default {
functional: true, functional: true,
props: { props: {
loading: Boolean, data: Object
buttons: {type: Array, default: () => []},
list: Object
}, },
render(h, context) { render(h, context) {
const {props: {loading, buttons, list}, scopedSlots} = context const {props: {data: {pageLoading, buttons, dataLoading, search, table, pagination}}, scopedSlots} = context
return ( return (
<el-card v-loading={loading}> <el-card v-loading={pageLoading}>
{renderSearchForm(h, scopedSlots.searchForm)} {renderSearchForm(h, search, scopedSlots.searchForm)}
{renderButtons(h, buttons)} {renderButtons(h, buttons)}
{renderList(h, {...list, tableColumn: scopedSlots.tableColumn})} {renderList(h, {
loading: dataLoading,
tableConfig: table,
tableColumn: scopedSlots.tableColumn,
paginationConfig: pagination
})}
{scopedSlots.default && scopedSlots.default()}
</el-card> </el-card>
) )
} }

@ -54,9 +54,9 @@
</template> </template>
<script> <script>
import md5 from "js-md5"
import {elSuccess} from "@/util/message"
import {isEmpty} from "@/util" import {isEmpty} from "@/util"
import {elSuccess} from "@/util/message"
import {md5} from "@/util/secret"
export default { export default {
name: "LoginForm", name: "LoginForm",
@ -94,7 +94,7 @@ export default {
...this.form, ...this.form,
password: md5(this.form.password) password: md5(this.form.password)
})) }))
.then(() => this.success()) .then(this.success)
.catch(() => this.loading = false) .catch(() => this.loading = false)
}) })
}, },

@ -53,10 +53,10 @@
</template> </template>
<script> <script>
import md5 from "js-md5"
import {register, checkLoginName, checkNickName} from "@/api/account" import {register, checkLoginName, checkNickName} from "@/api/account"
import {debounce} from "@/util" import {debounce} from "@/util"
import {elSuccess} from "@/util/message" import {elSuccess} from "@/util/message"
import {md5} from "@/util/secret"
export default { export default {
name: "RegisterForm", name: "RegisterForm",

@ -71,7 +71,7 @@ export default {
components: {AbstractForm, AbstractFormItem, AbstractDialog, RichTextEditor, UserSelector}, components: {AbstractForm, AbstractFormItem, AbstractDialog, RichTextEditor, UserSelector},
props: { props: {
value: {type: Boolean, default: false}, value: Boolean,
type: {type: String, default: 'see'}, type: {type: String, default: 'see'},
data: {type: Object, default: () => ({})} data: {type: Object, default: () => ({})}
}, },

@ -1,34 +1,25 @@
<template> <template>
<el-card v-loading="config.operating"> <list-page :data="listPageConfig">
<search-form> <template v-slot:searchForm>
<search-form-item label="标 题"> <el-form-item label="标 题">
<el-input v-model="searchForm.title" clearable maxlength="100"/> <el-input v-model="searchForm.title" clearable maxlength="100"/>
</search-form-item> </el-form-item>
<search-form-item label="消息类型"> <el-form-item label="消息类型">
<el-select v-model="searchForm.type" clearable @clear="searchForm.type=null"> <el-select v-model="searchForm.type" clearable @clear="searchForm.type=null">
<el-option :value="0" label="通知提醒"/> <el-option :value="0" label="通知提醒"/>
<el-option :value="1" label="系统公告"/> <el-option :value="1" label="系统公告"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
<search-form-item label="状 态"> <el-form-item label="状 态">
<el-select v-model="searchForm.status" clearable @clear="searchForm.status=null"> <el-select v-model="searchForm.status" clearable @clear="searchForm.status=null">
<el-option :value="0" label="拟定"/> <el-option :value="0" label="拟定"/>
<el-option :value="1" label="已发布"/> <el-option :value="1" label="已发布"/>
<el-option :value="2" label="已撤回"/> <el-option :value="2" label="已撤回"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
</search-form> </template>
<el-row class="button-group"> <template v-slot:tableColumn>
<el-button icon="el-icon-search" size="small" type="primary" @click="search"> </el-button>
<el-button v-if="canAdd" icon="el-icon-plus" size="small" type="primary" @click="add"> </el-button>
<el-button icon="el-icon-view" size="small" type="primary" @click="see"> </el-button>
<el-button v-if="canUpdate" icon="el-icon-edit" size="small" type="primary" @click="edit"> </el-button>
<el-button v-if="canDel" icon="el-icon-delete" size="small" type="danger" @click="del"> </el-button>
</el-row>
<el-row v-loading="config.loading" class="table-container">
<abstract-table :data="tableData" @row-click="rowClick">
<el-table-column align="center" label="#" type="index" width="80"/> <el-table-column align="center" label="#" type="index" width="80"/>
<el-table-column align="center" label="标 题" prop="title" show-overflow-tooltip/> <el-table-column align="center" label="标 题" prop="title" show-overflow-tooltip/>
<el-table-column align="center" label="类 型" show-overflow-tooltip> <el-table-column align="center" label="类 型" show-overflow-tooltip>
@ -44,23 +35,19 @@
<el-table-column align="center" label="发布时间" width="150"> <el-table-column align="center" label="发布时间" width="150">
<template v-slot="{row}">{{ row.ptime | timestamp2Date }}</template> <template v-slot="{row}">{{ row.ptime | timestamp2Date }}</template>
</el-table-column> </el-table-column>
</abstract-table> </template>
<abstract-pagination :model="searchForm" @current-change="pageChange"/>
</el-row>
<edit-dialog v-model="editDialog" :data="row" :type.sync="type" @search="search"/> <edit-dialog v-model="editDialog" :data="row" :type.sync="type" @search="search"/>
</el-card> </list-page>
</template> </template>
<script> <script>
import tableMixin from '@/mixin/tablePageMixin' import tableMixin from '@/mixin/tablePageMixin'
import EditDialog from './EditDialog' import EditDialog from './EditDialog'
import SearchForm from "@/component/form/Search" import ListPage from '@/view/app/common/ListPage'
import SearchFormItem from "@/component/form/Search/item"
import {search, add, update, del} from "@/api/message/manage" import {search, add, update, del} from "@/api/message/manage"
import {isEmpty} from '@/util' import {isEmpty} from '@/util'
import {auth} from "@/util/auth" import {wic} from "@/util/auth"
import {elConfirm, elError, elSuccess} from "@/util/message" import {elConfirm, elError, elSuccess} from "@/util/message"
export default { export default {
@ -68,7 +55,7 @@ export default {
mixins: [tableMixin], mixins: [tableMixin],
components: {EditDialog, SearchForm, SearchFormItem}, components: {EditDialog, ListPage},
data() { data() {
return { return {
@ -84,14 +71,31 @@ export default {
}, },
computed: { computed: {
canAdd() { ...wic({add, update, del}),
return auth(add.url)
listPageConfig() {
return {
pageLoading: this.config.operating,
buttons: [
this.canAdd && {icon: 'el-icon-plus', e: this.add, content: '添 加'},
{icon: 'el-icon-view', e: this.see, content: '查 看'},
this.canUpdate && {icon: 'el-icon-edit', e: this.edit, content: '编 辑'},
this.canDel && {icon: 'el-icon-delete', e: this.del, content: '删 除'}
],
dataLoading: this.config.loading,
search: {
props: {model: this.searchForm},
on: {search: this.search}
}, },
canUpdate() { table: {
return auth(update.url) props: {data: this.tableData},
on: {'row-click': this.rowClick}
}, },
canDel() { pagination: {
return auth(del.url) props: {model: this.searchForm},
on: {'current-change': this.pageChange}
}
}
} }
}, },

@ -132,7 +132,7 @@ export default {
}, },
readAll() { readAll() {
readAll.request().then(() => this.search()) readAll.request().then(this.search)
}, },
transformType(type) { transformType(type) {

@ -1,16 +1,16 @@
<template> <template>
<list-page :loading="config.operating" :buttons="buttonGroup" :list="listPageConfig"> <list-page :data="listPageConfig">
<template v-slot:searchForm> <template v-slot:searchForm>
<search-form-item label="单 号"> <el-form-item label="单 号">
<el-input v-model="searchForm.idFuzzy" clearable maxlength="50"/> <el-input v-model="searchForm.idFuzzy" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="采购订单"> <el-form-item label="采购订单">
<el-input v-model="searchForm.pidFuzzy" clearable maxlength="50"/> <el-input v-model="searchForm.pidFuzzy" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="创建人"> <el-form-item label="创建人">
<el-input v-model="searchForm.cname" clearable maxlength="50"/> <el-input v-model="searchForm.cname" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="temp.ctime" v-model="temp.ctime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -18,11 +18,11 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
<search-form-item label="审核人"> <el-form-item label="审核人">
<el-input v-model="searchForm.vname" clearable maxlength="50"/> <el-input v-model="searchForm.vname" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="审核时间"> <el-form-item label="审核时间">
<el-date-picker <el-date-picker
v-model="temp.vtime" v-model="temp.vtime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -30,14 +30,14 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
<search-form-item label="状 态"> <el-form-item label="状 态">
<el-select v-model="temp.status" clearable multiple> <el-select v-model="temp.status" clearable multiple>
<el-option :value="0" label="拟定"/> <el-option :value="0" label="拟定"/>
<el-option :value="1" label="待审核"/> <el-option :value="1" label="待审核"/>
<el-option :value="2" label="已审核"/> <el-option :value="2" label="已审核"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
</template> </template>
<template v-slot:tableColumn> <template v-slot:tableColumn>
<el-table-column align="center" type="expand"> <el-table-column align="center" type="expand">

@ -1,16 +1,16 @@
<template> <template>
<list-page :loading="config.operating" :buttons="buttonGroup" :list="listPageConfig"> <list-page :data="listPageConfig">
<template v-slot:searchForm> <template v-slot:searchForm>
<search-form-item label="单 号"> <el-form-item label="单 号">
<el-input v-model="searchForm.idFuzzy" clearable maxlength="50"/> <el-input v-model="searchForm.idFuzzy" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="供应商"> <el-form-item label="供应商">
<el-input v-model="searchForm.sname" clearable maxlength="50"/> <el-input v-model="searchForm.sname" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="创建人"> <el-form-item label="创建人">
<el-input v-model="searchForm.cname" clearable maxlength="50"/> <el-input v-model="searchForm.cname" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="temp.ctime" v-model="temp.ctime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -18,11 +18,11 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
<search-form-item label="审核人"> <el-form-item label="审核人">
<el-input v-model="searchForm.vname" clearable maxlength="50"/> <el-input v-model="searchForm.vname" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="审核时间"> <el-form-item label="审核时间">
<el-date-picker <el-date-picker
v-model="temp.vtime" v-model="temp.vtime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -30,22 +30,22 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
<search-form-item label="状 态"> <el-form-item label="状 态">
<el-select v-model="temp.status" clearable multiple> <el-select v-model="temp.status" clearable multiple>
<el-option :value="0" label="拟定"/> <el-option :value="0" label="拟定"/>
<el-option :value="1" label="待审核"/> <el-option :value="1" label="待审核"/>
<el-option :value="2" label="已审核"/> <el-option :value="2" label="已审核"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
<search-form-item label="完成情况"> <el-form-item label="完成情况">
<el-select v-model="temp.finish" clearable multiple> <el-select v-model="temp.finish" clearable multiple>
<el-option :value="0" label="未开始"/> <el-option :value="0" label="未开始"/>
<el-option :value="1" label="进行中"/> <el-option :value="1" label="进行中"/>
<el-option :value="2" label="已完成"/> <el-option :value="2" label="已完成"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
<search-form-item label="结束时间"> <el-form-item label="结束时间">
<el-date-picker <el-date-picker
v-model="temp.ftime" v-model="temp.ftime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -53,7 +53,7 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
</template> </template>
<template v-slot:tableColumn> <template v-slot:tableColumn>
<el-table-column align="center" type="expand"> <el-table-column align="center" type="expand">

@ -1,16 +1,16 @@
<template> <template>
<list-page :loading="config.operating" :buttons="buttonGroup" :list="listPageConfig"> <list-page :data="listPageConfig">
<template v-slot:searchForm> <template v-slot:searchForm>
<search-form-item label="单 号"> <el-form-item label="单 号">
<el-input v-model="searchForm.idFuzzy" clearable maxlength="50"/> <el-input v-model="searchForm.idFuzzy" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="客 户"> <el-form-item label="客 户">
<el-input v-model="searchForm.customerName" clearable maxlength="50"/> <el-input v-model="searchForm.customerName" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="创建人"> <el-form-item label="创建人">
<el-input v-model="searchForm.cname" clearable maxlength="50"/> <el-input v-model="searchForm.cname" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="temp.ctime" v-model="temp.ctime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -18,11 +18,11 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
<search-form-item label="审核人"> <el-form-item label="审核人">
<el-input v-model="searchForm.vname" clearable maxlength="50"/> <el-input v-model="searchForm.vname" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="审核时间"> <el-form-item label="审核时间">
<el-date-picker <el-date-picker
v-model="temp.vtime" v-model="temp.vtime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -30,22 +30,22 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
<search-form-item label="状 态"> <el-form-item label="状 态">
<el-select v-model="temp.status" clearable multiple> <el-select v-model="temp.status" clearable multiple>
<el-option :value="0" label="拟定"/> <el-option :value="0" label="拟定"/>
<el-option :value="1" label="待审核"/> <el-option :value="1" label="待审核"/>
<el-option :value="2" label="已审核"/> <el-option :value="2" label="已审核"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
<search-form-item label="完成情况"> <el-form-item label="完成情况">
<el-select v-model="temp.finish" clearable multiple> <el-select v-model="temp.finish" clearable multiple>
<el-option :value="0" label="未开始"/> <el-option :value="0" label="未开始"/>
<el-option :value="1" label="进行中"/> <el-option :value="1" label="进行中"/>
<el-option :value="2" label="已完成"/> <el-option :value="2" label="已完成"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
<search-form-item label="结束时间"> <el-form-item label="结束时间">
<el-date-picker <el-date-picker
v-model="temp.ftime" v-model="temp.ftime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -53,7 +53,7 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
</template> </template>
<template v-slot:tableColumn> <template v-slot:tableColumn>
<el-table-column align="center" type="expand"> <el-table-column align="center" type="expand">

@ -1,16 +1,16 @@
<template> <template>
<list-page :loading="config.operating" :buttons="buttonGroup" :list="listPageConfig"> <list-page :data="listPageConfig">
<template v-slot:searchForm> <template v-slot:searchForm>
<search-form-item label="单 号"> <el-form-item label="单 号">
<el-input v-model="searchForm.idFuzzy" clearable maxlength="50"/> <el-input v-model="searchForm.idFuzzy" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="销售订单"> <el-form-item label="销售订单">
<el-input v-model="searchForm.pidFuzzy" clearable maxlength="50"/> <el-input v-model="searchForm.pidFuzzy" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="创建人"> <el-form-item label="创建人">
<el-input v-model="searchForm.cname" clearable maxlength="50"/> <el-input v-model="searchForm.cname" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="temp.ctime" v-model="temp.ctime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -18,11 +18,11 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
<search-form-item label="审核人"> <el-form-item label="审核人">
<el-input v-model="searchForm.vname" clearable maxlength="50"/> <el-input v-model="searchForm.vname" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="审核时间"> <el-form-item label="审核时间">
<el-date-picker <el-date-picker
v-model="temp.vtime" v-model="temp.vtime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -30,14 +30,14 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
<search-form-item label="状 态"> <el-form-item label="状 态">
<el-select v-model="temp.status" clearable multiple> <el-select v-model="temp.status" clearable multiple>
<el-option :value="0" label="拟定"/> <el-option :value="0" label="拟定"/>
<el-option :value="1" label="待审核"/> <el-option :value="1" label="待审核"/>
<el-option :value="2" label="已审核"/> <el-option :value="2" label="已审核"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
</template> </template>
<template v-slot:tableColumn> <template v-slot:tableColumn>
<el-table-column align="center" type="expand"> <el-table-column align="center" type="expand">

@ -15,16 +15,16 @@
</template> </template>
<search-form> <search-form>
<search-form-item label="商品分类"> <el-form-item label="商品分类">
<el-input :value="temp.cname" maxlength="100" clearable @clear="clearCidSearch"/> <el-input :value="temp.cname" maxlength="100" clearable @clear="clearCidSearch"/>
</search-form-item> </el-form-item>
<search-form-item label="采购订单"> <el-form-item label="采购订单">
<el-input v-model="searchForm.cgddid" maxlength="100" clearable/> <el-input v-model="searchForm.cgddid" maxlength="100" clearable/>
</search-form-item> </el-form-item>
<search-form-item label="采购入库单"> <el-form-item label="采购入库单">
<el-input v-model="searchForm.cgrkid" maxlength="100" clearable/> <el-input v-model="searchForm.cgrkid" maxlength="100" clearable/>
</search-form-item> </el-form-item>
<search-form-item label="入库时间"> <el-form-item label="入库时间">
<el-date-picker <el-date-picker
v-model="temp.ctime" v-model="temp.ctime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -32,7 +32,7 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
</search-form> </search-form>
<el-row class="button-group"> <el-row class="button-group">
@ -69,7 +69,6 @@ import CategoryTree from '@/component/biz/CategoryTree'
import DetailDialog from "./DetailDialog" import DetailDialog from "./DetailDialog"
import ExtraArea from '@/component/ExtraArea' import ExtraArea from '@/component/ExtraArea'
import SearchForm from "@/component/form/Search" import SearchForm from "@/component/form/Search"
import SearchFormItem from "@/component/form/Search/item"
import {search} from "@/api/stock/current" import {search} from "@/api/stock/current"
import {isEmpty, debounce} from "@/util" import {isEmpty, debounce} from "@/util"
import {exportExcel} from "@/util/excel" import {exportExcel} from "@/util/excel"
@ -81,7 +80,7 @@ export default {
mixins: [tableMixin], mixins: [tableMixin],
components: {CategoryTree, DetailDialog, ExtraArea, SearchForm, SearchFormItem}, components: {CategoryTree, DetailDialog, ExtraArea, SearchForm},
data() { data() {
return { return {

@ -1,6 +1,6 @@
<template> <template>
<abstract-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open"> <abstract-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open">
<abstract-form :model="form" :rules="rules" size=""> <abstract-form :model="form" :rules="rules">
<el-form-item label="名 称" prop="name"> <el-form-item label="名 称" prop="name">
<el-input v-model="form.name" :readonly="!canEdit" maxlength="20"/> <el-input v-model="form.name" :readonly="!canEdit" maxlength="20"/>
</el-form-item> </el-form-item>
@ -63,7 +63,7 @@ export default {
components: {AbstractForm, AbstractDialog, RegionSelector}, components: {AbstractForm, AbstractDialog, RegionSelector},
props: { props: {
value: {type: Boolean, default: false}, value: Boolean,
type: {type: String, default: 'see'}, type: {type: String, default: 'see'},
data: { data: {
type: Object, type: Object,

@ -1,10 +1,10 @@
<template> <template>
<el-card v-loading="config.operating"> <list-page :data="listPageConfig">
<search-form> <template v-slot:searchForm>
<search-form-item label="客 户"> <el-form-item label="客 户">
<el-input v-model="searchForm.name" clearable maxlength="50"/> <el-input v-model="searchForm.name" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="行政区域"> <el-form-item label="行政区域">
<region-selector <region-selector
:value="temp.regionName" :value="temp.regionName"
limit limit
@ -13,23 +13,23 @@
@clear="clearSidSearch" @clear="clearSidSearch"
@select="selectRegion" @select="selectRegion"
/> />
</search-form-item> </el-form-item>
<search-form-item label="地 址"> <el-form-item label="地 址">
<el-input v-model="searchForm.address" clearable maxlength="100"/> <el-input v-model="searchForm.address" clearable maxlength="100"/>
</search-form-item> </el-form-item>
<search-form-item label="联系人"> <el-form-item label="联系人">
<el-input v-model="searchForm.linkman" clearable maxlength="50"/> <el-input v-model="searchForm.linkman" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="联系电话"> <el-form-item label="联系电话">
<el-input v-model="searchForm.linkphone" clearable maxlength="20"/> <el-input v-model="searchForm.linkphone" clearable maxlength="20"/>
</search-form-item> </el-form-item>
<search-form-item label="状 态"> <el-form-item label="状 态">
<el-select v-model="searchForm.enable" clearable @clear="searchForm.enable = null"> <el-select v-model="searchForm.enable" clearable @clear="searchForm.enable = null">
<el-option :value="true" label="启用"/> <el-option :value="true" label="启用"/>
<el-option :value="false" label="禁用"/> <el-option :value="false" label="禁用"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
<search-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="temp.ctime" v-model="temp.ctime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -37,18 +37,10 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
</search-form> </template>
<el-row class="button-group"> <template v-slot:tableColumn>
<el-button icon="el-icon-search" size="small" type="primary" @click="search"> </el-button>
<el-button v-if="canAdd" icon="el-icon-plus" size="small" type="primary" @click="add"> </el-button>
<el-button v-if="canUpdate" icon="el-icon-edit" size="small" type="primary" @click="edit"> </el-button>
<el-button v-if="canDel" icon="el-icon-delete" size="small" type="danger" @click="del"> </el-button>
</el-row>
<el-row v-loading="config.loading" class="table-container">
<abstract-table :data="tableData" @row-click="rowClick">
<el-table-column align="center" label="#" type="index" width="80"/> <el-table-column align="center" label="#" type="index" width="80"/>
<el-table-column align="center" label="客 户" prop="name" show-overflow-tooltip/> <el-table-column align="center" label="客 户" prop="name" show-overflow-tooltip/>
<el-table-column align="center" label="行政区域" prop="regionName" show-overflow-tooltip/> <el-table-column align="center" label="行政区域" prop="regionName" show-overflow-tooltip/>
@ -64,21 +56,17 @@
<span>{{ row.enable ? '启用' : '禁用' }}</span> <span>{{ row.enable ? '启用' : '禁用' }}</span>
</template> </template>
</el-table-column> </el-table-column>
</abstract-table> </template>
<abstract-pagination :model="searchForm" @current-change="pageChange"/>
</el-row>
<edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/> <edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/>
</el-card> </list-page>
</template> </template>
<script> <script>
import tableMixin from '@/mixin/tablePageMixin' import tableMixin from '@/mixin/tablePageMixin'
import ListPage from '@/view/app/common/ListPage'
import EditDialog from './EditDialog' import EditDialog from './EditDialog'
import RegionSelector from "@/component/RegionSelector" import RegionSelector from "@/component/RegionSelector"
import SearchForm from "@/component/form/Search"
import SearchFormItem from "@/component/form/Search/item"
import {add, update, del, search, getLimitRegion} from "@/api/system/customer" import {add, update, del, search, getLimitRegion} from "@/api/system/customer"
import {isEmpty} from '@/util' import {isEmpty} from '@/util'
import {wic} from "@/util/auth" import {wic} from "@/util/auth"
@ -89,7 +77,7 @@ export default {
mixins: [tableMixin], mixins: [tableMixin],
components: {EditDialog, RegionSelector, SearchForm, SearchFormItem}, components: {ListPage, EditDialog, RegionSelector},
data() { data() {
return { return {
@ -109,7 +97,34 @@ export default {
} }
}, },
computed: wic({add, update, del}), computed: {
...wic({add, update, del}),
listPageConfig() {
return {
pageLoading: this.config.operating,
buttons: [
this.canAdd && {icon: 'el-icon-plus', e: this.add, content: '添 加'},
{icon: 'el-icon-view', e: this.see, content: '查 看'},
this.canUpdate && {icon: 'el-icon-edit', e: this.edit, content: '编 辑'},
this.canDel && {icon: 'el-icon-delete', e: this.del, content: '删 除'}
],
dataLoading: this.config.loading,
search: {
props: {model: this.searchForm},
on: {search: this.search}
},
table: {
props: {data: this.tableData},
on: {'row-click': this.rowClick}
},
pagination: {
props: {model: this.searchForm},
on: {'current-change': this.pageChange}
}
}
}
},
methods: { methods: {
getLimitRegion() { getLimitRegion() {
@ -153,6 +168,12 @@ export default {
this.editDialog = true this.editDialog = true
}, },
see() {
if (isEmpty(this.row)) return elError('请选择要查看的客户')
this.type = 'see'
this.editDialog = true
},
edit() { edit() {
if (isEmpty(this.row)) return elError('请选择要编辑的客户') if (isEmpty(this.row)) return elError('请选择要编辑的客户')
this.type = 'edit' this.type = 'edit'

@ -1,6 +1,6 @@
<template> <template>
<abstract-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open"> <abstract-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open">
<abstract-form :model="form" :rules="rules" size=""> <abstract-form :model="form" :rules="rules">
<el-form-item v-show="parentName" label="上级部门"> <el-form-item v-show="parentName" label="上级部门">
<el-input :value="parentName" readonly/> <el-input :value="parentName" readonly/>
</el-form-item> </el-form-item>
@ -17,7 +17,7 @@
<template v-slot:footer> <template v-slot:footer>
<el-button plain size="small" @click="closeDialog"> </el-button> <el-button plain size="small" @click="closeDialog"> </el-button>
<el-button size="small" type="primary" @click="confirm"> </el-button> <el-button v-if="canEdit" size="small" type="primary" @click="confirm"> </el-button>
</template> </template>
</abstract-dialog> </abstract-dialog>
</template> </template>
@ -27,7 +27,7 @@ import dialogMixin from "@/mixin/dialogMixin"
import AbstractForm from "@/component/abstract/Form" import AbstractForm from "@/component/abstract/Form"
import AbstractDialog from '@/component/abstract/Dialog' import AbstractDialog from '@/component/abstract/Dialog'
import {add, update} from "@/api/system/department" import {add, update} from "@/api/system/department"
import {isEmpty} from '@/util' import {isEmpty, mergeObj} from '@/util'
import {elConfirm, elSuccess} from "@/util/message" import {elConfirm, elSuccess} from "@/util/message"
export default { export default {
@ -38,7 +38,7 @@ export default {
components: {AbstractForm, AbstractDialog}, components: {AbstractForm, AbstractDialog},
props: { props: {
value: {type: Boolean, default: false}, value: Boolean,
type: {type: String, default: 'add'}, type: {type: String, default: 'add'},
data: {type: Object, default: () => ({})}, data: {type: Object, default: () => ({})},
}, },
@ -81,6 +81,10 @@ export default {
} }
}, },
canEdit() {
return ['add', 'edit'].includes(this.type)
},
parentName() { parentName() {
if (!this.data) return '' if (!this.data) return ''
if (this.type === 'add') return this.data.fullname if (this.type === 'add') return this.data.fullname
@ -91,10 +95,8 @@ export default {
methods: { methods: {
open() { open() {
this.$nextTick(() => { this.$nextTick(() => {
if (this.type === 'edit') { if (this.type !== 'add') {
Object mergeObj(this.form, this.data)
.keys(this.data)
.forEach(key => key in this.form && (this.form[key] = this.data[key]))
} }
else this.form.pid = this.data.id else this.form.pid = this.data.id
}) })

@ -83,13 +83,12 @@ export default {
...wic({add, update, del}), ...wic({add, update, del}),
contextMenuItems() { contextMenuItems() {
const items=[] return [
this.canAdd && {content: '添 加', click: this.add},
this.canAdd&&items.push({content:'添加部门',click:this.add}) {content: '查 看', click: this.see},
this.canUpdate&&items.push({content:'编辑部门',click:this.update}) this.canUpdate && {content: '编 辑', click: this.edit},
this.canDel&&items.push({content:'删除部门',click:this.del}) this.canDel && {content: '删 除', click: this.del}
]
return items
}, },
realZoom() { realZoom() {
@ -131,7 +130,12 @@ export default {
this.editDialog = true this.editDialog = true
}, },
update() { see() {
this.type = 'see'
this.editDialog = true
},
edit() {
this.type = 'edit' this.type = 'edit'
this.editDialog = true this.editDialog = true
}, },

@ -150,9 +150,9 @@ import AbstractForm from "@/component/abstract/Form"
import JsonEditor from "@/component/editor/JsonEditor" import JsonEditor from "@/component/editor/JsonEditor"
import {add, update, del} from '@/api/system/resource' import {add, update, del} from '@/api/system/resource'
import {isEmpty, mergeObj, resetObj} from "@/util" import {isEmpty, mergeObj, resetObj} from "@/util"
import {elSuccess, elError, elConfirm} from "@/util/message"
import {elTreeControl} from "@/util/tree"
import {wic} from "@/util/auth" import {wic} from "@/util/auth"
import {expandControl} from "@/util/element-ui/elTree"
import {elSuccess, elError, elConfirm} from "@/util/message"
import {nodeType, getNodeInfo, getNodeTitle} from "./common" import {nodeType, getNodeInfo, getNodeTitle} from "./common"
export default { export default {
@ -312,7 +312,7 @@ export default {
}, },
more({action, level}) { more({action, level}) {
if (this.loading) return if (this.loading) return
elTreeControl(this.$refs.tree, action, level) expandControl(this.$refs.tree, action, level)
}, },
init() { init() {

@ -1,6 +1,6 @@
<template> <template>
<abstract-dialog :loading="loading" :title="title" :value="value" width="40%" @close="cancel" @open="open"> <abstract-dialog :loading="loading" :title="title" :value="value" width="40%" @close="cancel" @open="open">
<abstract-form :model="form" :rules="rules" size=""> <abstract-form :model="form" :rules="rules">
<el-form-item label="名 称" prop="name"> <el-form-item label="名 称" prop="name">
<el-input v-model="form.name" maxlength="20"/> <el-input v-model="form.name" maxlength="20"/>
</el-form-item> </el-form-item>
@ -56,7 +56,7 @@
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-button plain size="small" @click="closeDialog"> </el-button> <el-button plain size="small" @click="closeDialog"> </el-button>
<el-button size="small" type="primary" @click="confirm"> </el-button> <el-button v-if="canEdit" size="small" type="primary" @click="confirm"> </el-button>
</template> </template>
</abstract-dialog> </abstract-dialog>
</template> </template>
@ -68,7 +68,8 @@ import AbstractDialog from '@/component/abstract/Dialog'
import {get as getDepartments} from "@/api/system/department" import {get as getDepartments} from "@/api/system/department"
import {add, update} from "@/api/system/role" import {add, update} from "@/api/system/role"
import {isEmpty, mergeObj} from '@/util' import {isEmpty, mergeObj} from '@/util'
import {createTreeByWorker, elTreeControl} from '@/util/tree' import {expandControl} from "@/util/element-ui/elTree"
import {createTreeByWorker} from '@/util/tree'
import {getNodeTitle, getNodeInfo} from "@/view/system/menu/common" import {getNodeTitle, getNodeInfo} from "@/view/system/menu/common"
export default { export default {
@ -79,7 +80,7 @@ export default {
components: {AbstractForm, AbstractDialog}, components: {AbstractForm, AbstractDialog},
props: { props: {
value: {type: Boolean, default: false}, value: Boolean,
type: {type: String, default: 'add'}, type: {type: String, default: 'add'},
data: {type: Object, default: () => ({})}, data: {type: Object, default: () => ({})},
}, },
@ -127,6 +128,10 @@ export default {
resourceTree() { resourceTree() {
return this.$store.state.resource.resourceTree return this.$store.state.resource.resourceTree
},
canEdit() {
return ['add', 'edit'].includes(this.type)
} }
}, },
@ -134,10 +139,10 @@ export default {
getNodeInfo, getNodeInfo,
getNodeTitle, getNodeTitle,
treeCommand({action, level}) { treeCommand({action, level}) {
elTreeControl(this.$refs.perm, action, level) expandControl(this.$refs.perm, action, level)
}, },
open() { open() {
if (this.type !== 'edit') return if (this.type === 'add') return
this.$nextTick(() => { this.$nextTick(() => {
mergeObj(this.form, this.data) mergeObj(this.form, this.data)
this.$refs.perm.setCheckedKeys(this.form.resourceId) this.$refs.perm.setCheckedKeys(this.form.resourceId)

@ -1,19 +1,19 @@
<template> <template>
<el-card v-loading="config.operating"> <list-page :data="listPageConfig">
<search-form> <template v-slot:searchForm>
<search-form-item label="角色名"> <el-form-item label="角色名">
<el-input v-model="searchForm.name" clearable maxlength="100"/> <el-input v-model="searchForm.name" clearable maxlength="100"/>
</search-form-item> </el-form-item>
<search-form-item label="创建人"> <el-form-item label="创建人">
<el-input v-model="searchForm.cname" clearable maxlength="100"/> <el-input v-model="searchForm.cname" clearable maxlength="100"/>
</search-form-item> </el-form-item>
<search-form-item label="状 态"> <el-form-item label="状 态">
<el-select v-model="searchForm.enable" clearable @clear="searchForm.enable = null"> <el-select v-model="searchForm.enable" clearable @clear="searchForm.enable = null">
<el-option :value="true" label="启用"/> <el-option :value="true" label="启用"/>
<el-option :value="false" label="禁用"/> <el-option :value="false" label="禁用"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
<search-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="temp.ctime" v-model="temp.ctime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -21,18 +21,10 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
</search-form> </template>
<el-row class="button-group"> <template v-slot:tableColumn>
<el-button icon="el-icon-search" size="small" type="primary" @click="search"> </el-button>
<el-button v-if="canAdd" icon="el-icon-plus" size="small" type="primary" @click="add"> </el-button>
<el-button v-if="canUpdate" icon="el-icon-edit" size="small" type="primary" @click="edit"> </el-button>
<el-button v-if="canDel" icon="el-icon-delete" size="small" type="danger" @click="del"> </el-button>
</el-row>
<el-row v-loading="config.loading" class="table-container">
<abstract-table :data="tableData" @row-click="rowClick">
<el-table-column align="center" label="#" type="index" width="80"/> <el-table-column align="center" label="#" type="index" width="80"/>
<el-table-column align="center" label="角色名" prop="name" show-overflow-tooltip/> <el-table-column align="center" label="角色名" prop="name" show-overflow-tooltip/>
<el-table-column align="center" label="创建人" prop="cname" show-overflow-tooltip/> <el-table-column align="center" label="创建人" prop="cname" show-overflow-tooltip/>
@ -45,20 +37,16 @@
<span>{{ row.enable ? '启用' : '禁用' }}</span> <span>{{ row.enable ? '启用' : '禁用' }}</span>
</template> </template>
</el-table-column> </el-table-column>
</abstract-table> </template>
<abstract-pagination :model="searchForm" @current-change="pageChange"/>
</el-row>
<edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/> <edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/>
</el-card> </list-page>
</template> </template>
<script> <script>
import tableMixin from '@/mixin/tablePageMixin' import tableMixin from '@/mixin/tablePageMixin'
import ListPage from '@/view/app/common/ListPage'
import EditDialog from './EditDialog' import EditDialog from './EditDialog'
import SearchForm from "@/component/form/Search"
import SearchFormItem from "@/component/form/Search/item"
import {add, update, del, search} from "@/api/system/role" import {add, update, del, search} from "@/api/system/role"
import {isEmpty} from '@/util' import {isEmpty} from '@/util'
import {wic} from "@/util/auth" import {wic} from "@/util/auth"
@ -69,7 +57,7 @@ export default {
mixins: [tableMixin], mixins: [tableMixin],
components: {EditDialog, SearchForm, SearchFormItem}, components: {ListPage, EditDialog},
data() { data() {
return { return {
@ -85,7 +73,34 @@ export default {
} }
}, },
computed: wic({add, update, del}), computed: {
...wic({add, update, del}),
listPageConfig() {
return {
pageLoading: this.config.operating,
buttons: [
this.canAdd && {icon: 'el-icon-plus', e: this.add, content: '添 加'},
{icon: 'el-icon-view', e: this.see, content: '查 看'},
this.canUpdate && {icon: 'el-icon-edit', e: this.edit, content: '编 辑'},
this.canDel && {icon: 'el-icon-delete', e: this.del, content: '删 除'}
],
dataLoading: this.config.loading,
search: {
props: {model: this.searchForm},
on: {search: this.search}
},
table: {
props: {data: this.tableData},
on: {'row-click': this.rowClick}
},
pagination: {
props: {model: this.searchForm},
on: {'current-change': this.pageChange}
}
}
}
},
methods: { methods: {
mergeSearchForm() { mergeSearchForm() {
@ -125,6 +140,12 @@ export default {
this.editDialog = true this.editDialog = true
}, },
see() {
if (isEmpty(this.row)) return elError('请选择要查看的角色')
this.type = 'see'
this.editDialog = true
},
edit() { edit() {
if (!this.row) return elError('请选择要编辑的角色') if (!this.row) return elError('请选择要编辑的角色')
this.type = 'edit' this.type = 'edit'

@ -1,6 +1,6 @@
<template> <template>
<abstract-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open"> <abstract-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open">
<abstract-form :model="form" :rules="rules" size=""> <abstract-form :model="form" :rules="rules">
<el-form-item label="名 称" prop="name"> <el-form-item label="名 称" prop="name">
<el-input v-model="form.name" :readonly="!canEdit" maxlength="20"/> <el-input v-model="form.name" :readonly="!canEdit" maxlength="20"/>
</el-form-item> </el-form-item>
@ -63,7 +63,7 @@ export default {
components: {AbstractForm, AbstractDialog, RegionSelector}, components: {AbstractForm, AbstractDialog, RegionSelector},
props: { props: {
value: {type: Boolean, default: false}, value: Boolean,
type: {type: String, default: 'see'}, type: {type: String, default: 'see'},
data: { data: {
type: Object, type: Object,

@ -1,10 +1,10 @@
<template> <template>
<el-card v-loading="config.operating"> <list-page :data="listPageConfig">
<search-form> <template v-slot:searchForm>
<search-form-item label="供应商"> <el-form-item label="供应商">
<el-input v-model="searchForm.name" clearable maxlength="50"/> <el-input v-model="searchForm.name" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="行政区域"> <el-form-item label="行政区域">
<region-selector <region-selector
:value="temp.regionName" :value="temp.regionName"
limit limit
@ -13,23 +13,23 @@
@clear="clearSidSearch" @clear="clearSidSearch"
@select="selectRegion" @select="selectRegion"
/> />
</search-form-item> </el-form-item>
<search-form-item label="地 址"> <el-form-item label="地 址">
<el-input v-model="searchForm.address" clearable maxlength="100"/> <el-input v-model="searchForm.address" clearable maxlength="100"/>
</search-form-item> </el-form-item>
<search-form-item label="联系人"> <el-form-item label="联系人">
<el-input v-model="searchForm.linkman" clearable maxlength="50"/> <el-input v-model="searchForm.linkman" clearable maxlength="50"/>
</search-form-item> </el-form-item>
<search-form-item label="联系电话"> <el-form-item label="联系电话">
<el-input v-model="searchForm.linkphone" clearable maxlength="20"/> <el-input v-model="searchForm.linkphone" clearable maxlength="20"/>
</search-form-item> </el-form-item>
<search-form-item label="状 态"> <el-form-item label="状 态">
<el-select v-model="searchForm.enable" clearable @clear="searchForm.enable = null"> <el-select v-model="searchForm.enable" clearable @clear="searchForm.enable = null">
<el-option :value="true" label="启用"/> <el-option :value="true" label="启用"/>
<el-option :value="false" label="禁用"/> <el-option :value="false" label="禁用"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
<search-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="temp.ctime" v-model="temp.ctime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -37,18 +37,10 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
</search-form> </template>
<el-row class="button-group"> <template v-slot:tableColumn>
<el-button icon="el-icon-search" size="small" type="primary" @click="search"> </el-button>
<el-button v-if="canAdd" icon="el-icon-plus" size="small" type="primary" @click="add"> </el-button>
<el-button v-if="canUpdate" icon="el-icon-edit" size="small" type="primary" @click="edit"> </el-button>
<el-button v-if="canDel" icon="el-icon-delete" size="small" type="danger" @click="del"> </el-button>
</el-row>
<el-row v-loading="config.loading" class="table-container">
<abstract-table :data="tableData" @row-click="rowClick">
<el-table-column align="center" label="#" type="index" width="80"/> <el-table-column align="center" label="#" type="index" width="80"/>
<el-table-column align="center" label="供应商" prop="name" show-overflow-tooltip/> <el-table-column align="center" label="供应商" prop="name" show-overflow-tooltip/>
<el-table-column align="center" label="行政区域" prop="regionName" show-overflow-tooltip/> <el-table-column align="center" label="行政区域" prop="regionName" show-overflow-tooltip/>
@ -64,21 +56,17 @@
<span>{{ row.enable ? '启用' : '禁用' }}</span> <span>{{ row.enable ? '启用' : '禁用' }}</span>
</template> </template>
</el-table-column> </el-table-column>
</abstract-table> </template>
<abstract-pagination :model="searchForm" @current-change="pageChange"/>
</el-row>
<edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/> <edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/>
</el-card> </list-page>
</template> </template>
<script> <script>
import tableMixin from '@/mixin/tablePageMixin' import tableMixin from '@/mixin/tablePageMixin'
import ListPage from '@/view/app/common/ListPage'
import EditDialog from './EditDialog' import EditDialog from './EditDialog'
import RegionSelector from "@/component/RegionSelector" import RegionSelector from "@/component/RegionSelector"
import SearchForm from "@/component/form/Search"
import SearchFormItem from "@/component/form/Search/item"
import {add, update, del, getLimitRegion, search} from "@/api/system/supplier" import {add, update, del, getLimitRegion, search} from "@/api/system/supplier"
import {isEmpty} from '@/util' import {isEmpty} from '@/util'
import {wic} from "@/util/auth" import {wic} from "@/util/auth"
@ -89,7 +77,7 @@ export default {
mixins: [tableMixin], mixins: [tableMixin],
components: {EditDialog, RegionSelector, SearchForm, SearchFormItem}, components: {ListPage,EditDialog, RegionSelector},
data() { data() {
return { return {
@ -109,7 +97,34 @@ export default {
} }
}, },
computed: wic({add, update, del}), computed: {
...wic({add, update, del}),
listPageConfig() {
return {
pageLoading: this.config.operating,
buttons: [
this.canAdd && {icon: 'el-icon-plus', e: this.add, content: '添 加'},
{icon: 'el-icon-view', e: this.see, content: '查 看'},
this.canUpdate && {icon: 'el-icon-edit', e: this.edit, content: '编 辑'},
this.canDel && {icon: 'el-icon-delete', e: this.del, content: '删 除'}
],
dataLoading: this.config.loading,
search: {
props: {model: this.searchForm},
on: {search: this.search}
},
table: {
props: {data: this.tableData},
on: {'row-click': this.rowClick}
},
pagination: {
props: {model: this.searchForm},
on: {'current-change': this.pageChange}
}
}
}
},
methods: { methods: {
getLimitRegion() { getLimitRegion() {
@ -153,6 +168,12 @@ export default {
this.editDialog = true this.editDialog = true
}, },
see() {
if (isEmpty(this.row)) return elError('请选择要查看的供应商')
this.type = 'see'
this.editDialog = true
},
edit() { edit() {
if (isEmpty(this.row)) return elError('请选择要编辑的供应商') if (isEmpty(this.row)) return elError('请选择要编辑的供应商')
this.type = 'edit' this.type = 'edit'

@ -1,6 +1,6 @@
<template> <template>
<abstract-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open"> <abstract-dialog :loading="loading" :title="title" :value="value" @close="cancel" @open="open">
<abstract-form :model="form" :rules="rules" label-width="90px" size=""> <abstract-form :model="form" :rules="rules" label-width="90px">
<el-form-item label="登录名" prop="loginName"> <el-form-item label="登录名" prop="loginName">
<el-input v-model="form.loginName" :readonly="!!form.id || !canEdit" maxlength="20"/> <el-input v-model="form.loginName" :readonly="!!form.id || !canEdit" maxlength="20"/>
</el-form-item> </el-form-item>
@ -46,8 +46,7 @@ import AbstractDialog from '@/component/abstract/Dialog'
import RoleSelector from './RoleSelector' import RoleSelector from './RoleSelector'
import {checkLoginName, checkNickName} from "@/api/account" import {checkLoginName, checkNickName} from "@/api/account"
import {add, update} from "@/api/system/user" import {add, update} from "@/api/system/user"
import {isEmpty, debounce} from '@/util' import {isEmpty, debounce, mergeObj} from '@/util'
import {elConfirm} from "@/util/message"
export default { export default {
name: "EditDialog", name: "EditDialog",
@ -57,7 +56,7 @@ export default {
components: {AbstractForm, DepartmentSelector, AbstractDialog, RoleSelector}, components: {AbstractForm, DepartmentSelector, AbstractDialog, RoleSelector},
props: { props: {
value: {type: Boolean, default: false}, value: Boolean,
type: {type: String, default: 'see'}, type: {type: String, default: 'see'},
data: {type: Object, default: () => ({})}, data: {type: Object, default: () => ({})},
}, },
@ -134,10 +133,8 @@ export default {
methods: { methods: {
open() { open() {
this.$nextTick(() => { this.$nextTick(() => {
if (this.type === 'edit') { if (this.type !== 'add') {
Object mergeObj(this.form,this.data)
.keys(this.data)
.forEach(key => key in this.form && (this.form[key] = this.data[key]))
} }
}) })
}, },

@ -1,22 +1,22 @@
<template> <template>
<el-card v-loading="config.operating"> <list-page :data="listPageConfig">
<search-form> <template v-slot:searchForm>
<search-form-item label="用户名"> <el-form-item label="用户名">
<el-input v-model="searchForm.loginName" clearable maxlength="20"/> <el-input v-model="searchForm.loginName" clearable maxlength="20"/>
</search-form-item> </el-form-item>
<search-form-item label="昵 称"> <el-form-item label="昵 称">
<el-input v-model="searchForm.nickName" clearable maxlength="100"/> <el-input v-model="searchForm.nickName" clearable maxlength="100"/>
</search-form-item> </el-form-item>
<search-form-item label="角 色"> <el-form-item label="角 色">
<role-selector v-model="searchForm.role"/> <role-selector v-model="searchForm.role"/>
</search-form-item> </el-form-item>
<search-form-item label="状 态"> <el-form-item label="状 态">
<el-select v-model="searchForm.enable" clearable @clear="searchForm.enable = null"> <el-select v-model="searchForm.enable" clearable @clear="searchForm.enable = null">
<el-option :value="true" label="启用"/> <el-option :value="true" label="启用"/>
<el-option :value="false" label="禁用"/> <el-option :value="false" label="禁用"/>
</el-select> </el-select>
</search-form-item> </el-form-item>
<search-form-item label="创建时间"> <el-form-item label="创建时间">
<el-date-picker <el-date-picker
v-model="temp.ctime" v-model="temp.ctime"
format="yyyy-MM-dd" format="yyyy-MM-dd"
@ -24,22 +24,10 @@
type="daterange" type="daterange"
value-format="timestamp" value-format="timestamp"
/> />
</search-form-item> </el-form-item>
</search-form> </template>
<el-row class="button-group"> <template v-slot:tableColumn>
<el-button icon="el-icon-search" size="small" type="primary" @click="search"> </el-button>
<el-button v-if="canAdd" icon="el-icon-plus" size="small" type="primary" @click="add"> </el-button>
<el-button v-if="canUpdate" icon="el-icon-edit" size="small" type="primary" @click="edit"> </el-button>
<el-button v-if="canResetPwd" icon="el-icon-edit" size="small" type="dashed" plain @click="resetPwd">重置密码
</el-button>
<el-button v-if="canDel" icon="el-icon-delete" size="small" type="danger" @click="del"> </el-button>
<el-button v-if="canKick" icon="el-icon-warning-outline" size="small" type="danger" @click="kick">
</el-button>
</el-row>
<el-row v-loading="config.loading" class="table-container">
<abstract-table :data="tableData" @row-click="rowClick">
<el-table-column align="center" label="#" type="index" width="80"/> <el-table-column align="center" label="#" type="index" width="80"/>
<el-table-column align="center" label="头像" width="100"> <el-table-column align="center" label="头像" width="100">
<img <img
@ -73,21 +61,17 @@
<span>{{ row.enable ? '启用' : '禁用' }}</span> <span>{{ row.enable ? '启用' : '禁用' }}</span>
</template> </template>
</el-table-column> </el-table-column>
</abstract-table> </template>
<abstract-pagination :model="searchForm" @current-change="pageChange"/>
</el-row>
<edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/> <edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/>
</el-card> </list-page>
</template> </template>
<script> <script>
import tableMixin from '@/mixin/tablePageMixin' import tableMixin from '@/mixin/tablePageMixin'
import ListPage from '@/view/app/common/ListPage'
import EditDialog from './component/EditDialog' import EditDialog from './component/EditDialog'
import RoleSelector from './component/RoleSelector' import RoleSelector from './component/RoleSelector'
import SearchForm from "@/component/form/Search"
import SearchFormItem from "@/component/form/Search/item"
import {search, add, update, del, kick, resetPwd} from "@/api/system/user" import {search, add, update, del, kick, resetPwd} from "@/api/system/user"
import {isEmpty} from '@/util' import {isEmpty} from '@/util'
import {wic} from "@/util/auth" import {wic} from "@/util/auth"
@ -99,7 +83,7 @@ export default {
mixins: [tableMixin], mixins: [tableMixin],
components: {EditDialog, RoleSelector, SearchForm, SearchFormItem}, components: {ListPage, EditDialog, RoleSelector},
data() { data() {
return { return {
@ -114,7 +98,36 @@ export default {
} }
}, },
computed: wic({add, update, del, kick, resetPwd}), computed: {
...wic({add, update, del, kick, resetPwd}),
listPageConfig() {
return {
pageLoading: this.config.operating,
buttons: [
this.canAdd && {icon: 'el-icon-plus', e: this.add, content: '添 加'},
{icon: 'el-icon-view', e: this.see, content: '查 看'},
this.canUpdate && {icon: 'el-icon-edit', e: this.edit, content: '编 辑'},
this.canDel && {icon: 'el-icon-delete', e: this.del, content: '删 除'},
this.canResetPwd && {icon: 'el-icon-delete', e: this.resetPwd, content: '重置密码'},
this.canKick && {icon: 'el-icon-delete', e: this.kick, content: '踢 出'}
],
dataLoading: this.config.loading,
search: {
props: {model: this.searchForm},
on: {search: this.search}
},
table: {
props: {data: this.tableData},
on: {'row-click': this.rowClick}
},
pagination: {
props: {model: this.searchForm},
on: {'current-change': this.pageChange}
}
}
}
},
methods: { methods: {
mergeSearchForm() { mergeSearchForm() {
@ -145,6 +158,12 @@ export default {
this.editDialog = true this.editDialog = true
}, },
see() {
if (isEmpty(this.row)) return elError('请选择要查看的用户')
this.type = 'see'
this.editDialog = true
},
edit() { edit() {
if (isEmpty(this.row)) return elError('请选择要编辑的用户') if (isEmpty(this.row)) return elError('请选择要编辑的用户')
this.type = 'edit' this.type = 'edit'

@ -17,12 +17,12 @@
</template> </template>
<script> <script>
import md5 from "js-md5"
import dialogMixin from "@/mixin/dialogMixin" import dialogMixin from "@/mixin/dialogMixin"
import AbstractForm from "@/component/abstract/Form" import AbstractForm from "@/component/abstract/Form"
import AbstractDialog from '@/component/abstract/Dialog' import AbstractDialog from '@/component/abstract/Dialog'
import {updateUserPwd} from "@/api/account" import {updateUserPwd} from "@/api/account"
import {elSuccess} from "@/util/message" import {elSuccess} from "@/util/message"
import {md5} from "@/util/secret"
export default { export default {
mixins: [dialogMixin], mixins: [dialogMixin],

Loading…
Cancel
Save