This commit is contained in:
zhutianqi
2021-06-01 17:02:19 +08:00
parent 488312ebeb
commit bc3252387e
11 changed files with 4186 additions and 1752 deletions
@@ -1,627 +1,58 @@
x`<!-- 标准法规库 - 目标市场准入清单 -->
<!-- 标准法规库 - 目标市场准入清单 -->
<template>
<div id="accessStandardsAndRegulations" class="v-class">
<div class="search-area">
<div class="left">
<el-form :modal="sarSarAccessEOSearch" :inline="true" class="label-input-form" >
<!-- <el-form-item label="国内/海外" class="search-item">-->
<!-- <el-select-->
<!-- v-model="sarSarAccessEOSearch.type"-->
<!-- placeholder="请选择"-->
<!-- filterable-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in regionOptions"-->
<!-- :value="item.value"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- >-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="国家/地区" class="search-item search-item-last">
<el-select
v-model="sarSarAccessEOSearch.country"
placeholder="请选择"
filterable
>
<el-option
v-for="item in countryOptions"
:value="item.value"
:key="item.value"
:label="item.label"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
:loading="searching"
icon="el-icon-search"
type="primary"
class="common-button-primary"
round
@click="searchSarAccessBtn">
</el-button>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
class="common-button-default"
icon="el-icon-refresh-left"
round
@click="clearSearch"></el-button>
</el-form-item>
<el-button
type="primary"
class="common-button-primary"
round
@click="selectMoreBtn"
><i class="iconfont">&#xe7a5;</i>高级查询</el-button>
<AdvancedQuery
:isAdvancedSearch.sync="isAdvancedSearch"
:twoOptions="twoOptions"
:threeOptions="threeOptions"
@twoSelectChange="twoSelectChange"
@getDomesticStandardTableBtn="getDomesticStandardTableBtn"
></AdvancedQuery>
</el-form>
</div>
</div>
<div class="action-bar">
<el-button
type="primary"
class="common-button-primary add-button"
round
@click="openModal(null,'addOpt')"
v-btn-permission="'J2YEFN9MH4KWW5HMR2QH'"
><i class="iconfont">&#xe84e;</i>新增</el-button>
<el-button
class="common-button-default delete-button"
:loading="delLoading"
round
@click="deleteSarAccess('demore',null)"
v-btn-permission="'WPNW79T3DNUZPJFNMHGP'"
><i class="iconfont">&#xe61b;</i>批量删除</el-button>
</div>
<div class="container">
<el-table
:data="sarAccessListDatas"
tooltip-effect="dark"
style="width: 100%"
border
height="100%"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}"
@selection-change="selectOne"
ref="selection"
>
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
prop="countryShow"
label="国家/地区"
align="center">
</el-table-column>
<el-table-column
prop="accessContent"
label="清单名称"
align="center"
width="260px"
>
<template slot-scope="scope">
<a class="table-jump" @click.stop="showTable(scope.row)">{{ scope.row.accessContent }}</a>
</template>
</el-table-column>
<el-table-column
prop="state"
label="清单状态"
align="center">
<template slot-scope="scope">
<span v-if="scope.row.state === '1'">未发布</span>
<span v-if="scope.row.state === '2'">已发布</span>
</template>
</el-table-column>
<el-table-column
prop="version"
label="清单版本"
align="center">
<template slot-scope="scope">
<span v-if="scope.row.version != null && scope.row.version !== ''">V{{ scope.row.version }}</span>
</template>
</el-table-column>
<el-table-column
prop="modifyTime"
label="更新时间"
sortable
align="center">
<template slot-scope="scope">
<div>{{ scope.row.modifyTime ? scope.row.modifyTime.split(' ')[0] : '' }}</div>
</template>
</el-table-column>
<el-table-column
prop="uname"
label="更新人"
align="center">
</el-table-column>
<el-table-column label="操作" align="center" width="50" fixed="right">
<template slot-scope="scope">
<div @click.stop style="display: inline-block">
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="[scope.row, '查看']" v-btn-permission="'43UVH8AWGJLFDZT9WNTZ'">查看</el-dropdown-item>
<el-dropdown-item :command="[scope.row, '编辑']" v-btn-permission="'HYY8NGY2RYT3VEDRSK5V'">编辑</el-dropdown-item>
<el-dropdown-item :command="[scope.row, '删除']" v-btn-permission="'X9HP9YQL2BRKBFCDMZQT'">删除</el-dropdown-item>
<!-- <el-dropdown-item :command="[scope.row, '流程']">流程</el-dropdown-item>-->
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
</el-table-column>
</el-table>
<loading :loading="loading">数据获取中</loading>
<pagination :page="sarSarAccessEOSearch.page" :total="sarAccessListTotal" @pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
</div>
<el-tabs v-model="tabValue" style="height: 100%;">
<el-tab-pane label="国家/地区清单" name="listOfCountries">
<div style="position: absolute;top: 0;left: 0;right: 0;bottom: 0;">
<list-of-countries v-if="tabValue === 'listOfCountries'"></list-of-countries>
</div>
</el-tab-pane>
<el-tab-pane label="项目类清单" name="listProject">
<div style="position: absolute;top: 0;left: 0;right: 0;bottom: 0;">
<list-project v-if="tabValue === 'listProject'"></list-project>
</div>
</el-tab-pane>
<el-tab-pane label="重点标准跟踪清单" name="listTracking">
<div style="position: absolute;top: 0;left: 0;right: 0;bottom: 0;">
<list-tracking v-if="tabValue === 'listTracking'"></list-tracking>
</div>
</el-tab-pane>
<el-tab-pane label="其他清单" name="listOther">
<div style="position: absolute;top: 0;left: 0;right: 0;bottom: 0;">
<list-other v-if="tabValue === 'listOther'"></list-other>
</div>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import listOfCountries from "../accessStandardsAndRegulations/page/listOfCountries"
import listProject from "../accessStandardsAndRegulations/page/listProject"
import listTracking from "../accessStandardsAndRegulations/page/listTracking"
import listOther from "../accessStandardsAndRegulations/page/listOther"
export default {
name: 'AccessStandardsAndRegulations',
data () {
return {
isAdvancedSearch: false,
twoOptions: [
{
label: '清单名称',
value: 'access_content',
type: 'INPUT',
disabled: false
},
{
label: '国家/地区',
value: 'country',
type: 'SEL_OPTION',
disabled: false
},
// {
// label: '文本说明',
// value: 'remark',
// type: 'INPUT',
// disabled: false
// },
{
label: '清单状态',
value: 'state',
type: 'SEL_OPTION',
disabled: false
},
{
label: '更新人',
value: 'creation_user',
type : 'SEL_OPTION',
selVal : 'USERLIST',
disabled: false
}
],
threeOptions: [],
showTableFlag: true,
dataLoading: false,
searching: false,
loadData: false,
moreSearchBtn: true,
moreSearchShow: false,
exportTestItemNameFlag: false, // 导出模态框
exportName: '',
total: 0,
page: 1,
rows: 10,
// 查询相关参数
sarSarAccessEOSearch: {
country: '',
accessContent: '',
energyKind: '',
applyArctic: '',
region: '',
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
validFlag: 0
},
sarAccessListDatas: [],
sarAccessListTotal: 0,
loading: false,
selectedList: [],
// 新增、编辑 准入信息字段
sarAccessEO: {
country: '',
applyArctic: '',
energyKind: '',
accessContent: '',
region: ''
},
drawerPage: 1, // 当前抽屉分页的页码
drawerTotal: 0, // 抽屉分页的总条数
sarAccessEORules: {
region: [
{required: true, message: '区域不能为空', trigger: 'change'}
],
country: [
{required: true, message: '国家不能为空', trigger: 'change'}
],
accessContent: [
{required: true, message: '表格名称不能为空', trigger: 'blur'},
{type: 'string', max: 100, message: '表格名称不能超过100个字符', trigger: 'blur'}
]
},
countryOptions: [],
drawerCountryOptions: [], // 准入信息 国家下拉框
drawerCountryTwoOptions: [], // 数据搜索-多属性搜索国家下拉框
energyKindOptions: [],
categoryOptions: [],
applyArcticOptions: [],
applyAuthOptions: [], // 认证类型下拉框
// 区域
regionOptions: [
{
label: '国内',
value: 'INLAND'
},
{
label: '海外',
value: 'FOREIGN'
}
],
showModalTitle: '',
disabledFlag: false,
showModalFlag: false,
// 新增、编辑过程中数据搜索字段
sarAccessInfoSearch: {
region: '', // 区域
country: '', // 国家
keywords: '', // 关键字
energyKind: '', // 能源种类
category: '', // 所属专业领域
applyArctic: '', // 适用车型
deadLine: '', // 截止时间
applyAuth: '' // 认证类型
},
dataSourceOptions: [
{value: 'INLAND_STAND', label: '国内标准法规'},
{value: 'FOREIGN_STAND', label: '海外标准法规'},
{value: 'FOREIGN_LAWS', label: '国内外政策'},
{value: 'BUSINESS', label: '企业标准 '}
],
sarAccessInfoSearchList: [],
selectedAccInfoSearchList: [],
sarAccessInfoListArry: [],
sarAccessInfoList: [],
importExcelUrl: '/api/lawss/sarSarAccessInfo/importSarAccessInfo?accessId=',
importmodalFlag: false,
saveExportType: '',
seeModalFlag: false, // 查看抽屉显示隐藏
seeModalTitle: '', // 查看抽屉title
seeSarAccessInfoList: [], // 查看抽屉内 table
delLoading: false
tabValue: 'listOfCountries'
}
},
methods: {
// 更多
handleCommand (command) {
switch (command[1]) {
case '查看':
this.showTable(command[0])
break
case '编辑':
this.editTable(command[0])
break
case '删除':
this.deleteSarAccess('delOne', command[0].id)
break
}
},
// 主页 搜索条件 区域下拉 on-change事件
regionChange (value) {
return new Promise((resolve, reject) => {
this.$http.get('sys/dictype/pageRegion', {
dicTypeCode: value
}, {
_this: this
}, res => {
if (res.ok) {
this.countryOptions = res.data.list
this.sarSarAccessEOSearch.country = ''
// eslint-disable-next-line
reslove()
}
})
})
},
// 主页 新增、编辑 准入信息 区域下拉 on-change事件
drawerRegionChange (value) {
return new Promise((resolve, reject) => {
this.$http.get('sys/dictype/pageRegion', {
dicTypeCode: value
}, {
_this: this
}, res => {
if (res.ok) {
this.drawerCountryOptions = res.data.list
this.sarAccessEO.country = ''
resolve()
}
})
})
},
// 搜索
searchSarAccessBtn () {
this.page = 1
this.searchSarAccess()
},
// 分页查询相关
searchSarAccess (advanceSearch) {
const obj = advanceSearch || this.sarSarAccessEOSearch
if (advanceSearch) {
this.sarSarAccessEOSearch.advanceSearchVOStr = advanceSearch.advanceSearchVOStr
}
// obj.country = this.sarSarAccessEOSearch.country.join()
this.$http.get('lawss/sarSarAccess/page', obj, {
_this: this,
loading: 'loading'
}, res => {
this.sarAccessListDatas = res.data.list
this.sarAccessListTotal = res.data.count
if ((this.sarAccessListDatas.length === 0 || this.sarAccessListDatas === []) && this.sarSarAccessEOSearch.page !== 1) {
this.pageChange(1)
}
this.$nextTick(() => {
this.$refs.selection.doLayout()
})
}, e => {
})
// this.$refs.selection.selectAll(false)
},
pageChange (page) {
this.sarSarAccessEOSearch.page = page
this.searchSarAccess()
},
pageSizeChange (pageSize) {
this.sarSarAccessEOSearch.pageSize = this.$store.getters.userInfo.configContent
this.searchSarAccess()
},
clearSearch (search = true) {
// search 字段是为了处理高级查询时清空字段用的
this.sarSarAccessEOSearch.country = ''
this.sarSarAccessEOSearch.accessContent = ''
this.sarSarAccessEOSearch.applyArctic = ''
this.sarSarAccessEOSearch.energyKind = ''
this.sarSarAccessEOSearch.type = ''
this.sarSarAccessEOSearch.page = 1
search && this.searchSarAccess()
},
// 查看跳转详情页
detailsStandard (item) {
if (item.sarType === 'INLAND_STAND' || item.sarType === 'FOREIGN_STAND') {
if (this.$hasPermission('SSA6WR4HV8')) {
this.$store.commit('setDetailMap', this.$route.path)
let routeUrl = this.$router.resolve({
name: 'OtherStandardDetails',
params: {
id: item.resId,
pageType: item.sarType
}
})
window.open(routeUrl.href, '_blank')
} else {
this.$message.warning('无权访问')
}
} else if (item.sarType === 'INLAND_LAWS' || item.sarType === 'FOREIGN_LAWS') {
if (this.$hasPermission('A2HDHMEA6W')) {
this.$store.commit('setDetailMap', this.$route.path)
let routeUrl = this.$router.resolve({
name: 'OtherLawsDetails',
params: {
id: item.resId,
pageType: item.sarType
}
})
window.open(routeUrl.href, '_blank')
} else {
this.$message.warning('无权访问')
}
} else {
if (this.$hasPermission('YJUHC32R7G')) {
this.$store.commit('setDetailMap', this.$route.path)
let routeUrl = this.$router.resolve({
name: 'OtherBussStandardDetails',
params: {
id: item.resId,
pageType: 'BUSINESS_STAND'
}
})
window.open(routeUrl.href, '_blank')
} else {
this.$message.warning('无权访问')
}
}
},
// 新增相关
openModal (row, optType) {
this.$router.push({
name: 'ListOfStandardsAndRegulationsDetails'
})
},
swapItems (arr, index1, index2) {
arr[index1] = arr.splice(index2, 1, arr[index1])[0]
return arr
},
// 删除Access
deleteSarAccess (flag, id) {
if (flag === 'delOne') {
this.selectedList = []
this.selectedList[0] = id
}
if (this.selectedList.length < 1) {
this.$message.warning('请选择要删除的数据')
} else {
this.$confirm('确认删除选中数据?', '确认删除', {
confirmButtonText: '确定',
cancelButtonText: '取消',
confirmButtonClass: 'common-button-primary',
roundButton: true,
type: 'warning'
}).then(() => {
this.$http.post('lawss/sarSarAccess/deleteSarAccess', {ids: this.selectedList.join(',')}, {
_this: this,
loading: 'delLoading'
}, res => {
this.searchSarAccess()
this.selectedList = []
}, e => {
})
}).catch(() => {})
}
},
// 表格选择框
selectOne (alldata, nowdata) {
this.selectedList = []
for (let i = 0; i < alldata.length; i++) {
this.selectedList.push(alldata[i]['id'])
}
},
// 根据准入id查询标准法规详情
selectInfobyAccid () {
this.$http.get('lawss/sarSarAccessInfo/selectSarAccessInfoByAccessId', this.sarAccessInfoSearch, {
_this: this
}, res => {
this.sarAccessInfoList = res.data.list.SKILL
this.seeSarAccessInfoList = res.data.list.ADMIN
}, e => {
})
},
// 点击 table查看按钮 事件
showTable (item) {
sessionStorage.setItem('accessRow', JSON.stringify(item))
this.$store.commit('setDetailMap', this.$route.path)
this.$router.push({
name: 'AccessStandardDetails',
params: {
id: item.id
}
})
},
// 点击 table编辑按钮 事件
editTable (item) {
sessionStorage.setItem('accessRow', JSON.stringify(item))
this.$router.push({
name: 'ListOfStandardsAndRegulationsDetails',
query: {
id: item.id
}
})
// this.showModalTitle = '编辑准入标准法规'
// // 赋值准入信息
// this.drawerRegionChange(row.region).then(() => {
// this.sarAccessEO.country = row.country.split(',') // 国家
// })
// this.sarAccessEO.accessContent = row.accessContent
// this.sarAccessEO.applyArctic = row.applyArctic
// this.sarAccessEO.energyKind = row.energyKind
// this.sarAccessEO.region = row.region // 区域
// this.sarAccessEO.id = row.id
// // 数据搜索
// this.sarAccessInfoSearch.validFlag = 0
// this.sarAccessInfoSearch.accessId = row.id
// this.sarAccessInfoSearch.dataSource = 'INLAND_STAND'
// // 查询数据
// this.selectInfobyAccid()
// this.showModalFlag = true
},
/**
* 高级检索
*/
selectMoreBtn () {
this.isAdvancedSearch = true
this.threeOptions = []
},
/**
* 高级检索
* 检索项修改时为了匹配对应的下拉菜单的
*/
twoSelectChange (val, obj) {
if (val === 'country') {
this.threeOptions = this.countryOptions
} else if (val === 'state') {
this.threeOptions = [
{
label: '未发布',
value: '1'
},
{
label: '已发布',
value: '2'
},
]
}
},
// 获取工作组信息下拉框信息
getGzzOption () {
this.$http.get('lawss/sarGroupMenu/queryGroup', '', {
_this: this
}, res => {
if (res.ok) {
let gzzxxOptions = []
res.data.map(item => {
gzzxxOptions.push({
value: item.id,
label: item.menuName
})
})
this.allSelectOptions.GZZXX = gzzxxOptions
}
})
},
// 高级检索搜索
getDomesticStandardTableBtn (advancedSearch) {
let formData = {}
formData.page = 1
formData.advanceSearchStr = ''
formData.advanceSearchVOStr = JSON.stringify(advancedSearch) || ''
formData.pageSize = this.$store.getters.userInfo.configContent
formData.validFlag = 0
// 重置页码
this.clearSearch(false)
this.searchSarAccess(formData)
},
methods: {},
components: {
listOfCountries,
listProject,
listTracking,
listOther
},
components: {},
props: {},
computed: {},
watch: {},
mounted () {
// 分页查询数据
this.searchSarAccess()
// this.loadDicTypeDatas()
// 从数据库中查询各下拉框数据
this.$http.get('sys/dictype/getDicTypeListCode', '', {
_this: this
}, res => {
this.countryOptions = res.data.COUNTRY // 国家
this.applyArcticOptions = res.data.PRODUCTTYPE || []
this.energyKindOptions = res.data.ENERGYTYPES || []
this.categoryOptions = res.data.CATEGORY || []
this.applyAuthOptions = res.data.PROVETYPE || [] // 认证类型
}, e => {
})
}
mounted () {}
}
</script>
@@ -629,46 +60,31 @@ export default {
@import '~@/assets/styles/style';
@import '~@/assets/styles/mixins';
#accessStandardsAndRegulations {
height: 100%;
display: flex;
flex-direction: column;
.container {
height: 100%;
padding: 0 10px;
background: #fff;
display: flex;
flex-direction: column;
position: relative;
flex: auto;
width: 100%;
//height: calc(~'100% - 105px - 56px') !important;
.pagination {
position: static;
/deep/ .pagination-slot {
padding: 0;
}
/deep/.el-tabs{
flex: auto;
display: flex;
flex-direction: column;
/deep/ .el-tabs__header{
margin:0 !important;
}
.el-tabs__content {
height: 100% !important;
flex: auto;
position: relative;
display: flex;
flex-direction: column;
.el-tab-pane {
height: 100%;
flex: auto;
display: flex;
flex-direction: column;
}
}
}
}
.el-divider{
.el-divider__text{
font-size: 16px;
color: #0c91e5;
}
}
.standards-drawer-table-one{
position: relative;
height: 350px;
.pagination{
bottom: 0;
}
}
.standards-drawer-table{
margin-top: 10px;
}
.see-drawer{
.searchAngNewBtn{
float: right;
}
.el-divider{
clear: both;
}
}
}
</style>