Merge branch 'master' into 标准拆分译文变更
# Conflicts: # src/common/lang/en-us.js # src/common/lang/zh-cn.js # src/views/documentTool/documentSplit/modules/SplitAddForm.vue # src/views/workCenter/standardInterpretationProcess/modules/InterpretationClauseTable.vue
This commit is contained in:
@@ -3,26 +3,16 @@
|
||||
<!-- <first-stage-card></first-stage-card>-->
|
||||
<!-- </div>-->
|
||||
<div class="all-wrapper">
|
||||
<a-row :gutter="20">
|
||||
<a-col :span="24" class="mb-20">
|
||||
<!-- 检索 -->
|
||||
<retrieval-card></retrieval-card>
|
||||
</a-col>
|
||||
<a-col :span="24" class="mb-20">
|
||||
<!-- 快捷入口 -->
|
||||
<quick-enter-card></quick-enter-card>
|
||||
</a-col>
|
||||
<a-col :span="10" class="mb-20">
|
||||
<!-- 待办任务 -->
|
||||
<to-do-task-card class="mb-20"></to-do-task-card>
|
||||
<!-- 友情链接 -->
|
||||
<friend-link-card></friend-link-card>
|
||||
</a-col>
|
||||
<a-col :span="14" class="mb-20">
|
||||
<!-- 预警 -->
|
||||
<search-and-warning-card></search-and-warning-card>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<!-- 检索 -->
|
||||
<retrieval-card class="home-search"></retrieval-card>
|
||||
<!-- 快捷入口 -->
|
||||
<quick-enter-card class="home-quick-entrance"></quick-enter-card>
|
||||
<!-- 待办任务 -->
|
||||
<to-do-task-card class="home-todo"></to-do-task-card>
|
||||
<!-- 友情链接 -->
|
||||
<friend-link-card class="home-link"></friend-link-card>
|
||||
<!-- 列表 -->
|
||||
<search-and-warning-card class="home-table"></search-and-warning-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -46,14 +36,45 @@ export default {
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.all-wrapper {
|
||||
padding: 20px 8px 0;
|
||||
}
|
||||
.flex-item {
|
||||
margin: 10px;
|
||||
}
|
||||
.mb-20 {
|
||||
margin-bottom: 20px;
|
||||
padding: 8px 8px 0;
|
||||
display: grid;
|
||||
width: 100%;
|
||||
height: calc(100vh - 60px - 8px - 20px);
|
||||
grid-gap: 20px;
|
||||
grid-template-columns: 0.4fr 0.6fr;
|
||||
grid-template-rows: 56px 180px minmax(200px, auto) 180px;
|
||||
grid-template-areas: 'Search Search'
|
||||
'QuickEntrance QuickEntrance'
|
||||
'Todo Table'
|
||||
'Link Table';
|
||||
|
||||
.home-search,
|
||||
.home-quick-entrance,
|
||||
.home-todo,
|
||||
.home-link,
|
||||
.home-table{
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.home-search {
|
||||
grid-area: Search;
|
||||
overflow: visible;
|
||||
}
|
||||
.home-quick-entrance {
|
||||
grid-area: QuickEntrance;
|
||||
}
|
||||
.home-todo {
|
||||
grid-area: Todo;
|
||||
}
|
||||
.home-link {
|
||||
grid-area: Link;
|
||||
}
|
||||
.home-table {
|
||||
grid-area: Table;
|
||||
}
|
||||
}
|
||||
|
||||
/deep/ .top-wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -89,6 +110,11 @@ export default {
|
||||
}
|
||||
// 1366屏幕
|
||||
@media screen and (max-width: 1366px) {
|
||||
.all-wrapper {
|
||||
height: calc(100vh - 60px - 8px - 20px + 200px);
|
||||
// 友情链接部分减少了12像素
|
||||
grid-template-rows: 56px 180px minmax(200px, auto) 168px;
|
||||
}
|
||||
/deep/ .top-wrapper {
|
||||
.left-p {
|
||||
font-size: 16px;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<div class="friend-link-wrapper">
|
||||
<a-spin :spinning="loading">
|
||||
<div class="top-wrapper">
|
||||
<span class="left-p"><i class="iconfont icon-link left-icon"></i>{{$t('dashboard.friendLink.friendLink')}}</span>
|
||||
@@ -7,15 +7,15 @@
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="content-div" v-for="item in dataSource" :key="item.id" @click="clickLink(item)">
|
||||
<img class="icon-img" :src="getImg(item.logoUrl)" :alt="item.name">
|
||||
<a-tooltip placement="top">
|
||||
<img class="icon-img" :src="getImg(item.logoUrl)" :alt="item.name">
|
||||
<template slot="title">{{ item.name }}</template>
|
||||
<p>{{ item.name }}</p>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -69,13 +69,19 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
||||
.friend-link-wrapper {
|
||||
padding: 24px;
|
||||
background-color: white;
|
||||
}
|
||||
@itemSize: 64px;
|
||||
.content-wrapper {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(6, 1fr);
|
||||
// 总宽度 - 子内容的宽度 = 剩余宽度 / 5 = 就是每个的右间距,最后一个元素不需要右间距
|
||||
grid-gap: calc((100% - (6 * @itemSize)) / 5);
|
||||
margin-top: 12px;
|
||||
}
|
||||
.content-div {
|
||||
.content-div > span {
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
@@ -86,12 +92,12 @@ export default {
|
||||
|
||||
.icon-img {
|
||||
border-radius: 8px;
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
width: @itemSize;
|
||||
height: @itemSize;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
p {
|
||||
width: 64px;
|
||||
width: @itemSize;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
margin: 0;
|
||||
@@ -102,4 +108,22 @@ export default {
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
// 1366屏幕
|
||||
@media screen and (max-width: 1366px) {
|
||||
@itemSize: 52px;
|
||||
.content-wrapper {
|
||||
grid-gap: calc((100% - (6 * @itemSize)) / 5);
|
||||
}
|
||||
|
||||
.content-div > span {
|
||||
.icon-img {
|
||||
width: @itemSize;
|
||||
height: @itemSize;
|
||||
}
|
||||
p {
|
||||
width: @itemSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<div class="quick-enter-wrapper">
|
||||
<a-spin :spinning="loading">
|
||||
<div class="top-wrapper">
|
||||
<p class="left-p"><i class="iconfont icon-rukou left-icon"></i>{{ this.$t('dashboard.quickEnter.quickEnter') }}</p>
|
||||
@@ -24,7 +24,7 @@
|
||||
</a-spin>
|
||||
<!-- 菜单管理 -->
|
||||
<menu-manage-modal ref="menuManageModal" @ok="loadData"/>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -89,14 +89,22 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.quick-enter-wrapper {
|
||||
background-color: white;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.content-wrapper {
|
||||
overflow: auto;
|
||||
@itemGap: 20px;
|
||||
display: grid;
|
||||
margin-top: 12px;
|
||||
grid-template-columns: repeat(auto-fill, calc(100% / 14));
|
||||
grid-template-columns: repeat(14, minmax(72px, 1fr));
|
||||
// 总宽度 - 子内容的宽度 = 剩余宽度 / 5 = 就是每个的右间距,最后一个元素不需要右间距
|
||||
grid-column-gap: calc((100% - (14 * 72px)) / 13);
|
||||
|
||||
& > .content-div > span,
|
||||
& > .plus-div > span {
|
||||
padding: 9px 16px 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<template>
|
||||
<!-- 搜索区域 -->
|
||||
<div class="search-wrapper">
|
||||
<a-select class="resource-type-select" v-model="resourceType">
|
||||
<a-select class="resource-type-select" v-model="resourceType" size="large">
|
||||
<a-select-option value="all">{{ $t('dashboard.generalSearch.all')}}</a-select-option>
|
||||
<a-select-option v-for="item in resourceTypeOptions" :key="item.value" :value="item.value" :title="item.title">
|
||||
{{ item.title }}
|
||||
<a-select-option v-for="item in resourceTypeOptions" :key="item.value" :value="item.value" :title="isChinese() ? item.title : item.enText">
|
||||
{{ isChinese() ? item.title : item.enText }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
<a-input class="search-input" v-model="searchValue" :placeholder="$t('pleaseEnter')" @pressEnter="searchInputEnter">
|
||||
<a-input class="search-input" size="large" v-model="searchValue" :placeholder="$t('pleaseEnter')" @pressEnter="searchInputEnter">
|
||||
<a-icon slot="prefix" type="search" style="color: #0064FA;" />
|
||||
</a-input>
|
||||
<div class="btn-box">
|
||||
<a-button type="primary" icon="search" @click="toSearchWindow('title')">{{ $t('dashboard.retrieval.titleSearch') }}</a-button>
|
||||
<a-button type="primary" icon="search" @click="toSearchWindow('fullText')">{{ $t('dashboard.retrieval.fullSearch') }}</a-button>
|
||||
<a-button type="primary" class="btn-ghost" ghost @click="toAdvancedSearch"><img :src="require('@/assets/image/icon/super-search.png')" alt='' class="btn-icon">{{ $t('dashboard.retrieval.advancedSearch') }}</a-button>
|
||||
<a-button type="primary" size="large" icon="search" @click="toSearchWindow('title')">{{ $t('dashboard.retrieval.titleSearch') }}</a-button>
|
||||
<a-button type="primary" size="large" icon="search" @click="toSearchWindow('fullText')">{{ $t('dashboard.retrieval.fullSearch') }}</a-button>
|
||||
<a-button type="primary" size="large" class="btn-ghost" ghost @click="toAdvancedSearch"><img :src="require('@/assets/image/icon/super-search.png')" alt='' class="btn-icon">{{ $t('dashboard.retrieval.advancedSearch') }}</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -80,21 +80,21 @@ export default {
|
||||
<style lang="less" scoped>
|
||||
@height: 56px;
|
||||
.search-wrapper {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
width: 80%;
|
||||
display: grid;
|
||||
grid-template-columns: 102px 1fr auto;
|
||||
grid-template-columns: 120px 1fr auto;
|
||||
grid-gap: 10px;
|
||||
|
||||
& > .resource-type-select {
|
||||
flex: 0 0 102px;
|
||||
height: 100%;
|
||||
color: @primary-color;
|
||||
|
||||
/deep/.ant-select-arrow svg {
|
||||
fill: @primary-color;
|
||||
}
|
||||
/deep/.ant-select-selection--single {
|
||||
height: @height;
|
||||
height: 100%;
|
||||
border-color: @primary-color;
|
||||
}
|
||||
/deep/.ant-select-arrow {
|
||||
@@ -108,7 +108,8 @@ export default {
|
||||
}
|
||||
|
||||
& > .search-input {
|
||||
flex: auto;
|
||||
height: 100%;
|
||||
font-size: 16px;
|
||||
//margin-left: 10px;
|
||||
/deep/.ant-input-prefix {
|
||||
left: 24px;
|
||||
@@ -116,14 +117,14 @@ export default {
|
||||
|
||||
/deep/.ant-input {
|
||||
padding-left: 40px;
|
||||
height: @height;
|
||||
height: 100%;
|
||||
border-color: @primary-color;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-box .ant-btn {
|
||||
flex: 138px;
|
||||
height: @height;
|
||||
min-width: 138px;
|
||||
height: 100%;
|
||||
|
||||
&:not(:first-child) {
|
||||
margin-left: 10px;
|
||||
@@ -133,10 +134,6 @@ export default {
|
||||
|
||||
.btn-icon {
|
||||
margin-right: 8px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1366px) {
|
||||
@height: 42px;
|
||||
vertical-align: sub;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -12,10 +12,11 @@
|
||||
size="middle"
|
||||
:rowKey="(_, index) => index"
|
||||
class="table"
|
||||
:scroll="{ x: '100%', y: '40vh' }"
|
||||
:scroll="{ x: '100%', y: 'calc(100vh - 550px)' }"
|
||||
:columns="showColumns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="ipagination"
|
||||
:components="components"
|
||||
@change="handleTableChange"
|
||||
:loading="loading">
|
||||
<template slot="text" slot-scope="text">
|
||||
@@ -32,6 +33,14 @@
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- 标准状态 -->
|
||||
<template v-slot:standardState="text, record">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
<div v-if="text" class="status-style" :style="getStandardStateStyle(record)">{{ text }}</div>
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
<!-- 企标号、企标名称 -->
|
||||
<template v-slot:enStandard="text, record">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
@@ -61,7 +70,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { StandardSource } from '@/enums/commonEnums'
|
||||
import { EnterpriseStandardStatus, StandardSource, StandardStatus } from '@/enums/commonEnums'
|
||||
import { getMarketRegulationsList } from '../../../api/api'
|
||||
import {
|
||||
getHomeNewStandard,
|
||||
@@ -210,7 +219,7 @@ export default {
|
||||
align: 'left',
|
||||
dataIndex: 'standardState_dictText',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' },
|
||||
scopedSlots: { customRender: 'standardState' },
|
||||
show: () => {
|
||||
return [
|
||||
this.tabList[0].key,
|
||||
@@ -222,7 +231,7 @@ export default {
|
||||
{ // 代替标准编号
|
||||
title: this.$t('dashboard.tableList.substituteStandardNumber'),
|
||||
align: 'left',
|
||||
dataIndex: 'substituteStandardNumber',
|
||||
dataIndex: 'replacedByStandardNumber',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' },
|
||||
show: () => {
|
||||
@@ -308,6 +317,11 @@ export default {
|
||||
showSizeChanger: true,
|
||||
total: 0
|
||||
},
|
||||
components: {
|
||||
header: {
|
||||
cell: this.initHeader(this.columns)
|
||||
}
|
||||
},
|
||||
url: {
|
||||
list: '/laws/localTool/standardEarlyWarning/newModelImplementation'
|
||||
}
|
||||
@@ -319,6 +333,71 @@ export default {
|
||||
// this.loadData(1)
|
||||
},
|
||||
methods: {
|
||||
// 自定义渲染表头(表头换行影响高度)
|
||||
initHeader () {
|
||||
return (h, props, children, abc) => {
|
||||
// 获取列的key值和特性
|
||||
const { key, ...restProps } = props
|
||||
const col = this.columns.find(col => col.dataIndex === key)
|
||||
if (col) {
|
||||
return (
|
||||
<th {...restProps}>
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{col.title}</template>
|
||||
<div class="table-text">{col.title}</div>
|
||||
</a-tooltip>
|
||||
</th>
|
||||
)
|
||||
}
|
||||
return (
|
||||
<th {...restProps}>{children}</th>
|
||||
)
|
||||
}
|
||||
},
|
||||
// 获取标准状态
|
||||
getStandardStateStyle (row) {
|
||||
let color = ''
|
||||
switch (row.standardState + '') {
|
||||
// 草案
|
||||
case StandardStatus.DRAFT.value:
|
||||
color = '243, 129, 65'
|
||||
break
|
||||
// 征求意见
|
||||
case StandardStatus.SEEK_FOR_OPTIONS.value:
|
||||
color = '129, 206, 94'
|
||||
break
|
||||
// 审查
|
||||
case StandardStatus.EXAMINE.value:
|
||||
color = '255, 98, 98'
|
||||
break
|
||||
// 报批
|
||||
case StandardStatus.APPROVAL.value:
|
||||
color = '48, 175, 255'
|
||||
break
|
||||
// 发布
|
||||
case StandardStatus.RELEASE.value:
|
||||
color = '6, 176, 140'
|
||||
break
|
||||
// 现行有效(外部标准\企标)
|
||||
case StandardStatus.CURRENTLY_EFFECTIVE.value:
|
||||
case EnterpriseStandardStatus.CURRENTLY_EFFECTIVE.value:
|
||||
color = '137, 138, 233'
|
||||
break
|
||||
// 废止(外部标准\企标)
|
||||
case StandardStatus.ABOLISH.value:
|
||||
case EnterpriseStandardStatus.ABOLISH.value:
|
||||
color = '156, 177, 208'
|
||||
break
|
||||
}
|
||||
if (color) {
|
||||
return {
|
||||
backgroundColor: `rgba(${color}, 0.1)`,
|
||||
border: `1px solid rgba(${color}, 0.5)`,
|
||||
color: `rgba(${color}, 1)`
|
||||
}
|
||||
}
|
||||
return {}
|
||||
},
|
||||
/**
|
||||
* 查看标准分解单
|
||||
*/
|
||||
@@ -361,7 +440,7 @@ export default {
|
||||
this.dataSource = []
|
||||
this.warningTab = value
|
||||
this.showColumns = this.columns.filter(col => col.show ? col.show() : true).map(item => {
|
||||
return Object.assign({}, item, { show: undefined })
|
||||
return Object.assign({}, item, { show: undefined, ellipsis: true })
|
||||
})
|
||||
this.loadData(1)
|
||||
},
|
||||
@@ -471,7 +550,7 @@ export default {
|
||||
<style scoped lang="less">
|
||||
// 预警容器
|
||||
.warning-wrapper {
|
||||
height: calc(100vh - 406px);
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
// tab样式
|
||||
@@ -479,6 +558,7 @@ export default {
|
||||
|
||||
/deep/.ant-tabs-bar {
|
||||
margin-bottom: 0;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/deep/&.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab {
|
||||
@@ -513,6 +593,7 @@ export default {
|
||||
}
|
||||
// 表格样式
|
||||
.table-warpper {
|
||||
border-radius: 8px;
|
||||
// 内容高度 = 该部分整体高度 - tab高度
|
||||
height: calc(100% - 44px);
|
||||
background-color: #fff;
|
||||
@@ -524,6 +605,11 @@ export default {
|
||||
|
||||
/deep/ .ant-table-thead > tr > th {
|
||||
background-color: #fff;
|
||||
font-weight: 400;
|
||||
font-family: PingFang SC, PingFang SC, sans-serif;
|
||||
color: #666666;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-row .ant-table-row-cell-break-word {
|
||||
@@ -539,7 +625,21 @@ export default {
|
||||
}
|
||||
@media screen and (max-width: 1366px) {
|
||||
.warning-wrapper {
|
||||
height: calc(100vh - 226px);
|
||||
/deep/ .ant-table-body {
|
||||
max-height: calc(100vh - 345px) !important;
|
||||
}
|
||||
//height: calc(110vh - 550px) !important;
|
||||
}
|
||||
}
|
||||
// 标准状态样式
|
||||
.status-style {
|
||||
border-radius: 14px;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
padding: 0 12px;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<a-card :bordered="false" class="todo-card">
|
||||
<div class="todo-wrapper">
|
||||
<a-spin :spinning="loading">
|
||||
<div class="top-wrapper">
|
||||
<p class="left-p"><i class="iconfont icon-calendar left-icon"></i>{{ $t('dashboard.todoTask.todoTask') }}</p>
|
||||
@@ -18,7 +18,7 @@
|
||||
</div>
|
||||
<a-list :data-source="[]" v-else></a-list>
|
||||
</a-spin>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -98,8 +98,10 @@ export default {
|
||||
|
||||
<style lang="less" scoped>
|
||||
@size: 48px;
|
||||
.todo-card {
|
||||
height: calc(100vh - 611px);
|
||||
.todo-wrapper {
|
||||
padding: 24px;
|
||||
background-color: white;
|
||||
|
||||
/deep/ .ant-spin-container,
|
||||
/deep/ .ant-spin-nested-loading,
|
||||
/deep/ .ant-card-body {
|
||||
@@ -108,7 +110,7 @@ export default {
|
||||
}
|
||||
.content-wrapper {
|
||||
height: calc(100% - 30px - 12px);
|
||||
margin-top: 10px;
|
||||
margin-top: 12px;
|
||||
overflow-y: auto;
|
||||
|
||||
.content-item {
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<a-divider>{{ $t('dashboard.advancedSearch.retrieveCategories') }}</a-divider>
|
||||
<div class="filter-area-div" ref="filterArea">
|
||||
<a-row :gutter="24" class="filter-row">
|
||||
<a-col :md="2" class="label-col"><span class="search_label">{{ $t('dashboard.advancedSearch.searchType') }}</span></a-col>
|
||||
<a-col :md="2" class="label-col" :title="$t('dashboard.advancedSearch.searchType')"><span class="search_label">{{ $t('dashboard.advancedSearch.searchType') }}</span></a-col>
|
||||
<a-col :md="18" class="option-col">
|
||||
<div v-for="item in standardTypeOptions" :key="item.value" class="option-div" :class="currStandardType === item.value ? 'option-curr' : ''" @click="standardTypeChange(item.value)">
|
||||
{{ item.label }}
|
||||
@@ -31,6 +31,7 @@
|
||||
<a-form-item :label="item.dbFieldTxt" :labelCol="labelCol" :wrapperCol="wrapperCol" :colon="false">
|
||||
<template v-if="item.fieldShowType === FieldType.TREE.value">
|
||||
<a-tree-select
|
||||
:replaceFields="getReplaceFields(item.dbFieldName)"
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam[item.dbFieldName]"
|
||||
:maxTagCount="1"
|
||||
@@ -44,6 +45,7 @@
|
||||
<!-- 树形选择器(单选) -->
|
||||
<template v-if="item.fieldShowType === FieldType.TREE_SINGLE.value">
|
||||
<a-tree-select
|
||||
:replaceFields="getReplaceFields(item.dbFieldName)"
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam[item.dbFieldName]"
|
||||
:maxTagCount="1"
|
||||
@@ -60,14 +62,11 @@
|
||||
<a-input :placeholder="$t('pleaseEnter')+item.dbFieldTxt"
|
||||
v-model="queryParam[item.dbFieldName]"></a-input>
|
||||
</template>
|
||||
<!-- 日期区间 -->
|
||||
<!-- 日期区间(条款选择的日期只要单侧) -->
|
||||
<template v-else-if="[FieldType.DATE_SINGLE.value, FieldType.DATE_MORE.value].includes(item.fieldShowType)">
|
||||
<j-range-picker v-model="queryParam[item.dbFieldName]"
|
||||
<j-date-picker v-model="queryParam[item.dbFieldName]"
|
||||
format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
@change="onChange(item.dbFieldName)"></j-range-picker>
|
||||
<!--<a-range-picker v-model="queryParam[item.dbFieldName]"-->
|
||||
<!-- format="YYYY-MM-DD" value-format="YYYY-MM-DD"-->
|
||||
<!-- @change="onChange(item.dbFieldName)"></a-range-picker>-->
|
||||
@change="onChange(item.dbFieldName)"></j-date-picker>
|
||||
</template>
|
||||
<!-- 字典单选框 -->
|
||||
<template v-else-if="item.fieldShowType === FieldType.OPTION_SINGLE.value">
|
||||
@@ -133,6 +132,7 @@
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
:replaceFields="{key: 'id', value: 'id', title: 'name', children: 'childPartNameList'}"
|
||||
tree-checkable
|
||||
tree-check-strictly
|
||||
show-search
|
||||
allowClear
|
||||
:filterTreeNode="filterTreeOption"
|
||||
@@ -244,14 +244,20 @@ import Vue from 'vue'
|
||||
import { ACCESS_TOKEN } from '../../../store/mutation-types'
|
||||
import { previewPdf } from '../../../utils/previewPdf'
|
||||
import { kkFilePreview } from '../../../utils/kkFilePreview'
|
||||
import JRangePicker from '@comp/JDatePicker'
|
||||
import JDatePicker from '@comp/JDatePicker'
|
||||
|
||||
export default {
|
||||
name: 'AdvancedSearch',
|
||||
components: { JRangePicker, JTable },
|
||||
components: { JDatePicker, JTable },
|
||||
data () {
|
||||
return {
|
||||
FieldType,
|
||||
// 需要英文状态下翻译下拉的字段
|
||||
dictTextFieldList: [
|
||||
'professional_field', // 全部-专业领域
|
||||
'applicable_market', // 适用市场
|
||||
'domain_area' // 条款-专业领域
|
||||
],
|
||||
loading: false,
|
||||
toggleSearchStatus: true, // 检索条件的展开和收起,false收缩状态
|
||||
currStandardType: '1', // 1外部 3企标 4条款 5全部
|
||||
@@ -385,13 +391,13 @@ export default {
|
||||
dataIndex: 'item_content',
|
||||
scopedSlots: { customRender: 'item_content' }
|
||||
},
|
||||
{ // 适用零部件
|
||||
title: this.$t('dashboard.advancedSearch.applicableComponents'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applicable_components',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
// { // 适用零部件
|
||||
// title: this.$t('dashboard.advancedSearch.applicableComponents'),
|
||||
// align: 'center',
|
||||
// width: 180,
|
||||
// dataIndex: 'applicable_components',
|
||||
// scopedSlots: { customRender: 'text' }
|
||||
// },
|
||||
{ // 新生产车实施日期
|
||||
title: this.$t('dashboard.advancedSearch.newProduceVehiclesImplementationDate'),
|
||||
align: 'center',
|
||||
@@ -417,7 +423,7 @@ export default {
|
||||
title: this.$t('dashboard.advancedSearch.keywords'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'keywords',
|
||||
dataIndex: 'part_name_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 责任部门
|
||||
@@ -550,6 +556,18 @@ export default {
|
||||
this.queryParam.standard_state = this.defaultStandardStatus
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 处理英文下树结构下拉的字段替换
|
||||
* @param field - 字段名
|
||||
*/
|
||||
getReplaceFields (field) {
|
||||
const obj = {}
|
||||
// 数据字典或标签内容管理英文是enTitle
|
||||
if (this.dictTextFieldList.includes(field)) {
|
||||
obj.title = this.isChinese() ? 'title' : 'enTitle'
|
||||
}
|
||||
return obj
|
||||
},
|
||||
// 导出
|
||||
handleExportXls (fileName, fileSuffix = '.xls') {
|
||||
if (!fileName || typeof fileName !== 'string') {
|
||||
@@ -615,16 +633,17 @@ export default {
|
||||
path = '/enterpriseStandardLibrary/enterpriseStandardDetail'
|
||||
} else if (this.currStandardType === '5') {
|
||||
// 全部的话,就判断是企标还是外部
|
||||
if (record.resource_type === StandardSource.FOREIGN.value) {
|
||||
if (record.resource_type + '' === StandardSource.FOREIGN.value) {
|
||||
path = '/standardRegulationLibrary/foreignStandardDetailPage'
|
||||
} else if (record.resource_type === StandardSource.ENTERPRISE.value) {
|
||||
} else if (record.resource_type + '' === StandardSource.ENTERPRISE.value) {
|
||||
path = '/enterpriseStandardLibrary/enterpriseStandardDetail'
|
||||
}
|
||||
}
|
||||
this.$openPageNewSheet({
|
||||
path: path,
|
||||
query: {
|
||||
id: record.id
|
||||
id: record.id,
|
||||
standardNumber: record.standard_number
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -963,6 +982,9 @@ export default {
|
||||
.label-col {
|
||||
text-align: left;
|
||||
color: #86909c;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.option-col {
|
||||
width: calc(100% - 200px);
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<div class="label-col"><span class="search_label">{{ selectOptions[value].label }}</span></div>
|
||||
<div class="option-col">
|
||||
<div v-for="item in selectOptions[value].options" :key="item.itemValue" class="option-div" :class="selectOptions[value].current === item.itemValue ? 'option-curr' : ''" @click="selectOptionsChange(value, item.itemValue)">
|
||||
<span>{{ item.itemText }}<span v-if="item.statisticsCount || item.statisticsCount === 0">(<span class="option-span-num">{{ item.statisticsCount }}</span>)</span></span>
|
||||
<span>{{ isChinese() ? item.itemText : item.itemTextEnglish }}<span v-if="item.statisticsCount || item.statisticsCount === 0">(<span class="option-span-num">{{ item.statisticsCount }}</span>)</span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -330,7 +330,11 @@ export default {
|
||||
if (res.result[item]) {
|
||||
// 通过key获取对应label
|
||||
const label = this.getLabelByKey(item)
|
||||
res.result[item].unshift({ itemText: this.$t('dashboard.generalSearch.all'), itemValue: 'all' })
|
||||
res.result[item].unshift({
|
||||
itemText: this.$t('dashboard.generalSearch.all'),
|
||||
itemTextEnglish: this.$t('dashboard.generalSearch.all'),
|
||||
itemValue: 'all'
|
||||
})
|
||||
this.selectOptions[item] = {
|
||||
options: res.result[item],
|
||||
label: label,
|
||||
@@ -908,7 +912,7 @@ export default {
|
||||
line-height: 28px;
|
||||
margin-right: 20px;
|
||||
max-height: calc(100% - 340px);
|
||||
max-width: 50%;
|
||||
max-width: 30%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
|
||||
@@ -136,7 +136,8 @@ export default {
|
||||
{
|
||||
title: this.$t('docTool.comparison.oldTextState'),
|
||||
width: 150,
|
||||
dataIndex: 'fileTypeLeft_dictText'
|
||||
dataIndex: 'fileTypeLeft_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 新文档文本号
|
||||
{
|
||||
@@ -156,13 +157,15 @@ export default {
|
||||
{
|
||||
title: this.$t('docTool.comparison.newTextState'),
|
||||
width: 150,
|
||||
dataIndex: 'fileTypeRight_dictText'
|
||||
dataIndex: 'fileTypeRight_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 发布情况
|
||||
{
|
||||
title: this.$t('docTool.comparison.releaseSituation'),
|
||||
width: 150,
|
||||
dataIndex: 'releaseState_dictText'
|
||||
dataIndex: 'releaseState_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 创建人
|
||||
{
|
||||
@@ -256,6 +259,11 @@ export default {
|
||||
onOk: () => {
|
||||
const idList = []
|
||||
const selectionRows = JSON.parse(JSON.stringify(this.selectionRows))
|
||||
// 发布状态不能删除
|
||||
if (selectionRows.some(item => item.releaseState !== 'draft')) {
|
||||
this.$message.warning(this.$t('publishedAndCannotDeleted'))
|
||||
return
|
||||
}
|
||||
for (let i = 0; i < selectionRows.length; i++) {
|
||||
if (selectionRows[i].createBy === this.userInfo.username &&
|
||||
selectionRows[i].releaseState === 'draft') {
|
||||
|
||||
@@ -166,7 +166,7 @@ export default {
|
||||
queryParamLeft: {},
|
||||
ipaginationLeft: {
|
||||
current: 1,
|
||||
pageSize: 50,
|
||||
pageSize: 10,
|
||||
pageSizeOptions: ['10', '50', '100', '150', '200'],
|
||||
showTotal: (total, range) => {
|
||||
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||
@@ -182,7 +182,7 @@ export default {
|
||||
queryParamRight: {},
|
||||
ipaginationRight: {
|
||||
current: 1,
|
||||
pageSize: 50,
|
||||
pageSize: 10,
|
||||
pageSizeOptions: ['10', '50', '100', '150', '200'],
|
||||
showTotal: (total, range) => {
|
||||
return range[0] + '-' + range[1] + ' ' + this.$t('total') + ' ' + total + ' ' + this.$t('strip')
|
||||
@@ -230,7 +230,8 @@ export default {
|
||||
title: this.$t('docTool.comparison.textStatus'),
|
||||
ellipsis: true,
|
||||
dataIndex: 'fileType_dictText',
|
||||
width: 100
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('fileName'),
|
||||
@@ -263,7 +264,8 @@ export default {
|
||||
title: this.$t('docTool.comparison.textStatus'),
|
||||
ellipsis: true,
|
||||
dataIndex: 'fileType_dictText',
|
||||
width: 100
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('fileName'),
|
||||
|
||||
@@ -96,7 +96,7 @@ import '../../../assets/less/common.less'
|
||||
import JTable from '../../../components/jero/JTable.vue'
|
||||
import SplitText from './modules/SplitText.vue'
|
||||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||
import { releaseSplitStandard, changePermission, withdraw } from '@api/documentToolApi'
|
||||
import { releaseSplitStandard, changePermission, withdraw, checkChangePermission } from '@api/documentToolApi'
|
||||
import ImportSplitResultModal from './modules/ImportSplitResultModal.vue'
|
||||
import UserSelectModal from '../../../components/selection/UserSelectModal.vue'
|
||||
import { SplitStatus, StandardSource } from '@/enums/commonEnums'
|
||||
@@ -183,7 +183,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'fileType_dictText',
|
||||
title: this.$t('docTool.split.fileStatus'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 文件名称
|
||||
{
|
||||
@@ -195,7 +196,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'splitStatus_dictText',
|
||||
title: this.$t('docTool.split.splitState'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 编辑人
|
||||
{
|
||||
@@ -292,6 +294,7 @@ export default {
|
||||
query: {
|
||||
infoId: record.id,
|
||||
infoNumber: record.serialNumber,
|
||||
standardClass: record.standardClass,
|
||||
createBy: record.createBy,
|
||||
standardName: record.title
|
||||
}
|
||||
@@ -327,7 +330,14 @@ export default {
|
||||
this.$message.warning(this.$t('selectAtLeastOne'))
|
||||
return
|
||||
}
|
||||
this.$refs.userSelectModal.open()
|
||||
// 校验是否有权限更改
|
||||
checkChangePermission({ ids: this.selectedRowKeys.join(',') }).then(res => {
|
||||
if (res.success) {
|
||||
this.$refs.userSelectModal.open()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
continueChangePermission (id) {
|
||||
this.loading = true
|
||||
|
||||
@@ -48,19 +48,19 @@
|
||||
<i class="iconfont icon-shanchu_" />
|
||||
</a-button>
|
||||
<!--节点上移,是否可以上移在树形数据中应该有字段标识-->
|
||||
<a-button icon="up"
|
||||
v-if="record.pid"
|
||||
class="tree-operate-node-btn"
|
||||
@click.stop="orgMoveUp(record)"
|
||||
v-has="'split:sarFileSplitMenu:moveUp'">
|
||||
</a-button>
|
||||
<!--<a-button icon="up"-->
|
||||
<!-- v-if="record.pid"-->
|
||||
<!-- class="tree-operate-node-btn"-->
|
||||
<!-- @click.stop="orgMoveUp(record)"-->
|
||||
<!-- v-has="'split:sarFileSplitMenu:moveUp'">-->
|
||||
<!--</a-button>-->
|
||||
<!--节点下移,是否可以下移在树形数据中应该有字段标识-->
|
||||
<a-button icon="down"
|
||||
v-if="record.pid"
|
||||
class="tree-operate-node-btn"
|
||||
@click.stop="orgmoveDown(record)"
|
||||
v-has="'split:sarFileSplitMenu:moveDown'">
|
||||
</a-button>
|
||||
<!--<a-button icon="down"-->
|
||||
<!-- v-if="record.pid"-->
|
||||
<!-- class="tree-operate-node-btn"-->
|
||||
<!-- @click.stop="orgmoveDown(record)"-->
|
||||
<!-- v-has="'split:sarFileSplitMenu:moveDown'">-->
|
||||
<!--</a-button>-->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -243,6 +243,8 @@ export default {
|
||||
mixins: [ConfigurableTableMixin],
|
||||
data () {
|
||||
return {
|
||||
// 导入的最大大小
|
||||
importMaxSize: 20,
|
||||
StandardSource,
|
||||
data: [],
|
||||
loading: false, // 提交的加载
|
||||
@@ -373,7 +375,8 @@ export default {
|
||||
this.menuId = this.selectedKeys[0]
|
||||
this.uploadData = {
|
||||
menuId: this.menuId,
|
||||
infoId: this.infoId
|
||||
infoId: this.infoId,
|
||||
standardClass: this.$route.query.standardClass
|
||||
}
|
||||
this.filters.info_id = this.infoId
|
||||
this.filters.menu_id = this.menuId
|
||||
|
||||
@@ -17,9 +17,12 @@
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardSelect.standardNumber')">
|
||||
<standard-selection :placeholder="$t('pleaseSelect') + $t('standardSelect.standardNumber')"
|
||||
type="radio"
|
||||
splitSearch
|
||||
disabledSourceSearch
|
||||
@nameChange="handleStandardNumberChange"
|
||||
@listChange="handleStandardListChange"
|
||||
:select-only="true"
|
||||
:can-selected-source="[StandardSource.FOREIGN.value, StandardSource.ENTERPRISE.value]"
|
||||
:can-selected-source="[StandardSource.FOREIGN.value]"
|
||||
class="readonly-input"
|
||||
v-decorator="['serialNumber', validatorRules.serialNumber]" />
|
||||
</a-form-item>
|
||||
@@ -111,6 +114,7 @@ export default {
|
||||
validateTrigger: 'change'
|
||||
}
|
||||
},
|
||||
standardInfo: {}, // 选择的标准
|
||||
downTemplateUrl: '/laws/DocumentTool/documentSplit/downloadImportTemplate' // 模板下载
|
||||
}
|
||||
},
|
||||
@@ -122,8 +126,10 @@ export default {
|
||||
this.form.validateFields(async (errors, values) => {
|
||||
if (!errors) {
|
||||
this.confirmLoading = true
|
||||
const formData = values
|
||||
const formData = Object.assign({}, values)
|
||||
const fileInfo = await getFileInfo({ id: formData.splitFileId })
|
||||
formData.standardId = this.standardInfo.id
|
||||
formData.standardClass = this.standardInfo.standardClass
|
||||
if (fileInfo.success) {
|
||||
formData.fileName = fileInfo.result.fileName
|
||||
}
|
||||
@@ -196,6 +202,9 @@ export default {
|
||||
handleStandardNumberChange (name) {
|
||||
this.form.setFieldsValue({ title: name })
|
||||
},
|
||||
handleStandardListChange (list) {
|
||||
this.standardInfo = list[0] || {}
|
||||
},
|
||||
// 下载导入模板
|
||||
downTemplate (fileName, fileSuffix = '.xls') {
|
||||
if (!fileName || typeof fileName !== 'string') {
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
<!-- 12, 树选择 -->
|
||||
<s-tree-select
|
||||
v-else-if="item.fieldShowType === FieldType.TREE.value"
|
||||
:replaceFields="getReplaceFields(item.dbFieldName)"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)"
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
@@ -145,24 +146,33 @@
|
||||
<!-- 15, 树选择(单选) -->
|
||||
<s-tree-select v-else-if="item.fieldShowType === FieldType.TREE_SINGLE.value"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:replaceFields="getReplaceFields(item.dbFieldName)"
|
||||
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)"
|
||||
:tree-data="optionsData[item.dbFieldName]"
|
||||
:label-in-value="false"
|
||||
@change="updateDom"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)" />
|
||||
<!--16、树形弹框选择-->
|
||||
<tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:filedName="item.dbFieldName"
|
||||
type="checkbox"
|
||||
:options-href="item.fieldHref"
|
||||
:nameStr="formInline[item.dbFieldName + '_dictText']"
|
||||
:dict-id="item.dictId"
|
||||
:disabled="disabled || disabledFieldList.includes(item.dbFieldName)"
|
||||
:children-column-name="getTreeSelectionChildrenColumnName(item)"
|
||||
:is-tag-library-restriction="item.dbFieldName === 'property_tag'"
|
||||
:search-field-name="item.dbFieldName === 'property_tag' ? 'firstNodeName' : null" />
|
||||
<!--<tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value || item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value"-->
|
||||
<!-- :placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)"-->
|
||||
<!-- v-model="formInline[item.dbFieldName]"-->
|
||||
<!-- :filedName="item.dbFieldName"-->
|
||||
<!-- type="checkbox"-->
|
||||
<!-- :options-href="item.fieldHref"-->
|
||||
<!-- :nameStr="formInline[item.dbFieldName + '_dictText']"-->
|
||||
<!-- :dict-id="item.dictId"-->
|
||||
<!-- :disabled="disabled || disabledFieldList.includes(item.dbFieldName)"-->
|
||||
<!-- :children-column-name="getTreeSelectionChildrenColumnName(item)"-->
|
||||
<!-- :is-tag-library-restriction="item.dbFieldName === 'property_tag'"-->
|
||||
<!-- :search-field-name="item.dbFieldName === 'property_tag' ? 'firstNodeName' : null" />-->
|
||||
<tree-data-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value || item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:fieldName="item.dbFieldName"
|
||||
:nameStr="formInline[item.dbFieldName + '_dictText']"
|
||||
@nameChange="treeDataSelectNameChange"
|
||||
:optionsHref="item.treeFirstHref"
|
||||
:dict-id="item.dictId"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</template>
|
||||
@@ -177,7 +187,7 @@
|
||||
<a-button type="primary" icon="plus" ghost @click="handleAddClauseContent(-1)">{{ $t('newlyAdded') }}</a-button>
|
||||
</div>
|
||||
<template v-if="contentList && contentList.length > 0">
|
||||
<div class="clause-item" v-for="(clause, index) in contentList" :key="index + 'clause'">
|
||||
<div class="clause-item" v-for="(clause, index) in contentList" :key="clause.uuid || (index + 'clause')">
|
||||
<div class="clause-item-operate">
|
||||
<a-button @click="handleAddClauseContent(index)">{{ $t('newlyAdded') }}</a-button>
|
||||
<a-button v-if="clause.type === TypeOfClauseItem.TABLE.value" @click="splitEdit(index,clause)">
|
||||
@@ -273,12 +283,15 @@ import { getAction } from '../../../../api/manage'
|
||||
import { getFormDictTreeList } from '../../../../api/api'
|
||||
import STreeSelect from '../../../../components/STreeSelect'
|
||||
import TreeSelection from '../../../../components/selection/TreeSelection'
|
||||
import { randomUUID } from '@/utils/util'
|
||||
import TreeDataSelection from '@comp/selection/TreeDataSelection'
|
||||
import SplitAddClauseUploadImage from '@comp/splitUpload/SplitAddClauseUploadImage'
|
||||
|
||||
export default {
|
||||
name: 'SplitAddForm',
|
||||
components: {
|
||||
SplitAddClauseUploadImage,
|
||||
TreeDataSelection,
|
||||
TreeSelection,
|
||||
JMultipleDatePicker,
|
||||
SplitDetailAddTable,
|
||||
@@ -294,6 +307,12 @@ export default {
|
||||
hiddenFieldList: ['item_content', 'translation'], // 隐藏的字段
|
||||
radioDictSelect: [], // 使用radio样式的数据字典单选
|
||||
disabledFieldList: [], // 禁用的字段
|
||||
// 需要英文状态下翻译下拉的字段
|
||||
dictTextFieldList: [
|
||||
'professional_field', // 全部-专业领域
|
||||
'applicable_market', // 适用市场
|
||||
'domain_area' // 条款-专业领域
|
||||
],
|
||||
specialPlaceholder: {}, // 特殊的placeholder
|
||||
optionsData: {}, // 通过接口获取的下拉数据
|
||||
title: this.$t('newlyAdded'),
|
||||
@@ -343,6 +362,18 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 处理英文下树结构下拉的字段替换
|
||||
* @param field - 字段名
|
||||
*/
|
||||
getReplaceFields (field) {
|
||||
const obj = {}
|
||||
// 数据字典或标签内容管理英文是enTitle
|
||||
if (this.dictTextFieldList.includes(field)) {
|
||||
obj.title = this.isChinese() ? 'title' : 'enTitle'
|
||||
}
|
||||
return obj
|
||||
},
|
||||
/**
|
||||
* 新增
|
||||
*/
|
||||
@@ -533,35 +564,45 @@ export default {
|
||||
},
|
||||
// 增加条款内容成功
|
||||
handleAddOk (type, content) {
|
||||
const headerArr = this.contentList.splice(0, this.addIndex + 1)
|
||||
const footerArr = this.contentList.splice(-this.addIndex)
|
||||
const insertArr = []
|
||||
switch (type) {
|
||||
case TypeOfClauseItem.TEXT.value:
|
||||
for (let i = 0; i < content; i++) {
|
||||
insertArr.push({
|
||||
id: '',
|
||||
uuid: randomUUID(),
|
||||
type: TypeOfClauseItem.TEXT.value,
|
||||
[this.currentFieldObj.field]: ''
|
||||
})
|
||||
}
|
||||
break
|
||||
case TypeOfClauseItem.IMG.value:
|
||||
insertArr[0] = {
|
||||
id: '',
|
||||
type: TypeOfClauseItem.IMG.value,
|
||||
[this.currentFieldObj.field]: content.file.response.result.url,
|
||||
[this.currentFieldObj.tempUrlField]: window._CONFIG.domianURL + '/sys/split/file/getImage?fileName=' + content.file.response.result.fileName
|
||||
// 处理上传接口报错的情况
|
||||
if (content.imgs) {
|
||||
content.imgs.forEach(file => {
|
||||
insertArr.push({
|
||||
id: '',
|
||||
uuid: randomUUID(),
|
||||
type: TypeOfClauseItem.IMG.value,
|
||||
[this.currentFieldObj.field]: file.response.result.url,
|
||||
[this.currentFieldObj.tempUrlField]: window._CONFIG.domianURL + '/sys/split/file/getImage?fileName=' + file.response.result.fileName
|
||||
})
|
||||
})
|
||||
}
|
||||
break
|
||||
case TypeOfClauseItem.TABLE.value:
|
||||
insertArr[0] = {
|
||||
id: '',
|
||||
uuid: randomUUID(),
|
||||
type: 'TABLE',
|
||||
[this.currentFieldObj.field]: content[0]
|
||||
}
|
||||
}
|
||||
this.contentList = [...headerArr, ...insertArr, ...footerArr]
|
||||
if (this.addIndex !== -1) {
|
||||
this.contentList.splice(this.addIndex + 1, 0, ...insertArr)
|
||||
} else {
|
||||
this.contentList.push(...insertArr)
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 译文编辑
|
||||
@@ -770,6 +811,9 @@ export default {
|
||||
}
|
||||
return null
|
||||
},
|
||||
treeDataSelectNameChange (value, fieldName) {
|
||||
this.formInline[fieldName + '_dictText'] = value
|
||||
},
|
||||
/**
|
||||
* 如果字段中的usableRange只有一个值,那么就需要在placeholder中标识
|
||||
* @param field
|
||||
|
||||
@@ -128,7 +128,7 @@ export default {
|
||||
disabled: false,
|
||||
titleImg: this.$t('uploadPictures'),
|
||||
listType: 'picture',
|
||||
accept: '.png,.jpeg,.jpg,.gif',
|
||||
accept: '.png,.jpeg,.jpg',
|
||||
// 表格行列相关数据
|
||||
rowColForm: {},
|
||||
validatorRowColRules: {
|
||||
@@ -159,8 +159,11 @@ export default {
|
||||
},
|
||||
// 上传文件
|
||||
uploadSuccess (file, data, imgs) {
|
||||
this.$emit('ok', TypeOfClauseItem.IMG.value, { file, data, imgs })
|
||||
this.visible = false
|
||||
// 所有文件都上传完成再去关闭弹框
|
||||
if (Array.isArray(imgs) && imgs.every(item => item.status === 'done')) {
|
||||
this.$emit('ok', TypeOfClauseItem.IMG.value, { file, data, imgs })
|
||||
this.visible = false
|
||||
}
|
||||
// this.$emit('addImageOk', file, data, imgs)
|
||||
},
|
||||
// 确定增加的类型
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
:label-in-value="false"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)" />
|
||||
<!--16、树形弹框选择-->
|
||||
<tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value"
|
||||
<tree-selection v-else-if="item.fieldShowType === FieldType.TREE_MODAL_SELECT.value || item.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value"
|
||||
:placeholder="$t('pleaseSelect')+item.dbFieldTxt + getPlaceholderSuffix(item)"
|
||||
v-model="formInline[item.dbFieldName]"
|
||||
:filedName="item.dbFieldName"
|
||||
|
||||
@@ -108,7 +108,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'origin_dictText',
|
||||
title: this.$t('docTool.split.dataType'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 标准号
|
||||
{
|
||||
@@ -126,7 +127,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'standardFileType_dictText',
|
||||
title: this.$t('docTool.comparison.textStatus'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 附件
|
||||
{
|
||||
@@ -151,6 +153,20 @@ export default {
|
||||
this.loadStandardStructureTree()
|
||||
},
|
||||
methods: {
|
||||
// 获取树结构没有被禁用的value值
|
||||
getValuesWhereNotDisabled (tree = []) {
|
||||
const values = []
|
||||
function traverse (node) {
|
||||
if (!node.disabled) { // 只处理 disabled 不为 true 的节点
|
||||
values.push(node.value)
|
||||
}
|
||||
if (node.children && node.children.length > 0) {
|
||||
node.children.forEach(child => traverse(child))
|
||||
}
|
||||
}
|
||||
tree.forEach(node => traverse(node))
|
||||
return values
|
||||
},
|
||||
getQueryParams () {
|
||||
// 获取查询条件
|
||||
const sqp = {}
|
||||
@@ -162,17 +178,18 @@ export default {
|
||||
param.field = this.getQueryField()
|
||||
param.pageNo = this.ipagination.current
|
||||
param.pageSize = this.ipagination.pageSize
|
||||
if (Array.isArray(param.standardSystem)) {
|
||||
if (Array.isArray(param.standardSystem) && param.standardSystem.length) {
|
||||
param.standardSystem = param.standardSystem.map(item => item.value).join(',')
|
||||
} else {
|
||||
param.standardSystem = this.getValuesWhereNotDisabled(this.standardStructureTree).join(',')
|
||||
}
|
||||
return filterObj(param)
|
||||
},
|
||||
// 加载标准结构树
|
||||
loadStandardStructureTree () {
|
||||
// option 不传显示我的收藏,1不显示我的收藏
|
||||
getForeignStandardTree({ option: 1 }).then(res => {
|
||||
// option 不传显示我的收藏,1不显示我的收藏, 2只能选二级中国及中国下三级,和欧盟EU
|
||||
getForeignStandardTree({ option: 2 }).then(res => {
|
||||
if (res.success) {
|
||||
console.log(res.result)
|
||||
this.standardStructureTree = res.result || []
|
||||
}
|
||||
})
|
||||
|
||||
@@ -132,14 +132,14 @@ export default {
|
||||
title: this.$t('docTool.ocrTextRecognition.textStatus'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'fileTypeDictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
dataIndex: 'fileType_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 转换结果
|
||||
title: this.$t('docTool.ocrTextRecognition.conversionResults'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'resultContentDictText',
|
||||
dataIndex: this.isChinese() ? 'resultContent_dictText' : 'resultContent_dictTextEn',
|
||||
scopedSlots: { customRender: 'tag' }
|
||||
},
|
||||
{ // 消耗时间
|
||||
|
||||
@@ -88,7 +88,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'origin_dictText',
|
||||
title: this.$t('docTool.split.dataType'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 标准号
|
||||
{
|
||||
@@ -106,7 +107,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'standardFileType_dictText',
|
||||
title: this.$t('docTool.comparison.textStatus'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 附件
|
||||
{
|
||||
|
||||
@@ -526,12 +526,6 @@ export default {
|
||||
this.$message.warning(this.$t('selectARecord'))
|
||||
return
|
||||
}
|
||||
console.log(this.selectionRows)
|
||||
if (this.selectionRows.find(item => !item.editFlag)) {
|
||||
// 有没有查看权限的数据
|
||||
this.$message.warning(this.$t('enterpriseStandardLibrary.standard.disabledBatchDel'))
|
||||
return
|
||||
}
|
||||
const ids = this.selectedRowKeys.join(',')
|
||||
this.$confirm({
|
||||
title: this.$t('confirmBatchDeletion'),
|
||||
|
||||
@@ -47,6 +47,18 @@
|
||||
type="primary" ghost @click="viewAll(formItem.dbFieldName)">
|
||||
{{ $t('enterpriseStandardLibrary.standard.viewAll')}}
|
||||
</a-button>
|
||||
<!-- 是需要翻译的也需要双语翻译的,并且不在不需要双语翻译的字段里 -->
|
||||
<span v-else-if="needDictFieldList.includes(formItem.fieldShowType) && needEnNameFieldType.includes(formItem.fieldShowType) && !needEnNameTypeNotUseField.includes(formItem.dbFieldName)">
|
||||
{{
|
||||
detailData[(isChinese() ? formItem.dbFieldName + '_dictText' : formItem.dbFieldName + '_dictTextEn')] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
<!-- 是需要翻译的但不需要双语翻译的,或者在需要双语翻译的类型里,但是不需要双语翻译的字段 -->
|
||||
<span v-else-if="needDictFieldList.includes(formItem.fieldShowType) && (!needEnNameFieldType.includes(formItem.fieldShowType) || needEnNameFieldType.includes(formItem.fieldShowType) && needEnNameTypeNotUseField.includes(formItem.dbFieldName))">
|
||||
{{
|
||||
detailData[formItem.dbFieldName + '_dictText'] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
<span v-else-if="detailData[formItem.dbFieldName + '_dictText']">{{ detailData[formItem.dbFieldName + '_dictText'] }}</span>
|
||||
<!-- 标准适用范围,有标签需要编译 -->
|
||||
<span v-else-if="detailData[formItem.dbFieldName] && formItem.dbFieldName === 'standard_scope'" v-html="detailData[formItem.dbFieldName]"></span>
|
||||
@@ -89,7 +101,7 @@
|
||||
<!-- 稽查内容 -->
|
||||
<div class="detail-page-part">
|
||||
<div class="detail-page-part-title">
|
||||
<span>稽查内容</span>
|
||||
<span>{{ $t('enterpriseStandardLibrary.standard.auditContent') }}</span>
|
||||
</div>
|
||||
<div class="detail-page-part-table">
|
||||
<a-table
|
||||
@@ -190,7 +202,7 @@ export default {
|
||||
dataSource: [], // 稽查内容数据
|
||||
image: false,
|
||||
imageUrl: '',
|
||||
showViewAllField: ['auth_dept'], // 需要显示展示查看全部按钮的字段
|
||||
showViewAllField: ['part_name'], // 需要显示展示查看全部按钮的字段
|
||||
// 标准字段,需要跳转标准详情
|
||||
standardFields: ['substitute_standard_number', 'replaced_by_standard_number', 'reference_standard', 'referenced_standard'],
|
||||
// 参与只允许查看最新稿件排序的字段顺序(发布稿>征求意见稿)
|
||||
@@ -199,7 +211,13 @@ export default {
|
||||
manuScriptNewestFileField: '',
|
||||
filePerm: { // 上传文件根据权限控制只能查看,没有权限的除了系统管理员外不可见不可下载
|
||||
associated_file: 'enterpriseStandard:associatedFile:look' // 关联文件
|
||||
}
|
||||
},
|
||||
// 需要数据字段翻译的属性类型
|
||||
needDictFieldList: [FieldType.USER_SINGLE.value, FieldType.ORGAN_SINGLE.value, FieldType.ORGAN_MORE.value, FieldType.OPTION_SINGLE.value, FieldType.OPTION_MORE.value, FieldType.TREE.value, FieldType.TREE_SINGLE.value],
|
||||
// 需要双语切换翻译的属性类型
|
||||
needEnNameFieldType: [FieldType.OPTION_SINGLE.value, FieldType.OPTION_MORE.value, FieldType.TREE.value, FieldType.TREE_SINGLE.value],
|
||||
// 是双语切换翻译的属性,但是不翻译的字段
|
||||
needEnNameTypeNotUseField: ['standard_system']
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -218,12 +236,8 @@ export default {
|
||||
methods: {
|
||||
fileIsDownload (fieldName) { // 文件是否可下载
|
||||
if (Object.keys(this.filePerm).includes(fieldName)) {
|
||||
// 系统管理员可下载
|
||||
if (this.isSystemAdmin) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
// 需要特殊判断的字段不可下载
|
||||
return false
|
||||
} else {
|
||||
// 不是需要特殊判断的字段正常可下载
|
||||
return true
|
||||
|
||||
@@ -51,6 +51,14 @@
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
</a-table>
|
||||
</div>
|
||||
|
||||
@@ -125,10 +133,10 @@ export default {
|
||||
},
|
||||
{
|
||||
title: this.$t('standardSelect.textState'),
|
||||
dataIndex: 'standardState_dictText',
|
||||
dataIndex: 'esStandardState_dictText',
|
||||
align: 'center',
|
||||
width: 120,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
}
|
||||
],
|
||||
dataList: [],
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<!-- 引用标准可以选国标和外标 -->
|
||||
<add-form ref="addForm"
|
||||
:flag="StandardSource.ENTERPRISE.value"
|
||||
:defaultValue="{year_number: new Date().getFullYear() + '', try_flag: '0'}"
|
||||
:defaultValue="{year_number: new Date().getFullYear() + ''}"
|
||||
:disabledFieldList="disabledFieldList"
|
||||
:selectStandardCanUpdateTypeField="['reference_standard']"
|
||||
:hiddenFieldList="hiddenFieldList"
|
||||
@@ -23,6 +23,7 @@
|
||||
:get-form-func="getFormFunc"
|
||||
:get-document-info-func="getDocumentInfoFunc"
|
||||
:exclude-standard-fields="['substitute_standard_number', 'reference_standard']"
|
||||
:selectStandardValueNeedNameField="['substitute_standard_number', 'reference_standard']"
|
||||
@submitFormData="submitFormData" />
|
||||
<div class="header-text-btn">
|
||||
<!-- 稽查内容 -->
|
||||
@@ -99,7 +100,7 @@ export default {
|
||||
StandardSource,
|
||||
visible: false,
|
||||
title: '',
|
||||
width: 800,
|
||||
width: '50%',
|
||||
// 存储表单的数据
|
||||
form: {},
|
||||
confirmLoading: false,
|
||||
@@ -251,4 +252,8 @@ export default {
|
||||
.check-content-table {
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
|
||||
/deep/ .ant-drawer-content-wrapper {
|
||||
min-width: 800px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -94,20 +94,6 @@ export default {
|
||||
dataIndex: 'releaseDate',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('personalCenter.collection.newCarTypeDate'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'newModelImplementationDate',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('personalCenter.collection.productCarDate'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'onTheProductionDate',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{
|
||||
title: this.$t('personalCenter.collection.standardState'),
|
||||
align: 'center',
|
||||
|
||||
@@ -117,6 +117,17 @@
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
</template>
|
||||
|
||||
<!-- 附件 -->
|
||||
<template v-slot:file="{text, record}">
|
||||
<a v-if="text" class="link-a" @click="handleLookFile(record)">{{ $t('view') }}</a>
|
||||
@@ -133,6 +144,8 @@
|
||||
<nonmatch-item-look-modal ref="nonmatchItemLookModal"/>
|
||||
<!-- 文件查看弹框 -->
|
||||
<upload-file ref="uploadFile" disabled></upload-file>
|
||||
<!-- 条款内容 -->
|
||||
<split-clause-detail ref="splitClauseDetail" />
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
@@ -144,10 +157,11 @@ import NonmatchItemCloseModal from './modules/NonmatchItemCloseModal'
|
||||
import NonmatchItemLookModal from './modules/NonmatchItemLookModal'
|
||||
import { queryDepartTreeList } from '../../../api/api'
|
||||
import UploadFile from '@/components/UploadFile'
|
||||
import SplitClauseDetail from '../../documentTool/documentSplit/modules/SplitClauseDetail'
|
||||
|
||||
export default {
|
||||
name: 'NonmatchItemList',
|
||||
components: { JTable, NonmatchItemCloseModal, NonmatchItemLookModal, UploadFile },
|
||||
components: { JTable, NonmatchItemCloseModal, NonmatchItemLookModal, UploadFile, SplitClauseDetail },
|
||||
mixins: [JeroListMixin],
|
||||
data () {
|
||||
return {
|
||||
@@ -165,7 +179,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 标准编号
|
||||
title: this.$t('standardNumber'),
|
||||
@@ -194,7 +208,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'termContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'item_content' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.nonmatchItem.responsibleDepartment'),
|
||||
@@ -215,14 +229,14 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'problemType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 整改状态
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.nonmatchItem.rectificationState'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'rectifyStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // PCR编号
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.nonmatchItem.pcrNumber'),
|
||||
@@ -320,6 +334,10 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
// 显示条款内容弹框
|
||||
showContent (val) {
|
||||
this.$refs.splitClauseDetail.open(val)
|
||||
},
|
||||
// 批量关闭
|
||||
batchClose () {
|
||||
if (this.selectedRowKeys.length <= 0) {
|
||||
|
||||
+26
-4
@@ -25,10 +25,22 @@
|
||||
<!-- 适用市场 -->
|
||||
<a-col :md="6" :sm="8">
|
||||
<a-form-item :label="$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.applicableMarket')">
|
||||
<j-multi-select-tag
|
||||
:placeholder="$t('pleaseSelect') + $t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.applicableMarket')"
|
||||
<!-- <j-multi-select-tag-->
|
||||
<!-- :placeholder="$t('pleaseSelect') + $t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.applicableMarket')"-->
|
||||
<!-- v-model="queryParam.applicableMarket"-->
|
||||
<!-- dict-code="market_state"></j-multi-select-tag>-->
|
||||
<a-tree-select
|
||||
tree-node-filter-prop="title"
|
||||
v-model="queryParam.applicableMarket"
|
||||
dict-code="market_state"></j-multi-select-tag>
|
||||
:maxTagCount="1"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
:tree-data="countryOptions"
|
||||
:placeholder="$t('pleaseSelect')+$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.applicableMarket')"
|
||||
show-search
|
||||
allowClear
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:filterTreeNode="filterTreeOption"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
@@ -103,6 +115,7 @@
|
||||
import JTable from '@/components/jero/JTable'
|
||||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||
import AssessmentLookModal from './modules/AssessmentLookModal'
|
||||
import { getFormDictTreeList } from '../../../api/api'
|
||||
|
||||
export default {
|
||||
name: 'RegulatoryComplianceAssessmentList',
|
||||
@@ -110,6 +123,7 @@ export default {
|
||||
mixins: [JeroListMixin],
|
||||
data () {
|
||||
return {
|
||||
countryOptions: [], // 国家下拉选择
|
||||
columns: [
|
||||
{ // 标准编号
|
||||
title: this.$t('standardNumber'),
|
||||
@@ -130,7 +144,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applicableMarket_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 评估日期
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.dateOfEvaluation'),
|
||||
@@ -164,6 +178,7 @@ export default {
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.getCountryOption()
|
||||
// 标准主计划跳转进来携带标准+适用市场
|
||||
this.$set(this.queryParam, 'applicableMarket', this.$route.query.applicableMarket)
|
||||
this.$set(this.queryParam, 'standardName', this.$route.query.standardName)
|
||||
@@ -171,6 +186,13 @@ export default {
|
||||
this.loadData()
|
||||
},
|
||||
methods: {
|
||||
getCountryOption () {
|
||||
getFormDictTreeList({ dictId: '1801130851452059649' }).then(res => {
|
||||
if (res.success) {
|
||||
this.countryOptions = res.result
|
||||
}
|
||||
})
|
||||
},
|
||||
toDetail (record) {
|
||||
const path = '/standardRegulationLibrary/foreignStandardDetailPage'
|
||||
this.$openPageNewSheet({
|
||||
|
||||
+45
-6
@@ -6,7 +6,9 @@
|
||||
:closable="true"
|
||||
switchFullscreen
|
||||
:footer="false"
|
||||
:class="isFullScreen ? 'full-screen-modal' : ''"
|
||||
@cancel="handleCancel"
|
||||
@update:fullscreen="updataFullScreen"
|
||||
:visible="visible">
|
||||
|
||||
<div class="table-page-search-wrapper">
|
||||
@@ -80,9 +82,28 @@
|
||||
:dataSource="dataSource"
|
||||
:pagination="ipagination"
|
||||
:loading="loading"
|
||||
:scroll="{x: '100%', y: 'calc(100vh - 500px)'}"
|
||||
:scroll="{x: '100%', y: isFullScreen ? 'calc(100vh - 330px)' : 'calc(100vh - 500px)'}"
|
||||
@change="handleTableChange">
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="text, record">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
</template>
|
||||
|
||||
<template slot="text" slot-scope="text">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
@@ -99,6 +120,8 @@
|
||||
|
||||
<!-- 文件列表查看 -->
|
||||
<upload-file ref="uploadFile" disabled></upload-file>
|
||||
<!-- 条款内容 -->
|
||||
<split-clause-detail ref="splitClauseDetail" />
|
||||
|
||||
</j-modal>
|
||||
</template>
|
||||
@@ -107,10 +130,11 @@
|
||||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||||
import { queryDepartTreeList } from '../../../../api/api'
|
||||
import UploadFile from '@/components/UploadFile'
|
||||
import SplitClauseDetail from '../../../documentTool/documentSplit/modules/SplitClauseDetail'
|
||||
|
||||
export default {
|
||||
name: 'AssessmentLookModal',
|
||||
components: { UploadFile },
|
||||
components: { UploadFile, SplitClauseDetail },
|
||||
mixins: [JeroListMixin],
|
||||
data () {
|
||||
return {
|
||||
@@ -140,7 +164,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'termContent',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'item_content' }
|
||||
},
|
||||
{ // 车型
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.vehicleType'),
|
||||
@@ -154,7 +178,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.responsibleDepartment'),
|
||||
@@ -175,7 +199,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'result_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
title: this.$t('regulatoryComplianceAssessmentDatabase.assessmentLibrary.theStatusNotMeetRequirements'),
|
||||
@@ -239,7 +263,8 @@ export default {
|
||||
},
|
||||
disableMixinCreated: true,
|
||||
image: false,
|
||||
imageUrl: ''
|
||||
imageUrl: '',
|
||||
isFullScreen: false
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
@@ -261,6 +286,14 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
// 全屏切换
|
||||
updataFullScreen (value) {
|
||||
this.isFullScreen = value
|
||||
},
|
||||
// 显示条款内容弹框
|
||||
showContent (val) {
|
||||
this.$refs.splitClauseDetail.open(val)
|
||||
},
|
||||
filterTreeOption (input, option) {
|
||||
const text = option.componentOptions.propsData.title || option.componentOptions.propsData.label
|
||||
return text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||
@@ -294,4 +327,10 @@ export default {
|
||||
/deep/ .ant-form-item-label {
|
||||
min-width: 70px !important;
|
||||
}
|
||||
|
||||
.full-screen-modal {
|
||||
/deep/ .ant-modal-body {
|
||||
height: calc(100% - 55px) !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -106,19 +106,19 @@ export default {
|
||||
form: this.$form.createForm(this),
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 4 }
|
||||
sm: { span: 6 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 18 }
|
||||
sm: { span: 16 }
|
||||
},
|
||||
lineLabelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 2 }
|
||||
sm: { span: 3 }
|
||||
},
|
||||
lineWrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 21 }
|
||||
sm: { span: 20 }
|
||||
},
|
||||
ueContent: '',
|
||||
// UE编辑器配置
|
||||
@@ -369,5 +369,13 @@ export default {
|
||||
box-sizing: border-box;
|
||||
overflow: auto;
|
||||
padding: 32px 0;
|
||||
|
||||
/deep/ .ant-form-item-label {
|
||||
margin-right: 10px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
word-break: break-all;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -121,7 +121,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'dynamicClassification_dictText',
|
||||
title: this.$t('standardRegulationLibrary.dynamicMessage.dynamicCataloging'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 来源
|
||||
{
|
||||
@@ -139,7 +140,8 @@ export default {
|
||||
{
|
||||
dataIndex: 'releaseStatus_dictText',
|
||||
title: this.$t('standardRegulationLibrary.dynamicMessage.releaseStatus'),
|
||||
width: 150
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
// 发布时间
|
||||
{
|
||||
|
||||
@@ -536,6 +536,8 @@ export default {
|
||||
this.ipagination.current -= 1
|
||||
}
|
||||
this.loadData()
|
||||
// 清空列表选中
|
||||
this.onClearSelected()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
@@ -563,6 +565,7 @@ export default {
|
||||
this.searchParams = Object.assign({}, params)
|
||||
this.selectedRowKeys = []
|
||||
this.selectedTreeKeys = []
|
||||
this.selectedTreeNodeCodes = []
|
||||
delete this.filters.nodeCode
|
||||
this.getTableHeader()
|
||||
this.loadData()
|
||||
|
||||
+24
-8
@@ -9,7 +9,7 @@
|
||||
<!-- 过程稿件显示展开收起 -->
|
||||
<div v-if="part === DisplayAreaManagement.PROCESS_DOCUMENTATION.text || part === DisplayAreaManagement.PROCESS_DOCUMENTATION.textEn" class="retractable-btn" @click="handleChangeRetractable(index)">
|
||||
<i class="iconfont " :class="retractableFlag[index] ? 'icon-nav-top' : 'icon-nav-bottom'" />
|
||||
{{ retractableFlag[index] ? '收起' : '展开' }}
|
||||
{{ retractableFlag[index] ? $t('putAway') : $t('open') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="detail-page-part-form" v-if="part !== DisplayAreaManagement.PROCESS_DOCUMENTATION.text && part !== DisplayAreaManagement.PROCESS_DOCUMENTATION.textEn">
|
||||
@@ -54,21 +54,33 @@
|
||||
<span v-else>{{ global.emptyLine }}</span>
|
||||
</div>
|
||||
<!-- 需要显示查看全部按钮 -->
|
||||
<a v-else-if="showViewAllField.includes(formItem.dbFieldName) &&
|
||||
<a-button v-else-if="showViewAllField.includes(formItem.dbFieldName) &&
|
||||
(detailData[formItem.dbFieldName + '_dictText'] || detailData[formItem.dbFieldName])"
|
||||
@click="viewAll(formItem.dbFieldName)">
|
||||
type="primary" ghost @click="viewAll(formItem.dbFieldName)">
|
||||
{{ $t('enterpriseStandardLibrary.standard.viewAll')}}
|
||||
</a>
|
||||
</a-button>
|
||||
<!-- 是需要翻译的也需要双语翻译的,并且不在不需要双语翻译的字段里 -->
|
||||
<span v-else-if="needDictFieldList.includes(formItem.fieldShowType) && needEnNameFieldType.includes(formItem.fieldShowType) && !needEnNameTypeNotUseField.includes(formItem.dbFieldName)">
|
||||
{{
|
||||
detailData[(isChinese() ? formItem.dbFieldName + '_dictText' : formItem.dbFieldName + '_dictTextEn')] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
<!-- 是需要翻译的但不需要双语翻译的,或者在需要双语翻译的类型里,但是不需要双语翻译的字段 -->
|
||||
<span v-else-if="needDictFieldList.includes(formItem.fieldShowType) && (!needEnNameFieldType.includes(formItem.fieldShowType) || needEnNameFieldType.includes(formItem.fieldShowType) && needEnNameTypeNotUseField.includes(formItem.dbFieldName))">
|
||||
{{
|
||||
detailData[formItem.dbFieldName + '_dictText'] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
<span v-else>
|
||||
{{
|
||||
detailData[needDictFieldList.includes(formItem.fieldShowType) ? formItem.dbFieldName + '_dictText' : formItem.dbFieldName] || global.emptyLine
|
||||
detailData[formItem.dbFieldName] || global.emptyLine
|
||||
}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 过程稿件特殊处理-->
|
||||
<div class="detail-page-process-manuscript" v-if="part === DisplayAreaManagement.PROCESS_DOCUMENTATION.text || part === DisplayAreaManagement.PROCESS_DOCUMENTATION.textEn" v-show="retractableFlag[index]">
|
||||
<div class="detail-page-process-manuscript-item" v-for="formItem in form[part]" :key="formItem.id">
|
||||
<div class="detail-page-process-manuscript" v-if="part === DisplayAreaManagement.PROCESS_DOCUMENTATION.text || part === DisplayAreaManagement.PROCESS_DOCUMENTATION.textEn">
|
||||
<div class="detail-page-process-manuscript-item" v-for="formItem in (retractableFlag[index] ? form[part] : [form[part][0]])" :key="formItem.id">
|
||||
<div class="detail-page-process-manuscript-title">
|
||||
<span>{{ formItem.dbFieldTxt }}</span>
|
||||
<!-- 标准解读-->
|
||||
@@ -180,6 +192,10 @@ export default {
|
||||
retractableFlag: {}, // 面板展开收起的标识
|
||||
// 业务基本信息有几个部分
|
||||
formPartList: [],
|
||||
// 需要双语切换翻译的属性类型
|
||||
needEnNameFieldType: [FieldType.OPTION_SINGLE.value, FieldType.OPTION_MORE.value, FieldType.TREE.value, FieldType.TREE_SINGLE.value],
|
||||
// 是双语切换翻译的属性,但是不翻译的字段
|
||||
needEnNameTypeNotUseField: ['standard_system']
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -310,7 +326,7 @@ export default {
|
||||
},
|
||||
// 查看全部
|
||||
viewAll (fieldName) {
|
||||
const data = this.detailData[fieldName + '_dictText'] || this.detailData[fieldName]
|
||||
const data = this.isChinese() ? this.detailData[fieldName + '_dictText'] : this.detailData[fieldName + '_dictTextEn'] || this.detailData[fieldName]
|
||||
this.$refs.textContentModal.open(data)
|
||||
},
|
||||
handlePreview (file, formItem) {
|
||||
|
||||
+2
-1
@@ -22,6 +22,7 @@
|
||||
:open-selected-all-field-list="openSelectedAllFieldList"
|
||||
:exclude-standard-fields="excludeStandardFields"
|
||||
:flag-by-field="{associated_enterprise_standard: StandardSource.ENTERPRISE.value, associated_standard: StandardSource.FOREIGN.value}"
|
||||
:selectStandardValueNeedNameField="['substitute_standard_number', 'reference_standard']"
|
||||
@submitFormData="submitFormData" />
|
||||
</a-spin>
|
||||
</div>
|
||||
@@ -118,7 +119,7 @@ export default {
|
||||
}
|
||||
submitFunc(formInline).then((res) => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.$message.success(this.$t('operationSuccessful'))
|
||||
this.$emit('ok')
|
||||
this.close()
|
||||
} else {
|
||||
|
||||
+10
-2
@@ -48,6 +48,14 @@
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<template slot="text" slot-scope="text">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
@@ -143,7 +151,7 @@ export default {
|
||||
dataIndex: 'standardState_dictText',
|
||||
align: 'center',
|
||||
width: 120,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
}
|
||||
],
|
||||
dataList: [],
|
||||
@@ -219,7 +227,7 @@ export default {
|
||||
*/
|
||||
toDetailPage ({ id }) {
|
||||
this.$openPageNewSheet({
|
||||
path: '/standardRegulationLibrary/ForeignStandardDetail',
|
||||
path: '/standardRegulationLibrary/foreignStandardDetailPage',
|
||||
query: {
|
||||
id
|
||||
}
|
||||
|
||||
+14
-14
@@ -10,7 +10,7 @@
|
||||
<!-- 国家/地区 -->
|
||||
<a-col :span="12">
|
||||
<label>{{ $t('standardRegulationLibrary.marketRegulationsList.countryRegion') }}</label>
|
||||
<span>{{ model.country_dictText || global.emptyLine }}</span>
|
||||
<span>{{ (isChinese() ? model.country_dictText : model.country_dictTextEn) || global.emptyLine }}</span>
|
||||
</a-col>
|
||||
<!-- 清单编号 -->
|
||||
<a-col :span="12">
|
||||
@@ -25,12 +25,12 @@
|
||||
<!-- 驾驶位置 -->
|
||||
<a-col :span="12">
|
||||
<label>{{ $t('standardRegulationLibrary.marketRegulationsList.drivingPosition') }}</label>
|
||||
<span>{{ model.drivePosition_dictText || global.emptyLine }}</span>
|
||||
<span>{{ (isChinese() ? model.drivePosition_dictText : model.drivePosition_dictTextEn) || global.emptyLine }}</span>
|
||||
</a-col>
|
||||
<!-- 密级 -->
|
||||
<a-col :span="12">
|
||||
<label>{{ $t('standardRegulationLibrary.marketRegulationsList.securityClass') }}</label>
|
||||
<span>{{ model.securityLevel_dictText || global.emptyLine }}</span>
|
||||
<span>{{ (isChinese() ? model.securityLevel_dictText : model.securityLevel_dictTextEn) || global.emptyLine }}</span>
|
||||
</a-col>
|
||||
<!-- 清单说明 -->
|
||||
<a-col :span="12">
|
||||
@@ -247,21 +247,21 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'country_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 适用车型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.applicableVehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applicableVehicle_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证对象
|
||||
title: this.$t('standardRegulationLibrary.marketListField.authenticationObject'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'authenticationObject_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证交付物
|
||||
title: this.$t('standardRegulationLibrary.marketListField.certifiedDeliverables'),
|
||||
@@ -275,14 +275,14 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'type_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 动力类型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.dynamicType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'dynamicType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 主控部门
|
||||
title: this.$t('standardRegulationLibrary.marketListField.mainControlDepartment'),
|
||||
@@ -296,7 +296,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'mainDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 关联部门
|
||||
title: this.$t('standardRegulationLibrary.marketListField.relatedDepartment'),
|
||||
@@ -310,31 +310,31 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'associateDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 批量限制
|
||||
title: this.$t('standardRegulationLibrary.marketListField.batchRestriction'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'batchLimit_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 自动驾驶等级
|
||||
title: this.$t('standardRegulationLibrary.marketListField.automaticDrivingLevel'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'autopilotLevel_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 要求类型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.requirementType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'requireType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 备注
|
||||
title: this.$t('remarks'),
|
||||
title: this.$t('standardRegulationLibrary.marketListField.remarks'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'remark',
|
||||
|
||||
+12
-11
@@ -19,6 +19,7 @@
|
||||
:tree-data="countryOptions"
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
@change="countryChange"
|
||||
:placeholder="$t('pleaseSelect')+$t('standardRegulationLibrary.marketRegulationsList.countryRegion')" />
|
||||
</a-form-item>
|
||||
@@ -365,21 +366,21 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'country_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 适用车型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.applicableVehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applicableVehicle_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证对象
|
||||
title: this.$t('standardRegulationLibrary.marketListField.authenticationObject'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'authenticationObject_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证交付物
|
||||
title: this.$t('standardRegulationLibrary.marketListField.certifiedDeliverables'),
|
||||
@@ -393,14 +394,14 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'type_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 动力类型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.dynamicType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'dynamicType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 主控部门
|
||||
title: this.$t('standardRegulationLibrary.marketListField.mainControlDepartment'),
|
||||
@@ -414,7 +415,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'mainDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 关联部门
|
||||
title: this.$t('standardRegulationLibrary.marketListField.relatedDepartment'),
|
||||
@@ -428,31 +429,31 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'associateDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 批量限制
|
||||
title: this.$t('standardRegulationLibrary.marketListField.batchRestriction'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'batchLimit_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 自动驾驶等级
|
||||
title: this.$t('standardRegulationLibrary.marketListField.automaticDrivingLevel'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'autopilotLevel_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 要求类型
|
||||
title: this.$t('standardRegulationLibrary.marketListField.requirementType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'requireType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 备注
|
||||
title: this.$t('remarks'),
|
||||
title: this.$t('standardRegulationLibrary.marketListField.remarks'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'remark',
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
:placeholder="$t('pleaseSelect')+$t('standardRegulationLibrary.marketRegulationsList.countryRegion')"
|
||||
show-search
|
||||
allowClear
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:filterTreeNode="filterTreeOption"
|
||||
/>
|
||||
</a-form-item>
|
||||
@@ -152,7 +153,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'country_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 清单编号
|
||||
title: this.$t('standardRegulationLibrary.marketRegulationsList.listNumber'),
|
||||
@@ -173,7 +174,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'drivePosition_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 清单版本
|
||||
title: this.$t('standardRegulationLibrary.marketRegulationsList.listVersion'),
|
||||
@@ -201,7 +202,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'manifestStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
|
||||
+4
-3
@@ -66,6 +66,7 @@
|
||||
:tree-data="countryOptions"
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="$t('pleaseSelect')+$t('standardRegulationLibrary.marketListField.applicableCountryRegion')" />
|
||||
</a-form-item>
|
||||
<!-- 认证对象 -->
|
||||
@@ -136,8 +137,8 @@
|
||||
v-decorator.trim="[ 'requireType', validatorRules.requireType ]" />
|
||||
</a-form-item>
|
||||
<!-- 备注 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('remarks')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('remarks')"
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardRegulationLibrary.marketListField.remarks')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('standardRegulationLibrary.marketListField.remarks')"
|
||||
:maxLength="50"
|
||||
v-decorator.trim="[ 'remark', validatorRules.remark ]" />
|
||||
</a-form-item>
|
||||
@@ -303,7 +304,7 @@ export default {
|
||||
this.form.setFieldsValue(pick(this.model, 'standardNumber', 'standardName', 'standardEnglishName',
|
||||
'type', 'newProductImplDate', 'newAuthImplDate', 'registrationDate', 'country',
|
||||
'authenticationObject', 'certifyTheDeliverables', 'mainDept', 'mainDeptProfMode', 'associateDept',
|
||||
'associateDeptProfMode', 'applicableVehicle', 'dynamicType', 'batchLimit', 'autopilotLevel', 'requireType'))
|
||||
'associateDeptProfMode', 'applicableVehicle', 'dynamicType', 'batchLimit', 'autopilotLevel', 'requireType', 'remark'))
|
||||
})
|
||||
},
|
||||
getCountryOption () {
|
||||
|
||||
@@ -417,6 +417,10 @@ export default {
|
||||
background-color: #e6f4ff !important;
|
||||
}
|
||||
|
||||
// 日期选择框 右侧重叠的问题
|
||||
/deep/ .ant-calendar-picker-input.ant-input {
|
||||
padding-right: 0;
|
||||
}
|
||||
/deep/ .table-page-search-wrapper .ant-form-inline .ant-form-item > .ant-form-item-label {
|
||||
min-width: 60px;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ export default {
|
||||
data () {
|
||||
return {
|
||||
title: this.$t('newlyAdded'),
|
||||
width: 600,
|
||||
width: 800,
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
modal: {},
|
||||
|
||||
+2
-2
@@ -71,11 +71,11 @@ export default {
|
||||
model: {},
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 4 }
|
||||
sm: { span: 5 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 20 }
|
||||
sm: { span: 18 }
|
||||
},
|
||||
validatorRules: {
|
||||
// 节点名称
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
:tree-data="applicableMarketList"
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="$t('pleaseSelect') + $t('standardRegulationLibrary.standardMasterPlan.applicableMarket')"/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -114,14 +115,14 @@ export default {
|
||||
align: 'center',
|
||||
dataIndex: 'standardState_dictText',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 适用市场
|
||||
title: this.$t('standardRegulationLibrary.standardMasterPlan.applicableMarket'),
|
||||
align: 'center',
|
||||
dataIndex: 'applicableMarket_dictText',
|
||||
width: 100,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
@@ -142,10 +143,17 @@ export default {
|
||||
text: this.$t('view'),
|
||||
clickEvent: 'handleShow',
|
||||
has: 'standardMasterPlan:detail'
|
||||
},
|
||||
// 删除
|
||||
{
|
||||
text: this.$t('delete'),
|
||||
clickEvent: 'handleDelete',
|
||||
has: 'standardMasterPlan:delete'
|
||||
}
|
||||
],
|
||||
url: {
|
||||
list: '/laws/StandardMasterPlan/queryByPage',
|
||||
delete: '/laws/StandardMasterPlan/delete',
|
||||
exportXlsUrl: '/laws/StandardMasterPlan/exportExcel'
|
||||
},
|
||||
// 适用市场下拉
|
||||
|
||||
+52
-12
@@ -34,6 +34,7 @@
|
||||
<s-tree-select v-decorator="['base.applicableMarket', validatorRules.applicableMarket]"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
style="width: 100%"
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
@change="changeApplicableMarket"
|
||||
:tree-data="applicableMarketList"
|
||||
treeCheckStrictly
|
||||
@@ -402,7 +403,7 @@
|
||||
<a-form-item :wrapper-col="{span:22}">
|
||||
<div style="text-align: right">
|
||||
<a-button type="primary" @click="handleViewMarketList"
|
||||
:disabled="!model.marketStandardId">
|
||||
:disabled="!data[5].associationId">
|
||||
{{ $t('standardRegulationLibrary.standardMasterPlan.viewMarketList') }}
|
||||
</a-button>
|
||||
</div>
|
||||
@@ -468,7 +469,7 @@
|
||||
<a-form-item :wrapper-col="{span:22}">
|
||||
<div style="text-align: right">
|
||||
<a-button type="primary" @click="handleViewTroubleshootingResults"
|
||||
:disabled="!model.standardId">
|
||||
:disabled="!data[6].actualCompletionDate">
|
||||
{{ $t('standardRegulationLibrary.standardMasterPlan.viewTroubleshootingResults') }}
|
||||
</a-button>
|
||||
</div>
|
||||
@@ -600,8 +601,9 @@ import StandardResolutionSheetModal
|
||||
from '@views/standardRegulationLibrary/foreignStandard/detail/modules/StandardResolutionSheetModal'
|
||||
import { getFormDictTreeList } from '@api/api'
|
||||
import STreeSelect from '@comp/STreeSelect'
|
||||
import { filterObj } from '@/utils/util'
|
||||
|
||||
// 初始化data数组,默认9个对象中有type,1-9
|
||||
const initDataArr = () => new Array(9).fill(0).map((_, i) => ({ type: i + 1 }))
|
||||
export default {
|
||||
name: 'StandardMasterPlanModal',
|
||||
components: { STreeSelect, StandardResolutionSheetModal, UserSelection, StandardSelection },
|
||||
@@ -615,7 +617,7 @@ export default {
|
||||
disableSubmit: false,
|
||||
model: {},
|
||||
// 默认9个对象,type 1:信息输入 2:文本入库 3:导入通知 4:法规解读 5:法规宣贯 6:市场法规清单更新 7:法规符合性排查 8:通用文件整改计划 9:车型整改
|
||||
data: new Array(9).fill(0).map((_, i) => ({ type: i + 1 })),
|
||||
data: initDataArr(),
|
||||
modelType: '',
|
||||
validatorRules: {
|
||||
// 标准编号
|
||||
@@ -698,29 +700,62 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 回显页面信息
|
||||
// 新增回显页面信息
|
||||
updatePageInfo () {
|
||||
if (this.confirmLoading) {
|
||||
return
|
||||
}
|
||||
const formData = this.form.getFieldsValue()
|
||||
console.log('2适用市场', formData.base.applicableMarket)
|
||||
if (formData.base.applicableMarket && this.model.standardId) {
|
||||
this.confirmLoading = true
|
||||
getStandardMasterPlanAddEcho({
|
||||
applicableMarket: formData.base.applicableMarket,
|
||||
standardId: this.model.standardId
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
const data = res.result || []
|
||||
// 保留可输入字段
|
||||
data.forEach(item => {
|
||||
const canInputField = this.getCanInputField(Number(item.type))
|
||||
const index = Number(item.type) - 1
|
||||
// 删除可填写字段,防止覆盖
|
||||
canInputField.forEach(field => delete item[field])
|
||||
// 回显表单
|
||||
this.form.setFieldsValue({
|
||||
[`data[${index}]`]: Object.assign(formData.data[index], filterObj(item))
|
||||
[`data[${index}]`]: Object.assign(formData.data[index], item)
|
||||
})
|
||||
// 存到页面
|
||||
this.data[index] = Object.assign(this.data[index], filterObj(item))
|
||||
this.data[index] = Object.assign(this.data[index], item)
|
||||
})
|
||||
}
|
||||
}).finally(() => {
|
||||
this.confirmLoading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 根据type获取可输入的字段
|
||||
* @param type - 类型
|
||||
*/
|
||||
getCanInputField (type) {
|
||||
switch (type) {
|
||||
// 导入通知:是否涉及、责任人、计划完成日期
|
||||
case 3:
|
||||
return ['isInvolved', 'responsiblePerson', 'responsiblePerson_dictText', 'plannedCompletionDate']
|
||||
// 导入通知:是否涉及、计划完成日期
|
||||
case 4:
|
||||
return ['isInvolved', 'plannedCompletionDate']
|
||||
// 市场法规清单更新:是否涉及、计划完成日期
|
||||
case 6:
|
||||
return ['isInvolved', 'plannedCompletionDate']
|
||||
// 法规符合性排查:是否涉及、责任人、计划完成日期
|
||||
case 7:
|
||||
return ['isInvolved', 'responsiblePerson', 'responsiblePerson_dictText', 'plannedCompletionDate']
|
||||
default:
|
||||
return []
|
||||
}
|
||||
},
|
||||
// 获取国家地区、也是适用市场下拉
|
||||
getCountryOption () {
|
||||
getFormDictTreeList({ dictId: '1801130851452059649' }).then(res => {
|
||||
@@ -787,7 +822,7 @@ export default {
|
||||
close () {
|
||||
this.form.resetFields()
|
||||
this.model = {}
|
||||
this.data = new Array(9).fill(0).map((_, i) => ({ type: i + 1 }))
|
||||
this.data = initDataArr()
|
||||
this.modelType = ''
|
||||
this.disableSubmit = false
|
||||
this.visible = false
|
||||
@@ -848,7 +883,10 @@ export default {
|
||||
* 适用市场改变
|
||||
*/
|
||||
changeApplicableMarket (value) {
|
||||
this.updatePageInfo()
|
||||
console.log('1适用市场', value)
|
||||
this.$nextTick(() => {
|
||||
this.updatePageInfo()
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 选择用户得到用户名
|
||||
@@ -907,7 +945,7 @@ export default {
|
||||
path: '/standardRegulationLibrary/marketRegulationsList/marketRegulationsDetailPage',
|
||||
query: {
|
||||
title: this.$t('view'),
|
||||
ids: this.model.marketStandardId
|
||||
ids: this.data[5].associationId
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -941,6 +979,8 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
<style lang="less" scoped>
|
||||
/deep/ .ant-select-tree-dropdown {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -132,11 +132,11 @@ export default {
|
||||
title: this.$t('operation'),
|
||||
// dataIndex: 'action',
|
||||
align: 'center',
|
||||
width: 100,
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'action' }
|
||||
}
|
||||
],
|
||||
canOpeFlag: process.env.VUE_APP_TAG_FLAG === '0', // 是否可以操作编辑和删除,开发环境可以
|
||||
canOpeFlag: false, // process.env.VUE_APP_TAG_FLAG === '0', // 是否可以操作编辑和删除,开发环境可以
|
||||
dict: '',
|
||||
labelCol: {
|
||||
xs: { span: 8 },
|
||||
@@ -158,7 +158,8 @@ export default {
|
||||
// 字典配置
|
||||
{
|
||||
text: this.$t('system.tag.dictionaryConfiguration'),
|
||||
clickEvent: 'editDictItem'
|
||||
clickEvent: 'editDictItem',
|
||||
has: 'sys:dict:set'
|
||||
},
|
||||
// 编辑
|
||||
{
|
||||
|
||||
@@ -247,7 +247,8 @@ export default {
|
||||
title: this.$t('status'),
|
||||
align: 'center',
|
||||
width: 80,
|
||||
dataIndex: 'status_dictText'
|
||||
dataIndex: 'status_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
|
||||
{
|
||||
@@ -277,13 +278,13 @@ export default {
|
||||
{
|
||||
text: this.$t('roleManage.userBtn'),
|
||||
clickEvent: 'handleOpen',
|
||||
has: ''
|
||||
has: 'sys:role:user'
|
||||
},
|
||||
// 授权
|
||||
{
|
||||
text: this.$t('roleManage.toGrantAuthorization'),
|
||||
clickEvent: 'handlePerssion',
|
||||
has: ''
|
||||
has: 'sys:role:permission'
|
||||
},
|
||||
// 编辑
|
||||
{
|
||||
@@ -532,6 +533,7 @@ export default {
|
||||
},
|
||||
searchReset2 () {
|
||||
this.queryParam2 = {}
|
||||
this.onClearSelected2()
|
||||
this.loadData2(1)
|
||||
},
|
||||
handleTableChange2 (pagination, filters, sorter) {
|
||||
|
||||
@@ -63,9 +63,9 @@
|
||||
<!--已读、未读状态-->
|
||||
<template v-slot:readFlag="{text, record}">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text}}</template>
|
||||
<template slot="title">{{ isChinese() ? text : record.readFlag_dictTextEn }}</template>
|
||||
<div class="table-text" :class="{'agree-color': record.readFlag + '' === '1', 'reject-color': record.readFlag + '' === '0'}">
|
||||
{{ text }}
|
||||
{{ isChinese() ? text : record.readFlag_dictTextEn }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
@@ -142,7 +142,7 @@ export default {
|
||||
align: 'center',
|
||||
dataIndex: 'msgCategory_dictText',
|
||||
width: 150,
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('message.my.publisher'),
|
||||
|
||||
@@ -172,6 +172,7 @@ import JTable from '@/components/jero/JTable'
|
||||
import JSearchSelectTag from '@/components/dict/JSearchSelectTag'
|
||||
import UploadHandStampModal from './modules/UploadHandStampModal'
|
||||
import { isHasPermission } from '../../utils/hasPermission'
|
||||
import { UserSource } from '../../enums/commonEnums'
|
||||
|
||||
export default {
|
||||
name: 'UserList',
|
||||
@@ -238,7 +239,8 @@ export default {
|
||||
align: 'center',
|
||||
width: 90,
|
||||
dataIndex: 'sex_dictText',
|
||||
sorter: true
|
||||
sorter: true,
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('phoneNumber'),
|
||||
@@ -274,7 +276,8 @@ export default {
|
||||
title: this.$t('status'),
|
||||
align: 'center',
|
||||
width: 80,
|
||||
dataIndex: 'status_dictText'
|
||||
dataIndex: 'status_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
@@ -302,28 +305,37 @@ export default {
|
||||
{
|
||||
text: this.$t('edit'),
|
||||
clickEvent: 'handleEdit',
|
||||
has: 'user:edit'
|
||||
has: 'user:edit',
|
||||
show: (record) => {
|
||||
// IAM同步过来的不能编辑
|
||||
return record.source !== UserSource.IAM.value
|
||||
}
|
||||
},
|
||||
// 详情
|
||||
{
|
||||
text: this.$t('details'),
|
||||
clickEvent: 'handleDetail',
|
||||
has: ''
|
||||
has: 'user:detail'
|
||||
},
|
||||
// 密码
|
||||
{
|
||||
text: this.$t('user.password'),
|
||||
clickEvent: 'handleChangePassword',
|
||||
has: '',
|
||||
has: 'user:password',
|
||||
show: (record) => {
|
||||
return this.isDev
|
||||
// IAM同步过来的不能编辑
|
||||
return record.source !== UserSource.IAM.value
|
||||
}
|
||||
},
|
||||
// 删除
|
||||
{
|
||||
text: this.$t('delete'),
|
||||
clickEvent: 'handleDelete',
|
||||
has: 'sys:user:sel'
|
||||
has: 'sys:user:sel',
|
||||
show: (record) => {
|
||||
// IAM同步过来的不能删除
|
||||
return record.source !== UserSource.IAM.value
|
||||
}
|
||||
},
|
||||
// 冻结
|
||||
{
|
||||
@@ -331,7 +343,8 @@ export default {
|
||||
clickEvent: 'handleFrozen',
|
||||
has: 'user:edit',
|
||||
show: (record) => {
|
||||
return this.isDev && (record.status + '') === '1'
|
||||
// IAM同步过来的不能编辑
|
||||
return (record.status + '') === '1' && record.source !== UserSource.IAM.value
|
||||
}
|
||||
},
|
||||
// 解冻
|
||||
@@ -340,15 +353,16 @@ export default {
|
||||
clickEvent: 'handleFrozen',
|
||||
has: 'user:edit',
|
||||
show: (record) => {
|
||||
return this.isDev && (record.status + '') === '2'
|
||||
// IAM同步过来的不能编辑
|
||||
return (record.status + '') === '2' && record.source !== UserSource.IAM.value
|
||||
}
|
||||
},
|
||||
// 上传手写章
|
||||
{
|
||||
text: this.$t('user.uploadHandStamp'),
|
||||
clickEvent: 'handleUploadHandStamp',
|
||||
has: 'user:uploadHandStamp'
|
||||
}
|
||||
// 上传手写章
|
||||
// {
|
||||
// text: this.$t('user.uploadHandStamp'),
|
||||
// clickEvent: 'handleUploadHandStamp',
|
||||
// has: 'user:uploadHandStamp'
|
||||
// }
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -442,10 +456,10 @@ export default {
|
||||
})
|
||||
},
|
||||
handleChangePassword (username) {
|
||||
if (process.env.VUE_APP_CURRENT_SYSTEM === 'IAM') {
|
||||
this.$message.warn('请前往IAM修改密码')
|
||||
return
|
||||
}
|
||||
// if (process.env.VUE_APP_CURRENT_SYSTEM === 'IAM') {
|
||||
// this.$message.warn('请前往IAM修改密码')
|
||||
// return
|
||||
// }
|
||||
this.$refs.passwordmodal.show(username)
|
||||
},
|
||||
passwordModalOk () {
|
||||
|
||||
@@ -52,6 +52,14 @@
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template slot="link" slot-scope="{text}">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || global.emptyLine }}</template>
|
||||
<div class="table-text can-click-table-text" v-if="text" @click="toLink(text)">{{ text }}</div>
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<template v-slot:action="{text, record}">
|
||||
<a @click="handleEdit(record)" v-has="'sys:friendshipLink:edit'">{{ $t('edit') }}</a>
|
||||
<a-divider type="vertical" v-if="isHasPermission('sys:friendshipLink:edit') && isHasPermission('sys:friendshipLink:delete')" />
|
||||
@@ -81,6 +89,11 @@ export default {
|
||||
mixins: [JeroListMixin],
|
||||
data () {
|
||||
return {
|
||||
/* 排序参数 */
|
||||
isorter: {
|
||||
column: 'sort',
|
||||
order: 'asc'
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('serialNumber'),
|
||||
@@ -135,7 +148,10 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
isHasPermission
|
||||
isHasPermission,
|
||||
toLink (href) {
|
||||
window.open(href)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -43,6 +43,14 @@
|
||||
:loading="loading"
|
||||
@change="handleTableChange">
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- 字符串超长截取省略号显示-->
|
||||
<span slot="logContent" slot-scope="text">
|
||||
<j-ellipsis :value="text" :length="40"/>
|
||||
@@ -112,7 +120,8 @@ export default {
|
||||
{
|
||||
title: this.$t('log.logType'),
|
||||
dataIndex: 'logType_dictText',
|
||||
align: 'center'
|
||||
align: 'center',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('createTime'),
|
||||
|
||||
@@ -48,6 +48,14 @@
|
||||
:loading="loading"
|
||||
@change="handleTableChange">
|
||||
|
||||
<!--增加数据字典双语翻译的插槽-->
|
||||
<template slot="dictText" slot-scope="text, record, index, column">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</template>
|
||||
<div class="table-text">{{ (isChinese() ? text : record[column.key + 'En']) || (isChinese() ? text : record[column.key + 'En']) === 0 ? (isChinese() ? text : record[column.key + 'En']) : global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<div slot="expandedRowRender" slot-scope="record" style="margin: 0">
|
||||
<div style="margin-bottom: 5px"><a-badge status="success" style="vertical-align: middle;"/><span style="vertical-align: middle;">{{ $t('log.requestMethod') }}:{{ record.method }}</span></div>
|
||||
<div><a-badge status="processing" style="vertical-align: middle;"/><span style="vertical-align: middle;">{{ $t('log.requestParam') }}:{{ record.requestParam }}</span></div>
|
||||
@@ -127,7 +135,8 @@ export default {
|
||||
{
|
||||
title: this.$t('log.logType'),
|
||||
dataIndex: 'logType_dictText',
|
||||
align: 'center'
|
||||
align: 'center',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('createTime'),
|
||||
|
||||
@@ -100,7 +100,8 @@ export default {
|
||||
title: this.$t('user.gender'),
|
||||
align: 'center',
|
||||
width: 100,
|
||||
dataIndex: 'sex_dictText'
|
||||
dataIndex: 'sex_dictText',
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('phoneNumber'),
|
||||
|
||||
@@ -65,12 +65,24 @@
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
v-show="!roleDisabled">
|
||||
<j-multi-select-tag
|
||||
<!--<j-multi-select-tag-->
|
||||
<!-- :disabled="disableSubmit"-->
|
||||
<!-- v-model="model.selectedroles"-->
|
||||
<!-- :options="rolesOptions"-->
|
||||
<!-- :placeholder="$t('pleaseSelect') + $t('role')">-->
|
||||
<!--</j-multi-select-tag>-->
|
||||
<a-select
|
||||
:placeholder="$t('pleaseSelect') + $t('role')"
|
||||
:disabled="disableSubmit"
|
||||
v-model="model.selectedroles"
|
||||
:options="rolesOptions"
|
||||
:placeholder="$t('pleaseSelect') + $t('role')">
|
||||
</j-multi-select-tag>
|
||||
mode="tags"
|
||||
:filter-option="filterOption"
|
||||
>
|
||||
<a-select-option v-for="item in rolesOptions" :key="item.value" :value="item.label">
|
||||
{{ item.label }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-model-item>
|
||||
|
||||
<!--部门分配-->
|
||||
@@ -99,23 +111,23 @@
|
||||
</a-form-model-item>
|
||||
-->
|
||||
|
||||
<a-form-model-item :label="$t('user.identity')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-radio-group v-model="model.userIdentity" @change="identityChange" :disabled="disableSubmit">
|
||||
<a-radio :value="1">{{ $t('user.ordinaryUsers') }}</a-radio>
|
||||
<a-radio :value="2">{{ $t('user.superior') }}</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item :label="$t('user.responsibleDepartment')"
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
v-if="departIdShow===true">
|
||||
<j-multi-select-tag
|
||||
:disabled="disableSubmit"
|
||||
v-model="model.departIds"
|
||||
:options="nextDepartOptions"
|
||||
:placeholder="$t('pleaseSelect') + $t('user.responsibleDepartment')">
|
||||
</j-multi-select-tag>
|
||||
</a-form-model-item>
|
||||
<!-- <a-form-model-item :label="$t('user.identity')" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||
<!-- <a-radio-group v-model="model.userIdentity" @change="identityChange" :disabled="disableSubmit">-->
|
||||
<!-- <a-radio :value="1">{{ $t('user.ordinaryUsers') }}</a-radio>-->
|
||||
<!-- <a-radio :value="2">{{ $t('user.superior') }}</a-radio>-->
|
||||
<!-- </a-radio-group>-->
|
||||
<!-- </a-form-model-item>-->
|
||||
<!-- <a-form-model-item :label="$t('user.responsibleDepartment')"-->
|
||||
<!-- :labelCol="labelCol"-->
|
||||
<!-- :wrapperCol="wrapperCol"-->
|
||||
<!-- v-if="departIdShow===true">-->
|
||||
<!-- <j-multi-select-tag-->
|
||||
<!-- :disabled="disableSubmit"-->
|
||||
<!-- v-model="model.departIds"-->
|
||||
<!-- :options="nextDepartOptions"-->
|
||||
<!-- :placeholder="$t('pleaseSelect') + $t('user.responsibleDepartment')">-->
|
||||
<!-- </j-multi-select-tag>-->
|
||||
<!-- </a-form-model-item>-->
|
||||
<!-- update--end--autor:wangshuai-----date:20200108------for:新增身份和负责部门------ -->
|
||||
<!--手写章,用于企标制修订流程最后一个节点在线编辑的手写章信息维护-->
|
||||
<!--<a-form-model-item :label="$t('user.handStamp')" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||
@@ -128,13 +140,21 @@
|
||||
<!--</a-form-model-item>-->
|
||||
|
||||
<a-form-model-item :label="$t('user.gender')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-select v-model="model.sex"
|
||||
:placeholder="disableSubmit ? '' : $t('pleaseSelect') + $t('user.gender')"
|
||||
:getPopupContainer="(target) => target.parentNode"
|
||||
:disabled="disableSubmit">
|
||||
<a-select-option :value="1">{{ $t('user.male') }}</a-select-option>
|
||||
<a-select-option :value="2">{{ $t('user.female') }}</a-select-option>
|
||||
</a-select>
|
||||
<j-dict-select-tag
|
||||
:placeholder="disableSubmit ? '' : $t('pleaseSelect') + $t('user.gender')"
|
||||
:getPopupContainer="(target) => target.parentNode"
|
||||
:disabled="disableSubmit"
|
||||
v-model="model.sex"
|
||||
dict-code="sex"
|
||||
>
|
||||
</j-dict-select-tag>
|
||||
<!--<a-select v-model="model.sex"-->
|
||||
<!-- :placeholder="disableSubmit ? '' : $t('pleaseSelect') + $t('user.gender')"-->
|
||||
<!-- :getPopupContainer="(target) => target.parentNode"-->
|
||||
<!-- :disabled="disableSubmit">-->
|
||||
<!-- <a-select-option :value="1">{{ $t('user.male') }}</a-select-option>-->
|
||||
<!-- <a-select-option :value="2">{{ $t('user.female') }}</a-select-option>-->
|
||||
<!--</a-select>-->
|
||||
</a-form-model-item>
|
||||
|
||||
<a-form-model-item :label="$t('user.mailbox')" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="email">
|
||||
@@ -270,6 +290,9 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
filterOption (input, option) {
|
||||
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||
},
|
||||
add () {
|
||||
this.refresh()
|
||||
this.validatorRules.phone = [{ validator: this.validatePhone }]
|
||||
@@ -283,7 +306,7 @@ export default {
|
||||
// 根据屏幕宽度自适应抽屉宽度
|
||||
this.resetScreenSize()
|
||||
that.model = Object.assign({}, {
|
||||
selectedroles: '',
|
||||
selectedroles: undefined,
|
||||
selecteddeparts: ''
|
||||
}, record)
|
||||
// 身份为上级显示负责部门,否则不显示
|
||||
@@ -344,7 +367,7 @@ export default {
|
||||
getUserRoles (userid) {
|
||||
queryUserRole({ userid: userid }).then((res) => {
|
||||
if (res.success) {
|
||||
this.model.selectedroles = res.result.join(',')
|
||||
this.model.selectedroles = res.result
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -407,7 +430,9 @@ export default {
|
||||
if (this.model.userIdentity !== 2) {
|
||||
this.model.departIds = ''
|
||||
}
|
||||
|
||||
if (Array.isArray(this.model.selectedroles)) {
|
||||
this.model.selectedroles = this.model.selectedroles.join(',')
|
||||
}
|
||||
// 对密码、邮箱、手机号进行加密
|
||||
const encrypt = new JSEncrypt()
|
||||
encrypt.setPublicKey(that.rsaPublicKey)
|
||||
|
||||
@@ -136,6 +136,10 @@ export default {
|
||||
permissionIds: that.checkedKeys.join(','),
|
||||
lastpermissionIds: that.defaultCheckedKeys.join(',')
|
||||
}
|
||||
// 只勾选父节点确定后,再次打开点击父子关联时,节点只是回显,没有被真实勾上,这里需要拿到所有子集的id
|
||||
if (!that.checkStrictly) {
|
||||
params.permissionIds = that.collectAllRelatedKeys(this.treeData, [...that.checkedKeys]).join(',')
|
||||
}
|
||||
that.loading = true
|
||||
console.log('请求参数:', params)
|
||||
saveRolePermission(params).then((res) => {
|
||||
@@ -166,6 +170,36 @@ export default {
|
||||
console.log(this.defaultCheckedKeys)
|
||||
})
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 返回父子关联的keys
|
||||
* @param tree - 树结构
|
||||
* @param keys - 当前勾选的keys
|
||||
* @return {any[]} - 返回所有父子关联的key
|
||||
*/
|
||||
collectAllRelatedKeys (tree, keys) {
|
||||
const result = new Set() // 使用集合来避免重复
|
||||
function findAndCollectNodes (nodes) {
|
||||
for (const node of nodes) {
|
||||
if (keys.includes(node.key)) {
|
||||
collectAllDescendants(node)
|
||||
} else if (node.children) {
|
||||
findAndCollectNodes(node.children)
|
||||
}
|
||||
}
|
||||
}
|
||||
function collectAllDescendants (node) {
|
||||
if (!result.has(node.key)) {
|
||||
result.add(node.key)
|
||||
}
|
||||
if (node.children) {
|
||||
for (const child of node.children) {
|
||||
collectAllDescendants(child)
|
||||
}
|
||||
}
|
||||
}
|
||||
findAndCollectNodes(tree)
|
||||
return Array.from(result)
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
|
||||
@@ -72,7 +72,7 @@ const editIcons = ['edit', 'form', 'copy', 'scissor', 'delete', 'snippets', 'dif
|
||||
const dataIcons = ['area-chart', 'pie-chart', 'bar-chart', 'dot-chart', 'line-chart', 'radar-chart', 'heat-map', 'fall', 'rise', 'stock', 'box-plot', 'fund', 'sliders']
|
||||
const webIcons = ['lock', 'unlock', 'bars', 'book', 'calendar', 'cloud', 'cloud-download', 'code', 'copy', 'credit-card', 'delete', 'desktop', 'download', 'ellipsis', 'file', 'file-text', 'file-unknown', 'file-pdf', 'file-word', 'file-excel', 'file-jpg', 'file-ppt', 'file-markdown', 'file-add', 'folder', 'folder-open', 'folder-add', 'hdd', 'frown', 'meh', 'smile', 'inbox', 'laptop', 'appstore', 'link', 'mail', 'mobile', 'notification', 'paper-clip', 'picture', 'poweroff', 'reload', 'search', 'setting', 'share-alt', 'shopping-cart', 'tablet', 'tag', 'tags', 'to-top', 'upload', 'user', 'video-camera', 'home', 'loading', 'loading-3-quarters', 'cloud-upload', 'star', 'heart', 'environment', 'eye', 'camera', 'save', 'team', 'solution', 'phone', 'filter', 'exception', 'export', 'customer-service', 'qrcode', 'scan', 'like', 'dislike', 'message', 'pay-circle', 'calculator', 'pushpin', 'bulb', 'select', 'switcher', 'rocket', 'bell', 'disconnect', 'database', 'compass', 'barcode', 'hourglass', 'key', 'flag', 'layout', 'printer', 'sound', 'usb', 'skin', 'tool', 'sync', 'wifi', 'car', 'schedule', 'user-add', 'user-delete', 'usergroup-add', 'usergroup-delete', 'man', 'woman', 'shop', 'gift', 'idcard', 'medicine-box', 'red-envelope', 'coffee', 'copyright', 'trademark', 'safety', 'wallet', 'bank', 'trophy', 'contacts', 'global', 'shake', 'api', 'fork', 'dashboard', 'table', 'profile', 'alert', 'audit', 'branches', 'build', 'border', 'crown', 'experiment', 'fire', 'money-collect', 'property-safety', 'read', 'reconciliation', 'rest', 'security-scan', 'insurance', 'interation', 'safety-certificate', 'project', 'thunderbolt', 'block', 'cluster', 'deployment-unit', 'dollar', 'euro', 'pound', 'file-done', 'file-exclamation', 'file-protect', 'file-search', 'file-sync', 'gateway', 'gold', 'robot', 'shopping']
|
||||
const logoIcons = ['android', 'apple', 'windows', 'ie', 'chrome', 'github', 'aliwangwang', 'dingding', 'weibo-square', 'weibo-circle', 'taobao-circle', 'html5', 'weibo', 'twitter', 'wechat', 'youtube', 'alipay-circle', 'taobao', 'skype', 'qq', 'medium-workmark', 'gitlab', 'medium', 'linkedin', 'google-plus', 'dropbox', 'facebook', 'codepen', 'amazon', 'google', 'codepen-circle', 'alipay', 'ant-design', 'aliyun', 'zhihu', 'slack', 'slack-square', 'behance', 'behance-square', 'dribbble', 'dribbble-square', 'instagram', 'yuque', 'alibaba', 'yahoo']
|
||||
const selfIcons = ['icon-kucun_crm', 'icon-24gf-folderOpen', 'icon-qicheweixiu', 'icon-yujing', 'icon-shezhi', 'icon-shouye', 'icon-file-star', 'icon-file-set', 'icon-a-iconfontgerenzhongxin1', 'icon-yingyong', 'icon-fill-message-square']
|
||||
const selfIcons = ['icon-kucun_crm', 'icon-24gf-folderOpen', 'icon-qicheweixiu', 'icon-yujing', 'icon-shezhi', 'icon-shouye', 'icon-file-star', 'icon-file-set', 'icon-a-iconfontgerenzhongxin1', 'icon-yingyong', 'icon-fill-message-square', 'icon-xiaoxi-mian--', 'icon-yun', 'icon-rizhi']
|
||||
export default {
|
||||
name: 'Icons',
|
||||
props: {
|
||||
|
||||
@@ -100,10 +100,10 @@
|
||||
</a-form-model-item>
|
||||
|
||||
<!--是否必填-->
|
||||
<!--<a-form-model-item :label="$t('system.tag.required')" prop="fieldMustInput">-->
|
||||
<!-- <j-dict-select-tag type="list" v-model="form.fieldMustInput" dictCode="yn"-->
|
||||
<!-- :placeholder="$t('pleaseSelect') + $t('system.tag.required')" />-->
|
||||
<!--</a-form-model-item>-->
|
||||
<a-form-model-item :label="$t('system.tag.required')" prop="fieldMustInput">
|
||||
<j-dict-select-tag type="list" v-model="form.fieldMustInput" dictCode="yn"
|
||||
:placeholder="$t('pleaseSelect') + $t('system.tag.required')" />
|
||||
</a-form-model-item>
|
||||
<!--使用范围-->
|
||||
<!--<a-form-model-item :label="$t('system.tag.usableRange')" prop="usableRange">-->
|
||||
<!-- <j-multi-select-tag v-model="form.usableRange"-->
|
||||
|
||||
@@ -53,24 +53,25 @@
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<!-- 字段名称 正式环境 需要注释掉,开发环境可以先留着,方便使用-->
|
||||
<a-col :span="24" v-if="canOpeFlag">
|
||||
<a-form-model-item :label="$t('system.tag.fieldName')" prop="dbFieldName">
|
||||
<a-input
|
||||
v-model.trim="form.dbFieldName"
|
||||
:placeholder="$t('pleaseEnter') + $t('system.tag.fieldName')"
|
||||
:maxLength="60"
|
||||
></a-input>
|
||||
</a-form-model-item>
|
||||
</a-col>
|
||||
<!-- <a-col :span="24" v-if="canOpeFlag">-->
|
||||
<!-- <a-form-model-item :label="$t('system.tag.fieldName')" prop="dbFieldName">-->
|
||||
<!-- <a-input-->
|
||||
<!-- v-model.trim="form.dbFieldName"-->
|
||||
<!-- :placeholder="$t('pleaseEnter') + $t('system.tag.fieldName')"-->
|
||||
<!-- :maxLength="60"-->
|
||||
<!-- ></a-input>-->
|
||||
<!-- </a-form-model-item>-->
|
||||
<!-- </a-col>-->
|
||||
<!-- 属性类型-->
|
||||
<a-col :span="24">
|
||||
<a-form-model-item :label="$t('system.tag.attributeType')" prop="fieldShowType">
|
||||
<j-dict-select-tag
|
||||
type="list" v-model="form.fieldShowType"
|
||||
dictCode="field_show_type"
|
||||
type="list"
|
||||
v-model="form.fieldShowType"
|
||||
:placeholder="$t('pleaseSelect') + $t('system.tag.attributeType')"
|
||||
:disabled="disabledEdit"
|
||||
show-search
|
||||
:options="fieldShowTypeOptions"
|
||||
@change="fieldShowTypeChange"
|
||||
/>
|
||||
<!-- @change="form.dictId = undefined"-->
|
||||
@@ -196,7 +197,7 @@
|
||||
|
||||
<script>
|
||||
|
||||
import { addTag, editTag, getShowAreaData, queryDictName } from '../../../../api/api'
|
||||
import { addTag, ajaxGetDictItems, editTag, getDictByCode, getShowAreaData, queryDictName } from '../../../../api/api'
|
||||
import JDictSelectTag from '../../../../components/dict/JDictSelectTag'
|
||||
import { FieldType, TagsAttributeTypeEnums, TagsTypeEnums } from '../../../../enums/commonEnums'
|
||||
|
||||
@@ -257,7 +258,7 @@ export default {
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('pleaseEnter') + this.$t('system.tag.attributeNameEnglish'),
|
||||
trigger: 'change'
|
||||
trigger: 'blur'
|
||||
},
|
||||
// { max: 50, message: this.$t('cantExeed') + '50' + this.$t('characters'), trigger: 'blur' },
|
||||
{ validator: this.test }
|
||||
@@ -326,7 +327,8 @@ export default {
|
||||
contentOption: [],
|
||||
contentOptionSelect: [],
|
||||
contentOptionTree: [],
|
||||
moduleArr: TagsTypeEnums.getItemList()
|
||||
moduleArr: TagsTypeEnums.getItemList(),
|
||||
fieldShowTypeOptions: [] // 属性类型下拉数据
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -334,7 +336,17 @@ export default {
|
||||
this.initFlags(val)
|
||||
}
|
||||
},
|
||||
created () {
|
||||
this.getFieldShowTypeOptions()
|
||||
},
|
||||
methods: {
|
||||
getFieldShowTypeOptions () {
|
||||
ajaxGetDictItems('field_show_type').then(res => {
|
||||
if (res.success) {
|
||||
this.fieldShowTypeOptions = res.result.filter(item => ![FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value, FieldType.TREE_MODAL_SELECT_SEARCH_CHILD.value].includes(item.value))
|
||||
}
|
||||
})
|
||||
},
|
||||
filterOption (input, option) {
|
||||
return (
|
||||
option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||
@@ -391,6 +403,10 @@ export default {
|
||||
if (formData.fieldShowType === FieldType.TEXTAREA.value) {
|
||||
formData.dbLength = formData.dbLength || 500
|
||||
}
|
||||
// 树形弹框设置treeFirstHref为固定的
|
||||
if (formData.fieldShowType === FieldType.TREE_MODAL_SELECT.value) {
|
||||
formData.treeFirstHref = '/laws/dictTree/page'
|
||||
}
|
||||
let Func = addTag
|
||||
if (this.isEdit) {
|
||||
Func = editTag
|
||||
@@ -445,7 +461,7 @@ export default {
|
||||
val = val + ''
|
||||
// this.contentFlag=val
|
||||
// 树形结构
|
||||
if (val === FieldType.TREE.value || val === FieldType.TREE_SINGLE.value || val === FieldType.TREE_MODAL_SELECT.value) {
|
||||
if (val === FieldType.TREE.value || val === FieldType.TREE_SINGLE.value || val === FieldType.TREE_MODAL_SELECT.value || val === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value) {
|
||||
this.contentOption = [...this.contentOptionTree]
|
||||
this.isTagContent = true
|
||||
} else if (val === FieldType.OPTION_SINGLE.value || val === FieldType.OPTION_MORE.value) {
|
||||
@@ -491,7 +507,7 @@ export default {
|
||||
}
|
||||
})
|
||||
// 树形结构
|
||||
if (this.form.fieldShowType === FieldType.TREE.value || this.form.fieldShowType === FieldType.TREE_SINGLE.value || this.form.fieldShowType === FieldType.TREE_MODAL_SELECT.value) {
|
||||
if (this.form.fieldShowType === FieldType.TREE.value || this.form.fieldShowType === FieldType.TREE_SINGLE.value || this.form.fieldShowType === FieldType.TREE_MODAL_SELECT.value || this.form.fieldShowType === FieldType.TREE_MODAL_SELECT_SEARCH_DIFF.value) {
|
||||
this.contentOption = [...this.contentOptionTree]
|
||||
this.isTagContent = true
|
||||
} else if (this.form.fieldShowType === FieldType.OPTION_SINGLE.value || this.form.fieldShowType === FieldType.OPTION_MORE.value) {
|
||||
|
||||
@@ -233,7 +233,7 @@ export default {
|
||||
dictId: this.dictId,
|
||||
isTagDict: 1,
|
||||
pageNo: 1,
|
||||
pageSize: 10
|
||||
pageSize: 1000
|
||||
}
|
||||
getDictTreeList(params).then(res => {
|
||||
if (res.success) {
|
||||
|
||||
@@ -30,10 +30,10 @@
|
||||
</div>
|
||||
<div class="table-operator">
|
||||
<!--新增-->
|
||||
<!-- <a-button icon="plus" type="primary" v-if="record.isReadOnly === IsReadOnlyEnums.configurable.value || record.isReadOnly === IsReadOnlyEnums.subConfigurable.value" @click="handleAdd" v-has="'sys:dict:operation'">{{ $t('newlyAdded') }}</a-button>-->
|
||||
<a-button icon="plus" type="primary" @click="handleAdd" v-has="'sys:dict:operation'">{{ $t('newlyAdded') }}</a-button>
|
||||
<!-- <a-button icon="plus" type="primary" v-if="dictRecord.isReadOnly === IsReadOnlyEnums.configurable.value || dictRecord.isReadOnly === IsReadOnlyEnums.subConfigurable.value" @click="handleAdd" v-has="'sys:dict:operation'">{{ $t('newlyAdded') }}</a-button>-->
|
||||
<a-button icon="plus" type="primary" @click="handleAdd" v-if="dictRecord.isReadOnly === IsReadOnlyEnums.configurable.value || dictRecord.isReadOnly === IsReadOnlyEnums.subConfigurable.value" v-has="'sys:dict:operation'">{{ $t('newlyAdded') }}</a-button>
|
||||
<!--批量删除-->
|
||||
<a-button type="primary" icon="delete" ghost v-if="record.isReadOnly === IsReadOnlyEnums.configurable.value || record.isReadOnly === IsReadOnlyEnums.subConfigurable.value" @click="batchDel" v-has="'sys:dict:operation'">{{ $t('batchDelete') }}</a-button>
|
||||
<a-button type="primary" icon="delete" ghost v-if="dictRecord.isReadOnly === IsReadOnlyEnums.configurable.value || dictRecord.isReadOnly === IsReadOnlyEnums.subConfigurable.value" @click="batchDel" v-has="'sys:dict:operation'">{{ $t('batchDelete') }}</a-button>
|
||||
</div>
|
||||
|
||||
<j-table
|
||||
@@ -84,7 +84,7 @@ export default {
|
||||
title: this.$t('system.tag.dictionaryConfiguration'),
|
||||
width: 1000,
|
||||
confirmLoading: false,
|
||||
record: {},
|
||||
dictRecord: {}, // 数据字典的值
|
||||
commonColumns: [
|
||||
{
|
||||
// 英文名称
|
||||
@@ -175,8 +175,8 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
show (record) {
|
||||
this.record = record
|
||||
this.attributeType = Number(this.record.attributeType) // 标签类型,用于辨别是下拉框还是树形结构
|
||||
this.dictRecord = record
|
||||
this.attributeType = Number(this.dictRecord.attributeType) // 标签类型,用于辨别是下拉框还是树形结构
|
||||
// 不同的标签类型 调用不同的接口
|
||||
if (this.attributeType === TagsAttributeTypeEnums.SELECT.value) {
|
||||
this.url = { ...this.dictUrl }
|
||||
@@ -202,7 +202,7 @@ export default {
|
||||
this.onClose()
|
||||
},
|
||||
handleAdd () {
|
||||
this.$refs.modalForm.add(this.record.id)
|
||||
this.$refs.modalForm.add(this.dictRecord.id)
|
||||
this.$refs.modalForm.title = this.$t('newlyAdded')
|
||||
this.$refs.modalForm.disableSubmit = false
|
||||
},
|
||||
|
||||
@@ -103,7 +103,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 100,
|
||||
dataIndex: 'fieldShowType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('system.tag.fieldLength'),
|
||||
@@ -127,7 +127,7 @@ export default {
|
||||
width: 170
|
||||
}
|
||||
],
|
||||
canOpeFlag: process.env.VUE_APP_TAG_FLAG === '0', // 是否可以操作编辑和删除,开发环境可以
|
||||
canOpeFlag: true, // process.env.VUE_APP_TAG_FLAG === '0', // 是否可以操作编辑和删除,开发环境可以
|
||||
operationList: [
|
||||
// 编辑
|
||||
{
|
||||
|
||||
@@ -136,7 +136,7 @@ export default {
|
||||
title: this.$t('system.tag.attributeType'),
|
||||
width: 100,
|
||||
dataIndex: 'fieldShowType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('system.tag.fieldLength'),
|
||||
@@ -154,7 +154,7 @@ export default {
|
||||
title: this.$t('system.tag.showArea'),
|
||||
width: 100,
|
||||
dataIndex: 'showArea_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
|
||||
@@ -96,7 +96,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 100,
|
||||
dataIndex: 'attributeType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('system.tag.describe'),
|
||||
@@ -120,7 +120,7 @@ export default {
|
||||
width: 100
|
||||
}
|
||||
],
|
||||
canOpeFlag: process.env.VUE_APP_TAG_FLAG === '0', // 是否可以操作编辑和删除,开发环境可以
|
||||
// canOpeFlag: process.env.VUE_APP_TAG_FLAG === '0', // 是否可以操作编辑和删除,开发环境可以
|
||||
// dataSource: [],
|
||||
url: {
|
||||
list: 'sys/dict/tagDictPage',
|
||||
@@ -150,7 +150,7 @@ export default {
|
||||
clickEvent: 'handleEdit',
|
||||
has: 'sys:dict:operation',
|
||||
show: (record) => {
|
||||
return (this.canOpeFlag || record.isReadOnly === IsReadOnlyEnums.configurable.value)
|
||||
return (record.isReadOnly === IsReadOnlyEnums.configurable.value)
|
||||
}
|
||||
},
|
||||
// 删除
|
||||
@@ -159,7 +159,7 @@ export default {
|
||||
clickEvent: 'handleDelete',
|
||||
has: 'sys:dict:operation',
|
||||
show: (record) => {
|
||||
return (this.canOpeFlag || record.isReadOnly === IsReadOnlyEnums.configurable.value)
|
||||
return (record.isReadOnly === IsReadOnlyEnums.configurable.value)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -26,7 +26,7 @@ export default {
|
||||
tabArr: [
|
||||
{ name: '外来标准法规', showText: this.$t('system.tag.foreignStandardRegulations'), value: 1, comp: StandardList },
|
||||
{ name: '企业标准', showText: this.$t('system.tag.enterpriseStandards'), value: 3, comp: StandardList },
|
||||
{ name: '条款拆分', showText: this.$t('system.tag.clauseSplitting'), value: 4, comp: ClauseSplittingList }
|
||||
// { name: '条款拆分', showText: this.$t('system.tag.clauseSplitting'), value: 4, comp: ClauseSplittingList }
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
+142
-250
@@ -1,101 +1,76 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<a-form v-if="!mobile" :form="form" class="user-layout-login" ref="formLogin" id="formLogin">
|
||||
<a-form :form="form" class="user-layout-login" ref="formLogin" id="formLogin" hideRequiredMark>
|
||||
<div class="user-box">
|
||||
<span class="title">用户登录</span>
|
||||
<a-row>
|
||||
<a-col :span="3"></a-col>
|
||||
<a-col :span="18">
|
||||
<a-form-item>
|
||||
<div class="lang-box">
|
||||
<a-dropdown :trigger="['click']">
|
||||
<div class="lang-btn">
|
||||
<a-icon type="global" style="font-size: 16px;" />
|
||||
<span style="margin: 0 4px">{{ $t('login.language') }}</span>
|
||||
<a-icon type="down" />
|
||||
</div>
|
||||
<a-menu slot="overlay" style="width: 100%;" @click="changeLang">
|
||||
<a-menu-item key="zh-cn">中文</a-menu-item>
|
||||
<a-menu-item key="en-us">English</a-menu-item>
|
||||
</a-menu>
|
||||
</a-dropdown>
|
||||
</div>
|
||||
<span class="title">{{ $t('login.userLogin') }}</span>
|
||||
<a-row style="width: 80%; margin: auto;">
|
||||
<a-col>
|
||||
<a-form-item :label="$t('login.account')">
|
||||
<a-input
|
||||
size="large"
|
||||
v-decorator="['username',{initialValue:'', rules: validatorRules.username.rules,validateTrigger: 'blur'}]"
|
||||
v-decorator="['username',validatorRules.username]"
|
||||
type="text"
|
||||
placeholder="请输入帐号">
|
||||
<a-icon slot="prefix" type="user" :style="{ color: '#B3B7C2',fontSize:'20px' }" />
|
||||
:placeholder="$t('pleaseEnter') + $t('login.account')">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="3"></a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span="3"></a-col>
|
||||
<a-col :span="18">
|
||||
<a-form-item>
|
||||
<a-col>
|
||||
<a-form-item :label="$t('login.password')">
|
||||
<a-input
|
||||
v-decorator="['password',{initialValue:'', rules: validatorRules.password.rules,validateTrigger: 'blur'}]"
|
||||
v-decorator="['password',validatorRules.password]"
|
||||
size="large"
|
||||
:type="passwordType"
|
||||
:type="passwordStatus ? 'text' : 'password'"
|
||||
autocomplete="false"
|
||||
placeholder="请输入密码"
|
||||
:placeholder="$t('pleaseEnter') + $t('login.password')"
|
||||
@paste.native.capture.prevent="handleOperate"
|
||||
>
|
||||
<a-icon title="显示密码"
|
||||
@click="passwordType='text'"
|
||||
<a-icon :title="$t('login.showPassword')"
|
||||
@click="passwordStatus = !passwordStatus"
|
||||
slot="suffix"
|
||||
v-if="passwordType==='password'"
|
||||
type="eye"
|
||||
:type="passwordStatus ? 'eye' : 'eye-invisible'"
|
||||
:style="{ color: '#B3B7C2',fontSize:'20px' }" />
|
||||
<a-icon title="隐藏密码"
|
||||
@click="passwordType='password'"
|
||||
slot="suffix"
|
||||
v-else
|
||||
type="eye-invisible"
|
||||
:style="{ color: '#B3B7C2',fontSize:'20px' }" />
|
||||
<a-icon slot="prefix" type="lock" :style="{ color: '#B3B7C2',fontSize:'20px' }" />
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="3"></a-col>
|
||||
</a-row>
|
||||
<a-row style="margin-bottom: 2%;">
|
||||
<a-col :span="3"></a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item>
|
||||
<a-col>
|
||||
<a-form-item :label="$t('login.code')">
|
||||
<a-input
|
||||
class="input-code"
|
||||
v-decorator="['inputCode',validatorRules.inputCode]"
|
||||
size="large"
|
||||
type="text"
|
||||
@change="inputCodeChange"
|
||||
autocomplete="off"
|
||||
placeholder="请输入验证码">
|
||||
<a-icon slot="prefix" type="safety" :style="{ color: '#B3B7C2',fontSize:'20px'}" />
|
||||
:placeholder="$t('pleaseEnter') + $t('login.code')">
|
||||
<template slot="suffix">
|
||||
<img v-if="requestCodeSuccess"
|
||||
style="margin: 6px; height: 36px;"
|
||||
:src="randCodeImage"
|
||||
@click="handleChangeCheckCode"
|
||||
alt="" />
|
||||
<img v-else
|
||||
style="margin: 6px; height: 36px;"
|
||||
src="../../assets/checkcode.png"
|
||||
@click="handleChangeCheckCode"
|
||||
alt="" />
|
||||
</template>
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="6" style="text-align: right">
|
||||
<img v-if="requestCodeSuccess"
|
||||
style="margin-top: 2px;"
|
||||
:src="randCodeImage"
|
||||
@click="handleChangeCheckCode"
|
||||
alt="" />
|
||||
<img v-else
|
||||
style="margin-top: 2px;"
|
||||
src="../../assets/checkcode.png"
|
||||
@click="handleChangeCheckCode"
|
||||
alt="" />
|
||||
</a-col>
|
||||
<a-col :span="3"></a-col>
|
||||
</a-row>
|
||||
<!--<a-row style="margin-bottom: 2%;">-->
|
||||
<!-- <a-col :span="3"></a-col>-->
|
||||
<!-- <a-col :span="7">-->
|
||||
<!-- <a-form-item>-->
|
||||
<!-- <a-checkbox v-decorator="['rememberMe', {initialValue: true, valuePropName: 'checked'}]">自动登录</a-checkbox>-->
|
||||
<!-- </a-form-item>-->
|
||||
<!-- </a-col>-->
|
||||
<!-- <a-col :span="6"></a-col>-->
|
||||
<!-- <a-col :span="5" style="text-align: right;color: #1891FF;">-->
|
||||
<!-- <a-form-item>-->
|
||||
<!-- <router-link :to="{ name: 'alteration'}" class="forge-password" style="float: right;">-->
|
||||
<!-- 忘记密码-->
|
||||
<!-- </router-link>-->
|
||||
<!-- </a-form-item>-->
|
||||
<!-- </a-col>-->
|
||||
<!--</a-row>-->
|
||||
<a-row class="login-btn">
|
||||
<a-col :span="3"></a-col>
|
||||
<a-col :span="18">
|
||||
<a-col class="login-btn">
|
||||
<a-form-item>
|
||||
<a-button
|
||||
block
|
||||
@@ -105,102 +80,7 @@
|
||||
:loading="loginBtn"
|
||||
@click.stop.prevent="handleSubmit"
|
||||
:disabled="loginBtn">
|
||||
{{ loginBtn ? '登录中' : '登录' }}
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="3"></a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
</a-form>
|
||||
<a-form v-if="mobile"
|
||||
:form="form"
|
||||
class="user-layout-login user-layout-login-mobile"
|
||||
ref="formLogin"
|
||||
id="formLogin">
|
||||
<div class="user-box user-box-mobile">
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<a-form-item>
|
||||
<a-input
|
||||
size="large"
|
||||
v-decorator="['username',{initialValue:'', rules: validatorRules.username.rules,validateTrigger: 'blur'}]"
|
||||
type="text"
|
||||
placeholder="请输入帐号">
|
||||
<a-icon slot="prefix" type="user" :style="{ color: '#B3B7C2',fontSize:'20px' }" />
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<a-form-item>
|
||||
<a-input
|
||||
v-decorator="['password',{initialValue:'', rules: validatorRules.password.rules,validateTrigger: 'blur'}]"
|
||||
size="large"
|
||||
type="password"
|
||||
autocomplete="false"
|
||||
placeholder="请输入密码"
|
||||
>
|
||||
<a-icon slot="prefix" type="lock" :style="{ color: '#B3B7C2',fontSize:'20px' }" />
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span="14">
|
||||
<a-form-item>
|
||||
<a-input
|
||||
v-decorator="['inputCode',validatorRules.inputCode]"
|
||||
size="large"
|
||||
type="text"
|
||||
@change="inputCodeChange"
|
||||
placeholder="请输入验证码">
|
||||
<a-icon slot="prefix" type="safety" :style="{ color: '#B3B7C2',fontSize:'20px'}" />
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="10" style="text-align: right">
|
||||
<img v-if="requestCodeSuccess"
|
||||
style="margin-top: 2px;"
|
||||
:src="randCodeImage"
|
||||
@click="handleChangeCheckCode"
|
||||
alt="" />
|
||||
<img v-else
|
||||
style="margin-top: 2px;"
|
||||
src="../../assets/checkcode.png"
|
||||
@click="handleChangeCheckCode"
|
||||
alt="" />
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span="10">
|
||||
<a-form-item>
|
||||
<a-checkbox v-decorator="['rememberMe', {initialValue: true, valuePropName: 'checked'}]">自动登录
|
||||
</a-checkbox>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="4"></a-col>
|
||||
<a-col :span="9" style="text-align: right;color: #1891FF;">
|
||||
<a-form-item>
|
||||
<router-link :to="{ name: 'alteration'}" class="forge-password" style="float: right;">
|
||||
忘记密码
|
||||
</router-link>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row class="login-btn">
|
||||
<a-col :span="24">
|
||||
<a-form-item>
|
||||
<a-button
|
||||
block
|
||||
size="large"
|
||||
type="primary"
|
||||
htmlType="submit"
|
||||
:loading="loginBtn"
|
||||
@click.stop.prevent="handleSubmit"
|
||||
:disabled="loginBtn">
|
||||
{{ loginBtn ? '登录中' : '登录' }}
|
||||
{{ $t('login.login') }}
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -211,14 +91,14 @@
|
||||
</template>
|
||||
<script>
|
||||
import { mapActions } from 'vuex'
|
||||
import { timeFix } from '@/utils/util'
|
||||
import { isMobile, timeFix } from '@/utils/util'
|
||||
import Vue from 'vue'
|
||||
import { ACCESS_TOKEN/* , ENCRYPTED_STRING, USER_INFO */ } from '@/store/mutation-types'
|
||||
import { postAction, getAction } from '@/api/manage'
|
||||
|
||||
import { getRSAPublicKey } from '@/utils/encryption.js'
|
||||
import { JSEncrypt } from 'jsencrypt'
|
||||
// const Base64 = require('js-base64').Base64
|
||||
import moment from 'moment/moment'
|
||||
|
||||
export default {
|
||||
components: {},
|
||||
@@ -236,30 +116,28 @@ export default {
|
||||
},
|
||||
validatorRules: {
|
||||
username: {
|
||||
rules: [{
|
||||
required: true,
|
||||
message: '请输入用户名!'
|
||||
}, { validator: this.handleUsernameOrEmail }]
|
||||
rules: [
|
||||
{ required: true, message: this.$t('pleaseEnter') + this.$t('login.account') },
|
||||
{ validator: this.handleUsernameOrEmail }
|
||||
],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
password: {
|
||||
rules: [{
|
||||
required: true,
|
||||
message: '请输入密码!',
|
||||
validator: 'click'
|
||||
}]
|
||||
rules: [
|
||||
{ required: true, message: this.$t('pleaseEnter') + this.$t('login.password'), validator: 'click' }
|
||||
],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
mobile: { rules: [{ validator: this.validateMobile }] },
|
||||
captcha: {
|
||||
rule: [{
|
||||
required: true,
|
||||
message: '请输入验证码!'
|
||||
}]
|
||||
rule: [
|
||||
{ required: true, message: this.$t('pleaseEnter') + this.$t('login.code') }
|
||||
]
|
||||
},
|
||||
inputCode: {
|
||||
rules: [{
|
||||
required: true,
|
||||
message: '请输入验证码!'
|
||||
}]
|
||||
rules: [
|
||||
{ required: true, message: this.$t('pleaseEnter') + this.$t('login.code') }
|
||||
]
|
||||
}
|
||||
},
|
||||
velorifiedCode: '',
|
||||
@@ -270,7 +148,7 @@ export default {
|
||||
randCodeImage: '',
|
||||
requestCodeSuccess: false,
|
||||
rsaPublicKey: '',
|
||||
passwordType: 'password' // passwordType : password , text
|
||||
passwordStatus: false // 密码状态,默认隐藏
|
||||
}
|
||||
},
|
||||
created () {
|
||||
@@ -282,6 +160,12 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
...mapActions(['Login', 'Logout', 'PhoneLogin']),
|
||||
changeLang ({ key }) {
|
||||
localStorage.setItem('language', key)
|
||||
moment.locale(key)
|
||||
this.$i18n.locale = key
|
||||
this.$root.Bus.$emit('switchLanguage', key)
|
||||
},
|
||||
handleUsernameOrEmail (rule, value, callback) {
|
||||
const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/
|
||||
if (regex.test(value)) {
|
||||
@@ -329,7 +213,7 @@ export default {
|
||||
const that = this
|
||||
this.form.validateFields(['mobile'], { force: true }, (err, values) => {
|
||||
if (!values.mobile) {
|
||||
that.cmsFailed('请输入手机号')
|
||||
that.cmsFailed(this.$t('pleaseEnter') + this.$t('login.phone'))
|
||||
} else if (!err) {
|
||||
this.state.smsSendBtn = true
|
||||
const interval = window.setInterval(() => {
|
||||
@@ -340,7 +224,7 @@ export default {
|
||||
}
|
||||
}, 1000)
|
||||
|
||||
const hide = this.$message.loading('验证码发送中..', 0)
|
||||
const hide = this.$message.loading(this.$t('login.codeSending') + '..', 0)
|
||||
const smsParams = {}
|
||||
smsParams.mobile = values.mobile
|
||||
smsParams.smsmode = '0'
|
||||
@@ -391,21 +275,21 @@ export default {
|
||||
this.$router.push({ path: '/' }).catch((/* res */) => {
|
||||
})
|
||||
this.$notification.success({
|
||||
message: '欢迎',
|
||||
description: `${timeFix()},欢迎回来`
|
||||
message: this.$t('login.welcome'),
|
||||
description: `${timeFix()}${this.$t('login.welcomeBack')}`
|
||||
})
|
||||
},
|
||||
cmsFailed (err) {
|
||||
this.$notification.error({
|
||||
message: '验证码发送失败',
|
||||
message: this.$t('login.codeSendFail'),
|
||||
description: err,
|
||||
duration: 4
|
||||
})
|
||||
},
|
||||
requestFailed (err) {
|
||||
this.$notification.error({
|
||||
message: '登录失败',
|
||||
description: ((err.response || {}).data || {}).message || err.message || '请求出现错误,请稍后再试',
|
||||
message: this.$t('login.loginFailMessage'),
|
||||
description: ((err.response || {}).data || {}).message || err.message || this.$t('login.requestFailMessage'),
|
||||
duration: 4
|
||||
})
|
||||
|
||||
@@ -422,14 +306,14 @@ export default {
|
||||
if (!value || new RegExp(/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/).test(value)) {
|
||||
callback()
|
||||
} else {
|
||||
callback(new Error('您的手机号码格式不正确!'))
|
||||
callback(new Error(this.$t('login.checkPhoneMessage')))
|
||||
}
|
||||
},
|
||||
validateInputCode (rule, value, callback) {
|
||||
if (!value || this.verifiedCode === this.inputCodeContent) {
|
||||
callback()
|
||||
} else {
|
||||
callback(new Error('您输入的验证码不正确!'))
|
||||
callback(new Error(this.$t('login.checkCodeMessage')))
|
||||
}
|
||||
},
|
||||
generateCode (value) {
|
||||
@@ -453,31 +337,6 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 判断当前设备
|
||||
function isMobile () {
|
||||
const userAgentInfo = navigator.userAgent
|
||||
|
||||
const mobileAgents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod']
|
||||
|
||||
let mobileFlag = false
|
||||
|
||||
// 根据userAgent判断是否是手机
|
||||
for (let v = 0; v < mobileAgents.length; v++) {
|
||||
if (userAgentInfo.indexOf(mobileAgents[v]) > 0) {
|
||||
mobileFlag = true
|
||||
break
|
||||
}
|
||||
}
|
||||
const screenWidth = window.screen.width
|
||||
const screenHeight = window.screen.height
|
||||
|
||||
// 根据屏幕分辨率判断是否是手机
|
||||
if (screenWidth < 500 && screenHeight < 800) {
|
||||
mobileFlag = true
|
||||
}
|
||||
return mobileFlag
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@@ -485,22 +344,20 @@ function isMobile () {
|
||||
padding-left: 40px;
|
||||
}
|
||||
|
||||
.ant-row {
|
||||
margin-bottom: 4%;
|
||||
}
|
||||
|
||||
.main {
|
||||
height: 100%;
|
||||
background-image: url("~@/assets/image/loginBg.png");
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
|
||||
.user-layout-login {
|
||||
z-index: 99;
|
||||
width: 24%;
|
||||
height: 50%;
|
||||
padding: 3% 0 3% 0;
|
||||
width: 28%;
|
||||
height: fit-content;
|
||||
padding: 30px 30px 70px;
|
||||
min-width: 332px;
|
||||
min-height: 460px;
|
||||
background: #fff;
|
||||
border-radius: 20px;
|
||||
position: absolute;
|
||||
right: 8%;
|
||||
top: 50%;
|
||||
@@ -510,41 +367,76 @@ function isMobile () {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-direction: column;
|
||||
|
||||
.lang-box {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.title {
|
||||
display: block;
|
||||
color: #1891FF;
|
||||
font-size: 28px;
|
||||
font-weight: 500;
|
||||
margin: 0 0 5% 0;
|
||||
margin: 18px 0 48px 0;
|
||||
text-align: center;
|
||||
font-family: PingFang SC, PingFang SC, sans-serif;
|
||||
font-weight: 600;
|
||||
font-size: 30px;
|
||||
color: rgba(0,0,0,0.9);
|
||||
line-height: 35px;
|
||||
}
|
||||
/deep/.ant-input-lg {
|
||||
height: 48px;
|
||||
}
|
||||
/deep/ .ant-form-item-label {
|
||||
line-height: 16px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.input-code {
|
||||
/deep/ input {
|
||||
padding-right: 130px;
|
||||
}
|
||||
/deep/ .ant-input-suffix {
|
||||
right: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.login-btn {
|
||||
margin-bottom: 0;
|
||||
font-size: 10px;
|
||||
margin-top: 48px;
|
||||
/deep/button {
|
||||
height: 58px;
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 1366
|
||||
@media screen and (max-width: 1366px) {
|
||||
.user-layout-login {
|
||||
width: 30%;
|
||||
padding: 20px 30px;
|
||||
|
||||
.user-layout-login-mobile {
|
||||
right: 0;
|
||||
width: 100%;
|
||||
min-width: 0 !important;
|
||||
height: 46% !important;
|
||||
background: transparent;
|
||||
min-height: 0;
|
||||
padding: 0 2rem 0 2rem;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
margin-top: 6rem;
|
||||
transform: translateY(-50%);
|
||||
.user-box {
|
||||
.title {
|
||||
margin: 18px 0 40px 0;
|
||||
font-size: 30px;
|
||||
line-height: 35px;
|
||||
}
|
||||
|
||||
.ant-row {
|
||||
margin-bottom: 0;
|
||||
/deep/ .ant-input-lg {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.login-btn {
|
||||
margin-top: 28px;
|
||||
/deep/ button {
|
||||
height: 48px;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,8 +147,8 @@ export default {
|
||||
},
|
||||
requestFailed (err) {
|
||||
this.$notification.error({
|
||||
message: '登录失败',
|
||||
description: ((err.response || {}).data || {}).message || err.message || '请求出现错误,请稍后再试',
|
||||
message: this.$t('login.loginFailMessage'),
|
||||
description: ((err.response || {}).data || {}).message || err.message || this.$t('login.requestFailMessage'),
|
||||
duration: 4
|
||||
})
|
||||
this.loginBtn = false
|
||||
|
||||
@@ -86,15 +86,15 @@ export default {
|
||||
this.$router.replace({ path: INDEX_MAIN_PAGE_PATH })
|
||||
// TODO 这个提示是否还需要?
|
||||
this.$notification.success({
|
||||
message: '欢迎',
|
||||
description: `${timeFix()},欢迎回来`
|
||||
message: this.$t('login.welcome'),
|
||||
description: `${timeFix()}${this.$t('login.welcomeBack')}`
|
||||
})
|
||||
},
|
||||
requestFailed (err) {
|
||||
this.$error({
|
||||
title: '登录失败',
|
||||
content: ((err.response || {}).data || {}).message || err.message || '请求出现错误,请稍后再试',
|
||||
okText: '重新登陆',
|
||||
title: this.$t('login.loginFailMessage'),
|
||||
content: ((err.response || {}).data || {}).message || err.message || this.$t('login.requestFailMessage'),
|
||||
okText: this.$t('login.reLogin'),
|
||||
onOk () {
|
||||
window.location.reload()
|
||||
},
|
||||
|
||||
@@ -61,7 +61,10 @@
|
||||
<template v-if="currentNode !== 1">
|
||||
<!-- 清单编号 -->
|
||||
<a-col :span="24">
|
||||
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('listNumber')" :colon="formItemColon">
|
||||
<a-form-item
|
||||
:labelCol="$i18n.locale === EN ? longLabelColEn : longLabelCol"
|
||||
:wrapperCol="$i18n.locale === EN ? longWrapperColEn : longWrapperCol"
|
||||
:label="$t('listNumber')" :colon="formItemColon">
|
||||
<a-input placeholder=""
|
||||
disabled
|
||||
:maxLength="50"
|
||||
@@ -70,7 +73,10 @@
|
||||
</a-col>
|
||||
<!-- 清单名称 -->
|
||||
<a-col :span="24">
|
||||
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('listName')" :colon="formItemColon">
|
||||
<a-form-item
|
||||
:labelCol="$i18n.locale === EN ? longLabelColEn : longLabelCol"
|
||||
:wrapperCol="$i18n.locale === EN ? longWrapperColEn : longWrapperCol"
|
||||
:label="$t('listName')" :colon="formItemColon">
|
||||
<a-input placeholder=""
|
||||
disabled
|
||||
:maxLength="50"
|
||||
@@ -79,7 +85,10 @@
|
||||
</a-col>
|
||||
<!-- 国家/地区 -->
|
||||
<a-col :span="24">
|
||||
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('countryRegion')" :colon="formItemColon">
|
||||
<a-form-item
|
||||
:labelCol="$i18n.locale === EN ? longLabelColEn : longLabelCol"
|
||||
:wrapperCol="$i18n.locale === EN ? longWrapperColEn : longWrapperCol"
|
||||
:label="$t('countryRegion')" :colon="formItemColon">
|
||||
<s-tree-select v-decorator="['country', validatorRules.country]"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
style="width: 100%"
|
||||
@@ -571,21 +580,17 @@ export default {
|
||||
},
|
||||
// 转办选完人的回调
|
||||
userSelectModalChange (userIds) {
|
||||
this.approvalInfoForm.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.loading = true
|
||||
const param = Object.assign({}, values)
|
||||
param.userId = userIds
|
||||
param.taskId = this.$route.query.taskId
|
||||
processTransfer(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
this.loading = true
|
||||
const param = {}
|
||||
param.userId = userIds
|
||||
param.taskId = this.$route.query.taskId
|
||||
processTransfer(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
disabled
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="disabled ? '' : $t('autoTakeout')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -213,21 +214,21 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'country_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 适用车型
|
||||
title: this.$t('workCenter.marketListReleaseProcess.applicableVehicleType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applicableVehicle_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证对象
|
||||
title: this.$t('workCenter.marketListReleaseProcess.authenticationObject'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'authenticationObject_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 认证交付物
|
||||
title: this.$t('workCenter.marketListReleaseProcess.certifiedDeliverables'),
|
||||
@@ -241,14 +242,14 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'type_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 动力类型
|
||||
title: this.$t('workCenter.marketListReleaseProcess.dynamicType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'dynamicType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 主控部门
|
||||
title: this.$t('workCenter.marketListReleaseProcess.mainControlDepartment'),
|
||||
@@ -262,7 +263,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'mainDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 关联部门
|
||||
title: this.$t('workCenter.marketListReleaseProcess.relatedDepartment'),
|
||||
@@ -276,14 +277,14 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'associateDeptProfMode_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 要求类型
|
||||
title: this.$t('workCenter.marketListReleaseProcess.requirementType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'requireType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 备注
|
||||
title: this.$t('remarks'),
|
||||
|
||||
+11
-15
@@ -498,21 +498,17 @@ export default {
|
||||
},
|
||||
// 转办选完人的回调
|
||||
userSelectModalChange (userIds) {
|
||||
this.approvalInfoForm.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.loading = true
|
||||
const param = Object.assign({}, values)
|
||||
param.userId = userIds
|
||||
param.taskId = this.$route.query.taskId
|
||||
processTransfer(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
this.loading = true
|
||||
const param = {}
|
||||
param.userId = userIds
|
||||
param.taskId = this.$route.query.taskId
|
||||
processTransfer(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@@ -124,9 +124,40 @@
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
:disabled="disabled"
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="disabled ? '' : $t('pleaseSelect')+$t('workCenter.newRegulationImportProcess.applicableMarket')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 主管部门 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.newRegulationImportProcess.competentDepartment')">
|
||||
{{ $t('workCenter.newRegulationImportProcess.competentDepartment') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="competentDepartment">
|
||||
<j-select-depart v-model="formInline.competentDepartment"
|
||||
:disabled="disabled"
|
||||
:multi="true"
|
||||
:backDepart="true" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 主控部门 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.newRegulationImportProcess.mainControlDepartment')">
|
||||
{{ $t('workCenter.newRegulationImportProcess.mainControlDepartment') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="mainControlDepartment">
|
||||
<j-select-depart v-model="formInline.mainControlDepartment"
|
||||
:disabled="disabled"
|
||||
:multi="true"
|
||||
:backDepart="true" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 抄送人员 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
@@ -146,7 +177,7 @@
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 法规要求简要描述 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="box-title-text form-flex-item form-flex-item-full">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('workCenter.newRegulationImportProcess.briefDescription')">
|
||||
{{ $t('workCenter.newRegulationImportProcess.briefDescription') }}
|
||||
@@ -226,6 +257,22 @@ export default {
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
// 主管部门
|
||||
competentDepartment: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.newRegulationImportProcess.competentDepartment') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
// 主控部门
|
||||
mainControlDepartment: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('workCenter.newRegulationImportProcess.mainControlDepartment') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
// 抄送人员
|
||||
copyUser: [
|
||||
{
|
||||
@@ -328,4 +375,8 @@ export default {
|
||||
/deep/ .ant-form-item-children > * {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.form-flex-item-full {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -97,7 +97,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'prcType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 流程名称
|
||||
title: this.$t('processName'),
|
||||
@@ -140,7 +140,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'prcStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
|
||||
@@ -75,7 +75,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 300,
|
||||
dataIndex: 'prcType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 流程名称
|
||||
title: this.$t('processName'),
|
||||
|
||||
@@ -113,7 +113,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'prcType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 流程名称
|
||||
title: this.$t('processName'),
|
||||
@@ -162,7 +162,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'prcStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
|
||||
@@ -117,7 +117,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'prcType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 流程名称
|
||||
title: this.$t('processName'),
|
||||
@@ -160,7 +160,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'prcStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
|
||||
@@ -112,7 +112,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 260,
|
||||
dataIndex: 'prcType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 流程名称
|
||||
title: this.$t('processName'),
|
||||
|
||||
+12
-16
@@ -148,7 +148,7 @@
|
||||
<!-- 主排查人分发,设计工程师评估 -->
|
||||
<template v-else-if="[3, 4].includes(currentNode)">
|
||||
<!-- 驳回 -->
|
||||
<a-button type="danger" ghost :loading="loading" @click="handleReject" icon="close" :disabled="rejectDisabled">{{ $t('reject') }}</a-button>
|
||||
<a-button v-if="!rejectDisabled" type="danger" ghost :loading="loading" @click="handleReject" icon="close">{{ $t('reject') }}</a-button>
|
||||
<!-- 转办 -->
|
||||
<a-button type="primary" ghost :loading="loading" @click="handleTurnTo" icon="arrow-up">{{ $t('turnTo') }}</a-button>
|
||||
<!-- 保存 -->
|
||||
@@ -628,21 +628,17 @@ export default {
|
||||
},
|
||||
// 转办选完人的回调
|
||||
userSelectModalChange (userIds) {
|
||||
this.approvalInfoForm.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.loading = true
|
||||
const param = Object.assign({}, values)
|
||||
param.userId = userIds
|
||||
param.taskId = this.$route.query.taskId
|
||||
processTransfer(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
this.loading = true
|
||||
const param = {}
|
||||
param.userId = userIds
|
||||
param.taskId = this.$route.query.taskId
|
||||
processTransfer(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
+25
-5
@@ -4,7 +4,7 @@
|
||||
<div>
|
||||
<j-expand-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
:scroll="{x: '100%', y: '50vh'}"
|
||||
ref="expandTable"
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
@@ -18,7 +18,10 @@
|
||||
|
||||
<!--条文内容-->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<div class="table-text" v-if="text || text === 0" @click="showContent(text,record)">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
@@ -29,8 +32,10 @@
|
||||
style="width: 100%"
|
||||
:placeholder="$t('pleaseSelect')"
|
||||
dict-code="evaluation_result"
|
||||
:getPopupContainer="(node) => node.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode"
|
||||
:disabled="disabled"
|
||||
@change="resultChange(record)"
|
||||
@dropdownVisibleChange="resultDropdownVisibleChange"
|
||||
v-model="record.result">
|
||||
</j-dict-select-tag>
|
||||
</template>
|
||||
@@ -105,7 +110,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 评价结果
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.evaluationResult'),
|
||||
@@ -298,6 +303,19 @@ export default {
|
||||
}
|
||||
return data
|
||||
},
|
||||
// 点击评估结果,滚动条滚动到最后
|
||||
resultDropdownVisibleChange (open) {
|
||||
if (!open) {
|
||||
return
|
||||
}
|
||||
const table = this.$refs.expandTable
|
||||
if (table) {
|
||||
const scrollBox = table.$el.querySelector('.ant-table-body')
|
||||
if (scrollBox) {
|
||||
scrollBox.scrollLeft = scrollBox.scrollWidth
|
||||
}
|
||||
}
|
||||
},
|
||||
// 评估结果改变,清空备注和佐证材料,不满足要求的现状,整改方案,整改周期,整改费用,与其他项目共用性,共用后本项目所需费用
|
||||
resultChange (record) {
|
||||
const index = this.dataSource.findIndex(item => item.id === record.id)
|
||||
@@ -321,6 +339,8 @@ export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
<style scoped lang="less">
|
||||
.dropdown-class {
|
||||
z-index: 9999
|
||||
}
|
||||
</style>
|
||||
|
||||
+53
-10
@@ -91,9 +91,10 @@
|
||||
<j-upload
|
||||
return-id
|
||||
v-model="formInline.modelFile"
|
||||
fileType="xlsx,xls"
|
||||
fileType="xls"
|
||||
:number="1"
|
||||
:multiple="false"
|
||||
@change="modelFileChange"
|
||||
:disabled="isRejectedData">
|
||||
</j-upload>
|
||||
</a-form-model-item>
|
||||
@@ -113,11 +114,12 @@
|
||||
@numberChange="marketRegulationNumberChange"
|
||||
:name-str="formInline.applicableMarketNo"
|
||||
:disabled="isRejectedData"
|
||||
selectOnly
|
||||
:placeholder="$t('pleaseSelect')+$t('applicableMarket')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 是否与上一版相同 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<!-- 是否与上一版相同,是添加标准的新增的数据并且分解单来源不是不带入时显示 -->
|
||||
<div v-if="standardDataSource[0] && standardDataSource[0].standardId && standardDataSource[0].splitFileSource !== DecompositionSource.NO_INPUT.value" class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.regulatoryComplianceCheckProcess.isAlike')">
|
||||
@@ -129,6 +131,7 @@
|
||||
:placeholder="$t('pleaseSelect') + this.$t('workCenter.regulatoryComplianceCheckProcess.isAlike')"
|
||||
dict-code="yn"
|
||||
:disabled="isRejectedData"
|
||||
@change="isSameLastVersionChange"
|
||||
v-model="formInline.isSameLastVersion">
|
||||
</j-dict-select-tag>
|
||||
</a-form-model-item>
|
||||
@@ -191,7 +194,7 @@
|
||||
<div>
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
:scroll="{x: '100%', y: '50vh'}"
|
||||
ref="table"
|
||||
rowKey="uid"
|
||||
:columns="columns"
|
||||
@@ -211,7 +214,10 @@
|
||||
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<div class="table-text" v-if="text || text === 0" @click="showContent(text,record)">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
@@ -219,7 +225,7 @@
|
||||
|
||||
<!-- 操作栏 -->
|
||||
<div slot="action" slot-scope="{record}" class="action-span-cell">
|
||||
<a @click="handleDelete(record.uid)" class="operate-del-btn" :disabled="disabled">{{ $t('delete') }}</a>
|
||||
<a @click="handleDelete(record.uid)" class="operate-del-btn" :class="disabled ? 'del-btn-disabled' : ''" :disabled="disabled">{{ $t('delete') }}</a>
|
||||
</div>
|
||||
|
||||
</j-table>
|
||||
@@ -265,7 +271,7 @@ const FILE_TYPE_PDF = 'pdf'
|
||||
const CAN_PREVIEW_FILE_SUFFIX = ['jpg', 'jpeg', 'png', 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx']
|
||||
|
||||
const uidGenerator = () => {
|
||||
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
||||
return '-' + parseInt(Math.random() * 1000000 + 1, 10)
|
||||
}
|
||||
|
||||
export default {
|
||||
@@ -287,6 +293,7 @@ export default {
|
||||
data () {
|
||||
return {
|
||||
StandardSource,
|
||||
DecompositionSource,
|
||||
loading: false,
|
||||
formInline: {},
|
||||
splitFileSourceList: [], // 标准分解单下拉
|
||||
@@ -336,7 +343,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'standardState_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 分解单来源
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.decompositionSingleSource'),
|
||||
@@ -444,7 +451,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('responsibleDepartment'),
|
||||
@@ -475,7 +482,8 @@ export default {
|
||||
id: ''
|
||||
}
|
||||
},
|
||||
isRejectedData: false // 是否是被驳回的
|
||||
isRejectedData: false, // 是否是被驳回的
|
||||
isChangeStandardAfterClickGenerate: true // 是否修改标准后点击了生成按钮
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
@@ -495,6 +503,11 @@ export default {
|
||||
if (this.standardDataSource[0].standardId) {
|
||||
this.initInterpretGetFileByStandardId(this.standardDataSource[0].standardId)
|
||||
}
|
||||
// 如果是json回显的话会有改完标准是否重新点击了生成
|
||||
console.log('------------isChangeStandardAfterClickGenerate', data.isChangeStandardAfterClickGenerate)
|
||||
if (data.isChangeStandardAfterClickGenerate) {
|
||||
this.isChangeStandardAfterClickGenerate = data.isChangeStandardAfterClickGenerate === '1'
|
||||
}
|
||||
const formInline = {}
|
||||
formInline.modelFile = data.standardInfo.modelFile
|
||||
formInline.applicableMarket = data.standardInfo.applicableMarket
|
||||
@@ -518,6 +531,8 @@ export default {
|
||||
// 组合businessInfoDTO,抛出
|
||||
const data = {}
|
||||
data.standardInfo = Object.assign({}, this.standardDataSource[0], this.formInline)
|
||||
// 更换标准后是否重新生成了,保存json的时候存一下,防止保存之前改了标准,再次办理的时候直接提交校验不到改了标准
|
||||
data.isChangeStandardAfterClickGenerate = this.isChangeStandardAfterClickGenerate ? '1' : '0'
|
||||
data.detailInfoList = JSON.parse(JSON.stringify(this.dataList))
|
||||
return data
|
||||
},
|
||||
@@ -530,6 +545,11 @@ export default {
|
||||
// 提示请先生成数据
|
||||
this.$message.warning(this.$t('workCenter.regulatoryComplianceCheckProcess.pleaseGenerate'))
|
||||
data = false
|
||||
} else if (!this.isChangeStandardAfterClickGenerate) {
|
||||
// 改了标准之后没有点击生成按钮
|
||||
// 提示请重新生成数据
|
||||
this.$message.warning(this.$t('workCenter.regulatoryComplianceCheckProcess.pleaseAnewGenerate'))
|
||||
data = false
|
||||
} else {
|
||||
data.standardInfo = Object.assign({}, this.standardDataSource[0], this.formInline)
|
||||
data.detailInfoList = JSON.parse(JSON.stringify(this.dataList))
|
||||
@@ -563,8 +583,20 @@ export default {
|
||||
},
|
||||
// 分解单来源修改
|
||||
splitFileSourceChange () {
|
||||
// 修改了数据没有点击生成按钮
|
||||
this.isChangeStandardAfterClickGenerate = false
|
||||
this.$forceUpdate()
|
||||
},
|
||||
// 车型项目修改
|
||||
modelFileChange () {
|
||||
// 修改了数据没有点击生成按钮
|
||||
this.isChangeStandardAfterClickGenerate = false
|
||||
},
|
||||
// 是否与上一版相同切换
|
||||
isSameLastVersionChange () {
|
||||
// 修改了数据没有点击生成按钮
|
||||
this.isChangeStandardAfterClickGenerate = false
|
||||
},
|
||||
// 显示条款内容弹框
|
||||
showContent (val) {
|
||||
this.$refs.splitClauseDetail.open(val)
|
||||
@@ -615,6 +647,7 @@ export default {
|
||||
// 标准状态
|
||||
obj.standardState = result.standard_state
|
||||
obj.standardState_dictText = result.standard_state_dictText
|
||||
obj.standardState_dictTextEn = result.standard_state_dictTextEn
|
||||
// 分解单来源初始化成不带入
|
||||
obj.splitFileSource = DecompositionSource.NO_INPUT.value
|
||||
// 新生产车实施日期
|
||||
@@ -623,6 +656,8 @@ export default {
|
||||
obj.newAuthImplDate = result.new_auth_impl_date
|
||||
this.standardDataSource[0] = obj
|
||||
this.isGetDataAfter = true
|
||||
// 修改了标准没有点击生成按钮
|
||||
this.isChangeStandardAfterClickGenerate = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
@@ -646,6 +681,8 @@ export default {
|
||||
manualAddOk (result, isEdit) {
|
||||
console.log(result)
|
||||
this.standardDataSource[0] = Object.assign({}, result)
|
||||
// 修改了标准没有点击生成按钮
|
||||
this.isChangeStandardAfterClickGenerate = false
|
||||
this.$emit('processNameChange', (result.standardNumber || '') + '-' + (result.standardName || '') + '-' + '法规符合性排查')
|
||||
this.$forceUpdate()
|
||||
},
|
||||
@@ -689,6 +726,10 @@ export default {
|
||||
this.$emit('loading', true)
|
||||
// 获取下方那个表格信息
|
||||
const param = Object.assign({}, this.standardDataSource[0], this.formInline)
|
||||
// 如果是添加标准分解单来源是不带入或者是手动新增的,是否与上一版相同设置成空
|
||||
if ((param.standardId && param.splitFileSource === DecompositionSource.NO_INPUT.value) || !param.standardId) {
|
||||
param.isSameLastVersion = undefined
|
||||
}
|
||||
regulatoryComplianceCheckGenerate(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
@@ -699,6 +740,8 @@ export default {
|
||||
})
|
||||
this.dataSource = JSON.parse(JSON.stringify(dataSource))
|
||||
this.dataList = JSON.parse(JSON.stringify(dataSource))
|
||||
// 点击了生成按钮
|
||||
this.isChangeStandardAfterClickGenerate = true
|
||||
} else {
|
||||
if (Array.isArray(res.message) && res.message.length > 0) {
|
||||
this.messageLineFeed(this.$t('fileUploadError'), res.message)
|
||||
|
||||
+7
-4
@@ -4,7 +4,7 @@
|
||||
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
:scroll="{x: '100%', y: '50vh'}"
|
||||
ref="table"
|
||||
rowKey="standardNumber"
|
||||
:columns="columns"
|
||||
@@ -15,7 +15,10 @@
|
||||
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<div class="table-text" v-if="text || text === 0" @click="showContent(text,record)">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
@@ -99,7 +102,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('responsibleDepartment'),
|
||||
@@ -120,7 +123,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'result_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
|
||||
+6
-3
@@ -30,7 +30,7 @@
|
||||
<div>
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
:scroll="{x: '100%', y: '50vh'}"
|
||||
ref="table"
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
@@ -40,7 +40,10 @@
|
||||
@change="handleTableChange">
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<div class="table-text" v-if="text || text === 0" @click="showContent(text,record)">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
@@ -138,7 +141,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
}
|
||||
],
|
||||
dataSource: [],
|
||||
|
||||
+7
-4
@@ -11,7 +11,7 @@
|
||||
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
:scroll="{x: '100%', y: '50vh'}"
|
||||
ref="table"
|
||||
rowKey="standardNumber"
|
||||
:columns="columns"
|
||||
@@ -22,7 +22,10 @@
|
||||
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<div class="table-text" v-if="text || text === 0" @click="showContent(text,record)">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
@@ -190,7 +193,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('responsibleDepartment'),
|
||||
@@ -211,7 +214,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'result_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
|
||||
+1
@@ -172,6 +172,7 @@ export default {
|
||||
resultChange (value) {
|
||||
this.model.result = value
|
||||
this.model.result_dictText = this.$refs.resultRef.dictOptions.find(item => item.value === value).text
|
||||
this.model.result_dictTextEn = this.$refs.resultRef.dictOptions.find(item => item.value === value).enText
|
||||
// 清空备注和佐证材料,不满足要求的现状,整改方案,整改周期,整改费用,与其他项目共用性,共用后本项目所需费用
|
||||
this.model.remark = ''
|
||||
this.model.material = ''
|
||||
|
||||
+31
-7
@@ -40,7 +40,7 @@
|
||||
<div>
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
:scroll="{x: '100%', y: '50vh'}"
|
||||
ref="table"
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
@@ -51,7 +51,10 @@
|
||||
@change="handleTableChange">
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<div class="table-text" v-if="text || text === 0" @click="showContent(text,record)">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
@@ -65,7 +68,7 @@
|
||||
<!-- 操作区域 -->
|
||||
<div v-if="!disabled" class="table-operator">
|
||||
<!-- 导入 -->
|
||||
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
|
||||
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" :data="importData" @change="handleImportExcel">
|
||||
<a-button icon="download" type="primary" ghost>{{ $t('import') }}</a-button>
|
||||
</a-upload>
|
||||
<!-- 导出, 文件名称:标准编号+标准名称+符合性排查 -->
|
||||
@@ -77,7 +80,7 @@
|
||||
<div>
|
||||
<j-expand-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
:scroll="{x: '100%', y: '50vh'}"
|
||||
ref="expandTable"
|
||||
rowKey="id"
|
||||
:columns="columnsEvaluate"
|
||||
@@ -91,7 +94,10 @@
|
||||
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<div class="table-text" v-if="text || text === 0" @click="showContent(text,record)">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
@@ -102,8 +108,10 @@
|
||||
style="width: 100%"
|
||||
:placeholder="disabled ? '' : $t('pleaseSelect')"
|
||||
dict-code="evaluation_result"
|
||||
:getPopupContainer="(node) => node.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode"
|
||||
:disabled="disabled"
|
||||
@change="resultChange(record)"
|
||||
@dropdownVisibleChange="resultDropdownVisibleChange"
|
||||
v-model="record.result">
|
||||
</j-dict-select-tag>
|
||||
</template>
|
||||
@@ -224,6 +232,9 @@ export default {
|
||||
},
|
||||
exportFileName () {
|
||||
return this.formInline.standardNumber + this.formInline.standardName + '符合性排查'
|
||||
},
|
||||
importData () {
|
||||
return {taskId: this.$route.query.taskId}
|
||||
}
|
||||
},
|
||||
data () {
|
||||
@@ -321,7 +332,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 设计工程师
|
||||
title: this.$t('designEngineer'),
|
||||
@@ -375,7 +386,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 评价结果
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.evaluationResult'),
|
||||
@@ -860,6 +871,19 @@ export default {
|
||||
// 显示条款内容弹框
|
||||
showContent (val) {
|
||||
this.$refs.splitClauseDetail.open(val)
|
||||
},
|
||||
// 点击评估结果,滚动条滚动到最后
|
||||
resultDropdownVisibleChange (open) {
|
||||
if (!open) {
|
||||
return
|
||||
}
|
||||
const table = this.$refs.expandTable
|
||||
if (table) {
|
||||
const scrollBox = table.$el.querySelector('.ant-table-body')
|
||||
if (scrollBox) {
|
||||
scrollBox.scrollLeft = scrollBox.scrollWidth
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7
-4
@@ -4,7 +4,7 @@
|
||||
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
:scroll="{x: '100%', y: '50vh'}"
|
||||
ref="table"
|
||||
rowKey="standardNumber"
|
||||
:columns="columns"
|
||||
@@ -15,7 +15,10 @@
|
||||
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<div class="table-text" v-if="text || text === 0" @click="showContent(text,record)">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
@@ -113,7 +116,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('responsibleDepartment'),
|
||||
@@ -134,7 +137,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'result_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 不满足要求的现状
|
||||
title: this.$t('workCenter.regulatoryComplianceCheckProcess.theStatusNotMeetRequirements'),
|
||||
|
||||
+6
-3
@@ -14,7 +14,7 @@
|
||||
<div>
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
:scroll="{x: '100%', y: '50vh'}"
|
||||
ref="table"
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
@@ -25,7 +25,10 @@
|
||||
@change="handleTableChange">
|
||||
<!-- 条款内容 -->
|
||||
<template slot="item_content" slot-scope="{text, record}">
|
||||
<div class="table-text" v-if="text || text === 0" @click="showContent(text,record)">
|
||||
<a class="link-a" v-if="text && !text.replace(/<.*?>/ig, '')" @click="showContent(text,record)">
|
||||
{{ $t('view') }}
|
||||
</a>
|
||||
<div class="table-text" v-else-if="text || text === 0" @click="showContent(text,record)">
|
||||
{{ text && text !== 'null' ? text.replace(/<.*?>/ig, ' ') : '' }}
|
||||
</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
@@ -116,7 +119,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'modelStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 设计工程师
|
||||
title: this.$t('designEngineer'),
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
:label="$t('workCenter.regulatoryComplianceCheckProcess.resolutionAttachment')">
|
||||
<j-upload return-id
|
||||
ref="splitFileRef"
|
||||
fileType="xlsx,xls"
|
||||
fileType="xls"
|
||||
:multiple="false"
|
||||
:number="1"
|
||||
@change="splitFileChange"
|
||||
@@ -147,6 +147,7 @@ export default {
|
||||
const valueArr = value.split(this.$refs.standardState.spliter)
|
||||
const arr = this.$refs.standardState.dictOptions.filter(item => valueArr.includes(item.value))
|
||||
this.model.standardState_dictText = arr.map(item => item.title).join(',')
|
||||
this.model.standardState_dictTextEn = arr.map(item => item.enText).join(',')
|
||||
},
|
||||
// 上传拆解单文件改变
|
||||
splitFileChange (value) {
|
||||
@@ -166,6 +167,8 @@ export default {
|
||||
const isEdit = this.model.standardNumber
|
||||
const formData = Object.assign(values)
|
||||
formData.splitFile_dictText = this.model.splitFile_dictText
|
||||
formData.standardState_dictText = this.model.standardState_dictText
|
||||
formData.standardState_dictTextEn = this.model.standardState_dictTextEn
|
||||
this.$emit('ok', formData, isEdit)
|
||||
this.confirmLoading = false
|
||||
this.close()
|
||||
|
||||
+34
-1
@@ -659,7 +659,12 @@ export default {
|
||||
this.$message.success(res.message)
|
||||
this.goBack()
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
// 多行报错
|
||||
if (res.code === 500) {
|
||||
this.messageLineFeedByBr(this.$t('operationFailed'), res.message)
|
||||
} else {
|
||||
this.$message.warn(res.message)
|
||||
}
|
||||
}
|
||||
}).catch((err) => {
|
||||
if (err && err.message && tabList.includes(err.message)) {
|
||||
@@ -770,6 +775,34 @@ export default {
|
||||
return Promise.all(promiseList).catch(() => {
|
||||
throw new Error('base')
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 对包含<br/>的后端错误信息进行处理
|
||||
* @param title
|
||||
* @param content
|
||||
*/
|
||||
messageLineFeedByBr (title, content) {
|
||||
// 可以用分号和<br> </br> <br/>换行
|
||||
content = content.replace(/<br>|<\/br>|<br\/>/g, ';')
|
||||
const messageArr = content.split(';')
|
||||
const htmlDom = []
|
||||
messageArr.map(tt => {
|
||||
if (tt) {
|
||||
htmlDom.push((<div>{tt}</div>))
|
||||
}
|
||||
})
|
||||
this.$warning({
|
||||
title: title,
|
||||
closable: true,
|
||||
width: 800,
|
||||
content: () => <div>
|
||||
{htmlDom}
|
||||
</div>
|
||||
})
|
||||
this.$nextTick(() => {
|
||||
document.getElementsByClassName('ant-modal-confirm-btns')[0].style = 'display: inline-block'
|
||||
document.getElementsByClassName('ant-modal-confirm-content')[0].style = 'max-height: calc(100vh - 300px);overflow-y: auto;'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+17
-17
@@ -9,10 +9,9 @@
|
||||
<!-- 导入(标准主解读人节点 && 选择不分发时) -->
|
||||
<a-upload v-if="isMainInterpreterDistribute && !isDistribute"
|
||||
:data="importParams"
|
||||
:disabled="disabledImport"
|
||||
name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importUrl"
|
||||
@change="handleImport">
|
||||
<a-button type="primary" icon="download" :disabled="disabledImport" ghost>{{ $t('import') }}</a-button>
|
||||
<a-button type="primary" icon="download" ghost>{{ $t('import') }}</a-button>
|
||||
</a-upload>
|
||||
<!-- 批量编辑(解读人填写) -->
|
||||
<a-button type="primary" ghost @click="handleBatchEdit" v-if="showBatchEditBtn">
|
||||
@@ -56,9 +55,9 @@
|
||||
:nameStr="record.interpretPersonIds_dictText" />
|
||||
</template>
|
||||
<template v-slot:action="{text, record}">
|
||||
<a v-if="showEditBtn" @click="handleEdit(record)" class="table-ope-btn">{{ $t('edit') }}</a>
|
||||
<a v-if="showEditBtn" :disabled="disabled" @click="handleEdit(record)" class="table-ope-btn">{{ $t('edit') }}</a>
|
||||
<a-divider v-if="showEditBtn && showDeleteBtn" type="vertical" />
|
||||
<a v-if="showDeleteBtn" @click="handleDelete(record[rowKey])" class="operate-del-btn">{{ $t('delete') }}</a>
|
||||
<a v-if="showDeleteBtn" :disabled="disabled" @click="handleDelete(record[rowKey])" class="operate-del-btn">{{ $t('delete') }}</a>
|
||||
</template>
|
||||
</j-table>
|
||||
<!--条文内容-->
|
||||
@@ -201,7 +200,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'isSameAsPrevVersion_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 相对上一版变化点说明
|
||||
title: this.$t('workCenter.standardInterpretationProcess.explanationOfChangePoints'),
|
||||
@@ -229,7 +228,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'keyController_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 责任部门
|
||||
title: this.$t('workCenter.standardInterpretationProcess.responsibleDepartment'),
|
||||
@@ -243,7 +242,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'responsibleModule_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 关联部门
|
||||
title: this.$t('workCenter.standardInterpretationProcess.relatedDepartments'),
|
||||
@@ -257,35 +256,35 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'relatedModule_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 适用车型
|
||||
title: this.$t('workCenter.standardInterpretationProcess.applications'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'applications_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 动力类型
|
||||
title: this.$t('workCenter.standardInterpretationProcess.powerType'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'powerType_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 专业领域
|
||||
title: this.$t('workCenter.standardInterpretationProcess.professionalField'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'domainArea_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 配置需求
|
||||
title: this.$t('workCenter.standardInterpretationProcess.configurationRequirements'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'configurationRequirements_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // 新认证车实施日期
|
||||
title: this.$t('workCenter.standardInterpretationProcess.newCertificationImplementationDate'),
|
||||
@@ -376,7 +375,7 @@ export default {
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'investigationStage_dictText',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
scopedSlots: { customRender: 'dictText' }
|
||||
},
|
||||
{ // P3证明符合性的交付物名称
|
||||
title: this.$t('workCenter.standardInterpretationProcess.pThree'),
|
||||
@@ -473,7 +472,7 @@ export default {
|
||||
columns.push(...this.columnsExtend)
|
||||
}
|
||||
// 非禁用时,需要操作的节点就加上操作列
|
||||
if (!this.disabled && !noActionCoumnsNodes.includes(this.currentNodeId)) {
|
||||
if (!noActionCoumnsNodes.includes(this.currentNodeId)) {
|
||||
columns.push(this.actionColumn)
|
||||
}
|
||||
return columns
|
||||
@@ -579,9 +578,9 @@ export default {
|
||||
* @param info
|
||||
*/
|
||||
handleImport (info) {
|
||||
// 限制导入大于500MB
|
||||
if (info.file.size > 1024 * 1024 * 500) {
|
||||
this.$message.error('导入文件最大500MB!')
|
||||
// 限制导入大于20MB
|
||||
if (info.file.size > 1024 * 1024 * 20) {
|
||||
this.$message.error(this.$t('importMaxMsg', { size: '20MB' }))
|
||||
info.fileList.pop()
|
||||
return
|
||||
}
|
||||
@@ -937,6 +936,7 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@assets/less/common.less';
|
||||
.clause-table-container {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
+56
-28
@@ -26,14 +26,13 @@
|
||||
<j-dict-select-tag dict-code="yn"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.sameAsPreviousVersion')"
|
||||
@nameChange="(name) => nameChange(name, 'isSameAsPrevVersion')"
|
||||
@dictChange="(name) => dictChange(name, 'isSameAsPrevVersion')"
|
||||
v-decorator="['isSameAsPrevVersion']"/>
|
||||
</a-form-item>
|
||||
<!--相对上一版变化点说明-->
|
||||
<a-form-item :label="$t('workCenter.standardInterpretationProcess.explanationOfChangePoints')" :colon="false">
|
||||
<a-textarea :placeholder="$t('pleaseEnter') + $t('workCenter.standardInterpretationProcess.explanationOfChangePoints')"
|
||||
:maxLength="500"
|
||||
:rows="4"
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('workCenter.standardInterpretationProcess.explanationOfChangePoints')"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
v-decorator="['changeDescription']" />
|
||||
</a-form-item>
|
||||
@@ -46,26 +45,33 @@
|
||||
</a-form-item>
|
||||
<!--涉及系统/部件-->
|
||||
<a-form-item :label="$t('workCenter.standardInterpretationProcess.involvingSystemsComponents')" :colon="false">
|
||||
<tree-selection :placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.involvingSystemsComponents')"
|
||||
filedName="partName"
|
||||
type="checkbox"
|
||||
options-href="/laws/standard/partName/"
|
||||
:nameStr="model.partName"
|
||||
:disabled="disabled"
|
||||
@nameChange="nameChange"
|
||||
v-decorator="['partName']" />
|
||||
<tree-data-selection :placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.involvingSystemsComponents')"
|
||||
v-decorator="['partName']"
|
||||
fieldName="partName"
|
||||
:nameStr="model.partName_dictText"
|
||||
:disabled="disabled"
|
||||
@nameChange="nameChange"
|
||||
optionsHref="/laws/standard/partName/queryFirstList"/>
|
||||
<!--<tree-selection :placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.involvingSystemsComponents')"-->
|
||||
<!-- filedName="partName"-->
|
||||
<!-- type="checkbox"-->
|
||||
<!-- options-href="/laws/standard/partName/"-->
|
||||
<!-- :nameStr="model.partName_dictText"-->
|
||||
<!-- :disabled="disabled"-->
|
||||
<!-- @nameChange="nameChange"-->
|
||||
<!-- v-decorator="['partName']" />-->
|
||||
</a-form-item>
|
||||
<!--关键控制器-->
|
||||
<a-form-item :label="$t('workCenter.standardInterpretationProcess.keyController')" :colon="false">
|
||||
<j-multi-select-tag dict-code="key_controller"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.keyController')"
|
||||
@nameChange="(name) => nameChange(name, 'keyController')"
|
||||
@dictChange="(name) => dictChange(name, 'keyController')"
|
||||
v-decorator="['keyController']"/>
|
||||
</a-form-item>
|
||||
<!--责任部门-->
|
||||
<a-form-item :label="$t('workCenter.standardInterpretationProcess.responsibleDepartment')" :colon="false">
|
||||
<j-select-depart :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.responsibleDepartment')"
|
||||
<j-select-depart :placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.responsibleDepartment')"
|
||||
:backDepart="true"
|
||||
:disabled="disabled"
|
||||
multi
|
||||
@@ -79,12 +85,12 @@
|
||||
<j-multi-select-tag dict-code="responsible_module"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.responsibleDepartmentModule')"
|
||||
@nameChange="(name) => nameChange(name, 'responsibleModule')"
|
||||
@dictChange="(name) => dictChange(name, 'responsibleModule')"
|
||||
v-decorator="['responsibleModule']"/>
|
||||
</a-form-item>
|
||||
<!--关联部门-->
|
||||
<a-form-item :label="$t('workCenter.standardInterpretationProcess.relatedDepartments')" :colon="false">
|
||||
<j-select-depart :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.relatedDepartments')"
|
||||
<j-select-depart :placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.relatedDepartments')"
|
||||
:backDepart="true"
|
||||
:disabled="disabled"
|
||||
multi
|
||||
@@ -98,7 +104,7 @@
|
||||
<j-multi-select-tag dict-code="related_module"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.relatedDepartmentsModule')"
|
||||
@nameChange="(name) => nameChange(name, 'relatedModule')"
|
||||
@dictChange="(name) => dictChange(name, 'relatedModule')"
|
||||
v-decorator="['relatedModule']"/>
|
||||
</a-form-item>
|
||||
<!--适用车型-->
|
||||
@@ -106,7 +112,7 @@
|
||||
<j-multi-select-tag dict-code="applicable_vehicle_type"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.applications')"
|
||||
@nameChange="(name) => nameChange(name, 'applications')"
|
||||
@dictChange="(name) => dictChange(name, 'applications')"
|
||||
v-decorator="['applications']"/>
|
||||
</a-form-item>
|
||||
<!--动力类型-->
|
||||
@@ -114,7 +120,7 @@
|
||||
<j-multi-select-tag dict-code="dynamic_type"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.powerType')"
|
||||
@nameChange="(name) => nameChange(name, 'powerType')"
|
||||
@dictChange="(name) => dictChange(name, 'powerType')"
|
||||
v-decorator="['powerType']"/>
|
||||
</a-form-item>
|
||||
<!--专业领域-->
|
||||
@@ -126,6 +132,7 @@
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
@change="treeNameChange($event, 'domainArea')"
|
||||
:replaceFields="{title: isChinese() ? 'title' : 'enTitle'}"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.professionalField')"/>
|
||||
</a-form-item>
|
||||
<!--配置需求-->
|
||||
@@ -133,26 +140,26 @@
|
||||
<j-multi-select-tag dict-code="configuration_requirements"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.configurationRequirements')"
|
||||
@nameChange="(name) => nameChange(name, 'configurationRequirements')"
|
||||
@dictChange="(name) => dictChange(name, 'configurationRequirements')"
|
||||
v-decorator="['configurationRequirements']"/>
|
||||
</a-form-item>
|
||||
<!--新认证车实施日期-->
|
||||
<a-form-item :label="$t('workCenter.standardInterpretationProcess.newCertificationImplementationDate')" :colon="false">
|
||||
<j-multiple-date-picker :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.newCertificationImplementationDate')"
|
||||
<j-multiple-date-picker :placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.newCertificationImplementationDate')"
|
||||
fieldName="newCerImplementDate"
|
||||
:disabled="disabled"
|
||||
v-decorator="['newCerImplementDate']" />
|
||||
</a-form-item>
|
||||
<!--新生产车实施日期-->
|
||||
<a-form-item :label="$t('workCenter.standardInterpretationProcess.newProduceImplementationDate')" :colon="false">
|
||||
<j-multiple-date-picker :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.newProduceImplementationDate')"
|
||||
<j-multiple-date-picker :placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.newProduceImplementationDate')"
|
||||
fieldName="newProductionImplementation"
|
||||
:disabled="disabled"
|
||||
v-decorator="['newProductionImplementation']" />
|
||||
</a-form-item>
|
||||
<!--注册日期-->
|
||||
<a-form-item :label="$t('workCenter.standardInterpretationProcess.registrationDate')" :colon="false">
|
||||
<j-multiple-date-picker :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.registrationDate')"
|
||||
<j-multiple-date-picker :placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.registrationDate')"
|
||||
fieldName="registrationDate"
|
||||
:disabled="disabled"
|
||||
v-decorator="['registrationDate']" />
|
||||
@@ -160,7 +167,7 @@
|
||||
<!--企业标准-->
|
||||
<a-form-item :label="$t('workCenter.standardInterpretationProcess.enterpriseStandards')" :colon="false">
|
||||
<standard-selection :source="StandardSource.ENTERPRISE.value"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.enterpriseStandards')"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.enterpriseStandards')"
|
||||
:disabled="disabled"
|
||||
:disabledSourceSearch="true"
|
||||
type="radio"
|
||||
@@ -228,7 +235,7 @@
|
||||
<j-multi-select-tag dict-code="investigation_stage"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.investigationStage')"
|
||||
@nameChange="(name) => nameChange(name, 'investigationStage')"
|
||||
@dictChange="(name) => dictChange(name, 'investigationStage')"
|
||||
v-decorator="['investigationStage']"/>
|
||||
</a-form-item>
|
||||
<!--P3证明符合性的交付物名称-->
|
||||
@@ -267,13 +274,14 @@
|
||||
<script>
|
||||
import JMultipleDatePicker from '@comp/JMultipleDatePicker'
|
||||
import StandardSelection from '@comp/selection/StandardSelection'
|
||||
import TreeSelection from '@comp/selection/TreeSelection'
|
||||
import { StandardSource } from '@/enums/commonEnums'
|
||||
import STreeSelect from '@comp/STreeSelect'
|
||||
import { getFormDictTreeList } from '@api/api'
|
||||
import { findNodeByField } from '@/utils/util'
|
||||
import TreeDataSelection from '@comp/selection/TreeDataSelection'
|
||||
export default {
|
||||
name: 'InterpretationClauseTableModal',
|
||||
components: { STreeSelect, TreeSelection, StandardSelection, JMultipleDatePicker },
|
||||
components: { TreeDataSelection, STreeSelect, StandardSelection, JMultipleDatePicker },
|
||||
data () {
|
||||
return {
|
||||
StandardSource,
|
||||
@@ -346,6 +354,20 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
// 字典回显
|
||||
dictChange (dict, field) {
|
||||
console.log('字典回显', dict, field)
|
||||
if (Array.isArray(dict)) {
|
||||
this.model[field + '_dictText'] = dict.map(item => item.text).join(',')
|
||||
this.model[field + '_dictTextEn'] = dict.map(item => item.enText).join(',')
|
||||
} else if (dict) {
|
||||
this.model[field + '_dictText'] = dict.text
|
||||
this.model[field + '_dictTextEn'] = dict.enText
|
||||
} else {
|
||||
this.model[field + '_dictText'] = ''
|
||||
this.model[field + '_dictTextEn'] = ''
|
||||
}
|
||||
},
|
||||
// 下拉多选获取名称
|
||||
nameChange (name, field) {
|
||||
this.model[field + '_dictText'] = name
|
||||
@@ -355,15 +377,21 @@ export default {
|
||||
// 如果没有值就清空名字
|
||||
if (!depart) {
|
||||
this.model[field + '_dictText'] = ''
|
||||
this.model[field + '_dictTextEn'] = ''
|
||||
}
|
||||
},
|
||||
// 部门名称
|
||||
departNameChange (departList, field) {
|
||||
this.model[field + '_dictText'] = departList.map(item => item.text).join(',')
|
||||
this.model[field + '_dictTextEn'] = departList.map(item => item.text).join(',')
|
||||
},
|
||||
// 下拉树名称
|
||||
treeNameChange (list, field) {
|
||||
this.model[field + '_dictText'] = list.map(item => item.label).join(',')
|
||||
console.log('tree', list, field)
|
||||
// 通过value查找对应节点
|
||||
const nodes = list.map(item => findNodeByField(this.professionalFieldTreeList, item.value, 'value'))
|
||||
this.model[field + '_dictText'] = nodes.map(item => item.title).join(',')
|
||||
this.model[field + '_dictTextEn'] = nodes.map(item => item.enTitle).join(',')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+10
-2
@@ -220,7 +220,10 @@ export default {
|
||||
importParams: {
|
||||
standardInterp: '',
|
||||
standardId: '',
|
||||
splitInfoId: ''
|
||||
splitInfoId: '',
|
||||
nodeId: '',
|
||||
taskId: '',
|
||||
projectId: ''
|
||||
},
|
||||
// 禁用导入,分解单来源是不带入时
|
||||
disabledImport: false
|
||||
@@ -306,11 +309,13 @@ export default {
|
||||
return obj
|
||||
},
|
||||
setData (data) {
|
||||
console.log(data)
|
||||
const info = data.data.processStandardInterpret || {}
|
||||
this.importParams.standardInterp = info.id
|
||||
this.importParams.standardId = info.standardId
|
||||
this.importParams.splitInfoId = info.splitInfoId
|
||||
this.importParams.nodeId = this.$route.query.nodeId
|
||||
this.importParams.taskId = this.$route.query.taskId
|
||||
this.importParams.projectId = this.$route.query.projectId
|
||||
this.dataSource = [info]
|
||||
this.formInline = info
|
||||
// 默认是少的条款表格
|
||||
@@ -352,6 +357,9 @@ export default {
|
||||
this.isNextStep = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.interpretationClauseTable.setData(this.clauseDataSource)
|
||||
if (!this.isDistribute) {
|
||||
this.userForm.setFieldsValue(this.formInline)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user