Merge remote-tracking branch 'origin/master'

This commit is contained in:
lideqin
2024-08-09 19:31:08 +08:00
19 changed files with 147 additions and 51 deletions
+15 -3
View File
@@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 4236293 */
src: url('iconfont.woff2?t=1721283373084') format('woff2'),
url('iconfont.woff?t=1721283373084') format('woff'),
url('iconfont.ttf?t=1721283373084') format('truetype');
src: url('iconfont.woff2?t=1723190928792') format('woff2'),
url('iconfont.woff?t=1723190928792') format('woff'),
url('iconfont.ttf?t=1723190928792') format('truetype');
}
.iconfont {
@@ -13,6 +13,18 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-xiaoxi-mian--:before {
content: "\e60e";
}
.icon-yun:before {
content: "\e6e2";
}
.icon-rizhi:before {
content: "\e64e";
}
.icon-fill-message-square:before {
content: "\e706";
}
File diff suppressed because one or more lines are too long
+21
View File
@@ -5,6 +5,27 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "5158298",
"name": "message",
"font_class": "xiaoxi-mian--",
"unicode": "e60e",
"unicode_decimal": 58894
},
{
"icon_id": "8361930",
"name": "cloud",
"font_class": "yun",
"unicode": "e6e2",
"unicode_decimal": 59106
},
{
"icon_id": "8431682",
"name": "log",
"font_class": "rizhi",
"unicode": "e64e",
"unicode_decimal": 58958
},
{
"icon_id": "38297476",
"name": "fill-message-square",
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -780,11 +780,11 @@ module.exports = {
},
// 登录
login: {
systemName: 'Chery Standard regulation management system',
systemName: 'Chery Global Regulation And Standard Management System',
language: 'English',
userLogin: 'ACCOUNT LOGIN',
account: 'Account Number',
password: 'Cipher',
password: 'Password',
code: 'Verification Code',
login: 'Login',
showPassword: 'Show Password',
@@ -1,29 +1,29 @@
module.exports = {
configStandard: 'Configuration standard', // 配置标准
removeStandard: 'Removal criteria', // 移出标准
nodeName: 'Node name', // 节点名称
nodeOrder: 'Node ordering', // 节点排序
configStandard: 'Configuration Standard', // 配置标准
removeStandard: 'Removal Criteria', // 移出标准
nodeName: 'Node Name', // 节点名称
nodeOrder: 'Node Ordering', // 节点排序
configStandardNoTreeNode: 'Please select Level 2 and below system first', // 请先选择二级及以下体系
selectLeastOneTableData: 'Select at least one list data', // 选中至少一条列表数据
standardResolutionSheet: 'Standard interpretation', // 标准解读
updateRecord: 'Update record', // 更新记录
submitQuestion: 'Submit a question', // 提交问题
standardCatalogue: 'Standard catalogue', // 标准目录
clauseLabel: 'Clause label', // 条文标签
updateRecord: 'Update Record', // 更新记录
submitQuestion: 'Submit A Question', // 提交问题
standardCatalogue: 'Standard Catalogue', // 标准目录
clauseLabel: 'Article Label', // 条文标签
translation: 'Translation',
clauseNumber: 'Article number', // 条文号
clauseTitle: 'Title of article', // 条文标题
regulatoryRequirementsType: 'Types of regulatory requirements', // 法规要求类型
functionalClassification: 'Functional classification', // 功能分类
functionalSpecialty: 'Functional specialty', // 功能专业
blockCoding: 'Block coding', // 分组编码
groupName: 'Group name', // 分组名称
clauseTitle: 'Title of Article', // 条文标题
regulatoryRequirementsType: 'Types of Regulatory Requirements', // 法规要求类型
functionalClassification: 'Functional Classification', // 功能分类
functionalSpecialty: 'Functional Specialty', // 功能专业
blockCoding: 'Block Coding', // 分组编码
groupName: 'Group Name', // 分组名称
newCertificationImplementationTime: 'New Production Vehicle Implementation Date', // 新认证实施时间
certifiedImplementationTime: 'Certified implementation time', // 已认证实施时间
newRegistrationImplementationTime: 'New registration implementation time', // 新注册实施时间
certifiedImplementationTime: 'Certified Implementation Time', // 已认证实施时间
newRegistrationImplementationTime: 'New Registration Implementation Time', // 新注册实施时间
applicableVehicleType: 'Vehicle Catagory', // 适用车型
dynamicType: 'Power Propulsion Type', // 动力类型
inputExample: 'Input example:', // 输入示例
inputExample: 'Input Example:', // 输入示例
applicableComponents: 'Applicable Components',
involvingSystemsComponents: 'Related System(s)/Component(s)',
applications: 'Vehicle Catagory',
@@ -52,9 +52,9 @@ module.exports = {
// 资料中心
profileCenter: {
typeOfOwnership: 'Type of ownership',
uploadData: 'Upload data',
addAPeer: 'Add a peer',
newChild: 'New child',
uploadData: 'Upload Data',
addAPeer: 'Add A Peer',
newChild: 'New Child',
pleaseSelectTheDirectoryOnTheLeft: 'Please select the directory on the left'
},
// 市场法规清单
@@ -68,11 +68,11 @@ module.exports = {
listVersion: 'Version',
releaseTime: 'Published Date',
listState: 'Status',
customName: 'Custom name',
securityClass: 'Confidential level',
listDeclaration: 'Manifest declaration',
customName: 'Custom Name',
securityClass: 'Confidential Level',
listDeclaration: 'Manifest Declaration',
templateName: 'Market regulation list import template',
historicalVersion: 'Historical version',
historicalVersion: 'Historical Version',
standardExist: 'The standard already exists',
haveStandardExist: 'Some standards already exist',
pleaseSelectAListPublish: 'Please select a list to publish',
+3 -1
View File
@@ -166,7 +166,9 @@ export default {
<!-- update_begin author:sunjianlei date:20190530 for: 选中首页的时候不显示背景颜色 -->
<style lang="less">
.ant-menu.ant-menu-root {
&:not(.ant-menu-horizontal) .ant-menu-item-selected {
background-color: rgba(0, 100, 250, 0.08);
}
&.ant-menu-inline-collapsed {
width: 64px;
& > .ant-menu-item,
@@ -44,7 +44,7 @@ export default {
headers: '',
previewImage: {},
uploadFileFlag: 0,
fileMaxSize: 500
fileMaxSize: 20
}
},
created () {
@@ -136,7 +136,8 @@ export default {
{
title: this.$t('docTool.comparison.oldTextState'),
width: 150,
dataIndex: 'fileTypeLeft_dictText'
dataIndex: 'fileTypeLeft_dictText',
scopedSlots: { customRender: 'dictText' }
},
// 新文档文本号
{
@@ -156,13 +157,15 @@ export default {
{
title: this.$t('docTool.comparison.newTextState'),
width: 150,
dataIndex: 'fileTypeRight_dictText'
dataIndex: 'fileTypeRight_dictText',
scopedSlots: { customRender: 'dictText' }
},
// 发布情况
{
title: this.$t('docTool.comparison.releaseSituation'),
width: 150,
dataIndex: 'releaseState_dictText'
dataIndex: 'releaseState_dictText',
scopedSlots: { customRender: 'dictText' }
},
// 创建人
{
@@ -183,7 +183,8 @@ export default {
{
dataIndex: 'fileType_dictText',
title: this.$t('docTool.split.fileStatus'),
width: 150
width: 150,
scopedSlots: { customRender: 'dictText' }
},
// 文件名称
{
@@ -195,7 +196,8 @@ export default {
{
dataIndex: 'splitStatus_dictText',
title: this.$t('docTool.split.splitState'),
width: 150
width: 150,
scopedSlots: { customRender: 'dictText' }
},
// 编辑人
{
@@ -177,7 +177,7 @@
<a-button type="primary" icon="plus" ghost @click="handleAddClauseContent(-1)">{{ $t('newlyAdded') }}</a-button>
</div>
<template v-if="contentList && contentList.length > 0">
<div class="clause-item" v-for="(clause, index) in contentList" :key="index + 'clause'">
<div class="clause-item" v-for="(clause, index) in contentList" :key="clause.uuid || (index + 'clause')">
<div class="clause-item-content">
<!--文本-->
<a-input type="textarea"
@@ -237,6 +237,7 @@ import { getAction } from '../../../../api/manage'
import { getFormDictTreeList } from '../../../../api/api'
import STreeSelect from '../../../../components/STreeSelect'
import TreeSelection from '../../../../components/selection/TreeSelection'
import { randomUUID } from '@/utils/util'
export default {
name: 'SplitAddForm',
@@ -491,22 +492,40 @@ export default {
for (let i = 0; i < content; i++) {
insertArr.push({
id: '',
uuid: randomUUID(),
type: TypeOfClauseItem.TEXT.value,
itemContent: ''
})
}
break
case TypeOfClauseItem.IMG.value:
insertArr[0] = {
id: '',
type: TypeOfClauseItem.IMG.value,
itemContent: content.file.response.result.url,
thumbUrl: window._CONFIG.domianURL + '/sys/split/file/getImage?fileName=' + content.file.response.result.fileName
// 处理上传接口报错的情况
if (content.imgs) {
content.imgs.forEach(file => {
insertArr.push({
id: '',
uuid: randomUUID(),
type: TypeOfClauseItem.IMG.value,
itemContent: file.response.result.url,
thumbUrl: window._CONFIG.domianURL + '/sys/split/file/getImage?fileName=' + file.response.result.fileName
})
})
}
// if (content.file.response.result && content.file.response.result.url) {
// console.log(content.file.response.result.id)
// insertArr[0] = {
// id: '',
// uuid: randomUUID(),
// type: TypeOfClauseItem.IMG.value,
// itemContent: content.file.response.result.url,
// thumbUrl: window._CONFIG.domianURL + '/sys/split/file/getImage?fileName=' + content.file.response.result.fileName
// }
// }
break
case TypeOfClauseItem.TABLE.value:
insertArr[0] = {
id: '',
uuid: randomUUID(),
type: 'TABLE',
itemContent: content[0]
}
@@ -159,8 +159,11 @@ export default {
},
// 上传文件
uploadSuccess (file, data, imgs) {
this.$emit('ok', TypeOfClauseItem.IMG.value, { file, data, imgs })
this.visible = false
// 所有文件都上传完成再去关闭弹框
if (Array.isArray(imgs) && imgs.every(item => item.status === 'done')) {
this.$emit('ok', TypeOfClauseItem.IMG.value, { file, data, imgs })
this.visible = false
}
// this.$emit('addImageOk', file, data, imgs)
},
// 确定增加的类型
@@ -132,14 +132,14 @@ export default {
title: this.$t('docTool.ocrTextRecognition.textStatus'),
align: 'center',
width: 180,
dataIndex: 'fileTypeDictText',
dataIndex: this.isChinese() ? 'fileTypeDictText' : 'fileTypeDictTextEn',
scopedSlots: { customRender: 'text' }
},
{ // 转换结果
title: this.$t('docTool.ocrTextRecognition.conversionResults'),
align: 'center',
width: 180,
dataIndex: 'resultContentDictText',
dataIndex: this.isChinese() ? 'resultContentDictText' : 'resultContentDictTextEn',
scopedSlots: { customRender: 'tag' }
},
{ // 消耗时间
@@ -136,6 +136,10 @@ export default {
permissionIds: that.checkedKeys.join(','),
lastpermissionIds: that.defaultCheckedKeys.join(',')
}
// 只勾选父节点确定后,再次打开点击父子关联时,节点只是回显,没有被真实勾上,这里需要拿到所有子集的id
if (!that.checkStrictly) {
params.permissionIds = that.collectAllRelatedKeys(this.treeData, [...that.checkedKeys]).join(',')
}
that.loading = true
console.log('请求参数:', params)
saveRolePermission(params).then((res) => {
@@ -166,6 +170,36 @@ export default {
console.log(this.defaultCheckedKeys)
})
})
},
/**
* 返回父子关联的keys
* @param tree - 树结构
* @param keys - 当前勾选的keys
* @return {any[]} - 返回所有父子关联的key
*/
collectAllRelatedKeys (tree, keys) {
const result = new Set() // 使用集合来避免重复
function findAndCollectNodes (nodes) {
for (const node of nodes) {
if (keys.includes(node.key)) {
collectAllDescendants(node)
} else if (node.children) {
findAndCollectNodes(node.children)
}
}
}
function collectAllDescendants (node) {
if (!result.has(node.key)) {
result.add(node.key)
}
if (node.children) {
for (const child of node.children) {
collectAllDescendants(child)
}
}
}
findAndCollectNodes(tree)
return Array.from(result)
}
},
watch: {
+1 -1
View File
@@ -72,7 +72,7 @@ const editIcons = ['edit', 'form', 'copy', 'scissor', 'delete', 'snippets', 'dif
const dataIcons = ['area-chart', 'pie-chart', 'bar-chart', 'dot-chart', 'line-chart', 'radar-chart', 'heat-map', 'fall', 'rise', 'stock', 'box-plot', 'fund', 'sliders']
const webIcons = ['lock', 'unlock', 'bars', 'book', 'calendar', 'cloud', 'cloud-download', 'code', 'copy', 'credit-card', 'delete', 'desktop', 'download', 'ellipsis', 'file', 'file-text', 'file-unknown', 'file-pdf', 'file-word', 'file-excel', 'file-jpg', 'file-ppt', 'file-markdown', 'file-add', 'folder', 'folder-open', 'folder-add', 'hdd', 'frown', 'meh', 'smile', 'inbox', 'laptop', 'appstore', 'link', 'mail', 'mobile', 'notification', 'paper-clip', 'picture', 'poweroff', 'reload', 'search', 'setting', 'share-alt', 'shopping-cart', 'tablet', 'tag', 'tags', 'to-top', 'upload', 'user', 'video-camera', 'home', 'loading', 'loading-3-quarters', 'cloud-upload', 'star', 'heart', 'environment', 'eye', 'camera', 'save', 'team', 'solution', 'phone', 'filter', 'exception', 'export', 'customer-service', 'qrcode', 'scan', 'like', 'dislike', 'message', 'pay-circle', 'calculator', 'pushpin', 'bulb', 'select', 'switcher', 'rocket', 'bell', 'disconnect', 'database', 'compass', 'barcode', 'hourglass', 'key', 'flag', 'layout', 'printer', 'sound', 'usb', 'skin', 'tool', 'sync', 'wifi', 'car', 'schedule', 'user-add', 'user-delete', 'usergroup-add', 'usergroup-delete', 'man', 'woman', 'shop', 'gift', 'idcard', 'medicine-box', 'red-envelope', 'coffee', 'copyright', 'trademark', 'safety', 'wallet', 'bank', 'trophy', 'contacts', 'global', 'shake', 'api', 'fork', 'dashboard', 'table', 'profile', 'alert', 'audit', 'branches', 'build', 'border', 'crown', 'experiment', 'fire', 'money-collect', 'property-safety', 'read', 'reconciliation', 'rest', 'security-scan', 'insurance', 'interation', 'safety-certificate', 'project', 'thunderbolt', 'block', 'cluster', 'deployment-unit', 'dollar', 'euro', 'pound', 'file-done', 'file-exclamation', 'file-protect', 'file-search', 'file-sync', 'gateway', 'gold', 'robot', 'shopping']
const logoIcons = ['android', 'apple', 'windows', 'ie', 'chrome', 'github', 'aliwangwang', 'dingding', 'weibo-square', 'weibo-circle', 'taobao-circle', 'html5', 'weibo', 'twitter', 'wechat', 'youtube', 'alipay-circle', 'taobao', 'skype', 'qq', 'medium-workmark', 'gitlab', 'medium', 'linkedin', 'google-plus', 'dropbox', 'facebook', 'codepen', 'amazon', 'google', 'codepen-circle', 'alipay', 'ant-design', 'aliyun', 'zhihu', 'slack', 'slack-square', 'behance', 'behance-square', 'dribbble', 'dribbble-square', 'instagram', 'yuque', 'alibaba', 'yahoo']
const selfIcons = ['icon-kucun_crm', 'icon-24gf-folderOpen', 'icon-qicheweixiu', 'icon-yujing', 'icon-shezhi', 'icon-shouye', 'icon-file-star', 'icon-file-set', 'icon-a-iconfontgerenzhongxin1', 'icon-yingyong', 'icon-fill-message-square']
const selfIcons = ['icon-kucun_crm', 'icon-24gf-folderOpen', 'icon-qicheweixiu', 'icon-yujing', 'icon-shezhi', 'icon-shouye', 'icon-file-star', 'icon-file-set', 'icon-a-iconfontgerenzhongxin1', 'icon-yingyong', 'icon-fill-message-square', 'icon-xiaoxi-mian--', 'icon-yun', 'icon-rizhi']
export default {
name: 'Icons',
props: {
+1 -1
View File
@@ -154,7 +154,7 @@ export default {
title: this.$t('system.tag.showArea'),
width: 100,
dataIndex: 'showArea_dictText',
scopedSlots: { customRender: 'text' }
scopedSlots: { customRender: 'dictText' }
},
{
title: this.$t('operation'),
+2 -2
View File
@@ -354,7 +354,7 @@ export default {
z-index: 99;
width: 28%;
height: fit-content;
padding: 20px 16px 70px;
padding: 30px 30px 70px;
min-width: 332px;
min-height: 460px;
background: #fff;
@@ -415,7 +415,7 @@ export default {
@media screen and (max-width: 1366px) {
.user-layout-login {
width: 30%;
padding: 20px 16px;
padding: 20px 30px;
.user-box {
.title {