Merge branch 'dev_third_stage'

# Conflicts:
#	jero-web/src/common/lang/en-us.js
#	jero-web/src/common/lang/zh-cn.js
This commit is contained in:
lixuetao
2022-07-05 15:34:57 +08:00
100 changed files with 2523 additions and 352 deletions
@@ -29,6 +29,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -84,6 +84,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -65,6 +65,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -90,7 +91,8 @@
return {
//url传参严格按照当前命名
url: {
deleteBatch: ''
deleteBatch: '/report/lawsMonthlyReportWriteEO/deleteBatch',
list:'/report/lawsMonthlyReportWriteEO/page',
},
loading: false,
dataSource: [],
@@ -103,7 +105,7 @@
{
title: this.$t('chapterContents'),
align: 'center',
dataIndex: 'chapterContents',
dataIndex: 'memoriesChapterName',
width: 170
},
{
@@ -124,21 +126,21 @@
align: 'center',
width: 170,
ellipsis: true,
dataIndex: 'regulatoryContact'
dataIndex: 'lawsContact'
},
{
title: this.$t('completedBy'),
align: 'center',
ellipsis: true,
width: 170,
dataIndex: 'completedBy'
dataIndex: 'createBy'
},
{
title: this.$t('exportStatus'),
align: 'center',
ellipsis: true,
width: 170,
dataIndex: 'exportStatus'
dataIndex: 'exportStateName'
},
{
title: this.$t('operation'),
@@ -183,7 +185,26 @@
this.getList()
},
getList() {
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize,
...this.queryParam
}
this.loading = true
getAction(this.url.list, query).then((res) => {
if (res.success) {
if (res.result.current > 1 && res.result.records.length == 0) {
this.pageNo = res.result.current - 1
this.getList()
return
}
this.dataSource = res.result.records || []
this.total = res.result.total
this.loading = false
} else {
this.loading = false
}
})
},
monthlyTitleTemplateClick() {
this.$refs.fillTableRef.getData()
@@ -62,6 +62,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -7,10 +7,10 @@
<span class="title-text-text"
:title="$t('title')">{{$t('title')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="titleCn">
<a-input class="box-input"
:disabled="false"
v-model="formInline.title"
v-model="formInline.titleCn"
:placeholder="$t('PleaseEnter')+$t('title')"/>
</a-form-model-item>
</div>
@@ -21,10 +21,10 @@
<span class="title-text-text"
:title="$t('englishTitle')">{{$t('englishTitle')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="titleEn">
<a-input class="box-input"
:disabled="false"
v-model="formInline.englishTitle"
v-model="formInline.titleEn"
:placeholder="$t('PleaseEnter')+$t('englishTitle')"/>
</a-form-model-item>
</div>
@@ -59,7 +59,7 @@
:title="$t('vehicleType')">{{$t('vehicleType')}}</span>
</div>
<a-form-model-item class="itemModel-multi">
<j-multi-select-tag class="box-input" v-model="formInline.vehicleType"
<j-multi-select-tag class="box-input" v-model="formInline.applyCar"
:placeholder="$t('PleaseSelect')+$t('vehicleType')"
:type="'select'"
:triggerChange="false" :dictCode="'car_type'"/>
@@ -75,7 +75,7 @@
:title="$t('scopeOfApplication')">{{$t('scopeOfApplication')}}</span>
</div>
<a-form-model-item class="itemModel-multi">
<j-multi-select-tag class="box-input" v-model="formInline.shi4_yong4_fan4_wei2"
<j-multi-select-tag class="box-input" v-model="formInline.applyScope"
:placeholder="$t('PleaseSelect')+$t('scopeOfApplication')"
:type="'select'"
:triggerChange="false" :dictCode="'apply_scope'"/>
@@ -89,7 +89,7 @@
:title="$t('status')">{{$t('status')}}</span>
</div>
<a-form-model-item class="itemModel">
<j-dict-select-tag class="box-input" v-model="formInline.status"
<j-dict-select-tag class="box-input" v-model="formInline.state"
@input="handleInput('status')"
:placeholder="$t('PleaseSelect')+$t('status')"
:type="'select'"
@@ -106,11 +106,11 @@
:title="$t('usage')">{{$t('usage')}}</span>
</div>
<a-form-model-item class="itemModel">
<j-dict-select-tag class="box-input" v-model="formInline.usage"
<j-dict-select-tag class="box-input" v-model="formInline.useMethod"
@input="handleInput('usage')"
:placeholder="$t('PleaseSelect')+$t('usage')"
:type="'select'"
:triggerChange="false" :dictCode="'usage'"/>
:triggerChange="false" :dictCode="'yong4_fa3'"/>
</a-form-model-item>
</div>
</a-col>
@@ -120,10 +120,10 @@
<span class="title-text-text"
:title="$t('implementationModel')">{{$t('implementationModel')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="implementCar">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.implementationModel"
v-model="formInline.implementCar"
:placeholder="$t('PleaseEnter')+$t('implementationModel')"/>
</a-form-model-item>
</div>
@@ -136,10 +136,10 @@
<span class="title-text-text"
:title="$t('releaseDate')">{{$t('releaseDate')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="issueTime">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.releaseDate"
v-model="formInline.issueTime"
:placeholder="$t('PleaseEnter')+$t('releaseDate')"/>
</a-form-model-item>
</div>
@@ -150,10 +150,10 @@
<span class="title-text-text"
:title="$t('ImplementationDate')">{{$t('ImplementationDate')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="newCarImplementTime">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.ImplementationDate"
v-model="formInline.newCarImplementTime"
:placeholder="$t('PleaseEnter')+$t('ImplementationDate')"/>
</a-form-model-item>
</div>
@@ -166,10 +166,10 @@
<span class="title-text-text"
:title="$t('vehicleInProductionDate')">{{$t('vehicleInProductionDate')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="productionCarImplementTime">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.vehicleInProductionDate"
v-model="formInline.productionCarImplementTime"
:placeholder="$t('PleaseEnter')+$t('vehicleInProductionDate')"/>
</a-form-model-item>
</div>
@@ -181,10 +181,10 @@
<div class="title-text">
<span class="title-text-text" :title="$t('primaryCoverageCn')">{{$t('primaryCoverageCn')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="contentCn">
<a-textarea
:placeholder="$t('PleaseEnter')+$t('primaryCoverageCn')"
v-model.trim="formInline.useExplain" :rows="4"/>
v-model.trim="formInline.contentCn" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
@@ -195,10 +195,10 @@
<div class="title-text">
<span class="title-text-text" :title="$t('primaryCoverageEn')">{{$t('primaryCoverageEn')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="contentEn">
<a-textarea
:placeholder="$t('PleaseEnter')+$t('primaryCoverageEn')"
v-model.trim="formInline.useExplain" :rows="4"/>
v-model.trim="formInline.contentEn" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
@@ -209,10 +209,10 @@
<div class="title-text">
<span class="title-text-text" :title="$t('workProgressCn')">{{$t('workProgressCn')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="workProgressCn">
<a-textarea
:placeholder="$t('PleaseEnter')+$t('workProgressCn')"
v-model.trim="formInline.useExplain" :rows="4"/>
v-model.trim="formInline.workProgressCn" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
@@ -223,10 +223,10 @@
<div class="title-text">
<span class="title-text-text" :title="$t('workProgressEn')">{{$t('workProgressEn')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="workProgressEn">
<a-textarea
:placeholder="$t('PleaseEnter')+$t('workProgressEn')"
v-model.trim="formInline.useExplain" :rows="4"/>
v-model.trim="formInline.workProgressEn" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
@@ -238,10 +238,11 @@
<span class="title-text-text" :title="$t('regulatoryContact')">{{$t('regulatoryContact')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-input class="box-input"
:disabled="false"
v-model="formInline.regulatoryContact"
:placeholder="$t('PleaseEnter')+$t('regulatoryContact')"/>
<PersonnelSelection
:query="{db_field_name:'lawsContact',db_field_txt:$t('regulatoryContact')}"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.lawsContactName"/>
</a-form-model-item>
</div>
</a-col>
@@ -252,7 +253,7 @@
<div class="title-text">
<span class="title-text-text" :title="$t('link')">{{$t('link')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="link">
<a-input class="box-input"
:disabled="false"
v-model="formInline.link"
@@ -265,32 +266,93 @@
</template>
<script>
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { mapGetters } from 'vuex'
import { getAction, postAction, downloadFile } from '@/api/manage'
export default {
name: 'defaultTemplate',
props: ['formInlineQuery'],
components: {
PersonnelSelection
},
data() {
return {
rules: {
name: [
{
required: true,
message: this.$t('VirtualListName') + this.$t('cannotEmpty'),
trigger: 'blur'
},
titleCn: [
{
max: 100,
message: this.$t('VirtualListName') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
message: this.$t('title') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
useExplain: [
titleEn: [
{
required: true,
message: this.$t('instructionForUse') + this.$t('cannotEmpty'),
max: 100,
message: this.$t('englishTitle') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
},
}
],
productionCarImplementTime: [
{
max: 500,
message: this.$t('instructionForUse') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
max: 100,
message: this.$t('vehicleInProductionDate') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
newCarImplementTime: [
{
max: 100,
message: this.$t('ImplementationDate') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
issueTime: [
{
max: 100,
message: this.$t('releaseDate') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
implementCar: [
{
max: 100,
message: this.$t('implementationModel') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
link: [
{
max: 100,
message: this.$t('link') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
workProgressEn: [
{
max: 300,
message: this.$t('workProgressEn') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
workProgressCn: [
{
max: 300,
message: this.$t('workProgressEn') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
contentEn: [
{
max: 300,
message: this.$t('primaryCoverageEn') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
contentCn: [
{
max: 300,
message: this.$t('primaryCoverageCn') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
]
@@ -301,14 +363,55 @@
}
},
mounted() {
this.getSysCategoryTree()
this.$nextTick(() => {
if (this.formInlineQuery.id) {
this.formInline = JSON.parse(JSON.stringify(this.formInlineQuery))
if(this.formInline.technologyTerritory){
this.formInline.technologyTerritory = this.formInline.technologyTerritory.split(',')
}
this.formInline = { ...this.formInline }
} else {
this.formInline = {}
this.formInline.lawsContactName = this.userInfo().username
this.formInline.lawsContact = this.userInfo().id
this.formInline = { ...this.formInline }
}
})
},
methods: {
...mapGetters(['userInfo']),
getSysCategoryTree() {
getAction('/sys/category/getSysCategoryTree', {}).then((res) => {
if (res.success) {
this.CategoryTreeList = res.result
} else {
this.CategoryTreeList = []
}
})
},
handleInput(value) {
this.$nextTick(() => {
this.formInline = { ...this.formInline }
this.$refs.ruleForm.validateField([value])
})
},
PersonnelSelectionChange(value, id) {
this.formInline[value] = id
this.formInline = { ...this.formInline }
},
getData(callback) {
this.$refs.ruleForm.validate(valid => {
if (valid) {
let formInline = JSON.parse(JSON.stringify(this.formInline))
Object.keys(formInline).forEach(res => {
if (formInline[res] && formInline[res] instanceof Array) {
formInline[res] = formInline[res].join(',')
}
})
callback && callback(formInline)
}
})
}
}
}
@@ -15,12 +15,13 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('fillInTheMonth')">{{$t('fillInTheMonth')}}</span>
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('fillInTheMonth')">{{$t('fillInTheMonth')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="month">
<a-month-picker class="box-input"
v-model="formInline.fillInTheMonth"
v-model="formInline.month"
:placeholder="$t('fillInTheMonth')"/>
</a-form-model-item>
</div>
@@ -35,34 +36,33 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('chapterContents')">{{$t('chapterContents')}}</span>
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('chapterContents')">{{$t('chapterContents')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-select :placeholder="$t('PleaseSelect')+$t('chapterContents')"
:disabled="disabled"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
v-model="formInline.chapterContents">
<a-select-option v-for="(item, key) in chapterContentsList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name }}
</span>
</a-select-option>
</a-select>
<a-form-model-item class="itemModel-multi" prop="memoriesChapter">
<a-tree-select
tree-node-filter-prop="title"
v-model="formInline.memoriesChapter"
:maxTagCount="1"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
class="box-input"
style="width: 100%"
:tree-data="chapterContentsList"
tree-checkable
:placeholder="$t('PleaseSelect')+$t('chapterContents')"
/>
</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="$t('contentTemplate')">{{$t('contentTemplate')}}</span>
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('contentTemplate')">{{$t('contentTemplate')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-form-model-item class="itemModel" prop="contentTemplate">
<a-select :placeholder="$t('PleaseSelect')+$t('contentTemplate')"
:disabled="disabled"
class="box-input"
@@ -81,9 +81,12 @@
</div>
</a-col>
</a-row>
<defaultTemplate v-if="formInline.contentTemplate == 1"/>
<solicitOpinions v-else-if="formInline.contentTemplate == 2"/>
<releaseStandard v-else-if="formInline.contentTemplate == 3"/>
<defaultTemplate :formInlineQuery="formInline" ref="defaultTemplateRef"
v-if="formInline.contentTemplate == '1'"/>
<solicitOpinions :formInlineQuery="formInline " ref="solicitOpinionsRef"
v-else-if="formInline.contentTemplate == '2'"/>
<releaseStandard :formInlineQuery="formInline" ref="releaseStandardRef"
v-else-if="formInline.contentTemplate == '3'"/>
</a-form-model>
</a-spin>
<div class="drawer-bootom-button">
@@ -98,6 +101,7 @@
import defaultTemplate from './defaultTemplate'
import solicitOpinions from './solicitOpinions'
import releaseStandard from './releaseStandard'
import { getAction, postAction, downloadFile } from '@/api/manage'
export default {
name: 'fillAdd',
@@ -109,28 +113,25 @@
data() {
return {
rules: {
name: [
month: [
{
required: true,
message: this.$t('VirtualListName') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 100,
message: this.$t('VirtualListName') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
message: this.$t('fillInTheMonth') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
useExplain: [
memoriesChapter: [
{
required: true,
message: this.$t('instructionForUse') + this.$t('cannotEmpty'),
trigger: 'blur'
},
message: this.$t('chapterContents') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
contentTemplate: [
{
max: 500,
message: this.$t('instructionForUse') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
required: true,
message: this.$t('contentTemplate') + this.$t('cannotEmpty'),
trigger: 'change'
}
]
},
@@ -142,40 +143,66 @@
chapterContentsList: [],
contentTemplateList: [
{
id: 1,
text: '默认模板'
id: '1',
text: this.$t('defaultTemplate')
},
{
id: 2,
text: '新征求意见清单模板'
id: '2',
text: this.$t('newRequestCommentListTemplate')
},
{
id: 3,
text: '新发布标准模板'
id: '3',
text: this.$t('NewReleasedStandardTemplate')
}
]
],
url: {
add: '/report/lawsMonthlyReportWriteEO/add',
edit: '/report/lawsMonthlyReportWriteEO/edit',
queryById: '/report/lawsMonthlyReportWriteEO/queryById'
}
}
},
mounted() {
},
methods: {
getTree() {
let query = {
pageNo: this.pageNo,
pageSize: 1000
}
getAction('/report/lawsMonthlyReportTitleTemplateEO/page', query).then((res) => {
if (res.success) {
this.chapterContentsList = res.result.records || []
this.chapterContentsList.forEach(res => {
})
} else {
this.chapterContentsList = []
}
})
},
add() {
this.getTree()
this.title = this.$t('addContent')
this.visible = true
this.disabled = false
this.$nextTick(() => {
this.formInline = {}
this.formInline.contentTemplate = 1
this.formInline.contentTemplate = '1'
this.formInline = { ...this.formInline }
this.$refs.ruleForm.clearValidate()
})
},
edit(row) {
this.getTree()
this.title = this.$t('editContent')
this.visible = true
this.disabled = false
this.$nextTick(() => {
this.formInline = row
if (this.formInline.memoriesChapter) {
this.formInline.memoriesChapter = this.formInline.memoriesChapter.split(',')
}
this.$refs.ruleForm.clearValidate()
})
},
@@ -192,7 +219,50 @@
this.visible = false
},
handleSubmit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
let text = ''
if (this.$refs.defaultTemplateRef) {
text = 'defaultTemplateRef'
} else if (this.$refs.solicitOpinionsRef) {
text = 'solicitOpinionsRef'
} else if (this.$refs.releaseStandardRef) {
text = 'releaseStandardRef'
}
this.$refs[text].getData((val) => {
this.confirmLoading = true
let url = ''
if (this.formInline.id) {
url = this.url.edit
} else {
url = this.url.add
}
let formInline = JSON.parse(JSON.stringify(this.formInline))
Object.keys(formInline).forEach(res => {
if (formInline[res] && formInline[res] instanceof Array) {
formInline[res] = formInline[res].join(',')
}
})
let query = Object.assign(val, {
month: formInline.month,
memoriesChapter: formInline.memoriesChapter,
contentTemplate: formInline.contentTemplate
})
postAction(url, query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.confirmLoading = false
this.$emit('fillTableAddForm')
} else {
this.confirmLoading = false
this.$message.warning(this.$t('operationFailed'))
}
})
})
}
})
}
}
}
@@ -42,6 +42,7 @@
show-size-changer
:page-size.sync="pageSize "
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -53,8 +53,8 @@
<a-select-option v-for="(item, key) in ParentList"
:key="item.id"
:value="item.id">
<span style="display: inline-block;width: 100%" :title="item.title ">
{{ item.title }}
<span style="display: inline-block;width: 100%" :title="item.titleCn ">
{{ item.titleCn }}
</span>
</a-select-option>
</a-select>
@@ -21,7 +21,7 @@
<a-form-model-item class="itemModel" prop="standardNo">
<a-input class="box-input"
:disabled="false"
v-model="formInline.standardNo"
v-model="formInline.standardNumber"
:placeholder="$t('PleaseEnter')+$t('standardNo')"/>
</a-form-model-item>
</div>
@@ -63,10 +63,10 @@
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('releaseDate')"
@change="dateChange('releaseDate')"
@change="dateChange('issueTime',index)"
:getCalendarContainer="(trigger) => trigger.parentNode"
format="YYYY-MM-DD"
v-model="formInline['releaseDate']"
v-model="formInline['issueTime']"
:disabled="disabled"
style="width: 100%"/>
</a-form-model-item>
@@ -82,10 +82,10 @@
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('implemenDate')"
@change="dateChange('implemenDate')"
@change="dateChange('implementTime',index)"
:getCalendarContainer="(trigger) => trigger.parentNode"
format="YYYY-MM-DD"
v-model="formInline['implemenDate']"
v-model="formInline['implementTime']"
:disabled="disabled"
style="width: 100%"/>
</a-form-model-item>
@@ -101,19 +101,34 @@
export default {
name: 'releaseStandard',
props:['formInlineQuery'],
data() {
return {
rules: {},
formInline: {},
CategoryTreeList: [],
disabled: false,
dataList: [
{ id: 1 }
]
dataList: []
}
},
mounted() {
this.$nextTick(() => {
if (this.formInlineQuery.id) {
this.formInline = JSON.parse(JSON.stringify(this.formInlineQuery))
this.formInline = { ...this.formInline }
} else {
this.dataList = [
{
standardNumber: '',
standardNameCn: '',
standardNameEn: '',
issueTime: '',
implementTime:'',
}
]
this.dataList = [...this.dataList]
}
})
},
methods: {
handleInput(value) {
@@ -124,7 +139,11 @@
},
addData() {
this.dataList.push({
id: 2
standardNumber: '',
standardNameCn: '',
standardNameEn: '',
issueTime: '',
implementTime:'',
})
this.dataList = [...this.dataList]
},
@@ -132,8 +151,15 @@
this.dataList.pop()
this.dataList = [...this.dataList]
},
dateChange(item) {
this.formInline[item] = this.formInline[item] ? moment(this.formInline[item]).format('YYYY-MM-DD') : ''
dateChange(item,index) {
this.dataList[index][item] = this.dataList[index][item] ? moment(this.dataList[index][item]).format('YYYY-MM-DD') : ''
},
getData(callback) {
this.$refs.ruleForm.validate(valid => {
if (valid) {
callback && callback(this.formInline)
}
})
}
}
}
@@ -21,7 +21,7 @@
<a-form-model-item class="itemModel" prop="planNoChinese">
<a-input class="box-input"
:disabled="false"
v-model="formInline.planNoChinese"
v-model="item.planNumberCn"
:placeholder="$t('PleaseEnter')+$t('planNoChinese')"/>
</a-form-model-item>
</div>
@@ -35,7 +35,7 @@
<a-form-model-item class="itemModel" prop="standardNameCn">
<a-input class="box-input"
:disabled="false"
v-model="formInline.standardNameCn"
v-model="item.standardNameCn"
:placeholder="$t('PleaseEnter')+$t('standardNameCn')"/>
</a-form-model-item>
</div>
@@ -50,7 +50,7 @@
<a-form-model-item class="itemModel">
<a-input class="box-input"
:disabled="false"
v-model="formInline.standardNameEn"
v-model="item.standardNameEn"
:placeholder="$t('PleaseEnter')+$t('standardNameEn')"/>
</a-form-model-item>
</div>
@@ -63,10 +63,10 @@
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('deadlineForComments')"
@change="dateChange('deadlineForComments')"
@change="dateChange('expirationDate',index)"
:getCalendarContainer="(trigger) => trigger.parentNode"
format="YYYY-MM-DD"
v-model="formInline['deadlineForComments']"
v-model="item['expirationDate']"
:disabled="disabled"
style="width: 100%"/>
</a-form-model-item>
@@ -82,19 +82,33 @@
export default {
name: 'solicitOpinions',
props: ['formInlineQuery'],
data() {
return {
rules: {},
formInline: {},
CategoryTreeList: [],
disabled: false,
dataList: [
{ id: 1 }
]
dataList: []
}
},
mounted() {
this.$nextTick(() => {
if (this.formInlineQuery.id) {
this.formInline = JSON.parse(JSON.stringify(this.formInlineQuery))
this.formInline = { ...this.formInline }
} else {
this.dataList = [
{
planNumberCn: '',
standardNameCn: '',
standardNameEn: '',
expirationDate: ''
}
]
this.dataList = [...this.dataList]
}
})
},
methods: {
handleInput(value) {
@@ -105,7 +119,10 @@
},
addData() {
this.dataList.push({
id: 2
planNumberCn: '',
standardNameCn: '',
standardNameEn: '',
expirationDate: ''
})
this.dataList = [...this.dataList]
},
@@ -113,8 +130,15 @@
this.dataList.pop()
this.dataList = [...this.dataList]
},
dateChange(item) {
this.formInline[item] = this.formInline[item] ? moment(this.formInline[item]).format('YYYY-MM-DD') : ''
dateChange(item, index) {
this.dataList[index][item] = this.dataList[index][item] ? moment(this.dataList[index][item]).format('YYYY-MM-DD') : ''
},
getData(callback) {
this.$refs.ruleForm.validate(valid => {
if (valid) {
callback && callback(this.formInline)
}
})
}
}
}
@@ -193,6 +193,7 @@
show-size-changer
:page-size.sync="pageSize "
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -88,6 +88,7 @@
show-size-changer
:page-size.sync="queryParams.pageSize"
:total="total"
:current="pageNo"
@change="onChangePage"
@showSizeChange="SizeChange"
/>
@@ -200,6 +200,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -80,6 +80,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -73,6 +73,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -96,6 +96,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -79,6 +79,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -60,13 +60,14 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
</div>
<!-- 复制参数模板-->
<!-- 导出历史模板-->
<a-modal class="show-drawer" :title="titleTag" width="900px" v-model="drawerVisible" :footer="null">
<export-history v-if='drawerVisible' @areaVisible='drawerVisible = false'></export-history>
<export-history v-if='drawerVisible' @areaVisible='drawerVisible = false' :paramsManifestId='paramsManifestId'></export-history>
</a-modal>
</a-card>
</template>
@@ -90,6 +91,7 @@
loading: false,
toggleSearchStatus: false,
selectedRowKeys: [],
paramsManifestId:'',
selectedRowKeysArray: '',
formInline: {},
rules: {
@@ -172,9 +174,10 @@
this.selectedRowKeys = value
this.selectedRowKeysArray = this.selectedRowKeys.join(',')
},
// 复制
handlecody() {
// 导出历史
handlecody(e) {
this.drawerVisible = true
this.paramsManifestId = e.id
},
hideModal() {
this.visible = false
@@ -0,0 +1,402 @@
<!--常规导出-->
<template>
<div>
<a-modal
:title="title"
:maskClosable="false"
:width="750"
placement="right"
:closable="true"
@cancel="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form>
<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" :title="$t('certificationCategory')">
<span>{{$t('certificationCategory')}}</span>
</div>
<a-form-model-item class="itemModel" prop="certCategory">
<j-dict-select-tag class="box-input" v-model="formInline.certCategory"
:placeholder="$t('PleaseSelect')+$t('certificationCategory')"
:type="'select'"
@input="certCategoryName"
:triggerChange="false" :dictCode="'cert_category'"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text" :title="$t('configure')">
<span>{{$t('configure')}}</span>
</div>
<a-form-model-item class="itemModel" prop="configIds">
<j-multi-select-tag class="box-input" v-model="formInline.configIds"
:options="dictOptions"
:placeholder="$t('PleaseSelect')+$t('configure')"
:type="'select'"
:triggerChange="false" :dictCode="'cert_category'"/>
</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="$t('WhetherMergeParameters')">{{$t('WhetherMergeParameters')}}</span>
</div>
<a-form-model-item class="itemModel" prop="combineFlag">
<a-radio-group style="margin-top: 2px" @change="flagChange" class="box-input" v-model="formInline.combineFlag">
<a-radio value="1">
{{$t('nonjoinder')}}
</a-radio>
<a-radio value="2">
{{$t('merge')}}
</a-radio>
</a-radio-group>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required" v-if='required'>*</span>
<span class="title-text-text"
:title="$t('MergeSeparator')">{{$t('MergeSeparator')}}</span>
</div>
<a-form-model-item class="itemModel" :prop="this.disabled == true?'separator':''">
<!-- :disabled="disabled"-->
<a-input class="box-input"
v-model="formInline.separator"
:placeholder="$t('PleaseEnter')+$t('MergeSeparator')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-form>
</a-spin>
<div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('export')}}</a-button>
</div>
</a-modal>
<uploadFileChange ref="uploadFile" :accept="'.doc,.doxc,.xls,.xlsx'" @uploadSuccess="uploadSuccess"></uploadFileChange>
</div>
</template>
<script>
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
import uploadFileChange from '@/components/uploadFileChange/file'
export default {
name: 'addModel',
components: {
uploadFileChange,
PersonnelSelection
},
props: ['url'],
data() {
return {
formInline: {
},
confirmLoading: false,
description:false,
dictOptions:[],
visible: false,
required:false,
disabled:false,
rules: {
separator:[
{ required: true, message: this.$t('PleaseEnter')+this.$t('MergeSeparator'), trigger: 'change' },
// { min:1, max: 50, message: this.$t('cantExeed')+'50'+this.$t('MergeSeparator'), trigger: 'blur' },
],
certCategory:[
{ required: true, message: this.$t('PleaseEnter')+this.$t('certificationCategory'), trigger: 'change' },
// { min:1, max: 50, message: this.$t('cantExeed')+'50'+this.$t('MergeSeparator'), trigger: 'blur' },
],
combineFlag:[
{ required: true, message: this.$t('PleaseSelect')+this.$t('WhetherMergeParameters'), trigger: 'change' },
// { min:1, max: 50, message: this.$t('cantExeed')+'50'+this.$t('MergeSeparator'), trigger: 'blur' },
],
configIds:[
{ required: true, message: this.$t('PleaseSelect')+this.$t('configure'), trigger: 'change' },
// { min:1, max: 50, message: this.$t('cantExeed')+'50'+this.$t('MergeSeparator'), trigger: 'blur' },
],
description:[
{ min:1, max: 200, message: this.$t('cantExeed')+'200'+this.$t('characters'), trigger: 'blur' },
],
status: [
{ required: true, message: this.$t('PleaseSelect')+this.$t('status'), trigger: 'change' },
],
fileConnectId: [
{ required: true, message: this.$t('PleaseSelect')+this.$t('attachmentTemplate'), trigger: 'change' },
],
},
projectNameList: [],
title: ''
}
},
mounted() {
this.getNameList()
},
methods: {
uploadSuccess(data) {
let attIdList = []
if (data && data.length > 0) {
data.map(item => {
attIdList.push(item.id || data.name)
})
}
this.$refs.uploadFile.visible = false
/** 赋值给当前对应的表单文件 */
this.formInline.fileConnectId = attIdList.join(',')
this.formInline = { ...this.formInline }
},
clickButtonToUpload(item) {
this.$refs.uploadFile.visible = true
getAction('sys/common/getFileInfos', { id: this.formInline.fileConnectId }).then((res) => {
if (res.success) {
this.$refs.uploadFile.perentHandleFunc(res.result)
} else {
this.$refs.uploadFile.perentHandleFunc()
}
})
},
flagChange(value){
console.log(value.target.value)
if(value.target.value == 2){
this.required = true
this.disabled = true
}else{
this.required = false
this.disabled = false
}
},
getNameList() {
getAction('project/projectNameInfoEO/list', {}).then((res) => {
if (res.success) {
this.projectNameList = res.result || []
} else {
this.projectNameList = []
}
})
},
addModel() {
this.visible = true
this.title = this.$t('ConventionalExport')
this.formInline = {}
this.formInline.separator = ','
this.formInline = {...this.formInline}
this.getConfigure()
this.$nextTick(() => {
this.$refs['ruleForm'].clearValidate()
})
},
getConfigure(){
let pram = {
paramsManifestId: this.$route.query.id
}
getAction('report/detail/getConfigLabelList', pram).then((res) => {
if (res.success) {
console.log(res.result)
this.dictOptions = res.result
} else {
// this.$refs.uploadFile.perentHandleFunc()
}
})
},
editModel(value) {
this.visible = true
this.title = '编辑'
this.$nextTick(() => {
this.formInline = value
})
},
handleCancel() {
this.visible = false
this.$refs.ruleForm.resetFields()
},
certCategoryName(value){
getAction('sys/dict/getDictItems/cert_category', { }).then((res) => {
if (res.success) {
let tt = ''
res.result.forEach((item) => {
if(item.value == value){
tt=item.title
}
})
this.contentListStart = tt
console.log(this.contentListStart)
}
})
console.log(value)
},
handleSubmit() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
let url = this.url.ConventionalExport
let Action = getAction
let query = JSON.parse(JSON.stringify(this.formInline))
Object.keys(query).forEach(res => {
if (query[res] && query[res] instanceof Array) {
query[res] = query[res].join(',')
}
})
if(this.contentListStart){
query.certCategoryName = this.contentListStart
}
query.paramsManifestId = this.$route.query.id
this.confirmLoading = true
downloadFile('report/detail/exportNormal', this.$t('GeneralExportInformation')+'.zip', query)
this.confirmLoading = false
}
})
},
handleInput(value) {
this.$nextTick(() => {
this.formInline = { ...this.formInline }
this.$refs.ruleForm.validateField([value])
})
},
PersonnelSelectionChange(value, id) {
this.formInline[value] = id
this.formInline = { ...this.formInline }
},
projectNameChange(value){
console.log(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;
}
</style>
<style scoped>
.box-title-text {
line-height: 1.4;
display: flex;
/*align-items: center;*/
}
.title-text {
width: 114px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 48px;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.Required {
color: red;
margin-right: 4px;
}
.title-text-text {
margin-top: 9px;
}
.formAdd {
margin-bottom: 40px;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
z-index:100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
/deep/.add-input{
min-height: 135px!important;
}
</style>
<style>
.ant-input-disabled {
color: rgba(0, 0, 0, 0.65) !important;
}
</style>
@@ -0,0 +1,358 @@
<template>
<div>
<a-drawer
:title="title"
:maskClosable="false"
:width="1000"
placement="right"
:closable="true"
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form>
<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="Required">*</span>
<span class="title-text-text"
:title="$t('parameterTemplate')">{{$t('parameterTemplate')}}</span>
</div>
<a-form-model-item class="itemModel" prop="templateName">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.templateName"
:placeholder="$t('PleaseEnter')+$t('templateName')"/>
</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('status')">{{$t('status')}}</span>
</div>
<a-form-model-item class="itemModel" prop="state">
<a-select allowClear :placeholder="$t('PleaseSelect')+$t('status')" v-model='formInline.state'>
<a-select-option :key="'0'" :value="'0'">{{$t('Enable')}}
</a-select-option>
<a-select-option :key="'1'" :value="'1'">{{$t('disable')}}
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('contentDescription')">{{$t('contentDescription')}}</span>
</div>
<a-form-model-item class="itemModel" prop="description">
<a-input class="box-input add-input"
type="textarea"
:disabled="disabled"
v-model="formInline.description"
:placeholder="$t('PleaseEnter')+$t('contentDescription')"/>
</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('attachmentTemplate')">{{$t('attachmentTemplate')}}</span>
</div>
<a-form-model-item class="itemModel" prop="fileConnectId">
<a-button type="primary" class="button-text"
v-model='formInline.fileConnectId'
@click="clickButtonToUpload('fileTemplateConnectId')">
{{ (formInline.fileConnectId === 'null' || formInline.fileConnectId === '' ||
formInline.fileConnectId == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
</a-button>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-form>
</a-spin>
<div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
<uploadFileChange ref="uploadFile" :accept="'.doc,.doxc,.xls,.xlsx'" @uploadSuccess="uploadSuccess"></uploadFileChange>
</div>
</template>
<script>
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
import uploadFileChange from '@/components/uploadFileChange/file'
export default {
name: 'addModel',
components: {
uploadFileChange,
PersonnelSelection
},
props: ['url'],
data() {
return {
formInline: {},
confirmLoading: false,
visible: false,
rules: {
templateName:[
{ required: true, message: this.$t('PleaseEnter')+this.$t('parameterTemplate'), trigger: 'change' },
{ min:1, max: 50, message: this.$t('cantExeed')+'50'+this.$t('characters'), trigger: 'blur' },
],
description:[
{ min:1, max: 200, message: this.$t('cantExeed')+'200'+this.$t('characters'), trigger: 'blur' },
],
status: [
{ required: true, message: this.$t('PleaseSelect')+this.$t('status'), trigger: 'change' },
],
fileConnectId: [
{ required: true, message: this.$t('PleaseSelect')+this.$t('attachmentTemplate'), trigger: 'change' },
],
},
disabled: false,
projectNameList: [],
title: ''
}
},
mounted() {
this.getNameList()
},
methods: {
uploadSuccess(data) {
let attIdList = []
if (data && data.length > 0) {
data.map(item => {
attIdList.push(item.id || data.name)
})
}
this.$refs.uploadFile.visible = false
/** 赋值给当前对应的表单文件 */
this.formInline.fileConnectId = attIdList.join(',')
this.formInline = { ...this.formInline }
},
clickButtonToUpload(item) {
this.$refs.uploadFile.visible = true
getAction('sys/common/getFileInfos', { id: this.formInline.fileConnectId }).then((res) => {
if (res.success) {
this.$refs.uploadFile.perentHandleFunc(res.result)
} else {
this.$refs.uploadFile.perentHandleFunc()
}
})
},
getNameList() {
getAction('project/projectNameInfoEO/list', {}).then((res) => {
if (res.success) {
this.projectNameList = res.result || []
} else {
this.projectNameList = []
}
})
},
addModel() {
this.visible = true
this.title = this.$t('CustomExport')
this.formInline = {}
this.formInline.state = '0'
this.formInline = {...this.formInline}
this.$nextTick(() => {
this.$refs['ruleForm'].clearValidate()
})
},
editModel(value) {
this.visible = true
this.title = '编辑'
this.$nextTick(() => {
this.formInline = value
})
},
handleCancel() {
this.visible = false
},
handleSubmit() {
if(this.formInline.paramsTemplateName !== undefined) {
this.formInline.paramsTemplateName = this.formInline.paramsTemplateName.trim()
}
this.$refs.ruleForm.validate(valid => {
if (valid) {
let url = ''
let Action
if (this.formInline.id) {
url = this.url.edit
Action = postAction
} else {
url = this.url.add
Action = postAction
}
let query = JSON.parse(JSON.stringify(this.formInline))
Object.keys(query).forEach(res => {
if (query[res] && query[res] instanceof Array) {
query[res] = query[res].join(',')
}
})
this.confirmLoading = true
Action(url, query).then((res) => {
if (res.success) {
this.confirmLoading = false
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.$emit('addModelList')
} else {
this.$message.warning(this.$t('operationFailed'))
this.confirmLoading = false
}
})
}
})
},
handleInput(value) {
this.$nextTick(() => {
this.formInline = { ...this.formInline }
this.$refs.ruleForm.validateField([value])
})
},
PersonnelSelectionChange(value, id) {
this.formInline[value] = id
this.formInline = { ...this.formInline }
},
projectNameChange(value){
console.log(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;
}
</style>
<style scoped>
.box-title-text {
line-height: 1.4;
display: flex;
/*align-items: center;*/
}
.title-text {
width: 114px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 48px;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.Required {
color: red;
margin-right: 4px;
}
.title-text-text {
margin-top: 9px;
}
.formAdd {
margin-bottom: 40px;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
z-index:100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
/deep/.add-input{
min-height: 135px!important;
}
</style>
<style>
.ant-input-disabled {
color: rgba(0, 0, 0, 0.65) !important;
}
</style>
@@ -4,7 +4,7 @@
<div class="Virtual-detail-header" style="top: 0">
<div class="Virtual-detail-title">
<span>
{{ $t('ParameteItemCollectionList') }}
{{ $t('ParameterViewPage') }}
</span>
</div>
</div>
@@ -12,6 +12,17 @@
<div class='Virtual-detail-content' style='margin-top: 15px'>
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24" style='margin-left: -90px;'>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('certificationCategory')">
<span>{{$t('certificationCategory')}}</span>
</div>
<j-multi-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">
<div class="box-title-text">
<div class="title-text" :title="$t('NiONumber')">
@@ -30,35 +41,32 @@
v-model="formInline.paramsName"></a-input>
</div>
</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>
<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">
<div class="box-title-text">
<div class="title-text" :title="$t('areaOfResponsibility')">
<span>{{$t('areaOfResponsibility')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="formInline.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('completedBy')">
<span>{{$t('completedBy')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('completedBy')"
v-model="formInline.dre"></a-input>
<PersonnelSelection
:query="{db_field_name:'completedBy',db_field_txt:$t('completedBy')}"
:isInput="true"
class="box-input"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.dre"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('engineeringInterfacePerson')">
<span>{{$t('engineeringInterfacePerson')}}</span>
</div>
<PersonnelSelection
:query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('engineeringInterfacePerson')}"
:isInput="true"
class="box-input"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.sdt"/>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
@@ -71,6 +79,16 @@
</a-form>
</div>
</div>
<div class="table-operator">
<div @click="ConventionalExport" class="operator-text" v-has="'params:template:add'">
<!-- <a-icon type="plus"/>-->
{{$t('ConventionalExport')}}
</div>
<div @click="CustomExport" class="operator-text" v-has="'params:template:delete'">
<!-- <a-icon type="delete"/>-->
{{$t('CustomExport')}}
</div>
</div>
<div>
<a-table
ref="table"
@@ -99,20 +117,31 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
</div>
<conventionalModel :url="url" ref="conventionalModel"/>
<customelModel :url="url" ref="customelModel"/>
</a-card>
</template>
<script>
import { getAction,postAction } from '../../../api/manage'
import axios from 'axios'
import conventionalModel from './commponts/conventionalmodle'
import customelModel from './commponts/customexportmodle'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import PersonnelSelection from '@/components/PersonnelSelection/index'
import Vue from 'vue'
export default {
name: 'managementdetails',
components: {
conventionalModel,
customelModel,
PersonnelSelection
},
data(){
return{
columns:[],
@@ -121,7 +150,7 @@ export default {
url: {
tableHeader: 'report/detail/getHeader',
tableList: 'report/detail/list',
// add: 'params/collectManifest/submit',
ConventionalExport: 'report/detail/exportNormal',
// getLoginUserType: 'params/collectManifest/getLoginUserType', // 获取当前登陆人
// getquerySdtList: 'params/collectManifest/querySdtList', // 获取工程接口人的列表
// updateSdt: 'params/collectManifest/updateSdt', // 提交工程接口人
@@ -237,18 +266,26 @@ export default {
}
})
},
getcompleteby(e){
console.log(e)
},
PersonnelSelectionChange(value, id) {
this.formInline[value] = id
this.formInline = { ...this.formInline }
},
getTableList() {
// console.log('this.searchParmestable',this.searchParmes)
let pageNo = JSON.parse(JSON.stringify(this.pageNo))
let pageSize = JSON.parse(JSON.stringify(this.pageSize))
let params = {
...this.searchParmes,
...this.formInline,
paramsManifestId: this.$route.query.id,
pageNo: pageNo + '',
pageSize: pageSize + ''
}
// console.log('parmsss',params)
this.loading = true
getAction(this.url.tableList, {paramsManifestId: this.$route.query.id}).then((res) => {
getAction(this.url.tableList, params).then((res) => {
if (res.success) {
if (res.result.current > 1 && res.result.records.length == 0) {
this.pageNo = res.result.current - 1
@@ -281,17 +318,20 @@ export default {
listReset() {
this.formInline = {}
},
handleModule() {
ConventionalExport() {
this.$refs.conventionalModel.addModel()
},
handleCody() {
CustomExport() {
this.$refs.customelModel.addModel()
},
searchQuery() {
this.pageNo = 1
this.$refs.CollectionTabel.getTableList()
this.getTableList()
},
searchReset() {
this.$refs.CollectionTabel.getTableListReset()
this.pageNo = 1
this.formInline = {}
this.getTableList()
},
pageOnChange() {
@@ -49,6 +49,7 @@
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('contentDescription')">{{$t('contentDescription')}}</span>
</div>
@@ -66,11 +67,13 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('attachmentTemplate')">{{$t('attachmentTemplate')}}</span>
</div>
<a-form-model-item class="itemModel" prop="paramsTemplateName">
<a-form-model-item class="itemModel" prop="fileConnectId">
<a-button type="primary" class="button-text"
v-model='formInline.fileConnectId'
@click="clickButtonToUpload('fileTemplateConnectId')">
{{ (formInline.fileConnectId === 'null' || formInline.fileConnectId === '' ||
formInline.fileConnectId == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
@@ -87,7 +90,7 @@
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
<uploadFileChange ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFileChange>
<uploadFileChange ref="uploadFile" :accept="'.doc,.doxc,.xls,.xlsx'" @uploadSuccess="uploadSuccess"></uploadFileChange>
</div>
</template>
@@ -119,6 +122,9 @@ export default {
status: [
{ required: true, message: this.$t('PleaseSelect')+this.$t('status'), trigger: 'change' },
],
fileConnectId: [
{ required: true, message: this.$t('PleaseSelect')+this.$t('attachmentTemplate'), trigger: 'change' },
],
},
disabled: false,
projectNameList: [],
@@ -143,7 +149,7 @@ export default {
},
clickButtonToUpload(item) {
this.$refs.uploadFile.visible = true
getAction('sys/common/getFileInfos', { id: this.formInline[item] }).then((res) => {
getAction('sys/common/getFileInfos', { id: this.formInline.fileConnectId }).then((res) => {
if (res.success) {
this.$refs.uploadFile.perentHandleFunc(res.result)
} else {
@@ -190,7 +196,7 @@ export default {
let Action
if (this.formInline.id) {
url = this.url.edit
Action = putAction
Action = postAction
} else {
url = this.url.add
Action = postAction
@@ -59,6 +59,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -96,6 +96,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -272,6 +272,7 @@
show-quick-jumper
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
/>
</div>
@@ -33,6 +33,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -28,6 +28,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -28,6 +28,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -28,6 +28,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -25,6 +25,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -23,6 +23,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -64,6 +64,26 @@
v-model="formInline.dre"></a-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('status')">
<span>{{$t('status')}}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('status')"
class="box-input"
allowClear
:getPopupContainer="triggerNode=> triggerNode.parentNode"
v-model="formInline.state">
<a-select-option v-for="(item, key) in statusList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name}}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px"
class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
@@ -75,7 +95,7 @@
</a-form>
</div>
</div>
<div class="table-operator">
<div class="table-operator" v-if="!this.$route.query.it">
<!-- // 认证工程师 homo-->
<!-- // 工程接口人 sdt-->
<!-- // 填写人 dre-->
@@ -115,6 +135,10 @@
<a-icon type="delete"/>
{{$t('BatchDelete')}}
</div>
<div @click="bringInTheProjectInterfaceClick" class="operator-text-title">
<a-icon type="profile"/>
{{$t('bringInTheProjectInterface')}}
</div>
</template>
<div class="operator-text" style="position: relative">
<span style="position: absolute;left: -13px;top: -4px">...</span>{{ $t('more') }}
@@ -133,7 +157,7 @@
<!-- 保存-->
<div @click="handlePreservation(1)" class="operator-text" v-if='currentPersonRole == "dre"'>
<a-icon type="check-circle"/>
{{$t('preservation')}}
{{$t('tempSave')}}
</div>
<!-- 提交-->
<div @click="handleSubmit" class="operator-text" v-if='currentPersonRole == "dre"'>
@@ -154,6 +178,7 @@
</div>
<!-- 角色切换 -->
<div class="operator-text"
v-if="!this.$route.query.it"
@click="roleSwitchingClick">
<a-icon type="select"/>
{{ $t('roleSwitching') }}
@@ -178,29 +203,31 @@
</a-modal>
<!-- 冻结配置--->
<a-modal v-model="areaVisibleFreeze" :title="$t('FreezeConfiguration')" width='600px' :footer="null">
<a-form-model
class='tag-module'
ref='ruleForm'
:model='Dateline'
:rules='rules'
:label-col='labelCol'
:wrapper-col='wrapperCol'
>
<a-row :gutter='24'>
<a-col :span='24'>
<a-form-model-item ref='region' :label="$t('FreezeConfiguration')" prop='region'>
<a-select :placeholder="$t('PleaseSelect')+$t('FreezeConfiguration')" v-model="Dateline.paramsConfig"
allowClear mode="multiple">
<a-select-option v-for="(item, key) in FreezeList" :key="key" :value="item.value">
<a-spin :spinning="confirmLoading">
<a-form-model
class='tag-module'
ref='ruleForm'
:model='Dateline'
:rules='rules'
:label-col='labelCol'
:wrapper-col='wrapperCol'
>
<a-row :gutter='24'>
<a-col :span='24'>
<a-form-model-item ref='region' :label="$t('FreezeConfiguration')" prop='region'>
<a-select :placeholder="$t('PleaseSelect')+$t('FreezeConfiguration')" v-model="Dateline.paramsConfig"
allowClear mode="multiple">
<a-select-option v-for="(item, key) in FreezeList" :key="key" :value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.label ">
{{ item.label }}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</a-spin>
<div style='padding-left: 60px;color: red'>
{{$t('Attentionfreeze')}}
</div>
@@ -384,6 +411,44 @@
SynchronousSubmissionLibrary
},
data() {
this.statusList = [
{
value: '1',
name: this.$t('CollectionInitiated')
},
{
value: '2',
name: this.$t('handledInterface')
},
{
value: '3',
name: this.$t('ReturnedPerson')
},
{
value: '4',
name: this.$t('completed')
},
{
value: '5',
name: this.$t('Filledreturn')
},
{
value: '6',
name: this.$t('Submitted')
},
{
value: '7',
name: this.$t('ReturnedEngineer')
},
{
value: '8',
name: this.$t('SynchronizedLibrary')
},
{
value: '9',
name: this.$t('alteration')
}
]
return {
// 认证工程师 homo
// 工程接口人 sdt
@@ -461,6 +526,7 @@
templatetitleId: '',
rowId: '',
version: 0,
confirmLoading: false,
itemId: '',
selectedRowKeysValue: [], // table列表所选得数据
token: Vue.ls.get(ACCESS_TOKEN),
@@ -524,6 +590,22 @@
handleCancelRoleSwitching() {
this.visibleRoleSwitching = false
},
bringInTheProjectInterfaceClick() {
let query = {
paramsManifestId: this.paramsManifest.id,
projectId: this.$route.query.projectId
}
this.textLoading = true
getAction('/params/collectManifest/bringSdtInto', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.$refs.CollectionTabel.getTableList()
} else {
this.$message.warning(this.$t('operationFailed'))
}
this.textLoading = false
})
},
handleOkRoleSwitching() {
this.$refs.ruleFormRoleSwitching.validate(valid => {
if (valid) {
@@ -851,7 +933,22 @@
this.areaVisibleFreeze = true
this.Dateline = {}
// 获取冻结配置数据
this.getFreeze()
this.confirmLoading = true
this.getFreeze(() => {
this.getLockedConfigIdList()
})
},
getLockedConfigIdList() {
getAction('/params/collectManifest/getLockedConfigIdList',
{ paramsManifestId: this.paramsManifest.id }).then((res) => {
if (res.success) {
this.Dateline.paramsConfig = res.result
this.Dateline = { ...this.Dateline }
} else {
this.Dateline.paramsConfig = []
}
this.confirmLoading = false
})
},
// 冻结配置提交
handleSubmitFreeze() {
@@ -894,7 +991,7 @@
cancleImportsFreeze() {
this.areaVisibleFreeze = false
},
getFreeze() {
getFreeze(callback) {
let _this = this
let param = { paramsManifestId: this.paramsManifest.id, configFlag: 1 }
axios({
@@ -916,11 +1013,15 @@
.then((res) => {
if (res.data.success) {
this.FreezeList = res.data.result
callback && callback()
} else {
_this.$message.warning(res.data.message)
_this.confirmLoading = false
}
})
.catch((error) => {
_this.confirmLoading = false
})
},
// 下发收集的权限
@@ -1053,7 +1154,11 @@
if (num && num == 1) {
this.textLoading = true
}
postAction('/params/collectManifest/save', configDataList).then((res) => {
let query = {
...configDataList,
paramsManifestId: this.paramsManifest.id
}
postAction('/params/collectManifest/save', query).then((res) => {
if (res.success) {
if (num && num == 1) {
_this.$message.success(_this.$t('OperationSuccessful'))
@@ -1071,6 +1176,10 @@
}
}
})
} else {
if (num && num == 1) {
this.$message.warning(this.$t('theCurrentListSaved'))
}
}
},
// 提交数据
@@ -1319,7 +1428,7 @@
if (res.data.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.$refs.CollectionTabel.getData()
// _this.$refs.CollectionTabel.getData()
_this.$refs.CollectionTabel.getTableList()
_this.textLoading = false
} else {
@@ -1345,7 +1454,19 @@
}
}
</script>
<style>
.popconfirm {
z-index: 999;
}
.popconfirm .ant-popover-buttons {
display: none !important;
}
.popconfirm .anticon-exclamation-circle {
display: none !important;
}
</style>
<style lang="less" scoped>
@import '~@assets/less/common.less';
@@ -78,6 +78,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -44,6 +44,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -70,6 +70,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -73,6 +73,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -47,6 +47,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
@@ -54,6 +54,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -103,6 +103,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -67,6 +67,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -144,6 +144,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -173,6 +173,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -43,6 +43,7 @@
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
@@ -91,6 +91,7 @@
:show-total="total => $t('total')+` ${total} `+$t('strip')"
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>