From 9141c0653044364a25949f83f5a971e8cd68a310 Mon Sep 17 00:00:00 2001 From: wang-liang0615 <53748875+wang-liang0615@users.noreply.github.com> Date: Fri, 12 Jan 2024 17:09:44 +0800 Subject: [PATCH] feat:citype regex check & pref:edit is_list (#380) --- .../src/components/RegexSelect/constants.js | 19 ++ cmdb-ui/src/components/RegexSelect/index.js | 2 + .../components/RegexSelect/regexSelect.vue | 208 ++++++++++++++++++ cmdb-ui/src/lang/en.js | 20 ++ cmdb-ui/src/lang/zh.js | 20 ++ cmdb-ui/src/modules/cmdb/lang/en.js | 3 +- cmdb-ui/src/modules/cmdb/lang/zh.js | 3 +- cmdb-ui/src/modules/cmdb/views/ci/index.vue | 74 ++----- .../views/ci/modules/CreateInstanceForm.vue | 10 +- .../views/ci/modules/ciDetailAttrContent.vue | 40 +--- .../ci/modules/createInstanceFormByGroup.vue | 14 +- .../cmdb/views/ci_types/attributeEditForm.vue | 100 +++++++-- .../cmdb/views/ci_types/ceateNewAttribute.vue | 61 +++-- .../src/modules/cmdb/views/ci_types/index.vue | 42 ++-- .../cmdb/views/relation_views/index.vue | 34 +-- .../modules/cmdb/views/tree_views/index.vue | 26 +-- 16 files changed, 482 insertions(+), 194 deletions(-) create mode 100644 cmdb-ui/src/components/RegexSelect/constants.js create mode 100644 cmdb-ui/src/components/RegexSelect/index.js create mode 100644 cmdb-ui/src/components/RegexSelect/regexSelect.vue diff --git a/cmdb-ui/src/components/RegexSelect/constants.js b/cmdb-ui/src/components/RegexSelect/constants.js new file mode 100644 index 0000000..56d1a95 --- /dev/null +++ b/cmdb-ui/src/components/RegexSelect/constants.js @@ -0,0 +1,19 @@ +/* eslint-disable no-useless-escape */ + +import i18n from '@/lang' +export const regList = () => { + return [ + { id: 'letter', label: i18n.t('regexSelect.letter'), value: '^[A-Za-z]+$', message: '请输入字母' }, + { id: 'number', label: i18n.t('regexSelect.number'), value: '^-?(?!0\\d+)\\d+(\\.\\d+)?$', message: '请输入数字' }, + { id: 'letterAndNumber', label: i18n.t('regexSelect.letterAndNumber'), value: '^[A-Za-z0-9.]+$', message: '请输入字母和数字' }, + { id: 'phone', label: i18n.t('regexSelect.phone'), value: '^1[3-9]\\d{9}$', message: '请输入正确手机号码' }, + { id: 'landline', label: i18n.t('regexSelect.landline'), value: '^(?:(?:\\d{3}-)?\\d{8}|^(?:\\d{4}-)?\\d{7,8})(?:-\\d+)?$', message: '请输入正确座机' }, + { id: 'zipCode', label: i18n.t('regexSelect.zipCode'), value: '^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\\d{4}$', message: '请输入正确邮政编码' }, + { id: 'IDCard', label: i18n.t('regexSelect.IDCard'), value: '(^[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{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)', message: '请输入正确身份证号' }, + { id: 'ip', label: i18n.t('regexSelect.ip'), value: '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$', message: '请输入正确IP地址' }, + { id: 'email', label: i18n.t('regexSelect.email'), value: '^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\.\\w+([-.]\\w+)*$', message: '请输入正确邮箱' }, + { id: 'link', label: i18n.t('regexSelect.link'), value: '^(https:\/\/www\.|http:\/\/www\.|https:\/\/|http:\/\/)?[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,})(\.[a-zA-Z0-9]{2,})?$', message: '请输入链接' }, + { id: 'monetaryAmount', label: i18n.t('regexSelect.monetaryAmount'), value: '^-?\\d+(,\\d{3})*(\.\\d{1,2})?$', message: '请输入货币金额' }, + { id: 'custom', label: i18n.t('regexSelect.custom'), value: '', message: '' } + ] +} diff --git a/cmdb-ui/src/components/RegexSelect/index.js b/cmdb-ui/src/components/RegexSelect/index.js new file mode 100644 index 0000000..232ecb4 --- /dev/null +++ b/cmdb-ui/src/components/RegexSelect/index.js @@ -0,0 +1,2 @@ +import RegexSelect from './regexSelect.vue' +export default RegexSelect diff --git a/cmdb-ui/src/components/RegexSelect/regexSelect.vue b/cmdb-ui/src/components/RegexSelect/regexSelect.vue new file mode 100644 index 0000000..f8084bc --- /dev/null +++ b/cmdb-ui/src/components/RegexSelect/regexSelect.vue @@ -0,0 +1,208 @@ + + + + + + + \ No newline at end of file diff --git a/cmdb-ui/src/lang/en.js b/cmdb-ui/src/lang/en.js index d0a4759..bd2de11 100644 --- a/cmdb-ui/src/lang/en.js +++ b/cmdb-ui/src/lang/en.js @@ -145,6 +145,26 @@ export default { sizeLimit: 'The image size cannot exceed 2MB!', nodata: 'There are currently no custom icons available. Click here to upload' }, + regexSelect: { + limitedFormat: 'Limited Format', + regExp: 'RegExp', + errMsg: 'Error Message', + test: 'Test', + placeholder: 'Please Select RegExp', + error: 'Error', + letter: 'letter', + number: 'number', + letterAndNumber: 'letter&number', + phone: 'phone', + landline: 'landline', + zipCode: 'zip code', + IDCard: 'ID card', + ip: 'IP', + email: 'email', + link: 'link', + monetaryAmount: 'monetary amount', + custom: 'custom', + }, cmdb: cmdb_en, cs: cs_en, acl: acl_en, diff --git a/cmdb-ui/src/lang/zh.js b/cmdb-ui/src/lang/zh.js index b31e555..42c5eae 100644 --- a/cmdb-ui/src/lang/zh.js +++ b/cmdb-ui/src/lang/zh.js @@ -145,6 +145,26 @@ export default { sizeLimit: '图片大小不可超过2MB!', nodata: '暂无自定义图标,点击此处上传' }, + regexSelect: { + limitedFormat: '限定格式', + regExp: '正则表达式', + errMsg: '错误时提示', + test: '测试', + placeholder: '请选择正则表达式', + error: '错误', + letter: '字母', + number: '数字', + letterAndNumber: '字母和数字', + phone: '手机号码', + landline: '座机', + zipCode: '邮政编码', + IDCard: '身份证号', + ip: 'IP地址', + email: '邮箱', + link: '链接', + monetaryAmount: '货币金额', + custom: '自定义', + }, cmdb: cmdb_zh, cs: cs_zh, acl: acl_zh, diff --git a/cmdb-ui/src/modules/cmdb/lang/en.js b/cmdb-ui/src/modules/cmdb/lang/en.js index a37d362..b20ad65 100644 --- a/cmdb-ui/src/modules/cmdb/lang/en.js +++ b/cmdb-ui/src/modules/cmdb/lang/en.js @@ -174,7 +174,8 @@ const cmdb_en = { date: 'Date', time: 'Time', json: 'JSON', - event: 'Event' + event: 'Event', + reg: 'Regex' }, components: { unselectAttributes: 'Unselected', diff --git a/cmdb-ui/src/modules/cmdb/lang/zh.js b/cmdb-ui/src/modules/cmdb/lang/zh.js index 819aabd..ec432f8 100644 --- a/cmdb-ui/src/modules/cmdb/lang/zh.js +++ b/cmdb-ui/src/modules/cmdb/lang/zh.js @@ -174,7 +174,8 @@ const cmdb_zh = { date: '日期', time: '时间', json: 'JSON', - event: '事件' + event: '事件', + reg: '正则校验' }, components: { unselectAttributes: '未选属性', diff --git a/cmdb-ui/src/modules/cmdb/views/ci/index.vue b/cmdb-ui/src/modules/cmdb/views/ci/index.vue index f6642d9..2a97fc5 100644 --- a/cmdb-ui/src/modules/cmdb/views/ci/index.vue +++ b/cmdb-ui/src/modules/cmdb/views/ci/index.vue @@ -101,7 +101,6 @@ :cell-type="col.value_type === '2' ? 'string' : 'auto'" :fixed="col.is_fixed ? 'left' : ''" > - -