+
+ {{
+ item[key]
+ }}
+
+
+
+
diff --git a/web/src/components/table-selector/table-selector.vue b/web/src/components/table-selector/table-selector.vue
index 0aeda52..45833ad 100644
--- a/web/src/components/table-selector/table-selector.vue
+++ b/web/src/components/table-selector/table-selector.vue
@@ -201,6 +201,7 @@ export default {
// this.dict = d2CrudPlus.util.dict.mergeDefault(this.dict, true)
// }
// this.initData()
+ console.log(this)
},
computed: {
_elProps () {
@@ -327,32 +328,23 @@ export default {
this.$emit('current-change', event)
},
openDialog () {
- if (this.disabled) {
+ const that = this
+ if (that.disabled) {
return
}
- this.dialogVisible = true
- setTimeout(() => {
- if (this.selected != null) {
- const ids = this.selected.map(
- (item) => item[this._elProps.props.value]
- )
- ids.forEach((id) => {
- const current = this.$refs.elTree.store.nodesMap[id]
- if (current != null) {
- this.doExpandParent(current)
- }
- })
- this.$nextTick(() => {
- if (this.multiple) {
- // this.$refs.elTree.setCheckedKeys(ids, this.leafOnly);
- this.$refs.elTree.setCheckboxRow(ids)
- } else if (ids.length > 0) {
- // this.$refs.elTree.setCurrentKey(ids[0]);
- this.$refs.elTree.setRadioRow(ids[0])
- }
- })
- }
- }, 1)
+ that.dialogVisible = true
+ if (that.value != null) {
+ that.$nextTick(() => {
+ const refs = Object.assign({}, that.$refs)
+ const { elTree } = refs
+ console.log(elTree)
+ if (that.multiple) {
+ elTree.setCheckboxRow(that.selected, true)
+ } else {
+ elTree.setRadioRow(that.selected[0])
+ }
+ })
+ }
},
doExpandParent (node) {
if (node.parent != null) {
@@ -412,20 +404,6 @@ export default {
// 获取选中的行数据
refreshSelected () {
let nodes = null
- // if (this.multiple) {
- // nodes = this.$refs.elTree.getCheckedNodes(
- // this.leafOnly,
- // this.includeHalfChecked
- // );
- // } else {
- // const node = this.$refs.elTree.getCurrentNode();
- // if (node == null) {
- // nodes = [];
- // } else {
- // nodes = [node];
- // }
- // }
-
if (this.multiple) {
nodes = this.$refs.elTree.getCheckboxRecords()
} else {
diff --git a/web/src/install.js b/web/src/install.js
index 4219c02..e6e2c96 100644
--- a/web/src/install.js
+++ b/web/src/install.js
@@ -256,6 +256,10 @@ Vue.prototype.commonEndColumns = function (param = {}) {
create_datetime: {
showForm: (param.create_datetime && param.create_datetime.showForm) !== undefined ? param.create_datetime.showForm : false,
showTable: (param.create_datetime && param.create_datetime.showTable) !== undefined ? param.create_datetime.showTable : true
+ },
+ is_deleted: {
+ showForm: (param.is_deleted && param.is_deleted.showForm) !== undefined ? param.is_deleted.showForm : false,
+ showTable: (param.is_deleted && param.is_deleted.showTable) !== undefined ? param.is_deleted.showTable : false
}
}
return [
@@ -388,6 +392,23 @@ Vue.prototype.commonEndColumns = function (param = {}) {
form: {
disabled: !showData.create_datetime.showForm
}
+ },
+ {
+ title: '是否软删除',
+ key: 'is_deleted',
+ width: 160,
+ search: {
+ disabled: !showData.is_deleted.showForm,
+ },
+ show: showData.is_deleted.showTable,
+ type: 'radio',
+ dict:{
+ data:[{label:"是",value:true},{label:"否",value:false}]
+ },
+ form: {
+ disabled: !showData.is_deleted.showForm,
+
+ }
}
]
}
diff --git a/web/src/layout/header-aside/layout.vue b/web/src/layout/header-aside/layout.vue
index 5370c16..68e114f 100644
--- a/web/src/layout/header-aside/layout.vue
+++ b/web/src/layout/header-aside/layout.vue
@@ -160,8 +160,8 @@ export default {
routerViewKey () {
// 默认情况下 key 类似 __transition-n-/foo
// 这里的字符串操作是为了最终 key 的格式和原来相同 类似 __transition-n-__stamp-time-/foo
- const stamp = this.$route.meta[`__stamp-${this.$route.path}`] || ''
- return `${stamp ? `__stamp-${stamp}-` : ''}${this.$route.path}`
+ const stamp = this.$route.meta[`__stamp-${this.$route.fullpath}`] || ''
+ return `${stamp ? `__stamp-${stamp}-` : ''}${this.$route.fullpath}`
},
/**
* @description 最外层容器的背景图片样式
diff --git a/web/src/libs/util.js b/web/src/libs/util.js
index 0b00d8b..9d0abd1 100644
--- a/web/src/libs/util.js
+++ b/web/src/libs/util.js
@@ -2,11 +2,13 @@ import cookies from './util.cookies'
import db from './util.db'
import log from './util.log'
import dayjs from 'dayjs'
+import filterParams from './util.params'
const util = {
cookies,
db,
- log
+ log,
+ filterParams
}
/**
diff --git a/web/src/libs/util.params.js b/web/src/libs/util.params.js
new file mode 100644
index 0000000..d4ad979
--- /dev/null
+++ b/web/src/libs/util.params.js
@@ -0,0 +1,19 @@
+import util from '@/libs/util'
+
+/**
+ * 对请求参数进行过滤
+ *@param that=>this
+ *@param array:其他字段数组
+ */
+const filterParams = function (that, array) {
+ that.$nextTick(()=>{
+ const arr = that.crud.columns
+ const columnKeys = arr.map(item => {
+ return item.key
+ })
+ let newArray = [...columnKeys, array, 'id']
+ newArray = [...new Set(newArray)]
+ that.crud.searchOptions.form.query = '{' + newArray.toString() + '}'
+ })
+}
+export default filterParams
diff --git a/web/src/main.js b/web/src/main.js
index e60e997..36b5dfc 100644
--- a/web/src/main.js
+++ b/web/src/main.js
@@ -32,10 +32,14 @@ import 'vxe-table/lib/style.css'
// md5加密
import md5 from 'js-md5'
+//websocket
+import websocket from '@/api/websocket'
+
// 核心插件
Vue.use(d2Admin)
Vue.use(VXETable)
Vue.prototype.$md5 = md5
+Vue.prototype.$websocket = websocket
new Vue({
router,
diff --git a/web/src/views/system/menuButton/crud.js b/web/src/views/system/menuButton/crud.js
index e102e0b..4bff9d4 100644
--- a/web/src/views/system/menuButton/crud.js
+++ b/web/src/views/system/menuButton/crud.js
@@ -104,12 +104,13 @@ export const crudOptions = (vm) => {
},
valueChange (key, value, form, { getColumn, mode, component, immediate, getComponent }) {
if (value != null) {
- console.log('component.dictOptions', component.dictOptions)
+ // console.log('component.dictOptions', component.dictOptions)
const obj = component.dictOptions.find(item => {
- console.log(item.label, value)
+ // console.log(item.label, value)
return item.value === value
})
if (obj && obj.value) {
+ form.name = obj.label
form.value = obj.value
}
}
diff --git a/web/src/views/system/role/api.js b/web/src/views/system/role/api.js
index 5633a73..f215c52 100644
--- a/web/src/views/system/role/api.js
+++ b/web/src/views/system/role/api.js
@@ -14,7 +14,7 @@ export function GetList (query) {
return request({
url: urlPrefix,
method: 'get',
- params: query
+ params: {...query}
})
}
diff --git a/web/src/views/system/user/api.js b/web/src/views/system/user/api.js
index 5743af2..8f88c54 100644
--- a/web/src/views/system/user/api.js
+++ b/web/src/views/system/user/api.js
@@ -5,7 +5,7 @@ export function GetList (query) {
return request({
url: urlPrefix,
method: 'get',
- params: query
+ params: { ...query }
})
}
@@ -29,7 +29,15 @@ export function DelObj (id) {
return request({
url: urlPrefix + id + '/',
method: 'delete',
- data: { id }
+ data: { soft_delete: true }
+ })
+}
+
+export function BatchDel (keys) {
+ return request({
+ url: urlPrefix + 'multiple_delete/',
+ method: 'delete',
+ data: { keys }
})
}
diff --git a/web/src/views/system/user/crud.js b/web/src/views/system/user/crud.js
index 9838106..caaa4d0 100644
--- a/web/src/views/system/user/crud.js
+++ b/web/src/views/system/user/crud.js
@@ -1,7 +1,9 @@
import { request } from '@/api/service'
import { urlPrefix as deptPrefix } from '../dept/api'
+import util from '@/libs/util'
export const crudOptions = (vm) => {
+ util.filterParams(vm, ['dept_name','role_info{name}'])
return {
pageOptions: {
compact: true
@@ -9,7 +11,12 @@ export const crudOptions = (vm) => {
options: {
height: '100%',
tableType: 'vxe-table',
- rowKey: true // 必须设置,true or false
+ rowKey: true,
+ rowId: 'id'
+ },
+ selectionRow: {
+ align: 'center',
+ width: 46
},
rowHandle: {
width: 240,
@@ -128,6 +135,7 @@ export const crudOptions = (vm) => {
placeholder: '请输入密码'
},
value: vm.systemConfig('base.default_password'),
+ editDisabled: true,
itemProps: {
class: { yxtInput: true }
}
@@ -193,6 +201,10 @@ export const crudOptions = (vm) => {
pagination: true,
props: { multiple: false }
}
+ },
+ component: {
+ name: 'foreignKey',
+ valueBinding: 'dept_name'
}
},
{
@@ -368,6 +380,11 @@ export const crudOptions = (vm) => {
]
}
}
+ },
+ component: {
+ name: 'manyToMany',
+ valueBinding: 'role_info',
+ children: 'name'
}
}
].concat(vm.commonEndColumns({
diff --git a/web/src/views/system/user/index.vue b/web/src/views/system/user/index.vue
index 6be1535..21293a0 100644
--- a/web/src/views/system/user/index.vue
+++ b/web/src/views/system/user/index.vue
@@ -21,9 +21,12 @@
>