Merge branch 'master' into 'dev_20230526_Mobile'

# Conflicts:
#   jero-web/src/common/lang/en-us.js
#   jero-web/src/common/lang/zh-cn.js
#   jero-web/src/components/tools/UserMenu.vue
This commit is contained in:
高嵩
2023-06-30 14:51:19 +08:00
85 changed files with 5126 additions and 1378 deletions
+79 -63
View File
@@ -66,11 +66,11 @@ module.exports = {
withStart: 'Start with',
withEnd: 'End with',
in: 'In',
notEqual: 'Not Equal To',
granter: 'Greater Than',
greaterOrEqual: 'Greater Than Or Equal To',
less: 'Less Than',
lessOrEqual: 'Less Than Or Equal To',
notEqual: 'Not equal to',
granter: 'Greater than',
greaterOrEqual: 'Greater than or equal to',
less: 'Less than',
lessOrEqual: 'Less than or equal to',
user: 'User',
numericalValue: 'Value',
not: 'No',
@@ -85,7 +85,7 @@ module.exports = {
name: 'Name',
AlreadyExists: 'Already exists, overwrite?',
SavedSuccessfully: 'Saved',
DeleteQuery: 'Delete current Search?',
DeleteQuery: 'Delete current search?',
VersionNotSupported: 'Version Not Supported',
SaveQueryCriteria: 'Save Search Conditions',
roleName: 'Role Name',
@@ -114,7 +114,7 @@ module.exports = {
DeleteMultiplePiecesData: 'Delete Multiple Items',
CurrentSelection: 'Current Selection',
Deselect: 'Deselect',
enterDepartmentName: 'Please enter Department name',
enterDepartmentName: 'Please enter department name',
addTo: 'Add',
cancel: 'Cancel',
checkAll: 'Check All',
@@ -200,7 +200,7 @@ module.exports = {
enterSearchKeyword: 'Please enter a search keyword',
enterSearchContent:'Please enter Search Content',
enterStandard:'Please enter No.',
entertitle:'Please enter Title',
entertitle:'Please enter title',
OperationType: 'Operation Type',
selectOperationType: 'Please select Operation type',
selectProblemClassification:'Please select Problem Classification',
@@ -314,7 +314,7 @@ module.exports = {
selectUserRole: 'Please select user role',
DepartmentAllocation: 'Department Allocation',
ClickSelectDepartment: 'Click to select a Department',
choice: 'Choice',
choice: 'Select',
identity: 'Identity',
OrdinaryUsers: 'Ordinary Users',
superior: 'Superior',
@@ -501,8 +501,8 @@ module.exports = {
feedback: 'Feedback',
approvalHistory: 'Approval History',
cannotExceed500characters: 'Cannot Exceed 500 characters',
accord: 'Compliance',
nonConformity: 'Non-Compliant',
accord: 'Compliant',
nonConformity: 'Non-compliant',
Tracked: 'To Be Tracked',
notInvolved: 'NA',
Operator: 'Operator',
@@ -531,7 +531,7 @@ module.exports = {
list: 'List',
paragraph: 'Paragraph',
enterNumber: 'Please enter No.',
enterTitle: 'Please enter Title',
enterTitle: 'Please enter title',
backDocument: 'Back To Document Library',
fileName: 'File Name',
splitTime: 'Split Time',
@@ -601,7 +601,7 @@ module.exports = {
selectSplitListDisplay: 'Please select whether to split the document list for display',
selectDisplayList: 'Please select whether to display in list',
documentSplitDisplay: 'Document splitting module display',
VirtualListName: 'Market List',
VirtualListName: 'Market Regulation List',
CertificationListName:'Homologation List',
listStatus: 'List Status',
creater: 'Created by',
@@ -615,11 +615,11 @@ module.exports = {
certificationType: 'Homo Type',
certificationLevel: 'Homo Level',
areaOfResponsibility: 'Responsible Field',
confirmationOfDesignConformity: 'Design Compliance Check ',
confirmationOfDesignConformity: 'Design Compliance Confirmation',
Deliverables: 'Deliverables',
personLiable: 'Owner',
PrehomoConfirmation: 'Pre-Homo Check',
verificationAndConformityconfirmation: 'Validation Compliance Check',
verificationAndConformityconfirmation: 'Validation Compliance Confirmation',
StandardImplementationDate: 'Standard Effective Date',
regulatoryEngineer: 'Regulation Engineer',
certifiedEngineer: 'Homo Engineer',
@@ -671,7 +671,7 @@ module.exports = {
GSO: 'GSO',
onlyOnefileUploaded: 'Only One File can be uploaded',
typeCannotUploaded: 'This Type of File Cannot be Uploaded',
confirmWithdraw: 'Confirm Withdraw ?',
confirmWithdraw: 'Confirm to Withdraw ?',
OperationDetails: 'Operation Details',
OperationTime: 'Operation Time',
oneTableAdded: 'Only one table can be added',
@@ -692,7 +692,7 @@ module.exports = {
initiateListConfirmation: 'Initiate List Confirmation',
initiateTaskConfirmation: 'Initiate Task Confirmation',
alteration: 'Change',
fixedPlate: 'Final Version',
fixedPlate: 'Finalization',
taskAffirmStatus: 'Task Confirmation Status',
taskAffirm: 'Task Confirmation',
listConfirmationStatus: 'List Confirmation Status',
@@ -735,7 +735,7 @@ module.exports = {
regulatoryTaskConfirmation: 'Regulation Task Confirmed ',
certificationStart: 'Homo Completed ',
preHomoCompletion: 'Pre-Homo Completed ',
certificationEnd: 'Homo KO',
certificationEnd: 'Homo Approved',
directoryName: 'Catalogue Name',
batch: 'Batch',
uploadTime: 'Upload Time',
@@ -800,7 +800,7 @@ module.exports = {
Battery: 'Battery',
Model: 'Model',
configurationName: 'Configuration Name',
historicalVersion: 'Historical Version',
historicalVersion: 'History Version',
configure: 'Configuration',
parameter: 'Parameter',
changeExtension: 'Extension',
@@ -859,7 +859,7 @@ module.exports = {
cannotExceed: 'Cannot Exceed',
Characters: 'Characters',
standardInformation: 'Standard Information',
VirtualList: 'MarketList',
VirtualList: 'Market List',
importTemplate: 'Import Template',
verificationConfirmationDeadline: 'Validation Compliance Confirmation Deadline',
technicalEvaluationResults: 'Technical Evaluation Result',
@@ -894,7 +894,7 @@ module.exports = {
toBeConfirmed: 'To Be Confirmed',
designComplianceReview: 'Design Compliance Check',
preHomeConfirmation: 'Pre-Homo Check',
verificationComplianceReview: 'Validation Compliance Check',
verificationComplianceReview: 'Validation Compliance Confirmation',
verificationComplianceExamine:'Validation Compliance Review',
Deployment: 'Deploy',
pleaseDesignConformityConfirmation: 'Please complete the data of design compliance confirmation',
@@ -905,14 +905,14 @@ module.exports = {
VirtualAuthenticationList: 'Virtual Homo List',
maintainVirtualList: 'Maintain Market List',
certificationListMaintenance: 'Homo List Maintenance',
reasonsForRejection: 'Reasons For Rejection',
inconformity: 'Non-Compliant',
reasonsForRejection: 'Reason for Rejection',
inconformity: 'Non-compliant',
toTrack: 'To Be Tracked',
Launch: 'Initiate',
maintainProgress: 'Maintain Schedule',
redSchedule: 'Red: unqualified without available solutions or timeline. ',
yellowSchedule: 'Yellow: unqualified and with available solutions and timeline. ',
greenRequirements: 'Green: qualified and confirmed.',
redSchedule: 'Red: non-compliant, without acceptable solutions or timeline ',
yellowSchedule: 'Yellow: non-compliant/to be tracked, with acceptable solutions and timeline ',
greenRequirements: 'Green: compliant or meeting the requirements',
blueUndeterminedState: 'Blue: pending',
authenticationMessage: 'Homo Parameter Task',
taskRegulationComplianceTask: 'Regulation Compliance Task',
@@ -953,7 +953,7 @@ module.exports = {
pleaseSubmitStatus: 'Please change the status of engineering data to Confirmed before submission',
modelName: 'Model Name',
modelYear: 'Model Year',
NoteConfirmTheChange: 'Note: After resetting, the selected item data will change to a list pending release status, and the historical data will disappear. Please confirm whether to perform a process reset',
NoteConfirmTheChange: 'Note: After resetting, the status of the selected items will be changed to To Be Released and the historical data will disappear. Please confirm whether to reset',
onlyDataChanged: 'Only data with task confirmation status of Accepted can be changed',
inquiry: 'Inquiry',
ConfirmationDeadline: 'Confirm Deadline',
@@ -990,7 +990,7 @@ module.exports = {
Filledreturn: 'Rejected by the applicant',
Submitted: 'Submitted',
ReturnedEngineer: 'Rejected by homo engineer',
SynchronizedLibrary: 'Synced to library',
SynchronizedLibrary: 'Synced to Library',
Statusis: 'Statusis',
toHavePermission: 'To Have Permission',
and: 'And',
@@ -1000,7 +1000,7 @@ module.exports = {
setCreator: 'Set Creator',
documentLibraryDetails: 'Document Library Details',
question: 'Reminder',
ConfirmQuestion: 'Confirm Question',
ConfirmQuestion: 'Confirm to remind?',
disableInput: 'Disable Input',
taskConfirmationDeadline: 'Task Confirmation Deadline',
OnlyOrTaskconfirmationOut: 'Only when the list confirmation status or task confirmation status is to be confirmed can the reminder be carried out',
@@ -1058,7 +1058,7 @@ module.exports = {
standardNameEn: 'Standard Title En',
deadlineForComments: 'Deadline for Comments',
standardNo: 'Standard No.',
implemenDate: 'Effective Date',
implemenDate: 'Implementation Date',
// 上报库
Enable: 'Enable',
Latestupdatetime: 'Latest Update Time',
@@ -1271,7 +1271,7 @@ module.exports = {
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',
punctuationmark:'You can only enter English punctuation marks except the # sign',
created: 'Time of Creation',
updated:'Last Updated',
OpenOne:'Open',
@@ -1333,6 +1333,7 @@ module.exports = {
inRecentMonths6:'In recent 6 months',
inRecentYear1:'In recent 1 year',
inRecentYear2:'In recent 2 year',
inRecentYear3:'In recent 3 year',
selectAll:'Select All',
importLocalDisassemblyOrder:'Import local disassembly order',
notExport:'Not exported',
@@ -1351,14 +1352,14 @@ module.exports = {
projectVersion:'Project Version',
softwareVersion:'Homo Software Version',
versionStatistics:'Version statistics',
addSubproject:'Add Subitem',
addSubproject:'Add Subproject',
Topping:'Top',
cancelTopping:'Cancel Topping',
relatedProjectVersion:'Related Project Version',
taskType:'Task Type',
taskStatus:'Task Status',
taskConfirmationHandling:'Task confirmation handling',
relatedVersion:'Related version',
relatedVersion:'Related Version',
filledBy:'Filled by',
parameterToBeInitiated:'Parameter to be initiated',
listTaskConfirmation:'List task confirmation',
@@ -1373,7 +1374,7 @@ module.exports = {
projectVersion:'Project Version',
softwareVersion:'Homo Software Version',
versionStatistics:'Version statistics',
addSubproject:'Add Subitem',
addSubproject:'Add Subproject',
Topping:'Top',
cancelTopping:'Cancel Topping',
relatedProjectVersion:'Related Project Version',
@@ -1383,12 +1384,12 @@ module.exports = {
allsubitemsitem:'Delete all subitems under this item?',
contactTheFounder:'Contact author',
certificationCategoryNumber: 'certification Category Number',
historicalrecord:'Historical Record',
historicalrecord:'Revision History',
Referenceparametercolumn:'Reference Parameter Column',
Updateparametercolumn:'Update The Parameter Column',
columnfirst:'Reference the parameter column first',
columnforced:'Confirm a forced retraction?',
customize:'List setting',
customize:'List Setting',
customColumn:'Custom column',
afterdate:'In... After the date',
afterdatein:'In... After date (inclusive)',
@@ -1404,10 +1405,10 @@ module.exports = {
DeliverablesResult:'Delivery Result',
reportNo:'Report No.',
productModel:'Product Model',
nameOfManufacturer:'Name Of Manufacturer',
nameOfManufacturer:'Manufacturer Name',
regulationNo:'Regulation No.',
itemInformation:'Item Information',
modifyHistory:'Historical Record',
modifyHistory:'Revision History',
returnToStudio:'Return to Studio',
Approved:'Approved',
returnedForApproval:'Returned',
@@ -1415,10 +1416,10 @@ module.exports = {
referenceDeliverables:'Reference Deliverable',
missionAccepted:'Task Accepted',
missionRejection:'Task Rejected',
turnToDo:'Turn To',
initiateTask:'Initiate a Task',
compliancereport:'Generate compliance report',
todocenter:'To-do center',
turnToDo:'Forward',
initiateTask:'Initiate Task',
compliancereport:'Generate Compliance report',
todocenter:'To-Do Center',
areYouReturnToStudio:'Confirm to return to studio?',
confirmLaunchTask:'Confirm to initiate a task ?',
conditionsNotMet:'Conditions not met',
@@ -1426,13 +1427,13 @@ module.exports = {
onlyProcessReturned:'Only data with a process status of list to be verified and rejected by the responsible person can be initiated, and the delivery type, engineering interface person, responsible person, and deadline cannot be empty',
confirmToAcceptTheTask:'Confirm to accept the task?',
confirmRejectTask:'Confirm to reject the task ?',
onlyDataStatusConfirmedSelected:'Only data with process status of task to be confirmed can be selected',
onlyDataStatusSubmittedCanBeSelected:'Only data with process status of result to be submitted can be selected',
onlyDataStatusConfirmedSelected:'Only data with process status of Task to Be Confirmed can be selected',
onlyDataStatusSubmittedCanBeSelected:'Only data with process status of Result to Be Submitted can be selected',
operationWithoutPermission:'No access',
data:"'s data",
confirmApproval:'Confirm pass review?',
confirmReturnForApproval:'Confirm Return for review ?',
onlyDataStatusResultReviewedCanBeSelected:'Only data with process status of result to be reviewed can be selected',
confirmApproval:'Confirm to approve?',
confirmReturnForApproval:'Confirm to reject?',
onlyDataStatusResultReviewedCanBeSelected:'Only data with process status of Result to Be Reviewed can be selected',
confirmResetProcess:'Confirm to reset the process?',
confirmUrging:'Confirm to remind?',
confirmWithdrawal:'Confirm to withdraw?',
@@ -1443,16 +1444,16 @@ module.exports = {
youCannotStatusListToBeReleasedAndApproved:'Data with process status of List to Be Released and Approved cannot be selected',
batchmodify:'Modify in batch?',
onlyDataListReleasedAndCertificationReturnCanSelected:'Only data with process status of List to Be Released and Returned in Homo can be selected and the deadline cannot be empty',
type:'type',
type:'Type',
select:'select',
onlyDataWithProcessStatusDeleted:'Only data with process status of list to be released and approved can be deleted',
onlyDataWithProcessStatusDeleted:'Only data with process status of List to Be Released and Approved can be deleted',
complianceCertificationProgram:'Compliance & Homologation Program',
listPublishing:'List Publishing',
responsibilityConfirmation:'Responsibility Confirmation',
designVerification:'Design Verification',
getStarted:'Get Started',
certificationStartOne:'Certification Start',
verificationAndVerification:'Verification And Verification',
listPublishing:'List Release',
responsibilityConfirmation:'Responsibility Confirm',
designVerification:'Design Check',
getStarted:'Pre-Homo Starts',
certificationStartOne:'Homo Starts',
verificationAndVerification:'Validation Check',
projectInterfacePersonRegulationEngineerSetting:'Project Interface Person - Regulation Engineer Setting',
projectInterfacePersonCertificationEngineerSetting:'Project Interface Person - Certification Engineer Setting',
registrationnumber:'Product registration number',
@@ -1527,6 +1528,7 @@ module.exports = {
Taskresponsibilityrecognition:'Responsibility Confirm',
uploadattachment:'Upload',
Processhistory:'Process history',
historyData:'1. Regulatory Engineer, 2. Responsible person, 3. Responsible person, 4. Regulatory Engineer',
resultofhandling:'Result of handling',
cause:'cause',
networksecurityrequirements:'Network security requirements',
@@ -1670,8 +1672,8 @@ module.exports = {
Taskconfirmationresult:'Task confirmation result',
Compliancetaskhandling:'Compliance task handling',
theDataYouSelectedContainsSkip:'The data selected contains empty deliverable; please confirm whether to skip',
designComplianceProcessFor:'Design compliance process for',
validationComplianceProcessFor:'Validation compliance process for',
designComplianceProcessFor:'Design Compliance Process for',
validationComplianceProcessFor:'Validation Compliance Process for',
thePersonResponsibleForVerifyingEmpty:'The owner for validation compliance process cannot be empty',
theDeadlineComplianceProcessCannotEmpty:'The deadline for validation compliance process cannot be empty',
theDeadlineForTheDesignCannotBeEmpty:'The deadline for design compliance process cannot be empty',
@@ -1696,7 +1698,7 @@ module.exports = {
taskNodeMismatch:'Task Node Mismatch',
ifNot:'If not, fill in "none" or "not involved"',
designComplianceProcess:'Design Compliance Process',
validationComplianceProcess:'Verify Compliance Process',
validationComplianceProcess:'Validation Compliance Process',
onlyDataInTheReminderProcessBanBeProcessed:'Only data in the reminder process can be processed',
expeditionProcess:'Reminder Process',
addfunction:'Add function',
@@ -1705,7 +1707,7 @@ module.exports = {
softwareversion:'Software version',
returntofill:'Return to fill',
thereAreCurrentlyNoRegulationsToHandle:'No regulations to be processed now',
certificationSubmission:'Certification Submission',
certificationSubmission:'Application Submitted',
upgradecompletion:'Upgrade completion',
implementedupgrade:'Whether the implemented upgrade is consistent with the record',
numberofvehicles:'Number of vehicles that have completed upgrades',
@@ -1714,7 +1716,7 @@ module.exports = {
implementationrecords:'Fault handling measures and emergency response implementation records',
onlyDataWithListStatusDraftCanBeDeleted:'Only data with a list status of Draft can be deleted',
implementationDateTwo:'Implementation Date',
reasonForReturn:'Reason For Return',
reasonForReturn:'Reason for Reject',
pleaseFillInTheInformationTaskProcess:'Please fill in the information of the Eng. Interface and the owner before initiating the task process',
complianceReporting:'Compliance Reporting',
youCanOnlySelectStatusClearSubmit:'You can only select data with a process status of Clear to Submit',
@@ -1737,7 +1739,7 @@ module.exports = {
dykzq:'Corresponding controller',
releaseRegulatoryList:'Regulation List Release',
preHomoFlow:'Pre-Homo Process',
verifyConformanceConfirmation:'Validation Compliance Check',
verifyConformanceConfirmation:'Validation Compliance Confirmation',
designConformanceVerification:'Design Compliance Check',
nomorethan:'No more than 10',
marketCertificationList:'Market Certification List',
@@ -1753,7 +1755,7 @@ module.exports = {
resultsToBeSubmitted:'Results to be submitted',
resultsToBeReviewed:'Results to be reviewed',
compliance:'Compliant',
nonCompliance:'Non-Compliant',
nonCompliance:'Non-compliant',
toBeTracked:'To Be Tracked',
NA:'NA',
electroniccontrollerparameter:'Electronic controller parameter',
@@ -1839,6 +1841,17 @@ module.exports = {
toResubmit:'To Resubmit',
selectDesignConformanceAsConformance:'Select Design Conformance verification process state as Conformance or Verify conformance verification process state as conformance obtained data',
submissionProcess:'Submission Process',
localapproval1:'Local Approval1',
localapproval2:'Local Approval2',
averageapprovalperiod:'Average approval period',
day:'day',
passreturntime:'Pass/return time',
approvalcycle:'Approval cycle(day)',
transittime:'Transit Time',
returntime:'Return time',
operationguide:'Project operation guide',
copyLink:'Copy link',
successfulReplication:'Successful replication',
//手机端
myCollection:'My Collection',
@@ -1884,5 +1897,8 @@ module.exports = {
browsingTime:'Browsing Time',
pleaseViewOnPc:'Please view on PC',
taskHandling:'Task Handling',
backToHomePage:'Back to home page',
pleaseEnterUserAccountSearchFor:'Please enter a user account to search for',
exportOption:'Export Option',
includeTitle:'Include title',
Notitleincluded:'No title included',
}
File diff suppressed because it is too large Load Diff
@@ -8,7 +8,7 @@
:allowClear="isSingleChoice ? true : false"
:label-in-value="isSingleChoice ? false:true"
:value="selectValue"
:placeholder="$t('PleaseSelect')+query.db_field_txt"
:placeholder="$t('pleaseEnterUserAccountSearchFor')"
style="width: 100%"
:disabled="disabled"
:default-active-first-option="false"
@@ -165,7 +165,7 @@
getUserAndDepart(value, callback) {
let query = {
current: 1,
pageSize: 10,
pageSize: 20,
username: '*' + value + '*'
}
getAction('/sys/user/page', query).then((res) => {
+10 -2
View File
@@ -230,7 +230,12 @@
// this.queryParam['WarnTimeText'] = '2'
// }
let startTime = moment(new Date()).format('YYYY-MM-DD')
let endTime = this.getNowdate()
let endTime = ''
if (!this.queryParam['WarnTimeText']){
endTime = '2099-01-01'
}else{
endTime = this.getNowdate()
}
if(this.queryParam['WarnTimeText'] == '5'){
this.queryParam['WarnTime'] = [endTime, startTime]
}else{
@@ -245,7 +250,7 @@
if (this.isDefault) {
let startTime = moment(new Date()).format('YYYY-MM-DD')
// this.queryParam['WarnTimeText'] = '2'
let endTime = this.getNowdate()
let endTime = '2099-01-01'
this.queryParam['WarnTime'] = [startTime, endTime]
this.queryParam = { ...this.queryParam }
}
@@ -295,6 +300,9 @@
}else if (this.queryParam['WarnTimeText'] == '5') {
monthData = 7
yearData = -1
}else if (this.queryParam['WarnTimeText'] == '6') {
monthData = 37
yearData = 3
}
if(this.queryParam['WarnTimeText'] == '5'){
var time = new Date();
+282 -267
View File
@@ -31,13 +31,30 @@
<!-- <a-icon type="question-circle-o"></a-icon>-->
<!-- </a>-->
<!-- </span>-->
<div class="action" @click="Jumpflybook">
<span class="header-notice">
<a-tooltip placement="bottomRight" :title="$t('userManual')" overlayClassName="tooltipColor">
<a-icon style="font-size: 16px; padding: 4px; color: #000000A6" type="question-circle"/>
</a-tooltip>
<!-- <div class="action" @click="Jumpflybook">-->
<!-- <span class="header-notice">-->
<!-- <a-tooltip placement="bottomRight" :title="$t('userManual')" overlayClassName="tooltipColor">-->
<!-- <a-icon style="font-size: 16px; padding: 4px; color: #000000A6" type="question-circle"/>-->
<!-- </a-tooltip>-->
<!-- </span>-->
<!-- </div>-->
<a-dropdown>
<span class="action action-full ant-dropdown-link user-dropdown-menu">
<!-- <a-avatar class="avatar" size="small" :src="getAvatar()"/>-->
<!-- <span v-if="isDesktop()">welcome,{{ userInfo().username }}</span>-->
<a-icon style="font-size: 16px; padding: 4px; color: #000000A6" type="question-circle"/>
</span>
</div>
<a-menu slot="overlay" class="user-dropdown-menu-wrapper">
<a-menu-item key="5" @click="Jumpflybook">
<!-- <a-icon type="logout"/>-->
<span>{{$t('userManual')}}</span>
</a-menu-item>
<a-menu-item key="6" @click="Jumpoperationguide">
<!-- <a-icon type="logout"/>-->
<span>{{$t('operationguide')}}</span>
</a-menu-item>
</a-menu>
</a-dropdown>
<header-notice class="action"/>
<div class="action">
<span v-show="localeval=='zh-cn'">
@@ -113,283 +130,281 @@
</template>
<script>
import HeaderNotice from './HeaderNotice'
import UserPassword from './UserPassword'
import SettingDrawer from '@/components/setting/SettingDrawer'
import DepartSelect from './DepartSelect'
import { mapActions, mapGetters, mapState } from 'vuex'
import { mixinDevice } from '@/utils/mixin.js'
import { getFileAccessHttpUrl, getAction } from '@/api/manage'
import Vue from 'vue'
import { UI_CACHE_DB_DICT_DATA, ACCESS_TOKEN } from '@/store/mutation-types'
import moment from 'moment'
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
import enUS from 'ant-design-vue/es/locale/en_US'
import 'moment/locale/zh-cn'
import { generateIndexRouter } from '@/utils/util'
import store from '../../store'
import router, { resetRouter } from '../../router'
import HeaderNotice from './HeaderNotice'
import UserPassword from './UserPassword'
import SettingDrawer from '@/components/setting/SettingDrawer'
import DepartSelect from './DepartSelect'
import { mapActions, mapGetters, mapState } from 'vuex'
import { mixinDevice } from '@/utils/mixin.js'
import { getFileAccessHttpUrl, getAction } from '@/api/manage'
import Vue from 'vue'
import { UI_CACHE_DB_DICT_DATA, ACCESS_TOKEN } from '@/store/mutation-types'
import moment from 'moment'
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
import enUS from 'ant-design-vue/es/locale/en_US'
import 'moment/locale/zh-cn'
import { generateIndexRouter } from '@/utils/util'
import store from '../../store'
import router, { resetRouter } from '../../router'
moment.locale('zh-cn')
const EN = 'en-us'
const ZH = 'zh-cn'
moment.locale('zh-cn')
const EN = 'en-us'
const ZH = 'zh-cn'
export default {
name: 'UserMenu',
mixins: [mixinDevice],
data() {
return {
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
searchMenuOptions: [],
searchMenuComp: 'span',
searchMenuVisible: false,
isLoading: false,
locale: zhCN,
localeval: 'zh-cn'
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
}
},
components: {
HeaderNotice,
UserPassword,
DepartSelect,
SettingDrawer
},
props: {
theme: {
type: String,
required: false,
default: 'dark'
}
},
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
created() {
let lists = []
this.searchMenus(lists, this.permissionMenuList)
this.searchMenuOptions = [...lists]
},
mounted() {
//如果是单点登录模式
if (process.env.VUE_APP_SSO == 'true') {
let depart = this.userInfo().orgCode
if (!depart) {
this.updateCurrentDepart()
}
}
this.localeval = localStorage.getItem('language')
if (this.localeval == 'zh-cn') {
this.$i18n.locale = ZH
this.locale = zhCN
moment.locale('zh-cn')
} else if (this.localeval == 'en-us') {
this.locale = enUS
moment.locale('en-us')
this.$i18n.locale = EN
}
},
computed: {
...mapState({
// 后台菜单
permissionMenuList: state => state.user.permissionList
})
},
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
watch: {
// update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
device: {
immediate: true,
handler() {
this.searchMenuVisible = false
this.searchMenuComp = this.isMobile() ? 'a-modal' : 'span'
}
}
// update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
},
methods: {
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
showClick() {
this.searchMenuVisible = true
},
hiddenClick() {
this.shows = false
},
Jumpflybook() {
window.open('https://eicgyqr5mc.feishu.cn/docx/doxcnY2GbQfMSMqLP0eIFzFlEcd', '_blank')
},
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
...mapActions(['Logout']),
...mapGetters(['username', 'avatar', 'userInfo']),
getAvatar() {
return getFileAccessHttpUrl(this.avatar())
},
handleLogout() {
const that = this
this.$confirm({
title: '提示',
content: '真的要注销登录吗 ?',
onOk() {
return that.Logout({}).then(() => {
// update-begin author:wangshuai date:20200601 for: 退出登录跳转登录页面
// TODO 在部署线上时注掉以下代码
that.$router.push({ path: '/user/login' })
// TODO 在部署线上时解开以下代码
// window.location.href = 'https://signin.nio.com/logout?client_id=100679&redirect_uri=' +
// encodeURIComponent(window.loginUrl) + '&response_type=code' //线上
localStorage.removeItem('language')
// update-end author:wangshuai date:20200601 for: 退出登录跳转登录页面
//window.location.reload()
}).catch(err => {
that.$message.error({
title: '错误',
description: err.message
})
})
},
onCancel() {
}
})
},
updatePassword() {
let username = this.userInfo().username
this.$refs.userPassword.show(username)
},
updateCurrentDepart() {
this.$refs.departSelect.show()
},
systemSetting() {
this.$refs.settingDrawer.showDrawer()
},
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
searchMenus(arr, menus) {
for (let i of menus) {
if (!i.hidden && 'layouts/RouteView' !== i.component) {
arr.push(i)
}
if (i.children && i.children.length > 0) {
this.searchMenus(arr, i.children)
}
}
},
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
// update_begin author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
searchMethods(value) {
let route = this.searchMenuOptions.filter(item => item.id === value)[0]
if (route.meta.internalOrExternal === true || route.component.includes('layouts/IframePageView')) {
window.open(route.meta.url, '_blank')
} else {
this.$router.push({ path: route.path })
}
this.searchMenuVisible = false
},
// update_end author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
/*update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
/*update_begin author:liushaoqian date:20200507 for: 刷新缓存*/
clearCache() {
getAction('sys/dict/refleshCache').then((res) => {
if (res.success) {
//重新加载缓存
getAction('sys/dict/queryAllDictItems').then((res) => {
if (res.success) {
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
}
})
this.$message.success('刷新缓存完成!')
}
}).catch(e => {
this.$message.warn('刷新缓存失败!')
console.log('刷新失败', e)
})
},
/*update_end author:liushaoqian date:20200507 for: 刷新缓存*/
moment,
changeLocale(localeval) {
this.isLoading = true
switch (localeval) {
case 'zh-cn':
localStorage.setItem('language', 'zh-cn')
break
case 'en-us':
localStorage.setItem('language', 'en-us')
break
}
getAction('/sys/dict/queryAllDictItemsByCut', {}).then((res) => {
if (res.success) {
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
store.dispatch('GetPermissionList').then(res => {
const menuData = res.result.menu
resetRouter()
let constRoutes = []
constRoutes = generateIndexRouter(menuData)
let isPhone = localStorage.getItem('isPhone')
if (isPhone == 'yes') {
router.addRoutes([{
'path': '*', 'redirect': '/404', 'hidden': true
}])
} else {
router.addRoutes(constRoutes)
}
this.$root.Bus.$emit('switchLanguage', localeval)
this.isLoading = false
this.localeval = localeval
if (localeval === EN) {
moment.locale(EN)
this.$i18n.locale = EN
this.locale = enUS
} else {
moment.locale(ZH)
this.$i18n.locale = ZH
this.locale = zhCN
}
})
}
})
export default {
name: 'UserMenu',
mixins: [mixinDevice],
data() {
return {
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
searchMenuOptions: [],
searchMenuComp: 'span',
searchMenuVisible: false,
isLoading: false,
locale: zhCN,
localeval: 'zh-cn'
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
}
},
components: {
HeaderNotice,
UserPassword,
DepartSelect,
SettingDrawer
},
props: {
theme: {
type: String,
required: false,
default: 'dark'
}
},
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
created() {
let lists = []
this.searchMenus(lists, this.permissionMenuList)
this.searchMenuOptions = [...lists]
},
mounted() {
//如果是单点登录模式
if (process.env.VUE_APP_SSO == 'true') {
let depart = this.userInfo().orgCode
if (!depart) {
this.updateCurrentDepart()
}
}
this.localeval = localStorage.getItem('language')
if (this.localeval == 'zh-cn') {
this.$i18n.locale = ZH
this.locale = zhCN
moment.locale('zh-cn')
} else if (this.localeval == 'en-us') {
this.locale = enUS
moment.locale('en-us')
this.$i18n.locale = EN
}
},
computed: {
...mapState({
// 后台菜单
permissionMenuList: state => state.user.permissionList
})
},
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
watch: {
// update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
device: {
immediate: true,
handler() {
this.searchMenuVisible = false
this.searchMenuComp = this.isMobile() ? 'a-modal' : 'span'
}
}
// update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
},
methods: {
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
showClick() {
this.searchMenuVisible = true
},
hiddenClick() {
this.shows = false
},
Jumpflybook(){
window.open('https://eicgyqr5mc.feishu.cn/docx/doxcnY2GbQfMSMqLP0eIFzFlEcd', '_blank');
},
Jumpoperationguide(){
window.open('https://eicgyqr5mc.feishu.cn/docx/ZyhWdIz7EoMZ68xhI2bckcWWnMg', '_blank');
},
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
...mapActions(['Logout']),
...mapGetters(['username', 'avatar', 'userInfo']),
getAvatar() {
return getFileAccessHttpUrl(this.avatar())
},
handleLogout() {
const that = this
this.$confirm({
title: '提示',
content: '真的要注销登录吗 ?',
onOk() {
return that.Logout({}).then(() => {
// update-begin author:wangshuai date:20200601 for: 退出登录跳转登录页面
// TODO 在部署线上时注掉以下代码
that.$router.push({ path: '/user/login' })
// window.location.href = 'https://signin-test.nio.com/logout?client_id=100679&redirect_uri=' +
// encodeURIComponent('http://localhost:3000/dashboard/analysis') + '&response_type=code' //本地
// TODO 在部署线上时解开以下代码
// window.location.href = 'https://signin.nio.com/logout?client_id=100679&redirect_uri=' +
// encodeURIComponent('http://grp.nioint.com/dashboard/analysis') + '&response_type=code' //线上
localStorage.removeItem('language')
// update-end author:wangshuai date:20200601 for: 退出登录跳转登录页面
//window.location.reload()
}).catch(err => {
that.$message.error({
title: '错误',
description: err.message
})
})
},
onCancel() {
}
})
},
updatePassword() {
let username = this.userInfo().username
this.$refs.userPassword.show(username)
},
updateCurrentDepart() {
this.$refs.departSelect.show()
},
systemSetting() {
this.$refs.settingDrawer.showDrawer()
},
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
searchMenus(arr, menus) {
for (let i of menus) {
if (!i.hidden && 'layouts/RouteView' !== i.component) {
arr.push(i)
}
if (i.children && i.children.length > 0) {
this.searchMenus(arr, i.children)
}
}
},
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
// update_begin author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
searchMethods(value) {
let route = this.searchMenuOptions.filter(item => item.id === value)[0]
if (route.meta.internalOrExternal === true || route.component.includes('layouts/IframePageView')) {
window.open(route.meta.url, '_blank')
} else {
this.$router.push({ path: route.path })
}
this.searchMenuVisible = false
},
// update_end author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
/*update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
/*update_begin author:liushaoqian date:20200507 for: 刷新缓存*/
clearCache() {
getAction('sys/dict/refleshCache').then((res) => {
if (res.success) {
//重新加载缓存
getAction('sys/dict/queryAllDictItems').then((res) => {
if (res.success) {
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
}
})
this.$message.success('刷新缓存完成!')
}
}).catch(e => {
this.$message.warn('刷新缓存失败!')
console.log('刷新失败', e)
})
},
/*update_end author:liushaoqian date:20200507 for: 刷新缓存*/
moment,
changeLocale(localeval) {
this.isLoading = true
switch (localeval) {
case 'zh-cn':
localStorage.setItem('language', 'zh-cn')
break
case 'en-us':
localStorage.setItem('language', 'en-us')
break
}
getAction('/sys/dict/queryAllDictItemsByCut', {}).then((res) => {
if (res.success) {
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
store.dispatch('GetPermissionList').then(res => {
const menuData = res.result.menu
resetRouter()
let constRoutes = []
constRoutes = generateIndexRouter(menuData)
router.addRoutes(constRoutes)
this.$root.Bus.$emit('switchLanguage', localeval)
this.isLoading = false
this.localeval = localeval
if (localeval === EN) {
moment.locale(EN)
this.$i18n.locale = EN
this.locale = enUS
} else {
moment.locale(ZH)
this.$i18n.locale = ZH
this.locale = zhCN
}
})
}
})
}
}
}
</script>
<style lang="less" scoped>
/* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
/* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
.user-wrapper .search-input {
width: 180px;
color: inherit;
/* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
/* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
.user-wrapper .search-input {
width: 180px;
color: inherit;
/deep/ .ant-select-selection {
background-color: inherit;
border: 0;
border-bottom: 1px solid white;
/deep/ .ant-select-selection {
background-color: inherit;
border: 0;
border-bottom: 1px solid white;
&__placeholder, &__field__placeholder {
color: inherit;
}
&__placeholder, &__field__placeholder {
color: inherit;
}
}
}
/* update-end author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
/* update_end author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
/* update-end author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
/* update_end author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
</style>
<style scoped>
.logout_title {
color: inherit;
text-decoration: none;
}
.logout_title {
color: inherit;
text-decoration: none;
}
.action {
color: rgba(0, 0, 0, 0.65) !important;
font-size: 14px;
}
.action {
color: rgba(0, 0, 0, 0.65) !important;
font-size: 14px;
}
.action .avatar {
background: #ccc !important;
}
.action .avatar {
background: #ccc !important;
}
</style>
@@ -30,7 +30,7 @@
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</div>
</div>
</div>
<div class="box-content-content">
<div class="box-content-content-index"
@@ -127,6 +127,10 @@
</div>
</div>
<div class="content-box-button-right">
<div class="content-box-button-text" @click="copyLinkClick(item)">
<img src="~/@assets/feishu.png" alt="" class="jumpicon">
{{$t('copyLink')}}
</div>
<div class="content-box-button-text" @click="pushJump(item)">
<img src="~/@assets/feishu.png" alt="" class="jumpicon">
{{$t('contactTheFounder')}}
@@ -424,9 +428,9 @@
this.queryForm = row
this.$refs.SelectedByRef.getPush()
},
pushJump(row){
pushJump(row) {
let query = {
userName: row.createBy,
userName: row.createBy
}
postAction('/lark/getLarkApplinkByUserName', query).then((res) => {
if (res.code === 200) {
@@ -465,6 +469,12 @@
},
handleToggleSearch() {
this.toggleSearchStatus = !this.toggleSearchStatus
},
copyLinkClick(item) {
let text = window.location.host + this.$route.path + '?id=' + item.id
navigator.clipboard.writeText(text).then((res) => {
this.$message.success(this.$t('successfulReplication'))
})
}
}
}
@@ -476,10 +486,12 @@
overflow: hidden;
/*margin: 0 auto;*/
}
.jumpicon{
.jumpicon {
height: 13.72px;
width: 15.44px;
}
.box-title-text {
line-height: 1.4;
width: 360px;
@@ -53,6 +53,10 @@
</div>
</div>
<div class="content-box-button-right">
<div class="content-box-button-text" @click="copyLinkClick(queryForm)">
<img src="~/@assets/feishu.png" alt="" class="jumpicon">
{{$t('copyLink')}}
</div>
<div class="content-box-button-text" @click="pushJump(queryForm)">
<img src="~/@assets/feishu.png" alt="" class="jumpicon">
{{$t('contactTheFounder')}}
@@ -493,6 +497,12 @@
this.$refs.SelectedByRef.submitLoading = false
}
})
},
copyLinkClick(item) {
let text = window.location.host + this.$route.path + '?id=' + item.id
navigator.clipboard.writeText(text).then((res) => {
this.$message.success(this.$t('successfulReplication'))
})
}
}
}
@@ -241,10 +241,10 @@ export default {
})
},
addClick(index){
if(this.formInline.dataList.length + 1 > 10){
this.$message.warning(this.$t('nomorethan'))
return
}
// if(this.formInline.dataList.length + 1 > 10){
// this.$message.warning(this.$t('nomorethan'))
// return
// }
this.formInline.dataList.splice(index + 1, 0, {})
this.formInline = { ...this.formInline }
},
@@ -30,11 +30,11 @@
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span v-if='!propflag' class="Required">*</span>
<span class="title-text-text" :title="$t('filingtime')">
{{$t('filingtime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="batjsj">
<a-form-model-item class="itemModel" :prop="!propflag?'batjsj':''" :key="propflag">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('filingtime')"
@change="dateChange({db_field_name:'batjsj'})"
@@ -46,6 +46,44 @@
</a-form-model-item>
</div>
</a-col>
<a-col :span="24" v-if='transittime'>
<div class="box-title-text">
<div class="title-text">
<span v-if='!propflag' class="Required">*</span>
<span class="title-text-text" :title="$t('transittime')">
{{$t('transittime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="tgthsj">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('transittime')"
@change="dateChange({db_field_name:'tgthsj'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.tgthsj"
:disabled="false"
style="width: 90%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24" v-if='returntime'>
<div class="box-title-text">
<div class="title-text">
<span v-if='!propflag' class="Required">*</span>
<span class="title-text-text" :title="$t('returntime')">
{{$t('returntime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="tgthsj">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('returntime')"
@change="dateChange({db_field_name:'tgthsj'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.tgthsj"
:disabled="false"
style="width: 90%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
@@ -77,9 +115,13 @@ export default {
return {
visible: false,
confirmLoading: false,
transittime:false,
returntime:false,
propflag: false,
formInline: {
bazt:undefined,
batjsj:'',
tgthsj:'',
bz:'',
},
rules: {
@@ -99,7 +141,14 @@ export default {
],
bz: [
{ min: 1, max: 500, message: this.$t('cantExeed') + '500' + this.$t('characters'), trigger: 'blur' }
]
],
tgthsj: [
{
required: true,
message: this.$t('cannotEmpty'),
trigger: 'change'
}
],
// listConfirmation: [
// {
// required: true,
@@ -161,16 +210,43 @@ export default {
this.ids = row.join(',')
this.formInline = {
bazt:undefined,
tgthsj:'',
batjsj:'',
bz:'',
}
this.propflag = true
this.transittime = false
this.returntime = false
}else{
this.formInline.bazt = row.bazt ? row.bazt : undefined
this.formInline.batjsj = row.batjsj
this.formInline.tgthsj = row.tgthsj
this.formInline.bz = row.bz
this.ids = row.id
if (this.formInline.bazt == 1) {
this.propflag = true
this.transittime = false
this.returntime = false
} else if (this.formInline.bazt == 2) {
this.propflag = true
this.transittime = false
this.returntime = false
} else if(this.formInline.bazt == 4){
this.propflag = false
this.transittime = true
this.returntime = false
} else if(this.formInline.bazt == 5){
this.propflag = false
this.returntime = true
this.transittime = false
}else{
this.propflag = false
this.transittime = false
this.returntime = false
}
}
this.visible = true
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate()
})
@@ -197,7 +273,29 @@ export default {
}
})
},
selectchange(value){
selectchange(value) {
console.log(value)
if (value == 1) {
this.propflag = true
this.transittime = false
this.returntime = false
} else if (value == 2) {
this.propflag = true
this.transittime = false
this.returntime = false
} else if(value == 4){
this.propflag = false
this.transittime = true
this.returntime = false
} else if(value == 5){
this.propflag = false
this.returntime = true
this.transittime = false
}else{
this.propflag = false
this.transittime = false
this.returntime = false
}
this.$nextTick(() => {
this.formInline = { ...this.formInline }
this.$refs.ruleForm.validateField('bazt')
@@ -91,36 +91,36 @@
</div>
<div class="table-operator">
<div @click="createvehicleandfunctionrecords"
v-has="'regulatoryAndTechnicalAssessment:initiationProcess'"
v-has="'otasj:cjcxjgnba'"
class="operator-text">
<a-icon type="plus"/>
{{$t('createanupgradeactivityrecord')}}
</div>
<div @click="citeforrecord"
v-has="'regulatoryAndTechnicalAssessment:batchDelete'"
v-has="'otasj:yyba'"
class="operator-text">
<a-icon type="solution"/>
{{$t('citeforrecord')}}
</div>
<div @click="maintenanceallClick()"
v-has="'regulatoryAndTechnicalAssessment:batchDelete'"
v-has="'otasj:sjwh'"
class="operator-text">
<a-icon type="setting"/>
{{$t('datamaintenance')}}
</div>
<div v-has="'regulatoryAndTechnicalAssessment:batchDelete'"
<div v-has="'otasj:sjdr'"
class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true"
:accept="'.zip'" @getList="getList"/>
</div>
<div @click="handleModule"
v-has="'regulatoryAndTechnicalAssessment:batchDelete'"
v-has="'otasj:mbxz'"
class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
<div @click="gnxtwhClick"
v-has="'regulatoryAndTechnicalAssessment:batchDelete'"
v-has="'otasj:onxtwh'"
class="operator-text">
<a-icon type="solution"/>
{{$t('gnxtwh')}}
@@ -159,6 +159,9 @@
@click="deleteData(record)">{{$t('delete')}}</a>
</span>
</a-table>
<div>
{{$t('averageapprovalperiod')}} : {{number}}{{$t('day')}}
</div>
<div class="page" v-if="dataSource && dataSource.length > 0">
<a-pagination
:show-total="total => $t('total')+` ${total} `+$t('strip')"
@@ -205,6 +208,7 @@ export default {
importZipUrl: '/ota/otaBaSjList/importData',//导入
},
number:'',
visible: false,
loading: false,
toggleSearchStatus: false,
@@ -301,9 +305,23 @@ export default {
title: this.$t('filingtime'),
align: 'left',
ellipsis: true,
width: 140,
width: 170,
dataIndex: 'batjsj'
},
{
title: this.$t('passreturntime'),
align: 'left',
ellipsis: true,
width: 170,
dataIndex: 'tgthsj'
},
{
title: this.$t('approvalcycle'),
align: 'left',
ellipsis: true,
width: 140,
dataIndex: 'spzq'
},
{
title: this.$t('createTime'),
align: 'left',
@@ -374,13 +392,14 @@ export default {
this.loading = true
getAction('/ota/otaBaSjList/page', query).then((res) => {
if (res.success) {
if (res.result.current > 1 && res.result.records.length == 0) {
if (res.result.list.current > 1 && res.result.list.records.length == 0) {
this.pageNo = 1
this.getList()
return
}
this.dataSource = res.result.records || []
this.total = res.result.total
this.dataSource = res.result.list.records || []
this.number = res.result.pjspzq
this.total = res.result.list.total
this.loading = false
} else {
this.loading = false
@@ -2,10 +2,10 @@
<!-- 第五页 -->
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otasjxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otasjxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -2,10 +2,10 @@
<!-- 第二页 -->
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otasjxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otasjxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -2,10 +2,10 @@
<!-- 第四页 -->
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otasjxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otasjxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -60,8 +60,8 @@
<span slot="differentialupgradeornot" slot-scope="text,record" :max-length="50">
<!-- <a-input :placeholder="$t('pleaseEnter')" v-model="record.sfcfsj" :title='record.sfcfsj'></a-input>-->
<a-radio-group v-model="record.sfcfsj">
<a-radio :value="1"> {{ $t('yes') }} </a-radio>
<a-radio :value="2"> {{ $t('not') }} </a-radio>
<a-radio :value="'1'"> {{ $t('yes') }} </a-radio>
<a-radio :value="'2'"> {{ $t('not') }} </a-radio>
</a-radio-group>
</span>
<!-- 操作列-->
@@ -2,10 +2,10 @@
<!-- 第三页 -->
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otasjxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otasjxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -136,11 +136,35 @@
</tr>
<tr>
<td colspan="2" align="left" height="50px">{{$t('upgradeactivityprovidesuserconfirmationoptions')}}</td>
<td height="50px">
<a-radio-group style='margin-left: 40px;' v-model="form.yhqr">
<a-radio :value="1"> {{ $t('yes') }} </a-radio>
<a-radio :value="2"> {{ $t('not') }} </a-radio>
</a-radio-group>
<td :height="qrheight" style='position: relative'>
<div>
<a-radio-group class='box-input-qr' @change='qrchange' v-model="form.yhqr">
<a-radio :value="'1'"> {{ $t('yes') }} </a-radio>
<a-radio :value="'2'"> {{ $t('not') }} </a-radio>
</a-radio-group>
</div>
<div v-if='flagqr'>
<j-dict-select-tag class="box-input2"
v-model="form.flagqr"
:disabled="disable"
dictCode="O_T_A_-_sheng1_ji2_ying3_xiang3_ping2_gu1_-_sheng1_ji2_que4_ren4"
:placeholder="$t('PleaseSelect')"
:type="'select'"
@input="handleInput(form.flagqr)"
:triggerChange="false"/>
</div>
<div v-if='flagqrqt'>
<a-input class="box-input-qr2"
v-model="form.qttext"
:title="form.qttext ? form.qttext : $t('PleaseEnter')"
:placeholder="$t('PleaseEnter')"></a-input>
</div>
<div v-if='flagly'>
<a-input class="box-input2"
v-model="form.ly"
:title="form.ly ? form.ly : $t('PleaseEnter')+ $t('reason')"
:placeholder="$t('PleaseEnter')+ $t('reason')"></a-input>
</div>
</td>
</tr>
<tr>
@@ -200,6 +224,9 @@ export default {
importZipUrl: '/ota/otaBaSjSjyxpg/importData?otaId=' + localStorage.getItem('otaId'),//导入
},
flag:false,
flagqr:false,
flagqrqt:false,
flagly:false,
loading: false,
disable:false,
columns: [
@@ -329,6 +356,7 @@ export default {
scopedSlots: { customRender: 'operation' }
}
],
qrheight:'50px',
form:{
sjmd:'',
}
@@ -397,6 +425,30 @@ this.$forceUpdate()
}else{
this.flag = false
}
if(this.form.yhqr == '1'){
this.flagqr = true
this.flagly = false
this.qrheight = '100px'
}else{
this.flagqr = false
this.flagly = true
this.qrheight = '100px'
}
if(this.form.yhqr == '1' && this.form.flagqr == '344a3320beba45afb3718c59b7a7144a'){
this.qrheight = '150px'
this.flagqrqt = true
this.flagly = false
}else if(this.form.yhqr == '1' && this.form.flagqr != '344a3320beba45afb3718c59b7a7144a'){
this.flagqr = true
this.flagqrqt = false
this.flagly = false
this.qrheight = '100px'
}else {
this.flagqrqt = false
this.flagqr = false
this.flagly = true
this.qrheight = '100px'
}
})
},
save(){
@@ -426,19 +478,39 @@ this.$forceUpdate()
changeQuery(val) {
if(val.indexOf('将车辆置于安全状态') != -1 || val.indexOf('Put the vehicle in a safe position') != -1){
this.flag = true
// let long = localStorage.getItem('language')
// let cut = ''
// if (long && long == 'zh-cn') {
this.form.aqjzWbk = '车辆保持在功能受限制状态,此状态下车辆无法行驶,保证其处于安全状态'
// } else if (long && long == 'en-us') {
// this.form.aqjzWbk = 'The vehicle remains in a functionally restricted state, in which the vehicle cannot be driven to ensure that it is in a safe state'
// }
// this.getData()
}else{
this.flag = false
this.form.aqjzWbk = ''
}
},
qrchange(val){
if(val.target.value == '1'){
this.qrheight = '100px'
this.flagqr = true
this.flagly = false
if(this.form.flagqr == '344a3320beba45afb3718c59b7a7144a'){
this.qrheight = '150px'
this.flagqrqt = true
}
}else{
this.qrheight = '100px'
this.flagly = true
this.flagqr = false
this.flagqrqt = false
}
},
handleInput(val){
if(val == '344a3320beba45afb3718c59b7a7144a'){
this.qrheight = '150px'
this.flagqrqt = true
this.flagly = false
}else {
this.qrheight = '100px'
this.flagqrqt = false
this.flagly = false
}
},
}
}
</script>
@@ -475,6 +547,15 @@ this.$forceUpdate()
margin-left: 40px;
top: 4px;
}
.box-input-qr {
//display: inline-block;
width: calc(100% - 80px);
position: absolute;
top: 16px;
height: 38px;
margin-left: 40px;
//top: 4px;
}
.box-input2 {
//display: inline-block;
width: calc(100% - 80px);
@@ -483,6 +564,14 @@ this.$forceUpdate()
margin-left: 40px;
top: 50px;
}
.box-input-qr2 {
//display: inline-block;
width: calc(100% - 80px);
position: absolute;
height: 38px;
margin-left: 40px;
top: 95px;
}
::v-deep .ant-table-row-cell-ellipsis .ant-table-column-title {
white-space: pre-wrap!important;
}
@@ -2,11 +2,11 @@
<!-- 第一页 -->
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otasjxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'"
@getList="getData" />
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otasjxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download" />
{{ $t('templateDownload') }}
</div>
@@ -2,10 +2,10 @@
<!-- 第六页 -->
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otasjxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otasjxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -1,10 +1,10 @@
<template>
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otacxxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otacxxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -1,10 +1,10 @@
<template>
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otacxxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otacxxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -1,10 +1,10 @@
<template>
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otacxxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otacxxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -1,10 +1,10 @@
<template>
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otacxxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otacxxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -1,10 +1,10 @@
<template>
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otacxxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otacxxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -1,10 +1,10 @@
<template>
<div class="box">
<div class="table-operator">
<div class="operator-text">
<div v-has="'otacxxx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div>
<div @click='handleModule' class="operator-text">
<div v-has="'otacxxx:mbxz'" @click='handleModule' class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
@@ -30,17 +30,56 @@
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span v-if='!propflag' class="Required">*</span>
<span class="title-text-text" :title="$t('filingtime')">
{{$t('filingtime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="batjsj">
<a-form-model-item class="itemModel" :prop="!propflag?'batjsj':''" :key="propflag">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('filingtime')"
@change="dateChange({db_field_name:'batjsj'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.batjsj"
:disabled="false"
style="width: 90%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24" v-if='transittime'>
<div class="box-title-text">
<div class="title-text">
<span v-if='!propflag' class="Required">*</span>
<span class="title-text-text" :title="$t('transittime')">
{{$t('transittime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="tgthsj">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('transittime')"
@change="dateChange({db_field_name:'tgthsj'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.tgthsj"
:disabled="false"
style="width: 90%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24" v-if='returntime'>
<div class="box-title-text">
<div class="title-text">
<span v-if='!propflag' class="Required">*</span>
<span class="title-text-text" :title="$t('returntime')">
{{$t('returntime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="tgthsj">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('returntime')"
@change="dateChange({db_field_name:'tgthsj'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.tgthsj"
:disabled="false"
style="width: 90%"/>
</a-form-model-item>
</div>
@@ -79,8 +118,12 @@ export default {
formInline: {
bazt:undefined,
batjsj:'',
tgthsj:'',
bz:'',
},
transittime:false,
returntime:false,
propflag: false,
rules: {
bazt: [
{
@@ -98,7 +141,14 @@ export default {
],
bz: [
{ min: 1, max: 500, message: this.$t('cantExeed') + '500' + this.$t('characters'), trigger: 'blur' }
]
],
tgthsj: [
{
required: true,
message: this.$t('cannotEmpty'),
trigger: 'change'
}
],
// designDeadline: [
// {
// required: true,
@@ -147,13 +197,39 @@ export default {
this.formInline = {
bazt:undefined,
batjsj:'',
tgthsj:'',
bz:'',
}
this.propflag = true
this.transittime = false
this.returntime = false
}else{
this.formInline.bazt = row.bazt ? row.bazt : undefined
this.formInline.batjsj = row.batjsj
this.formInline.tgthsj = row.tgthsj
this.formInline.bz = row.bz
this.ids = row.id
if (this.formInline.bazt == 1) {
this.propflag = true
this.transittime = false
this.returntime = false
} else if (this.formInline.bazt == 2) {
this.propflag = true
this.transittime = false
this.returntime = false
} else if(this.formInline.bazt == 4){
this.propflag = false
this.transittime = true
this.returntime = false
} else if(this.formInline.bazt == 5){
this.propflag = false
this.returntime = true
this.transittime = false
}else{
this.propflag = false
this.transittime = false
this.returntime = false
}
}
this.visible = true
this.$nextTick(() => {
@@ -183,6 +259,27 @@ export default {
})
},
selectchange(value){
if (value == 1) {
this.propflag = true
this.transittime = false
this.returntime = false
} else if (value == 2) {
this.propflag = true
this.transittime = false
this.returntime = false
} else if(value == 4){
this.propflag = false
this.transittime = true
this.returntime = false
} else if(value == 5){
this.propflag = false
this.returntime = true
this.transittime = false
}else{
this.propflag = false
this.transittime = false
this.returntime = false
}
this.$nextTick(() => {
this.formInline = { ...this.formInline }
this.$refs.ruleForm.validateField('bazt')
@@ -90,23 +90,23 @@
</a-form>
</div>
<div class="table-operator">
<div @click="createvehicleandfunctionrecords" v-has="'regulatoryAndTechnicalAssessment:initiationProcess'"
<div @click="createvehicleandfunctionrecords" v-has="'otacx:cjcxjgnba'"
class="operator-text">
<a-icon type="plus" />
{{ $t('createvehicleandfunctionrecords') }}
</div>
<div @click="citeforrecord" v-has="'regulatoryAndTechnicalAssessment:batchDelete'" class="operator-text">
<div @click="citeforrecord" v-has="'otacx:yyba'" class="operator-text">
<a-icon type="solution" />
{{ $t('citeforrecord') }}
</div>
<div @click="maintenanceallClick()" v-has="'regulatoryAndTechnicalAssessment:batchDelete'" class="operator-text">
<div @click="maintenanceallClick()" v-has="'otacx:sjwh'" class="operator-text">
<a-icon type="setting" />
{{ $t('datamaintenance') }}
</div>
<div v-has="'regulatoryAndTechnicalAssessment:batchDelete'" class="operator-text">
<div v-has="'otacx:sjdr'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getList"/>
</div>
<div @click="handleModule" v-has="'regulatoryAndTechnicalAssessment:batchDelete'" class="operator-text">
<div @click="handleModule" v-has="'otacx:mbxz'" class="operator-text">
<a-icon type="download" />
{{ $t('templateDownload') }}
</div>
@@ -126,6 +126,9 @@
@click="deleteData(record)">{{ $t('delete') }}</a>
</span>
</a-table>
<div>
{{$t('averageapprovalperiod')}} : {{number}}{{$t('day')}}
</div>
<div class="page" v-if="dataSource && dataSource.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"
@@ -159,6 +162,7 @@ export default {
exportData: '/ota/otaBaCxList/exportData',
importZipUrl: '/ota/otaBaCxList/importData',//导入
},
number:'',
visible: false,
loading: false,
toggleSearchStatus: false,
@@ -251,6 +255,20 @@ export default {
width: 140,
dataIndex: 'batjsj'
},
{
title: this.$t('passreturntime'),
align: 'left',
ellipsis: true,
width: 170,
dataIndex: 'tgthsj'
},
{
title: this.$t('approvalcycle'),
align: 'left',
ellipsis: true,
width: 140,
dataIndex: 'spzq'
},
{
title: this.$t('createTime'),
align: 'left',
@@ -321,13 +339,14 @@ export default {
this.loading = true
getAction('/ota/otaBaCxList/page', query).then((res) => {
if (res.success) {
if (res.result.current > 1 && res.result.records.length == 0) {
if (res.result.list.current > 1 && res.result.list.records.length == 0) {
this.pageNo = 1
this.getList()
return
}
this.dataSource = res.result.records || []
this.total = res.result.total
this.dataSource = res.result.list.records || []
this.number = res.result.pjspzq
this.total = res.result.list.total
this.loading = false
} else {
this.loading = false
@@ -152,7 +152,7 @@ export default {
{ required: true, message: this.$t('PleaseEnter')+this.$t('MergeSeparator'), trigger: 'change' },
{ min:1, max: 1, message: this.$t('onlyone'), trigger: 'blur' },
{
pattern: /^[\`\~\!\@\$\%\^\&\*\(\)\_\+\-\= \[\]\{\}\\\|\;\'\'\:\"\"\\.\/\<\>\?]+$/,
pattern: /^[\`\~\!\@\$\%\^\&\*\(\)\_\+\-\= \[\]\{\}\\\|\;\'\'\:\"\"\\.\/\<\>\?\,]+$/,
message: this.$t('punctuationmark'),
trigger: 'blur'
}
@@ -71,6 +71,38 @@
v-model="formInline.sdtName"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('NareaOfResponsibility')">
<span>{{$t('NareaOfResponsibility')}}</span>
</div>
<j-multi-select-tag class="box-input" v-model="formInline.dutyTerritory"
: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('Required')">
<span>{{$t('Required')}}</span>
</div>
<!-- <j-multi-select-tag class="box-input" v-model="formInline.isMust"-->
<!-- :placeholder="$t('PleaseSelect')+$t('Required')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" :dictCode="'duty_territory'"/>-->
<!-- <a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('Required')"-->
<!-- v-model="formInline.isMust"></a-input>-->
<a-select class="box-input" v-model="formInline.isMust" :placeholder="$t('PleaseSelect')+$t('Required')">
<a-select-option :value="'1'">
{{$t('yes')}}
</a-select-option>
<a-select-option :value="'0'">
{{$t('notOnlyRz')}}
</a-select-option>
</a-select>
</div>
</a-col>
</template>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
@@ -92,6 +124,11 @@
<a-icon type="check-circle"/>
{{$t('preservation')}}
</div>
<!-- 导出-->
<div @click="handleExport" class="operator-text" v-has="'report:detail:export:general'">
<a-icon type="export"/>
{{$t('dataExport')}}
</div>
<div @click="ConventionalExport" class="operator-text" v-has="'report:detail:export:normal'">
<a-icon type="export" :rotate="-90"/>
{{$t('ConventionalExport')}}
@@ -182,7 +219,7 @@
</template>
<script>
import { getAction, postAction } from '../../../api/manage'
import { downloadFile, getAction, postAction } from '../../../api/manage'
import axios from 'axios'
import TableCollection from '@/components/tableCollection/index1'
import conventionalModel from './commponts/conventionalmodle'
@@ -668,6 +705,28 @@
listReset() {
this.formInline = {}
},
//导出
handleExport() {
this.$message.success(this.$t('Intheexport'))
let long = localStorage.getItem('language')
this.cut = ''
if (long && long === 'zh-cn') {
this.cut = 'cn'
} else if (long && long === 'en-us') {
this.cut = 'en'
}
console.log(this.selectedRowKeys)
let query = {
paramsManifestId: this.$route.query.id,
cut: this.cut,
// userTypes: this.currentPersonRole,
ids:this.selectedRowKeys.join(','),
...this.formInline,
exportName: this.$route.query.projectName + '(' + this.$route.query.title + ')'
}
let name = this.$route.query.projectName + '(' + this.$route.query.title + ')' + '.zip'
downloadFile('/report/detail/exportGeneral', name, query, this.selectClear)
},
ConventionalExport() {
this.$refs.conventionalModel.addModel()
},
+6 -5
View File
@@ -458,8 +458,9 @@
},
toDoCenterClick(row, isTrue) {
let query = {}
if (!this.form.flowType) {
this.form.flowType = []
let flowType = ''
if (this.form.flowType && this.form.flowType instanceof Array){
flowType = this.form.flowType.join(',')
}
row.taskId = row.taskId + ''
if (row.taskId.length > 30) {
@@ -488,7 +489,7 @@
activeTab: this.activeTab,
checked: this.form.checked,
selectModel: this.form.selectModel,
searchFlowType: this.form.flowType.join(',')
searchFlowType: flowType
}
this.$router.push({
path: '/phoneProcessManagement',
@@ -512,7 +513,7 @@
goRouter: '/phoneToDoCenter',
searchValue: this.phoneQueryValue,
activeTab: this.activeTab,
searchFlowType: this.form.flowType.join(','),
searchFlowType: flowType,
checked: this.form.checked,
selectModel: this.form.selectModel
}
@@ -534,7 +535,7 @@
goRouter: '/phoneToDoCenter',
searchValue: this.phoneQueryValue,
activeTab: this.activeTab,
searchFlowType: this.form.flowType.join(','),
searchFlowType: flowType,
checked: this.form.checked,
selectModel: this.form.selectModel
}
@@ -67,25 +67,25 @@
<!-- </a-col>-->
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('certificationCategory')">
<span>{{$t('certificationCategory')}}</span>
<div class="title-text" :title="$t('NareaOfResponsibility')">
<span>{{$t('NareaOfResponsibility')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="formInline.certCategory"
:placeholder="$t('PleaseSelect')+$t('certificationCategory')"
:type="'select'"
:triggerChange="false" :dictCode="'cert_category'"/>
<j-multi-select-tag class="box-input" v-model="formInline.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</div>
</a-col>
<template v-if="toggleSearchStatus">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('NareaOfResponsibility')">
<span>{{$t('NareaOfResponsibility')}}</span>
<div class="title-text" :title="$t('certificationCategory')">
<span>{{$t('certificationCategory')}}</span>
</div>
<j-multi-select-tag class="box-input" v-model="formInline.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
<j-dict-select-tag class="box-input" v-model="formInline.certCategory"
:placeholder="$t('PleaseSelect')+$t('certificationCategory')"
:type="'select'"
:triggerChange="false" :dictCode="'cert_category'"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
@@ -247,7 +247,7 @@
{{$t('Assignedby')}}
</div>
<!-- 导出-->
<div @click="handleExport" class="operator-text" v-if='currentPersonRole == "sdt"'>
<div @click="handleExport" class="operator-text" v-if='currentPersonRole == "sdt" || currentPersonRole == "admin" || currentPersonRole == "studio"'>
<a-icon type="export"/>
{{$t('dataExport')}}
</div>
@@ -583,6 +583,46 @@
</div>
</div>
</a-modal>
<!-- 数据导出弹框-->
<a-modal
:title="$t('dataExport')"
:width="500"
:visible="dataExportFailed"
:maskClosable="false"
@ok="handleExportSubmit"
@cancel="handleCancel"
>
<a-form-model
class='formAdd'
ref='dataExportruleForm'
:model='dataExportformInline'
:rules='dataExportrules'
:label-col='labelCol'
:wrapper-col='wrapperCol'
>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text" >
<div class="title-text" :title="$t('exportOption')" style='margin-top: -17px;'>
<span class="Required">*</span>
<span class="title-text-text" :title="$t('exportOption')">
{{$t('exportOption')}}</span>
</div>
<a-form-model-item class="itemModel" prop="exportOption">
<a-select class="box-input" allowClear v-model="dataExportformInline.exportOption" :placeholder="$t('PleaseSelect')+$t('exportOption')">
<a-select-option :value="'1'">
{{$t('includeTitle')}}
</a-select-option>
<a-select-option :value="'0'">
{{$t('Notitleincluded')}}
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-modal>
<JLoading :loading="textLoading">{{this.$t('pleaseWaitWhileRunning')}}</JLoading>
<batchUpdateDeadline ref="batchUpdateDeadlineRef" @batchUpdateDeadlineForm="batchUpdateDeadlineForm"/>
@@ -877,6 +917,7 @@
selectedRowKeys: [],
textLoading: false,
formInline: {},
dataExportformInline: {},
queryParamQuery: {},
url: {
tableHeader: 'params/collectManifest/getHeader',
@@ -919,6 +960,7 @@
areaVisiblereferenceparameter: false, // 引用参数弹框
areaVisibsynchronous: false, // 同步上报库弹框
visibleoperationFailed: false, // 数据失败的弹框
dataExportFailed: false, // 数据失败的弹框
currentPersonRole: '', // 当前人角色
jurisdiction: '',
wrapperCol: {
@@ -930,6 +972,11 @@
sm: { span: 7 }
},
rules: {},
dataExportrules: {
exportOption:[
{ required: true, message: this.$t('PleaseSelect')+this.$t('exportOption'), trigger: 'change' }
]
},
FreezeList: [], // 冻结字段
roleSwitchingList: [],
JTextLoading: false,
@@ -1329,24 +1376,56 @@
},
//导出
handleExport() {
this.$message.success(this.$t('Intheexport'))
let long = localStorage.getItem('language')
this.cut = ''
if (long && long === 'zh-cn') {
this.cut = 'cn'
} else if (long && long === 'en-us') {
this.cut = 'en'
}
let query = {
paramsManifestId: this.paramsManifest.id,
paramsTemplateId: this.$route.query.paramsTemplateId,
paramsTemplatePublishVersion: 1,
cut: this.cut,
userTypes: this.currentPersonRole,
exportName: this.$route.query.projectName + '(' + this.$route.query.title + ')'
}
let name = this.$route.query.projectName + '(' + this.$route.query.title + ')' + '.zip'
downloadFile('/params/collectManifest/exportAll', name, query, this.selectClear)
this.dataExportFailed = true
// this.$message.success(this.$t('Intheexport'))
// let long = localStorage.getItem('language')
// this.cut = ''
// if (long && long === 'zh-cn') {
// this.cut = 'cn'
// } else if (long && long === 'en-us') {
// this.cut = 'en'
// }
// let query = {
// paramsManifestId: this.paramsManifest.id,
// paramsTemplateId: this.$route.query.paramsTemplateId,
// paramsTemplatePublishVersion: 1,
// cut: this.cut,
// userTypes: this.currentPersonRole,
// exportName: this.$route.query.projectName + '(' + this.$route.query.title + ')'
// }
// let name = this.$route.query.projectName + '(' + this.$route.query.title + ')' + '.zip'
// downloadFile('/params/collectManifest/exportAll', name, query, this.selectClear)
},
// 导出确定
handleExportSubmit(){
this.$refs.dataExportruleForm.validate(valid => {
if(valid){
this.$message.success(this.$t('Intheexport'))
let long = localStorage.getItem('language')
this.cut = ''
if (long && long === 'zh-cn') {
this.cut = 'cn'
} else if (long && long === 'en-us') {
this.cut = 'en'
}
let query = {
paramsManifestId: this.paramsManifest.id,
paramsTemplateId: this.$route.query.paramsTemplateId,
exportOption:this.dataExportformInline.exportOption,
paramsTemplatePublishVersion: 1,
cut: this.cut,
userTypes: this.currentPersonRole,
exportName: this.$route.query.projectName + '(' + this.$route.query.title + ')'
}
let name = this.$route.query.projectName + '(' + this.$route.query.title + ')' + '.zip'
downloadFile('/params/collectManifest/exportAll', name, query, this.selectClear)
}
})
},
handleCancel() {
this.dataExportformInline = {}
this.$refs.dataExportruleForm.clearValidate()
this.dataExportFailed = false
},
//填写人导出
handleExportDre() {
@@ -2631,7 +2710,11 @@
height: 42px;
line-height: 36px;
}
.itemModel {
width: 100%;
display: inline-block;
margin-top: 2px;
}
.box-input .ant-select-selection {
height: 38px !important;
}
@@ -144,8 +144,8 @@
],
detectionReportLocation:[
{
max: 100,
message: this.$t('testReportLocation') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
max: 500,
message: this.$t('testReportLocation') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
],
@@ -30,6 +30,7 @@
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('ProcessStatus')"
class="box-input"
mode="multiple"
allowClear
:getPopupContainer="triggerNode=> triggerNode.parentNode"
v-model="queryParam.flowStatus">
@@ -53,6 +53,7 @@
allowClear
show-search
style="width: calc(100% - 80px);"
mode="multiple"
optionFilterProp="label"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
v-model="queryParam[selectModel]">
@@ -2802,6 +2803,7 @@
if (this.updateFlowStatusList && this.updateFlowStatusList.length > 0) {
this.updateFlowStatusBatch()
}
this.completeTaskList = []
for (let i = 0; i < this.startProcessList.length; i++) {
if (this.startProcessList[i].type == 2) {
this.startProcessList[i].dataList.designDutyDueDate = this.formInline.designDutyDueDate
@@ -2829,6 +2831,7 @@
Promise.all(this.completeTaskList).then((res) => {
if (this.requestsNum == res.length) {
this.visible = false
this.formInline = {}
this.selectedRowKeys = []
this.$message.success(this.$t('OperationSuccessful'))
this.confirmLoading = false
@@ -10,282 +10,355 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G0">
G0</span>
</div>
<a-form-model-item class="itemModel" prop="zero">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G0'"
@change="dateChange({db_field_name:'zero'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.zero"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G1">
G1</span>
</div>
<a-form-model-item class="itemModel" prop="one">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G1'"
@change="dateChange({db_field_name:'one'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.one"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G2">
G2</span>
</div>
<a-form-model-item class="itemModel" prop="two">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G2'"
@change="dateChange({db_field_name:'two'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.two"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G3">
G3</span>
</div>
<a-form-model-item class="itemModel" prop="three">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G3'"
@change="dateChange({db_field_name:'three'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.three"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G4">
G4</span>
</div>
<a-form-model-item class="itemModel" prop="four">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G4'"
@change="dateChange({db_field_name:'four'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.four"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G5">
G5</span>
</div>
<a-form-model-item class="itemModel" prop="five">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G5'"
@change="dateChange({db_field_name:'five'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.five"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G6">
G6</span>
</div>
<a-form-model-item class="itemModel" prop="six">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G6'"
@change="dateChange({db_field_name:'six'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.six"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="MP">
MP</span>
</div>
<a-form-model-item class="itemModel" prop="mp">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'MP'"
@change="dateChange({db_field_name:'mp'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.mp"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G7">
G7</span>
</div>
<a-form-model-item class="itemModel" prop="seven">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G7'"
@change="dateChange({db_field_name:'seven'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.seven"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('listPublishing')">
{{$t('listPublishing')}}</span>
</div>
<a-form-model-item class="itemModel" prop="listConfirmation">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('listPublishing')+$t('time')"
@change="dateChange({db_field_name:'listConfirmation'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.listConfirmation"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('responsibilityConfirmation')">
{{$t('responsibilityConfirmation')}}</span>
</div>
<a-form-model-item class="itemModel" prop="legalTaskConfirmation">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('responsibilityConfirmation')+$t('time')"
@change="dateChange({db_field_name:'legalTaskConfirmation'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.legalTaskConfirmation"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('designVerification')">
{{$t('designVerification')}}</span>
</div>
<a-form-model-item class="itemModel" prop="designDeadline">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('designVerification')+$t('time')"
@change="dateChange({db_field_name:'designDeadline'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.designDeadline"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('getStarted')">
{{$t('getStarted')}}</span>
</div>
<a-form-model-item class="itemModel" prop="prehomoDeadline">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('getStarted')+$t('time')"
@change="dateChange({db_field_name:'prehomoDeadline'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.prehomoDeadline"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('certificationStartOne')">
{{$t('certificationStartOne')}}</span>
</div>
<a-form-model-item class="itemModel" prop="attestationStartTime">
<a-date-picker class="box-input"
:disabledDate='this.disabledRegistrationStartDate'
:placeholder="$t('PleaseSelect')+$t('certificationStartOne')+$t('time')"
@change="dateChange({db_field_name:'attestationStartTime'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.attestationStartTime"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('certificationSubmission')">
{{$t('certificationSubmission')}}</span>
</div>
<a-form-model-item class="itemModel" prop="certificationSubmission">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('certificationSubmission')+$t('time')"
@change="dateChange({db_field_name:'certificationSubmission'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.certificationSubmission"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('certificationEnd')">
{{$t('certificationEnd')}}</span>
</div>
<a-form-model-item class="itemModel" prop="attestationEndTime">
<a-date-picker class="box-input"
:disabledDate='this.disabledRegistrationEndDate'
:placeholder="$t('PleaseSelect')+$t('certificationEnd')+$t('time')"
@change="dateChange({db_field_name:'attestationEndTime'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.attestationEndTime"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('verificationAndVerification')">
{{$t('verificationAndVerification')}}</span>
</div>
<a-form-model-item class="itemModel" prop="verifyDeadline">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('verificationAndVerification')+$t('time')"
@change="dateChange({db_field_name:'verifyDeadline'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.verifyDeadline"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G0">
G0</span>
</div>
<a-form-model-item class="itemModel" prop="zero">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G0'"
@change="dateChange({db_field_name:'zero'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.zero"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G1">
G1</span>
</div>
<a-form-model-item class="itemModel" prop="one">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G1'"
@change="dateChange({db_field_name:'one'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.one"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G2">
G2</span>
</div>
<a-form-model-item class="itemModel" prop="two">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G2'"
@change="dateChange({db_field_name:'two'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.two"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G3">
G3</span>
</div>
<a-form-model-item class="itemModel" prop="three">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G3'"
@change="dateChange({db_field_name:'three'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.three"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G4">
G4</span>
</div>
<a-form-model-item class="itemModel" prop="four">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G4'"
@change="dateChange({db_field_name:'four'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.four"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G5">
G5</span>
</div>
<a-form-model-item class="itemModel" prop="five">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G5'"
@change="dateChange({db_field_name:'five'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.five"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G6">
G6</span>
</div>
<a-form-model-item class="itemModel" prop="six">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G6'"
@change="dateChange({db_field_name:'six'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.six"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" title="G7">
G7</span>
</div>
<a-form-model-item class="itemModel" prop="seven">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+'G7'"
@change="dateChange({db_field_name:'seven'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.seven"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('listPublishing')">
{{$t('listPublishing')}}</span>
</div>
<a-form-model-item class="itemModel" prop="listConfirmation">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('listPublishing')+$t('time')"
@change="dateChange({db_field_name:'listConfirmation'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.listConfirmation"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('responsibilityConfirmation')">
{{$t('responsibilityConfirmation')}}</span>
</div>
<a-form-model-item class="itemModel" prop="legalTaskConfirmation">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('responsibilityConfirmation')+$t('time')"
@change="dateChange({db_field_name:'legalTaskConfirmation'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.legalTaskConfirmation"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('designVerification')">
{{$t('designVerification')}}</span>
</div>
<a-form-model-item class="itemModel" prop="designDeadline">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('designVerification')+$t('time')"
@change="dateChange({db_field_name:'designDeadline'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.designDeadline"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('getStarted')">
{{$t('getStarted')}}</span>
</div>
<a-form-model-item class="itemModel" prop="prehomoDeadline">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('getStarted')+$t('time')"
@change="dateChange({db_field_name:'prehomoDeadline'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.prehomoDeadline"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('certificationStartOne')">
{{$t('certificationStartOne')}}</span>
</div>
<a-form-model-item class="itemModel" prop="attestationStartTime">
<a-date-picker class="box-input"
:disabledDate='this.disabledRegistrationStartDate'
:placeholder="$t('PleaseSelect')+$t('certificationStartOne')+$t('time')"
@change="dateChange({db_field_name:'attestationStartTime'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.attestationStartTime"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('certificationSubmission')">
{{$t('certificationSubmission')}}</span>
</div>
<a-form-model-item class="itemModel" prop="certificationSubmission">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('certificationSubmission')+$t('time')"
@change="dateChange({db_field_name:'certificationSubmission'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.certificationSubmission"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('certificationEnd')">
{{$t('certificationEnd')}}</span>
<span class="title-text-text" :title="$t('localapproval1')">
{{$t('localapproval1')}}</span>
</div>
<a-form-model-item class="itemModel" prop="attestationEndTime">
<a-date-picker class="box-input"
:disabledDate='this.disabledRegistrationEndDate'
:placeholder="$t('PleaseSelect')+$t('certificationEnd')+$t('time')"
@change="dateChange({db_field_name:'attestationEndTime'})"
:placeholder="$t('PleaseSelect')+$t('localapproval1')+$t('time')"
@change="dateChange({db_field_name:'localapproval1'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.attestationEndTime"
v-model="formInline.localapproval1"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
@@ -295,16 +368,16 @@
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('verificationAndVerification')">
{{$t('verificationAndVerification')}}</span>
<span class="title-text-text" :title="$t('localapproval2')">
{{$t('localapproval2')}}</span>
</div>
<a-form-model-item class="itemModel" prop="verifyDeadline">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('verificationAndVerification')+$t('time')"
@change="dateChange({db_field_name:'verifyDeadline'})"
:placeholder="$t('PleaseSelect')+$t('localapproval2')+$t('time')"
@change="dateChange({db_field_name:'localapproval2'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.verifyDeadline"
v-model="formInline.localapproval2"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
@@ -165,6 +165,7 @@
this.title = val.name
this.projectQuery = val
this.getEchart()
console.log(this.projectQuery.name)
if (this.projectQuery.name == this.$t('certificationSubmission') || this.projectQuery.name == this.$t('certificationEnd')) {
this.$nextTick(() => {
this.num = '0'
@@ -5,19 +5,19 @@
:searchQueryList="searchQueryList"
:flag="'1'"
:isDefault="true"
:url="url"/>
:url="url" />
</div>
<div class="table-operator">
<div @click="handleCompare" v-has="'regulatoryEarlyWarning:push'"
class="operator-text">
<a-icon type="share-alt"/>
{{$t('share')}}
<a-icon type="share-alt" />
{{ $t('share') }}
</div>
<div @click="handleExport"
v-has="'regulatoryEarlyWarning:export'"
class="operator-text">
<a-icon type="export" :rotate="-90"/>
{{$t('export')}}
<a-icon type="export" :rotate="-90" />
{{ $t('export') }}
</div>
</div>
<div>
@@ -40,39 +40,39 @@
:columns="columns"
>
<span slot="serial_number" slot-scope="text,result">
<a @click="standClick(result)" :title="text">{{text}}</a>
<a @click="standClick(result)" :title="text">{{ text }}</a>
</span>
<span slot="vehicleInProductionDate" slot-scope="text,result" :title="text">
<span v-if="result.xin1_che1_xing2_shi2_shi1_ri4_qi1 == 'yellow'">
{{text}}
{{ text }}
</span>
<span v-else-if="result.xin1_che1_xing2_shi2_shi1_ri4_qi1 == 'red'">
{{text}}
{{ text }}
</span>
<span v-else>
{{text}}
{{ text }}
</span>
</span>
<span slot="ImplementationDate" slot-scope="text,result" :title="text">
<span v-if="result.new_colour == 'yellow'" style="color: #fdd835">
{{text}}
{{ text }}
</span>
<span v-else-if="result.new_colour == 'red'" style="color: red">
{{text}}
{{ text }}
</span>
<span v-else>
{{text}}
{{ text }}
</span>
</span>
<span slot="vehicleInProductionDate" slot-scope="text,result" :title="text">
<span v-if="result.implement_colour == 'yellow'" style="color: #fdd835">
{{text}}
{{ text }}
</span>
<span v-else-if="result.implement_colour == 'red'" style="color: red">
{{text}}
{{ text }}
</span>
<span v-else>
{{text}}
{{ text }}
</span>
</span>
</a-table>
@@ -98,247 +98,292 @@
</template>
<script>
import search from '@/components/search/index'
import libraryPush from '@/components/libraryPush/index'
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
import moment from 'moment'
import eventBUs from '../../common/event'
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
import search from '@/components/search/index'
import libraryPush from '@/components/libraryPush/index'
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
import moment from 'moment'
import eventBUs from '../../common/event'
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
export default {
name: 'index',
components: {
search,
libraryPush
},
mixins: [ResizeColumnProvide,ResizeHeader],
data() {
return {
//url传参严格按照当前命名
url: {
seachList: 'document/bussDocumentLibraryEO/queryCondition', //搜索字段
list: '/LawsWarn/queryPageInfo',
exportData: 'LawsWarn/exportExcel',
pullMessage: '/LawsWarn/warnPullMessage'
export default {
name: 'index',
components: {
search,
libraryPush
},
mixins: [ResizeColumnProvide, ResizeHeader],
data() {
return {
//url传参严格按照当前命名
url: {
seachList: 'document/bussDocumentLibraryEO/queryCondition', //搜索字段
list: '/LawsWarn/queryPageInfo',
exportData: 'LawsWarn/exportExcel',
pullMessage: '/LawsWarn/warnPullMessage'
},
activeTab: this.$t('ImplementationDate'),
loading: false,
dataSource: [],
selectedRowKeys: [],
total: 0,
pageSize: 10,
pageNo: 1,
searchParmes: {},
searchQueryList: [
{
field_show_type: 12,
db_field_txt: this.$t('warningTime'),
db_field_name: 'WarnTimeText',
option: [
{
value: '1',
name: this.$t('inRecentMonths3')
},
{
value: '2',
name: this.$t('inRecentMonths6')
},
{
value: '5',
name: this.$t('inRecentMonthsin6')
},
{
value: '3',
name: this.$t('inRecentYear1')
},
{
value: '4',
name: this.$t('inRecentYear2')
},
{
value: '6',
name: this.$t('inRecentYear3')
}
]
}
],
columnsAll: [
{
title: this.$t('standard'),
align: 'left',
dataIndex: 'serial_number',
ellipsis: true,
width: 170,
scopedSlots: { customRender: 'serial_number' }
},
activeTab: this.$t('ImplementationDate'),
loading: false,
dataSource: [],
selectedRowKeys: [],
total: 0,
pageSize: 10,
pageNo: 1,
searchParmes: {},
searchQueryList: [
{
field_show_type: 12,
db_field_txt: this.$t('warningTime'),
db_field_name: 'WarnTimeText',
option: [
{
value: '1',
name:this.$t('inRecentMonths3')
},
{
value: '2',
name: this.$t('inRecentMonths6')
},
{
value: '5',
name: this.$t('inRecentMonthsin6')
},
{
value: '3',
name: this.$t('inRecentYear1')
},
{
value: '4',
name: this.$t('inRecentYear2')
},
]
}
],
columnsAll: [
{
title: this.$t('standard'),
align: 'left',
dataIndex: 'serial_number',
ellipsis: true,
width: 170,
scopedSlots: { customRender: 'serial_number' }
},
{
title: this.$t('title'),
align: 'left',
dataIndex: 'title',
ellipsis: true,
width: 170,
scopedSlots: { customRender: 'serial_number' }
},
{
title: this.$t('status'),
align: 'left',
width: 140,
ellipsis: true,
dataIndex: 'state'
},
{
title: this.$t('zoneOfApplication'),
align: 'left',
width: 170,
ellipsis: true,
dataIndex: 'region'
},
{
title: this.$t('technicalField'),
align: 'left',
ellipsis: true,
width: 170,
dataIndex: 'technology_territory'
},
{
title: this.$t('vehicleInProductionDate'),
align: 'left',
ellipsis: true,
width: 190,
dataIndex: 'implement_time',
scopedSlots: { customRender: 'vehicleInProductionDate' }
},
{
title: this.$t('ImplementationDate'),
align: 'left',
ellipsis: true,
width: 190,
dataIndex: 'xin1_che1_xing2_shi2_shi1_ri4_qi1',
scopedSlots: { customRender: 'ImplementationDate' }
}
]
}
},
computed: {
columns() {
let columnsAll = JSON.parse(JSON.stringify(this.columnsAll))
if (this.activeTab == this.$t('ImplementationDate')) {
for (let i = 0; i < columnsAll.length; i++) {
if (columnsAll[i].dataIndex == 'implement_time') {
columnsAll.splice(i, 1)
i--
}
}
} else if (this.activeTab == this.$t('vehicleInProductionDate')) {
for (let i = 0; i < columnsAll.length; i++) {
if (columnsAll[i].dataIndex == 'xin1_che1_xing2_shi2_shi1_ri4_qi1') {
columnsAll.splice(i, 1)
i--
}
{
title: this.$t('title'),
align: 'left',
dataIndex: 'title',
ellipsis: true,
width: 170,
scopedSlots: { customRender: 'serial_number' }
},
{
title: this.$t('status'),
align: 'left',
width: 140,
ellipsis: true,
dataIndex: 'state'
},
{
title: this.$t('zoneOfApplication'),
align: 'left',
width: 170,
ellipsis: true,
dataIndex: 'region'
},
{
title: this.$t('technicalField'),
align: 'left',
ellipsis: true,
width: 170,
dataIndex: 'technology_territory'
},
{
title: this.$t('vehicleInProductionDate'),
align: 'left',
ellipsis: true,
width: 190,
dataIndex: 'implement_time',
scopedSlots: { customRender: 'vehicleInProductionDate' }
},
{
title: this.$t('ImplementationDate'),
align: 'left',
ellipsis: true,
width: 190,
dataIndex: 'xin1_che1_xing2_shi2_shi1_ri4_qi1',
scopedSlots: { customRender: 'ImplementationDate' }
}
]
}
},
computed: {
columns() {
let columnsAll = JSON.parse(JSON.stringify(this.columnsAll))
if (this.activeTab == this.$t('ImplementationDate')) {
for (let i = 0; i < columnsAll.length; i++) {
if (columnsAll[i].dataIndex == 'implement_time') {
columnsAll.splice(i, 1)
i--
}
}
return columnsAll
}
},
mounted() {
// this.getList()
eventBUs.$on('searchQuery', search => {
Object.keys(search).forEach(res => {
if (search[res] instanceof Array) {
search[res] = search[res].join(',')
} else if (this.activeTab == this.$t('vehicleInProductionDate')) {
for (let i = 0; i < columnsAll.length; i++) {
if (columnsAll[i].dataIndex == 'xin1_che1_xing2_shi2_shi1_ri4_qi1') {
columnsAll.splice(i, 1)
i--
}
})
this.pageNo = 1
this.searchParmes = search
this.getList()
}
}
return columnsAll
}
},
mounted() {
// this.getList()
eventBUs.$on('searchQuery', search => {
Object.keys(search).forEach(res => {
if (search[res] instanceof Array) {
search[res] = search[res].join(',')
}
})
},
beforeDestroy() {
eventBUs.$off('searchQuery')
},
methods: {
standClick(val){
let newUrl = this.$router.resolve({
path: '/docManage/library/detail',
query: {
id: val.id
}
})
window.open(newUrl.href, '_blank')
},
callback(tab) {
this.selectedRowKeys = []
this.activeTab = tab
this.getList()
},
onSelectChange(value) {
this.selectedRowKeys = value
},
handleCompare() {
if (this.selectedRowKeys.length > 0) {
this.$nextTick(() => {
let flag = ''
if (this.activeTab == this.$t('ImplementationDate')) {
flag = 1
} else {
flag = 2
}
this.$refs.libraryPushRef.getPush(JSON.parse(JSON.stringify(this.selectedRowKeys)), flag)
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
this.pageNo = 1
this.searchParmes = search
this.getList()
})
},
beforeDestroy() {
eventBUs.$off('searchQuery')
},
methods: {
standClick(val) {
let newUrl = this.$router.resolve({
path: '/docManage/library/detail',
query: {
id: val.id
}
},
handleExport() {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
let text = ''
let flag
})
window.open(newUrl.href, '_blank')
},
callback(tab) {
this.selectedRowKeys = []
this.activeTab = tab
this.getList()
},
onSelectChange(value) {
this.selectedRowKeys = value
},
handleCompare() {
if (this.selectedRowKeys.length > 0) {
this.$nextTick(() => {
let flag = ''
if (this.activeTab == this.$t('ImplementationDate')) {
flag = 0
text = this.$t('ImplementationDate')
} else {
text = this.$t('vehicleInProductionDate')
flag = 1
} else {
flag = 2
}
let query = {
id: selectedRowKeys.join(','),
...this.searchParmes,
flag: flag
}
downloadFile(this.url.exportData, text + '.xls', query, this.Deselect)
this.$refs.libraryPushRef.getPush(JSON.parse(JSON.stringify(this.selectedRowKeys)), flag)
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
handleExport() {
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 {
this.$message.warning(this.$t('selectLeastOne'))
text = this.$t('vehicleInProductionDate')
flag = 1
}
},
Deselect() {
this.selectedRowKeys = []
},
clearSelected() {
if (!this.searchParmes['WarnTimeText']) {
this.searchParmes['WarnTimeText'] = '2'
let query = {
id: selectedRowKeys.join(','),
...this.searchParmes,
flag: flag
}
let startTime = moment(new Date()).format('YYYY-MM-DD')
let endTime = this.getNowdate()
this.searchParmes['WarnTime'] = [startTime, endTime]
this.searchParmes = { ...this.searchParmes }
this.pageNo = 1
this.getList()
},
getNowdate() {
let monthData
let yearData
if (this.searchParmes['WarnTimeText'] == '1') {
monthData = 4
yearData = 1
} else if (this.searchParmes['WarnTimeText'] == '2') {
monthData = 7
yearData = 1
} else if (this.searchParmes['WarnTimeText'] == '3') {
monthData = 13
yearData = 1
} else if (this.searchParmes['WarnTimeText'] == '4') {
monthData = 25
yearData = 2
downloadFile(this.url.exportData, text + '.xls', query, this.Deselect)
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
Deselect() {
this.selectedRowKeys = []
},
clearSelected() {
let endTime = ''
if (!this.searchParmes['WarnTimeText']) {
endTime = '2099-01-01'
} else {
endTime = this.getNowdate()
}
let startTime = moment(new Date()).format('YYYY-MM-DD')
this.searchParmes['WarnTime'] = [startTime, endTime]
this.searchParmes = { ...this.searchParmes }
this.pageNo = 1
this.getList()
},
getNowdate() {
let monthData
let yearData
if (this.searchParmes['WarnTimeText'] == '1') {
monthData = 4
yearData = 1
} else if (this.searchParmes['WarnTimeText'] == '2') {
monthData = 7
yearData = 1
} else if (this.searchParmes['WarnTimeText'] == '3') {
monthData = 13
yearData = 1
} else if (this.searchParmes['WarnTimeText'] == '4') {
monthData = 25
yearData = 2
} else if (this.searchParmes['WarnTimeText'] == '5') {
monthData = 7
yearData = -1
} else if (this.searchParmes['WarnTimeText'] == '6') {
monthData = 37
yearData = 3
}
if (this.searchParmes['WarnTimeText'] == '5') {
var time = new Date()
time.setTime(time.getTime())
var s2 = time.getFullYear() + '-' + (time.getMonth() + 1) + '-' + time.getDate()
var monthNum = 6 //要减的月数(6)自己定义
var dateArr = s2.split('-') //s2当前时间
var year = dateArr[0] //获取当前日期的年份
var month = dateArr[1] //获取当前日期的月份
var day = dateArr[2] //获取当前日期的日
var days = new Date(year, month, 0)
days = days.getDate() //获取当前日期中月的天数
var year2
if (month < 6) {
year2 = year - 1
} else {
year2 = year
}
var month2 = parseInt(month) - monthNum
if (month2 <= 0) {
year2 = parseInt(year2) - parseInt(month2 / 12 == 0 ? 1 : parseInt(month2) / 12)
month2 = 12 - (Math.abs(month2) % 12)
}
var day2 = day
var days2 = new Date(year2, month2, 0)
days2 = days2.getDate()
if (day2 > days2) {
day2 = days2
}
if (month2 < 10) {
month2 = '0' + month2
}
var t2 = year2 + '-' + month2 + '-' + day2
return t2
} else {
var date_now = new Date()//获取当前时间
var year = date_now.getFullYear()//获取当前时间的年份
var month = date_now.getMonth()//获取当前时间的月份
@@ -362,64 +407,67 @@
}
var time = year2 + '-' + month2 + '-' + day2
return time
},
pageOnChange(page) {
this.pageNo = page
this.getList()
},
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.getList()
},
getList() {
let flag
if (this.activeTab == this.$t('ImplementationDate')) {
flag = 0
} else {
flag = 1
}
let params = {
...this.searchParmes,
pageNo: this.pageNo,
pageSize: this.pageSize,
flag: flag
}
this.loading = true
postAction(this.url.list, params).then((res) => {
if (res.success) {
this.dataSource = res.result.records
this.total = res.result.total
this.loading = false
} else {
this.loading = false
}
}).finally(() => {
this.loading = false
})
}
},
pageOnChange(page) {
this.pageNo = page
this.getList()
},
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.getList()
},
getList() {
let flag
if (this.activeTab == this.$t('ImplementationDate')) {
flag = 0
} else {
flag = 1
}
let params = {
...this.searchParmes,
pageNo: this.pageNo,
pageSize: this.pageSize,
flag: flag
}
this.loading = true
postAction(this.url.list, params).then((res) => {
if (res.success) {
this.dataSource = res.result.records
this.total = res.result.total
this.loading = false
} else {
this.loading = false
}
}).finally(() => {
this.loading = false
})
}
}
}
</script>
<style scoped lang="less">
@import '~@assets/less/common.less';
@import '~@assets/less/common.less';
.page {
text-align: right;
margin-top: 20px;
}
.page {
text-align: right;
margin-top: 20px;
}
::v-deep .ant-table-row:first-child {
background: #fff !important;
opacity: 0.9;
}
::v-deep .ant-table-row:first-child {
background: #fff !important;
opacity: 0.9;
}
::v-deep .ant-table-body {
background: transparent !important;
}
::v-deep .ant-table-body {
background: transparent !important;
}
/deep/ .ant-table-placeholder{
margin-top: 8px !important;
}
/deep/ .ant-table-placeholder {
margin-top: 8px !important;
}
</style>
@@ -22,6 +22,7 @@
</span>
<div class="process-content-right">
<div class="process-content-right-top" :title="item.name">{{item.name}}</div>
<div class="process-content-right-top-user" :title="item.userName">{{item.userName}}</div>
</div>
</div>
</div>
@@ -303,6 +304,23 @@
})
}
}
this.regulatoryCertificationTaskPlanList.forEach(val => {
if (val.name == this.$t('initiatingProcess')) {
val.userName = this.$t('regulatoryEngineer')
} else if (val.name == this.$t('Taskresponsibilityrecognition')) {
val.userName = this.$t('personLiable')
} else if (val.name == this.$t('designComplianceReview')) {
val.userName = this.$t('personLiable')
} else if (val.name == this.$t('verificationComplianceReview')) {
val.userName = this.$t('personLiable')
} else if (val.name == this.$t('designComplianceReviewAdmin')) {
val.userName = this.$t('Sponsor')
} else if (val.name == this.$t('verificationComplianceExamine')) {
val.userName = this.$t('Sponsor')
} else {
val.userName = ''
}
})
this.regulatoryCertificationTaskPlanList = [...this.regulatoryCertificationTaskPlanList]
}
this.loading = false
@@ -403,6 +421,18 @@
white-space: nowrap;
overflow: hidden;
}
.process-content-right-top-user{
//background: #E6FAFA;
//padding: 5px;
color: #9c9fac;
font-size: 12px;
font-weight: lighter;
margin-top: 5px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
}
}
@@ -49,12 +49,19 @@
<a-radio value="Transfer" v-if="query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'zrrqr'">
{{$t('turnToDo')}}
</a-radio>
<a-button type="primary" v-if="isPersonnel" @click="PersonnelSelectionClick">
{{this.$t('PersonnelSelection')}}
</a-button>
<span>
{{this.formInline.dezrrSubmitUserName}}
</span>
<!-- <a-button type="primary" v-if="isPersonnel" @click="PersonnelSelectionClick">-->
<!-- {{this.$t('PersonnelSelection')}}-->
<!-- </a-button>-->
<!-- <span>-->
<!-- {{this.formInline.dezrrSubmitUserName}}-->
<!-- </span>-->
<a-form-model-item class="itemModel-per">
<PersonnelSelection v-if="isPersonnel" :query="{db_field_name:this.query.TaskKey == 'zrrtjjfw'?'dezrrSubmitUserId':'secondChargePersonUserId',db_field_txt:$t('personnel')}"
:isSingleChoice="true"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.dezrrSubmitUserName"/>
</a-form-model-item>
</a-radio-group>
</a-form-model-item>
</a-col>
@@ -125,6 +132,7 @@
<script>
import { getAction, postAction, putAction, deleteAction } from '@/api/manage'
import PersonnelSelection from '@/components/PersonnelSelection/index'
import uploadFile from '@/components/uploadFile/file'
import SelectedBy from '@/components/SelectedBy/index'
import moment from 'moment'
@@ -133,6 +141,7 @@
name: 'reviewedByThePersonInCharge',
components: {
uploadFile,
PersonnelSelection,
SelectedBy
},
props: ['queryBy', 'queryPersonInCharge', 'query'],
@@ -210,6 +219,10 @@
}
},
methods: {
PersonnelSelectionChange(value, id) {
this.formInline[value] = id
this.formInline = { ...this.formInline }
},
getData(data) {
this.formInline.disposeResult = data.operatorResult
this.formInline.approvalOpinion = data.approvalOpinion
@@ -397,4 +410,10 @@
border: 1px #00B3BE solid;
color: #00B3BE;
}
.itemModel-per{
width: calc(50% - 130px) !important;
display: inline-block !important;
margin-top: -6px !important;
height: 40px !important;
}
</style>