6bee1405 by 任超

feat:字典模块

1 parent ed7feaa4
...@@ -13,6 +13,13 @@ Vue.mixin(mixin); ...@@ -13,6 +13,13 @@ Vue.mixin(mixin);
13 import { theme } from "@/directive/theme.js" 13 import { theme } from "@/directive/theme.js"
14 Vue.directive("theme", theme) 14 Vue.directive("theme", theme)
15 15
16 Vue.directive('fo', {
17 inserted (el, binding, vnode) {
18 // 聚焦元素
19 el.querySelector('input').focus()
20 }
21 })
22
16 import './image/icons' // icon 23 import './image/icons' // icon
17 import store from './store' 24 import store from './store'
18 import router from './router' 25 import router from './router'
......
...@@ -213,7 +213,7 @@ export const asyncRoutes = [ ...@@ -213,7 +213,7 @@ export const asyncRoutes = [
213 path: 'dictionaries', 213 path: 'dictionaries',
214 id: '91', 214 id: '91',
215 parentId: '9', 215 parentId: '9',
216 component: () => import('@/views/system/dictionaries.vue'), 216 component: () => import('@/views/system/dictionaries/dictionaries.vue'),
217 name: 'dictionaries', 217 name: 'dictionaries',
218 meta: { title: '字典管理' } 218 meta: { title: '字典管理' }
219 }, 219 },
......
1 <template>
2 <!-- 编辑 -->
3 <dialogBox submitForm="submitForm" @closeDialog="closeDialog" v-model="myValue" title="字典信息">
4 <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px">
5 <el-row :gutter="20">
6 <el-col :span="12">
7 <el-form-item label="字典类型编码" prop="dcode">
8 <el-input v-model.trim="ruleForm.dcode" placeholder="字典类型编码"></el-input>
9 </el-form-item>
10 </el-col>
11 <el-col :span="12">
12 <el-form-item label="字典类型名称" prop="dname">
13 <el-input v-model.trim="ruleForm.dname" placeholder="字典类型名称"></el-input>
14 </el-form-item>
15 </el-col>
16 </el-row>
17 </el-form>
18 <lb-table :column="column" :heightNum="520" :key="key" :expand-row-keys="keyList" row-key="dictid"
19 :tree-props="{ children: 'children' }" :pagination="false" :data="tableData">
20 </lb-table>
21 </dialogBox>
22 </template>
23
24 <script>
25 export default {
26 props: {
27 value: { type: Boolean, default: false },
28 },
29 data () {
30 return {
31 key: 0,
32 myValue: this.value,
33 keyList: [],
34 ruleForm: {
35 dcode: '',
36 dname: ''
37 },
38 column: [
39 {
40 width: '60',
41 renderHeader: (h, scope) => {
42 return <i class="el-icon-plus" onClick={() => { this.handleAdd() }} style="cursor:pointer;color:#409EFF"></i>
43 },
44 render: (h, scope) => {
45 return (
46 <span>{scope.row.index}</span>
47 )
48 }
49 },
50 {
51 prop: 'dcode',
52 label: '字典项编码',
53 render: (h, scope) => {
54 return (
55 <div>
56 <el-input placeholder="字典项编码" v-show={scope.row.codeShow} v-fo value={scope.row[scope.column.property]}
57 onFocus={() => { this.itemShowFalse(); scope.row.codeShow = true; }}
58 onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
59
60
61 <el-input placeholder="字典项编码" v-show={!scope.row.codeShow} value={scope.row[scope.column.property]}
62 onFocus={() => { this.itemShowFalse(); scope.row.codeShow = true; }}
63 onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
64 </div>
65 )
66 }
67 },
68 {
69 prop: 'dname',
70 label: '字典项名称',
71 render: (h, scope) => {
72 return (
73 <div>
74 <el-input placeholder="字典项编码" v-show={scope.row.nameShow} v-fo value={scope.row[scope.column.property]}
75 onFocus={() => { this.itemShowFalse(); scope.row.nameShow = true; }}
76 onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
77
78 <el-input placeholder="字典项名称" v-show={!scope.row.nameShow} value={scope.row[scope.column.property]}
79 onFocus={() => { this.itemShowFalse(); scope.row.nameShow = true; }}
80 onInput={(val) => { scope.row[scope.column.property] = val }}></el-input>
81 </div>
82 )
83 }
84 },
85 {
86 width: '130px',
87 label: '移动',
88 render: (h, scope) => {
89 return (
90 <div>
91 <el-button type='text' disabled={scope.$index == 0} onClick={() => { this.moveUpward(scope.$index, scope.row) }}>上移</el-button>
92 <el-button type='text' disabled={(scope.$index + 1) == this.tableData.length} onClick={() => { this.moveDown(scope.$index, scope.row) }}>下移</el-button >
93 </div >
94 )
95 }
96 },
97 {
98 width: '150px',
99 label: '操作',
100 render: (h, scope) => {
101 return (
102 <div>
103 <el-button type="text" style="margin-right:10px" onClick={() => { this.handleAddSubordinate(scope.row) }}>增加下级</el-button>
104 <el-button type="text" style="margin-left:0" onClick={() => { this.handleMinus(scope.$index, scope.row) }}>删除</el-button>
105 </div>
106 )
107 }
108 }
109 ],
110 tableData: [],
111 rules: {
112 }
113 }
114 },
115 watch: {
116 value (val) {
117 this.myValue = val
118 }
119 },
120 methods: {
121 // 添加索引
122 addIndexes () {
123 this.tableData.forEach((item, index) => {
124 if (index == 0) {
125 item.codeShow = true
126 } else {
127 item.codeShow = false
128 item.nameShow = false
129 }
130 item.index = index + 1
131 })
132 },
133 itemShowFalse () {
134 this.tableData.forEach((item, index) => {
135 item.codeShow = false
136 item.nameShow = false
137 })
138 },
139 handleMinus (index, row) {
140 },
141 async handleSubmit () {
142 },
143 closeDialog () {
144 this.$emit('input', false)
145 },
146 // 增加下级
147 handleAddSubordinate (row) {
148 if (!row.children) {
149 row.children = []
150 }
151 row.children.push(
152 {
153 dcode: '',
154 dname: '',
155 typeid: row.typeid,
156 children: null
157 }
158 )
159 this.keyList = [];
160 this.keyList.push(row.dictid)
161 },
162 // 增加
163 handleAdd () {
164 this.$nextTick(() => {
165 let container = this.$el.querySelector('.el-table__body-wrapper');
166 container.scrollTop = container.scrollHeight;
167 })
168 this.tableData.push(
169 {
170 dcode: '',
171 dname: '',
172 children: null
173 }
174 )
175 this.addIndexes()
176 },
177 // 上移下移
178 moveUpward (index, row) {
179
180 },
181 moveDown (index, row) {
182
183 }
184 }
185 }
186 </script>
187 <style rel="stylesheet/scss" lang="scss" scoped>
188 </style>
189
1 import filter from '@/utils/filter.js'
2 let vm = null
3
4 const sendThis = (_this) => {
5 vm = _this
6 }
7 class data extends filter {
8 constructor() {
9 super()
10 }
11 columns () {
12 return [
13 {
14 label: '序号',
15 type: 'index',
16 width: '50',
17 render: (h, scope) => {
18 return (
19 <div>
20 {(vm.pageData.currentPage - 1) * vm.pageData.pageSize + scope.$index + 1}
21 </div>
22 )
23 }
24 },
25 {
26 prop: "zdlxbm",
27 label: "字典类型编码",
28 },
29 {
30 prop: "zdlxmc",
31 label: "字典类型名称",
32 },
33 {
34 prop: "sfyxxg",
35 label: "是否允许修改",
36 render: (h, scope) => {
37 return (
38 <div>
39 {scope.row.sfyxxg}
40 </div>
41 )
42 }
43 },
44 {
45 label: '操作',
46 width: '150',
47 align: 'center',
48 fixed: 'right',
49 render: (h, scope) => {
50 return (
51 <div>
52 <el-button type="text" icon="el-icon-edit-outline" onClick={() => { vm.editClick(scope) }}>修改</el-button>
53 </div>
54 )
55 }
56 }
57 ]
58 }
59
60 }
61 let datas = new data()
62 export {
63 datas,
64 sendThis
65 }
1 <template>
2 <div class="from-clues">
3 <!-- 表单部分 -->
4 <div class="from-clues-header">
5 <el-form :model="ruleForm" ref="ruleForm">
6 <el-row>
7 <el-col :span="6">
8 <el-form-item label="字典类型编码">
9 <el-input v-model="ruleForm.zdlxbm" placeholder="字典类型编码"></el-input>
10 </el-form-item>
11 </el-col>
12 <el-col :span="6">
13 <el-form-item label="字典类型名称">
14 <el-input v-model="ruleForm.zdlxmc" placeholder="字典类型名称"></el-input>
15 </el-form-item>
16 </el-col>
17 <el-col :span="12" class="btnCol">
18 <el-form-item>
19 <el-button type="primary" @click="fetchData()">查询</el-button>
20 <el-button @click="moreQueryClick()">高级查询</el-button>
21 </el-form-item>
22 </el-col>
23 </el-row>
24 </el-form>
25 </div>
26 <!-- 表格 -->
27 <div class="from-clues-content">
28 <lb-table :page-size="pageData.size" :current-page.sync="pageData.current" :total="tableData.total"
29 @size-change="handleSizeChange" @p-current-change="handleCurrentChange" :column="tableData.columns"
30 :data="tableData.data">
31 </lb-table>
32 </div>
33 <editDialog v-model="isDialog" />
34 </div>
35 </template>
36 <script>
37 import table from "@/utils/mixin/table"
38 import { datas, sendThis } from "./dictionaries"
39 import editDialog from "./components/editDialog.vue"
40 export default {
41 name: "djbcx",
42 components: {
43 editDialog
44 },
45 mixins: [table],
46 mounted () {
47 sendThis(this);
48 },
49 data () {
50 return {
51 isDialog: false,
52 ruleForm: {
53 zdlxbm: '',
54 zdlxmc: ''
55 },
56 tableData: {
57 total: 0,
58 columns: datas.columns(),
59 data: [
60 {
61 zdlxbm: "66666666666666",
62 }
63 ]
64 }
65 }
66 },
67 methods: {
68 // 初始化数据
69 fetchData () {
70 },
71 moreQueryClick () { },
72 editClick () {
73 this.isDialog = true
74 }
75 },
76 };
77 </script>
78 <style scoped lang="scss">
79 @import "~@/styles/public.scss";
80 </style>