[update] 市场法规清单
This commit is contained in:
@@ -134,6 +134,17 @@ const addStandardMasterPlan = (params) => postAction('/laws/StandardMasterPlan/a
|
|||||||
// 标准主计划-编辑
|
// 标准主计划-编辑
|
||||||
const editStandardMasterPlan = (params) => postAction('/laws/StandardMasterPlan/edit', params)
|
const editStandardMasterPlan = (params) => postAction('/laws/StandardMasterPlan/edit', params)
|
||||||
|
|
||||||
|
// 市场法规清单-根据id查询-用于编辑
|
||||||
|
const getMarketRegulationListById = (params) => getAction('', params)
|
||||||
|
// 市场法规清单-根据ids获取多个清单的清单列表-用于复制
|
||||||
|
const getMarketRegulationListByIds = (params) => getAction('', params)
|
||||||
|
// 市场法规清单-新增
|
||||||
|
const marketRegulationListAdd = (params) => postAction('', params)
|
||||||
|
// 市场法规清单-编辑
|
||||||
|
const marketRegulationListEdit = (params) => postAction('', params)
|
||||||
|
// 市场法规清单-获取历史版本列表
|
||||||
|
const marketRegulationListHistoryList = (params) => getAction('', params)
|
||||||
|
|
||||||
export {
|
export {
|
||||||
// 国内标准
|
// 国内标准
|
||||||
getDomesticStandardSearchForm,
|
getDomesticStandardSearchForm,
|
||||||
@@ -209,5 +220,12 @@ export {
|
|||||||
// 标准主计划
|
// 标准主计划
|
||||||
getStandardMasterPlanById,
|
getStandardMasterPlanById,
|
||||||
addStandardMasterPlan,
|
addStandardMasterPlan,
|
||||||
editStandardMasterPlan
|
editStandardMasterPlan,
|
||||||
|
|
||||||
|
// 市场法规清单
|
||||||
|
getMarketRegulationListById,
|
||||||
|
getMarketRegulationListByIds,
|
||||||
|
marketRegulationListAdd,
|
||||||
|
marketRegulationListEdit,
|
||||||
|
marketRegulationListHistoryList
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,8 @@ module.exports = {
|
|||||||
customName: '自定义名称',
|
customName: '自定义名称',
|
||||||
securityClass: '密级',
|
securityClass: '密级',
|
||||||
listDeclaration: '清单说明',
|
listDeclaration: '清单说明',
|
||||||
templateName: '市场法规清单导入模版'
|
templateName: '市场法规清单导入模版',
|
||||||
|
historicalVersion: '历史版本'
|
||||||
},
|
},
|
||||||
// 市场清单详情列表字段
|
// 市场清单详情列表字段
|
||||||
marketListField: {
|
marketListField: {
|
||||||
|
|||||||
@@ -197,6 +197,7 @@ module.exports = {
|
|||||||
clauseNo: '条款号',
|
clauseNo: '条款号',
|
||||||
clauseName: '条款名称',
|
clauseName: '条款名称',
|
||||||
clauseContent: '条款内容',
|
clauseContent: '条款内容',
|
||||||
|
maximumSelectFive: '最多选择五条记录!',
|
||||||
// 标准字段
|
// 标准字段
|
||||||
standardField: {
|
standardField: {
|
||||||
standardEnglishName: '标准英文名称',
|
standardEnglishName: '标准英文名称',
|
||||||
|
|||||||
+38
-10
@@ -94,12 +94,6 @@
|
|||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-slot:action="{text, record}">
|
|
||||||
<a @click="handleEdit(record)">{{ $t('edit') }}</a>
|
|
||||||
<a-divider type="vertical" />
|
|
||||||
<a @click="handleDelete(record.id)" class="table-ope-btn">{{ $t('delete') }}</a>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</j-table>
|
</j-table>
|
||||||
</div>
|
</div>
|
||||||
<!-- table区域-end -->
|
<!-- table区域-end -->
|
||||||
@@ -111,10 +105,12 @@
|
|||||||
import InternalDetailPage from '../../../components/InternalDetailPage'
|
import InternalDetailPage from '../../../components/InternalDetailPage'
|
||||||
import FileEcho from '../../../components/FileEcho'
|
import FileEcho from '../../../components/FileEcho'
|
||||||
import { JeroListMixin } from '../../../mixins/JeroListMixin'
|
import { JeroListMixin } from '../../../mixins/JeroListMixin'
|
||||||
|
import { getMarketRegulationListById } from '../../../api/standardRegulationLibraryApi'
|
||||||
|
import JTable from '../../../components/jero/JTable'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MarketRegulationsDetailPage',
|
name: 'MarketRegulationsDetailPage',
|
||||||
components: { InternalDetailPage, FileEcho },
|
components: { InternalDetailPage, FileEcho, JTable },
|
||||||
mixins: [JeroListMixin],
|
mixins: [JeroListMixin],
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
@@ -270,12 +266,44 @@ export default {
|
|||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
width: 170
|
width: 170
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
disableMixinCreated: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
if (this.$route.query.ids) {
|
||||||
|
this.filters.ids = this.$route.query.ids
|
||||||
|
}
|
||||||
|
if (this.$route.query.versionNumber) {
|
||||||
|
this.filters.versionNumber = this.$route.query.versionNumber
|
||||||
|
}
|
||||||
|
this.initData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initData (id) {
|
||||||
|
this.loading = true
|
||||||
|
getMarketRegulationListById({ id }).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.model = Object.assign({}, res.result)
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.model.data))
|
||||||
|
this.dataList = JSON.parse(JSON.stringify(this.model.data))
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
toDetail (record) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped lang="less">
|
||||||
|
.content-wrapper {
|
||||||
|
height: calc(100% - 52px);
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 32px 20px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
+366
-21
@@ -1,5 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<internal-detail-page :title="$route.query.title" :content-padding="0" :loading="loading">
|
<internal-detail-page :title="$route.query.title" :content-padding="0" :loading="loading">
|
||||||
|
<!-- 标题右侧按钮 -->
|
||||||
|
<template v-if="model.id" v-slot:titleRightCustom>
|
||||||
|
<!-- 历史版本 -->
|
||||||
|
<a-button type="primary" ghost @click="clickHistoryVersion">{{ $t('standardRegulationLibrary.marketRegulationsList.historicalVersion') }}</a-button>
|
||||||
|
</template>
|
||||||
<div class="content-wrapper">
|
<div class="content-wrapper">
|
||||||
<a-form :form="form">
|
<a-form :form="form">
|
||||||
<a-row>
|
<a-row>
|
||||||
@@ -140,7 +145,7 @@
|
|||||||
:can-drag="true"
|
:can-drag="true"
|
||||||
:scroll="{x: '100%', y: yScrollHeight}"
|
:scroll="{x: '100%', y: yScrollHeight}"
|
||||||
ref="table"
|
ref="table"
|
||||||
rowKey="id"
|
rowKey="uid"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:dataSource="dataSource"
|
:dataSource="dataSource"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
@@ -159,7 +164,7 @@
|
|||||||
<template v-slot:action="{text, record}">
|
<template v-slot:action="{text, record}">
|
||||||
<a @click="handleEdit(record)">{{ $t('edit') }}</a>
|
<a @click="handleEdit(record)">{{ $t('edit') }}</a>
|
||||||
<a-divider type="vertical" />
|
<a-divider type="vertical" />
|
||||||
<a @click="handleDelete(record.id)" class="table-ope-btn">{{ $t('delete') }}</a>
|
<a @click="handleDelete(record.uid)" class="table-ope-btn">{{ $t('delete') }}</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</j-table>
|
</j-table>
|
||||||
@@ -178,29 +183,85 @@
|
|||||||
<!-- 新增、编辑弹框 -->
|
<!-- 新增、编辑弹框 -->
|
||||||
<market-regulations-modal ref="marketRegulationsModal" @ok="modalFormOk"/>
|
<market-regulations-modal ref="marketRegulationsModal" @ok="modalFormOk"/>
|
||||||
<!-- 调取弹框 -->
|
<!-- 调取弹框 -->
|
||||||
<standard-selection-modal ref="transferModal" @ok="transferOk"/>
|
<standard-selection-modal :canSelectedSource="[StandardSource.FOREIGN.value]"
|
||||||
|
:disabledSourceSearch="true"
|
||||||
|
ref="transferModal"
|
||||||
|
@listChange="transferOk"/>
|
||||||
<!-- 复制弹框 -->
|
<!-- 复制弹框 -->
|
||||||
<market-regulations-list-selection-modal ref="copyModal" @ok="copyOk"/>
|
<market-regulations-list-selection-modal ref="copyModal" @change="copyOk"/>
|
||||||
|
<!-- 历史版本弹框 -->
|
||||||
|
<history-version-modal ref="historyVersionModal"/>
|
||||||
</internal-detail-page>
|
</internal-detail-page>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import InternalDetailPage from '@/components/InternalDetailPage'
|
import InternalDetailPage from '@/components/InternalDetailPage'
|
||||||
import JTable from '@/components/jero/JTable'
|
import JTable from '@/components/jero/JTable'
|
||||||
import { JeroListMixin } from '../../../mixins/JeroListMixin'
|
|
||||||
import MarketRegulationsModal from './modules/MarketRegulationsModal'
|
import MarketRegulationsModal from './modules/MarketRegulationsModal'
|
||||||
import StandardSelectionModal from '../../../components/selection/StandardSelectionModal'
|
import StandardSelectionModal from '../../../components/selection/StandardSelectionModal'
|
||||||
import MarketRegulationsListSelectionModal from '../../../components/selection/MarketRegulationsListSelectionModal'
|
import MarketRegulationsListSelectionModal from '../../../components/selection/MarketRegulationsListSelectionModal'
|
||||||
|
import {
|
||||||
|
getMarketRegulationListById,
|
||||||
|
getMarketRegulationListByIds,
|
||||||
|
marketRegulationListAdd,
|
||||||
|
marketRegulationListEdit
|
||||||
|
} from '../../../api/standardRegulationLibraryApi'
|
||||||
|
import pick from 'lodash.pick'
|
||||||
|
import { StandardSource } from '../../../enums/commonEnums'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
import Vue from 'vue'
|
||||||
|
import { ACCESS_TOKEN, TENANT_ID } from '../../../store/mutation-types'
|
||||||
|
import { downloadFile } from '../../../api/manage'
|
||||||
|
import HistoryVersionModal from './modules/HistoryVersionModal'
|
||||||
|
|
||||||
|
const uidGenerator = () => {
|
||||||
|
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导入的加载提示
|
||||||
|
let importModalLoading
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MarketRegulationsFormPage',
|
name: 'MarketRegulationsFormPage',
|
||||||
components: { MarketRegulationsListSelectionModal, StandardSelectionModal, InternalDetailPage, JTable, MarketRegulationsModal },
|
components: {
|
||||||
mixins: [JeroListMixin],
|
MarketRegulationsListSelectionModal,
|
||||||
|
StandardSelectionModal,
|
||||||
|
InternalDetailPage,
|
||||||
|
JTable,
|
||||||
|
MarketRegulationsModal,
|
||||||
|
HistoryVersionModal
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters(['defaultHeight']),
|
||||||
|
yScrollHeight () {
|
||||||
|
/**
|
||||||
|
* 前几个使用变量是为了配合iframe嵌套,算出页面显示范围的高度
|
||||||
|
* 48px:分页器的高度
|
||||||
|
* 48px:a-card的padding(上24+下24)
|
||||||
|
* 54px:表头行的高度
|
||||||
|
*/
|
||||||
|
return `calc(100vh - ${this.defaultHeight['user-info-height']} - ${this.defaultHeight['breadcrumb-height']} - ${this.defaultHeight.oneLineSearchHeight} - ${this.defaultHeight.oneLineOperationHeight} - 48px - 48px - 54px - ${this.isBackTitle ? '56px' : '0px'})`
|
||||||
|
},
|
||||||
|
// token header
|
||||||
|
tokenHeader () {
|
||||||
|
const head = { 'X-Access-Token': Vue.ls.get(ACCESS_TOKEN) }
|
||||||
|
const tenantid = Vue.ls.get(TENANT_ID)
|
||||||
|
if (tenantid) {
|
||||||
|
head['tenant-id'] = tenantid
|
||||||
|
}
|
||||||
|
return head
|
||||||
|
},
|
||||||
|
importExcelUrl: function () {
|
||||||
|
return `${window._CONFIG.domianURL}/${this.url.importExcelUrl}`
|
||||||
|
}
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
|
StandardSource,
|
||||||
loading: false,
|
loading: false,
|
||||||
form: this.$form.createForm(this),
|
form: this.$form.createForm(this),
|
||||||
model: {},
|
model: {},
|
||||||
|
queryParam: {},
|
||||||
labelCol: {
|
labelCol: {
|
||||||
xs: { span: 24 },
|
xs: { span: 24 },
|
||||||
sm: { span: 4 }
|
sm: { span: 4 }
|
||||||
@@ -395,20 +456,226 @@ export default {
|
|||||||
width: 170
|
width: 170
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
dataSource: [],
|
||||||
|
dataList: [], // 用于查询的数据,保证查询后数据不变
|
||||||
|
/* 分页参数 */
|
||||||
|
ipagination: {
|
||||||
|
current: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizeOptions: ['10', '20', '30'],
|
||||||
|
showTotal: (total, range) => {
|
||||||
|
return range[0] + '-' + range[1] + ' 共' + total + '条'
|
||||||
|
},
|
||||||
|
showQuickJumper: true,
|
||||||
|
showSizeChanger: true,
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
selectedRowKeys: [],
|
||||||
|
selectionRows: [],
|
||||||
showList: false, // 是否展示清单
|
showList: false, // 是否展示清单
|
||||||
url: {
|
url: {
|
||||||
importExcelUrl: ''
|
importExcelUrl: '',
|
||||||
},
|
downTemplateUrl: ''
|
||||||
disableMixinCreated: true
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
if (this.$route.query.id) {
|
||||||
|
this.initData(this.$route.query.id)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
initData (id) {
|
||||||
|
this.loading = true
|
||||||
|
getMarketRegulationListById({ id }).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.model = Object.assign({}, res.result)
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.model.data.map(item => {
|
||||||
|
return { ...item, uid: uidGenerator() }
|
||||||
|
})))
|
||||||
|
this.dataList = JSON.parse(JSON.stringify(this.model.data.map(item => {
|
||||||
|
return { ...item, uid: uidGenerator() }
|
||||||
|
})))
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(pick(this.model, 'countryRegion', 'listNumber', 'customName', 'drivingPosition', 'securityClass', 'listDeclaration', 'attach'))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 点击历史版本
|
||||||
|
clickHistoryVersion () {
|
||||||
|
this.$refs.historyVersionModal.open(this.model.id)
|
||||||
|
},
|
||||||
|
// 查询
|
||||||
|
searchQuery () {
|
||||||
|
if (this.queryParam.standardNumber && this.queryParam.standardName) {
|
||||||
|
this.dataSource = this.dataList.filter(item => {
|
||||||
|
return item.standardNumber.indexOf(this.queryParam.standardNumber) && item.standardName.indexOf(this.queryParam.standardName)
|
||||||
|
})
|
||||||
|
} else if (this.queryParam.standardNumber) {
|
||||||
|
this.dataSource = this.dataList.filter(item => {
|
||||||
|
return item.standardNumber.indexOf(this.queryParam.standardNumber)
|
||||||
|
})
|
||||||
|
} else if (this.queryParam.standardName) {
|
||||||
|
this.dataSource = this.dataList.filter(item => {
|
||||||
|
return item.standardName.indexOf(this.queryParam.standardName)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.dataList))
|
||||||
|
}
|
||||||
|
this.selectedRowKeys = []
|
||||||
|
this.selectionRows = []
|
||||||
|
},
|
||||||
|
// 重置
|
||||||
|
searchReset () {
|
||||||
|
this.queryParam = {}
|
||||||
|
this.dataSource = JSON.parse(JSON.stringify(this.dataList))
|
||||||
|
this.selectedRowKeys = []
|
||||||
|
this.selectionRows = []
|
||||||
|
},
|
||||||
|
onSelectChange (selectedRowKeys, selectionRows) {
|
||||||
|
this.selectedRowKeys = selectedRowKeys
|
||||||
|
this.selectionRows = selectionRows
|
||||||
|
},
|
||||||
|
handleTableChange (pagination, filters, sorter) {
|
||||||
|
// 分页、排序、筛选变化时触发
|
||||||
|
this.ipagination = pagination
|
||||||
|
},
|
||||||
|
batchDel () {
|
||||||
|
if (this.selectedRowKeys.length <= 0) {
|
||||||
|
this.$message.warning(this.$t('selectARecord'))
|
||||||
|
} else {
|
||||||
|
this.$confirm({
|
||||||
|
title: this.$t('confirmBatchDeletion'),
|
||||||
|
content: this.$t('deleteAData'),
|
||||||
|
onOk: () => {
|
||||||
|
this.loading = true
|
||||||
|
this.dataList.filter(item => !this.selectedRowKeys.includes(item.uid))
|
||||||
|
this.dataSource.filter(item => !this.selectedRowKeys.includes(item.uid))
|
||||||
|
this.reCalculatePage(this.selectedRowKeys.length)
|
||||||
|
this.onClearSelected()
|
||||||
|
this.loading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/* 导入 */
|
||||||
|
handleImportExcel (info) {
|
||||||
|
// 限制导入大于500MB
|
||||||
|
if (info.file.size > 1024 * 1024 * 500) {
|
||||||
|
this.$message.error('导入文件最大500MB!')
|
||||||
|
info.fileList.pop()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 加一个大的提示
|
||||||
|
if (!this.loading) {
|
||||||
|
importModalLoading = this.$info({
|
||||||
|
title: '提示',
|
||||||
|
content: <span>正在导入,请稍候 <a-spin size="small" /></span>,
|
||||||
|
keyboard: false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
// 把知道了这个按钮去掉
|
||||||
|
this.$nextTick(() => {
|
||||||
|
document.getElementsByClassName('ant-modal-confirm-btns')[0].style = 'display:none'
|
||||||
|
})
|
||||||
|
if (info.file.status !== 'uploading') {
|
||||||
|
console.log(info.file, info.fileList)
|
||||||
|
}
|
||||||
|
if (info.file.status === 'done') {
|
||||||
|
// 销毁这个提示
|
||||||
|
importModalLoading && importModalLoading.destroy()
|
||||||
|
this.loading = false
|
||||||
|
if (info.file.response.success) {
|
||||||
|
// this.$message.success(`${info.file.name} 文件上传成功`);
|
||||||
|
if (info.file.response.code === 201) {
|
||||||
|
const { message, result: { msg, fileUrl, fileName } } = info.file.response
|
||||||
|
const href = window._CONFIG.domianURL + fileUrl
|
||||||
|
this.$warning({
|
||||||
|
title: message,
|
||||||
|
content: (<div>
|
||||||
|
<span>{msg}</span><br />
|
||||||
|
<span>具体详情请 <a href={href} target="_blank" download={fileName}>点击下载</a> </span>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$message.success(info.file.response.message || `${info.file.name} 文件上传成功`)
|
||||||
|
}
|
||||||
|
// 推入表格中
|
||||||
|
this.dataSource = info.file.response.result.map(item => {
|
||||||
|
return { uid: uidGenerator(), ...item }
|
||||||
|
})
|
||||||
|
this.dataList = info.file.response.result.map(item => {
|
||||||
|
return { uid: uidGenerator(), ...item }
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
if (Array.isArray(info.file.response.result) && info.file.response.result.length > 0) {
|
||||||
|
this.messageLineFeed(this.$t('fileImportError'), info.file.response.result)
|
||||||
|
} else if (/<br>|<\/br>|<br\/>/.test(info.file.response.message)) {
|
||||||
|
this.messageLineFeedByBr(this.$t('fileImportError'), info.file.response.message)
|
||||||
|
} else {
|
||||||
|
this.$message.warning(`${info.file.name} ${info.file.response.message}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (info.file.status === 'error') {
|
||||||
|
// 销毁这个提示
|
||||||
|
importModalLoading && importModalLoading.destroy()
|
||||||
|
this.loading = false
|
||||||
|
if (info.file.response.status === 500) {
|
||||||
|
const data = info.file.response
|
||||||
|
const token = Vue.ls.get(ACCESS_TOKEN)
|
||||||
|
if (token && data.message.includes('Token失效')) {
|
||||||
|
this.error({
|
||||||
|
title: '登录已过期',
|
||||||
|
content: '很抱歉,登录已过期,请重新登录',
|
||||||
|
okText: '重新登录',
|
||||||
|
mask: false,
|
||||||
|
onOk: () => {
|
||||||
|
store.dispatch('Logout').then(() => {
|
||||||
|
Vue.ls.remove(ACCESS_TOKEN)
|
||||||
|
window.location.reload()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.$message.warning(`文件上传失败: ${info.file.msg} `)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 下载导入模板
|
||||||
|
downTemplate (fileName, fileSuffix = '.xls') {
|
||||||
|
if (!fileName || typeof fileName !== 'string') {
|
||||||
|
fileName = '模板文件'
|
||||||
|
}
|
||||||
|
downloadFile(this.url.downTemplateUrl, fileName + fileSuffix)
|
||||||
|
},
|
||||||
|
onClearSelected () {
|
||||||
|
this.selectedRowKeys = []
|
||||||
|
this.selectionRows = []
|
||||||
|
},
|
||||||
|
reCalculatePage (count) {
|
||||||
|
// 总数量-count
|
||||||
|
const total = this.ipagination.total - count
|
||||||
|
// 获取删除后的分页数
|
||||||
|
const currentIndex = Math.ceil(total / this.ipagination.pageSize)
|
||||||
|
// 删除后的分页数<所在当前页
|
||||||
|
if (currentIndex < this.ipagination.current) {
|
||||||
|
this.ipagination.current = currentIndex
|
||||||
|
}
|
||||||
|
console.log('currentIndex', currentIndex)
|
||||||
|
},
|
||||||
// 下一步
|
// 下一步
|
||||||
handleNext () {
|
handleNext () {
|
||||||
this.showList = true
|
this.showList = true
|
||||||
},
|
},
|
||||||
// 新增
|
// 新增
|
||||||
handleAdd () {
|
handleAdd () {
|
||||||
|
this.$refs.marketRegulationsModal.title = this.$t('newlyAdded')
|
||||||
this.$refs.marketRegulationsModal.add()
|
this.$refs.marketRegulationsModal.add()
|
||||||
},
|
},
|
||||||
// 调取
|
// 调取
|
||||||
@@ -421,23 +688,101 @@ export default {
|
|||||||
},
|
},
|
||||||
// 新增完成
|
// 新增完成
|
||||||
modalFormOk (value) {
|
modalFormOk (value) {
|
||||||
this.dataSource.unshift(value)
|
if (!value.uid) {
|
||||||
|
// 是新增完成
|
||||||
|
this.dataSource.unshift({ ...value, uid: uidGenerator() })
|
||||||
|
this.dataList.unshift({ ...value, uid: uidGenerator() })
|
||||||
|
} else {
|
||||||
|
// 是编辑完成
|
||||||
|
const index = this.dataSource.findIndex(item => item.uid === value.uid)
|
||||||
|
this.dataSource.splice(index, 1, value)
|
||||||
|
const listIndex = this.dataList.findIndex(item => item.uid === value.uid)
|
||||||
|
this.dataList.splice(listIndex, 1, value)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 调取完成
|
||||||
|
transferOk (list) {
|
||||||
|
// 已经有的标准去掉,调取不重复的
|
||||||
|
for (const item of list) {
|
||||||
|
if (!this.dataList.includes(i => i.standardNumber === item.standardNumber)) {
|
||||||
|
// 列表中还没有该标准
|
||||||
|
this.dataSource.unshift({ ...item, uid: uidGenerator() })
|
||||||
|
this.dataList.unshift({ ...item, uid: uidGenerator() })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 复制完成
|
||||||
|
copyOk (ids) {
|
||||||
|
// 根据选中的清单,获取清单列表,并且表格中不存在的添加到表格中
|
||||||
|
getMarketRegulationListByIds({ ids }).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
for (const item of res.result) {
|
||||||
|
if (!this.dataList.includes(i => i.standardNumber === item.standardNumber)) {
|
||||||
|
// 列表中还没有该标准
|
||||||
|
this.dataSource.unshift({ ...item, uid: uidGenerator() })
|
||||||
|
this.dataList.unshift({ ...item, uid: uidGenerator() })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 编辑
|
||||||
|
handleEdit (record) {
|
||||||
|
this.$refs.marketRegulationsModal.title = this.$t('edit')
|
||||||
|
this.$refs.marketRegulationsModal.edit(record)
|
||||||
|
},
|
||||||
|
// 删除
|
||||||
|
handleDelete (uid) {
|
||||||
|
this.$confirm({
|
||||||
|
title: this.$t('confirmDeletion'),
|
||||||
|
content: this.$t('areYouSure'),
|
||||||
|
onOk: function () {
|
||||||
|
// 判断当前删除的数据是否是最后一页的最后一条数据,如果是的话页码减一
|
||||||
|
if (this.ipagination.current > 1 && ((this.ipagination.current - 1) * this.ipagination.pageSize) + 1 === this.ipagination.total) {
|
||||||
|
this.ipagination.current -= 1
|
||||||
|
}
|
||||||
|
this.dataList.filter(item => item.uid !== uid)
|
||||||
|
this.dataSource.filter(item => item.uid !== uid)
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
// 取消
|
// 取消
|
||||||
handleCancel () {
|
handleCancel () {
|
||||||
|
this.close()
|
||||||
},
|
|
||||||
// 调取完成
|
|
||||||
transferOk () {
|
|
||||||
|
|
||||||
},
|
|
||||||
// 复制完成
|
|
||||||
copyOk () {
|
|
||||||
|
|
||||||
},
|
},
|
||||||
// 提交
|
// 提交
|
||||||
handleSubmit () {
|
handleSubmit () {
|
||||||
|
if (this.loading) return
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
this.loading = true
|
||||||
|
const param = Object.assign({}, values)
|
||||||
|
let func
|
||||||
|
if (this.model.id) {
|
||||||
|
param.id = this.model.id
|
||||||
|
func = marketRegulationListEdit
|
||||||
|
} else {
|
||||||
|
func = marketRegulationListAdd
|
||||||
|
}
|
||||||
|
param.dataList = this.dataList
|
||||||
|
func(param).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$message.success(res.message)
|
||||||
|
this.$emit('ok')
|
||||||
|
this.close()
|
||||||
|
} else {
|
||||||
|
this.$message.warning(res.message)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.confirmLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
close () {
|
||||||
|
this.model = {}
|
||||||
|
this.dataSource = []
|
||||||
|
this.dataList = []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-1
@@ -229,13 +229,38 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
// 编辑
|
||||||
|
handleEdit (record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/standardRegulationLibrary/marketRegulationsList/marketRegulationsFormPage',
|
||||||
|
query: {
|
||||||
|
title: this.$t('edit'),
|
||||||
|
id: record.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
// 批量发布
|
// 批量发布
|
||||||
handleBatchPublish () {
|
handleBatchPublish () {
|
||||||
|
|
||||||
},
|
},
|
||||||
// 查看
|
// 查看
|
||||||
handleLook () {
|
handleLook () {
|
||||||
|
if (this.selectedRowKeys.length <= 0) {
|
||||||
|
// 至少选择一条数据
|
||||||
|
this.$message.warning(this.$t('selectARecord'))
|
||||||
|
return
|
||||||
|
} else if (this.selectedRowKeys.length > 5) {
|
||||||
|
// 最多选择五条数据
|
||||||
|
this.$message.warning(this.$t('maximumSelectFive'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$router.push({
|
||||||
|
path: '/standardRegulationLibrary/marketRegulationsList/marketRegulationsDetailPage',
|
||||||
|
query: {
|
||||||
|
title: this.$t('view'),
|
||||||
|
ids: this.selectedRowKeys.join(',')
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
// 发布
|
// 发布
|
||||||
handlePublish () {
|
handlePublish () {
|
||||||
|
|||||||
+94
@@ -0,0 +1,94 @@
|
|||||||
|
<template>
|
||||||
|
<j-modal
|
||||||
|
:title="title"
|
||||||
|
:maskClosable="true"
|
||||||
|
:width="400"
|
||||||
|
:closable="true"
|
||||||
|
switchFullscreen
|
||||||
|
:footer="false"
|
||||||
|
@cancel="handleCancel"
|
||||||
|
:visible="visible">
|
||||||
|
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
rowKey="id"
|
||||||
|
:columns="columns"
|
||||||
|
:dataSource="dataSource"
|
||||||
|
:loading="loading"
|
||||||
|
:showHeader="false"
|
||||||
|
:scroll="{x: '100%', y: 'calc(100vh - 500px)'}">
|
||||||
|
|
||||||
|
<template v-slot:toDetail="text, record">
|
||||||
|
<a-tooltip overlay-class-name="tooltip-style">
|
||||||
|
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||||
|
<a v-if="text" class="link-a" @click="handleGoDetail(record)">{{ text }}</a>
|
||||||
|
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||||
|
</a-tooltip>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</a-table>
|
||||||
|
|
||||||
|
</j-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { marketRegulationListHistoryList } from '../../../../api/standardRegulationLibraryApi'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'HistoryVersionModal',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
title: this.$t('standardRegulationLibrary.marketRegulationsList.historicalVersion'),
|
||||||
|
visible: false,
|
||||||
|
loading: false,
|
||||||
|
model: {},
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
align: 'center',
|
||||||
|
width: 180,
|
||||||
|
dataIndex: 'version',
|
||||||
|
scopedSlots: { customRender: 'toDetail' }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
dataSource: [
|
||||||
|
{id: 1, version: 'V1.0'},
|
||||||
|
{id: 2, version: 'V2.0'},
|
||||||
|
{id: 3, version: 'V3.0'},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open (id) {
|
||||||
|
this.visible = true
|
||||||
|
this.model.id = id
|
||||||
|
// this.initData(id)
|
||||||
|
},
|
||||||
|
initData (id) {
|
||||||
|
marketRegulationListHistoryList({ id }).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
this.dataSource = res.result
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 点击版本号
|
||||||
|
handleGoDetail (record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/standardRegulationLibrary/marketRegulationsList/marketRegulationsDetailPage',
|
||||||
|
query: {
|
||||||
|
title: this.$t('view'),
|
||||||
|
ids: this.model.id,
|
||||||
|
versionNumber: record.version
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCancel () {
|
||||||
|
this.visible = false
|
||||||
|
this.dataSource = []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
+53
-3
@@ -17,7 +17,8 @@
|
|||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardNumber')">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardNumber')">
|
||||||
<standard-selection :placeholder="$t('pleaseSelect') + $t('standardNumber')"
|
<standard-selection :placeholder="$t('pleaseSelect') + $t('standardNumber')"
|
||||||
type="radio"
|
type="radio"
|
||||||
v-decorator.trim="[ 'standardId', validatorRules.standardId ]" />
|
@listChange="selectStandardChange"
|
||||||
|
v-decorator.trim="[ 'standardNumber', validatorRules.standardNumber ]" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 标准名称 -->
|
<!-- 标准名称 -->
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardName')">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardName')">
|
||||||
@@ -141,6 +142,8 @@
|
|||||||
<script>
|
<script>
|
||||||
import StandardSelection from '@/components/selection/StandardSelection'
|
import StandardSelection from '@/components/selection/StandardSelection'
|
||||||
import JMultipleDatePicker from '../../../../components/JMultipleDatePicker'
|
import JMultipleDatePicker from '../../../../components/JMultipleDatePicker'
|
||||||
|
import pick from 'lodash.pick'
|
||||||
|
import { getForeignStandardDocumentInfo } from '../../../../api/standardRegulationLibraryApi'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MarketRegulationsModal',
|
name: 'MarketRegulationsModal',
|
||||||
@@ -163,7 +166,7 @@ export default {
|
|||||||
},
|
},
|
||||||
validatorRules: {
|
validatorRules: {
|
||||||
// 标准编号
|
// 标准编号
|
||||||
standardId: {
|
standardNumber: {
|
||||||
rules: [{
|
rules: [{
|
||||||
required: true,
|
required: true,
|
||||||
message: this.$t('pleaseSelect') + this.$t('standardNumber')
|
message: this.$t('pleaseSelect') + this.$t('standardNumber')
|
||||||
@@ -255,10 +258,57 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
add () {
|
add () {
|
||||||
|
this.edit({})
|
||||||
|
},
|
||||||
|
edit (record) {
|
||||||
|
this.form.resetFields()
|
||||||
this.visible = true
|
this.visible = true
|
||||||
|
this.model = Object.assign({}, record)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(pick(this.model, 'standardNumber', 'standardName', 'standardEnglishName',
|
||||||
|
'type', 'newProductionVehicleImplementationDate', 'newCertifiedVehicleImplementationDate',
|
||||||
|
'dateOfRegistration', 'applicableCountryRegion', 'authenticationObject', 'certifiedDeliverables',
|
||||||
|
'mainControlDepartment', 'masterControlDepartmentProfessionalModule', 'relatedDepartment',
|
||||||
|
'associateDepartmentSpecializedModules', 'applicableVehicleType', 'dynamicType', 'batchRestriction',
|
||||||
|
'automaticDrivingLevel', 'requirementType'))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 选择标准改变
|
||||||
|
selectStandardChange (value) {
|
||||||
|
this.loading = true
|
||||||
|
// 企标名称
|
||||||
|
this.formInline.standardName = value[0].standardName
|
||||||
|
// 根据返回的id查询企标数据
|
||||||
|
getForeignStandardDocumentInfo({ id: value[0].id, type: '2' }).then(res => {
|
||||||
|
if (res.success) {
|
||||||
|
const result = res.result
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.form.setFieldsValue(pick(result, 'standardNumber', 'standardName', 'standardEnglishName',
|
||||||
|
'type', 'newProductionVehicleImplementationDate', 'newCertifiedVehicleImplementationDate',
|
||||||
|
'dateOfRegistration', 'applicableCountryRegion', 'authenticationObject', 'certifiedDeliverables',
|
||||||
|
'mainControlDepartment', 'masterControlDepartmentProfessionalModule', 'relatedDepartment',
|
||||||
|
'associateDepartmentSpecializedModules', 'applicableVehicleType', 'dynamicType', 'batchRestriction',
|
||||||
|
'automaticDrivingLevel', 'requirementType'))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
},
|
},
|
||||||
handleOk () {
|
handleOk () {
|
||||||
|
if (this.confirmLoading) return
|
||||||
|
this.form.validateFields((err, values) => {
|
||||||
|
if (!err) {
|
||||||
|
this.confirmLoading = true
|
||||||
|
const param = Object.assign({}, values)
|
||||||
|
if (this.model.uid) {
|
||||||
|
this.$emit('ok', { ...this.model, ...param })
|
||||||
|
} else {
|
||||||
|
this.$emit('ok', param)
|
||||||
|
}
|
||||||
|
this.confirmLoading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
handleCancel () {
|
handleCancel () {
|
||||||
this.close()
|
this.close()
|
||||||
|
|||||||
Reference in New Issue
Block a user