diff --git a/jero-web/README.md b/jero-web/README.md
index d0a6bd6d..2a8d5709 100644
--- a/jero-web/README.md
+++ b/jero-web/README.md
@@ -1,7 +1,7 @@
Jero-Web
====
-当前最新版本: 2.4.2
+当前最新版本: 2.4.3
Overview
----
diff --git a/jero-web/package.json b/jero-web/package.json
index 1948abb0..a0e8aa7b 100644
--- a/jero-web/package.json
+++ b/jero-web/package.json
@@ -1,6 +1,6 @@
{
"name": "jero-web",
- "version": "2.4.2",
+ "version": "2.4.3",
"private": true,
"scripts": {
"pre": "cnpm install || yarn --registry https://registry.npm.taobao.org || npm install --registry https://registry.npm.taobao.org ",
diff --git a/jero-web/src/api/api.js b/jero-web/src/api/api.js
index cd961412..5ec91fb7 100644
--- a/jero-web/src/api/api.js
+++ b/jero-web/src/api/api.js
@@ -38,6 +38,7 @@ const queryPermissionRule = (params)=>getAction("/sys/permission/queryPermission
// 部门管理
const queryDepartTreeList = (params)=>getAction("/sys/sysDepart/queryTreeList",params);
+const queryDepartTreeSync = (params)=>getAction("/sys/sysDepart/queryDepartTreeSync",params);
const queryIdTree = (params)=>getAction("/sys/sysDepart/queryIdTree",params);
const queryParentName = (params)=>getAction("/sys/sysDepart/queryParentName",params);
const searchByKeywords = (params)=>getAction("/sys/sysDepart/searchBy",params);
@@ -52,7 +53,6 @@ const saveDeptRolePermission = (params)=>postAction("/sys/sysDepartPermission/sa
const queryMyDepartTreeList = (params)=>getAction("/sys/sysDepart/queryMyDeptTreeList",params);
//日志管理
-//const getLogList = (params)=>getAction("/sys/log/page",params);
const deleteLog = (params)=>deleteAction("/sys/log/delete",params);
const deleteLogList = (params)=>deleteAction("/sys/log/deleteBatch",params);
@@ -123,6 +123,7 @@ export {
getPermissionRuleList,
queryPermissionRule,
queryDepartTreeList,
+ queryDepartTreeSync,
queryIdTree,
queryParentName,
searchByKeywords,
diff --git a/jero-web/src/components/_util/Area.js b/jero-web/src/components/_util/Area.js
index 89cba1fb..1d682c9d 100644
--- a/jero-web/src/components/_util/Area.js
+++ b/jero-web/src/components/_util/Area.js
@@ -12,13 +12,13 @@ export default class Area {
let arr = []
const province = pcaa['86']
Object.keys(province).map(key=>{
- arr.push({id:key, text:province[key], pid:'86'});
+ arr.push({id:key, text:province[key], pid:'86', index:1});
const city = pcaa[key];
Object.keys(city).map(key2=>{
- arr.push({id:key2, text:city[key2], pid:key});
+ arr.push({id:key2, text:city[key2], pid:key, index:2});
const qu = pcaa[key2];
Object.keys(qu).map(key3=>{
- arr.push({id:key3, text:qu[key3], pid:key2});
+ arr.push({id:key3, text:qu[key3], pid:key2, index:3});
})
})
})
@@ -45,33 +45,34 @@ export default class Area {
return ''
}
let arr = []
- this.getAreaBycode(code,arr);
+ this.getAreaBycode(code, arr, 3);
return arr.join('/')
}
getRealCode(code){
let arr = []
- this.getPcode(code, arr)
+ this.getPcode(code, arr, 3)
return arr;
}
- getPcode(id, arr){
+ getPcode(id, arr, index){
for(let item of this.all){
- if(item.id === id){
+ if(item.id === id && item.index == index){
arr.unshift(id)
if(item.pid != '86'){
- this.getPcode(item.pid,arr)
+ this.getPcode(item.pid, arr, --index)
}
}
}
}
- getAreaBycode(code,arr){
- //console.log("this.all.length",this.all)
+ getAreaBycode(code, arr, index){
for(let item of this.all){
- if(item.id === code){
+ if(item.id === code && item.index == index){
arr.unshift(item.text);
- this.getAreaBycode(item.pid,arr)
+ if(item.pid != '86'){
+ this.getAreaBycode(item.pid, arr, --index)
+ }
}
}
}
diff --git a/jero-web/src/components/jero/JEditor.vue b/jero-web/src/components/jero/JEditor.vue
index 70559071..b8ae718e 100644
--- a/jero-web/src/components/jero/JEditor.vue
+++ b/jero-web/src/components/jero/JEditor.vue
@@ -128,6 +128,9 @@
this.reload()
}
})
+ //update--begin--autor:liusq-----date:20210316------for:富文本编辑器tab父组件可能导致的赋值问题------
+ this.reload()
+ //update--end--autor:liusq-----date:20210316------for:富文本编辑器tab父组件可能导致的赋值问题------
}else{
//update--begin--autor:wangshuai-----date:20200724------for:富文本编辑器切换tab无法修改------
let tabLayout = getVmParentByName(this, 'TabLayout')
diff --git a/jero-web/src/components/jero/JModal/index.vue b/jero-web/src/components/jero/JModal/index.vue
index 7c6322e8..203cdbdf 100644
--- a/jero-web/src/components/jero/JModal/index.vue
+++ b/jero-web/src/components/jero/JModal/index.vue
@@ -8,10 +8,11 @@
v-on="$listeners"
@ok="handleOk"
@cancel="handleCancel"
+ destroyOnClose
>
-
+
@@ -22,6 +23,14 @@
+
+
+
+
+
+
+
+
@@ -161,7 +170,6 @@
\ No newline at end of file
diff --git a/jero-web/src/components/jerobiz/thirdApp/JThirdAppDropdown.vue b/jero-web/src/components/jerobiz/thirdApp/JThirdAppDropdown.vue
new file mode 100644
index 00000000..22510ffe
--- /dev/null
+++ b/jero-web/src/components/jerobiz/thirdApp/JThirdAppDropdown.vue
@@ -0,0 +1,34 @@
+
+
+ 同步{{name}}
+
+ 同步到{{name}}
+ 同步到本地
+
+
+ 同步{{name}}
+ 同步{{name}}到本地
+
+
+
+
+
\ No newline at end of file
diff --git a/jero-web/src/components/page/GlobalHeader.vue b/jero-web/src/components/page/GlobalHeader.vue
index 56c629ef..414c16ef 100644
--- a/jero-web/src/components/page/GlobalHeader.vue
+++ b/jero-web/src/components/page/GlobalHeader.vue
@@ -50,7 +50,6 @@
import UserMenu from '../tools/UserMenu'
import SMenu from '../menu/'
import Logo from '../tools/Logo'
-
import { mixin } from '@/utils/mixin.js'
export default {
diff --git a/jero-web/src/main.js b/jero-web/src/main.js
index dedf0134..13deea5e 100644
--- a/jero-web/src/main.js
+++ b/jero-web/src/main.js
@@ -22,7 +22,6 @@ import 'ant-design-vue/dist/antd.less'; // or 'ant-design-vue/dist/antd.less'
import '@/permission' // permission control
import '@/utils/filter' // base filtermybatis-plus
import Print from 'vue-print-nb-jeecg'
-/*import '@babel/polyfill'*/
import preview from 'vue-photo-preview'
import 'vue-photo-preview/dist/skin.css'
import SSO from '@/cas/sso.js'
@@ -49,7 +48,9 @@ import '@/assets/less/JAreaLinkage.less'
import VueAreaLinkage from 'vue-area-linkage'
import '@/components/jero/JVxeTable/install'
import '@/components/JVxeCells/install'
-
+//表单验证
+import { rules } from '@/utils/rules'
+Vue.prototype.rules = rules
Vue.config.productionTip = false
Vue.use(Storage, config.storageOptions)
Vue.use(Antd)
diff --git a/jero-web/src/mixins/JEditableTableModelMixin.js b/jero-web/src/mixins/JEditableTableModelMixin.js
new file mode 100644
index 00000000..21915513
--- /dev/null
+++ b/jero-web/src/mixins/JEditableTableModelMixin.js
@@ -0,0 +1,191 @@
+import JEditableTable from '@/components/jero/JEditableTable'
+import { VALIDATE_NO_PASSED, getRefPromise,validateFormModelAndTables} from '@/utils/JEditableTableUtil'
+import { httpAction, getAction } from '@/api/manage'
+
+export const JEditableTableModelMixin = {
+ components: {
+ JEditableTable
+ },
+ data() {
+ return {
+ title: '操作',
+ visible: false,
+ confirmLoading: false,
+ model:{},
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 6 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ }
+ }
+ },
+ methods: {
+
+ /** 获取所有的editableTable实例 */
+ getAllTable() {
+ if (!(this.refKeys instanceof Array)) {
+ throw this.throwNotArray('refKeys')
+ }
+ let values = this.refKeys.map(key => getRefPromise(this, key))
+ return Promise.all(values)
+ },
+
+ /** 遍历所有的JEditableTable实例 */
+ eachAllTable(callback) {
+ // 开始遍历
+ this.getAllTable().then(tables => {
+ tables.forEach((item, index) => {
+ if (typeof callback === 'function') {
+ callback(item, index)
+ }
+ })
+ })
+ },
+ /** 当点击新增按钮时调用此方法 */
+ add() {
+ //update-begin-author:lvdandan date:20201113 for:LOWCOD-1049 JEditaTable,子表默认添加一条数据,addDefaultRowNum设置无效 #1930
+ return new Promise((resolve) => {
+ this.tableReset();
+ resolve();
+ }).then(() => {
+ if (typeof this.addBefore === 'function') this.addBefore()
+ // 默认新增空数据
+ let rowNum = this.addDefaultRowNum
+ if (typeof rowNum !== 'number') {
+ rowNum = 1
+ console.warn('由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0')
+ }
+ this.eachAllTable((item) => {
+ item.add(rowNum)
+ })
+ if (typeof this.addAfter === 'function') this.addAfter(this.model)
+ this.edit(this.model)
+ })
+ //update-end-author:lvdandan date:20201113 for:LOWCOD-1049 JEditaTable,子表默认添加一条数据,addDefaultRowNum设置无效 #1930
+ },
+ /** 当点击了编辑(修改)按钮时调用此方法 */
+ edit(record) {
+ if(record && '{}'!=JSON.stringify(record)&&record.id){
+ this.tableReset();
+ }
+ if (typeof this.editBefore === 'function') this.editBefore(record)
+ this.visible = true
+ this.activeKey = this.refKeys[0]
+ this.$refs.form.resetFields()
+ this.model = Object.assign({}, record)
+ if (typeof this.editAfter === 'function') this.editAfter(this.model)
+ },
+ /** 关闭弹窗,并将所有JEditableTable实例回归到初始状态 */
+ close() {
+ this.visible = false
+ this.$emit('close')
+ },
+ //清空子表table的数据
+ tableReset(){
+ this.eachAllTable((item) => {
+ item.clearRow()
+ })
+ },
+ /** 查询某个tab的数据 */
+ requestSubTableData(url, params, tab, success) {
+ tab.loading = true
+ getAction(url, params).then(res => {
+ let { result } = res
+ let dataSource = []
+ if (result) {
+ if (Array.isArray(result)) {
+ dataSource = result
+ } else if (Array.isArray(result.records)) {
+ dataSource = result.records
+ }
+ }
+ tab.dataSource = dataSource
+ typeof success === 'function' ? success(res) : ''
+ }).finally(() => {
+ tab.loading = false
+ })
+ },
+ /** 发起请求,自动判断是执行新增还是修改操作 */
+ request(formData) {
+ let url = this.url.add, method = 'post'
+ if (this.model.id) {
+ url = this.url.edit
+ method = 'put'
+ }
+ this.confirmLoading = true
+ httpAction(url, formData, method).then((res) => {
+ if (res.success) {
+ this.$message.success(res.message)
+ this.$emit('ok')
+ this.close()
+ } else {
+ this.$message.warning(res.message)
+ }
+ }).finally(() => {
+ this.confirmLoading = false
+ })
+ },
+
+ /* --- handle 事件 --- */
+
+ /** ATab 选项卡切换事件 */
+ handleChangeTabs(key) {
+ // 自动重置scrollTop状态,防止出现白屏
+ getRefPromise(this, key).then(editableTable => {
+ editableTable.resetScrollTop()
+ })
+ },
+ /** 关闭按钮点击事件 */
+ handleCancel() {
+ this.close()
+ },
+ /** 确定按钮点击事件 */
+ handleOk() {
+ /** 触发表单验证 */
+ this.getAllTable().then(tables => {
+ /** 一次性验证主表和所有的次表 */
+ return validateFormModelAndTables(this.$refs.form,this.model, tables)
+ }).then(allValues => {
+ /** 一次性验证一对一的所有子表 */
+ return this.validateSubForm(allValues)
+ }).then(allValues => {
+ if (typeof this.classifyIntoFormData !== 'function') {
+ throw this.throwNotFunction('classifyIntoFormData')
+ }
+ let formData = this.classifyIntoFormData(allValues)
+ // 发起请求
+ return this.request(formData)
+ }).catch(e => {
+ if (e.error === VALIDATE_NO_PASSED) {
+ // 如果有未通过表单验证的子表,就自动跳转到它所在的tab
+ //update--begin--autor:liusq-----date:20210316------for:未通过表单验证跳转tab问题------
+ this.activeKey = e.index == null ? this.activeKey : (e.paneKey?e.paneKey:this.refKeys[e.index])
+ //update--end--autor:liusq-----date:20210316------for:未通过表单验证跳转tab问题------
+ } else {
+ console.error(e)
+ }
+ })
+ },
+ //校验所有子表表单
+ validateSubForm(allValues){
+ return new Promise((resolve) => {
+ resolve(allValues)
+ })
+ },
+ /* --- throw --- */
+
+ /** not a function */
+ throwNotFunction(name) {
+ return `${name} 未定义或不是一个函数`
+ },
+
+ /** not a array */
+ throwNotArray(name) {
+ return `${name} 未定义或不是一个数组`
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/jero-web/src/mixins/JVxeTableMixin.js b/jero-web/src/mixins/JVxeTableMixin.js
index 851d13e9..5d4c6469 100644
--- a/jero-web/src/mixins/JVxeTableMixin.js
+++ b/jero-web/src/mixins/JVxeTableMixin.js
@@ -53,8 +53,9 @@ export const JVxeTableMixin = {
console.warn('由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0')
}
this.eachAllTable((item) => {
- item.addRows()
- //item.add(rowNum)
+ setTimeout(()=>{
+ item.addRows()
+ }, 30)
})
if (typeof this.addAfter === 'function') this.addAfter(this.model)
this.edit({})
diff --git a/jero-web/src/mixins/JVxeTableModelMixin.js b/jero-web/src/mixins/JVxeTableModelMixin.js
new file mode 100644
index 00000000..1d29b6c9
--- /dev/null
+++ b/jero-web/src/mixins/JVxeTableModelMixin.js
@@ -0,0 +1,181 @@
+import { VALIDATE_FAILED, getRefPromise, validateFormAndTables,validateFormModelAndTables} from '@/components/jero/JVxeTable/utils/vxeUtils.js'
+import { httpAction, getAction } from '@/api/manage'
+
+export const JVxeTableModelMixin = {
+ data() {
+ return {
+ title: '操作',
+ visible: false,
+ confirmLoading: false,
+ scrolling: true,
+ model: {},
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 6 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ }
+ }
+ },
+ methods: {
+
+ /** 获取所有的JVxeTable实例 */
+ getAllTable() {
+ if (!(this.refKeys instanceof Array)) {
+ throw this.throwNotArray('refKeys')
+ }
+ let values = this.refKeys.map(key => getRefPromise(this, key))
+ return Promise.all(values)
+ },
+
+ /** 遍历所有的JVxeTable实例 */
+ eachAllTable(callback) {
+ // 开始遍历
+ this.getAllTable().then(tables => {
+ console.log("tables",tables)
+ tables.forEach((item, index) => {
+ if (typeof callback === 'function') {
+ callback(item, index)
+ }
+ })
+ })
+ },
+
+ /** 当点击新增按钮时调用此方法 */
+ add() {
+ if (typeof this.addBefore === 'function') this.addBefore()
+ // 默认新增空数据
+ let rowNum = this.addDefaultRowNum
+ if (typeof rowNum !== 'number') {
+ rowNum = 1
+ console.warn('由于你没有在 data 中定义 addDefaultRowNum 或 addDefaultRowNum 不是数字,所以默认添加一条空数据,如果不想默认添加空数据,请将定义 addDefaultRowNum 为 0')
+ }
+ this.eachAllTable((item) => {
+ //update-begin-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349
+ setTimeout(()=>{
+ item.addRows()
+ }, 30)
+ //update-end-author:taoyan date:20210315 for: 一对多jvex 默认几行不好使了 LOWCOD-1349
+ })
+ if (typeof this.addAfter === 'function') this.addAfter(this.model)
+ this.edit(this.model)
+ },
+ /** 当点击了编辑(修改)按钮时调用此方法 */
+ edit(record) {
+ if (typeof this.editBefore === 'function') this.editBefore(record)
+ this.visible = true
+ this.activeKey = this.refKeys[0]
+ this.$refs.form.resetFields()
+ this.model = Object.assign({}, record)
+ if (typeof this.editAfter === 'function') this.editAfter(this.model)
+ },
+ /** 关闭弹窗,并将所有JVxeTable实例回归到初始状态 */
+ close() {
+ this.visible = false
+ this.eachAllTable((item) => {
+ item._remove()
+ })
+ this.$emit('close')
+ },
+
+ /** 查询某个tab的数据 */
+ requestSubTableData(url, params, tab, success) {
+ tab.loading = true
+ getAction(url, params).then(res => {
+ let { result } = res
+ let dataSource = []
+ if (result) {
+ if (Array.isArray(result)) {
+ dataSource = result
+ } else if (Array.isArray(result.records)) {
+ dataSource = result.records
+ }
+ }
+ tab.dataSource = dataSource
+ typeof success === 'function' ? success(res) : ''
+ }).finally(() => {
+ tab.loading = false
+ })
+ },
+ /** 发起请求,自动判断是执行新增还是修改操作 */
+ request(formData) {
+ let url = this.url.add, method = 'post'
+ if (this.model.id) {
+ url = this.url.edit
+ method = 'put'
+ }
+ this.confirmLoading = true
+ console.log("formData===>",formData);
+ httpAction(url, formData, method).then((res) => {
+ if (res.success) {
+ this.$message.success(res.message)
+ this.$emit('ok')
+ this.close()
+ } else {
+ this.$message.warning(res.message)
+ }
+ }).finally(() => {
+ this.confirmLoading = false
+ })
+ },
+
+ /* --- handle 事件 --- */
+
+ /** ATab 选项卡切换事件 */
+ handleChangeTabs(key) {
+ // 自动重置scrollTop状态,防止出现白屏
+ getRefPromise(this, key).then(vxeTable => {
+ vxeTable.resetScrollTop()
+ })
+ },
+ /** 关闭按钮点击事件 */
+ handleCancel() {
+ this.close()
+ },
+ /** 确定按钮点击事件 */
+ handleOk() {
+ /** 触发表单验证 */
+ this.getAllTable().then(tables => {
+ /** 一次性验证主表和所有的次表 */
+ return validateFormModelAndTables(this.$refs.form,this.model, tables)
+ }).then(allValues => {
+ /** 一次性验证一对一的所有子表 */
+ return this.validateSubForm(allValues)
+ }).then(allValues => {
+ if (typeof this.classifyIntoFormData !== 'function') {
+ throw this.throwNotFunction('classifyIntoFormData')
+ }
+ let formData = this.classifyIntoFormData(allValues)
+ // 发起请求
+ return this.request(formData)
+ }).catch(e => {
+ if (e.error === VALIDATE_FAILED) {
+ // 如果有未通过表单验证的子表,就自动跳转到它所在的tab
+ this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index]
+ } else {
+ console.error(e)
+ }
+ })
+ },
+//校验所有子表表单
+ validateSubForm(allValues){
+ return new Promise((resolve) => {
+ resolve(allValues)
+ })
+ },
+ /* --- throw --- */
+
+ /** not a function */
+ throwNotFunction(name) {
+ return `${name} 未定义或不是一个函数`
+ },
+
+ /** not a array */
+ throwNotArray(name) {
+ return `${name} 未定义或不是一个数组`
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/jero-web/src/mixins/JeroListMixin.js b/jero-web/src/mixins/JeroListMixin.js
index 53775cc0..36a6f10c 100644
--- a/jero-web/src/mixins/JeroListMixin.js
+++ b/jero-web/src/mixins/JeroListMixin.js
@@ -65,7 +65,7 @@ export const JeroListMixin = {
let head = {'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)}
let tenantid = Vue.ls.get(TENANT_ID)
if(tenantid){
- head['tenant_id'] = tenantid
+ head['tenant-id'] = tenantid
}
return head;
}
@@ -175,7 +175,9 @@ export const JeroListMixin = {
onOk: function () {
that.loading = true;
deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => {
- if (res.success) {
+ if (res.success){
+ //重新计算分页问题
+ that.reCalculatePage(that.selectedRowKeys.length)
that.$message.success(res.message);
that.loadData();
that.onClearSelected();
@@ -197,6 +199,8 @@ export const JeroListMixin = {
var that = this;
deleteAction(that.url.delete, {id: id}).then((res) => {
if (res.success) {
+ //重新计算分页问题
+ that.reCalculatePage(1)
that.$message.success(res.message);
that.loadData();
} else {
@@ -204,6 +208,17 @@ export const JeroListMixin = {
}
});
},
+ reCalculatePage(count){
+ //总数量-count
+ let total=this.ipagination.total-count;
+ //获取删除后的分页数
+ let currentIndex=Math.ceil(total/this.ipagination.pageSize);
+ //删除后的分页数<所在当前页
+ if(currentIndex 0) {
this.isorter.column = sorter.field;
this.isorter.order = "ascend" == sorter.order ? "asc" : "desc"
diff --git a/jero-web/src/utils/JEditableTableUtil.js b/jero-web/src/utils/JEditableTableUtil.js
index d18d858c..8eea1ed7 100644
--- a/jero-web/src/utils/JEditableTableUtil.js
+++ b/jero-web/src/utils/JEditableTableUtil.js
@@ -78,6 +78,37 @@ export function validateFormAndTables(form, cases) {
}
+/**
+ * 一次性验证主表单和所有的次表单(新版本)
+ * @param form 主表单 form 对象
+ * @param cases 接收一个数组,每项都是一个JEditableTable实例
+ * @returns {Promise}
+ * @author sunjianlei
+ */
+export function validateFormModelAndTables(form,values, cases) {
+
+ if (!(form && typeof form.validate === 'function')) {
+ throw `form 参数需要的是一个form对象,而传入的却是${typeof form}`
+ }
+ let options = {}
+ return new Promise((resolve, reject) => {
+ // 验证主表表单
+ form.validate((valid,obj) => {
+ valid ?resolve(values):reject({ error: VALIDATE_NO_PASSED })
+ })
+ }).then(values => {
+ Object.assign(options, { formValue: values })
+ // 验证所有子表的表单
+ return validateTables(cases)
+ }).then(all => {
+ Object.assign(options, { tablesValue: all })
+ return Promise.resolve(options)
+ }).catch(error => {
+ return Promise.reject(error)
+ })
+
+}
+
/**
* 验证并获取一个或多个表格的所有值
* @param cases 接收一个数组,每项都是一个JEditableTable实例
diff --git a/jero-web/src/utils/authFilter.js b/jero-web/src/utils/authFilter.js
index 748a8d4d..25685b4b 100644
--- a/jero-web/src/utils/authFilter.js
+++ b/jero-web/src/utils/authFilter.js
@@ -9,10 +9,8 @@ export function disabledAuthFilter(code,formData) {
}
function nodeDisabledAuth(code,formData){
- console.log("页面权限禁用--NODE--开始");
let permissionList = [];
try {
- console.log("页面权限禁用--NODE--开始",formData);
if (formData) {
let bpmList = formData.permissionList;
permissionList = bpmList.filter(item=>item.type=='2')
@@ -53,7 +51,6 @@ function nodeDisabledAuth(code,formData){
}
function globalDisabledAuth(code){
- console.log("全局页面禁用权限--Global--开始");
let permissionList = [];
let allPermissionList = [];
@@ -106,7 +103,6 @@ function globalDisabledAuth(code){
}else{
for (let item2 of permissionList) {
if(code === item2.action){
- console.log("全局页面权限解除禁用--Global--生效");
gFlag = false;
}
}
diff --git a/jero-web/src/utils/hasPermission.js b/jero-web/src/utils/hasPermission.js
index 46747709..8e7700eb 100644
--- a/jero-web/src/utils/hasPermission.js
+++ b/jero-web/src/utils/hasPermission.js
@@ -4,7 +4,6 @@ const hasPermission = {
install (Vue, options) {
Vue.directive('has', {
inserted: (el, binding, vnode)=>{
- console.log("页面权限控制----");
//console.time()
//节点权限处理,如果命中则不进行全局权限处理
if(!filterNodePermission(el, binding, vnode)){
@@ -66,7 +65,6 @@ export function filterNodePermission(el, binding, vnode) {
* 全局权限控制
*/
export function filterGlobalPermission(el, binding, vnode) {
- console.log("全局页面权限--Global--");
let permissionList = [];
let allPermissionList = [];
diff --git a/jero-web/src/utils/request.js b/jero-web/src/utils/request.js
index 18a5ece7..649e73de 100644
--- a/jero-web/src/utils/request.js
+++ b/jero-web/src/utils/request.js
@@ -104,7 +104,7 @@ service.interceptors.request.use(config => {
if (!tenantid) {
tenantid = 0;
}
- config.headers[ 'tenant_id' ] = tenantid
+ config.headers[ 'tenant-id' ] = tenantid
//update-end-author:taoyan date:2020707 for:多租户
if(config.method=='get'){
if(config.url.indexOf("sys/dict/getDictItems")<0){
diff --git a/jero-web/src/utils/rules.js b/jero-web/src/utils/rules.js
new file mode 100644
index 00000000..8386e613
--- /dev/null
+++ b/jero-web/src/utils/rules.js
@@ -0,0 +1,110 @@
+const validateMobile = (rule, value, callback) => {
+ let reg = /^1(3|4|5|7|8)\d{9}$/
+ if (!reg.test(value)) {
+ callback('请输入正确手机号')
+ } else {
+ callback()
+ }
+}
+const validateEn = (rule, value, callback) => {
+ let reg = /^[_a-zA-Z0-9]+$/
+ let reg2 = /^.{4,18}$/
+ // 长度为6到18个字符
+ if (value !== '' && !reg.test(value)) {
+ callback('只允许字母、数字、下划线')
+ } else if (value !== '' && !reg2.test(value)) {
+ callback('长度6到18个字符')
+ } else {
+ callback()
+ }
+}
+export const rules = {
+ mobile: [{
+ required: true,
+ message: '请输入手机号',
+ trigger: 'blur'
+ }, { validator: validateMobile, trigger: 'blur' }],
+ userName: [{
+ required: true, message: '请输入用户名', trigger: 'blur'
+ }, { validator: validateEn }],
+ email: [
+ { required: false, type: 'email', message: '邮箱格式不正确', trigger: 'blur' }
+ ],
+ // 验证自然数
+ naturalNumber: /^(([0-9]*[1-9][0-9]*)|(0+))$/,
+ naturalNumberMsg: '请输入自然数',
+ // 英文
+ english: /^.[A-Za-z]+$/,
+ englishMsg: '请输入英文字符',
+ // 座机
+ telephone: /^\d{3}-\d{7,8}|\d{4}-\d{7,8}$/,
+ telephoneMsg: '请输入正确的座机号',
+ // 银行卡号码
+ bankCard: /^[1-9]\d{9,19}$/,
+ bankCardMsg: '请输入正确的银行卡号码',
+ // 证件号码
+ IDNumber: /^[a-z0-9A-Z]{0,50}$/,
+ IDNumberMsg: '请输入正确的证件号码',
+ // 身份证号码,包括15位和18位的
+ IDCard: /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/,
+ IDCardMsg: '请输入正确的身份证号码',
+ // QQ号码
+ qq: /^[1-9]\d{4,11}$/,
+ qqMsg: '请输入正确的QQ号码',
+ // 网址, 仅支持http和https开头的
+ url: /^(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?$/,
+ urlMsg: '请输入以http和https开头的网址',
+ // 0到20位的英文字符和数字
+ enNum0to20: /^[a-z0-9A-Z]{0,20}$/,
+ enNum0to20Msg: '请输入20位以内的英文字符和数字',
+ // 2到100位的中英文字符和空格
+ cnEnSpace2to100: /^[a-zA-Z\u4E00-\u9FA5\s*]{2,100}$/,
+ cnEnSpace2to100Msg: '请输入2到100位的中英文字符和空格',
+ // 数字和换行符
+ numLinefeed: /^[0-9\n*]+$/,
+ numLinefeedMsg: '请输入数字和换行符',
+ // 255位以内的字符
+ char0to255: /^.{0,255}$/,
+ char0to255Msg: '请输入255位以内的字符',
+ required: function(min, max) {
+ let rule = [{ required: true, message: '', trigger: 'blur' }]
+ if (min) {
+ let r = { min: min, message: '最小长度' + min + '位字符' }
+ rule.push(r)
+ }
+ if (max) {
+ let m = { max: max, message: '最大长度' + max + '位字符' }
+ rule.push(m)
+ }
+ return rule
+ },
+ select: function() {
+ let rule = [{ required: true, message: '', trigger: 'change' }]
+ return rule
+ },
+ checked: function(min, max) {
+ let rule = [{ required: true, type: 'array', message: '', trigger: 'change' }]
+ if (min) {
+ let r = { type: 'array', min: min, message: '最少选择' + min + '项' }
+ rule.push(r)
+ }
+ if (max) {
+ let m = { type: 'array', max: max, message: '最多选择' + max + '项' }
+ rule.push(m)
+ }
+ return rule
+ }
+}
+/**
+ * @description 排序值验证,排序值不可以大于255
+ */
+export const validateOrder = function(rule, value, callback) {
+ if (parseInt(value) > 255) {
+ return callback(new Error('排序值不可以大于255'))
+ } else {
+ callback()
+ }
+}
+
+
+
diff --git a/jero-web/src/utils/util.js b/jero-web/src/utils/util.js
index 809eff4a..89b966a3 100644
--- a/jero-web/src/utils/util.js
+++ b/jero-web/src/utils/util.js
@@ -146,7 +146,6 @@ function generateChildRouters (data) {
component: componentPath,
//component: resolve => require(['@/' + component+'.vue'], resolve),
hidden:item.hidden,
- //component:()=> import(`@/views/${item.component}.vue`),
meta: {
title:item.meta.title ,
icon: item.meta.icon,
diff --git a/jero-web/src/views/demo/JVXETableDemo.vue b/jero-web/src/views/demo/JVXETableDemo.vue
index 4bfe4a25..877704da 100644
--- a/jero-web/src/views/demo/JVXETableDemo.vue
+++ b/jero-web/src/views/demo/JVXETableDemo.vue
@@ -10,6 +10,10 @@
+
+
+
+
@@ -17,6 +21,7 @@
+
+
\ No newline at end of file
diff --git a/jero-web/src/views/demo/JeroOrderModalForJVexTable.vue b/jero-web/src/views/demo/JeroOrderModalForJVexTable.vue
new file mode 100644
index 00000000..ba93f1eb
--- /dev/null
+++ b/jero-web/src/views/demo/JeroOrderModalForJVexTable.vue
@@ -0,0 +1,312 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 国内订单
+ 国际订单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jero-web/src/views/demo/modules/JEditableTable/JeroOrderModalForJVexTable.vue b/jero-web/src/views/demo/modules/JEditableTable/JeroOrderModalForJVexTable.vue
new file mode 100644
index 00000000..7dd01039
--- /dev/null
+++ b/jero-web/src/views/demo/modules/JEditableTable/JeroOrderModalForJVexTable.vue
@@ -0,0 +1,312 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 国内订单
+ 国际订单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/jero-web/src/views/demo/modules/JeroDemoModal.vue b/jero-web/src/views/demo/modules/JeroDemoModal.vue
index 30d32432..97f26d75 100644
--- a/jero-web/src/views/demo/modules/JeroDemoModal.vue
+++ b/jero-web/src/views/demo/modules/JeroDemoModal.vue
@@ -9,78 +9,46 @@
cancelText="关闭">
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jero-web/src/views/demo/modules/JeroDemoTabsModal.vue b/jero-web/src/views/demo/modules/JeroDemoTabsModal.vue
index b00e54e8..837ded06 100644
--- a/jero-web/src/views/demo/modules/JeroDemoTabsModal.vue
+++ b/jero-web/src/views/demo/modules/JeroDemoTabsModal.vue
@@ -63,7 +63,7 @@
-
+
handlerRowChange(e.target.value, record.key, col)"/>
{{ text }}
diff --git a/jero-web/src/views/demo/modules/JeroOrderMainModal.vue b/jero-web/src/views/demo/modules/JeroOrderMainModal.vue
index a78ad221..150d5ca4 100644
--- a/jero-web/src/views/demo/modules/JeroOrderMainModal.vue
+++ b/jero-web/src/views/demo/modules/JeroOrderMainModal.vue
@@ -8,53 +8,38 @@
@cancel="handleCancel">
-
+
-
-
-
+
+
+
-
-
+
+
国内订单
国际订单
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
@@ -65,47 +50,49 @@
客户名
性别
- 身份证号码
- 手机号
- 操作
+ 身份证号码
+ 手机号
+ 操作
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
男
女
-
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+ 添加客户信息
+
@@ -116,34 +103,36 @@
航班时间
操作
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
+ 添加机票信息
+
-
+
@@ -151,8 +140,6 @@
diff --git a/jero-web/src/views/demo/modules/JeroOrderModalForJEditableTable.vue b/jero-web/src/views/demo/modules/JeroOrderModalForJEditableTable.vue
index 79b273ca..e7095083 100644
--- a/jero-web/src/views/demo/modules/JeroOrderModalForJEditableTable.vue
+++ b/jero-web/src/views/demo/modules/JeroOrderModalForJEditableTable.vue
@@ -9,58 +9,41 @@
@cancel="handleCancel">
-
+
-
-
-
+
+
+
-
-
+
+
国内订单
国际订单
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
@@ -100,11 +83,9 @@
+
+
\ No newline at end of file
diff --git a/jero-web/src/views/system/NewPermissionList.vue b/jero-web/src/views/system/NewPermissionList.vue
index 19a85c82..bab21341 100644
--- a/jero-web/src/views/system/NewPermissionList.vue
+++ b/jero-web/src/views/system/NewPermissionList.vue
@@ -214,9 +214,8 @@
},
handleAddSub(record) {
this.$refs.modalForm.title = "添加子菜单";
- this.$refs.modalForm.localMenuType = 1;
this.$refs.modalForm.disableSubmit = false;
- this.$refs.modalForm.edit({status:'1',permsType:'1',route:true,'parentId':record.id});
+ this.$refs.modalForm.edit({status:'1',permsType:'1',route:true,'parentId':record.id,menuType:1});
},
handleExpandedRowsChange(expandedRows) {
this.expandedRowKeys = expandedRows
diff --git a/jero-web/src/views/system/PermissionList.vue b/jero-web/src/views/system/PermissionList.vue
index 0f8df799..061d0ddf 100644
--- a/jero-web/src/views/system/PermissionList.vue
+++ b/jero-web/src/views/system/PermissionList.vue
@@ -181,9 +181,8 @@
},
handleAddSub(record) {
this.$refs.modalForm.title = "添加子菜单";
- this.$refs.modalForm.localMenuType = 1;
this.$refs.modalForm.disableSubmit = false;
- this.$refs.modalForm.edit({status:'1',permsType:'1',route:true,'parentId':record.id});
+ this.$refs.modalForm.edit({status:'1',permsType:'1',route:true,'parentId':record.id,menuType:1});
},
handleExpandedRowsChange(expandedRows) {
this.expandedRowKeys = expandedRows
diff --git a/jero-web/src/views/system/RoleUserList.vue b/jero-web/src/views/system/RoleUserList.vue
index 8b6b8f2b..945b9599 100644
--- a/jero-web/src/views/system/RoleUserList.vue
+++ b/jero-web/src/views/system/RoleUserList.vue
@@ -384,11 +384,8 @@
this.$message.error('请选择一个角色!')
} else {
this.$refs.modalForm2.roleDisabled = true
- this.$refs.modalForm2.selectedRole = [this.currentRoleId]
-
- this.$refs.modalForm2.add()
-
this.$refs.modalForm2.title = '新增'
+ this.$refs.modalForm2.edit({activitiSync:'1',userIdentity:1,selectedroles:this.currentRoleId})
}
},
modalFormOk2() {
diff --git a/jero-web/src/views/system/SysCategoryList.vue b/jero-web/src/views/system/SysCategoryList.vue
index 157b2d0e..3471dd4e 100644
--- a/jero-web/src/views/system/SysCategoryList.vue
+++ b/jero-web/src/views/system/SysCategoryList.vue
@@ -150,14 +150,16 @@
})
},
getDataByResult(result){
- return result.map(item=>{
- //判断是否标记了带有子节点
- if(item[this.hasChildrenField]=='1'){
- let loadChild = { id: item.id+'_loadChild', name: 'loading...', isLoading: true }
- item.children = [loadChild]
- }
- return item
- })
+ if(result && result.length>0){
+ return result.map(item=>{
+ //判断是否标记了带有子节点
+ if(item[this.hasChildrenField]=='1'){
+ let loadChild = { id: item.id+'_loadChild', name: 'loading...', isLoading: true }
+ item.children = [loadChild]
+ }
+ return item
+ })
+ }
},
handleExpand(expanded, record){
// 判断是否是展开状态
diff --git a/jero-web/src/views/system/UserList.vue b/jero-web/src/views/system/UserList.vue
index 69e3266f..c9867045 100644
--- a/jero-web/src/views/system/UserList.vue
+++ b/jero-web/src/views/system/UserList.vue
@@ -64,7 +64,7 @@
-
添加用户
+
添加用户
导出
导入
@@ -119,7 +119,7 @@
- 编辑
+ 编辑
diff --git a/jero-web/src/views/system/modules/DepartModal.vue b/jero-web/src/views/system/modules/DepartModal.vue
index b0b26623..eed530c9 100644
--- a/jero-web/src/views/system/modules/DepartModal.vue
+++ b/jero-web/src/views/system/modules/DepartModal.vue
@@ -11,16 +11,17 @@
cancelText="关闭">
-
-
+
-
-
-
+
+
+
-
-
+
-
-
-
- 公司
-
-
+
+
+
+ 公司
+
+
-
+
部门
@@ -50,40 +51,41 @@
岗位
-
-
-
+
+
-
-
-
+
+
-
-
-
+
+
-
-
-
+
+
-
-
-
+
+
-
-
+
+
-
+
@@ -107,7 +109,10 @@
visible: false,
condition:true,
disableSubmit:false,
- model: {},
+ model: {
+ departOrder:0,
+ orgCategory:'1'
+ },
menuhidden:false,
menuusing:true,
labelCol: {
@@ -120,11 +125,11 @@
},
confirmLoading: false,
- form: this.$form.createForm(this),
validatorRules:{
- departName:{rules: [{ required: true, message: '请输入机构/部门名称!' }]},
- orgCode:{rules: [{ required: true, message: '请输入机构编码!' }]},
- mobile:{rules: [{validator:this.validateMobile}]}
+ departName:[{ required: true, message: '请输入机构/部门名称!' }],
+ orgCode:[{ required: true, message: '请输入机构编码!' }],
+ mobile: [{validator:this.validateMobile}],
+ orgCategory:[{required: true, message: '请输入机构类型!'}]
},
url: {
add: "/sys/sysDepart/add",
@@ -159,8 +164,6 @@
this.edit(depart);
},
edit (record) {
- this.form.resetFields();
- this.model = Object.assign({}, {});
this.visible = true;
this.loadTreeData();
this.model.parentId = record!=null?record.toString():null;
@@ -169,25 +172,20 @@
}else{
this.model.orgCategory = '2';
}
- this.$nextTick(() => {
- this.form.setFieldsValue(pick(this.model,'orgCategory','departName','departNameEn','departNameAbbr','departOrder','description','orgType','orgCode','mobile','fax','address','memo','status','delFlag'))
- });
},
close () {
this.$emit('close');
this.disableSubmit = false;
this.visible = false;
+ this.$refs.form.resetFields();
},
handleOk () {
const that = this;
// 触发表单验证
- this.form.validateFields((err, values) => {
- if (!err) {
+ this.$refs.form.validate(valid => {
+ if (valid) {
that.confirmLoading = true;
- let formData = Object.assign(this.model, values);
- //时间格式化
- console.log(formData)
- httpAction(this.url.add,formData,"post").then((res)=>{
+ httpAction(this.url.add,this.model,"post").then((res)=>{
if(res.success){
that.$message.success(res.message);
that.loadTreeData();
@@ -199,7 +197,8 @@
that.confirmLoading = false;
that.close();
})
-
+ }else{
+ return false;
}
})
},
diff --git a/jero-web/src/views/system/modules/DepartWindow.vue b/jero-web/src/views/system/modules/DepartWindow.vue
index 1a8d7810..702c66ab 100644
--- a/jero-web/src/views/system/modules/DepartWindow.vue
+++ b/jero-web/src/views/system/modules/DepartWindow.vue
@@ -38,11 +38,9 @@
import pick from 'lodash.pick'
import { getAction } from '@/api/manage'
import { queryIdTree } from '@/api/api'
- import userModal from './UserModal'
export default {
name: "DepartWindow",
components: {
- userModal,
},
data () {
return {
diff --git a/jero-web/src/views/system/modules/DeptUserInfo.vue b/jero-web/src/views/system/modules/DeptUserInfo.vue
index 69d9b8df..5b87e522 100644
--- a/jero-web/src/views/system/modules/DeptUserInfo.vue
+++ b/jero-web/src/views/system/modules/DeptUserInfo.vue
@@ -10,11 +10,6 @@
-
-
-
-
-
查询
@@ -76,7 +71,7 @@
- 分配部门角色
+ 部门角色
@@ -294,12 +289,9 @@
} else {
this.$refs.modalForm.departDisabled = true;
//初始化负责部门
- this.$refs.modalForm.userDepartModel.departIdList = [this.currentDeptId]; //传入一个部门id
- this.$refs.modalForm.add();
- //update-begin---author:liusq Date:20210223 for:https://gitee.com/jeecg/jeecg-boot/issues/I2SDU1------------
- this.$refs.modalForm.resultDepartOptions=[{key:this.currentDept.key,title:this.currentDept.title}]
- //update-end---author:liusq Date:20210223 for:https://gitee.com/jeecg/jeecg-boot/issues/I2SDU1------------
+ this.$refs.modalForm.nextDepartOptions=[{value:this.currentDept.key,label:this.currentDept.title}]
this.$refs.modalForm.title = "新增";
+ this.$refs.modalForm.edit({activitiSync:'1',userIdentity:1,selecteddeparts:this.currentDeptId})
}
},
selectOK(data) {
diff --git a/jero-web/src/views/system/modules/DictItemModal.vue b/jero-web/src/views/system/modules/DictItemModal.vue
index 420753ad..26fabe72 100644
--- a/jero-web/src/views/system/modules/DictItemModal.vue
+++ b/jero-web/src/views/system/modules/DictItemModal.vue
@@ -9,46 +9,48 @@
cancelText="关闭"
>
-
+
-
-
-
+
+
-
-
-
+
+
-
-
-
+
+
-
-
- 值越小越靠前,支持小数
-
+
+ 值越小越靠前
+
-
-
+
-
+
@@ -77,10 +79,9 @@
sm: {span: 16},
},
confirmLoading: false,
- form: this.$form.createForm(this),
validatorRules: {
- itemText: {rules: [{required: true, message: '请输入名称!'}]},
- itemValue: {rules: [{required: true, message: '请输入数据值!'},{validator: this.validateItemValue}]},
+ itemText: [{required: true, message: '请输入名称!'}],
+ itemValue: [{required: true, message: '请输入数据值!'},{validator: this.validateItemValue}],
},
}
},
@@ -89,22 +90,19 @@
methods: {
add(dictId) {
this.dictId = dictId;
- this.edit({});
+ //初始化默认值
+ this.edit({sortOrder:1,status:1});
},
edit(record) {
if (record.id) {
this.dictId = record.dictId;
- this.status = record.status;
- this.visibleCheck = (record.status == 1) ? true : false;
}
- this.form.resetFields();
+ this.status = record.status;
+ this.visibleCheck = (record.status == 1) ? true : false;
this.model = Object.assign({}, record);
this.model.dictId = this.dictId;
this.model.status = this.status;
this.visible = true;
- this.$nextTick(() => {
- this.form.setFieldsValue(pick(this.model, 'itemText', 'itemValue', 'description', 'sortOrder'))
- });
},
onChose(checked) {
if (checked) {
@@ -119,19 +117,18 @@
handleOk() {
const that = this;
// 触发表单验证
- this.form.validateFields((err, values) => {
- if (!err) {
+ this.$refs.form.validate(valid => {
+ if (valid) {
that.confirmLoading = true;
- values.itemText = (values.itemText || '').trim()
- values.itemValue = (values.itemValue || '').trim()
- values.description = (values.description || '').trim()
- let formData = Object.assign(this.model, values);
- formData.status = this.status;
+ this.model.itemText = (this.model.itemText || '').trim()
+ this.model.itemValue = (this.model.itemValue || '').trim()
+ this.model.description = (this.model.description || '').trim()
+ this.model.status = this.status;
let obj;
if (!this.model.id) {
- obj = addDictItem(formData);
+ obj = addDictItem(this.model);
} else {
- obj = editDictItem(formData);
+ obj = editDictItem(this.model);
}
obj.then((res) => {
if (res.success) {
@@ -144,6 +141,8 @@
that.confirmLoading = false;
that.close();
})
+ }else{
+ return false;
}
})
},
@@ -154,6 +153,7 @@
close() {
this.$emit('close');
this.visible = false;
+ this.$refs.form.resetFields();
},
validateItemValue(rule, value, callback){
let param = {
diff --git a/jero-web/src/views/system/modules/DictModal.vue b/jero-web/src/views/system/modules/DictModal.vue
index 2de7e667..f29b5c11 100644
--- a/jero-web/src/views/system/modules/DictModal.vue
+++ b/jero-web/src/views/system/modules/DictModal.vue
@@ -9,30 +9,34 @@
cancelText="关闭"
>
-
+
-
-
-
+
+
-
-
-
+
+
-
-
-
+
+
-
+
@@ -58,13 +62,11 @@
sm: { span: 16 }
},
confirmLoading: false,
- form: this.$form.createForm(this),
validatorRules: {
- dictName: { rules: [{ required: true, message: '请输入字典名称!' }] },
- dictCode: {
- rules: [{ required: true, message: '请输入字典编码!' },
- { validator: this.validateDictCode }]
- }
+ dictName: [{ required: true, message: '请输入字典名称!' }],
+ dictCode: [
+ { required: true, message: '请输入字典编码!' },
+ { validator: this.validateDictCode }]
}
}
},
@@ -99,30 +101,26 @@
} else {
this.visiblekey = false
}
- this.form.resetFields()
this.model = Object.assign({}, record)
this.visible = true
- this.$nextTick(() => {
- this.form.setFieldsValue(pick(this.model, 'dictName', 'dictCode', 'description'))
- })
},
// 确定
handleOk() {
const that = this
// 触发表单验证
- this.form.validateFields((err, values) => {
- if (!err) {
+ this.$refs.form.validate(valid => {
+ if (valid) {
that.confirmLoading = true
- values.dictName = (values.dictName || '').trim()
- values.dictCode = (values.dictCode || '').trim()
- values.description = (values.description || '').trim()
+ this.model.dictName = (this.model.dictName || '').trim()
+ this.model.dictCode = (this.model.dictCode || '').trim()
+ this.model.description = (this.model.description || '').trim()
let formData = Object.assign(this.model, values)
let obj
console.log(formData)
if (!this.model.id) {
- obj = addDict(formData)
+ obj = addDict(this.model)
} else {
- obj = editDict(formData)
+ obj = editDict(this.model)
}
obj.then((res) => {
if (res.success) {
@@ -135,6 +133,8 @@
that.confirmLoading = false
that.close()
})
+ }else{
+ return false;
}
})
},
@@ -145,6 +145,7 @@
close() {
this.$emit('close')
this.visible = false
+ this.$refs.form.resetFields();
}
}
}
diff --git a/jero-web/src/views/system/modules/PermissionDataRuleModal.vue b/jero-web/src/views/system/modules/PermissionDataRuleModal.vue
index 05a8c2c3..ed4278bb 100644
--- a/jero-web/src/views/system/modules/PermissionDataRuleModal.vue
+++ b/jero-web/src/views/system/modules/PermissionDataRuleModal.vue
@@ -9,51 +9,55 @@
cancelText="关闭">
-
+
-
-
-
-
+
+
-
-
-
+
+
-
-
-
+
+
-
-
+
+
-
-
+
有效
无效
-
+
-
+
+
diff --git a/jero-web/src/views/system/modules/SysAnnouncementModal.vue b/jero-web/src/views/system/modules/SysAnnouncementModal.vue
index 4b0418d8..51b7dc39 100644
--- a/jero-web/src/views/system/modules/SysAnnouncementModal.vue
+++ b/jero-web/src/views/system/modules/SysAnnouncementModal.vue
@@ -11,59 +11,63 @@
cancelText="关闭">
-
+
-
-
-
+
+
-
通知公告
系统消息
-
+
-
-
-
+
+
-
-
-
+
+
-
@@ -71,15 +75,16 @@
中
高
-
+
-
指定用户
全体用户
-
+
-
-
-
+
+
-
-
+
-
-
-
+
+
-
+
@@ -169,14 +175,13 @@
sm: { span: 21 },
},
confirmLoading: false,
- form: this.$form.createForm(this),
validatorRules:{
- title:{rules: [{ required: true, message: '请输入标题!' }]},
- msgCategory:{rules: [{ required: true, message: '请选择消息类型!' }]},
- msgType:{rules: [{ required: true, message: '请选择通告对象类型!' }]},
- endTime:{rules:[{ required: true, message: '请选择结束时间!'} ,{validator: this.endTimeValidate}]},
- startTime:{rules:[{required: true, message: '请选择开始时间!'},{validator: this.startTimeValidate}]},
- msgAbstract:{rules: [{ required: true, message: '请输入摘要!' }]},
+ titile: [{ required: true, message: '请输入标题!' }],
+ msgCategory: [{ required: true, message: '请选择消息类型!' }],
+ msgType:[{ required: true, message: '请选择通告对象类型!' }],
+ endTime:[{ required: true, message: '请选择结束时间!'} ,{validator: this.endTimeValidate}],
+ startTime:[{required: true, message: '请选择开始时间!'},{validator: this.startTimeValidate}],
+ msgAbstract: [{ required: true, message: '请输入摘要!' }],
},
url: {
queryByIds: "/sys/user/queryByIds",
@@ -198,7 +203,6 @@
this.edit({});
},
edit (record) {
- this.form.resetFields();
this.model = {}
this.disable = false;
this.visible = true;
@@ -226,25 +230,23 @@
}
});
}
- this.$nextTick(() => {
- this.form.setFieldsValue(pick(this.model,'endTime','startTime','titile','msgContent','priority','msgCategory','msgType','sendStatus','msgAbstract'))
- });
},
close () {
this.$emit('close');
this.selectedUser = [];
this.visible = false;
+ this.$refs.form.resetFields();
},
handleOk () {
const that = this;
//当设置指定用户类型,但用户为空时,后台报错
if(this.userType &&!(this.userIds!=null && this.userIds.length >0)){
- this.$message.warning('指定用户不能为空!')
- return;
- }
+ this.$message.warning('指定用户不能为空!')
+ return;
+ }
// 触发表单验证
- this.form.validateFields((err, values) => {
- if (!err) {
+ this.$refs.form.validate(valid => {
+ if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
@@ -255,12 +257,10 @@
httpurl+=this.url.edit;
method = 'put';
}
- let formData = Object.assign(this.model, values);
if(this.userType){
- formData.userIds = this.userIds;
+ this.model.userIds = this.userIds;
}
- console.log(formData)
- httpAction(httpurl,formData,method).then((res)=>{
+ httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
@@ -272,15 +272,15 @@
that.confirmLoading = false;
that.close();
})
-
-
-
+ }else{
+ return false;
}
})
},
handleCancel () {
this.visible = false;
this.$emit('close');
+ this.$refs.form.resetFields();
this.resetUser();
},
resetUser (){
@@ -317,7 +317,7 @@
}
},
startTimeValidate(rule,value,callback){
- let endTime = this.form.getFieldValue("endTime")
+ let endTime = this.model.endTime
if(!value || !endTime){
callback()
}else if(moment(value).isBefore(endTime)){
@@ -327,7 +327,7 @@
}
},
endTimeValidate(rule,value,callback){
- let startTime = this.form.getFieldValue("startTime")
+ let startTime = this.model.startTime;
if(!value || !startTime){
callback()
}else if(moment(startTime).isBefore(value)){
diff --git a/jero-web/src/views/system/modules/SysCategoryModal.vue b/jero-web/src/views/system/modules/SysCategoryModal.vue
index b007513e..547c98fe 100644
--- a/jero-web/src/views/system/modules/SysCategoryModal.vue
+++ b/jero-web/src/views/system/modules/SysCategoryModal.vue
@@ -9,24 +9,25 @@
:destroyOnClose="true"
cancelText="关闭">
-
+
-
+
+ pidValue="0"
+ :disabled="disabled">
-
+
-
-
-
+
+
+
-
+
@@ -34,7 +35,6 @@
\ No newline at end of file
diff --git a/jero-web/src/views/system/modules/SysDepartRoleModal.vue b/jero-web/src/views/system/modules/SysDepartRoleModal.vue
index ac982f83..2a5ebb18 100644
--- a/jero-web/src/views/system/modules/SysDepartRoleModal.vue
+++ b/jero-web/src/views/system/modules/SysDepartRoleModal.vue
@@ -7,37 +7,39 @@
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
-
+
-
-
-
+
+
-
-
-
+
+
-
-
-
+
+
-
-
-
-
+
+
+
+
diff --git a/jero-web/src/views/system/modules/TenantForm.vue b/jero-web/src/views/system/modules/TenantForm.vue
index 7cf00900..c4af1889 100644
--- a/jero-web/src/views/system/modules/TenantForm.vue
+++ b/jero-web/src/views/system/modules/TenantForm.vue
@@ -1,56 +1,54 @@
-
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
正常
冻结
-
+
提 交
-
+