合并分支 'dev_third_stage' 到 'master'

Dev third stage

查看合并请求 laws-nio/laws-weilai!131
This commit is contained in:
李雪涛
2022-08-09 20:31:08 +08:00
157 changed files with 7928 additions and 1480 deletions
+75 -58
View File
@@ -13,7 +13,7 @@ module.exports = {
userStatues: 'User Status',
normal: 'Normal',
frozen: 'Frozen',
reset: 'Reset',
reset: 'Clear',
putAway: 'Put Away',
open: 'More',
addUser: 'Add User',
@@ -89,13 +89,13 @@ module.exports = {
VersionNotSupported: 'Version Not Supported',
SaveQueryCriteria: 'Save Search Conditions',
roleName: 'Role Name',
newRole: 'New Role',
newRole: 'Create New Role',
RoleManagement: 'Role Management',
toGrantAuthorization: 'Authorized',
newUser: 'New User',
ExistingUsers: 'Existing Users',
total: 'Total',
strip: 'Data',
strip: 'Items',
RoleCode: 'Role Code',
createTime: 'Creation Time',
userName: 'User Name',
@@ -276,7 +276,7 @@ module.exports = {
AggregateRouting: 'Aggregated Route',
OpenMode: 'Open Mode',
external: 'External',
inside: 'Inside',
inside: 'Internal',
enterMenuTitle: 'Please enter the menu title',
enterAuthorizationPolicy: 'Please enter authorization policy',
AuthorizationIDExists: 'Authorization ID already exists',
@@ -355,7 +355,7 @@ module.exports = {
templateDownload: 'Download Template',
textInformation: 'Document Files',
relatedInformation: 'Relevant Information',
RetrieveFiles: 'Select Stored File',
RetrieveFiles: 'Retrieve Library File',
SplitText: 'Split Library File',
ImportResults: 'Import Split Results',
copy: 'Copy',
@@ -368,7 +368,7 @@ module.exports = {
clickUpload: 'Click To Upload',
viewUploadedFiles: 'View Uploaded Files',
standardSelection: 'Standard Selection',
Collection: 'Add To Collection',
Collection: 'Collect',
CancelCollection: 'Delete Collection',
deleteLib: 'Delete',
subscribe: 'Subscribe',
@@ -404,12 +404,12 @@ module.exports = {
LabelContentManagement: 'Tag Content Management',
InputBoxType: 'Input Box Type',
DropDownType: 'Drop Down Type',
ExhibitionAreaManagement: 'Display Area Management',
ExhibitionAreaManagement: 'Display Management',
NewLabelItem: 'Newly Added Tag Item',
editLabelItem: 'Edit Tag Item',
NodeQuickLookup: 'Node Quick Lookup',
AreAllLabelsRead: 'Are All Labels Read',
AllLabelsRead: 'Labels Read',
AreAllLabelsRead: 'Are All Mark as Read',
AllLabelsRead: 'Mark as Read',
SubscriptionNotification: 'Subscription Notification',
warningInformation: 'Warning Information',
ForwardPush: 'Forward Push',
@@ -471,11 +471,11 @@ module.exports = {
charactersLength1to300: '1 - 300 characters in length',
OnlyOneSelected: 'Only one piece of data can be selected',
OnlyPDF: 'Only PDF files can be imported',
open: 'More',
away: 'Less',
open: 'Expand',
away: 'Collapse',
toDoProcess: 'To Do',
processDone: 'Completed',
sentProcess: 'Initiated',
sentProcess: 'Create',
monitoringProcess: 'Monitor',
ConfirmDeployment: 'Confirm Deployment?',
terminationProcess: 'Termination Process',
@@ -501,10 +501,10 @@ module.exports = {
ProcessType: 'Process Type',
AddProcess: 'Add Process',
RelatedItems: 'Relevant Project',
Sponsor: 'Initiator',
Sponsor: 'Creator',
CurrentProcessor: 'Current Processor',
LastProcessor: 'Last Processor',
ProcessingTime: 'Operation Time',
ProcessingTime: 'Complete Date',
cutoffTime: 'Due Date',
ProcessStatus: 'Process Status',
CompletionTime: 'Completion Time',
@@ -603,14 +603,14 @@ module.exports = {
verificationAndConformityconfirmation: 'Validation Compliance Check',
StandardImplementationDate: 'New Type Execution Date',
regulatoryEngineer: 'Regulation Engineer',
certifiedEngineer: 'Homologation Engineer',
certifiedEngineer: 'Homo Engineer',
regulatoryEngineerOrcertifiedEngineer: 'Regulation Engineer Or Homologation Engineer',
engineeringInterfacePerson: 'Engineering Interface',
engineeringInterfacePerson: 'Eng. Interface',
typeOfDeliverables: 'Deliverable Type',
deliverableTemplate: 'Deliverable Template',
entryName: 'Project',
entryName: 'Project Name',
targetMarket: 'Target Market',
projectStatus: 'Status',
projectStatus: 'Development',
StudioEngineer: 'R&H Studio',
CertificationTime: 'Certification Time',
NTplatform: 'NT Platform',
@@ -671,7 +671,7 @@ module.exports = {
standardName: 'Standard Name',
initiateListConfirmation: 'Initiate List Confirmation',
initiateTaskConfirmation: 'Initiate Task Confirmation',
alteration: 'Change',
alteration: 'Modify',
fixedPlate: 'Fix the version ',
taskAffirmStatus: 'Task Confirmation Status',
taskAffirm: 'Task Confirmation',
@@ -686,12 +686,12 @@ module.exports = {
confirmOverrule: 'Confirm Overrule',
The: 'The',
submitted: 'Data has been submitted and cannot be submitted again',
basicInformationOfParameters: 'Project Basic Information',
basicInformationOfParameters: 'General Info',
regulatoryCertificationTaskPlan: 'Regulation/Homologation Task Plan',
bringInRelevantPersonnel: 'Bring In Relevant Personnel',
confirmBringInRelevantPersonnel: 'Confirm Bring in relevant personnel',
problemType: 'Issue Type',
projectDetails: 'Project Info',
projectDetails: 'Project Details',
listOfRegulations: 'Regulation List',
taskList: 'Task List',
TaskParameterCollection: 'Task Parameter Collection',
@@ -725,7 +725,7 @@ module.exports = {
timeOperation: 'You have permission to operate this button.',
NiOnumberis: 'NiO number is',
NoOperationPermissionForthisbutton: 'No Operation permission for this button',
Attentionfreeze: 'Note: after freezing, the frozen configuration content cannot be edited.',
Attentionfreeze: 'Note: Note: The item can no longer be configured after its frozen. ',
Filledperson: 'The project contact person has not been filled in. Please fill in the project contact person before issuing and collecting.',
Datastatusis: 'Datastatusis',
Dropdownradio: 'Drop Down Radio',
@@ -734,7 +734,7 @@ module.exports = {
positiveInteger: 'Positive Integer',
// 参数收集开始
MaintainConfigureInfo: 'Maintain Configuration Information',
ParameteItemCollectionList: 'Parameter item collection list',
ParameteItemCollectionList: 'Parameter Collection List',
ParameterViewPage: 'Parameter View Page',
Areyousureparameteritems: 'Are you sure to submit the selected parameter items?',
Theselectedconfiguration: 'The configuration can only be added when the parameter items in the parameter list are to be collected or changed',
@@ -766,27 +766,27 @@ module.exports = {
operatethisbutton: 'You do not have permission to operate this button',
ParameterLibrary: 'Parameter Library',
referenceparameter: 'Reference Parameter',
tempSave: 'Temp Save',
Assignedby: 'Assignedby',
CompulsoryWithdrawal: 'CompulsoryWithdrawal',
SynchronousReportLibrary: 'Synchronous Report Library',
tempSave: 'Save',
Assignedby: 'Assign',
CompulsoryWithdrawal: 'Revoke',
SynchronousReportLibrary: 'Sync to the Library',
FreezeConfiguration: 'Freeze Configuration',
distributionAndCollection: 'Distribution And Collection',
distributionAndCollection: 'Distribute & Collect',
OneclickCollection: 'One-click Collection',
deleteConfiguration: 'Delete Configuration',
addConfiguration: 'Add Configuration',
electricMachinery: 'ElectricMachinery',
electricMachinery: 'E-motor',
Battery: 'Battery',
Model: 'Model',
configurationName: 'Configuration Name',
historicalVersion: 'Historical Version',
configure: 'Configure',
configure: 'Configuration',
parameter: 'Parameter',
changeExtension: 'Change Extension',
addDetailList: 'Add',
detailedList: 'DetailedList',
copyParamDetailList: 'Copy Parameter List',
collectionCompletionTime: 'Collection Completion Time',
collectionCompletionTime: 'Collection Completed',
parameterTemplateName: 'Parameter Template Name',
onlyThree: 'enter only letters, numbers, hyphens (-), left slashes, and Spaces',
templateName: 'Template Name',
@@ -794,14 +794,14 @@ module.exports = {
templateCopy: 'Template Copy',
NiOnumberalreadyexists: 'NiO number already exists, please replace NiO number',
attachmentTemplate: 'Attachment Template',
controlAlternatives: 'Control Alternatives',
controlVerification: 'Control Verification',
controlType: 'Control Type',
controlAlternatives: 'Control Component',
controlVerification: 'Validate Component',
controlType: 'Control Component',
certificationCategory: 'Certification Category',
parameterBatch: 'Parameter Batch',
releaseVersion: 'Release Version',
parameterTemplate: 'Parameter Template',
contentDescription: 'Content Description',
contentDescription: 'Description',
WhetherMergeParameters: 'Whether to merge parameters',
merge: 'Merge',
nonjoinder: 'Nonjoinder',
@@ -819,10 +819,10 @@ module.exports = {
OperationNode: 'Operation Node',
taskDataConfirmation: 'Please select the data whose list confirmation status is accepted and task confirmation status is not initiated or rejected, and the regulatory engineer and certification engineer are not empty',
selectInquiry: 'Select Inquiry',
sendBack: 'Send Back',
sendBack: 'Reject',
taskConfirmationProcess: 'Task confirmation process',
notFinished: 'To be completed',
Finished: 'Completed',
notFinished: 'Assigned',
Finished: 'Complete',
theRequirementst: 'The engineering interface person confirms the compliance requirements',
dataLoading: 'Data loading...',
Submitting: 'Submitting',
@@ -843,7 +843,7 @@ module.exports = {
technicalEvaluationResults: 'Technical Evaluation Results',
engineeringConfirmation: 'Engineering Deliverables',
feedbackFromTheEngineer: 'Engineer Comment',
completedBy: 'SdtPeople',
completedBy: 'Filled by',
completedTime: 'Completed Time',
replyFromProjectContactPerson: 'Assignee Reply',
answer: 'Answer',
@@ -884,10 +884,10 @@ module.exports = {
toTrack: 'To be tracked',
Launch: 'Launch',
maintainProgress: 'Maintain',
redSchedule: 'Red: not in conformity, and there is no acceptable scheme and schedule',
yellowSchedule: 'Yellow: non conformance / to be tracked, with acceptable scheme and schedule',
greenRequirements: 'Green: confirm that it meets or meets the current requirements',
blueUndeterminedState: 'Blue: undetermined state',
redSchedule: 'Red: unqualified without available solutions or timeline. ',
yellowSchedule: 'Yellow: unqualified and with available solutions and timeline. ',
greenRequirements: 'Green: qualified and confirmed.',
blueUndeterminedState: 'Blue: pending',
authenticationMessage: 'Homo Parameter Task',
taskRegulationComplianceTask: 'Regulation Compliance Task',
accept: 'Accept',
@@ -957,14 +957,14 @@ module.exports = {
reportNotUploaded: 'Report not uploaded',
position: 'Position',
// 认证权限状态
CollectionInitiated: 'Wait Collect',
handledInterface: 'Wait Sdt',
ReturnedPerson: 'Sdt Back',
completed: 'Wait Fill',
Filledreturn: 'Dre Back',
Submitted: 'Submit',
ReturnedEngineer: 'Cert Back',
SynchronizedLibrary: 'Sync Report',
CollectionInitiated: 'To be collected',
handledInterface: 'To be processed by eng. interface',
ReturnedPerson: 'Rejected by eng. interface',
completed: 'To be filled',
Filledreturn: 'Rejected by the applicant',
Submitted: 'Submitted',
ReturnedEngineer: 'Rejected by homo engineer',
SynchronizedLibrary: 'Synced to library',
Statusis: 'Statusis',
toHavePermission: 'To Have Permission',
and: 'And',
@@ -1050,12 +1050,12 @@ module.exports = {
NNiONumber: 'NIO Number',
ParameterNo: 'Number',
NRequired: 'Is Must',
NParameterName: 'Params Name',
NParameterName: 'Para Name',
NtechnicalField: 'Tech field',
NparameterBatch: 'Params Batch',
NareaOfResponsibility: 'Duty Territory',
NareaOfResponsibility: 'Responsible Field',
NParameterDescription: 'Description',
NcertificationCategory: 'Cert Category',
NcertificationCategory: 'Cert',
NcontrolType: 'Control Type',
NcontrolVerification: 'Control Verify',
NcontrolAlternatives: 'Control Values',
@@ -1092,7 +1092,7 @@ module.exports = {
pleaseSelectinitiatedOrRejected: 'Please select the data whose list confirmation status is not initiated or rejected',
TheEngineerAndCertification: 'The regulatory engineer and Certification Engineer of cannot be empty',
theResponsiblePersonAndDeadlineClank: 'The responsible person and deadline of cannot be blank',
bringInTheProjectInterface: 'Bring in the project interface',
bringInTheProjectInterface: 'Assign to Owner',
theCurrentListSaved: 'The current list data has been submitted and cannot be temporarily saved',
defaultTemplate: 'Default Template',
newRequestCommentListTemplate: 'New request for comment list template',
@@ -1218,8 +1218,8 @@ module.exports = {
documentTitle: 'Document Title',
bringInDocumentInformation: 'Bring in document information',
thereWhichCannotDeleted: 'There are sub headings under this title, which cannot be deleted',
sdt: 'sdt',
dre: 'dre',
sdt: 'Sdt',
dre: 'Dre',
applicableInstructionsMarketList: 'Applicable instructions of market list',
pleaseSelectTheDataCompared: 'Please select the data to be compared',
problemLabel: 'Problem label',
@@ -1235,7 +1235,24 @@ module.exports = {
addComparison: 'Add comparison',
showOrNot: 'Show or not',
comparisonMarket: 'Comparison Market',
share: 'share',
share: 'Share',
simplifiedChinese:'Simplified Chinese',
uploadOnly:'Upload only',
turnOnAutoMatch:'Turn on auto match',
Adjustareasofresponsibility:'Adjust areas of responsibility',
regulatoryTechnicalAssessment:'Regulatory Technical Assessment',
punctuationmark:'You can only enter English punctuation marks except the # sign and commas',
created: 'Created',
updated:'Updated',
OpenOne:'Open',
Privacy:'Privacy',
Paraname: 'Para Name',
Parabatch: 'Para Batch',
freeze:'Please select the configuration you want to freeze',
optionDropDownBox:'Option drop - down box',
attachmentUpload:'file',
textInput:'Text Input',
deleteNode:'If any file information exists, it will be deleted',
HaveReleased:'Have released',
forward:'Forward',
}
+17
View File
@@ -1341,4 +1341,21 @@ module.exports = {
share:'分享',
simplifiedChinese:'简体中文',
uploadOnly:'只能上传',
turnOnAutoMatch:'打开自动匹配',
Adjustareasofresponsibility:'调整责任领域',
regulatoryTechnicalAssessment:'法规技术评估',
OpenOne:'公开',
Privacy:'私密',
punctuationmark:'只能输入除#号和逗号外的英文标点符号',
created: '创建时间',
updated:'更新时间',
optionDropDownBox:'下拉选择',
attachmentUpload:'附件上传',
textInput:'文本输入',
Paraname: '参数名称',
Parabatch: '参数批次',
freeze:'请选择冻结配置',
deleteNode:'若有文件信息将同步删除',
HaveReleased:'已发布',
forward:'转发',
}
@@ -0,0 +1,300 @@
<template>
<div class='diolag-area'>
<a-spin :spinning='spinLoading'>
<a-form-model
class='tag-module'
ref='ruleForm'
:model='form'
:rules='rules'
:label-col='labelCol'
:wrapper-col='wrapperCol'
>
<a-row :gutter='24'>
<a-col :span="24">
<a-form-model-item ref='region' :label="$t('NareaOfResponsibility')" prop='dutyTerritory'>
<j-dict-select-tag class="box-input" v-model="form.dutyTerritory"
@input="handleInput('dutyTerritory')"
:placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
<div class="imports-footer">
<div class="imports-footer-wrap">
<a-button class="imports-btn imports-sub" type="primary" @click="handleSubmit">{{$t('submit')}}
</a-button>
<a-button class="imports-btn" type="primary" @click="handleCancel">{{$t('cancel')}}</a-button>
</div>
</div>
</a-spin>
<!-- <div class='drawer-bootom-button'>-->
<!-- <a-button style='margin-right: .8rem' @click='handleCancel'>{{ $t('cancel') }}</a-button>-->
<!-- <a-button @click='handleSubmit' type='primary' :loading='confirmLoading'>{{ $t('submit') }}</a-button>-->
<!-- </div>-->
<!-- 错误数据提示-->
<a-modal
:title="$t('operationFailed')"
:width="860"
v-model="visibleoperationFailed"
:maskClosable="false"
:footer="null"
@cancel='cancleoperationFailed'
:body-style="bodystyle"
>
<a-row :gutter="24">
<a-col :span="24">
<div style='font-size: 18px;margin-bottom: 20px;display: flex;justify-content: center'
class="box-title-text-index" v-for='(item,key) in NotSelectedRowKeysValue'>
<span v-html='item'></span>
<!-- <div>{{$t('NiOnumberis')}}{{ item.nioNumber }},{{$t('Statusis')}}-->
<!-- <span style='color: red'>{{ item.state }}</span>,{{$t('NoOperationPermissionForthisbutton')}}。-->
<!-- </div>-->
</div>
</a-col>
</a-row>
<div class="imports-footer">
<div class="imports-footer-wrap">
<a-button class="imports-btn" type="primary" @click="cancleoperationFailed">{{$t('cancel')}}</a-button>
</div>
</div>
</a-modal>
<JLoading :loading="textLoading">{{this.$t('pleaseWaitWhileRunning')}}</JLoading>
</div>
</template>
<script>
import { putAction, postAction, getAction, deleteAction } from '@/api/manage'
import axios from 'axios'
import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import moment from 'moment'
import eventBUs from '../../common/event'
export default {
name: 'diolagArea',
components: {},
data() {
return {
token:Vue.ls.get(ACCESS_TOKEN),
title: this.$t('add'),
total: 0,
selectedRowKeysDate: {},
loading: false,
editId: '',
visibleoperationFailed:false,
newVisible: false,
textLoading:false,
NotSelectedRowKeysValue:[],
labelCol: {
xs: { span: 24 },
sm: { span: 7 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 14 }
},
form: {},
rules: {
dutyTerritory:[
{ required: true, message: this.$t('PleaseSelect')+this.$t('NareaOfResponsibility'), trigger: 'change' }
]
},
areaTable: [],
flag: false, //表单提交标识
spinLoading: false,
confirmLoading: false,
selectedRowKeys: [],
pageNo: 1,
pageSize: 10,
pickerDate: '',
bodystyle:{}
}
},
props: {
selectedRowKeysArray: {
type: String,
default: '',
require: true
}
},
mounted() {
this.bodystyle = {
height: '480px',
overflow: 'hidden',
overflowY: 'scroll',
}
},
methods: {
handleInput(value) {
this.$nextTick(() => {
this.form = { ...this.form }
this.$refs.ruleForm.validateField([value])
})
},
handleCancel() {
this.$emit('AdjustareasofresponAll', false)
},
//保存
handleSubmit() {
this.$refs.ruleForm.validate(valid => {
if(valid){
let long = localStorage.getItem('language')
let cut = ''
if (long && long == 'zh-cn') {
this.cut = 'cn'
} else if (long && long == 'en-us') {
this.cut = 'en'
}
// let _array = []
// this.selectedRowKeysValue.forEach((item, index) => {
// _array.push(item.id)
// })
let _this = this
let param = {
paramsManifestId: this.$route.query.id,
projectId: this.$route.query.projectId,
ids: this.selectedRowKeysArray,
cut: this.cut,
dutyTerritory: this.form.dutyTerritory
}
this.textLoading = true
postAction('/params/collectManifest/updateBatchDutyTerritory', param).then((res) => {
if (res.success) {
if(res.result.length == 0){
this.visibleoperationFailed = false
this.textLoading = false
this.$message.success(this.$t('OperationSuccessful'))
this.$emit('AdjustareasofresponAll', false)
this.$emit('GetgetTableList')
}else{
this.NotSelectedRowKeysValue = res.result
this.visibleoperationFailed = true
this.textLoading = false
}
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
},
// 错误数据的弹框
cancleoperationFailed() {
this.visibleoperationFailed = false
this.$emit('AdjustareasofresponAll', false)
this.$emit('GetgetTableList')
},
}
}
</script>
<style lang='less' scoped>
@import '~@assets/less/common.less';
.box-title-text-index {
line-height: 1.4;
display: flex;
}
.diolag-area {
.table-area {
margin: 20px 0;
.action-edit {
margin-right: 10px;
}
}
.table-del {
color: red;
}
}
.drawer-bootom-button{
display: flex;
justify-content: center;
}
</style>
<style scoped>
.box-title-text {
line-height: 1.4;
display: flex;
/*align-items: center;*/
}
.title-text {
width: 114px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 48px;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.Required {
color: red;
margin-right: 4px;
}
.title-text-text {
margin-top: 9px;
}
.formAdd {
margin-bottom: 40px;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
z-index:100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
/deep/.add-input{
min-height: 135px!important;
}
</style>
<style lang='less'>
.area-module {
.ant-modal-wrap {
.ant-modal {
.ant-modal-content {
.ant-modal-footer {
text-align: center;
}
}
}
}
}
.page{
display: flex;
justify-content: flex-end;
margin-bottom: 20px;
}
</style>
@@ -650,6 +650,7 @@
item.dataValue = r.target.value
}
})
console.log(this.detailDate)
},
uploadSuccess(data) {
let attIdList = []
@@ -672,6 +673,7 @@
item.dataValue = attIdList.join(',')
}
})
this.$emit('update:detailDate', this.detailDate);
},
clickButtonToUpload(item) {
// if (item.isLock == '1') {
@@ -690,9 +692,9 @@
}
},
watch: {
detailDate(newold, oldold) {
console.log(newold, oldold, 'll')
},
// detailDate(newold, oldold) {
// console.log(newold, oldold, 'll')
// },
formInline: {
handler(newOld, oldval) {
console.log(newOld, oldval, 'll')
@@ -0,0 +1,188 @@
<template>
<div>
<a-drawer
:title="title"
:maskClosable="false"
:width="600"
placement="right"
:closable="true"
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-input-search style="margin-bottom: 8px" v-model="searchModel"
@search="onSearch"
allowClear
:placeholder="$t('NodeQuickLookup')"/>
<div class="drawer-content">
<a-tree
v-if="visibleTree"
style="margin-bottom: 60px;height: 600px"
checkable
:autoExpandParent="false"
:tree-data="gData"
@select="onSelect"
@check="checkChange"
@expand="onExpand"
:defaultExpandedKeys="defaultExpandedKeys"
>
</a-tree>
</div>
</a-spin>
<div class="drawer-bootom-button">
<a-button @click="handleCancel" type="danger" style="margin-right: 16px">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="submitLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
</div>
</template>
<script>
import { getAction, postAction } from '@/api/manage'
import eventBUs from '../../common/event'
export default {
name: 'index',
props: {
url: {
type: Object,
default: {}
},
title:{
type: String,
default:''
},
},
data() {
return {
gData: [],
searchModel: '',
autoExpandParent: true,
expandedKeys: [],
visible: false,
confirmLoading: false,
selectedKey: [],
tableKey: [],
userIds: [],
departId: '',
defaultExpandedKeys: [],
submitLoading: false,
visibleTree: false
}
},
mounted() {
},
methods: {
getPush() {
this.searchModel = ''
this.visible = true
this.visibleTree = false
this.$nextTick(() => {
this.departId = ''
this.queryDepartUserTreeList()
})
},
onSelect(selectedKeys) {
this.selectedKey = selectedKeys
},
onExpand(selectedKeys, val) {
if (this.searchModel == '' || !this.searchModel) {
if (val.expanded) {
if (this.departId == val.node.value) {
} else {
this.departId = val.node.value
this.queryDepartUserTreeList()
}
}
}
},
handleCancel() {
this.visible = false
this.visibleTree = false
},
handleSubmit() {
this.$emit('SelectedByForm',this.userIds.join(','))
},
onSearch(e) {
this.gData = []
this.departId = ''
this.visibleTree = false
if (e) {
this.getUserAndDepart()
} else {
this.queryDepartUserTreeList()
}
},
getUserAndDepart() {
getAction('sys/user/getUserAndDepart', { name: this.searchModel }).then((res) => {
this.gData = res || []
this.visibleTree = true
})
},
queryDepartUserTreeList() {
let gData = JSON.parse(JSON.stringify(this.gData))
if (gData && gData.length > 0) {
gData = JSON.stringify(gData)
} else {
gData = ''
}
this.confirmLoading = true
postAction('sys/user/queryDepartUserTreeList', {
departId: this.departId,
json: gData
}).then((res) => {
this.confirmLoading = false
if (res.success) {
this.gData = res.result
this.defaultExpandedKeys = [this.departId]
this.visibleTree = true
} else {
this.gData = []
}
})
},
checkChange(e) {
this.userIds = e
}
}
}
</script>
<style scoped>
.box-title-text {
line-height: 1.4;
display: flex;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.button-box {
margin-left: 10px;
height: 38px;
line-height: 38px;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
z-index:100;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
.drawer-content {
height: calc(100% - 60px);
overflow: auto;
}
</style>
@@ -17,9 +17,8 @@
<span class="title-text-text" :title="$t('cutoffTime')">
{{$t('cutoffTime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="legalTaskConfirmation">
<a-form-model-item class="itemModel" prop="legalTaskConfirmation" >
<a-date-picker class="box-input"
style='width: 160px'
:placeholder="$t('PleaseSelect')+$t('cutoffTime')"
@change="onChange" @ok="onOk"
format="YYYY-MM-DD"
@@ -290,21 +289,20 @@ export default {
.box-title-text {
line-height: 1.4;
display: flex;
width: 276px;
/*align-items: center;*/
}
.title-text {
width: 114px;
width: 90px;
text-align: right;
display: inline-block;
font-weight: 500;
font-weight: bold;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 48px;
}
.box-input {
@@ -325,29 +323,30 @@ export default {
}
.title-text-text {
margin-top: 9px;
margin-top: 11px;
display: inline-block;
}
.header-text {
font-size: 16px;
font-weight: bold;
margin-left: 15px;
/*border-bottom: 1px #d9d9d9 dashed;*/
height: 30px;
margin-bottom: 30px;
}
.formAdd {
margin-bottom: 40px;
/*margin-bottom: 40px;*/
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
z-index:100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
.button-text {
height: 38px;
width: calc(100% - 120px);
line-height: 38px;
background: #fff;
border-radius: 0 0 2px 2px;
}
/deep/.add-input{
min-height: 135px!important;
border: 1px #00B3BE solid;
color: #00B3BE;
}
</style>
<style lang='less'>
@@ -11,7 +11,7 @@
>
<a-row :gutter='24'>
<a-col :span="12">
<div class="box-title-text">
<div class="box-title-text" >
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('cutoffTime')">
@@ -19,7 +19,6 @@
</div>
<a-form-model-item class="itemModel" prop="legalTaskConfirmation">
<a-date-picker class="box-input"
style='width: 160px'
:placeholder="$t('PleaseSelect')+$t('cutoffTime')"
@change="onChange" @ok="onOk"
format="YYYY-MM-DD"
@@ -290,20 +289,20 @@ export default {
.box-title-text {
line-height: 1.4;
display: flex;
width: 276px;
/*align-items: center;*/
}
.title-text {
width: 114px;
width: 90px;
text-align: right;
display: inline-block;
font-weight: 500;
font-weight: bold;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 48px;
}
.box-input {
@@ -324,29 +323,30 @@ export default {
}
.title-text-text {
margin-top: 9px;
margin-top: 11px;
display: inline-block;
}
.header-text {
font-size: 16px;
font-weight: bold;
margin-left: 15px;
/*border-bottom: 1px #d9d9d9 dashed;*/
height: 30px;
margin-bottom: 30px;
}
.formAdd {
margin-bottom: 40px;
/*margin-bottom: 40px;*/
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
z-index:100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
.button-text {
height: 38px;
width: calc(100% - 120px);
line-height: 38px;
background: #fff;
border-radius: 0 0 2px 2px;
}
/deep/.add-input{
min-height: 135px!important;
border: 1px #00B3BE solid;
color: #00B3BE;
}
</style>
<style lang='less'>
@@ -40,7 +40,7 @@
:dataSource='areaTable'
:pagination='false'
:loading='loading'
:scroll='{x: 600}'
:scroll="{x: '100%',y:'calc(100vh - 130px)'}"
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'
@change='handleTableChange'>
@@ -1,7 +1,7 @@
<template>
<div>
<a-drawer
:title="$t('Push')"
:title="$t('share')"
:maskClosable="false"
:width="600"
placement="right"
@@ -46,7 +46,7 @@
<span v-if='currentPersonRole === "homo"'>
<!-- 认证工程师 -->
<span
v-if='record.state == "待发起收集" || record.state == "工程接口人退回"'>
v-if='record.state == "待发起收集" || record.state == "工程接口人退回" || record.state == "Wait Collect" || record.state == "Sdt Back"'>
<span :title='record.dataValue'
@click='ondataValueTobe(record)'>{{ (record.dataValue == null || record.dataValue == 'undefined')? '--': record.dataValue }}</span>
</span>
@@ -263,7 +263,6 @@
watch: {
currentPersonRole: {
handler: function() {
console.log(123)
this.getTableList()
},
immediate: true
@@ -281,13 +280,13 @@
},
pageOnChange(page, pageSize) {
this.pageNo = page
this.$emit('handlePreservation')
// this.$emit('handlePreservation')
this.getTableList()
},
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.$emit('handlePreservation')
// this.$emit('handlePreservation')
this.getTableList()
},
hideModal(){
@@ -32,12 +32,12 @@
<span class="Required">*</span>
<span class="title-text-text" :title="$t('personCharge')">{{$t('personCharge')}}</span>
</div>
<a-form-model-item class="itemModel" prop="personChargeName">
<a-form-model-item class="itemModel" prop="chargePersonIdName">
<PersonnelSelection
:query="{db_field_name:'personCharge',db_field_txt:$t('personCharge')}"
:query="{db_field_name:'chargePersonId',db_field_txt:$t('personCharge')}"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.personChargeName"/>
v-model="formInline.chargePersonIdName"/>
</a-form-model-item>
</div>
</a-col>
@@ -48,7 +48,8 @@
<script>
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { getAction, postAction, downloadFile } from '@/api/manage'
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
export default {
name: 'classificationMaintenanceAdd',
components: {
@@ -60,16 +61,11 @@
confirmLoading: false,
formInline: {},
rules: {
personChargeName: [
chargePersonIdName: [
{
required: true,
message: this.$t('personCharge') + this.$t('cannotEmpty'),
trigger: 'change'
},
{
max: 100,
message: this.$t('personCharge') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'change'
}
],
problemLabel: [
@@ -85,7 +81,11 @@
}
]
},
title: ''
title: '',
url: {
add: '/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/add',
edit: '/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/edit'
}
}
},
mounted() {
@@ -114,7 +114,24 @@
handleOk() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
this.confirmLoading = true
let url = ''
if (this.formInline.id) {
url = this.url.edit
} else {
url = this.url.add
}
postAction(url, this.formInline).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.confirmLoading = false
this.$emit('classificationMaintenanceAddForm')
} else {
this.confirmLoading = false
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
},
@@ -24,7 +24,7 @@
:loading="loading">
<span slot="operation" slot-scope="text,record">
<a style="margin-right: 8px" @click="edit(record)">{{$t('edit')}}</a>
<a @click="deleteData">{{$t('delete')}}</a>
<a @click="deleteData(record)">{{$t('delete')}}</a>
</span>
</a-table>
<div class="page" v-if="dataList.length > 0">
@@ -63,12 +63,12 @@
data() {
return {
url: {
list: '',
deleteOne: ''
list: '/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/page',
deleteOne: '/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/deleteBatch'
},
visible: false,
selectedRowKeys: [],
dataList: [{}],
dataList: [],
loading: false,
pageNo: 1,
pageSize: 10,
@@ -84,14 +84,16 @@
},
{
title: this.$t('problemLabel'),
dataIndex: 'title',
dataIndex: 'problemLabel',
align: 'center',
width: 240,
ellipsis: true
},
{
title: this.$t('personCharge'),
dataIndex: 'region',
dataIndex: 'chargePersonIdName',
align: 'center',
width: 240,
ellipsis: true
},
{
@@ -109,6 +111,7 @@
methods: {
getData() {
this.visible = true
this.replacePage()
},
handleCancel() {
this.visible = false
@@ -128,10 +131,10 @@
this.$confirm({
content: _this.$t('ConfirmDelete'),
onOk() {
deleteAction(_this.url.deleteOne, { id: val.id }).then((res) => {
deleteAction(_this.url.deleteOne, { ids: val.id }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
_this.replacePage()
} else {
_this.$message.warning(_this.$t('operationFailed'))
}
@@ -154,7 +157,7 @@
pageSize: this.pageSize
}
this.loading = true
postAction(this.url.list, query).then((res) => {
getAction(this.url.list, query).then((res) => {
if (res.success) {
this.dataList = res.result.records || []
this.total = res.result.total
@@ -8,8 +8,17 @@
<div class="title-text" :title="$t('applicableMarket')">
<span>{{$t('applicableMarket')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('applicableMarket')"
v-model="queryParam.applicableMarket"></a-input>
<a-select :placeholder="$t('PleaseSelect')+$t('applicableMarket')"
:disabled="false"
v-model="queryParam.applyMarket">
<a-select-option v-for="(item, key) in applyMarketList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.title ">
{{ item.title}}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
@@ -89,15 +98,25 @@
return {
queryParam: {},
conList: [],
applyMarketList: [],
pageSize: 10,
total: 0,
pageNo: 1
}
},
mounted() {
this.getApplyMarketList()
},
methods: {
getApplyMarketList() {
getAction('/problemKnowledgeBase/countryCardManageReleaseEO/getApplyMarketList', { queryFlag: 'countryCard' }).then((res) => {
if (res.success) {
this.applyMarketList = res.result || []
} else {
this.applyMarketList = []
}
})
},
searchQuery() {
},
@@ -19,8 +19,10 @@
<div class="title-text" :title="$t('applicableMarket')">
<span>{{$t('applicableMarket')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('applicableMarket')"
v-model="queryParam.applicableMarket"></a-input>
<j-dict-select-tag class="box-input" v-model="queryParam.applyMarket"
:placeholder="$t('PleaseSelect')+$t('applicableMarket')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
@@ -28,8 +30,18 @@
<div class="title-text" :title="$t('releaseStatus')">
<span>{{$t('releaseStatus')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('releaseStatus')"
v-model="queryParam.releaseStatus"></a-input>
<a-select class="box-input"
:placeholder="$t('PleaseSelect')+$t('releaseStatus')"
style="width: 100%"
v-model="queryParam.releaseStatus">
<a-select-option v-for="(item, key) in releaseStatusList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name}}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
@@ -71,11 +83,13 @@
<a class="text-operation" @click="viewClick(record)">{{$t('view')}}</a>
<a class="text-operation"
@click="subscribe(record)">
{{!record.releaseCondition || record.releaseCondition == 'draft' ? $t('release') :$t('withdraw')}}
{{!record.releaseStatus || record.releaseStatus == 'Draft' ? $t('release') :$t('withdraw')}}
</a>
<a class="text-operation"
v-if="record.createBy == userInfoQuery.username && record.releaseStatus == 'Draft'"
@click="edit(record)">{{$t('edit')}}</a>
<a class="text-operation"
v-if="record.createBy == userInfoQuery.username && record.releaseStatus == 'Draft'"
@click="deleteData(record)">{{$t('delete')}}</a>
</span>
</a-table>
@@ -96,7 +110,7 @@
</div>
</div>
<countryCardReleaseModel ref="countryCardReleaseModelRef"/>
<countryCardReleaseAdd ref="countryCardReleaseAddRef"/>
<countryCardReleaseAdd ref="countryCardReleaseAddRef" @countryCardReleaseAddForm="countryCardReleaseAddForm"/>
</div>
</template>
@@ -104,6 +118,7 @@
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
import countryCardReleaseModel from './countryCardReleaseModel'
import countryCardReleaseAdd from './countryCardReleaseAdd'
import { mapGetters } from 'vuex'
export default {
name: 'countryCardRelease',
@@ -114,27 +129,39 @@
data() {
return {
queryParam: {},
releaseStatusList: [
{
value: 'Draft',
name: this.$t('draft')
},
{
value: 'Have released',
name: this.$t('HaveReleased')
}
],
loading: false,
dataSource: [{}],
dataSource: [],
selectedRowKeysRecord: [],
total: 0,
pageSize: 10,
pageNo: 1,
url: {
list: '',
deleteBatch: ''
list: '/problemKnowledgeBase/countryCardManageReleaseEO/page',
deleteBatch: '/problemKnowledgeBase/countryCardManageReleaseEO/deleteBatch'
},
userInfoQuery: {},
selectedRowKeys: [],
columns: [
{
title: this.$t('applicableMarket'),
align: 'center',
dataIndex: 'applicableMarket',
dataIndex: 'applyMarket_dictText',
ellipsis: true
},
{
title: this.$t('releaseStatus'),
align: 'center',
dataIndex: 'releaseStatus',
dataIndex: 'releaseStatus_dictText',
ellipsis: true
},
{
@@ -149,8 +176,11 @@
},
mounted() {
document.title = 'Country Card-' + this.$t('managePublishing')
this.getList()
this.userInfoQuery = this.userInfo()
},
methods: {
...mapGetters(['userInfo']),
searchQuery() {
this.pageNo = 1
this.getList()
@@ -164,11 +194,15 @@
this.pageNo = page
this.getList()
},
SizeChange(page,pageSize) {
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.getList()
},
countryCardReleaseAddForm() {
this.pageNo = 1
this.getList()
},
getList() {
let queryParam = JSON.parse(JSON.stringify(this.queryParam))
Object.keys(queryParam).forEach(val => {
@@ -192,8 +226,9 @@
}
})
},
onSelectChange(value) {
onSelectChange(value, record) {
this.selectedRowKeys = value
this.selectedRowKeysRecord = record
},
newlyAddedClick() {
this.$refs.countryCardReleaseAddRef.add()
@@ -207,27 +242,61 @@
this.$confirm({
content: _this.$t('ConfirmBatchDeletion'),
onOk() {
let idList = JSON.parse(JSON.stringify(_this.selectedRowKeys))
getAction(_this.url.deleteBatch, { ids: idList.join(',') }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.getList()
} else {
_this.$message.warning(res.message)
let idList = []
let selectedRowKeysRecord = JSON.parse(JSON.stringify(_this.selectedRowKeysRecord))
for (let i = 0; i < selectedRowKeysRecord.length; i++) {
if (selectedRowKeysRecord[i].createBy == _this.userInfo().username &&
selectedRowKeysRecord[i].releaseStatus == 'Draft') {
idList.push(selectedRowKeysRecord[i].id)
}
})
}
if (idList.length > 0) {
deleteAction(_this.url.deleteBatch, { ids: idList.join(',') }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.getList()
} else {
_this.$message.warning(res.message)
}
})
} else {
_this.$message.warning(_this.$t('doNotHavePermissionDeleteData'))
}
}
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
edit() {
this.$refs.countryCardReleaseAddRef.edit()
edit(record) {
this.$refs.countryCardReleaseAddRef.edit(JSON.parse(JSON.stringify(record)))
},
subscribe() {
subscribe(record) {
let _this = this
this.$confirm({
content: record.releaseStatus == 'Draft' ? _this.$t('confirmRelease') : _this.$t('confirmWithdraw'),
onOk() {
let releaseCondition = ''
if (record.releaseStatus == 'Draft') {
releaseCondition = 'Have released'
} else {
releaseCondition = 'Draft'
}
let query = {
releaseStatus: releaseCondition,
ids: record.id
}
postAction('/problemKnowledgeBase/countryCardManageReleaseEO/batchUpdateReleaseStatus', query).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
} else {
_this.$message.warning(_this.$t('operationFailed'))
}
})
}
})
},
viewClick() {
let newUrl = this.$router.resolve({
@@ -9,6 +9,49 @@
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24" v-if="title == $t('newlyAdded')">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('applicableMarket')">{{$t('applicableMarket')}}</span>
</div>
<a-form-model-item class="itemModel" prop="applyMarket">
<a-select :placeholder="$t('PleaseSelect')+$t('applicableMarket')"
:disabled="false"
v-model="formInline.applyMarket">
<a-select-option v-for="(item, key) in applyMarketList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.title ">
{{ item.title}}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24" v-if="title == $t('edit')">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('applicableMarket')">{{$t('applicableMarket')}}</span>
</div>
<a-form-model-item class="itemModel">
<j-dict-select-tag class="box-input" v-model="formInline.applyMarket"
:disabled="true"
:placeholder="$t('PleaseSelect')+$t('applicableMarket')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
<div style="margin-bottom: 60px">
<a-table
:columns="columns"
@@ -18,41 +61,30 @@
:loading="loading">
<span slot="content" slot-scope="text,record,index">
<a-input class="box-input"
v-if="false"
v-model="record.problemLabel"
v-if="record.lableType == 8"
v-model="record.content"
:placeholder="$t('PleaseEnter')"/>
<a-select :placeholder="$t('PleaseSelect')"
style="width: 100%"
v-if="false"
v-model="record.projectNameId">
<a-select-option v-for="(item, key) in record.projectNameList"
v-else-if="record.lableType == 3"
v-model="record.content">
<a-select-option v-for="(item, key) in record.countryCardTempItemEOList"
:key="key"
:value="item.id">
<span style="display: inline-block;width: 100%" :title=" item.projectName ">
{{ item.projectName}}
<span style="display: inline-block;width: 100%" :title=" item.itemText ">
{{ item.itemText}}
</span>
</a-select-option>
</a-select>
<a-button type="primary" class="button-text"
@click="clickButtonToUpload('verifyDeliverableTemplate',index)">
{{ (record.verifyDeliverableTemplate === 'null' || record.verifyDeliverableTemplate === '' ||
record.verifyDeliverableTemplate == null) ? $t('clickUpload') : $t('viewUploadedFiles')
v-else-if="record.lableType == 7"
@click="clickButtonToUpload('content',index)">
{{ (record.content === 'null' || record.content === '' ||
record.content == null) ? $t('clickUpload') : $t('viewUploadedFiles')
}}
</a-button>
</span>
</a-table>
<div class="page" v-if="dataList.length > 0">
<a-pagination
:show-total="total => $t('total')+`${total}`+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
</div>
</div>
<div class="drawer-bootom-button">
@@ -76,37 +108,49 @@
data() {
return {
url: {
list: '',
deleteOne: ''
list: '/problemKnowledgeBase/countryCardTempEO/list',
deleteOne: '',
add: '/problemKnowledgeBase/countryCardManageReleaseEO/add',
edit: '/problemKnowledgeBase/countryCardManageReleaseDetailEO/editBatch'
},
title: '',
formInline: {},
rules: {
applyMarket: [
{
required: true,
message: this.$t('applicableMarket') + this.$t('cannotEmpty'),
trigger: 'change'
}
]
},
visible: false,
selectedRowKeys: [],
dataList: [{}],
loading: false,
pageNo: 1,
pageSize: 10,
total: 0,
confirmLoading: false,
index: '',
applyMarketList: [],
columns: [
{
title: this.$t('LabelName'),
dataIndex: 'LabelName',
dataIndex: 'lableName',
align: 'center',
ellipsis: true
ellipsis: true,
width: 220
},
{
title: this.$t('describe'),
dataIndex: 'describe',
dataIndex: 'description',
align: 'center',
width: 260,
ellipsis: true
},
{
title: this.$t('content'),
align: 'center',
fixed: 'right',
width: 180,
width: 260,
scopedSlots: { customRender: 'content' }
}
]
@@ -117,11 +161,32 @@
methods: {
add() {
this.visible = true
this.$nextTick(() => {
this.formInline = {}
this.$refs.ruleForm.clearValidate()
})
this.title = this.$t('newlyAdded')
this.replacePage()
this.getApplyMarketList()
},
edit() {
edit(row) {
this.visible = true
this.$nextTick(() => {
this.formInline = row
this.formInline = { ...this.formInline }
this.$refs.ruleForm.clearValidate()
})
this.title = this.$t('edit')
this.editReplacePage(row)
},
getApplyMarketList() {
getAction('/problemKnowledgeBase/countryCardManageReleaseEO/getApplyMarketList', {}).then((res) => {
if (res.success) {
this.applyMarketList = res.result || []
} else {
this.applyMarketList = []
}
})
},
clickButtonToUpload(item, index) {
this.$refs.uploadFile.perentHandleFunc()
@@ -152,31 +217,70 @@
this.visible = false
},
handleSubmit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
let url = ''
let content = []
if (this.title == this.$t('newlyAdded')) {
url = this.url.add
this.dataList.forEach(res => {
content.push({
countryCardTempId: res.id,
description: res.description,
content: res.content
})
})
} else {
url = this.url.edit
this.dataList.forEach(res => {
content.push({
countryCardTempId: res.id,
description: res.description,
content: res.content,
id: res.id
})
})
}
this.confirmLoading = true
},
onChange(page, pageSize) {
this.pageNo = page
this.replacePage()
},
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.replacePage()
let query = {
countryCardManageReleaseDetailEOList: content,
applyMarket: this.formInline.applyMarket
}
postAction(url, query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.confirmLoading = false
this.$emit('countryCardReleaseAddForm')
} else {
this.confirmLoading = false
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
},
replacePage() {
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize
}
this.loading = true
postAction(this.url.list, query).then((res) => {
getAction(this.url.list, {}).then((res) => {
if (res.success) {
this.dataList = res.result.records || []
this.total = res.result.total
this.dataList = res.result || []
this.loading = false
} else {
this.dataList = []
this.loading = false
}
})
},
editReplacePage(row) {
this.loading = true
getAction('/problemKnowledgeBase/countryCardManageReleaseDetailEO/list', { countryCardManageReleaseId: row.id }).then((res) => {
if (res.success) {
this.dataList = res.result || []
this.loading = false
} else {
this.dataList = []
this.total = 0
this.loading = false
}
})
@@ -204,21 +308,6 @@
border-radius: 0 0 2px 2px;
}
.box-title {
width: 100%;
text-align: right;
margin-bottom: 20px;
}
.operator-text {
cursor: pointer;
margin-right: 13px;
font-size: 14px;
font-weight: 400;
color: #040B29;
display: inline-block;
}
.button-text {
height: 38px;
width: 100%;
@@ -227,4 +316,45 @@
border: 1px #00B3BE solid;
color: #00B3BE;
}
.box-title-text {
line-height: 1.4;
display: flex;
}
.title-text {
width: 84px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 42px;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.title-text-text {
margin-top: 9px;
}
.Required {
color: red;
margin-right: 4px;
}
</style>
@@ -24,7 +24,12 @@
:loading="loading">
<span slot="operation" slot-scope="text,record">
<a style="margin-right: 8px" @click="edit(record)">{{$t('edit')}}</a>
<a @click="deleteData">{{$t('delete')}}</a>
<a @click="deleteData(record)">{{$t('delete')}}</a>
</span>
<span slot="lableType" slot-scope="text,record">
<span v-if="text == 3">{{$t('optionDropDownBox')}}</span>
<span v-if="text == 7">{{$t('attachmentUpload')}}</span>
<span v-if="text == 8">{{$t('textInput')}}</span>
</span>
</a-table>
<div class="page" v-if="dataList.length > 0">
@@ -51,7 +56,7 @@
</template>
<script>
import { getAction, postAction, downloadFile,deleteAction } from '@/api/manage'
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
import countryCardReleaseModelAdd from './countryCardReleaseModelAdd'
export default {
@@ -62,12 +67,12 @@
data() {
return {
url: {
list: '',
deleteOne: ''
list: '/problemKnowledgeBase/countryCardTempEO/page',
deleteOne: '/problemKnowledgeBase/countryCardTempEO/deleteBatch'
},
visible: false,
selectedRowKeys: [],
dataList: [{}],
dataList: [],
loading: false,
pageNo: 1,
pageSize: 10,
@@ -75,21 +80,22 @@
columns: [
{
title: this.$t('LabelName'),
dataIndex: 'LabelName',
dataIndex: 'lableName',
align: 'center',
ellipsis: true,
width: 200
},
{
title: this.$t('LabelType'),
dataIndex: 'LabelType',
dataIndex: 'lableType',
align: 'center',
ellipsis: true,
width: 200
width: 200,
scopedSlots: { customRender: 'lableType' }
},
{
title: this.$t('DisplayOrder'),
dataIndex: 'DisplayOrder',
dataIndex: 'orderNum',
align: 'center',
ellipsis: true,
width: 160
@@ -109,6 +115,8 @@
methods: {
getData() {
this.visible = true
this.pageNo = 1
this.replacePage()
},
handleCancel() {
this.visible = false
@@ -132,10 +140,10 @@
this.$confirm({
content: _this.$t('ConfirmDelete'),
onOk() {
deleteAction(_this.url.deleteOne, { id: val.id }).then((res) => {
deleteAction(_this.url.deleteOne, { ids: val.id }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
_this.replacePage()
} else {
_this.$message.warning(_this.$t('operationFailed'))
}
@@ -158,7 +166,7 @@
pageSize: this.pageSize
}
this.loading = true
postAction(this.url.list, query).then((res) => {
getAction(this.url.list, query).then((res) => {
if (res.success) {
this.dataList = res.result.records || []
this.total = res.result.total
@@ -18,10 +18,10 @@
<span class="title-text-text"
:title="$t('LabelName')">{{$t('LabelName')}}</span>
</div>
<a-form-model-item class="itemModel" prop="LabelName">
<a-form-model-item class="itemModel" prop="lableName">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.LabelName"
v-model="formInline.lableName"
:placeholder="$t('PleaseEnter')+$t('LabelName')"/>
</a-form-model-item>
</div>
@@ -35,20 +35,27 @@
<span class="title-text-text"
:title="$t('LabelType')">{{$t('LabelType')}}</span>
</div>
<a-form-model-item class="itemModel" prop="LabelType">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.LabelType"
:placeholder="$t('PleaseEnter')+$t('LabelType')"/>
<a-form-model-item class="itemModel" prop="lableType">
<a-select :placeholder="$t('PleaseSelect')+$t('LabelType')"
:disabled="lableTypeDisabled"
@change="lableTypeChange"
v-model="formInline.lableType">
<a-select-option v-for="(item, key) in lableTypeList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name}}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-row :gutter="24" v-if="isDisplay">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('dropDownOptions')">{{$t('dropDownOptions')}}</span>
</div>
@@ -68,10 +75,10 @@
<span class="title-text-text"
:title="$t('DisplayOrder')">{{$t('DisplayOrder')}}</span>
</div>
<a-form-model-item class="itemModel" prop="DisplayOrder">
<a-form-model-item class="itemModel" prop="orderNum">
<a-input-number class="box-input"
:disabled="disabled"
v-model="formInline.DisplayOrder"
v-model="formInline.orderNum"
:placeholder="$t('PleaseEnter')+$t('DisplayOrder')"/>
</a-form-model-item>
</div>
@@ -84,10 +91,10 @@
<span class="title-text-text"
:title="$t('associatedWebsite')">{{$t('associatedWebsite')}}</span>
</div>
<a-form-model-item class="itemModel" prop="associatedWebsite">
<a-form-model-item class="itemModel" prop="relevantUrl">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.associatedWebsite"
v-model="formInline.relevantUrl"
:placeholder="$t('PleaseEnter')+$t('associatedWebsite')"/>
</a-form-model-item>
</div>
@@ -100,11 +107,11 @@
<span class="title-text-text"
:title="$t('describe')">{{$t('describe')}}</span>
</div>
<a-form-model-item class="itemModel" prop="describe">
<a-form-model-item class="itemModel" prop="description">
<a-textarea
:placeholder="$t('PleaseEnter')+$t('describe')"
:disabled="disabled"
v-model="formInline.describe" :rows="4"/>
v-model="formInline.description" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
@@ -117,7 +124,7 @@
</template>
<script>
import { getAction, postAction, downloadFile } from '@/api/manage'
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
import optionMaintenance from './optionMaintenance'
export default {
@@ -131,41 +138,57 @@
disabled: false,
confirmLoading: false,
formInline: {},
lableTypeDisabled: false,
isDisplay: false,
lableTypeList: [
{
name: this.$t('optionDropDownBox'),
value: '3'
},
{
name: this.$t('attachmentUpload'),
value: '7'
},
{
name: this.$t('textInput'),
value: '8'
}
],
rules: {
LabelName: [
lableName: [
{
required: true,
message: this.$t('personCharge') + this.$t('cannotEmpty'),
message: this.$t('LabelName') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 100,
message: this.$t('personCharge') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
message: this.$t('LabelName') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
LabelType: [
lableType: [
{
required: true,
message: this.$t('problemLabel') + this.$t('cannotEmpty'),
message: this.$t('LabelType') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
DisplayOrder: [
orderNum: [
{
required: true,
message: this.$t('DisplayOrder') + this.$t('cannotEmpty'),
trigger: 'blur'
}
],
associatedWebsite: [
relevantUrl: [
{
max: 100,
message: this.$t('associatedWebsite') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
describe: [
description: [
{
max: 300,
message: this.$t('describe') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
@@ -173,18 +196,46 @@
}
]
},
title: ''
title: '',
dropDownOptionsId: '',
url: {
add: '/problemKnowledgeBase/countryCardTempEO/add',
edit: '/problemKnowledgeBase/countryCardTempEO/edit',
deleteOne: '/problemKnowledgeBase/countryCardTempItemEO/deleteByCountryCardTempId'
}
}
},
mounted() {
},
methods: {
lableTypeChange(event) {
if (event == 3) {
this.isDisplay = true
} else {
this.isDisplay = false
}
},
getUUID() {
var str = []
var Chars = '0123456789abcdefghijklmnopqrstuvwxyz'
for (var i = 0; i < 36; i++) {
str[i] = Chars.substr(Math.floor(Math.random() * 16), 1)
}
str[0] = str[8] = str[13] = str[18] = str[23] = '-'
return str.join('')
},
dropDownOptionsClick() {
this.$refs.optionMaintenanceRef.getData()
if (!this.dropDownOptionsId) {
this.dropDownOptionsId = this.getUUID()
}
this.$refs.optionMaintenanceRef.getData(this.dropDownOptionsId)
},
add() {
this.visible = true
this.isDisplay = false
this.title = this.$t('addLabel')
this.dropDownOptionsId = ''
this.lableTypeDisabled = false
this.$nextTick(() => {
this.formInline = {}
this.$refs.ruleForm.clearValidate()
@@ -193,8 +244,15 @@
edit(data) {
this.visible = true
this.title = this.$t('editLabel')
this.lableTypeDisabled = true
this.$nextTick(() => {
this.formInline = data
this.dropDownOptionsId = this.formInline.id
if (this.formInline.lableType == 3) {
this.isDisplay = true
} else {
this.isDisplay = false
}
this.$refs.ruleForm.clearValidate()
})
},
@@ -205,12 +263,36 @@
handleOk() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
let url = ''
if (this.formInline.id) {
url = this.url.edit
} else {
url = this.url.add
if (this.formInline.lableType == 3) {
this.formInline.id = this.dropDownOptionsId
}
}
this.confirmLoading = true
postAction(url, this.formInline).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.confirmLoading = false
this.$emit('countryCardReleaseModelAddForm')
} else {
this.confirmLoading = false
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
},
handleCancel() {
this.visible = false
if (this.formInline.lableType == 3 && !this.formInline.id) {
deleteAction(this.url.deleteOne, { countryCardTempId: this.dropDownOptionsId }).then((res) => {
})
}
}
}
}
@@ -0,0 +1,315 @@
<template>
<a-drawer
:title="$t('bringInDocumentInformation')"
:maskClosable="false"
:width="1000"
placement="right"
:closable="true"
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<div style="margin-bottom: 60px">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="12" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('standard')">
<span>{{$t('standard')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParam.serial_number"></a-input>
</div>
</a-col>
<a-col :md="12" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('title')">
<span>{{$t('title')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParam.title"></a-input>
</div>
</a-col>
<a-col :md="12" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('status')">
<span>{{$t('status')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.state"
:placeholder="$t('PleaseSelect')+$t('status')"
:type="'select'"
:triggerChange="false" :dictCode="'state'"/>
</div>
</a-col>
<span style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="12" :sm="24">
<globalAdvancedQuery ref="globalAdvancedQueryRef"
@handleSuperQuery="handleSuperQuery"
:fieldList="fieldList"/>
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<a-table
:columns="columns"
:rowKey="(record)=>JSON.stringify(record)"
:scroll="{x: 1200}"
:data-source="dataList"
:pagination="false"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:loading="loading">
</a-table>
<div class="page" v-if="dataList.length > 0">
<a-pagination
:show-total="total => $t('total')+`${total}`+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
</div>
</div>
<div class="drawer-bootom-button">
<a-button @click="handleCancel" type="danger" style="margin-right: 16px">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
</template>
<script>
import { getAction, postAction } from '@/api/manage'
import globalAdvancedQuery from '@/components/globalAdvancedQuery/index'
export default {
name: 'listAddModel',
components: {
globalAdvancedQuery
},
props: ['url'],
data() {
return {
visible: false,
queryParam: {},
confirmLoading: false,
selectedRowKeys: [],
selectedRowKeysValue: [],
columns: [
{
title: this.$t('standard'),
dataIndex: 'serial_number',
align: 'center',
ellipsis: true
},
{
title: this.$t('title'),
dataIndex: 'title',
align: 'center',
ellipsis: true
},
{
title: this.$t('zoneOfApplication'),
dataIndex: 'region',
align: 'center',
ellipsis: true
},
{
title: this.$t('ImplementationDate'),
dataIndex: 'xin1_che1_xing2_shi2_shi1_ri4_qi1',
align: 'center',
ellipsis: true
},
{
title: this.$t('vehicleInProductionDate'),
dataIndex: 'implement_time',
align: 'center',
ellipsis: true
}
],
dataList: [],
content: [],
loading: false,
pageNo: 1,
pageSize: 10,
total: 0,
fieldList: [],
queryConditionVOList: [],
bussDocument: []
}
},
mounted() {
},
methods: {
addModel(value) {
this.pageNo = 1
this.visible = true
this.queryParam = {}
this.selectedRowKeys = []
this.queryConditionVOList = []
this.replacePage()
this.queryConditionInventory()
if (value.bussDocumentLibraryId) {
this.bussDocument = value.bussDocumentLibraryId
}
},
searchQuery() {
this.pageNo = 1
this.replacePage()
},
searchReset() {
this.pageNo = 1
this.queryParam = {}
this.queryConditionVOList = []
this.$refs.globalAdvancedQueryRef.resetLine()
this.$refs.globalAdvancedQueryRef.emitCallback()
this.replacePage()
},
onChange(page, pageSize) {
this.pageNo = page
this.replacePage()
},
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.replacePage()
},
replacePage() {
let queryConditionVOList = JSON.parse(JSON.stringify(this.queryConditionVOList))
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize,
...this.queryParam,
queryConditionVOList: JSON.stringify(queryConditionVOList)
}
this.loading = true
postAction('/project/projectLawsInventoryEO/queryPageDummy', query).then((res) => {
if (res.success) {
this.dataList = res.result.records || []
if (this.bussDocument && this.bussDocument.length > 0) {
this.dataList.forEach(val => {
if (this.bussDocument.includes(val.id)) {
this.selectedRowKeys.push(JSON.stringify(val))
}
})
}
this.total = res.result.total
this.loading = false
} else {
this.dataList = []
this.total = 0
this.loading = false
}
})
},
onSelectChange(value) {
this.selectedRowKeys = value
this.content = []
this.selectedRowKeys.forEach(res => {
this.content.push(JSON.parse(res))
})
},
handleCancel() {
this.visible = false
},
handleSubmit() {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
let number = []
let id = []
this.content.forEach(res => {
id.push(res.id)
number.push(res.serial_number)
})
this.$emit('listAddModelForm', id.join(','), number.join(','))
this.visible = false
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
queryConditionInventory() {
let query = {
flag: 1
}
getAction('/project/projectLawsInventoryEO/queryConditionInventory', query).then((res) => {
if (res.success) {
this.fieldList = res.result || []
} else {
this.fieldList = []
}
})
},
handleSuperQuery(params, matchType) {
let sqp = {}
if (!params || (params && params.length == 0)) {
this.queryConditionVOList = []
this.$refs.globalAdvancedQueryRef.superQueryFlag = false
} else {
this.$refs.globalAdvancedQueryRef.superQueryFlag = true
this.queryConditionVOList = params
this.queryConditionVOList.forEach(res => {
res.type = matchType
})
}
this.replacePage()
}
}
}
</script>
<style scoped>
.page {
text-align: right;
margin-top: 20px;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
z-index: 100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
.box-title-text {
line-height: 1.4;
display: flex;
align-items: center;
margin-bottom: 10px;
}
.title-text {
width: 33px;
color: #000F16;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
margin-top: 3px;
text-align: right;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.box-input {
display: inline-block;
width: 100%;
height: 38px;
}
.box-button {
height: 38px;
}
</style>
@@ -24,7 +24,7 @@
:loading="loading">
<span slot="operation" slot-scope="text,record">
<a style="margin-right: 8px" @click="edit(record)">{{$t('edit')}}</a>
<a @click="deleteData">{{$t('delete')}}</a>
<a @click="deleteData(record)">{{$t('delete')}}</a>
</span>
</a-table>
<div class="page" v-if="dataList.length > 0">
@@ -46,7 +46,7 @@
</div>
</a-drawer>
<optionMaintenanceAdd ref="optionMaintenanceAddRef"
@classificationMaintenanceAddForm="optionMaintenanceAddForm"/>
@optionMaintenanceAddForm="optionMaintenanceAddForm"/>
</div>
</template>
@@ -62,8 +62,8 @@
data() {
return {
url: {
list: '',
deleteOne: ''
list: '/problemKnowledgeBase/countryCardTempItemEO/page',
deleteOne: '/problemKnowledgeBase/countryCardTempItemEO/deleteBatch'
},
visible: false,
selectedRowKeys: [],
@@ -72,23 +72,27 @@
pageNo: 1,
pageSize: 10,
total: 0,
dataId: '',
columns: [
{
title: this.$t('name'),
dataIndex: 'name',
dataIndex: 'itemText',
align: 'center',
width: 200,
ellipsis: true
},
{
title: this.$t('enName'),
dataIndex: 'enName',
align: 'center',
width: 200,
ellipsis: true
},
{
title: this.$t('describe'),
dataIndex: 'describe',
dataIndex: 'description',
align: 'center',
width: 260,
ellipsis: true
},
{
@@ -104,8 +108,11 @@
mounted() {
},
methods: {
getData() {
getData(id) {
this.dataId = id
this.pageNo = 1
this.visible = true
this.replacePage()
},
handleCancel() {
this.visible = false
@@ -115,9 +122,10 @@
this.replacePage()
},
addLabelClick() {
this.$refs.optionMaintenanceAddRef.add()
this.$refs.optionMaintenanceAddRef.add(this.dataId)
},
edit(val) {
val.dataId = this.dataId
this.$refs.optionMaintenanceAddRef.edit(JSON.parse(JSON.stringify(val)))
},
deleteData(val) {
@@ -125,10 +133,10 @@
this.$confirm({
content: _this.$t('ConfirmDelete'),
onOk() {
deleteAction(_this.url.deleteOne, { id: val.id }).then((res) => {
deleteAction(_this.url.deleteOne, { ids: val.id }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
_this.replacePage()
} else {
_this.$message.warning(_this.$t('operationFailed'))
}
@@ -148,10 +156,11 @@
replacePage() {
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize
pageSize: this.pageSize,
countryCardTempId: this.dataId
}
this.loading = true
postAction(this.url.list, query).then((res) => {
getAction(this.url.list, query).then((res) => {
if (res.success) {
this.dataList = res.result.records || []
this.total = res.result.total
@@ -17,9 +17,9 @@
<span class="title-text-text"
:title="$t('name')">{{$t('name')}}</span>
</div>
<a-form-model-item class="itemModel" prop="name">
<a-form-model-item class="itemModel" prop="itemText">
<a-input class="box-input"
v-model="formInline.name"
v-model.trim="formInline.itemText"
:placeholder="$t('PleaseEnter')+$t('name')"/>
</a-form-model-item>
</div>
@@ -35,28 +35,28 @@
</div>
<a-form-model-item class="itemModel" prop="enName">
<a-input class="box-input"
v-model="formInline.enName"
v-model.trim="formInline.enName"
:placeholder="$t('PleaseEnter')+$t('enName')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('DisplayOrder')">{{$t('DisplayOrder')}}</span>
</div>
<a-form-model-item class="itemModel" prop="DisplayOrder">
<a-input-number class="box-input"
v-model="formInline.DisplayOrder"
:placeholder="$t('PleaseEnter')+$t('DisplayOrder')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<!-- <a-row :gutter="24">-->
<!-- <a-col :span="24">-->
<!-- <div class="box-title-text">-->
<!-- <div class="title-text">-->
<!-- <span class="Required">*</span>-->
<!-- <span class="title-text-text"-->
<!-- :title="$t('DisplayOrder')">{{$t('DisplayOrder')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" prop="DisplayOrder">-->
<!-- <a-input-number class="box-input"-->
<!-- v-model="formInline.DisplayOrder"-->
<!-- :placeholder="$t('PleaseEnter')+$t('DisplayOrder')"/>-->
<!-- </a-form-model-item>-->
<!-- </div>-->
<!-- </a-col>-->
<!-- </a-row>-->
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
@@ -64,11 +64,11 @@
<span class="title-text-text"
:title="$t('describe')">{{$t('describe')}}</span>
</div>
<a-form-model-item class="itemModel" prop="describe">
<a-form-model-item class="itemModel" prop="description">
<a-textarea
:placeholder="$t('PleaseEnter')+$t('describe')"
:disabled="disabled"
v-model="formInline.describe" :rows="4"/>
v-model.trim="formInline.description" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
@@ -78,7 +78,7 @@
</template>
<script>
import { getAction, postAction, downloadFile } from '@/api/manage'
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
export default {
name: 'optionMaintenanceAdd',
@@ -88,8 +88,9 @@
confirmLoading: false,
formInline: {},
disabled: false,
dataId: '',
rules: {
name: [
itemText: [
{
required: true,
message: this.$t('name') + this.$t('cannotEmpty'),
@@ -113,14 +114,14 @@
trigger: 'blur'
}
],
DisplayOrder: [
{
required: true,
message: this.$t('DisplayOrder') + this.$t('cannotEmpty'),
trigger: 'blur'
}
],
describe: [
// DisplayOrder: [
// {
// required: true,
// message: this.$t('DisplayOrder') + this.$t('cannotEmpty'),
// trigger: 'blur'
// }
// ],
description: [
{
max: 300,
message: this.$t('describe') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
@@ -128,21 +129,27 @@
}
]
},
title: ''
title: '',
url: {
add: '/problemKnowledgeBase/countryCardTempItemEO/add',
edit: '/problemKnowledgeBase/countryCardTempItemEO/edit'
}
}
},
mounted() {
},
methods: {
add() {
add(id) {
this.visible = true
this.title = this.$t('newlyAdded')
this.$nextTick(() => {
this.formInline = {}
this.$refs.ruleForm.clearValidate()
})
this.dataId = id
},
edit(data) {
this.dataId = data.id
this.visible = true
this.title = this.$t('edit')
this.$nextTick(() => {
@@ -157,7 +164,29 @@
handleOk() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
let url = ''
let Action
if (this.formInline.id) {
url = this.url.edit
Action = putAction
} else {
url = this.url.add
Action = postAction
}
if (!this.formInline.id) {
this.formInline.countryCardTempId = this.dataId
}
Action(url, this.formInline).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.confirmLoading = false
this.$emit('optionMaintenanceAddForm')
} else {
this.confirmLoading = false
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
},
@@ -3,7 +3,7 @@
<div class="doc-detail-wrap">
<div class="doc-detail-header" style="position: fixed;top: 0">
<div class="doc-detail-title">
<span style="line-height: 66px;display: inline-block;float: left">
<span style="line-height: 66px;display: inline-block;float: left;cursor: pointer" @click="backClick">
<a-icon type="arrow-left" style="margin-right: 6px;"/>
</span>
{{$t('newlyAdded')}}
@@ -19,30 +19,29 @@
<span class="Required">*</span>
<span class="title-text-text" :title="$t('displayPermission')">{{$t('displayPermission')}}</span>
</div>
<a-form-model-item class="itemModel" prop="projectNameId">
<a-form-model-item class="itemModel" prop="showPermissions">
<a-select :placeholder="$t('PleaseSelect')+$t('displayPermission')"
@change="projectNameChange"
v-model="formInline.projectNameId">
@change="showPermissionsChange"
v-model="formInline.showPermissions">
<a-select-option v-for="(item, key) in projectNameList"
:key="key"
:value="item.id">
<span style="display: inline-block;width: 100%" :title=" item.projectName ">
{{ item.projectName}}
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name}}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
<a-col :span="8">
<a-col :span="8" v-if="isDisplay">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('authorizedUser')">{{$t('authorizedUser')}}</span>
</div>
<a-form-model-item class="itemModel" prop="yearNameId">
<a-form-model-item class="itemModel" prop="studioEngineerName">
<PersonnelSelection :query="{db_field_name:'studioEngineer',db_field_txt:$t('authorizedUser')}"
:isSingleChoice="true"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.studioEngineerName"/>
@@ -57,7 +56,7 @@
<span class="Required">*</span>
<span class="title-text-text" :title="$t('title')">{{$t('title')}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="title">
<a-form-model-item class="itemModel" prop="title">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.title"
@@ -72,13 +71,17 @@
<span class="title-text-text"
:title="$t('problemClassification')">{{$t('problemClassification')}}</span>
</div>
<a-form-model-item class="itemModel" prop="projectStatus">
<j-dict-select-tag class="box-input" v-model="formInline.projectStatus"
:disabled="disabled"
@input="handleInput('projectStatus')"
:placeholder="$t('PleaseSelect')+$t('problemClassification')"
:type="'select'"
:triggerChange="false" :dictCode="'project_status'"/>
<a-form-model-item class="itemModel" prop="problemType">
<a-select :placeholder="$t('PleaseSelect')+$t('problemClassification')"
v-model="formInline.problemType">
<a-select-option v-for="(item, key) in problemTypeList"
:key="key"
:value="item.id">
<span style="display: inline-block;width: 100%" :title="item.problemLabel ">
{{item.problemLabel}}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
@@ -88,13 +91,13 @@
<span class="Required">*</span>
<span class="title-text-text" :title="$t('market')">{{$t('market')}}</span>
</div>
<a-form-model-item class="itemModel" prop="projectStatus">
<j-dict-select-tag class="box-input" v-model="formInline.projectStatus"
<a-form-model-item class="itemModel" prop="targetMarket">
<j-dict-select-tag class="box-input" v-model="formInline.targetMarket"
:disabled="disabled"
@input="handleInput('projectStatus')"
@input="handleInput('targetMarket')"
:placeholder="$t('PleaseSelect')+$t('market')"
:type="'select'"
:triggerChange="false" :dictCode="'project_status'"/>
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item>
</div>
</a-col>
@@ -105,10 +108,10 @@
<div class="title-text">
<span class="title-text-text" :title="$t('standardNo')">{{$t('standardNo')}}</span>
</div>
<a-form-model-item class="itemModel" prop="vehiclePlatform">
<a-form-model-item class="itemModel" prop="standNumber">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.vehiclePlatform"
:disabled="true"
v-model="formInline.standNumber"
:placeholder="$t('PleaseEnter')+$t('standardNo')"/>
</a-form-model-item>
</div>
@@ -150,10 +153,10 @@
</div>
<a-form-model-item class="itemModel" prop="prehomoDeliverableTemplate">
<a-button type="primary" class="button-text"
@click="clickButtonToUpload('enclosure')">
{{ (formInline.enclosure === 'null' || formInline.enclosure === ''
@click="clickButtonToUpload('accessoryFile')">
{{ (formInline.accessoryFile === 'null' || formInline.accessoryFile === ''
||
formInline.enclosure == null) ? $t('clickUpload') : $t('viewUploadedFiles')
formInline.accessoryFile == null) ? $t('clickUpload') : $t('viewUploadedFiles')
}}
</a-button>
</a-form-model-item>
@@ -161,9 +164,14 @@
</a-col>
</a-row>
</a-form-model>
<div class="submit-button">
<a-button class="box-button" type="primary" @click="submit">{{$t('submit')}}</a-button>
</div>
</div>
</div>
</div>
<JLoading :loading="loading">{{$t('pleaseWaitWhileRunning')}}</JLoading>
<listAddModel ref="listAddModelRef" @listAddModelForm="listAddModelForm"/>
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"/>
</div>
</template>
@@ -175,6 +183,7 @@
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import listAddModel from './listAddModel'
import { quillEditor } from 'vue-quill-editor'
export default {
@@ -182,14 +191,72 @@
components: {
PersonnelSelection,
uploadFile,
quillEditor
quillEditor,
listAddModel
},
data() {
return {
formInline: {},
rules: {},
loading: false,
problemTypeList: [],
rules: {
showPermissions: [
{
required: true,
message: this.$t('displayPermission') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
studioEngineerName: [
{
required: true,
message: this.$t('authorizedUser') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
title: [
{
required: true,
message: this.$t('title') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 100,
message: this.$t('title') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
problemType: [
{
required: true,
message: this.$t('problemClassification') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
targetMarket: [
{
required: true,
message: this.$t('market') + this.$t('cannotEmpty'),
trigger: 'change'
}
]
},
url: {
add: '/problemKnowledgeBase/problemKnowledgeBaseEO/add',
edit: '/problemKnowledgeBase/problemKnowledgeBaseEO/edit'
},
isDisplay: false,
disabled: false,
projectNameList: [],
projectNameList: [
{
value: 'Open',
name: this.$t('OpenOne')
},
{
value: 'Privacy',
name: this.$t('Privacy')
}
],
content: '<h2>I am Example</h2>',
editorOption: {
// Some Quill options...
@@ -203,34 +270,102 @@
},
mounted() {
document.title = this.$t('problemKnowledgeBase') + this.$t('newlyAdded')
this.getBase()
if (this.$route.query.id) {
this.queryById()
}
},
methods: {
getBase() {
getAction('/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/list', {}).then((res) => {
if (res.success) {
this.problemTypeList = res.result || []
} else {
this.problemTypeList = []
}
})
},
queryById() {
let query = {
id: this.$route.query.id
}
getAction('/problemKnowledgeBase/problemKnowledgeBaseEO/queryById', query).then((res) => {
if (res.success) {
this.formInline = res.result || {}
if (this.formInline.showPermissions == 'Privacy') {
this.isDisplay = true
if (this.formInline.permissionUserList && this.formInline.permissionUserList.length > 0) {
let userId = []
let userName = []
this.formInline.permissionUserList.forEach(val => {
userId.push(val.userId)
userName.push(val.userName)
})
this.formInline.studioEngineerName = userName.join(',')
this.formInline.studioEngineer = userId.join(',')
}
} else {
this.isDisplay = false
}
this.formInline = { ...this.formInline }
} else {
this.formInline = {}
}
})
},
backClick() {
this.$router.push({
path: '/problemknowledgeBase'
})
}
,
showPermissionsChange(event) {
if (event == 'Open') {
this.isDisplay = false
} else {
this.isDisplay = true
}
}
,
onEditorBlur(quill) {
console.log('editor blur!', quill)
},
}
,
onEditorFocus(quill) {
console.log('editor focus!', quill)
},
}
,
onEditorReady(quill) {
console.log('editor ready!', quill)
},
}
,
onEditorChange({ quill, html, text }) {
console.log('editor change!', quill, html, text)
this.content = html
},
this.formInline.content = html
}
,
PersonnelSelectionChange(value, id) {
this.formInline[value] = id
this.formInline = { ...this.formInline }
},
}
,
handleInput(value) {
this.$nextTick(() => {
this.formInline = { ...this.formInline }
this.$refs.ruleForm.validateField([value])
})
},
}
,
bringInDocumentInformationClick() {
},
this.$refs.listAddModelRef.addModel(this.formInline)
}
,
listAddModelForm(id, number) {
this.formInline.standNumber = number
this.formInline.bussDocumentLibraryId = id
this.formInline = { ...this.formInline }
}
,
clickButtonToUpload(item) {
this.$refs.uploadFile.perentHandleFunc()
this.$refs.uploadFile.visible = true
@@ -242,7 +377,8 @@
this.$refs.uploadFile.perentHandleFunc()
}
})
},
}
,
/** 上传文件的回调 */
uploadSuccess(data) {
let attIdList = []
@@ -255,6 +391,52 @@
this.formInline[this.uploadName] = attIdList.join(',')
this.formInline = { ...this.formInline }
}
,
submit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
let formInline = JSON.parse(JSON.stringify(this.formInline))
this.loading = true
this.confirmLoading = true
let url = ''
let Action
if (this.formInline.id) {
url = this.url.edit
Action = putAction
} else {
url = this.url.add
Action = postAction
}
formInline.permissionUserList = []
if (formInline.showPermissions == 'Privacy') {
let studioEngineer = formInline.studioEngineer.split(',')
studioEngineer.forEach(res => {
formInline.permissionUserList.push({
userId: res
})
})
}
Action(url, formInline).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.loading = false
if (this.$route.query.id) {
this.$router.push({
path: '/problemKnowledgeBaseRelease'
})
} else {
this.$router.push({
path: '/problemknowledgeBase'
})
}
} else {
this.loading = false
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
}
}
}
</script>
@@ -381,4 +563,13 @@
.box-button {
height: 38px;
}
.submit-button {
width: 100%;
margin-top: 20px;
text-align: right;
padding: 0 32px;
box-sizing: border-box;
}
</style>
@@ -6,7 +6,7 @@
<span>{{$t('searchContent')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('searchContent')"
v-model="searchContent"></a-input>
v-model="searchStr"></a-input>
<a-button class="box-button" type="primary" @click="onSearch">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}</a-button>
</div>
@@ -36,7 +36,7 @@
</div>
</div>
</div>
<div v-if="conList.length > 0" style="margin-top: 58px;height: calc(100vh - 260px);overflow:auto;">
<div v-if="conList.length > 0" style="margin-top: 16px;height: calc(100vh - 260px);overflow:auto;">
<li v-for="(item,index) in conList" :key="item.id">
<div style="margin-bottom: 10px;position: relative">
<!-- <a-checkbox :value="item.id" class="checkbox-left"></a-checkbox>-->
@@ -50,13 +50,8 @@
<span class="text-header-text" style="cursor: pointer" v-html="item.title"></span>
</a-tooltip>
</div>
<a-tooltip placement="topLeft" :mouseEnterDelay="0.5">
<template slot="title">
<span v-html="item.content"></span>
</template>
<div class="text-content" v-html="item.content">
</div>
</a-tooltip>
</div>
</div>
</li>
@@ -76,6 +71,7 @@
@showSizeChange="SizeChange"
/>
</div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
<classificationMaintenanceModel ref="classificationMaintenanceModelRef"/>
</div>
</template>
@@ -95,11 +91,12 @@
checkboxText: [],
conList: [],
total: 0,
loading: false,
pageSize: 10,
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
pageNo: 1,
url: {
getInfoList: 'search/document/getFullTextInfoList'
getInfoList: '/problemKnowledgeBase/problemKnowledgeBaseEO/page'
}
}
},
@@ -108,10 +105,13 @@
},
methods: {
onSearch() {
this.pageNo = 1
this.getList()
},
ResetSearch() {
this.searchStr = ''
this.pageNo = 1
this.getList()
},
classificationClick() {
this.$refs.classificationMaintenanceModelRef.getData()
@@ -124,11 +124,14 @@
window.open(newUrl.href, '_blank')
},
newlyAddedClick() {
let newUrl = this.$router.resolve({
path: '/problemKnowledgeBaseAdd',
query: {}
this.$router.push({
path: '/problemKnowledgeBaseAdd'
})
window.open(newUrl.href, '_blank')
// let newUrl = this.$router.resolve({
// path: '/problemKnowledgeBaseAdd',
// query: {}
// })
// window.open(newUrl.href, '_blank')
},
pageOnChange(page, pageSize) {
this.pageNo = page
@@ -142,21 +145,27 @@
getList() {
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize
pageSize: this.pageSize,
searchStr: this.searchStr
}
postAction(this.url.getInfoList, query).then((res) => {
this.loading = true
getAction(this.url.getInfoList, query).then((res) => {
if (res.success) {
this.conList = res.result.records
this.total = res.result.total
this.loading = false
} else {
this.conList = []
this.loading = false
}
})
},
titleClick(item) {
let newUrl = this.$router.resolve({
path: '/problemKnowledgeBaseView',
query: {}
query: {
id: item.id
}
})
window.open(newUrl.href, '_blank')
}
@@ -207,8 +216,7 @@
}
.box-content-left {
width: 60%;
float: left;
width: 100%;
font-size: 14px;
font-weight: 400;
color: #040B29;
@@ -216,8 +224,7 @@
}
.box-content-right {
width: 40%;
float: left;
width: 100%;
display: inline-block;
text-align: right;
margin-top: 20px;
@@ -11,6 +11,17 @@
</div>
<div style="padding-top: 68px;background: #fff">
<div class="detail-content" style="padding: 30px">
<div class="search-detail-wrap">
<div class="box-title-text">
<div class="title-text" :title="$t('searchContent')">
<span>{{$t('searchContent')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('searchContent')"
v-model="searchStr"></a-input>
<a-button class="box-button" type="primary" @click="onSearch">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}</a-button>
</div>
</div>
<div v-if="conList.length > 0" style="height: calc(100vh - 180px);overflow:auto;">
<div v-for="(item,index) in conList" :key="item.id">
<div style="margin-bottom: 10px;position: relative;overflow: hidden">
@@ -25,44 +36,41 @@
<span class="text-header-text" style="cursor: pointer" v-html="item.title"></span>
</a-tooltip>
</div>
<a-tooltip placement="topLeft" :mouseEnterDelay="0.5">
<template slot="title">
<span v-html="item.content"></span>
</template>
<div class="text-content" v-html="item.content">
</div>
</a-tooltip>
</div>
<div class="text-text-right-text">
<a style="margin-right: 10px" @click="edit(item)">{{$t('edit')}}</a>
<a @click="deleteData(item)">{{$t('delete')}}</a>
<div class="text-content" v-html="item.content">
</div>
<div class="text-text-right-text">
<a style="margin-right: 10px" @click="edit(item)">{{$t('edit')}}</a>
<a @click="deleteData(item)">{{$t('delete')}}</a>
</div>
</div>
</div>
</div>
</div>
<div class="noData" v-else>
暂无数据
</div>
<div class="page" v-if="conList.length > 0">
<a-pagination
:show-total="total => $t('total')+` ${total} `+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
<div class="noData" v-else>
暂无数据
</div>
<div class="page" v-if="conList.length > 0">
<a-pagination
:show-total="total => $t('total')+` ${total} `+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
</div>
</div>
</div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
</div>
</div>
</div>
</template>
<script>
import { getAction, postAction, putAction } from '@/api/manage'
import { getAction, postAction, putAction, deleteAction } from '@/api/manage'
import { mapGetters } from 'vuex'
export default {
name: 'problemKnowledgeBaseRelease',
@@ -72,11 +80,13 @@
conList: [],
total: 0,
pageSize: 10,
searchStr: '',
loading: false,
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
pageNo: 1,
url: {
getInfoList: 'search/document/getFullTextInfoList',
deleteBatch: ''
getInfoList: '/problemKnowledgeBase/problemKnowledgeBaseEO/page',
deleteBatch: '/problemKnowledgeBase/problemKnowledgeBaseEO/deleteBatch'
}
}
},
@@ -84,6 +94,7 @@
this.getList()
},
methods: {
...mapGetters(['userInfo']),
pageOnChange(page, pageSize) {
this.pageNo = page
this.getList()
@@ -93,17 +104,31 @@
this.pageSize = pageSize
this.getList()
},
onSearch() {
this.pageNo = 1
this.getList()
},
ResetSearch() {
this.searchStr = ''
this.pageNo = 1
this.getList()
},
getList() {
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize
pageSize: this.pageSize,
createBy: this.userInfo().username,
searchStr: this.searchStr
}
postAction(this.url.getInfoList, query).then((res) => {
this.loading = true
getAction(this.url.getInfoList, query).then((res) => {
if (res.success) {
this.conList = res.result.records
this.total = res.result.total
this.loading = false
} else {
this.conList = []
this.loading = false
}
})
},
@@ -131,7 +156,7 @@
this.$confirm({
content: _this.$t('ConfirmDelete'),
onOk() {
getAction(_this.url.deleteBatch, { ids: val.id }).then((res) => {
deleteAction(_this.url.deleteBatch, { ids: val.id }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
@@ -291,4 +316,45 @@
text-align: center;
line-height: 10;
}
.search-detail-wrap {
width: 100%;
margin: 0 auto;
}
.box-title-text {
line-height: 1.4;
display: flex;
align-items: center;
margin-bottom: 10px;
text-align: center;
justify-content: center;
}
.title-text {
width: 110px;
color: #000F16;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
margin-top: 3px;
text-align: right;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.box-input {
/*min-width: 200px;*/
display: inline-block;
width: 50%;
height: 38px;
margin-top: 2px;
margin-right: 16px;
}
.box-button {
height: 38px;
}
</style>
@@ -8,6 +8,12 @@
</span>
{{$t('applicableInstructionsMarketList')}}
</div>
<div class="doc-detail-right">
<div @click="forwardClick" class="operator-text-text" :title="$t('forward')">
<a-icon type="reload"/>
{{$t('forward')}}
</div>
</div>
</div>
<div style="padding-top: 68px;background: #fff">
<div class="detail-content" style="padding: 24px">
@@ -21,30 +27,23 @@
<span class="text-field-right"
:title="queryForm[item.value]" v-else>
{{queryForm[item.value]}}fdgdgdfg
{{queryForm[item.value]}}
</span>
</div>
</div>
<div class="content">
sfdsfdsf的防控流感的飞机过来看的结果东法兰克感觉地方给了地方国家的分开两个就地方孤苦伶仃附件给领导反馈
独守空房了就收到付款了的角色发看来都是风景但是考虑附件第三方库老师积分迪斯科浪费绝对是分类的课时费
是反抗拉萨的飞机罗斯福就点十六分就但是发
迪斯科浪费电视机分厘卡的设计分类的水库附近的说服力但是积分的历史房价多少发了多少给京东方管理看豆腐干豆腐干看
a fjsd fklsdjfk s是否考虑技术的反抗类毒素就发的撒开了房间但是发离开打扫房间是开了房间都是老师JFK了的身份圣诞快乐就是的反抗类毒素解放迪斯科浪费是
考虑到房价打开拉萨附近分离技术的领导是否打开拉萨范德萨发了开始就发的考虑是否就但是考虑发及代理商开发就十分大师傅看
</div>
<div class="content" v-html="queryForm.content"></div>
<div class="content-icon">
<span class="content-icon-text">
<a-icon class="icon" type="eye"/>
<span>123456</span>
<span>{{this.queryForm.browsingHistoryCount}}</span>
</span>
<span class="content-icon-text">
<a-icon class="icon" type="like"/>
<span>123456</span>
<span class="content-icon-text" @click="likeClick()">
<a-icon class="icon" :class="{'icon-active':this.isPraise}" type="like"/>
<span>{{this.queryForm.praiseCount}}</span>
</span>
<span class="content-icon-text">
<a-icon class="icon" type="star"/>
<span>123456</span>
<span class="content-icon-text" @click="starClick()">
<a-icon class="icon" :class="{'icon-active':this.isCollect}" type="star"/>
<span>{{this.queryForm.collectCount}}</span>
</span>
</div>
<div class="box-text">
@@ -56,9 +55,9 @@
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<a-form-model-item class="itemModel" prop="approvalOpinion">
<a-form-model-item class="itemModel" prop="commentContent">
<a-textarea :placeholder="$t('pleaseEnter')+$t('comment')"
v-model="formInline.approvalOpinion"
v-model.trim="formInline.commentContent"
:rows="4"/>
</a-form-model-item>
</div>
@@ -66,93 +65,207 @@
</a-row>
</a-form-model>
<div class="content-button">
<a-button class="header-btn submit" @click="release" type="primary">{{$t('release')}}</a-button>
<a-button class="header-btn submit" :loading="loading" @click="release" type="primary">{{$t('release')}}
</a-button>
</div>
<div>
<div v-for="(item,index) in releaseList">
<div class="box-text">
<div class="header-text">
<span style="margin-right: 20px">张三</span>
2022-12-12 10:10:12
<span style="margin-right: 20px">{{item.createBy}}</span>
{{item.createTime}}
</div>
</div>
<div class="content">
sfdsfdsf的防控流感的飞机过来看的结果东法兰克感觉地方给了地方国家的分开两个就地方孤苦伶仃附件给领导反馈
独守空房了就收到付款了的角色发看来都是风景但是考虑附件第三方库老师积分迪斯科浪费绝对是分类的课时费
是反抗拉萨的飞机罗斯福就点十六分就但是发
迪斯科浪费电视机分厘卡的设计分类的水库附近的说服力但是积分的历史房价多少发了多少给京东方管理看豆腐干豆腐干看
a fjsd fklsdjfk s是否考虑技术的反抗类毒素就发的撒开了房间但是发离开打扫房间是开了房间都是老师JFK了的身份圣诞快乐就是的反抗类毒素解放迪斯科浪费是
考虑到房价打开拉萨附近分离技术的领导是否打开拉萨范德萨发了开始就发的考虑是否就但是考虑发及代理商开发就十分大师傅看
</div>
<div class="box-text">
<div class="header-text">
<span style="margin-right: 20px">张三</span>
2022-12-12 10:10:12
</div>
</div>
<div class="content">
sfdsfdsf的防控流感的飞机过来看的结果东法兰克感觉地方给了地方国家的分开两个就地方孤苦伶仃附件给领导反馈
独守空房了就收到付款了的角色发看来都是风景但是考虑附件第三方库老师积分迪斯科浪费绝对是分类的课时费
是反抗拉萨的飞机罗斯福就点十六分就但是发
迪斯科浪费电视机分厘卡的设计分类的水库附近的说服力但是积分的历史房价多少发了多少给京东方管理看豆腐干豆腐干看
a fjsd fklsdjfk s是否考虑技术的反抗类毒素就发的撒开了房间但是发离开打扫房间是开了房间都是老师JFK了的身份圣诞快乐就是的反抗类毒素解放迪斯科浪费是
考虑到房价打开拉萨附近分离技术的领导是否打开拉萨范德萨发了开始就发的考虑是否就但是考虑发及代理商开发就十分大师傅看
{{item.commentContent}}
</div>
</div>
</div>
</div>
</div>
<viewFileModel ref="viewFileModelRef"/>
<SelectedBy ref="SelectedByRef" :title="$t('forward')" @SelectedByForm="SelectedByForm"></SelectedBy>
</div>
</template>
<script>
import viewFileModel from '@/components/viewFileModel/index'
import { getAction, postAction, downloadFile } from '@/api/manage'
import SelectedBy from '@/components/SelectedBy/index'
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
import { mapGetters } from 'vuex'
export default {
name: 'problemKnowledgeBaseView',
components: {
viewFileModel
viewFileModel,
SelectedBy
},
data() {
return {
standardContentList: [
{
title: this.$t('problemClassification'),
value: ''
value: 'problemType'
},
{
title: this.$t('market'),
value: ''
value: 'targetMarket'
},
{
title: this.$t('standardNo'),
value: ''
value: 'standNumber'
},
{
title: this.$t('standardName'),
value: ''
value: 'title'
},
{
title: this.$t('enclosure'),
type: 2,
value: ''
value: 'accessoryFile'
}
],
queryForm: {},
formInline: {},
rules: {}
rules: {
commentContent: [
{
max: 300,
message: this.$t('comment') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
]
},
isPraise: false,
isCollect: false,
loading: false,
releaseList: []
}
},
mounted() {
document.title = this.$t('applicableInstructionsMarketList')
this.viewAdd()
this.queryById()
this.releaseData()
},
methods: {
...mapGetters(['userInfo']),
SelectedByForm() {
},
queryById() {
let query = {
id: this.$route.query.id
}
getAction('/problemKnowledgeBase/problemKnowledgeBaseEO/queryById', query).then((res) => {
if (res.success) {
this.queryForm = res.result || {}
this.queryForm = { ...this.queryForm }
if (this.formInline.showPermissions == 'Privacy') {
this.isDisplay = true
} else {
this.isDisplay = false
}
if (this.queryForm.praiseEO && this.queryForm.praiseEO.praiseStatus == 'Praise') {
this.isPraise = true
} else {
this.isPraise = false
}
if (this.queryForm.collectEO && this.queryForm.collectEO.collectStatus == 'Collect') {
this.isCollect = true
} else {
this.isCollect = false
}
} else {
this.formInline = {}
}
})
},
viewAdd() {
let query = {
problemKnowledgeBaseId: this.$route.query.id,
browsingUserId: this.userInfo().id
}
postAction('/problemKnowledgeBase/problemKnowledgeBaseBrowsingHistoryEO/add', query).then((res) => {
})
},
likeClick() {
let praiseStatus = ''
this.isPraise = !this.isPraise
if (this.isPraise) {
praiseStatus = 'Praise'
this.queryForm.praiseCount = this.queryForm.praiseCount + 1
} else {
praiseStatus = 'Cancel praise'
this.queryForm.praiseCount = this.queryForm.praiseCount - 1
}
let query = {
problemKnowledgeBaseId: this.$route.query.id,
praiseUserId: this.userInfo().id,
praiseStatus: praiseStatus,
id: this.queryForm.praiseEO ? this.queryForm.praiseEO.id : undefined
}
putAction('/problemKnowledgeBase/problemKnowledgeBasePraiseEO/edit', query).then((res) => {
})
},
starClick() {
let collectStatus = ''
this.isCollect = !this.isCollect
if (this.isCollect) {
collectStatus = 'Collect'
this.queryForm.collectCount = this.queryForm.collectCount + 1
} else {
collectStatus = 'Cancel Collect'
this.queryForm.collectCount = this.queryForm.collectCount - 1
}
let query = {
problemKnowledgeBaseId: this.$route.query.id,
collectUserId: this.userInfo().id,
collectStatus: collectStatus,
id: this.queryForm.collectEO ? this.queryForm.collectEO.id : undefined
}
putAction('/problemKnowledgeBase/problemKnowledgeBaseCollectEO/edit', query).then((res) => {
})
},
clickButtonToUpload(item) {
this.$refs.viewFileModelRef.clickButtonToUpload(item)
},
releaseData() {
let query = {
problemKnowledgeBaseId: this.$route.query.id
}
getAction('/problemKnowledgeBase/problemKnowledgeBaseCommentEO/list', query).then((res) => {
if (res.success) {
this.releaseList = res.result || []
} else {
this.releaseList = []
}
})
},
release() {
if (!this.formInline.commentContent) {
this.$message.warning(this.$t('pleaseEnter'))
return
}
let query = {
problemKnowledgeBaseId: this.$route.query.id,
commentContent: this.formInline.commentContent,
commentUserId: this.userInfo().id
}
this.loading = true
postAction('/problemKnowledgeBase/problemKnowledgeBaseCommentEO/add', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.releaseData()
this.formInline = {}
this.loading = false
} else {
this.$message.warning(this.$t('operationFailed'))
this.loading = false
}
})
},
forwardClick() {
this.$refs.SelectedByRef.getPush()
}
}
}
@@ -287,13 +400,17 @@
font-weight: 400;
text-align: right;
margin-top: 20px;
display: flex;
justify-content: end;
}
.content-icon-text {
display: inline-block;
/*display: inline-block;*/
padding: 0 20px;
cursor: pointer;
line-height: 40px;
display: flex;
align-items: center;
}
.content-icon-text .icon {
@@ -301,6 +418,11 @@
color: #3b4249 !important;
}
.content-icon-text .icon-active {
font-size: 24px;
color: #00B3BE !important;
}
.content-icon-text span {
display: inline-block;
margin-left: 4px;
@@ -347,4 +469,28 @@
.header-btn {
height: 38px;
}
.doc-detail-right {
width: 800px;
line-height: 68px;
display: flex;
justify-content: end;
padding-right: 30px;
.doc-detail-btn {
margin-right: 20px;
}
}
.operator-text-text {
cursor: pointer;
font-size: 14px;
font-weight: 400;
color: #040B29;
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
text-align: right;
}
</style>
@@ -15,7 +15,7 @@
</a-form-model-item>
</div>
</a-col>
<a-col :span="12" style="text-align: right">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
@@ -292,15 +292,15 @@
rules: {
titleCn: [
{
max: 100,
message: this.$t('title') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
max: 500,
message: this.$t('title') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
],
titleEn: [
{
max: 100,
message: this.$t('englishTitle') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
max: 500,
message: this.$t('englishTitle') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
],
@@ -104,7 +104,7 @@
{
title: this.$t('operation'),
align: 'center',
width: 100,
width: 120,
scopedSlots: { customRender: 'operation' }
}
],
@@ -45,10 +45,10 @@
</div>
<div class="title-text-content"
:class="{'title-text-content-one':!isTrue}">
{{selectedRowKeysRecord[0] ? selectedRowKeysRecord[0].serialNumber :''}}
{{selectedRowKeysRecord[0] ? selectedRowKeysRecord[0].serialNumber+' - '+selectedRowKeysRecord[0].title:''}}
</div>
<div class="title-text-right" v-if="isTrue">
<span @click="standardDecompositionDocumentClick">
<span :title="$t('standardDecompositionDocument')" @click="standardDecompositionDocumentClick">
{{$t('standardDecompositionDocument')}}
</span>
</div>
@@ -96,7 +96,7 @@
<div class="title-text">
<span class="title-text-text" :title="$t('processBackground')">{{$t('processBackground')}}</span>
</div>
<a-form-model-item class="itemModel" prop="taskExplain">
<a-form-model-item class="itemModel" prop="processBackground">
<a-textarea :placeholder="$t('pleaseEnter')+$t('processBackground')"
v-model="formInline.processBackground"
:disabled="!whetherDisplay"
@@ -111,7 +111,7 @@
<div class="title-text">
<span class="title-text-text" :title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel" prop="remarks">
<a-form-model-item class="itemModel" prop="remark">
<a-textarea :placeholder="$t('pleaseEnter')+$t('remarks')"
v-model="formInline.remark"
:disabled="!whetherDisplay"
@@ -124,7 +124,7 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('evaluationMethod')">{{$t('evaluationMethod')}}</span>
</div>
<a-form-model-item class="itemModel" prop="gatherResult">
@@ -239,6 +239,20 @@
message: this.$t('Assessor') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
processBackground: [
{
max: 300,
message: this.$t('processBackground') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
remark: [
{
max: 300,
message: this.$t('remarks') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
]
},
searchParmes: {},
@@ -86,7 +86,7 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%'}"
:scroll="{x: '100%',y:'calc(100vh)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -174,7 +174,7 @@
toggleSearchStatus: false,
dataSource: [],
selectedRowKeys: [],
serialNumber:'',
serialNumber: '',
total: 0,
pageSize: 10,
pageNo: 1,
@@ -197,7 +197,7 @@
},
{
value: '2',
name: this.$t('not')
name: this.$t('notOnlyRz')
}
],
gatherResultList: [
@@ -215,12 +215,14 @@
title: this.$t('standard'),
align: 'center',
dataIndex: 'serialNumber',
ellipsis: true,
width: 170
},
{
title: this.$t('title'),
align: 'center',
dataIndex: 'title',
ellipsis: true,
width: 170
},
{
@@ -306,7 +308,7 @@
this.pageNo = page
this.getList()
},
SizeChange(page,pageSize) {
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.getList()
@@ -321,7 +323,7 @@
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize,
serialNumber: this.$route.query.serialNumber?this.$route.query.serialNumber:'',
serialNumber: this.$route.query.serialNumber ? this.$route.query.serialNumber : '',
...queryParam
}
this.loading = true
@@ -372,9 +374,9 @@
id: row.id,
processBackground: row.processBackground,
serialNumber: row.serialNumber,
lawsTechnologyEvaluationId:row.id,
lawsTechnologyEvaluationId: row.id,
standId: row.standId,
remark:row.remark
remark: row.remark
}
})
window.open(newUrl.href, '_blank')
@@ -385,9 +387,9 @@
id: row.id,
processBackground: row.processBackground,
serialNumber: row.serialNumber,
lawsTechnologyEvaluationId:row.id,
lawsTechnologyEvaluationId: row.id,
standId: row.standId,
remark:row.remark
remark: row.remark
}
})
window.open(newUrl.href, '_blank')
@@ -1314,7 +1314,7 @@
max-height: 39vh !important;
}
.ant-modal-body {
.ant-modal-body {
overflow-y: visible !important;
}
@@ -1361,7 +1361,7 @@
}
.ant-modal-body {
.show-setting .ant-modal-body {
max-height: 500px;
overflow-y: auto;
}
@@ -20,7 +20,7 @@
</div>
<div class="comment-box" v-if="dataList && dataList.length > 0">
<div class="comment-box-top-box" v-for="(item,index) in dataList" :key="index">
<!-- <div class="title-text">{{$t('record')+(index + 1)}}</div>-->
<!-- <div class="title-text">{{$t('record')+(index + 1)}}</div>-->
<div class="box-content">
<div class="img-box">
<img src="../../../../assets/daiban.png" class="img" alt="">
@@ -36,8 +36,8 @@
<a-icon type="message"/>
</div>
</div>
<div class="inside-box" v-if="item.projectCommentVOList && item.projectCommentVOList.length > 0">
<div class="box-content-inside" v-for="(val,indexOne) in item.projectCommentVOList" :key="indexOne">
<div class="inside-box" v-if="item.resComVoList && item.resComVoList.length > 0">
<div class="box-content-inside" v-for="(val,indexOne) in item.resComVoList" :key="indexOne">
<div class="img-box">
<img src="../../../../assets/daiban.png" class="img" alt="">
</div>
@@ -97,7 +97,7 @@
</template>
<script>
import { getAction, postAction } from '@/api/manage'
import { getAction, postAction, putAction } from '@/api/manage'
export default {
name: 'commentList',
@@ -112,9 +112,9 @@
confirmLoading: false,
visibleComment: false,
url: {
list: '/project/projectCommentEO/list',
add: '/project/projectCommentEO/add',
edit: '/project/projectReplyEO/add'
list: '/compare/sarFileCompareResComment/queryListByInfoId',
add: '/compare/sarFileCompareResComment/add',
edit: '/compare/sarFileCompareResComment/edit'
},
rules: {
commentContent: [
@@ -142,6 +142,7 @@
},
getData() {
this.visible = true
this.commentContent = ''
this.getList()
},
handleSubmit() {
@@ -161,8 +162,8 @@
getList() {
this.loading = true
getAction(this.url.list, {
projectLibraryId: this.$route.query.id,
commentContent: this.commentContent
id: this.$route.query.id,
str: this.commentContent
}).then((res) => {
if (res.success) {
this.loading = false
@@ -178,21 +179,25 @@
if (valid) {
let url = ''
let query = {}
let Action
if (this.title == this.$t('publishComment')) {
url = this.url.add
Action = postAction
query = {
commentContent: this.formInline.commentContent,
projectLibraryId: this.$route.query.id
comment: this.formInline.commentContent,
infoId: this.$route.query.id
}
} else if (this.title == this.$t('replyToComments')) {
url = this.url.edit
Action = postAction
url = this.url.add
query = {
replyContent: this.formInline.replyContent,
projectCommentId: this.formInline.projectCommentId
comment: this.formInline.replyContent,
parentId: this.formInline.projectCommentId,
infoId: this.$route.query.id
}
}
this.confirmLoading = true
postAction(url, query).then((res) => {
Action(url, query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.visibleComment = false
@@ -200,7 +205,7 @@
this.getList()
} else {
this.confirmLoading = false
this.$message.success(this.$t('operationFailed'))
this.$message.warning(this.$t('operationFailed'))
}
})
}
@@ -387,7 +392,7 @@
}
</style>
<style>
.box-input-search .ant-input-suffix .ant-input-search-icon{
.box-input-search .ant-input-suffix .ant-input-search-icon {
display: none;
}
</style>
@@ -27,42 +27,40 @@
<a-checkbox @change="onChange" :indeterminate="indeterminate" :checked="checkAll"
style="margin-left: 20px;float: left"></a-checkbox>
<div class="detail-content-header-content">
<div class="detail-content-header-content-left">
所选标准:GB 23456-2020 机动车标准 FMVSS 114 中文.word
<div class="detail-content-header-content-left"
:class="{'detail-content-header-content-left-active':isDisplay}">
{{$t('selectedStandard')}}{{resultData.serialNumberLeft}} {{resultData.fileNameLeft}}
</div>
<div class="detail-content-header-content-content">
所选标准:GB 23456-2020 机动车标准 FMVSS 114 中文.word
<div class="detail-content-header-content-content"
:class="{'detail-content-header-content-left-active':isDisplay}">
{{$t('selectedStandard')}}{{resultData.serialNumberRight}} {{resultData.fileNameRight}}
</div>
<div class="detail-content-header-content-right">
操作
<div class="detail-content-header-content-right" v-if="!isDisplay">
{{$t('operation')}}
</div>
</div>
</div>
<a-checkbox-group @change="checkboxChange" v-model="checkboxList"
style="width: 100%;overflow: overlay;height: calc(100vh - 300px)">
<div class="detail-content-content">
<a-checkbox value="A" class="detail-checkbox">
<div class="detail-content-content" v-for="(item,index) in resultData.resList">
<a-checkbox :value="item.id" class="detail-checkbox">
</a-checkbox>
<div class="detail-content-content-text">
<div class="detail-content-content-text-left">
<div class="detail-content-content-text-left"
:class="{'detail-content-content-text-dis':isDisplay}">
<div class="detail-content-left">
<div class="detail-content-left-top">
<span>第10条</span>
<span style="margin-left: 10px">光反射器</span>
</div>
<div class="detail-content-left-button">
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板
sdf kdsf kljsfkldsfdsfdsf
<span>{{item.itemsNumLeft}}</span>
<span style="margin-left: 10px">{{item.itemsNameLeft}}</span>
</div>
<div class="detail-content-left-button" v-html="item.itemsTextLeft"></div>
</div>
<div class="detail-content-right">
<div class="detail-content-left-top">
<span>第10条</span>
<span style="margin-left: 10px">光反射器</span>
</div>
<div class="detail-content-left-button">
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板收到反是馈就但是罚款决定书发的科技示范
<span>{{item.itemsNumRight}}</span>
<span style="margin-left: 10px">{{item.itemsNameRight}}</span>
</div>
<div class="detail-content-left-button" v-html="item.itemsTextRight"></div>
</div>
<div class="detail-content-bottom">
<div class="detail-content-bottom-left" :title="$t('comparisonDifferenceComment')">
@@ -70,127 +68,30 @@
{{$t('comparisonDifferenceComment')}}:
</div>
<div class="detail-content-bottom-right">
差异是各单位在结构上的差别程度成员在时间横轴上的位置的差别程经理与其他的差别程度 横轴上的位置的差别程经理与其他的差别程度差异
{{item.comment}}
</div>
</div>
</div>
<div class="detail-content-content-text-right">
<div class="detail-content-content-text-right" v-if="!isDisplay">
<span class="text-button-one">
<a class="text-button" @click="comparaEdit">{{$t('edit')}}</a>
<a class="text-button" @click="comparaDelete">{{$t('delete')}}</a>
</span>
</div>
</div>
</div>
<div class="detail-content-content">
<a-checkbox value="B" class="detail-checkbox">
</a-checkbox>
<div class="detail-content-content-text">
<div class="detail-content-content-text-left">
<div class="detail-content-left">
<div class="detail-content-left-top">
<span>第10条</span>
<span style="margin-left: 10px">光反射器</span>
</div>
<div class="detail-content-left-button">
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板
sdf kdsf kljsfkldsfdsfdsf
</div>
</div>
<div class="detail-content-right">
<div class="detail-content-left-top">
<span>第10条</span>
<span style="margin-left: 10px">光反射器</span>
</div>
<div class="detail-content-left-button">
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板收到反是馈就但是罚款决定书发的科技示范
</div>
</div>
<div class="detail-content-bottom">
<div class="detail-content-bottom-left" :title="$t('comparisonDifferenceComment')">
<a-icon type="message"/>
{{$t('comparisonDifferenceComment')}}:
</div>
<div class="detail-content-bottom-right">
差异是各单位在结构上的差别程度成员在时间横轴上的位置的差别程经理与其他的差别程度 横轴上的位置的差别程经理与其他的差别程度差异
</div>
</div>
</div>
<div class="detail-content-content-text-right">
<span class="text-button-one">
<a class="text-button">{{$t('edit')}}</a>
<a class="text-button">{{$t('delete')}}</a>
</span>
</div>
</div>
</div>
<div class="detail-content-content">
<a-checkbox value="C" class="detail-checkbox">
</a-checkbox>
<div class="detail-content-content-text">
<div class="detail-content-content-text-left">
<div class="detail-content-left">
<div class="detail-content-left-top">
<span>第10条</span>
<span style="margin-left: 10px">光反射器</span>
</div>
<div class="detail-content-left-button">
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板
sdf kdsf kljsfkldsfdsfdsf
</div>
</div>
<div class="detail-content-right">
<div class="detail-content-left-top">
<span>第10条</span>
<span style="margin-left: 10px">光反射器</span>
</div>
<div class="detail-content-left-button">
12. 附加光反射器,可以是贴纸,具有以下规格: a) 正面左右两侧呈白色或淡黄色; b) 背面左右两侧呈红色; c) 防护板收到反是馈就但是罚款决定书发的科技示范
</div>
</div>
<div class="detail-content-bottom">
<div class="detail-content-bottom-left" :title="$t('comparisonDifferenceComment')">
<a-icon type="message"/>
{{$t('comparisonDifferenceComment')}}:
</div>
<div class="detail-content-bottom-right">
差异是各单位在结构上的差别程度成员在时间横轴上的位置的差别程经理与其他的差别程度 横轴上的位置的差别程经理与其他的差别程度差异
</div>
</div>
</div>
<div class="detail-content-content-text-right">
<span class="text-button-one">
<a class="text-button">{{$t('edit')}}</a>
<a class="text-button">{{$t('delete')}}</a>
<a class="text-button" @click="comparaEdit(item)">{{$t('edit')}}</a>
<a class="text-button" @click="comparaDelete(item)">{{$t('delete')}}</a>
</span>
</div>
</div>
</div>
</a-checkbox-group>
<div class="detail-content-content">
<a-checkbox value="D" class="detail-checkbox">
<a-checkbox @change="fullCheckboxChange" v-model="fullCheckbox" class="detail-checkbox">
</a-checkbox>
<div class="detail-content-content-text">
<div class="detail-content-content-text-left">
<div class="detail-content-content-text-left"
:class="{'detail-content-content-text-dis':isDisplay}">
<div class="detail-content-content-text-left-text">
{{$t('fullTextComments')}}: 文字占位符评论文字内容文字占位符评论文
字内容文字占位符评论文字内容文字
占位符评论文字内容文字占位符评论文字内容文字占
文字占位符评论文字内容文字占位符评论文
字内容文字占位符评论文字内容文字
占位符评论文字内容文字占位符评论文字内容文字占
文字占位符评论文字内容文字占位符评论文
字内容文字占位符评论文字内容文字
占位符评论文字内容文字占位符评论文字内容文字占
文字占位符评论文字内容文字占位符评论文
字内容文字占位符评论文字内容文字
占位符评论文字内容文字占位符评论文字内容文字占
文字占位符评论文字内容文字占位符评论文
字内容文字占位符评论文字内容文字
占位符评论文字内容文字占位符评论文字内容文字占
{{$t('fullTextComments')}}: {{resultData.comments}}
</div>
</div>
<div class="detail-content-content-text-right">
<div class="detail-content-content-text-right" v-if="!isDisplay">
<span class="text-button-one">
<a class="text-button" @click="fullTextEdit">{{$t('edit')}}</a>
<!-- <a class="text-button">{{$t('delete')}}</a>-->
@@ -213,7 +114,7 @@
<a-button key="back" @click="visible = false">
{{$t('cancel')}}
</a-button>
<a-button type="primary" @click="fullTextCommentsSubmit">
<a-button type="primary" :loading="confirmLoading" @click="fullTextCommentsSubmit">
{{$t('submit')}}
</a-button>
</template>
@@ -222,9 +123,9 @@
<div class="title-text-Remarks" :title="$t('fullTextComments')">
<span>{{$t('fullTextComments')}}</span>
</div>
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="dreUserIdName">
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="comment">
<a-textarea :placeholder="$t('pleaseEnter')+$t('fullTextComments')"
v-model="formInlineText.fullTextComments"
v-model="formInlineText.comment"
:rows="4"/>
</a-form-model-item>
</div>
@@ -232,9 +133,9 @@
<div class="title-text-Remarks" :title="$t('comparativeComments')">
<span>{{$t('comparativeComments')}}</span>
</div>
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="dreUserIdName">
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="comment">
<a-textarea :placeholder="$t('pleaseEnter')+$t('comparativeComments')"
v-model="formInlineText.comparativeComments"
v-model="formInlineText.comment"
:rows="4"/>
</a-form-model-item>
</div>
@@ -248,6 +149,7 @@
<script>
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
import commentList from './commentList'
import { putAction } from '../../../../api/manage'
export default {
name: 'comparisonResults',
@@ -264,9 +166,23 @@
rulesText: {},
title: '',
indeterminate: false,
checkAll: false
checkAll: false,
isDisplay: false,
fullCheckbox: false,
resultData: {},
url: {
exportData: '/compare/sarFileCompareItemComment/exportResXls'
}
}
},
mounted() {
if (this.$route.query.isDisplay == 2) {
this.isDisplay = false
} else {
this.isDisplay = true
}
this.getData()
},
methods: {
Fallback() {
this.$router.push({
@@ -277,45 +193,146 @@
this.$refs.commentListRef.getData()
},
exportComparisonReportClick() {
let checkboxList = JSON.parse(JSON.stringify(this.checkboxList))
let fullCheckbox = this.fullCheckbox
let query = {
selectIds: checkboxList.join(','),
includeComments: fullCheckbox,
infoId: this.$route.query.id
}
downloadFile(this.url.exportData, this.resultData.serialNumberLeft + ' - ' + this.resultData.serialNumberRight + '.xls', query, this.Deselect)
},
Deselect() {
this.checkboxList = []
this.fullCheckbox = false
this.indeterminate = false
this.checkAll = false
},
getData() {
let query = {
id: this.$route.query.id,
infoId: this.$route.query.id
}
this.loading = true
getAction('/compare/sarFileCompareItemComment/queryCompareResult', query).then((res) => {
if (res.success) {
this.resultData = res.result || {}
this.loading = false
} else {
this.resultData = {}
this.loading = false
}
})
},
checkboxChange(checkedList) {
this.indeterminate = !!checkedList.length && checkedList.length < this.checkboxList.length
this.checkAll = checkedList.length === this.checkboxList.length
this.indeterminate = !!checkedList.length && checkedList.length < this.resultData.resList.length || (this.fullCheckbox && this.checkboxList.length < this.resultData.resList.length) || (!this.fullCheckbox && !!checkedList.length)
this.checkAll = checkedList.length === this.resultData.resList.length && this.fullCheckbox
},
fullCheckboxChange(event) {
this.indeterminate = !!this.checkboxList.length && this.checkboxList.length < this.resultData.resList.length || (event.target.checked && this.checkboxList.length < this.resultData.resList.length) || (!this.fullCheckbox && !!this.checkboxList.length)
this.checkAll = this.checkboxList.length === this.resultData.resList.length && event.target.checked
},
onChange(event) {
this.checkAll = event.target.checked
if (event.target.checked) {
this.checkboxList = ['A', 'B', 'C', 'D']
this.resultData.resList.forEach(res => {
this.checkboxList.push(res.id)
})
this.fullCheckbox = true
this.indeterminate = false
} else {
this.checkboxList = []
this.fullCheckbox = false
}
if (this.checkboxList.length == 0) {
if (this.checkboxList.length == 0 && !this.fullCheckbox) {
this.checkAll = false
this.indeterminate = false
}
},
fullTextCommentsSubmit() {
this.$refs.ruleForm.validate(valid => {
this.$refs.ruleFormText.validate(valid => {
if (valid) {
if (this.title == this.$t('fullTextComments')) {
this.fullTextComments()
} else {
this.comparaComments()
}
}
})
},
fullTextEdit() {
this.visible = true
this.title = this.$t('fullTextComments')
this.formInlineText = {}
this.$nextTick(() => {
this.$refs.ruleFormText.clearValidate()
fullTextComments() {
this.confirmLoading = true
let query = {
id: this.$route.query.id,
comments: this.formInlineText.comment
}
putAction('/compare/sarFileCompareInfo/editComments', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.confirmLoading = false
this.visible = false
this.getData()
} else {
this.$message.warning(this.$t('operationFailed'))
this.confirmLoading = false
}
})
},
comparaEdit() {
comparaComments() {
this.confirmLoading = true
let query = {
infoId: this.$route.query.id,
id: this.formInlineText.id,
comment: this.formInlineText.comment
}
putAction('/compare/sarFileCompareItemComment/edit', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.confirmLoading = false
this.visible = false
this.getData()
} else {
this.$message.warning(this.$t('operationFailed'))
this.confirmLoading = false
}
})
},
fullTextEdit(item) {
this.visible = true
this.title = this.$t('comparativeComments')
this.formInlineText = {}
this.title = this.$t('fullTextComments')
this.formInlineText.comment = this.resultData.comments || ''
this.formInlineText = { ...this.formInlineText }
this.$nextTick(() => {
this.$refs.ruleFormText.clearValidate()
this.rulesText = {
comment: [
{
max: 300,
message: this.$t('fullTextComments') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
]
}
this.rulesText = { ...this.rulesText }
})
},
comparaEdit(item) {
this.visible = true
this.title = this.$t('comparativeComments')
this.formInlineText = JSON.parse(JSON.stringify(item))
this.formInlineText = { ...this.formInlineText }
this.$nextTick(() => {
this.$refs.ruleFormText.clearValidate()
this.rulesText = {
comment: [
{
max: 300,
message: this.$t('comparativeComments') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
]
}
this.rulesText = { ...this.rulesText }
})
},
comparaDelete(val) {
@@ -323,10 +340,10 @@
this.$confirm({
content: _this.$t('ConfirmDelete'),
onOk() {
deleteAction(_this.url.deleteOne, { id: val.id }).then((res) => {
deleteAction('/compare/sarFileCompareItemComment/delete', { id: val.id }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
_this.getData()
} else {
_this.$message.warning(_this.$t('operationFailed'))
}
@@ -593,4 +610,12 @@
overflow: hidden;
text-overflow: ellipsis;
}
.detail-content-content-text-dis {
width: 100% !important;
}
.detail-content-header-content-left-active {
width: 50% !important;
}
</style>
@@ -20,9 +20,9 @@
{{$t('addFullTextComment')}}
</div>
<div @click="turnOffAutomaticMatchingClick" class="operator-text-text"
:title="$t('turnOffAutomaticMatching')">
<a-icon type="close-circle"/>
{{$t('turnOffAutomaticMatching')}}
:title="isMatching ? $t('turnOffAutomaticMatching'):$t('turnOnAutoMatch')">
<a-icon :type="isMatching?'close-circle':'check-circle'"/>
{{isMatching ? $t('turnOffAutomaticMatching'):$t('turnOnAutoMatch')}}
</div>
</div>
</div>
@@ -31,33 +31,25 @@
<div style="width: 100%;height: auto;overflow: hidden">
<div class="detail-content-left">
<div class="detail-content-left-header">
GB 23145-2020 机动车标准 FMVSS 114 中文.word
{{this.resultData.serialNumberLeft}}&nbsp;
{{this.resultData.fileNameLeft}}
</div>
<div class="detail-content-content-left">
<a-tree
class="draggable-tree"
:tree-data="gData"
@select="onSelectLeft"
:tree-data="resultData.menuLeft"
/>
</div>
<div class="detail-content-content-right">
<div class="detail-content-content-right-data" @click="detailLeft(0)"
:class="{'detail-content-content-right-data-blue':false}">
<div class="detail-content-content-right-data-text">
1、范围
</div>
<div class="detail-content-content-right-data-text">
本标准规定了汽车用LED光源/模块或含有LED光源/模块的前照灯配光性能、光色温度循环等试验方法和检验规则等,
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
</div>
</div>
<div class="detail-content-content-right-data" @click="detailLeft(1)"
:class="{'detail-content-content-right-data-blue':true}">
<div class="detail-content-content-right-data-text">
1、范围
</div>
<div class="detail-content-content-right-data-text">
本标准规定了汽车用LED光源/模块或含有LED光源/模块的前照灯配光性能、光色温度循环等试验方法和检验规则等,
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
<div class="detail-content-content-right-top">
<div class="detail-content-content-right">
<div class="detail-content-content-right-data" @click="detailLeft(index,item)"
v-for="(item,index) in resultData.textLeft"
:class="{'detail-content-content-right-data-blue':item.reviewed == '1'?true:false}">
<div class="detail-content-content-right-data-text" style="margin-bottom: 10px;color: #040B29">
{{item.itemsNum + ' ' + item.itemsName}}
</div>
<div class="detail-content-content-right-data-text" v-html="item.itemsText"></div>
</div>
</div>
</div>
@@ -65,55 +57,31 @@
<div class="detail-content-right">
<div class="detail-content-left-header">
<span class="detail-content-left-header-text">
GB 23145-2020 机动车标准 FMVSS 114 中文.word
{{this.resultData.serialNumberRight}}&nbsp;
{{this.resultData.fileNameRight}}
</span>
<span class="detail-content-left-header-text-right">
<span style="color: #9B9DA9">相似度:</span>
<span style="color: #E83030">98%</span>
<!-- <span style="color: #9B9DA9">相似度:</span>-->
<!-- <span style="color: #E83030">98%</span>-->
</span>
</div>
<div class="detail-content-content-left">
<a-tree
class="draggable-tree"
:tree-data="gData"
@select="onSelectRight"
:tree-data="resultData.menuRight"
/>
</div>
<div class="detail-content-content-right">
<div class="detail-content-content-right-data-right" @click="detailRight(0)"
:class="{'detail-content-content-right-data-blue-right':true}">
<div class="detail-content-content-right-data-text">
1、范围
</div>
<div class="detail-content-content-right-data-text">
本标准规定了汽车用LED光源/模块或含有LED光源/模块的前照灯配光性能、光色温度循环等试验方法和检验规则等,
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
</div>
</div>
<div class="detail-content-content-right-data-right" @click="detailRight(1)">
<div class="detail-content-content-right-data-text">
1、范围
</div>
<div class="detail-content-content-right-data-text">
本标准规定了汽车用LED光源/模块或含有LED光源/模块的前照灯配光性能、光色温度循环等试验方法和检验规则等,
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
</div>
</div>
<div class="detail-content-content-right-data-right" @click="detailRight(2)">
<div class="detail-content-content-right-data-text">
1、范围
</div>
<div class="detail-content-content-right-data-text">
本标准规定了汽车用LED光源/模块或含有LED光源/模块的前照灯配光性能、光色温度循环等试验方法和检验规则等,
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
</div>
</div>
<div class="detail-content-content-right-data-right" @click="detailRight(3)">
<div class="detail-content-content-right-data-text">
1、范围
</div>
<div class="detail-content-content-right-data-text">
本标准规定了汽车用LED光源/模块或含有LED光源/模块的前照灯配光性能、光色温度循环等试验方法和检验规则等,
本标准适用于M、N类汽车使用的LED前照灯、或主要由LED光源或LED模块形成远光或近光的LED前照灯。
<div class="detail-content-content-right-right-top">
<div class="detail-content-content-right-right">
<div class="detail-content-content-right-data-right" @click="detailRight(index,item)"
v-for="(item,index) in resultData.textRight"
:class="{'detail-content-content-right-data-blue-right':item.reviewed == '1'?true:false}">
<div class="detail-content-content-right-data-text" style="margin-bottom: 10px;color: #040B29">
{{item.itemsNum + ' ' + item.itemsName}}
</div>
<div class="detail-content-content-right-data-text" v-html="item.itemsText">
</div>
</div>
</div>
</div>
@@ -125,9 +93,9 @@
<div class="title-text-Remarks" :title="$t('comparativeComments')">
<span>{{$t('comparativeComments')}}</span>
</div>
<a-form-model-item class="itemModel" prop="dreUserIdName">
<a-form-model-item class="itemModel" prop="comment">
<a-textarea :placeholder="$t('pleaseEnter')+$t('comparativeComments')"
v-model="formInline.RemarkInfo"
v-model="formInline.comment"
:rows="4"/>
</a-form-model-item>
</div>
@@ -151,7 +119,7 @@
<a-button type="primary" @click="fullTextCommentsEdit">
{{$t('edit')}}
</a-button>
<a-button type="primary" @click="fullTextCommentsSubmit">
<a-button type="primary" :loading="confirmLoading" @click="fullTextCommentsSubmit">
{{$t('submit')}}
</a-button>
</template>
@@ -160,50 +128,60 @@
<div class="title-text-Remarks" :title="$t('fullTextComments')">
<span>{{$t('fullTextComments')}}</span>
</div>
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="dreUserIdName">
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="comment">
<a-textarea :placeholder="$t('pleaseEnter')+$t('fullTextComments')"
v-model="formInlineText.fullTextComments"
v-model.trim="formInlineText.comment"
:disabled="fullTextDisabled"
:rows="4"/>
</a-form-model-item>
</div>
</a-form-model>
</a-modal>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
<JLoading :loading="loading">{{dataLoadingText}}</JLoading>
</div>
</template>
<script>
import { postAction, putAction } from '../../../../api/manage'
export default {
name: 'documentDataComparison',
data() {
return {
formInline: {},
formInlineText: {},
rules: {},
rulesText: {},
dataLoadingText: '',
rules: {
comment: [
{
max: 300,
message: this.$t('comparativeComments') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
]
},
rulesText: {
comment: [
{
max: 300,
message: this.$t('fullTextComments') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
]
},
loading: false,
visible: false,
confirmLoading: false,
fullTextDisabled: false,
gData: [
{
title: '0-0sdf dsfdsfdsfdsfds',
key: '0-0',
children: [
{
title: '0-0-0sdfdsfdsfdsfdsfdsfdsf',
key: '0-0-0'
},
{
title: '0-0-1',
key: '0-0-1'
}
]
}
]
resultData: {},
isMatching: true,
dataLeft: {},
dataRight: {}
}
},
mounted() {
this.getData()
},
methods: {
Fallback() {
this.$router.push({
@@ -211,46 +189,208 @@
})
},
submit() {
if (!this.dataLeft.id && !this.dataRight.id) {
this.$message.warning(this.$t('pleaseSelectTheDataCompared'))
return
}
this.$refs.ruleForm.validate(valid => {
if (valid) {
let query = {
itemsIdLeft: this.dataLeft.id,
itemsIdRight: this.dataRight.id,
infoId: this.$route.query.id,
comment: this.formInline.comment
}
this.dataLoadingText = this.$t('pleaseWaitWhileRunning')
this.loading = true
postAction('/compare/sarFileCompareItemComment/add', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.loading = false
this.formInline = {}
this.resultData.textRight.forEach(val => {
if (val.id == this.dataRight.id) {
val.reviewed = 1
}
})
this.resultData.textLeft.forEach(val => {
if (val.id == this.dataLeft.id) {
val.reviewed = 1
}
})
this.resultData = { ...this.resultData }
let detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
if (detailLeftColor && detailLeftColor.length > 0) {
detailLeftColor[0].classList.remove('detail-content-content-right-data-color')
}
let detailRightColor = document.getElementsByClassName('detail-content-content-right-data-color-right')
if (detailRightColor && detailRightColor.length > 0) {
detailRightColor[0].classList.remove('detail-content-content-right-data-color-right')
}
this.dataLeft = {}
this.dataRight = {}
// this.$router.push({
// path: '/documentComparison'
// })
} else {
this.$message.warning(this.$t('operationFailed'))
this.loading = false
}
})
}
})
},
viewTheComparisonResultsClick() {
let newUrl = this.$router.resolve({
path: '/comparisonResults'
path: '/comparisonResults',
query: {
id: this.$route.query.id,
isDisplay: 2
}
})
window.open(newUrl.href, '_blank')
},
addFullTextCommentClick() {
this.visible = true
this.fullTextDisabled = true
if (this.formInlineText.comment) {
this.fullTextDisabled = true
} else {
this.fullTextDisabled = false
}
},
turnOffAutomaticMatchingClick() {
this.isMatching = !this.isMatching
this.$message.success(this.$t('OperationSuccessful'))
},
fullTextCommentsEdit() {
this.fullTextDisabled = false
},
fullTextCommentsSubmit() {
this.$refs.ruleFormText.validate(valid => {
if (valid) {
let formInlineText = JSON.parse(JSON.stringify(this.formInlineText))
this.confirmLoading = true
let query = {
id: this.$route.query.id,
comments: formInlineText.comment
}
putAction('/compare/sarFileCompareInfo/editComments', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.confirmLoading = false
this.visible = false
} else {
this.$message.warning(this.$t('operationFailed'))
this.confirmLoading = false
}
})
}
})
},
detailLeft(num) {
getData() {
let query = {
id: this.$route.query.id
}
this.dataLoadingText = this.$t('dataLoading')
this.loading = true
postAction('/compare/sarFileCompareInfo/getComparisonDetail', query).then((res) => {
if (res.success) {
this.resultData = res.result || {}
this.formInlineText.comment = res.result.comments || ''
this.formInlineText = { ...this.formInlineText }
this.loading = false
} else {
this.resultData = {}
this.loading = false
}
})
},
detailLeft(num, item) {
let detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
if (detailLeftColor && detailLeftColor.length > 0) {
detailLeftColor[0].classList.remove('detail-content-content-right-data-color')
}
if (item.id == this.dataLeft.id && !this.isMatching) {
this.dataLeft = {}
return
}
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
if (detailLeft && detailLeft.length > 0) {
detailLeft[num].classList.add('detail-content-content-right-data-color')
}
this.dataLeft = item
if (this.isMatching) {
let detailRightColor = document.getElementsByClassName('detail-content-content-right-data-color-right')
if (detailRightColor && detailRightColor.length > 0) {
detailRightColor[0].classList.remove('detail-content-content-right-data-color-right')
}
let detailContent = document.getElementsByClassName('detail-content-content-right-right-top')
let detailRight = document.getElementsByClassName('detail-content-content-right-data-right')
this.dataRight = this.resultData.textRight[item.targetStand]
if (detailRight && detailRight.length > 0) {
detailRight[item.targetStand].classList.add('detail-content-content-right-data-color-right')
detailContent[0].scrollTop = detailRight[item.targetStand].offsetTop - 150
}
}
},
detailRight(num) {
detailRight(num, item) {
let detailRightColor = document.getElementsByClassName('detail-content-content-right-data-color-right')
if (detailRightColor && detailRightColor.length > 0) {
detailRightColor[0].classList.remove('detail-content-content-right-data-color-right')
}
if (item.id == this.dataRight.id && !this.isMatching) {
this.dataRight = {}
return
}
let detailRight = document.getElementsByClassName('detail-content-content-right-data-right')
if (detailRight && detailRight.length > 0) {
detailRight[num].classList.add('detail-content-content-right-data-color-right')
}
this.dataRight = item
if (this.isMatching) {
let detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
if (detailLeftColor && detailLeftColor.length > 0) {
detailLeftColor[0].classList.remove('detail-content-content-right-data-color')
}
this.dataLeft = this.resultData.textLeft[item.targetStand]
let detailContent = document.getElementsByClassName('detail-content-content-right-top')
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
if (detailLeft && detailLeft.length > 0) {
detailLeft[item.targetStand].classList.add('detail-content-content-right-data-color')
detailContent[0].scrollTop = detailLeft[item.targetStand].offsetTop - 150
}
}
},
onSelectLeft(selectedKeys, exports) {
let node = exports.node.$vnode.data.props.dataRef
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
let detailContent = document.getElementsByClassName('detail-content-content-right-top')
if (!node.parentId) {
detailContent[0].scrollTop = 0
return
}
for (let i = 0; i < this.resultData.textLeft.length; i++) {
if (node.parentId && node.itemName == this.resultData.textLeft[i].itemsName) {
detailContent[0].scrollTop = detailLeft[i].offsetTop - 150
return
}
}
},
onSelectRight(selectedKeys, exports) {
let node = exports.node.$vnode.data.props.dataRef
let detailRight = document.getElementsByClassName('detail-content-content-right-data-right')
let detailContent = document.getElementsByClassName('detail-content-content-right-right-top')
if (!node.parentId) {
detailContent[0].scrollTop = 0
return
}
for (let i = 0; i < this.resultData.textRight.length; i++) {
if (node.parentId && node.itemName == this.resultData.textRight[i].itemsName) {
detailContent[0].scrollTop = detailRight[i].offsetTop - 150
return
}
}
}
}
}
@@ -259,7 +399,7 @@
.detail-content-content-left .ant-tree-node-content-wrapper {
display: inline-block !important;
color: #040B29 !important;
width: 100px;
width: 130px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
@@ -303,7 +443,6 @@
width: 50%;
float: left;
height: 620px;
overflow-y: auto;
border-right: 2px #EFF1F3 solid;
padding: 24px 32px;
box-sizing: border-box;
@@ -313,7 +452,6 @@
.detail-content-right {
width: 50%;
height: 620px;
overflow-y: auto;
float: left;
padding: 24px 32px;
box-sizing: border-box;
@@ -379,16 +517,35 @@
}
.detail-content-content-left {
width: 140px;
height: auto;
width: 180px;
height: 520px;
float: left;
overflow: auto;
}
.detail-content-content-right-top {
height: 520px;
overflow-y: auto;
transition: all 1s;
scroll-behavior: smooth;
}
.detail-content-content-right-right-top {
height: 520px;
overflow-y: auto;
transition: all 1s;
scroll-behavior: smooth;
}
.detail-content-content-right {
width: calc(100% - 150px);
width: 100%;
display: inline-block;
}
.detail-content-content-right-right {
width: 100%;
display: inline-block;
margin-left: 10px;
float: left;
}
.detail-content-content-right-data {
@@ -324,7 +324,12 @@
if (res.success) {
this.loading = false
this.$message.success(this.$t('OperationSuccessful'))
this.$router.push({
path: '/documentDataComparison',
query: {
id: res.result
}
})
} else {
this.loading = false
this.$message.warning(this.$t('operationFailed'))
@@ -426,7 +431,7 @@
padding: 24px 32px;
box-sizing: border-box;
border-bottom: 2px #EFF1F3 solid;
height:610px;
height: 610px;
}
.detail-content-right {
@@ -26,7 +26,7 @@
<div class="title-text" :title="$t('releaseSituation')">
<span>{{$t('releaseSituation')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.releaseCondition"
<j-dict-select-tag class="box-input" v-model="queryParam.releaseState"
:placeholder="$t('PleaseSelect')+$t('releaseSituation')"
:type="'select'"
:triggerChange="false" dictCode="release_condition"/>
@@ -46,6 +46,10 @@
<a-icon type="apartment"/>
{{$t('initiateComparison')}}
</div>
<div @click="BatchDelete" class="operator-text">
<a-icon type="delete"/>
{{$t('BatchDelete')}}
</div>
</div>
<div>
<a-table
@@ -63,11 +67,16 @@
<span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="comparisonResultsClick(record)">{{$t('comparisonResults')}}</a>
<a class="text-operation"
v-if="record.createBy == userInfoQuery.username"
@click="subscribe(record)">
{{!record.state || record.state == 0 ? $t('release') :$t('withdraw')}}
{{!record.releaseState || record.releaseState == 'draft' ? $t('release') :$t('withdraw')}}
</a>
<a class="text-operation" @click="edit(record)">{{$t('edit')}}</a>
<a class="text-operation" @click="deleteData(record)">{{$t('delete')}}</a>
<a class="text-operation"
v-if="record.createBy == userInfoQuery.username && record.releaseState == 'draft'"
@click="edit(record)">{{$t('edit')}}</a>
<a class="text-operation"
v-if="record.createBy == userInfoQuery.username && record.releaseState == 'draft'"
@click="deleteData(record)">{{$t('delete')}}</a>
</span>
</a-table>
<div class="page" v-if="dataSource && dataSource.length > 0">
@@ -88,6 +97,7 @@
<script>
import { getAction, postAction, deleteAction } from '@/api/manage'
import { mapGetters } from 'vuex'
export default {
name: 'index',
@@ -100,22 +110,14 @@
deleteBatch: '/compare/sarFileCompareInfo/deleteBatch'
},
loading: false,
dataSource: [{}],
dataSource: [],
selectedRowKeys: [],
total: 0,
pageSize: 10,
pageNo: 1,
queryParam: {},
gatherResultList: [
{
value: '1',
name: this.$t('draft')
},
{
value: '2',
name: this.$t('Published')
}
],
userInfoQuery: {},
selectedRowKeysRecord: [],
columns: [
{
title: this.$t('standard') + 1,
@@ -174,7 +176,7 @@
align: 'center',
width: 170,
ellipsis: true,
dataIndex: 'releaseState'
dataIndex: 'releaseStateTitle'
},
{
title: this.$t('remarks'),
@@ -194,9 +196,11 @@
}
},
mounted() {
this.userInfoQuery = this.userInfo()
this.getList()
},
methods: {
...mapGetters(['userInfo']),
searchQuery() {
this.pageNo = 1
this.getList()
@@ -210,7 +214,7 @@
this.pageNo = page
this.getList()
},
SizeChange(page,pageSize) {
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.getList()
@@ -238,21 +242,90 @@
}
})
},
onSelectChange(value) {
this.selectedRowKeys = value
BatchDelete() {
if (this.selectedRowKeys.length > 0) {
let _this = this
this.$confirm({
content: _this.$t('ConfirmBatchDeletion'),
onOk() {
let idList = []
let selectedRowKeysRecord = JSON.parse(JSON.stringify(_this.selectedRowKeysRecord))
for (let i = 0; i < selectedRowKeysRecord.length; i++) {
if (selectedRowKeysRecord[i].createBy == _this.userInfo().username &&
selectedRowKeysRecord[i].releaseState == 'draft') {
idList.push(selectedRowKeysRecord[i].id)
}
}
if (idList.length > 0) {
deleteAction(_this.url.deleteBatch, { ids: idList.join(',') }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.getList()
} else {
_this.$message.warning(res.message)
}
})
} else {
_this.$message.warning(_this.$t('doNotHavePermissionDeleteData'))
}
}
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
comparisonResultsClick() {
onSelectChange(value, record) {
this.selectedRowKeys = value
this.selectedRowKeysRecord = record
},
comparisonResultsClick(item) {
if (item.createBy == this.userInfo().username && item.releaseState == 'draft') {
item.isDisplay = 2
} else {
item.isDisplay = 1
}
let newUrl = this.$router.resolve({
path: '/comparisonResults'
path: '/comparisonResults',
query: {
id: item.id,
isDisplay: item.isDisplay
}
})
window.open(newUrl.href, '_blank')
},
subscribe() {
subscribe(record) {
let _this = this
this.$confirm({
content: record.releaseState == 'draft' ? _this.$t('confirmRelease') : _this.$t('confirmWithdraw'),
onOk() {
let releaseState = ''
if (record.releaseState == 'draft') {
releaseState = 'draft'
} else {
releaseState = 'published'
}
let query = {
releaseState: releaseState,
id: record.id
}
postAction('/compare/sarFileCompareInfo/changeState', query).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
} else {
_this.$message.warning(_this.$t('operationFailed'))
}
})
}
})
},
edit() {
edit(row) {
let newUrl = this.$router.resolve({
path: '/documentDataComparison'
path: '/documentDataComparison',
query: {
id: row.id
}
})
window.open(newUrl.href, '_blank')
},
@@ -42,7 +42,7 @@
<a-input class="box-input add-input"
type="textarea"
:placeholder="$t('PleaseEnter')+$t('fileDeclaration')"
v-model="formInline.fileDescription"/>
v-model.trim="formInline.fileDescription"/>
</a-form-model-item>
</div>
</a-col>
@@ -146,6 +146,7 @@ export default {
this.visible = true
return
}else{
this.$refs['ruleForm'].clearValidate()
this.visible = false
}
},
@@ -209,6 +210,7 @@ export default {
/** 赋值给当前对应的表单文件 */
this.formInline[this.uploadName] = attIdList.join(',')
this.formInline = { ...this.formInline }
this.$refs.ruleForm.clearValidate(['fileKey'])
},
clickButtonToUpload(item) {
this.$refs.uploadFile.perentHandleFunc()
+105 -58
View File
@@ -41,19 +41,12 @@
{{title && title.length > 18?title.slice(0,17)+'...':title}}
</span>
<template #overlay>
<a-menu
<a-menu v-has="'externalReports:folder'"
@click="({ key: menuKey }) => onContextMenuClick(treeKey, menuKey, record)">
<a-menu-item key="1" @click="orgAdd" v-has="'externalReports:folder'">{{$t('Addingfolder')}}
</a-menu-item>
<a-menu-item key="4" @click="orgAdds" v-if="deleteNode"
v-has="'externalReports:folder'">{{$t('Addingsubfolders')}}
</a-menu-item>
<a-menu-item key="2" @click="orgEdit" v-has="'externalReports:folder'">
{{$t('Editfolder')}}
</a-menu-item>
<a-menu-item key="3" @click="orgDelete"
v-has="'externalReports:folder'">{{$t('Deletefolders')}}
</a-menu-item>
<a-menu-item key="1" @click="orgAdd" >{{$t('Addingfolder')}}</a-menu-item>
<a-menu-item key="4" @click="orgAdds" v-if="deleteNode">{{$t('Addingsubfolders')}}</a-menu-item>
<a-menu-item key="2" @click="orgEdit">{{$t('Editfolder')}}</a-menu-item>
<a-menu-item key="3" @click="orgDelete" >{{$t('Deletefolders')}}</a-menu-item>
</a-menu>
</template>
@@ -72,7 +65,7 @@
<div class="title-text" :title="$t('fileName')">
<span>{{ $t('fileName') }}</span>
</div>
<a-input class="box-input" style='width: 264px' :placeholder="$t('PleaseEnter')+$t('fileName')"
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('fileName')"
v-model="queryParams.fileName"></a-input>
</div>
</a-col>
@@ -81,7 +74,7 @@
<div class="title-text" :title="$t('uploadedBy')">
<span>{{$t('uploadedBy')}}</span>
</div>
<a-input class="box-input" style='width: 264px' :placeholder="$t('PleaseEnter')+$t('uploadedBy')"
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('uploadedBy')"
v-model="queryParams.createBy"></a-input>
</div>
</a-col>
@@ -93,7 +86,6 @@
<!-- :placeholder="$t('PleaseSelect')+$t('uploadTime')"-->
<a-range-picker
style='width: 264px'
@change="onChange"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
@@ -127,21 +119,21 @@
</div>
</div>
<div>
<!-- :scroll="{x: 10,y:'calc(100vh - 130px)'}"-->
<a-table
ref="table"
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: true}"
rowKey="id"
:scroll="{x: 10}"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:columns="columns"
>
<span slot="projectName" slot-scope="text,record" :title="text">
<a @click="entryNameClick(record)">
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
</a>
</span>
<span slot="operation" slot-scope="text,record">
<!-- <a class="text-operation" @click="handlelist(record)">{{$t('view')}}</a>-->
@@ -186,30 +178,72 @@
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
<a-form-model-item :label="$t('Foldername')" prop="folderName">
<a-input class="box-input add-input" v-model.trim="form.folderName" :placeholder="$t('PleaseEnter')+$t('Foldername')"/>
</a-form-model-item>
<a-form-model-item :label="$t('Administrativeprivileges')" prop="authManageIdsName">
<PersonnelSelection class="box-input add-input"
:personneQuery="form"
:query="{db_field_name:'authManageIds',db_field_txt:$t('Administrativeprivileges')}"
@change="PersonnelSelectionChange"
v-model="form.authManageIdsName"/>
</a-form-model-item>
<a-form-model-item :label="$t('Checkthepermissions')" prop="authViewIdsName">
<PersonnelSelection
class="box-input add-input"
:personneQuery="form"
:query="{db_field_name:'authViewIds',db_field_txt:$t('Checkthepermissions')}"
@change="PersonnelSelectionChange"
v-model="form.authViewIdsName"/>
</a-form-model-item>
<a-form-model-item :label="$t('Folderorder')" prop="orderId">
<a-input-number v-model="form.orderId" :min="1" :max="9999" class="box-input add-input"
:placeholder="$t('PleaseEnter')+$t('Folderorder')" :formatter="limitNumber"
:parser="limitNumber" />
<!-- <a-input-number v-model="rowCount" :min="1" :placeholder="$t('pleaseEnter')+$t('numberRows')" :formatter="limitNumber" :parser="limitNumber" />-->
</a-form-model-item>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('Foldername')">{{$t('Foldername')}}</span>
</div>
<a-form-model-item prop="folderName" style='width: 72%'>
<a-input v-model="form.folderName" :min="1" :max="100" style='width: 130%' class="box-input add-input" :placeholder="$t('PleaseEnter')+$t('Foldername')" />
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('Administrativeprivileges')">{{$t('Administrativeprivileges')}}</span>
</div>
<a-form-model-item class="itemModel" prop="authManageIdsName">
<PersonnelSelection class="box-input add-input"
:personneQuery="form"
:query="{db_field_name:'authManageIds',db_field_txt:$t('Administrativeprivileges')}"
@change="PersonnelSelectionChange"
v-model="form.authManageIdsName"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('Checkthepermissions')">{{$t('Checkthepermissions')}}</span>
</div>
<a-form-model-item class="itemModel" prop="authViewIdsName">
<PersonnelSelection
class="box-input add-input"
:personneQuery="form"
:query="{db_field_name:'authViewIds',db_field_txt:$t('Checkthepermissions')}"
@change="PersonnelSelectionChange"
v-model="form.authViewIdsName"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('Folderorder')">{{$t('Folderorder')}}</span>
</div>
<a-form-model-item class="itemModel" prop="orderId">
<a-input-number v-model="form.orderId" :min="1" :max="9999" class="box-input add-input"
:placeholder="$t('PleaseEnter')+$t('Folderorder')" :formatter="limitNumber"
:parser="limitNumber" />
<!-- <a-input-number v-model="rowCount" :min="1" :placeholder="$t('pleaseEnter')+$t('numberRows')" :formatter="limitNumber" :parser="limitNumber" />-->
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-modal>
@@ -284,7 +318,7 @@ export default {
rules: {
folderName: [
{ required: true, message: this.$t('PleaseEnter') + this.$t('Foldername'), trigger: 'blur' },
{ min: 1, max: 50, message: this.$t('cantExeed') + '50' + this.$t('characters'), trigger: 'blur' }
{ min: 1, max: 100, message: this.$t('cantExeed') + '100' + this.$t('characters'), trigger: 'blur' }
],
// authManageIdsName: [
// { required: true, message: this.$t('PleaseSelect') + this.$t('Administrativeprivileges'), trigger: 'change' },
@@ -319,16 +353,20 @@ export default {
title: this.$t('fileName'),
align: 'center',
dataIndex: 'fileName',
width: 200
},
{
title: this.$t('fileDeclaration'),
align: 'center',
dataIndex: 'fileDescription',
scopedSlots: { customRender: 'projectName' },
width: 150
},
{
title: this.$t('uploadedBy'),
align: 'center',
dataIndex: 'createBy',
width: 150
},
// {
// title: this.$t('category'),
@@ -598,7 +636,7 @@ export default {
//树形删除
orgDelete() {
this.$confirm({
content: this.$t('deleteNodes'),
content: this.$t('deleteNode'),
onOk:
async () => {
deleteAction(`extRepo/extRepoFolder/delete`, { id: this.nodeItem.key }).then(res => {
@@ -630,6 +668,7 @@ export default {
},
handleCancelMenuRight() {
this.menuRightVisible = false
this.$refs['ruleForm'].clearValidate()
},
//增加文件夹确定
hideModalMenuRight() {
@@ -1027,32 +1066,35 @@ export default {
.box-title-text {
line-height: 1.4;
display: flex;
align-items: center;
margin-bottom: 10px;
/*align-items: center;*/
}
/deep/.ant-table td{
white-space: nowrap;
}
.title-text {
width: 20%;
min-width: 80px;
color: #000F16;
width: 114px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
margin-top: 3px;
text-align: right;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 48px;
}
.box-input {
display: inline-block;
width: 70%;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.add-input {
width: 82%;
}
@@ -1096,6 +1138,10 @@ export default {
height: 38px;
width: 100%;
}
.Required {
color: red;
margin-right: 4px;
}
.split-detail {
/*height: 100% !important;*/
@@ -1179,14 +1225,15 @@ export default {
}
}
/deep/ .ant-table-body {
overflow: hidden !important;
}
///deep/ .ant-table-body {
// overflow: hidden !important; ?????
//}
</style>
<style lang="less">
.split-item {
.ant-form-item-label {
min-width: 100px;
}
}
@@ -177,14 +177,14 @@ export default {
// scopedSlots: { customRender: 'titleName' }
},
{
title: this.$t('createTime'),
title: this.$t('created'),
align: 'center',
dataIndex: 'createTime',
width: 160,
ellipsis: true,
},
{
title: this.$t('updateTime'),
title: this.$t('updated'),
align: 'center',
width: 160,
ellipsis: true,
@@ -36,7 +36,7 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: true}"
:scroll="{x: '100%',y:'calc(100vh - 130px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -138,7 +138,7 @@
areaVisible: false,
paramsTemplateName: '',
drawerVisible: false,
titleTag: '导出历史'
titleTag: this.$t('Exporthistory')
}
},
mounted() {
@@ -78,15 +78,15 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-row :gutter="24" v-if='combineFlag'>
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required" v-if='!required'>*</span>
<span class="Required" >*</span>
<span class="title-text-text"
:title="$t('MergeSeparator')">{{$t('MergeSeparator')}}</span>
</div>
<a-form-model-item class="itemModel" :prop="!required?'separator':''">
<a-form-model-item class="itemModel" prop="separator">
<!-- :disabled="disabled"-->
<a-input class="box-input"
v-model="formInline.separator"
@@ -122,18 +122,20 @@ export default {
data() {
return {
formInline: {
},
confirmLoading: false,
description:false,
dictOptions:[],
visible: false,
combineFlag:false,
required:false,
disabled:false,
rules: {
separator:[
{ required: true, message: this.$t('PleaseEnter')+this.$t('MergeSeparator'), trigger: 'change' },
{
pattern: /[`~!@$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~@%&*\-+={}|']/,
pattern: /[`~!@$%^&*()_\-+=<>?:"{}|.\/;'\\[\]·~@%&*\-+={}|']/,
message: this.$t('punctuationmark'),
trigger: 'blur'
}
@@ -166,11 +168,11 @@ export default {
},
mounted() {
this.getNameList()
if(this.formInline.combineFlag == '1'){
this.required = false
}else{
this.required = true
}
// if(this.formInline.combineFlag == '1'){
// this.required = false
// }else{
// this.required = true
// }
},
methods: {
uploadSuccess(data) {
@@ -196,11 +198,10 @@ export default {
})
},
flagChange(value){
console.log(value.target.value)
if(value.target.value == 2){
this.required = false
this.combineFlag = true
}else{
this.required = true
this.combineFlag = false
}
},
getNameList() {
@@ -216,7 +217,8 @@ export default {
this.visible = true
this.title = this.$t('ConventionalExport')
this.formInline = {}
this.formInline.separator = ','
this.formInline.separator = ';'
this.formInline.combineFlag = '1',
this.formInline = {...this.formInline}
this.getConfigure()
this.$nextTick(() => {
@@ -289,7 +291,7 @@ export default {
if (long && long === 'zh-cn') {
query.exportName = '常规导出'
} else if (long && long === 'en-us') {
query.exportName = 'normal'
query.exportName = 'Normal'
}
this.confirmLoading = true
downloadFile('report/detail/exportNormal', query.exportName+'.zip', query)
@@ -247,7 +247,7 @@ export default {
if (long && long === 'zh-cn') {
query.exportName = '自定义导出'
} else if (long && long === 'en-us') {
query.exportName = 'custom'
query.exportName = 'Custom'
}
this.confirmLoading = true
downloadFile('report/detail/exportCustom', query.exportName+'.zip', query)
@@ -12,7 +12,7 @@
<!-- 认证参数收集-参数项收集清单-10控件-->
<div class='Virtual-detail-content' style='margin-top: 15px'>
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24" style='margin-left: -90px;'>
<a-row :gutter="24" style='margin-left: -70px;'>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('NcertificationCategory')">
@@ -293,11 +293,15 @@ export default {
this.formInline[value] = id
this.formInline = { ...this.formInline }
},
getDataSource(data) {
this.dataSource = data
console.log(this.dataSource)
},
// 保存
handlePreservation(num) {
let _this = this
let postDate = []
let data = JSON.parse(JSON.stringify(this.dataSource))
let data = JSON.parse(JSON.stringify(this.$refs.CollectionTabel.dataSource))
let selectedRowKeysValue = []
data.forEach(res => {
selectedRowKeysValue.push(res)
@@ -306,13 +310,11 @@ export default {
for (let i = 0; i < selectedRowKeysValue.length; i++) {
let postDateobj = {}
let itemIn = Object.keys(selectedRowKeysValue[i])
console.log(itemIn)
for (let j = 0; j < itemIn.length; j++) {
if (itemIn[j] !== 'sdt' && selectedRowKeysValue[i][itemIn[j]].list) {
if (selectedRowKeysValue[i][itemIn[j]] instanceof Object && !(selectedRowKeysValue[i][itemIn[j]] instanceof Array)) {
postDateobj[itemIn[j]] = selectedRowKeysValue[i][itemIn[j]]
for (let k = 0; k < selectedRowKeysValue[i][itemIn[j]].list.length; k++) {
console.log(selectedRowKeysValue[i][itemIn[j]].list[k].dataValue)
if (selectedRowKeysValue[i][itemIn[j]].list[k].type == 'pull_more' && selectedRowKeysValue[i][itemIn[j]].list[k].dataValue !== null && selectedRowKeysValue[i][itemIn[j]].list[k].dataValue instanceof Array) {
selectedRowKeysValue[i][itemIn[j]].list[k].dataValue = selectedRowKeysValue[i][itemIn[j]].list[k].dataValue.join(',')
}
@@ -376,9 +378,7 @@ export default {
onSelectChange() {
},
getDataSource(data) {
this.dataSource = data
},
LoginUserType(val, currentPersonRole, userType) {
this.RoleType = []
if (this.currentPersonRole == '') {
@@ -419,13 +419,13 @@ export default {
},
pageOnChange(page, pageSize) {
this.pageNo = page
this.$emit('handlePreservation')
// this.$emit('handlePreservation')
this.getTableList()
},
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.$emit('handlePreservation')
// this.$emit('handlePreservation')
this.getTableList()
},
}
@@ -23,7 +23,7 @@
<a-form-model-item class="itemModel" prop="templateName">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.templateName"
v-model.trim="formInline.templateName"
:placeholder="$t('PleaseEnter')+$t('templateName')"/>
</a-form-model-item>
</div>
@@ -57,7 +57,7 @@
<a-input class="box-input add-input"
type="textarea"
:disabled="disabled"
v-model="formInline.description"
v-model.trim="formInline.description"
:placeholder="$t('PleaseEnter')+$t('contentDescription')"/>
</a-form-model-item>
</div>
@@ -73,7 +73,7 @@
</div>
<a-form-model-item class="itemModel" prop="fileConnectId">
<a-button type="primary" class="button-text"
v-model='formInline.fileConnectId'
v-model:value='formInline.fileConnectId'
@click="clickButtonToUpload('fileTemplateConnectId')">
{{ (formInline.fileConnectId === 'null' || formInline.fileConnectId === '' ||
formInline.fileConnectId == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
@@ -90,7 +90,7 @@
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
<uploadFileChange ref="uploadFile" :accept="'.doc,.doxc,.xls,.xlsx'" @uploadSuccess="uploadSuccess"></uploadFileChange>
<uploadFileChange ref="uploadFile" :accept="'.doc,.docx,.xls,.xlsx'" @uploadSuccess="uploadSuccess"></uploadFileChange>
</div>
</template>
@@ -119,7 +119,7 @@ export default {
description:[
{ min:1, max: 200, message: this.$t('cantExeed')+'200'+this.$t('characters'), trigger: 'blur' },
],
status: [
state: [
{ required: true, message: this.$t('PleaseSelect')+this.$t('status'), trigger: 'change' },
],
fileConnectId: [
@@ -146,6 +146,7 @@ export default {
/** 赋值给当前对应的表单文件 */
this.formInline.fileConnectId = attIdList.join(',')
this.formInline = { ...this.formInline }
this.$refs.ruleForm.clearValidate(['fileConnectId'])
},
clickButtonToUpload(item) {
this.$refs.uploadFile.visible = true
@@ -185,6 +186,7 @@ export default {
},
handleCancel() {
this.visible = false
this.$refs['ruleForm'].clearValidate()
},
handleSubmit() {
if(this.formInline.paramsTemplateName !== undefined) {
@@ -211,11 +213,11 @@ export default {
Action(url, query).then((res) => {
if (res.success) {
this.confirmLoading = false
this.$message.success(res.message)
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.$emit('addModelList')
} else {
this.$message.warning(res.message)
this.$message.warning(this.$t('operationFailed'))
this.confirmLoading = false
}
})
@@ -37,14 +37,17 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: true}"
:scroll="{x: '100%',y:'calc(100vh - 130px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:columns="columns"
>
<span slot="projectName" slot-scope="text,record" :title="text">
{{ text && text.length > 100 ? text.slice(0, 99) + '...' : text }}
{{ text && text.length > 40 ? text.slice(0, 39) + '...' : text }}
</span>
<span slot="templateName" slot-scope="text,record" :title="text">
{{ text && text.length > 25 ? text.slice(0, 21) + '...' : text }}
</span>
<span slot="operation" slot-scope="text,record">
<a class="text-operation" v-has="'report:exportTemplate:edit'" @click="edit(record)">{{$t('edit')}}</a>
@@ -146,7 +149,8 @@ export default {
{
title: this.$t('templateName'),
align: 'center',
dataIndex: 'templateName'
dataIndex: 'templateName',
scopedSlots: { customRender: 'templateName' }
},
{
title: this.$t('contentDescription'),
@@ -50,13 +50,13 @@
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('NParameterName')">{{$t('NParameterName')}}</span>
:title="$t('Paraname')">{{$t('Paraname')}}</span>
</div>
<a-form-model-item class="itemModel" prop="paramsName">
<a-input class="box-input"
:disabled="disabled"
v-model.trim="formInline.paramsName"
:placeholder="$t('PleaseEnter')+$t('NParameterName')"/>
:placeholder="$t('PleaseEnter')+$t('Paraname')"/>
</a-form-model-item>
</div>
</a-col>
@@ -103,12 +103,12 @@
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('NparameterBatch')">{{$t('NparameterBatch')}}</span>
:title="$t('Parabatch')">{{$t('Parabatch')}}</span>
</div>
<a-form-model-item class="itemModel" prop="paramsBatch">
<j-dict-select-tag class="box-input" v-model="formInline.paramsBatch"
:disabled="disabled"
:placeholder="$t('PleaseSelect')+$t('NparameterBatch')"
:placeholder="$t('PleaseSelect')+$t('Parabatch')"
:type="'select'"
:triggerChange="false" :dictCode="'params_batch'"/>
</a-form-model-item>
@@ -134,7 +134,7 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-row :gutter="24" v-if='required'>
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
@@ -248,10 +248,10 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24" >
<a-row :gutter="24" >
<a-col :span="24" v-if='required'>
<a-tabs>
<a-tab-pane v-for='(item,index) in contentList' :tab="item.cut == 'cn' ? item.text : item.textEn" :key="index + 1">
<a-tab-pane v-for='(item,index) in contentList' :tab="item.cut == 'cn' ? item.text : item.textEn" :key="index + 1">
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
@@ -370,6 +370,7 @@ export default {
certCategoryParamsInfoEOList: [], // 认证类别得tab栏
formInline: {},
confirmLoading: false,
required:true,
visible: false,
rules: {
nioNumber:[
@@ -388,7 +389,7 @@ export default {
{ required: true, message: this.$t('PleaseEnter')+this.$t('Required'), trigger: 'change' },
],
paramsName: [
{ required: true, message: this.$t('pleaseSelect')+this.$t('ParameterName'), trigger: 'blur' },
{ required: true, message: this.$t('pleaseSelect')+this.$t('Paraname'), trigger: 'blur' },
{ min:1, max: 100, message: this.$t('cantExeed')+'100'+this.$t('characters'), trigger: 'blur' },
],
technologyTerritory: [
@@ -447,7 +448,6 @@ export default {
} else if (long && long == 'en-us') {
this.cut = 'en'
}
console.log(this.cut)
},
methods: {
getcontentListedEdit() {
@@ -470,6 +470,11 @@ export default {
},
controlTypeChange(value){
this.$refs.ruleForm.clearValidate(['controlVerify','titleDefaultValue','controlValues'])
if(value == 11){
this.required = false
}else {
this.required = true
}
},
uploadSuccess(data) {
let attIdList = []
@@ -589,6 +594,7 @@ export default {
item1.description= '' // 描述
}
})
console.log(this.contentList)
};
})
@@ -638,6 +644,11 @@ export default {
// } else {
// value.technologyTerritory = value.technologyTerritory.split(',')
// }
if(this.formInline.controlType == 11){
this.required = false
}else{
this.required = true
}
this.formInline = value
this.title = this.$t('edit')
this.flag = 0
@@ -663,46 +674,47 @@ export default {
this.$refs['ruleForm'].resetFields()
},
handleSubmit() {
if(this.formInline.certCategory == undefined) {
if(this.formInline.certCategory == undefined && this.formInline.controlType != 11) {
this.$message.warning(this.$t('certificationCategory')+this.$t('cannotEmpty'))
return
}
let falg = 1
this.contentList.forEach((item,index) => {
let reg = /^[0-9a-zA-Z-/. ]{1,}$/
// 编号的限制
if(item.paramsNumber == '' || item.paramsNumber === undefined) {
this.$message.warning(this.$t('standard')+this.$t('cannotEmpty'))
falg = 0
return
} else if(item.paramsNumber.length > 15){
this.$message.warning(this.$t('standard')+this.$t('cantExeed')+'15'+this.$t('Characters'))
falg = 0
return
} else if(item.paramsNumber.match(reg) === null) {
this.$message.warning(this.$t('standard')+this.$t('onlyThree'))
falg = 0
return
}
// 参数名称的限制
if(item.paramsName == '' || item.paramsName === undefined) {
this.$message.warning(this.$t('ParameterName')+this.$t('cannotEmpty'))
falg = 0
return
} else if(item.paramsName.length > 100){
this.$message.warning(this.$t('ParameterName')+this.$t('cantExeed')+'100'+this.$t('Characters'))
falg = 0
return
}
if(item.description !== undefined && item.description !== null){
// 参数说明的限制
if(item.description.length > 2000){
this.$message.warning(this.$t('ParameterDescription')+this.$t('cantExeed')+'2000'+this.$t('Characters'))
this.contentList.forEach((item,index) => {
let reg = /^[0-9a-zA-Z-/. ]{1,}$/
// 编号的限制
if(item.paramsNumber == '' || item.paramsNumber === undefined ) {
this.$message.warning(this.$t('standard')+this.$t('cannotEmpty'))
falg = 0
return
} else if(item.paramsNumber.length > 15){
this.$message.warning(this.$t('standard')+this.$t('cantExeed')+'15'+this.$t('Characters'))
falg = 0
return
} else if(item.paramsNumber.match(reg) === null) {
this.$message.warning(this.$t('standard')+this.$t('onlyThree'))
falg = 0
return
}
}
})
// 参数名称的限制
if(item.paramsNumber == '' || item.paramsNumber === undefined) {
this.$message.warning(this.$t('ParameterName')+this.$t('cannotEmpty'))
falg = 0
return
} else if(item.paramsName.length > 100){
this.$message.warning(this.$t('ParameterName')+this.$t('cantExeed')+'100'+this.$t('Characters'))
falg = 0
return
}
if(item.description !== undefined && item.description !== null){
// 参数说明的限制
if(item.description.length > 2000){
this.$message.warning(this.$t('ParameterDescription')+this.$t('cantExeed')+'2000'+this.$t('Characters'))
falg = 0
return
}
}
})
if(falg === 1) {
this.$refs.ruleForm.validate(valid => {
if (valid) {
@@ -184,7 +184,7 @@ export default {
ellipsis: true,
},
{
title: this.$t('createTime'),
title: this.$t('created'),
align: 'center',
dataIndex: 'createTime',
width: 180,
@@ -5,7 +5,7 @@
{{title}}
</div>
</div>
<div class="content-text">
<div class="content-text-text">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="12">
@@ -60,7 +60,7 @@
}]">
<a-input class="box-input"
:disabled="disabled"
v-model="item.relatedSection"
v-model.trim="item.relatedSection"
:placeholder="$t('PleaseEnter')+$t('relevantSections')"/>
</a-form-model-item>
</div>
@@ -81,7 +81,7 @@
}]">
<a-input class="box-input"
:disabled="disabled"
v-model="item.issueOrSuggest"
v-model.trim="item.issueOrSuggest"
:placeholder="$t('PleaseEnter')+$t('problemDescription')"/>
</a-form-model-item>
</div>
@@ -185,8 +185,8 @@
trigger: 'blur'
},
{
max: 300,
message: this.$t('reviewComments') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
max: 1000,
message: this.$t('reviewComments') + this.$t('cannotExceed') + 1000 + this.$t('Characters'),
trigger: 'blur'
}
],
@@ -5,7 +5,7 @@
{{title}}
</div>
</div>
<div class="content-text">
<div class="content-text-text">
<a-table
ref="table"
:loading="loading"
@@ -64,7 +64,7 @@
},
data() {
return {
title: this.$t('collectionOfRegulatoryOpinions'),
title: this.$t('regulatoryTechnicalAssessment'),
url: {
queryTaskDetailByTaskIds: '/task/queryTaskDetailByTaskIds',
list: '/lawsTechnologyEvaluation/lawsTechnologyEvaluationResultEO/queryEvaluationResultAndComplianceResult'
@@ -141,6 +141,7 @@
}
},
mounted() {
document.title = this.$t('regulatoryTechnicalAssessment')
this.isDisplay = false
if (this.$route.query.taskDefinitionKey == 'pgrqr') {
this.isPreservation = true
@@ -244,7 +244,7 @@
yAxis: yAxis,
grid: {
left: '10%',
bottom: '15%'
bottom: '20%'
},
series: [
{
@@ -17,19 +17,19 @@
<a-row :gutter="24" style='margin-left: -90px;'>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('newNiONumber')">
<span>{{$t('newNiONumber')}}</span>
<div class="title-text" :title="$t('NNiONumber')">
<span>{{$t('NNiONumber')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('newNiONumber')"
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('NNiONumber')"
v-model="formInline.nioNumber"></j-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('ParameterName')">
<span>{{$t('ParameterName')}}</span>
<div class="title-text" :title="$t('NParameterName')">
<span>{{$t('NParameterName')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('ParameterName')"
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('NParameterName')"
v-model="formInline.paramsName"></j-input>
</div>
</a-col>
@@ -46,21 +46,21 @@
<!-- </a-col>-->
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('areaOfResponsibility')">
<span>{{$t('areaOfResponsibility')}}</span>
<div class="title-text" :title="$t('NareaOfResponsibility')">
<span>{{$t('NareaOfResponsibility')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="formInline.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('completedBy')">
<span>{{$t('completedBy')}}</span>
<div class="title-text" :title="$t('dre')">
<span>{{$t('dre')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('completedBy')"
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('dre')"
v-model="formInline.dre"></j-input>
</div>
</a-col>
@@ -163,6 +163,10 @@
<a-icon type="profile"/>
{{$t('bringInTheProjectInterface')}}
</div>
<div @click="AdjustareasofresponsibilityClick" class="operator-text-title" v-if='currentPersonRole == "homo"'>
<a-icon type="solution"/>
{{$t('Adjustareasofresponsibility')}}
</div>
</template>
<div class="operator-text" style="position: relative " @click='morepop' v-if='currentPersonRole == "homo" || currentPersonRole == "sdt"'>
<span style="position: absolute;left: -13px;top: -4px">...</span>{{ $t('more') }}
@@ -251,7 +255,7 @@
<a-row :gutter='24'>
<a-col :span='24'>
<a-form-model-item ref='region' :label="$t('FreezeConfiguration')" prop='region'>
<a-select :placeholder="$t('PleaseSelect')+$t('FreezeConfiguration')" v-model="Dateline.paramsConfig"
<a-select :placeholder="$t('freeze')" v-model="Dateline.paramsConfig"
allowClear mode="multiple">
<a-select-option v-for="(item, key) in FreezeList" :key="key" :value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.label ">
@@ -295,7 +299,12 @@
@GetgetTableList='GetgetTableList'
@areaVisibleTaskCutOffTimeAll='areaVisibleTaskCutOffTimeAll'/>
</a-modal>
<!-- 调整责任领域-->
<a-modal v-model="Adjustareasofrespon" :title="$t('Adjustareasofresponsibility')" width='620px' :footer="null">
<adjustarea-sofrespon v-if='Adjustareasofrespon' :selectedRowKeysArray='selectedRowKeysArray'
@GetgetTableList='GetgetTableList'
@AdjustareasofresponAll='AdjustareasofresponAll'/>
</a-modal>
<!-- 引用参数--->
<a-modal v-model="areaVisiblereferenceparameter" :title="$t('referenceparameter')" width='650px' :footer="null">
<reference-parameter v-if='areaVisiblereferenceparameter' :paramsManifest='paramsManifest'
@@ -439,6 +448,7 @@
import SynchronousSubmissionLibrary from '@/components/SynchronousSubmissionLibrary/index'
import TaskCutOffTime from '@/components/TaskCutOffTime/index'
import TaskTime from '@/components/TaskCutOffTime/indexonekey'
import AdjustareaSofrespon from '@/components/AdjustareaSofrespon/index'
import ReferenceParameter from '@/components/ReferenceParameter/index'
import AssignedBy from '@/components/AssignedBy/index'
import axios from 'axios'
@@ -452,6 +462,7 @@
TableCollection,
ParameterLibraryAdd,
AssignedBy,
AdjustareaSofrespon,
TaskCutOffTime,
ReferenceParameter,
SynchronousSubmissionLibrary,
@@ -614,6 +625,7 @@
areaVisibleAssignedby: false, // 分配填写人弹框
areaVisibleTaskCutOffTime: false, // 截至时间弹框
OneclickCollection:false,
Adjustareasofrespon:false,
areaVisiblereferenceparameter: false, // 引用参数弹框
areaVisibsynchronous: false, // 同步上报库弹框
visibleoperationFailed: false, // 数据失败的弹框
@@ -1160,6 +1172,14 @@
_this.confirmLoading = false
})
},
// 调整责任领域
AdjustareasofresponsibilityClick(){
if(this.selectedRowKeysValue.length == 0){
this.$message.warning(this.$t('selectLeastOne'))
}else{
this.Adjustareasofrespon = true
}
},
// 下发收集的权限
distributionAndCollectionJurisdiction() {
if(this.selectedRowKeysValue.length == 0){
@@ -1517,6 +1537,11 @@
this.OneclickCollection = val
this.$refs.CollectionTabel.getTableList(this.queryParamQuery)
},
AdjustareasofresponAll(val){
console.log(val)
this.Adjustareasofrespon = val
this.$refs.CollectionTabel.getTableList(this.queryParamQuery)
},
//引用参数
referenceparameter() {
let dreJurisdictionreferenceParameter = this.dreJurisdictionreferenceParameter()
@@ -174,7 +174,7 @@
dataIndex: 'createBy'
},
{
title: this.$t('createTime'),
title: this.$t('created'),
align: 'center',
width: 160,
ellipsis: true,
@@ -77,7 +77,7 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: true}"
:scroll="{x: '100%',y:'calc(100vh - 130px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -100,6 +100,7 @@
title: this.$t('standard'),
align: 'center',
dataIndex: 'serial_number',
ellipsis: true,
width: 170,
scopedSlots: { customRender: 'serial_number' }
},
@@ -107,6 +108,7 @@
title: this.$t('title'),
align: 'center',
dataIndex: 'title',
ellipsis: true,
width: 170,
scopedSlots: { customRender: 'titleName' }
},
@@ -182,11 +184,12 @@
this.getList()
})
},
beforeDestroy(){
beforeDestroy() {
eventBUs.$off('searchQuery')
},
methods: {
callback(tab) {
this.selectedRowKeys = []
this.activeTab = tab
this.getList()
},
@@ -203,22 +206,26 @@
}
},
handleExport() {
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
let text = ''
let flag
if (this.activeTab == this.$t('ImplementationDate')) {
flag = 0
text = this.$t('ImplementationDate')
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
let text = ''
let flag
if (this.activeTab == this.$t('ImplementationDate')) {
flag = 0
text = this.$t('ImplementationDate')
} else {
text = this.$t('vehicleInProductionDate')
flag = 1
}
let query = {
id: selectedRowKeys.join(','),
...this.searchParmes,
flag: flag
}
downloadFile(this.url.exportData, text + '.xls', query, this.Deselect)
} else {
text = this.$t('vehicleInProductionDate')
flag = 1
this.$message.warning(this.$t('selectLeastOne'))
}
let query = {
id: selectedRowKeys.join(','),
...this.searchParmes,
flag: flag
}
downloadFile(this.url.exportData, text + '.xls', query, this.Deselect)
},
Deselect() {
this.selectedRowKeys = []
@@ -298,7 +305,7 @@
this.pageNo = page
this.getList()
},
SizeChange(page,pageSize) {
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.getList()