增加停用多页签的功能

省市地区数据更新
master
toesbieya 6 years ago
parent 72ae76bd5f
commit f727314a67
  1. 1
      vue/public/static/json/region-pc.json
  2. 1
      vue/public/static/json/region-pca.json
  3. 1
      vue/public/static/json/region-pcas.json
  4. 6
      vue/src/assets/styles/index.scss
  5. 7
      vue/src/assets/styles/sidebar.scss
  6. 2
      vue/src/assets/styles/tagsView.scss
  7. 6
      vue/src/assets/styles/variables.scss
  8. 11
      vue/src/components/DialogForm/index.vue
  9. 48
      vue/src/components/RegionSelector/Tree.vue
  10. 2
      vue/src/config/index.js
  11. 22
      vue/src/layout/components/Header.vue
  12. 72
      vue/src/layout/components/Navbar/components/SettingDrawer.vue
  13. 4
      vue/src/layout/components/Navbar/index.vue
  14. 2
      vue/src/layout/components/Sidebar/components/SidebarItemContent.vue
  15. 3
      vue/src/layout/index.vue
  16. 30
      vue/src/store/modules/setting.js
  17. 8
      vue/src/store/modules/tagsView.js
  18. 9
      vue/src/views/app/login/LoginForm.vue
  19. 9
      vue/src/views/app/login/RegisterForm.vue
  20. 12
      vue/src/views/system/customer/EditDialog.vue
  21. 15
      vue/src/views/system/customer/index.vue
  22. 12
      vue/src/views/system/supplier/EditDialog.vue
  23. 15
      vue/src/views/system/supplier/index.vue

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -89,7 +89,11 @@ a:hover {
.has-header { .has-header {
.max-view-height { .max-view-height {
height: calc(100vh - #{$headerHeight} - #{$pageViewMargin * 2}); height: calc(100vh - #{$navHeight} - #{$pageViewMargin * 2});
}
&.has-tags-view .max-view-height {
height: calc(100vh - #{$navHeight} - #{$tagsViewHeight} - #{$pageViewMargin * 2});
} }
} }

@ -37,8 +37,8 @@ $iconSize: 17px;
.sidebar-logo-container { .sidebar-logo-container {
position: relative; position: relative;
width: 100%; width: 100%;
height: 50px; height: $navHeight;
line-height: 50px; line-height: $navHeight;
text-align: center; text-align: center;
& .sidebar-logo-link { & .sidebar-logo-link {
@ -57,7 +57,7 @@ $iconSize: 17px;
margin: 0; margin: 0;
color: #fff; color: #fff;
font-weight: 600; font-weight: 600;
line-height: 50px; line-height: $navHeight;
font-size: 14px; font-size: 14px;
font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif; font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
vertical-align: middle; vertical-align: middle;
@ -126,6 +126,7 @@ $iconSize: 17px;
max-height: 88vh; max-height: 88vh;
margin-bottom: 0.5vh; margin-bottom: 0.5vh;
overflow-y: auto; overflow-y: auto;
overflow-y: overlay;
} }
.el-submenu__title i { .el-submenu__title i {

@ -1,5 +1,5 @@
.tags-view-container { .tags-view-container {
height: 40px; height: $tagsViewHeight;
background: #f0f0f0; background: #f0f0f0;
border-bottom: 1px solid #d8dce5; border-bottom: 1px solid #d8dce5;
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04); box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);

@ -44,8 +44,12 @@ $menuHover: #263445;
$subMenuBg: #1f2d3d; $subMenuBg: #1f2d3d;
$subMenuHover: #001528; $subMenuHover: #001528;
//侧边栏宽度
$sideBarWidth: 210px; $sideBarWidth: 210px;
$headerHeight: 90px; //头部导航栏高度
$navHeight: 50px;
//头部多页签栏高度
$tagsViewHeight: 40px;
//路由页面的margin //路由页面的margin
$pageViewMargin: 15px; $pageViewMargin: 15px;

@ -2,11 +2,9 @@
<el-dialog <el-dialog
v-drag-dialog v-drag-dialog
custom-class="dialog-form" custom-class="dialog-form"
:top="top" v-bind="$props"
:visible="value" :visible="value"
:width="width" v-on="$listeners"
@close="$emit('close')"
@open="$emit('open')"
> >
<slot slot="title" name="title">{{title}}</slot> <slot slot="title" name="title">{{title}}</slot>
<div class="dialog-form-container"> <div class="dialog-form-container">
@ -29,11 +27,12 @@
name: "DialogForm", name: "DialogForm",
components: {LoadingMask}, components: {LoadingMask},
props: { props: {
value: {type: Boolean, default: false}, value: Boolean,
appendToBody: Boolean,
top: {type: String, default: '50px'}, top: {type: String, default: '50px'},
width: {type: String, default: '30%'}, width: {type: String, default: '30%'},
loading: {type: Boolean, default: true}, loading: {type: Boolean, default: true},
title: {type: String, default: ''}, title: String,
} }
} }
</script> </script>

@ -1,62 +1,79 @@
<template> <template>
<el-dialog <div>
<el-input :value="value" :readonly="readonly" clearable @clear="$emit('clear')" @focus="dialogVisible=true"/>
<dialog-form
v-drag-dialog v-drag-dialog
:visible="value" v-model="dialogVisible"
:loading="loading"
append-to-body append-to-body
title="选择行政区域" title="选择行政区域"
width="30%"
top="50px"
@close="closeDialog" @close="closeDialog"
> >
<el-scrollbar>
<el-tree <el-tree
ref="tree" ref="tree"
v-loading="loading"
:data="limit ? limitTree : regionTree" :data="limit ? limitTree : regionTree"
:expand-on-click-node="false" :expand-on-click-node="false"
node-key="id" node-key="id"
@node-click="nodeClick" @node-click="nodeClick"
> >
<span slot-scope="{data}" class="el-tree-node__label"> <span slot-scope="{data}" class="el-tree-node__label">
{{data.name}} {{limit ? data.name + `(${data.value})` : data.name}}
<template v-if="limit">({{data.value}})</template>
</span> </span>
</el-tree> </el-tree>
</el-scrollbar> </dialog-form>
</el-dialog> </div>
</template> </template>
<script> <script>
import {mapState} from 'vuex' import {mapState} from 'vuex'
import dialogMixin from "@/mixins/dialogMixin" import DialogForm from '@/components/DialogForm'
import {createLimitTree, getNodeId} from "@/utils/tree" import {createLimitTree, getNodeId} from "@/utils/tree"
export default { export default {
name: "RegionSelector", name: "RegionTreeSelector",
mixins: [dialogMixin],
components: {DialogForm},
props: { props: {
value: Boolean, value: String,
readonly: Boolean,
getChildrenOnClick: Boolean,
limit: Boolean, limit: Boolean,
limitApi: Function limitApi: Function
}, },
data() { data() {
return { return {
loading: false, loading: false,
dialogVisible: false,
limitTree: [] limitTree: []
} }
}, },
computed: { computed: {
...mapState('dataCache', { ...mapState('dataCache', {
regionTree: state => state.regionTree regionTree: state => state.regionTree
}) })
}, },
methods: { methods: {
closeDialog() {
this.dialogVisible = false
},
nodeClick(obj) { nodeClick(obj) {
const payload = [obj]
if (this.getChildrenOnClick) {
let ids = getNodeId(obj.children) let ids = getNodeId(obj.children)
ids.unshift(obj.id) ids.unshift(obj.id)
this.$emit('select', obj, ids) payload.push(ids)
}
this.$emit('select', ...payload)
this.closeDialog() this.closeDialog()
}, },
init() { init() {
this.loading = true this.loading = true
const hasInit = this.regionTree.length > 0 const hasInit = this.regionTree.length > 0
@ -67,6 +84,7 @@
.finally(() => this.loading = false) .finally(() => this.loading = false)
} }
}, },
mounted() { mounted() {
this.init() this.init()
} }

@ -31,5 +31,5 @@ module.exports = {
attachmentPrefix: 'https://static.toesbieya.cn/', attachmentPrefix: 'https://static.toesbieya.cn/',
//省市地区json数据请求地址 //省市地区json数据请求地址
regionDataUrl: '/static/json/region-pca.json' regionDataUrl: '/static/json/region-pcas.json'
} }

@ -6,7 +6,7 @@
@mouseleave="mouseOutside=true" @mouseleave="mouseOutside=true"
> >
<v-navbar @menu-show="navbarMenuShow=$event"/> <v-navbar @menu-show="navbarMenuShow=$event"/>
<tags-view @menu-show="tagsViewMenuShow=$event"/> <tags-view v-if="useTagsView" @menu-show="tagsViewMenuShow=$event"/>
</header> </header>
</template> </template>
@ -28,7 +28,8 @@
}, },
computed: { computed: {
...mapState('setting', { ...mapState('setting', {
headerAutoHidden: state => state.headerAutoHidden, useTagsView: state => state.useTagsView,
headerAutoHidden: state => state.headerAutoHidden
}), }),
hideHeader() { hideHeader() {
return this.mouseOutside return this.mouseOutside
@ -38,6 +39,9 @@
}, },
}, },
watch: { watch: {
useTagsView(v) {
!v && this.$store.dispatch('tagsView/delAllViews')
},
hideHeader(v) { hideHeader(v) {
this.$store.commit('app/hasHeader', !v) this.$store.commit('app/hasHeader', !v)
v ? this.addEvent() : this.removeEvent() v ? this.addEvent() : this.removeEvent()
@ -64,20 +68,16 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.has-tags-view .header-container {
height: calc(#{$navHeight} + #{$tagsViewHeight});
}
.header-container { .header-container {
position: relative; position: relative;
height: $headerHeight; height: $navHeight;
transition: height .3s ease-in-out; transition: height .3s ease-in-out;
flex-shrink: 0; flex-shrink: 0;
.awake-area {
position: fixed;
top: 0;
width: 100%;
height: 15px;
opacity: 0;
}
&.hide-header { &.hide-header {
height: 0; height: 0;
} }

@ -2,67 +2,41 @@
<el-drawer :visible="value" :with-header="false" append-to-body size="300px" @close="$emit('input', false)"> <el-drawer :visible="value" :with-header="false" append-to-body size="300px" @close="$emit('input', false)">
<div class="drawer-container"> <div class="drawer-container">
<el-divider><h3>个性化设置</h3></el-divider> <el-divider><h3>个性化设置</h3></el-divider>
<div class="drawer-item"> <div v-for="{name,key} in settings" :key="key" class="drawer-item">
<span>显示Logo</span> <span>{{name}}</span>
<el-switch v-model="showLogo" class="drawer-switch"/> <el-switch :value="getValue(key)" @input="setValue($event,key)" class="drawer-switch"/>
</div>
<div class="drawer-item">
<span>显示面包屑</span>
<el-switch v-model="showBreadcrumb" class="drawer-switch"/>
</div>
<div class="drawer-item">
<span>左侧菜单手风琴效果</span>
<el-switch v-model="sidebarUniqueOpen" class="drawer-switch"/>
</div>
<div class="drawer-item">
<span>左侧菜单折叠</span>
<el-switch v-model="sidebarCollapse" class="drawer-switch"/>
</div>
<div class="drawer-item">
<span>折叠菜单显示上级</span>
<el-switch v-model="sidebarShowParent" class="drawer-switch"/>
</div>
<div class="drawer-item">
<span>左侧菜单自动隐藏</span>
<el-switch v-model="sidebarAutoHidden" class="drawer-switch"/>
</div>
<div class="drawer-item">
<span>头部自动隐藏</span>
<el-switch v-model="headerAutoHidden" class="drawer-switch"/>
</div>
<div class="drawer-item">
<span>显示返回顶部按钮</span>
<el-switch v-model="showBackToTop" class="drawer-switch"/>
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
</template> </template>
<script> <script>
const states = ['showLogo', 'showBreadcrumb', 'sidebarUniqueOpen', 'sidebarCollapse', const settings = [
'sidebarAutoHidden', 'sidebarShowParent', 'headerAutoHidden', 'showBackToTop'] {name: '显示logo', key: 'showLogo'},
{name: '显示面包屑', key: 'showBreadcrumb'},
function createStateComputed() { {name: '使用多页签', key: 'useTagsView'},
const obj = {} {name: '侧边栏手风琴效果', key: 'sidebarUniqueOpen'},
states.forEach(key => { {name: '侧边栏折叠', key: 'sidebarCollapse'},
obj[key] = { {name: '折叠菜单显示上级', key: 'sidebarShowParent'},
get() { {name: '侧边栏自动隐藏', key: 'sidebarAutoHidden'},
return this.$store.state.setting[key] {name: '头部自动隐藏', key: 'headerAutoHidden'},
}, {name: '显示返回顶部按钮', key: 'showBackToTop'}
set(v) { ]
this.$store.commit(`setting/${key}`, v)
}
}
})
return obj
}
export default { export default {
name: "SettingDrawer", name: "SettingDrawer",
props: { props: {
value: Boolean value: Boolean
}, },
computed: createStateComputed() data: () => ({settings}),
methods: {
getValue(key) {
return this.$store.state.setting[key]
},
setValue(value, key) {
this.$store.commit(`setting/${key}`, value)
}
}
} }
</script> </script>

@ -99,7 +99,7 @@
<style lang="scss"> <style lang="scss">
.navbar { .navbar {
height: 50px; height: $navHeight;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
background: #fff; background: #fff;
@ -114,7 +114,7 @@
.right-menu { .right-menu {
float: right; float: right;
height: 100%; height: 100%;
line-height: 50px; line-height: $navHeight;
&:focus { &:focus {
outline: none; outline: none;

@ -20,7 +20,7 @@
vnodes.push(iconComponent) vnodes.push(iconComponent)
if (title) vnodes.push(<span slot="title" class="sidebar-item-content">{(title)}</span>) if (title) vnodes.push(<span slot="title" class="sidebar-item-content">{title}</span>)
return vnodes return vnodes
} }

@ -1,7 +1,7 @@
<template> <template>
<section class="el-container app-wrapper"> <section class="el-container app-wrapper">
<v-sidebar/> <v-sidebar/>
<section class="el-container main-container" :class="{'has-header':hasHeader}"> <section class="el-container main-container" :class="{'has-header':hasHeader,'has-tags-view':useTagsView}">
<v-header/> <v-header/>
<v-main/> <v-main/>
</section> </section>
@ -32,6 +32,7 @@
hasHeader: state => state.hasHeader hasHeader: state => state.hasHeader
}), }),
...mapState('setting', { ...mapState('setting', {
useTagsView: state => state.useTagsView,
sidebarCollapse: state => state.sidebarCollapse sidebarCollapse: state => state.sidebarCollapse
}), }),
...mapState('socket', { ...mapState('socket', {

@ -7,31 +7,31 @@ import {getLocalPersonalSettings, setLocalPersonalSettings} from "@/utils/localS
const localSettings = getLocalPersonalSettings() const localSettings = getLocalPersonalSettings()
function createMutations(state) {
return Object.keys(state).reduce((mutations, key) => {
mutations[key] = (ref, data) => {
ref[key] = data
setLocalPersonalSettings(ref)
}
return mutations
}, {})
}
const state = { const state = {
//是否显示logo //是否显示logo
showLogo: true, showLogo: true,
//是否显示面包屑 //是否显示面包屑
showBreadcrumb: true, showBreadcrumb: true,
//是否使用多页签
useTagsView: true,
//左侧菜单手风琴效果 //左侧菜单手风琴效果
sidebarUniqueOpen: true, sidebarUniqueOpen: true,
//左侧菜单是否折叠 //左侧菜单是否折叠
sidebarCollapse: false, sidebarCollapse: false,
//左侧菜单折叠时,弹出菜单是否显示上级 //左侧菜单折叠时,弹出菜单是否显示上级
sidebarShowParent: false, sidebarShowParent: false,
//是否自动隐藏左侧菜单 //是否自动隐藏左侧菜单
sidebarAutoHidden: false, sidebarAutoHidden: false,
//是否自动隐藏头部 //是否自动隐藏头部
headerAutoHidden: false, headerAutoHidden: false,
//是否显示返回顶部按钮 //是否显示返回顶部按钮
showBackToTop: true, showBackToTop: true,
} }
@ -59,6 +59,16 @@ const mutations = {
} }
} }
function createMutations(state) {
return Object.keys(state).reduce((mutations, key) => {
mutations[key] = (ref, data) => {
ref[key] = data
setLocalPersonalSettings(ref)
}
return mutations
}, {})
}
export default { export default {
namespaced: true, namespaced: true,
state, state,

@ -53,13 +53,9 @@ const actions = {
delOthersViews({state, commit}, view) { delOthersViews({state, commit}, view) {
const visitedViews = state.visitedViews.filter(v => v.meta.affix || v.path === view.path) const visitedViews = state.visitedViews.filter(v => v.meta.affix || v.path === view.path)
let cachedViews = [] const name = state.cachedViews.find(name => name === view.name)
const index = state.cachedViews.indexOf(view.name)
if (index > -1) {
cachedViews = state.cachedViews.slice(index, index + 1)
}
commit('visitedViews', visitedViews) commit('visitedViews', visitedViews)
commit('cachedViews', cachedViews) commit('cachedViews', name ? [name] : [])
}, },
delAllViews({state, commit}) { delAllViews({state, commit}) {
commit('visitedViews', state.visitedViews.filter(tag => tag.meta.affix)) commit('visitedViews', state.visitedViews.filter(tag => tag.meta.affix))

@ -33,7 +33,14 @@
<svg-icon :icon="passwordType === 'password' ? 'eye' : 'eye-open'"/> <svg-icon :icon="passwordType === 'password' ? 'eye' : 'eye-open'"/>
</span> </span>
</el-form-item> </el-form-item>
<el-button :loading="loading" class="submit-btn" type="primary" @click="login"> </el-button> <el-button
:loading="loading"
class="submit-btn"
type="primary"
@click="login"
>
{{loading ? '登 录 中...' : '登 录'}}
</el-button>
<div class="flex" style="margin-top: 20px"> <div class="flex" style="margin-top: 20px">
<p class="other-ways"> <p class="other-ways">
其他方式登录 其他方式登录

@ -26,7 +26,14 @@
@keyup.enter.native="register" @keyup.enter.native="register"
/> />
</el-form-item> </el-form-item>
<el-button :loading="loading" class="submit-btn" type="primary" @click="register"> </el-button> <el-button
:loading="loading"
class="submit-btn"
type="primary"
@click="register"
>
{{loading ? '注 册 中...' : '注 册'}}
</el-button>
<div class="flex" style="margin-top: 20px"> <div class="flex" style="margin-top: 20px">
<p/> <p/>
<el-button type="text" @click="login">已有账户登陆</el-button> <el-button type="text" @click="login">已有账户登陆</el-button>

@ -12,7 +12,12 @@
<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>
<el-form-item label="行政区域:" prop="region_name"> <el-form-item label="行政区域:" prop="region_name">
<el-input :value="form.region_name" readonly @focus="regionDialog=true"/> <region-selector
:value="form.region_name"
get-children-on-click
readonly
@select="selectRegion"
/>
</el-form-item> </el-form-item>
<el-form-item label="地 址:" prop="address"> <el-form-item label="地 址:" prop="address">
<el-input v-model="form.address" :readonly="!canEdit" maxlength="100"/> <el-input v-model="form.address" :readonly="!canEdit" maxlength="100"/>
@ -44,14 +49,12 @@
<el-button plain size="small" @click="closeDialog"> </el-button> <el-button plain size="small" @click="closeDialog"> </el-button>
<el-button v-if="canEdit" size="small" type="primary" @click="confirm"> </el-button> <el-button v-if="canEdit" size="small" type="primary" @click="confirm"> </el-button>
</template> </template>
<region-selector v-model="regionDialog" @select="selectRegion"/>
</dialog-form> </dialog-form>
</template> </template>
<script> <script>
import DialogForm from '@/components/DialogForm' import DialogForm from '@/components/DialogForm'
import RegionSelector from '@/bizComponents/RegionSelector' import RegionSelector from '@/components/RegionSelector/Tree'
import dialogMixin from "@/mixins/dialogMixin" import dialogMixin from "@/mixins/dialogMixin"
import {addCustomer, updateCustomer} from "@/api/system/customer" import {addCustomer, updateCustomer} from "@/api/system/customer"
import {isEmpty, mergeObj, resetObj} from '@/utils' import {isEmpty, mergeObj, resetObj} from '@/utils'
@ -72,7 +75,6 @@
data() { data() {
return { return {
loading: false, loading: false,
regionDialog: false,
form: { form: {
id: null, id: null,
name: null, name: null,

@ -5,7 +5,14 @@
<el-input v-model="searchForm.name" clearable maxlength="50"/> <el-input v-model="searchForm.name" clearable maxlength="50"/>
</search-form-item> </search-form-item>
<search-form-item label="行政区域:"> <search-form-item label="行政区域:">
<el-input :value="temp.region_name" clearable @clear="clearSidSearch" @focus="regionDialog=true"/> <region-selector
:value="temp.region_name"
limit
:limit-api="getLimitRegion"
get-children-on-click
@clear="clearSidSearch"
@select="selectRegion"
/>
</search-form-item> </search-form-item>
<search-form-item label="地 址:"> <search-form-item label="地 址:">
<el-input v-model="searchForm.address" clearable maxlength="100"/> <el-input v-model="searchForm.address" clearable maxlength="100"/>
@ -66,14 +73,13 @@
/> />
</el-row> </el-row>
<edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/> <edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/>
<region-selector v-model="regionDialog" limit :limit-api="getLimitRegion" @select="selectRegion"/>
</el-card> </el-card>
</template> </template>
<script> <script>
import SearchForm from "@/components/SearchForm" import SearchForm from "@/components/SearchForm"
import SearchFormItem from "@/components/SearchForm/SearchFormItem" import SearchFormItem from "@/components/SearchForm/SearchFormItem"
import RegionSelector from "@/bizComponents/RegionSelector" import RegionSelector from "@/components/RegionSelector/Tree"
import EditDialog from './EditDialog' import EditDialog from './EditDialog'
import {delCustomer, getCustomers, getLimitRegion} from "@/api/system/customer" import {delCustomer, getCustomers, getLimitRegion} from "@/api/system/customer"
import {isEmpty} from '@/utils' import {isEmpty} from '@/utils'
@ -101,8 +107,7 @@
region_name: null, region_name: null,
ctime: [] ctime: []
}, },
editDialog: false, editDialog: false
regionDialog: false
} }
}, },
computed: { computed: {

@ -12,7 +12,12 @@
<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>
<el-form-item label="行政区域:" prop="region_name"> <el-form-item label="行政区域:" prop="region_name">
<el-input :value="form.region_name" readonly @focus="regionDialog=true"/> <region-selector
:value="form.region_name"
get-children-on-click
readonly
@select="selectRegion"
/>
</el-form-item> </el-form-item>
<el-form-item label="地 址:" prop="address"> <el-form-item label="地 址:" prop="address">
<el-input v-model="form.address" :readonly="!canEdit" maxlength="100"/> <el-input v-model="form.address" :readonly="!canEdit" maxlength="100"/>
@ -44,14 +49,12 @@
<el-button plain size="small" @click="closeDialog"> </el-button> <el-button plain size="small" @click="closeDialog"> </el-button>
<el-button v-if="canEdit" size="small" type="primary" @click="confirm"> </el-button> <el-button v-if="canEdit" size="small" type="primary" @click="confirm"> </el-button>
</template> </template>
<region-selector v-model="regionDialog" @select="selectRegion"/>
</dialog-form> </dialog-form>
</template> </template>
<script> <script>
import DialogForm from '@/components/DialogForm' import DialogForm from '@/components/DialogForm'
import RegionSelector from '@/bizComponents/RegionSelector' import RegionSelector from '@/components/RegionSelector/Tree'
import dialogMixin from "@/mixins/dialogMixin" import dialogMixin from "@/mixins/dialogMixin"
import {addSupplier, updateSupplier} from "@/api/system/supplier" import {addSupplier, updateSupplier} from "@/api/system/supplier"
import {isEmpty, mergeObj, resetObj} from '@/utils' import {isEmpty, mergeObj, resetObj} from '@/utils'
@ -72,7 +75,6 @@
data() { data() {
return { return {
loading: false, loading: false,
regionDialog: false,
form: { form: {
id: null, id: null,
name: null, name: null,

@ -5,7 +5,14 @@
<el-input v-model="searchForm.name" clearable maxlength="50"/> <el-input v-model="searchForm.name" clearable maxlength="50"/>
</search-form-item> </search-form-item>
<search-form-item label="行政区域:"> <search-form-item label="行政区域:">
<el-input :value="temp.region_name" clearable @clear="clearSidSearch" @focus="regionDialog=true"/> <region-selector
:value="temp.region_name"
limit
:limit-api="getLimitRegion"
get-children-on-click
@clear="clearSidSearch"
@select="selectRegion"
/>
</search-form-item> </search-form-item>
<search-form-item label="地 址:"> <search-form-item label="地 址:">
<el-input v-model="searchForm.address" clearable maxlength="100"/> <el-input v-model="searchForm.address" clearable maxlength="100"/>
@ -66,14 +73,13 @@
/> />
</el-row> </el-row>
<edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/> <edit-dialog v-model="editDialog" :data="row" :type="type" @success="success"/>
<region-selector v-model="regionDialog" limit :limit-api="getLimitRegion" @select="selectRegion"/>
</el-card> </el-card>
</template> </template>
<script> <script>
import SearchForm from "@/components/SearchForm" import SearchForm from "@/components/SearchForm"
import SearchFormItem from "@/components/SearchForm/SearchFormItem" import SearchFormItem from "@/components/SearchForm/SearchFormItem"
import RegionSelector from "@/bizComponents/RegionSelector" import RegionSelector from "@/components/RegionSelector/Tree"
import EditDialog from './EditDialog' import EditDialog from './EditDialog'
import {delSupplier, getLimitRegion, getSuppliers} from "@/api/system/supplier" import {delSupplier, getLimitRegion, getSuppliers} from "@/api/system/supplier"
import {isEmpty} from '@/utils' import {isEmpty} from '@/utils'
@ -101,8 +107,7 @@
region_name: null, region_name: null,
ctime: [] ctime: []
}, },
editDialog: false, editDialog: false
regionDialog: false
} }
}, },
computed: { computed: {

Loading…
Cancel
Save