diff --git a/.beagle.yml b/.beagle.yml index 7bff5d353a53352795d3e256695916d78f730c2e..3e79f3307b53cdab90bf0f684e583d2de0c04582 100644 --- a/.beagle.yml +++ b/.beagle.yml @@ -41,19 +41,19 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行 - export NODE_ENV=production - yarn build - # - name: s3-cache-build - # image: registry.cn-qingdao.aliyuncs.com/wod/devops-s3-cache:1.0 - # network_mode: host - # settings: - # rebuild: true - # hash: package.json - # mount: - # - node_modules - # endpoint: http://cache.wodcloud.com - # access_key: - # from_secret: ACCESS_KEY_MINIO - # secret_key: - # from_secret: SECRET_KEY_MINIO + - name: s3-cache-build + image: registry.cn-qingdao.aliyuncs.com/wod/devops-s3-cache:1.0 + network_mode: host + settings: + rebuild: true + hash: package.json + mount: + - node_modules + endpoint: http://cache.wodcloud.com + access_key: + from_secret: ACCESS_KEY_MINIO + secret_key: + from_secret: SECRET_KEY_MINIO - name: docker image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0 @@ -65,7 +65,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行 base: registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5 # 基础镜像,根据项目需求进行使用,如果第三方登录改成ui-base dockerfile: .beagle/dockerfile repo: wod/apaas-system-ui # 生成镜像的 分组/名称 - version: "5.0.1" # 版本号 + version: "5.0.3" # 版本号 channel: alpha # 后缀 example: alpha test fix-alpha fix等 args: "TARGETOS=linux,TARGETARCH=amd64" # 不同架构的构建参数 registry: registry.cn-qingdao.aliyuncs.com # 私有仓库地址 @@ -80,7 +80,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行 namespace: apaas-v5 deployment: apaas-manage-ui container: apaas-manage-ui - image: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1-alpha + image: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.3-alpha environment: KUBERNETES_SERVER: from_secret: KUBERNETES_SERVER @@ -96,7 +96,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行 base: registry.cn-qingdao.aliyuncs.com/wod/nginx:1.19.5-arm64 dockerfile: .beagle/dockerfile repo: wod/apaas-system-ui - version: "5.0.1" + version: "5.0.3" channel: alpha-arm64 args: "TARGETOS=linux,TARGETARCH=arm64" registry: registry.cn-qingdao.aliyuncs.com @@ -134,8 +134,8 @@ steps: REGISTRY_PASSWORD: from_secret: REGISTRY_PASSWORD_ALIYUN settings: - source: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1-alpha - target: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1 + source: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.3-alpha + target: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.3 registry: registry.cn-qingdao.aliyuncs.com - name: harbor-arm64 @@ -152,8 +152,8 @@ steps: REGISTRY_PASSWORD: from_secret: REGISTRY_PASSWORD_ALIYUN settings: - source: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1-alpha-arm64 - target: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.1-arm64 + source: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.3-alpha-arm64 + target: registry.cn-qingdao.aliyuncs.com/wod/apaas-system-ui:5.0.3-arm64 registry: registry.cn-qingdao.aliyuncs.com ##--------------对于需要保密的信息隐藏,减少账户信息的泄密⬇-----------------## --- diff --git a/src/bg-ui/bg-nav-list.vue b/src/bg-ui/bg-nav-list.vue index 5cc132c9697f6f8ab57cf00393380f870a5612b0..97ff048a93dd8a8401eb7bfd1ea269680c9fa985 100644 --- a/src/bg-ui/bg-nav-list.vue +++ b/src/bg-ui/bg-nav-list.vue @@ -31,7 +31,10 @@ :class="{current:isCurrent(item.children&&item.children.length?[...getChildrenPath(item.children),item.path]:[item.path])}" @click="$router.push(item.path)" > - {{ item.menuName }} + + + {{ item.menuName }} + diff --git a/src/bg-ui/bg-upload-image.vue b/src/bg-ui/bg-upload-image.vue index 1ed93f55d79b99015d811863c388ef8260e8a7ed..51eb59efd2158160c4bef7826be6662384cfa57d 100644 --- a/src/bg-ui/bg-upload-image.vue +++ b/src/bg-ui/bg-upload-image.vue @@ -44,6 +44,10 @@ + + + Preview Image + + diff --git a/src/bg-ui/index.scss b/src/bg-ui/index.scss index ba0a7c9d9f2943e5453d2c2c5e61fd3aa55cb7d8..8196e1371badc869f4e0495e90c84b51b2a8047d 100644 --- a/src/bg-ui/index.scss +++ b/src/bg-ui/index.scss @@ -2559,6 +2559,7 @@ a { width: 100%; .el-checkbox { + width: 100%; .el-checkbox__label { overflow: hidden; text-overflow: ellipsis; @@ -2620,7 +2621,7 @@ a { } .bg-permission-option--self { - width: 168px; + width: 128px; &.full-option { width: 100%; @@ -2628,7 +2629,7 @@ a { } .bg-permission-option--list { - width: calc(100% - 168px); + width: calc(100% - 128px); &.flex-wrap { display: flex; @@ -2640,10 +2641,13 @@ a { >.bg-permission-option { >.bg-permission-option--self { - width: 168px; + width: 128px; border-right: none; border-bottom: none; } } } +} +.bg-upload-image-dialog { + width: 650px; } \ No newline at end of file diff --git a/src/page/main/config/dict/index.vue b/src/page/main/config/dict/index.vue index 2beb0d0792a2c3579ebad9c0723dfe7efe80c783..d547074526a7b24c1e87dfa5ebb079a69fbdab49 100644 --- a/src/page/main/config/dict/index.vue +++ b/src/page/main/config/dict/index.vue @@ -103,6 +103,16 @@ @@ -232,8 +242,7 @@ const state = reactive({ }, rules: { name: [ - { required: true, message: "请输入名称", trigger: "blur" }, - { max: 20, message: "名称最大为20字", trigger: "blur"} + { required: true, message: "请输入名称", trigger: "blur" } ], describe: [ { required: true, message: "请输入描述", trigger: "blur" }, diff --git a/src/page/main/develop/account/add/contact-form.vue b/src/page/main/develop/account/add/contact-form.vue index d86aadbace86ba510305006878be9a49169a9761..9a5ac56afe959ec89e49e8823fc823b63be4573a 100644 --- a/src/page/main/develop/account/add/contact-form.vue +++ b/src/page/main/develop/account/add/contact-form.vue @@ -17,7 +17,7 @@ - + @@ -44,37 +44,47 @@ const props = defineProps({ }); const checkPhone = (rule, value, callback) => { - var phone_ruler = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/; - setTimeout(() => { - if (!phone_ruler.test(value)&&value.length!==0) { - callback(new Error("请输入正确的手机号码")); - } else { - callback(); - } - }); + var phone_ruler = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/; + setTimeout(() => { + if (!phone_ruler.test(value)&&value.length!==0) { + callback(new Error("请输入正确的手机号码")); + } else { + callback(); + } + }); }; const checkPhoneRepet = (rule, value, callback) => { - let params = null; - if (props.id){ - params = {id: parseInt(props.id),contact_phone: value,} - }else { - params = {id: 0,contact_phone: value} - } + let params = null; + if (props.id){ + params = {id: parseInt(props.id),contact_phone: value,} + }else { + params = {id: 0,contact_phone: value} + } + $axios.post(`/apaas/system/v5/org/check`,params) + .then((res) => { + if (res.data.code == 200) { + callback() + }else { + callback(new Error(res.data.data)) + } + }) +} - $axios.post(`/apaas/system/v5/org/check`,params) - .then((res) => { - if (res.data.code == 200) { - callback() - }else { - callback(new Error(res.data.data)) - } - }) - } +const checkName = (rule, value, callback) => { + var reg = /^[a-zA-Z0-9\u4e00-\u9fa5]+$/ + if (!reg.test(value)) { + callback(new Error("只能输入字母、数字和汉字")) + }else { + callback() + } +} const contactFormRules = reactive({ contact_name: [ { required: true, message: '请输入联系人姓名', trigger: 'blur' }, + { max: 50, message: "联系人姓名最大长度为50个字符", trigger: "blur"}, + { validator: checkName, trigger: 'blur' }, ], contact_phone: [ { required: true, message: '请输入联系人手机号', trigger: 'blur' }, @@ -83,6 +93,7 @@ const contactFormRules = reactive({ ], contact_email: [ { type: 'email', message: '请输入正确的邮箱', trigger: 'blur' }, + { max: 100, message: "邮箱最大长度为100个字符", trigger: "blur"}, ] }) const contactRef = ref(null) diff --git a/src/page/main/develop/account/add/index.vue b/src/page/main/develop/account/add/index.vue index d4dec140688a626d0604f0e7260661c4229f6762..dd24ee9b1e85a9095d9658a2ae2ee7cbdc0978d9 100644 --- a/src/page/main/develop/account/add/index.vue +++ b/src/page/main/develop/account/add/index.vue @@ -191,7 +191,7 @@ const getDetail = () => { systemFormRef.value.setForm({ organization_id: form.organization_id, system_role_id: form.system_role_id, - logo: [{url:form.logo}], + logo: form.logo ? [{url:form.logo}] : [], business_code: form.business_code, business_name: form.business_name, business_desc: form.business_desc, diff --git a/src/page/main/develop/account/add/system-form.vue b/src/page/main/develop/account/add/system-form.vue index 1f6e4ad675792411424cff6e62e3ad035653b29a..bad2b687ffc758b5b964d8c85578ac3792a09b17 100644 --- a/src/page/main/develop/account/add/system-form.vue +++ b/src/page/main/develop/account/add/system-form.vue @@ -29,7 +29,7 @@ - + @@ -118,39 +118,49 @@ const validatePass = (rule, value, callback) => { } } const validateBusinessName = (rule, value, callback) => { - let params = null; - if (props.id){ - params = {id: parseInt(props.id),business_name: value,organization_id: systemForm.organization_id} - }else { - params = {business_name: value,organization_id: systemForm.organization_id} - } - - $axios.post(`/apaas/system/v5/user/check/business`,params) - .then((res) => { - if (res.data.code == 200) { - callback() - }else { + let reg = /^[a-zA-Z0-9\u4e00-\u9fa5]+$/ + if (!reg.test(value)) { + callback(new Error("只能输入字母、数字和汉字")) + }else { + let params = null; + if (props.id){ + params = {id: parseInt(props.id),business_name: value,organization_id: systemForm.organization_id} + }else { + params = {business_name: value,organization_id: systemForm.organization_id} + } + + $axios.post(`/apaas/system/v5/user/check/business`,params) + .then((res) => { + if (res.data.code == 200) { + callback() + }else { callback(new Error(res.data.data)) - } - }) + } + }) + } } const validateSystemAccount = (rule, value, callback) => { - let params = null; - if (props.id){ - params = {id: parseInt(props.id),system_account: value,} - }else { - params = {system_account: value} - } - - $axios.post(`/apaas/system/v5/user/check/account`,params) - .then((res) => { - if (res.data.code == 200) { - callback() - }else { + let reg = /^[a-zA-Z0-9]+$/ + if (!reg.test(value)) { + callback(new Error("只能输入字母和数字")) + }else { + let params = null; + if (props.id){ + params = {id: parseInt(props.id),system_account: value,} + }else { + params = {system_account: value} + } + + $axios.post(`/apaas/system/v5/user/check/account`,params) + .then((res) => { + if (res.data.code == 200) { + callback() + }else { callback(new Error(res.data.data)) - } - }) + } + }) + } } const formRules = reactive({ @@ -159,6 +169,7 @@ const formRules = reactive({ ], business_name: [ { required: true, message: '请输入业务系统名称', trigger: 'blur' }, + { max: 50, message: '业务系统名称最大长度为50个字符', trigger: 'blur' }, { validator: validateBusinessName, trigger: 'blur' }, ], system_role_id: [ @@ -166,16 +177,24 @@ const formRules = reactive({ ], system_account: [ { required: true, message: '请输入账号', trigger: 'blur' }, + { min: 4,message: '帐号长度不得低于4个字符',trigger: 'blur' }, + { max: 20,message: '帐号最大长度为20个字符',trigger: 'blur' }, { validator: validateSystemAccount, trigger: 'blur' }, ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, - {min: 8,message: '密码长度不得低于8位',trigger: 'blur'} + { min: 8,message: '密码长度不得低于8位',trigger: 'blur' } ], confirm_password: [ { required: true, message: '请确认密码', trigger: 'blur' }, { validator: validatePass, trigger: 'blur' } ], + access_address: [ + { max: 500,message: '访问地址最大长度为500个字符',trigger: 'blur' }, + ], + develop_id: [ + { required: true, message: "请选择开发厂商", trigger: "change"} + ] }) const systemRef = ref(null) @@ -258,14 +277,13 @@ const getRoleList = () => { const getFirmList = () => { $axios.get(`/apaas/system/v5/dictionary/developer/list`) - .then((res) => { + .then((res) => { if (res.data.code == 200) { - firmList.value = res.data.data; - + firmList.value = res.data.data || []; }else { - + $message.error(res.data.data) } - }) + }) } onBeforeMount(() =>{ diff --git a/src/page/main/develop/account/index.vue b/src/page/main/develop/account/index.vue index 7971f28a4bda2d7a98449205b055e4e453256aaa..5445611468fb71a37ed0965ab07cfc3263f684bd 100644 --- a/src/page/main/develop/account/index.vue +++ b/src/page/main/develop/account/index.vue @@ -217,17 +217,16 @@ import CryptoJS from "crypto-js"; { label: "业务系统编码", prop: "business_code", - width: 180 + minWidth: 160 }, { label: "业务系统名称", prop: "business_name", - minWidth: 180 + minWidth: 160 }, { label: "账号", prop: "system_account", - width: 150 }, { label: "所属机构", @@ -242,7 +241,6 @@ import CryptoJS from "crypto-js"; { label: "是否启用", prop: "state", - width: 80 }, { label: "操作", @@ -557,7 +555,7 @@ import CryptoJS from "crypto-js"; } const clearSelected = () => { - dataTable.value.clearSelection(); + dataTable.value.clearTable(); } diff --git a/src/page/main/develop/menu/index.vue b/src/page/main/develop/menu/index.vue index 0353ec59084df48f26bcf702863ed054dde141b6..cd27ed0d185e6c980477ac3149d5387ef07c3463 100644 --- a/src/page/main/develop/menu/index.vue +++ b/src/page/main/develop/menu/index.vue @@ -300,7 +300,7 @@ const fileAction = (val,data,parent,disabled=false) => { let newChild = { menu_name: "新菜单", // 菜单名称 menu_id: 'new' + state.newMenuId, // 菜单id,用于新增后选中 - menu_type: !parent ? 0 : parent.menu_type == 0 ? 0 : parent.menu_type == 1 ? 1 : 2, // 新增本级的类型 + menu_type: !parent ? 0 : parent.menu_type == 0 ? 0 : 2, // 新增本级的类型 dict_group_id: parent ? parent.dict_group_id : "", // 父级的分组 有则继承,无则自选 state: 1, // 启用状态 menu_url: "", // 路径 @@ -320,7 +320,7 @@ const fileAction = (val,data,parent,disabled=false) => { let newChild = { menu_name: "新菜单", menu_id: 'new' + state.newMenuId, - menu_type: data.menu_type == 0 ? 0 : data.menu_type == 1 ? 1 : 2, + menu_type: data.menu_type == 0 ? 0 : 2, dict_group_id: data.dict_group_id, state: 1, menu_url: "", diff --git a/src/page/main/develop/menu/menu-form.vue b/src/page/main/develop/menu/menu-form.vue index 707e828a3b4ee4261117dbd571372148139108fb..e698dfae518c4cf380ffb31d640c7b61473ce9cc 100644 --- a/src/page/main/develop/menu/menu-form.vue +++ b/src/page/main/develop/menu/menu-form.vue @@ -14,7 +14,7 @@ 目录 - 菜单 + 菜单 子页面 diff --git a/src/page/main/system/organization/index.vue b/src/page/main/system/organization/index.vue index a5a89666854cecac9f1f55b2558d26ea50d40874..41ba329c5499907b9a9fd1d6fb54e32021f02e31 100644 --- a/src/page/main/system/organization/index.vue +++ b/src/page/main/system/organization/index.vue @@ -27,9 +27,22 @@
-
基本信息
- - +
+ + + + + + 基本信息 + + + + 查看详情 + + +
+ +
@@ -880,7 +893,7 @@ import { downloadFileFormatNew } from '@/services/helper' } const clearSelected = () => { - dataTable.value.clearSelection(); + dataTable.value.clearTable(); } @@ -932,13 +945,33 @@ import { downloadFileFormatNew } from '@/services/helper' color: #202531; font-weight: bold; margin-bottom: 10px; + max-width: 960px; + display: flex; + justify-content: space-between; + align-items: center; +} +.detail_btn { + font-size: 14px; + font-weight: normal; } .icon_box { - background-color: rgb(42, 74, 167); - color: rgb(255, 255, 255); - padding: 2px 4px; - border-radius: 4px; - font-size: 14px; + display: flex; + align-items: center; +} +.step_icon { + display: inline-block; + width: 20px; + height: 20px; + text-align: center; + line-height: 20px; + background-color: #2a4aa7; + color: #fff; + border-radius: 4px; + font-size: 14px; + margin-right: 8px; +} +.info_box { + max-width: 960px; } .main_container { flex: 1; @@ -969,7 +1002,7 @@ import { downloadFileFormatNew } from '@/services/helper' bottom: unset } .dialog_form { - padding: 16px; + padding: 24px 8px 6px; } \ No newline at end of file diff --git a/src/page/main/system/organization/org-form.vue b/src/page/main/system/organization/org-form.vue index 3e3640fc988d14cb045bfb223c637dfd0fe6d3a3..75b0991fdc79621568f6f14793b8a50e63c658a2 100644 --- a/src/page/main/system/organization/org-form.vue +++ b/src/page/main/system/organization/org-form.vue @@ -5,7 +5,6 @@ :model="orgForm" :rules="formRules" ref="orgRef" - style="max-width: 80%" > - + - + 将文件拖到此处,或 点击上传 @@ -41,105 +44,119 @@ \ No newline at end of file diff --git a/src/page/main/system/organization/org-user/index.vue b/src/page/main/system/organization/org-user/index.vue index c1bab5f131caefabd6127ba09e89afade7cdb029..949ff6bd0b19b5fbce953a123fe7efc4118099de 100644 --- a/src/page/main/system/organization/org-user/index.vue +++ b/src/page/main/system/organization/org-user/index.vue @@ -4,7 +4,7 @@ 组织管理 组织管理 - 新增组织管理员 + {{route.query.id ? '编辑组织用户':'新增组织管理员'}}
@@ -144,12 +144,14 @@ const getOrgPersonFormData = (data) => { }) }else { - const params = {...formData, - // organization_id: orgId.value, - logo: formData.logo && formData.logo.length > 0 ? formData.logo[0].url : '', - is_admin: 2, - password: CryptoJS.AES.encrypt(formData.password,"swuE9cmCZQwrkYRV").toString() - }; + const params = { + ...formData, + // organization_id: orgId.value, + logo: formData.logo && formData.logo.length > 0 ? formData.logo[0].url : '', + is_admin: 2, + password: CryptoJS.AES.encrypt(formData.password,"swuE9cmCZQwrkYRV").toString() + }; + params.document_type = params.document_type == "" ? 0 : params.document_type $axios.post(`/apaas/system/v5/org/add/user`,params) .then((res) => { if (res.data.code == 200) { @@ -190,7 +192,7 @@ const getDetail = () => { orgAccountRef.value.setForm({ organization_id: form.organization_id, select_role: form.select_role, - logo: [{url:form.logo}], + logo: form.logo ? [{url:form.logo}] : [], system_account: form.system_account, contact_phone: form.contact_phone, state: form.state, @@ -199,7 +201,7 @@ const getDetail = () => { orgPersonRef.value.setForm({ contact_name: form.contact_name, - document_type: form.document_type, + document_type: form.document_type ? form.document_type : "", document_number: form.document_number, contact_email: form.contact_email, remark: form.remark, diff --git a/src/page/main/system/organization/platform-user/index.vue b/src/page/main/system/organization/platform-user/index.vue index f76a8fac15c8fb541e9db91d809a6925b8f08a01..11055c9767bac2288cec0c20440e4a5bdf750a56 100644 --- a/src/page/main/system/organization/platform-user/index.vue +++ b/src/page/main/system/organization/platform-user/index.vue @@ -4,7 +4,7 @@ 组织管理 组织管理 - 新增平台用户 + {{route.query.id ? '编辑平台用户':'新增平台用户'}}
@@ -217,7 +217,7 @@ const getDetail = () => { if (res.data.code == 200) { const form = res.data.data; platformAccountFormRef.value.setForm({ - logo: [{url:form.logo}], + logo: form.logo ? [{url:form.logo}] : [], system_account: form.system_account, contact_phone: form.contact_phone, state: form.state, diff --git a/src/page/main/system/organization/user-detail/index.vue b/src/page/main/system/organization/user-detail/index.vue index 006425900fb71049b2754d8cf0664d2254abc393..763dd45abc2c627220a69aa805e6d1165fdcf26d 100644 --- a/src/page/main/system/organization/user-detail/index.vue +++ b/src/page/main/system/organization/user-detail/index.vue @@ -1,45 +1,45 @@ \ No newline at end of file diff --git a/src/page/main/system/role/index.vue b/src/page/main/system/role/index.vue index 8d5cfc6c7d026037bb0c24b2dcebd87f155396f0..9b88b2d5817612f51dd1f996eba30f980e69f45b 100644 --- a/src/page/main/system/role/index.vue +++ b/src/page/main/system/role/index.vue @@ -146,7 +146,7 @@ { } // 表格关键字筛选 const changeUseRow = (row) => { + if (row.role_type == 1 || row.role_type == 2) { + return + } axios .post(`/apaas/system/v5/role/state/${row.id}/${row.state}`) .then((res) => {