Merge branch 'fix_bug_first_stage'

# Conflicts:
#	jero-web/src/common/lang/en-us.js
#	jero-web/src/common/lang/zh-cn.js
This commit is contained in:
zer0Black
2022-08-15 21:02:40 +08:00
11 changed files with 441 additions and 54 deletions
+1
View File
@@ -1255,6 +1255,7 @@ module.exports = {
deleteNode:'If there is any file information, the file will be deleted. Are you sure to delete this data?',
HaveReleased:'Have released',
forward:'Forward',
areResponsibilityAreaInformationBatch:'Are you sure you want to modify the responsibility area information in batch',
issuedBy:'Issued by',
pleaseDecompositionStandardOrder:'Please import or bring in at least one decomposition standard order',
currentlyTheFirstOneThatCannotMovedUp:'Currently the first one that cannot be moved up',
+1
View File
@@ -1357,6 +1357,7 @@ module.exports = {
deleteNode:'若有文件信息将同步删除确认删除该条数据',
HaveReleased:'已发布',
forward:'转发',
areResponsibilityAreaInformationBatch:'确实是否批量修改责任领域信息',
issuedBy:'发布人',
pleaseDecompositionStandardOrder:'请导入或带入至少一条分解标准单',
currentlyTheFirstOneThatCannotMovedUp:'当前已是第一个无法进行上移',
@@ -1,7 +1,7 @@
<template>
<div>
<div class="box-title-text">
<a-input class="box-input" :value="value" @input="indexclick($event)"
<a-input class="box-input" :value="value" :title="value" @input="indexclick($event)"
:disabled="isDisabled"
:placeholder="!isDisabled?$t('PleaseEnterOrSelect')+query.db_field_txt:query.db_field_txt"/>
<a-button v-if="!isDisabled" type="primary" class="button-box" @click="standardClick">
@@ -224,7 +224,7 @@
position: absolute;
bottom: 0;
width: 100%;
z-index:100;
z-index: 100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
@@ -35,11 +35,11 @@
:placeholder="$t('PleaseSelect')+$t('certificationType')"
:type="'select'"
:triggerChange="false" :dictCode="'attestation_type'"/>
<!-- <j-dict-select-tag class="box-input" v-model="formInline.attestationType"-->
<!-- @input="handleInput('attestationType')"-->
<!-- :placeholder="$t('PleaseSelect')+$t('certificationType')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" dictCode="attestation_type"/>-->
<!-- <j-dict-select-tag class="box-input" v-model="formInline.attestationType"-->
<!-- @input="handleInput('attestationType')"-->
<!-- :placeholder="$t('PleaseSelect')+$t('certificationType')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" dictCode="attestation_type"/>-->
</a-form-model-item>
</div>
</a-col>
@@ -55,11 +55,11 @@
:placeholder="$t('PleaseSelect')+$t('certificationLevel')"
:type="'select'"
:triggerChange="false" :dictCode="'attestation_rank'"/>
<!-- <j-dict-select-tag class="box-input" v-model="formInline.attestationRank"-->
<!-- @input="handleInput('attestationRank')"-->
<!-- :placeholder="$t('PleaseSelect')+$t('certificationLevel')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" dictCode="attestation_rank"/>-->
<!-- <j-dict-select-tag class="box-input" v-model="formInline.attestationRank"-->
<!-- @input="handleInput('attestationRank')"-->
<!-- :placeholder="$t('PleaseSelect')+$t('certificationLevel')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" dictCode="attestation_rank"/>-->
</a-form-model-item>
</div>
</a-col>
@@ -73,11 +73,11 @@
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
<!-- <j-dict-select-tag class="box-input" v-model="formInline.dutyTerritory"-->
<!-- @input="handleInput('dutyTerritory')"-->
<!-- :placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" dictCode="duty_territory"/>-->
<!-- <j-dict-select-tag class="box-input" v-model="formInline.dutyTerritory"-->
<!-- @input="handleInput('dutyTerritory')"-->
<!-- :placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" dictCode="duty_territory"/>-->
</a-form-model-item>
</div>
</a-col>
@@ -216,6 +216,13 @@
})
},
handleOk() {
if (this.formInline.dutyTerritory) {
this.handleOnTwo()
} else {
this.handleOkOne()
}
},
handleOkOne() {
let ids = JSON.parse(JSON.stringify(this.ids))
let formInline = JSON.parse(JSON.stringify(this.formInline))
Object.keys(formInline).forEach(res => {
@@ -240,6 +247,37 @@
}
})
},
handleOnTwo() {
let _this = this
this.$confirm({
content: _this.$t('areResponsibilityAreaInformationBatch'),
onOk() {
let ids = JSON.parse(JSON.stringify(_this.ids))
let formInline = JSON.parse(JSON.stringify(_this.formInline))
Object.keys(formInline).forEach(res => {
if (formInline[res] instanceof Array) {
formInline[res] = formInline[res].join(',')
}
})
let query = {
ids: ids.join(','),
...formInline
}
_this.confirmLoading = true
postAction(_this.url.setBatch, query).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.visible = false
_this.confirmLoading = false
_this.$emit('batSettingList')
} else {
_this.$message.warning(res.message)
_this.confirmLoading = false
}
})
}
})
},
handleCancel() {
this.formInline = {}
this.visible = false
@@ -113,11 +113,13 @@
<span class="title-text-text"
:title="$t('correspondingStandard')">{{$t('correspondingStandard')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-input class="box-input"
:disabled="true"
v-model="formInline.correspondingStandard"
:placeholder="$t('PleaseEnter')+$t('correspondingStandard')"/>
<a-form-model-item class="itemModel" prop="correspondingStandard">
<Standardselection :query="{'db_field_txt':$t('correspondingStandard')}"
:standard="formInline"
v-model="formInline.correspondingStandard"/>
<!-- <a-input class="box-input"-->
<!-- v-model="formInline.correspondingStandard"-->
<!-- :placeholder="$t('PleaseEnter')+$t('correspondingStandard')"/>-->
</a-form-model-item>
</div>
</a-col>
@@ -621,8 +623,15 @@
rules: {
subtitle: [
{
max: 100,
message: this.$t('subtitle') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
max: 300,
message: this.$t('subtitle') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
correspondingStandard: [
{
max: 300,
message: this.$t('correspondingStandard') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
@@ -143,7 +143,7 @@
class="ant-table tableList"
:loading="loading"
:pagination="false"
:scroll="{x: '100%',y:'calc(100vh - 170px)'}"
:scroll="{x: '100%',y:'calc(100vh - 186px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -202,6 +202,9 @@
<span v-else>--</span>
</span>
</a-table>
<div class="buttom-box" v-if="dataSource && dataSource.length > 0">
{{$t('total')+' '+this.dataSource.length+' '+ $t('strip')}}
</div>
</div>
</a-card>
</div>
@@ -796,7 +799,7 @@
let index2 = fileName.length
let fileSuffix = fileName.substring(index1, index2)
if (fileSuffix == '.pdf') {
window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + fileQuery.id+'&userName='+this.userInfo().username))
window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + fileQuery.id + '&userName=' + this.userInfo().username))
} else if (fileSuffix == '.docx') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
@@ -813,7 +816,7 @@
let index2 = fileName.length
let fileSuffix = fileName.substring(index1, index2)
if (fileSuffix == '.pdf') {
window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + id+'&userName='+this.userInfo().username))
window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + id + '&userName=' + this.userInfo().username))
} else if (fileSuffix == '.docx') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
@@ -825,7 +828,7 @@
}
},
download(item) {
downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id ,userName:this.userInfo().username})
downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id, userName: this.userInfo().username })
},
clickButtonToUpload(item) {
this.loading = true
@@ -1004,6 +1007,14 @@
text-justify: inter-ideograph;
word-break: break-all
}
.buttom-box {
width: 100%;
text-align: right;
font-size: 16px;
font-weight: 500;
color: #000F16;
}
</style>
<style>
.box-input .ant-select-selection {
@@ -14,18 +14,18 @@
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('areaOfResponsibility')">
<div class="title-text" :title="$t('areaOfResponsibility')">
<span>{{$t('areaOfResponsibility')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
<j-multi-select-tag class="box-input" v-model="queryParam.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
: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('CertificationProgress')">
<div class="title-text" :title="$t('CertificationProgress')">
<span>{{$t('CertificationProgress')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.certificationProgress"
@@ -76,6 +76,10 @@
</a-form>
</div>
<div class="table-operator">
<!-- <div class="operator-text" @click="batSettingClick">-->
<!-- <a-icon type="setting"/>-->
<!-- {{ $t('batSetting') }}-->
<!-- </div>-->
<div @click="CertificationDirectory" class="operator-text">
<a-icon type="bulb"/>
{{$t('CertificationDirectory')}}
@@ -86,6 +90,8 @@
</div>
</div>
<div style="width: 100%">
<!-- rowKey="id"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"-->
<a-table
ref="table"
bordered
@@ -98,7 +104,8 @@
>
<div slot="standardInformation" slot-scope="text,result" class="box-left">
<div class="content">
<a class="box-content-a" @click="standardClick(result)" :title="result.serialNumber">{{result.serialNumber}}</a>
<a class="box-content-a" @click="standardClick(result)"
:title="result.serialNumber">{{result.serialNumber}}</a>
<a class="box-content-buttom" :title="result.title">{{result.title}}</a>
</div>
</div>
@@ -170,12 +177,14 @@
</div>
<certificationDirectory :isDisplayNum="isDisplayNum" :url="url" ref="certificationDirectoryRef"/>
<TaskListModel @TaskListModelList="TaskListModelList" ref="TaskListModelRef"/>
<taskBatSetting @taskBatSettingForm="taskBatSettingForm" ref="taskBatSettingRef"></taskBatSetting>
</a-card>
</template>
<script>
import certificationDirectory from './certificationDirectory'
import TaskListModel from './TaskListModel'
import taskBatSetting from './taskBatSetting'
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
import { mapGetters } from 'vuex'
import store from '@/store/'
@@ -184,7 +193,8 @@
name: 'TaskList',
components: {
certificationDirectory,
TaskListModel
TaskListModel,
taskBatSetting
},
props: ['isDisplayNum', 'areaOfResponsibility'],
data() {
@@ -332,8 +342,18 @@
this.queryParam = {}
this.getList()
},
onSelectChange() {
batSettingClick() {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.$refs.taskBatSettingRef.edit(JSON.parse(JSON.stringify(this.selectedRowKeys)))
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
taskBatSettingForm() {
this.getList()
},
onSelectChange(value) {
this.selectedRowKeys = value
},
handleExport() {
let query = {
@@ -364,7 +384,7 @@
DueDate: 'designDueDate',
remarks: 'designRemark',
projectName: this.$route.query.projectName,
targetMarket:this.$route.query.targetMarket,
targetMarket: this.$route.query.targetMarket,
projectNameId: this.$route.query.projectNameId,
primaryKeyId: val.designTaskDetailId,
PersonChargeFeedback: val.designPersonChargeFeedback
@@ -389,7 +409,7 @@
DueDate: 'prehomoDueDate',
remarks: 'prehomoRemark',
projectName: this.$route.query.projectName,
targetMarket:this.$route.query.targetMarket,
targetMarket: this.$route.query.targetMarket,
projectNameId: this.$route.query.projectNameId,
primaryKeyId: val.prehomoTaskDetailId,
PersonChargeFeedback: val.prehomoPersonChargeFeedback
@@ -414,7 +434,7 @@
DueDate: 'verifyDueDate',
remarks: 'verifyRemark',
projectName: this.$route.query.projectName,
targetMarket:this.$route.query.targetMarket,
targetMarket: this.$route.query.targetMarket,
projectNameId: this.$route.query.projectNameId,
primaryKeyId: val.verifyTaskDetailId,
PersonChargeFeedback: val.verifyPersonChargeFeedback
@@ -431,9 +451,15 @@
this.$refs.certificationDirectoryRef.addModel()
},
getList() {
let queryParam = JSON.parse(JSON.stringify(this.queryParam))
Object.keys(queryParam).forEach(val => {
if (queryParam[val] instanceof Array) {
queryParam[val] = queryParam[val].join(',')
}
})
let query = {
projectLibraryId: this.$route.query.id,
...this.queryParam
...queryParam
}
this.loading = true
getAction(this.url.list, query).then((res) => {
@@ -458,15 +484,15 @@
TaskListModelList() {
this.getList()
},
standardClick(row){
standardClick(row) {
let newUrl = this.$router.resolve({
path: '/docManage/library/detail',
query: {
id:row.standId
id: row.standId
}
})
window.open(newUrl.href, '_blank')
},
}
}
}
</script>
@@ -659,7 +685,8 @@
.box-content-cou {
cursor: pointer;
}
.box-content-buttom{
.box-content-buttom {
width: 100%;
overflow: hidden;
display: -webkit-box;
@@ -215,6 +215,13 @@
})
},
handleOk() {
if (this.formInline.dutyTerritory) {
this.handleOkTwo()
} else {
this.handleOkOne()
}
},
handleOkOne() {
let ids = JSON.parse(JSON.stringify(this.ids))
let query = {
ids: ids.join(','),
@@ -233,6 +240,31 @@
}
})
},
handleOkTwo() {
let _this = this
this.$confirm({
content: _this.$t('areResponsibilityAreaInformationBatch'),
onOk() {
let ids = JSON.parse(JSON.stringify(_this.ids))
let query = {
ids: ids.join(','),
..._this.formInline
}
_this.confirmLoading = true
postAction(_this.url.setBatch, query).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.visible = false
_this.confirmLoading = false
_this.$emit('batSettingList')
} else {
_this.$message.warning(_this.$t('operationFailed'))
_this.confirmLoading = false
}
})
}
})
},
handleCancel() {
this.formInline = {}
this.visible = false
@@ -838,8 +838,8 @@
rulesData: {
subtitle: [
{
max: 100,
message: this.$t('subtitle') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
max: 300,
message: this.$t('subtitle') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
@@ -29,10 +29,10 @@
<div class="title-text" :title="$t('areaOfResponsibility')">
<span>{{ $t('areaOfResponsibility') }}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
<j-multi-select-tag class="box-input" v-model="queryParam.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
@@ -200,7 +200,7 @@
class="tableList"
:loading="loading"
:pagination="false"
:scroll="{x: '100%',y:'calc(100vh - 170px)'}"
:scroll="{x: '100%',y:'calc(100vh - 186px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -273,6 +273,9 @@
<span v-else>--</span>
</span>
</a-table>
<div class="buttom-box" v-if="dataSource && dataSource.length > 0">
{{$t('total')+' '+this.dataSource.length+' '+ $t('strip')}}
</div>
</div>
<listAddModel :url="url" @addModelList="addModelList" ref="addModelRef"/>
<listEditModel :url="url" @editModelList="addModelList" ref="editModelRef"/>
@@ -1386,9 +1389,15 @@
if (this.formInlineRoleSwitching.roleSwitchingCode == '11' || this.formInlineRoleSwitching.roleSwitchingCode == '12') {
roleCode = 0
}
let queryParam = JSON.parse(JSON.stringify(this.queryParam))
Object.keys(queryParam).forEach(val => {
if (queryParam[val] instanceof Array) {
queryParam[val] = queryParam[val].join(',')
}
})
let query = {
...this.queryParamQuery,
...this.queryParam,
...queryParam,
projectLibraryId: this.$route.query.id,
roleCode: roleCode
}
@@ -2257,6 +2266,14 @@
text-justify: inter-ideograph;
word-break: break-all
}
.buttom-box {
width: 100%;
text-align: right;
font-size: 16px;
font-weight: 500;
color: #000F16;
}
</style>
<style>
.box-input .ant-select-selection {
@@ -0,0 +1,251 @@
<template>
<a-modal
:title="$t('batSetting')"
:width="600"
:visible="visible"
:confirm-loading="confirmLoading"
:maskClosable="false"
@ok="handleOk"
@cancel="handleCancel"
>
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('CertificationProgress')">{{$t('CertificationProgress')}}</span>
</div>
<a-form-model-item class="itemModel">
<j-dict-select-tag class="box-input" v-model="formInline.certificationProgress"
@input="handleInput('certificationProgress')"
:placeholder="$t('PleaseSelect')+$t('CertificationProgress')"
:type="'select'"
:triggerChange="false" :dictCode="'certification_progress'"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('CurrentStatus')">{{$t('CurrentStatus')}}</span>
</div>
<a-form-model-item class="itemModel" prop="conditionAssessment">
<a-select
v-model="formInline.conditionAssessment"
:placeholder="$t('PleaseSelect')+$t('CurrentProjectStatusEvaluation')">
<a-select-option :value="'1'">
<span style="display: inline-block;width: 100%">
{{ $t('red') }}
</span>
</a-select-option>
<a-select-option :value="'2'">
<span style="display: inline-block;width: 100%">
{{ $t('yellow') }}
</span>
</a-select-option>
<a-select-option :value="'3'">
<span style="display: inline-block;width: 100%">
{{ $t('green') }}
</span>
</a-select-option>
<a-select-option :value="'4'" disabled>
<span style="display: inline-block;width: 100%">
{{ $t('blue') }}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-modal>
</template>
<script>
import { getAction, postAction } from '@/api/manage'
import moment from 'moment'
export default {
name: 'taskBatSetting',
props: ['url'],
data() {
return {
visible: false,
confirmLoading: false,
formInline: {},
rules: {},
ids: []
}
},
mounted() {
},
methods: {
edit(data) {
this.visible = true
this.$nextTick(() => {
this.ids = data || []
this.formInline = {}
})
},
handleOk() {
if (this.formInline.dutyTerritory) {
this.handleOkTwo()
} else {
this.handleOkOne()
}
},
handleOkOne() {
let ids = JSON.parse(JSON.stringify(this.ids))
let query = {
ids: ids.join(','),
...this.formInline
}
this.confirmLoading = true
postAction(this.url.setBatch, query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.confirmLoading = false
this.$emit('batSettingList')
} else {
this.$message.warning(this.$t('operationFailed'))
this.confirmLoading = false
}
})
},
handleOkTwo() {
let _this = this
this.$confirm({
content: _this.$t('areResponsibilityAreaInformationBatch'),
onOk() {
let ids = JSON.parse(JSON.stringify(_this.ids))
let query = {
ids: ids.join(','),
..._this.formInline
}
_this.confirmLoading = true
postAction(_this.url.setBatch, query).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.visible = false
_this.confirmLoading = false
_this.$emit('batSettingList')
} else {
_this.$message.warning(_this.$t('operationFailed'))
_this.confirmLoading = false
}
})
}
})
},
handleCancel() {
this.formInline = {}
this.visible = false
},
handleInput(value) {
this.$nextTick(() => {
this.formInline = { ...this.formInline }
this.$refs.ruleForm.validateField([value])
})
},
}
}
</script>
<style>
.formAdd .ant-form-item-label {
width: 130px;
}
.formAdd .ant-form-item-control-wrapper {
display: inline-block;
width: 100%;
}
/*.formAdd .ant-form-item {*/
/* margin-bottom: 20px;*/
/*}*/
.itemModel .ant-form-item-control-wrapper {
width: 100%;
}
.box-input .ant-select-selection--single {
height: 38px;
}
.box-input .ant-select-selection--multiple {
height: 38px;
}
.box-input .ant-select-selection__rendered {
line-height: 38px;
height: 38px;
}
.box-input .ant-select-selection--multiple .ant-select-selection__rendered > ul > li {
margin-top: 6px;
}
.box-input .ant-calendar-picker {
line-height: 38px;
height: 38px;
}
.box-input .ant-calendar-picker-input {
height: 38px;
}
.box-input .ant-input-number-input-wrap {
line-height: 38px;
height: 38px;
}
.box-input .ant-calendar-picker-input {
padding: 4px 30px 4px 11px;
}
</style>
<style scoped>
.box-title-text {
line-height: 1.4;
display: flex;
}
.title-text {
width: 84px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 42px;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.title-text-text {
margin-top: 9px;
}
.formAdd {
margin-bottom: 40px;
}
</style>