diff --git a/src/api/api.js b/src/api/api.js index ed19975..052a94a 100644 --- a/src/api/api.js +++ b/src/api/api.js @@ -46,7 +46,7 @@ const queryDepartTreeList = (params)=>getAction('/sys/sysDepart/queryTreeList',p const queryIdTree = (params)=>getAction('/sys/sysDepart/queryIdTree',params) const queryParentName = (params)=>getAction('/sys/sysDepart/queryParentName',params) const searchByKeywords = (params)=>getAction('/sys/sysDepart/searchBy',params) -const deleteByDepartId = (params)=>deleteAction('/sys/sysDepart/delete',params) +const deleteByDepartId = (params)=>getAction('/sys/sysDepart/delete',params) //二级部门管理 const queryDepartPermission = (params)=>getAction('/sys/permission/queryDepartPermission',params) diff --git a/src/components/company/BusinessSelect.vue b/src/components/company/BusinessSelect.vue index fde0717..85a6c18 100644 --- a/src/components/company/BusinessSelect.vue +++ b/src/components/company/BusinessSelect.vue @@ -108,6 +108,7 @@ export default { }, close() { this.visible = false + this.selectedCompany = {} }, onSelectChange(selectedRowKeys, selectionRows) { this.selectedCompany = selectionRows[0] diff --git a/src/components/company/CompanySelect.vue b/src/components/company/CompanySelect.vue index ebcbcba..56557d1 100644 --- a/src/components/company/CompanySelect.vue +++ b/src/components/company/CompanySelect.vue @@ -91,7 +91,6 @@ export default { */ addCompanyOk(value) { let { id, companyName } = value - console.log({ id, companyName }) this.$emit('change', { id, companyName }) } }, diff --git a/src/components/tools/UserPassword.vue b/src/components/tools/UserPassword.vue index ac7863b..f090563 100644 --- a/src/components/tools/UserPassword.vue +++ b/src/components/tools/UserPassword.vue @@ -72,8 +72,9 @@ export default { rules: [ { required: true, message: '请输入新密码!' }, { - pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, - message: '密码由8位数字、大小写字母和特殊符号组成!' + //原正则,3种组合时不会提示 /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/ + pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/, + message: '密码由8位及以上数字、大小写字母和特殊符号组成!' }, { validator: this.validateToNextPassword } ] @@ -82,8 +83,8 @@ export default { rules: [ { required: true, message: '请确认新密码!' }, { - pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, - message: '密码由8位数字、大小写字母和特殊符号组成!' + pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,30}$/, + message: '密码由8位及以上数字、大小写字母和特殊符号组成!' }, { validator: this.validateToNextPassword } ] diff --git a/src/mixins/JeroListMixin.js b/src/mixins/JeroListMixin.js index 6cad00b..e268a5b 100644 --- a/src/mixins/JeroListMixin.js +++ b/src/mixins/JeroListMixin.js @@ -322,7 +322,7 @@ export const JeroListMixin = { } this.loadData() } else { - const messageArr = info.file.response.message.split('
') + const messageArr = info.file.response.message.split('
') let htmlDom = [] messageArr.map(tt => { if (tt) { diff --git a/src/utils/validate.js b/src/utils/validate.js index 08d8370..03ea648 100644 --- a/src/utils/validate.js +++ b/src/utils/validate.js @@ -9,10 +9,12 @@ export function isEmail(s) { /** * 电话号码 座机 + * 原正则:/^([0-9]{3,4}-)[0-9]{7,8}$/ + * 现正则:15位数字、横杠 * @param {*} s */ export function isPhone(s) { - return /^([0-9]{3,4}-)[0-9]{7,8}$/.test(s) + return /^([0-9-]{0,15})$/.test(s) } /** diff --git a/src/utils/validateOnly.js b/src/utils/validateOnly.js index 6145706..f89e8d5 100644 --- a/src/utils/validateOnly.js +++ b/src/utils/validateOnly.js @@ -3,8 +3,8 @@ import {phoneReg, isEmail, chineseReg} from '@/utils/validate' // 手机校验的错误信息提示 const phoneErrMsg = { - err1: '请输入手机号', - err2: '请输入正确格式的手机号' + err1: '请输入手机号码', + err2: '请输入正确格式的手机号码' } // 邮箱校验错误提示信息 const emailErrMsg = { @@ -13,7 +13,7 @@ const emailErrMsg = { } // 用户名校验信息提示 const usernameErrMsg = { - err1: '请输入用户名' + err1: '请输入用户账号' } // 角色编码校验信息提示 const roleCodeErrMsg = { diff --git a/src/views/businessManagement/modules/BusinessManagementModule.vue b/src/views/businessManagement/modules/BusinessManagementModule.vue index 12182a8..333862e 100644 --- a/src/views/businessManagement/modules/BusinessManagementModule.vue +++ b/src/views/businessManagement/modules/BusinessManagementModule.vue @@ -41,8 +41,8 @@ + :maxLength='16' + @change="e => e.target.value = (e.target.value.replace(/[^0-9-]/g, '')).trim()"> diff --git a/src/views/businessManagement/modules/ContactManagementModule.vue b/src/views/businessManagement/modules/ContactManagementModule.vue index e88cd1f..eb37761 100644 --- a/src/views/businessManagement/modules/ContactManagementModule.vue +++ b/src/views/businessManagement/modules/ContactManagementModule.vue @@ -340,31 +340,34 @@ export default { * @param callback */ checkPhone(rules, value, callback) { - if (phoneReg(value)) { - // 是否编辑 - if (this.model.id) { - // 编辑前后手机号是否一致,一致则不进行验重 - if (value === this.model.phone) { - callback() - return + if (value) { + if (phoneReg(value)) { + // 是否编辑 + if (this.model.id) { + // 编辑前后手机号是否一致,一致则不进行验重 + if (value === this.model.phone) { + callback() + return + } } - } - const param = { - confusionCode: 'pay_contacts_management_phone', - fieldVal: value, - encrypt: 1 - } - // 唯一性校验 - duplicateCheck(param).then(res => { - if (res.success) { - callback() - } else { - callback('手机号已存在') + const param = { + confusionCode: 'pay_contacts_management_phone', + fieldVal: value, + encrypt: 1 } - }) - return + // 唯一性校验 + duplicateCheck(param).then(res => { + if (res.success) { + callback() + } else { + callback('手机号已存在') + } + }) + return + } + callback('请输入正确的手机号') } - callback('请输入正确手机号') + callback('请输入手机号') }, /** * 邮箱校验 @@ -373,11 +376,14 @@ export default { * @param callback */ checkMail(rules, value, callback) { - if (isEmail(value)) { - callback() - } else { - callback('请输入正确邮箱') + if (value) { + if (isEmail(value)) { + callback() + } else { + callback('请输入正确的邮箱') + } } + callback('请输入邮箱') }, /** * 邮政编码校验 @@ -386,11 +392,14 @@ export default { * @param callback */ checkPostcode(rules, value, callback) { - if (postcode(value)) { - callback() - } else { - callback('请输入正确格式的邮编') + if (value) { + if (postcode(value)) { + callback() + } else { + callback('请输入正确格式的邮政编码') + } } + callback('请输入邮政编码') } } } diff --git a/src/views/projectManagement/ConferenceMaintenance.vue b/src/views/projectManagement/ConferenceMaintenance.vue index 161d4b0..d066776 100644 --- a/src/views/projectManagement/ConferenceMaintenance.vue +++ b/src/views/projectManagement/ConferenceMaintenance.vue @@ -244,7 +244,7 @@ export default { ], url: { list: '/meeting/workGroupMeeting/page', - delete: '//meeting/workGroupMeeting/delete', + delete: '/meeting/workGroupMeeting/delete', deleteBatch: '/meeting/workGroupMeeting/deleteBatch', exportXlsUrl: '/meeting/workGroupMeeting/exportXls', }, diff --git a/src/views/projectManagement/WorkingGroupProjectManagement.vue b/src/views/projectManagement/WorkingGroupProjectManagement.vue index 0e82250..453cb39 100644 --- a/src/views/projectManagement/WorkingGroupProjectManagement.vue +++ b/src/views/projectManagement/WorkingGroupProjectManagement.vue @@ -173,6 +173,12 @@ export default { scopedSlots: { customRender: 'action' } } ], + queryParam: { + year: new Date().getFullYear().toString() + }, + lastQueryParam: { + year: new Date().getFullYear().toString() + }, operateData: [] // 进行操作权限校验时使用的数据 } }, @@ -292,7 +298,16 @@ export default { canOperate: record.canOperate } }) - } + }, + searchReset() { + this.lastQueryParam = { + year: new Date().getFullYear().toString() + } + this.queryParam = { + year: new Date().getFullYear().toString() + } + this.loadData(1) + }, } } diff --git a/src/views/projectManagement/modules/WorkGroupDistributeModule.vue b/src/views/projectManagement/modules/WorkGroupDistributeModule.vue index 616d23a..d22e04d 100644 --- a/src/views/projectManagement/modules/WorkGroupDistributeModule.vue +++ b/src/views/projectManagement/modules/WorkGroupDistributeModule.vue @@ -9,7 +9,7 @@ @cancel="handleCancel" cancelText="关闭"> - + @@ -66,7 +66,7 @@ export default { default: false } }, - watch:{ + watch: { visible(val) { if (val) { this.initData() @@ -87,7 +87,10 @@ export default { xs: { span: 24 }, sm: { span: 17 } }, - memberList: [], // 成员树 + memberList: [{ + name: '全选', + children: [] + }], // 成员树 checkedKeys: [], // 已选中的成员数组 replaceFields: { children: 'children', @@ -97,7 +100,7 @@ export default { }, validatorRules: { memberName: { - rules: [{ required: true, message: '请选择成员单位'}], + rules: [{ required: true, message: '请选择成员单位' }], validateTrigger: 'change' } }, @@ -120,7 +123,7 @@ export default { } distributeMemberList(param).then(res => { if (res.success) { - this.memberList = res.result + this.memberList[0].children = res.result } else { this.$message.warn(res.message) } @@ -141,14 +144,17 @@ export default { close() { this.$emit('update:visible', false) this.$emit('close') - this.memberList = [] + this.memberList = [{ + name: '全选', + children: [] + }] }, handleOk() { if (this.confirmLoading) { return } this.confirmLoading = true - if (this.memberList.length === 0) { + if (this.memberList[0].children.length === 0) { this.$message.warn('当前工作组暂无成员,无法分发文件') this.confirmLoading = false return @@ -158,16 +164,15 @@ export default { this.confirmLoading = false return } - let str = this.checkedKeys.join(',').toString() - console.log(str) - this.form.setFieldsValue({memberName: str}) + let str = this.checkedKeys.slice(1).join(',').toString() + this.form.setFieldsValue({ memberName: str }) this.form.validateFields((err) => { if (!err) { this.confirmLoading = true if (this.isBatch) { // 批量分发 const formData = { - contactsIds: this.checkedKeys.join(','), + contactsIds: str, dataIds: this.recordId, projectId: this.projectId, projectType: this.projectType diff --git a/src/views/projectManagement/modules/WorkingGroupMemberUnitModule.vue b/src/views/projectManagement/modules/WorkingGroupMemberUnitModule.vue index 99bbc7d..57da0fb 100644 --- a/src/views/projectManagement/modules/WorkingGroupMemberUnitModule.vue +++ b/src/views/projectManagement/modules/WorkingGroupMemberUnitModule.vue @@ -98,8 +98,15 @@ - + + + + {{ item.label }} + + @@ -271,19 +278,19 @@ export default { model: {}, labelCol: { xs: { span: 24 }, - sm: { span: 6 } + sm: { span: 8 } }, wrapperCol: { xs: { span: 24 }, - sm: { span: 18 } + sm: { span: 16 } }, remarksLabelCol: { xs: { span: 24 }, - sm: { span: 3 } + sm: { span: 4 } }, remarksWrapperCol: { xs: { span: 24 }, - sm: { span: 21 } + sm: { span: 20 } }, validatorRules: { workingGroupId: { @@ -641,6 +648,27 @@ export default { } - \ No newline at end of file diff --git a/src/views/system/DepartList.vue b/src/views/system/DepartList.vue index c1fce68..82f0126 100644 --- a/src/views/system/DepartList.vue +++ b/src/views/system/DepartList.vue @@ -8,7 +8,8 @@ 新增 添加下级 - 导出 + 导出 + 导入 @@ -23,7 +24,7 @@ 取消选择 - + @@ -73,7 +74,7 @@ - + @@ -103,28 +104,28 @@ @change="event => event.target.value = event.target.value.trim()" :maxLength="50" v-decorator="['orgCode', validatorRules.orgCode ]"/> - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +
- 重置 + 重置 保存 @@ -189,6 +190,7 @@ import { JeroListMixin } from '@/mixins/JeroListMixin' import { checkDepartName } from '@/utils/validateOnly' import PageHeaderTitle from '../../components/layouts/PageHeaderTitle' import IconImg from '@/assets/imgs/icon/icon_system.png' +import { downloadFile } from '../../api/manage' // 表头 const columns = [ { @@ -414,6 +416,21 @@ export default { } }, + /** + * 导出 + * @param fileName + */ + handleExportXls(fileName) { + if (!fileName || typeof fileName != 'string') { + fileName = '导出文件' + } + let param = this.getQueryParams() + if (this.checkedKeys && this.checkedKeys.length > 0) { + param['selections'] = this.checkedKeys.join(',') + } + console.log('导出参数', param) + downloadFile(this.url.exportXlsUrl, fileName + '.xls', param) + }, nodeModalOk() { this.loadTree() }, @@ -655,6 +672,11 @@ export default { diff --git a/src/views/system/UserList.vue b/src/views/system/UserList.vue index 39aea45..a03236b 100644 --- a/src/views/system/UserList.vue +++ b/src/views/system/UserList.vue @@ -7,19 +7,19 @@ - + - + - + - + - + @@ -97,6 +97,7 @@ import { queryIdTree } from '@/api/api' import pick from 'lodash.pick' import ATextarea from 'ant-design-vue/es/input/TextArea' import {checkDepartName} from '@/utils/validateOnly' +import { isPhone } from '../../../utils/validate' export default { name: 'SysDepartModal', @@ -225,10 +226,10 @@ export default { }) }, validateMobile(rule, value, callback) { - if (!value || new RegExp(/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/).test(value)) { + if (!value || isPhone(value)) { callback() } else { - callback('您的手机号码格式不正确!') + callback('您的电话格式不正确!') } } diff --git a/src/views/system/modules/DictItemModal.vue b/src/views/system/modules/DictItemModal.vue index 5e73c07..c74b998 100644 --- a/src/views/system/modules/DictItemModal.vue +++ b/src/views/system/modules/DictItemModal.vue @@ -37,7 +37,7 @@ :wrapperCol="wrapperCol" label="排序值"> - 值越小越靠前,支持小数 + 值越小越靠前 diff --git a/src/views/system/modules/DictModal.vue b/src/views/system/modules/DictModal.vue index aa46c14..0108676 100644 --- a/src/views/system/modules/DictModal.vue +++ b/src/views/system/modules/DictModal.vue @@ -62,7 +62,7 @@ confirmLoading: false, form: this.$form.createForm(this), validatorRules: { - dictName: { rules: [{ required: true, message: '请输入字典名称!' }], validateTrigger: 'blur' }, + dictName: { rules: [{ required: true, message: '请输入字典名称' }], validateTrigger: 'blur' }, dictCode: { rules: [{ required: true,validator: this.validateDictCode }, ], diff --git a/src/views/system/modules/RoleModal.vue b/src/views/system/modules/RoleModal.vue index 018bf05..7d44946 100644 --- a/src/views/system/modules/RoleModal.vue +++ b/src/views/system/modules/RoleModal.vue @@ -91,7 +91,7 @@ export default { validatorRules: { roleName: { rules: [ - {required: true, message: '请输入角色名称!'}, + {required: true, message: '请输入角色名称'}, {min: 2, max: 30, message: '长度在 2 到 30 个字符', trigger: 'blur'} ], validateTrigger: 'blur' diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue index 2a702c0..b0dd15a 100644 --- a/src/views/system/modules/UserModal.vue +++ b/src/views/system/modules/UserModal.vue @@ -24,7 +24,7 @@ + :readOnly="!!model.id" :disabled="disableSubmit || disabledEdit" />