表单项组件化、政策入库流程重构

This commit is contained in:
zyn
2023-09-25 16:58:30 +08:00
parent 24577c7f3a
commit 37a3124c3a
25 changed files with 2888 additions and 12 deletions
@@ -0,0 +1,108 @@
<template>
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
<el-date-picker
:value="currentTime"
:picker-options="pickerOptions"
type="daterange"
range-separator=""
start-placeholder="起始时间"
end-placeholder="结束时间"
value-format="yyyy-MM-dd"
align="right"
@input="handleChange">
</el-date-picker>
</el-form-item>
</template>
<script>
export default {
name: "DataRangePickerFormItem",
props: {
startTime: {
type: String,
required: true
},
endTime: {
type: String,
required: true
},
prop: {
type: String
},
label: {
type: String,
},
disabled: {
type: Boolean,
default: false
},
clearable: {
type: Boolean,
default: true
},
editable: {
type: Boolean,
default: false
}
},
computed: {
placeholder () {
return `请选择${this.label}`
},
},
data () {
return {
currentTime: [],
pickerOptions: {
shortcuts: [{
text: '最近一周',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近一个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近三个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit('pick', [start, end]);
}
}]
},
}
},
created() {
this.currentTime = [this.startTime, this.endTime]
},
methods: {
handleChange (event) {
this.currentTime = event
const startTime = event[0]
const endTime = event[1]
this.$emit('update:startTime', startTime)
this.$emit('update:endTime', endTime)
}
}
}
</script>
<style scoped lang="less">
.add-form-item {
margin-bottom: 0;
min-height: 50px;
line-height: 50px;
border-bottom: 1px dashed #e5e5e5;
clear: both;
}
</style>
@@ -0,0 +1,61 @@
<template>
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
<el-datePicker :value="value"
:editable="editable"
:disabled="disabled"
:clearable="clearable"
:placeholder="placeholder"
value-format="yyyy-MM-dd"
@input="handleChange">
</el-datePicker>
</el-form-item>
</template>
<script>
export default {
name: "DatePickerFormItem",
props: {
value: {
required: true
},
prop: {
type: String
},
label: {
type: String,
},
disabled: {
type: Boolean,
default: false
},
clearable: {
type: Boolean,
default: true
},
editable: {
type: Boolean,
default: false
}
},
computed: {
placeholder () {
return `请选择${this.label}`
},
},
methods: {
handleChange (event) {
this.$emit('input', event)
}
}
}
</script>
<style scoped lang="less">
.add-form-item {
margin-bottom: 0;
min-height: 50px;
line-height: 50px;
border-bottom: 1px dashed #e5e5e5;
clear: both;
}
</style>
@@ -0,0 +1,163 @@
<!-- 多选时间组件 -->
<template>
<el-tooltip class="item" effect="dark" :content="label || config.attrName" placement="top-start">
<el-form-item
:label="label || config.attrName"
:prop="prop || config.attrField"
:label-width="label ? '210px' : '150px'"
class="add-form-item"
:class="{'form-item-disabled': disabled}"
>
<el-input
v-show="false"
:value="value"
:placeholder="placeholder"
:disabled="disabled"
></el-input>
<div class="date-picker-group">
<template v-for="(tag, index) in tagList">
<transition name="el-zoom-in-center">
<div class="tag-wrap" v-if="tagAnimateList.includes(tag)" :key="index">
<el-tag
size="small"
:closable="!disabled"
@close="handleRemoveTag(index)">{{ tag }}</el-tag>
</div>
</transition>
</template>
<div class="tag-wrap" v-if="datePickerVisible">
<el-date-picker
ref="datePicker"
v-model="datePickerVal"
type="date"
:placeholder="placeholder"
format="yyyy-MM-dd"
:picker-options="pickerOptions"
@input="handleChange"
>
</el-date-picker>
</div>
<div class="tag-wrap" v-else>
<el-button
:disabled="disabled"
class="add-date"
type="primary"
plain
size="mini"
@click="handleAddDate">增加日期</el-button>
</div>
</div>
</el-form-item>
</el-tooltip>
</template>
<script>
export default {
name: "DatePickerGroupFormItem",
data () {
return {
datePickerVal: '',
tagList: [],
datePickerVisible: false,
tagAnimateList: []
}
},
props: {
value: {
required: true
},
// label/props 和config 二选一
label: {
type: String,
},
prop: {
type: String
},
config: {
type: Object
},
disabled: {
type: Boolean,
default: false
},
},
computed: {
placeholder () {
return `请输入${this.label}`
},
pickerOptions () {
const _this = this
return {
disabledDate (time) {
return _this.tagList.includes(_this.$dateFormat(time, 'yyyy-MM-dd'))
}
}
}
},
watch: {
value (val) {
this.tagList = val !== '' && val !== null && val !== undefined ? val.split(',') : []
},
tagList: {
handler (val) {
setTimeout(() => {
this.tagAnimateList = JSON.parse(JSON.stringify(val))
})
}
}
},
mounted () {
this.tagList = this.value !== '' && this.value !== null && typeof (this.value) !== 'undefined' ? this.value.split(',') : []
},
methods: {
handleChange (value) {
const val = this.$dateFormat(value, 'yyyy-MM-dd')
this.tagList.push(val)
this.datePickerVisible = false
this.datePickerVal = ''
this.$emit('input', this.tagList.join(','))
},
handleAddDate () {
this.datePickerVisible = true
this.$nextTick(() => {
this.$refs.datePicker.focus()
})
},
handleRemoveTag (index) {
this.tagList.splice(index, 1)
this.$emit('input', this.tagList.join(','))
}
},
}
</script>
<style scoped lang="less">
.add-form-item {
height: auto;
min-height: 50px;
.date-picker-group {
min-height: 49px;
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
padding-left: 10px;
.tag-wrap {
height: 50px;
display: inline-flex;
align-items: center;
margin-right: 5px;
user-select: none;
&:last-child {
margin-right: 0;
}
}
.add-date {
height: 24px;
padding: 0 8px;
line-height: 22px;
}
}
}
</style>
@@ -0,0 +1,89 @@
<template>
<div>
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
<el-input
:value="value"
:placeholder="placeholder"
:clearable="clearable"
readonly
@click.native="choice('dep', placeholder, ids)">
></el-input>
</el-form-item>
<Mechanism-tree
:is-title="choiceTitle"
:is-visible.sync="modalShowDepFlag"
:nodeList="nodeList"
@checkedRole="checkedRole"
></Mechanism-tree>
</div>
</template>
<script>
export default {
name: "DepartmentFormItem",
props: {
value: {
required: true
},
ids: {
required: true
},
prop: {
type: String
},
label: {
type: String,
},
disabled: {
type: Boolean,
default: false
},
clearable: {
type: Boolean,
default: true
},
},
data () {
return {
choiceTitle: '', // 人员选择
modalShowDepFlag: false,
nodeList: [],
}
},
computed: {
placeholder () {
return `选择${this.label}`
},
},
methods: {
choice(type, title, id='') {
this.nodeList = []
if (id) {
this.$set(this, 'nodeList', id.split(','))
}
this.choiceTitle = title
this.modalShowDepFlag = true
},
checkedRole(data) {
let idList = ''
let nameList = ''
data.forEach(item => {
if (nameList.length > 0) {
nameList += ','
idList += ','
}
idList += item.id
nameList += item.name
})
this.$emit('input', nameList)
this.$emit('update:ids', idList)
this.$emit('change')
},
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,385 @@
<template>
<div>
<el-form-item
:label="label"
:prop="prop"
:label-width="labelWidth"
class="add-form-item form-item-disabled"
>
<el-input
:value="value"
:placeholder="placeholder"
:disabled="disabled"
clearable
@input="handleChange"
></el-input>
<el-button
type="primary"
class="common-button-primary"
size="mini"
style="position:absolute;top: 10px;right: 0;"
@click="selectLaws"
v-if="(processModel && !disabled) || !processModel"
>手动查找</el-button>
</el-form-item>
<el-dialog
:title="label"
:visible.sync="replaceLawsNumModel"
width="875px"
:close-on-click-modal="false"
@close="replaceLawsNumModelCancel"
:append-to-body="true"
>
<div class="search-area">
<div class="left">
<el-form :modal="replaceLawsNumForm" :inline="true" class="label-input-form" @keyup.enter.native="getReplaceLawsNumRowSearch">
<!-- <el-form-item label="数据来源" class="search-item">-->
<!-- <el-select v-model="replaceLawsNumForm.dataSource" filterable>-->
<!-- <el-option-->
<!-- v-for="item in dataSourceOptions"-->
<!-- :key="item.value"-->
<!-- :value="item.value"-->
<!-- :label="item.label"-->
<!-- >-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="政策编号" class="search-item input-width">
<el-input
v-model="replaceLawsNumForm.lawsNumber"
placeholder="根据政策编号查找"
clearable
:maxlength="100"></el-input>
</el-form-item>
<el-form-item label="政策名称" class="search-item input-width">
<el-input
v-model="replaceLawsNumForm.numberName"
placeholder="根据政策名称查找"
clearable
:maxlength="100"></el-input>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
type="primary"
class="common-button-primary"
size="small"
@click="getReplaceLawsNumRowSearch">
查询
</el-button>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
class="common-button-default"
size="small"
@click="getResetLawsNumRow">清空
</el-button>
</el-form-item>
</el-form>
</div>
</div>
<el-table
ref="selections"
:data="replaceLawsNumRow"
tooltip-effect="dark"
style="width: 100%;overflow-y: auto;overflow-x: hidden;"
border
:height="300"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}"
@selection-change="selectReplaceStandNumRowChange">
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<!-- <el-table-column-->
<!-- prop="standSortShow"-->
<!-- label="企标类别"-->
<!-- min-width="130"-->
<!-- >-->
<!-- </el-table-column>-->
<el-table-column
label="政策编号"
min-width="130">
<template slot-scope="scope">
<span>
<a v-if="scope.row.lawsNumber" class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.lawsNumber }}</a>
</span>
</template>
</el-table-column>
<el-table-column
prop="lawsName"
label="中文名称"
min-width="130">
</el-table-column>
<el-table-column
prop="lawsName"
label="英文名称"
min-width="130">
</el-table-column>
<el-table-column
prop="issueTime"
label="发文日期"
width="130">
<template slot-scope="scope">{{ $moment(scope.row.issueTime).format('YYYY-MM-DD') }}</template>
</el-table-column>
<el-table-column
prop="standStatusShow"
label="文本状态"
width="130">
</el-table-column>
</el-table>
<loading :loading="replaceLoading">{{$t('m.dataAcquisition')}}</loading>
<!--分页-->
<pagination
style="position: relative;"
:page="replacePage"
:total="replaceTotal"
@pageChange="pageChangeReplace"
@pageSizeChange="pageSizeChangeReplace"></pagination>
<div slot="footer" class="demo-drawer-footer">
<el-button class="common-button-default" round icon="el-icon-close" @click="replaceLawsNumModel = false">取消</el-button>
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="replaceLawsNumModelBt">提交</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
name: "InputForStandardsForLaws",
props: {
label: {
type: String,
required: true
},
prop: {
type: String,
required: true
},
value: {
required: true
},
disabled: {
type: Boolean,
default: false
},
// 栅格比例
span: {
type: Number,
default: 24
},
// 是否为流程中使用
processModel: {
type: Boolean,
default: false
},
// label宽度
labelWidth: {
type: String,
default: '150px'
}
},
data () {
return {
replaceLawsNumModel: false,
sarBussionessLawsEO: {
replaceLawsNum: ''
},
// 代替标准号
replaceLawsNumForm: {
dataSource: 'BUSINESS', // 数据来源
lawsNumber: '', // 政策编号
numberName: '', // 政策名称
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
total: 0,
quoteIdList: '',
menuId: '',
validFlag: 0
},
replaceLawsNumRow: [], // 代替政策号 数组内容
replaceTotal: 0,
selectedListRep: [],
replaceLoading: true,
replacePage: 1,
// 数据搜索 数据来源list
dataSourceOptions: [
{value: 'INLAND_STAND', label: '国内标准法规'},
{value: 'FOREIGN_STAND', label: '海外标准法规'},
{value: 'BUSINESS', label: '企业标准 '},
{value: 'LAWS_STAND', label: '国内外政策'}
],
dataSource: 'LAWS_STAND'
}
},
computed: {
placeholder () {
return `请输入${this.label}`
},
showMessage () {
return `${this.label}不能为空`
},
},
methods: {
getReplaceLawsNumRowSearch () {
this.replaceLawsNumForm.page = 1
this.replacePage = 1
this.getReplaceLawsNumRow()
},
handleChange (event) {
// const value = event.target.value
const value = event
this.$emit('input', value)
},
selectLaws () {
// if (this.standNumFlag === 1) {
// this.$refs.selections.selectAll(false)
// }
// this.sarBussionessLawsEO.replaceLawsNum = ''
this.replaceLawsNumModel = true
this.getReplaceLawsNumRow()
},
// 代替政策号 请求数据
getReplaceLawsNumRow () {
if (this.sarBussionessLawsEO.replaceLawsNum !== null && this.sarBussionessLawsEO.replaceLawsNum !== '') {
this.replaceLawsNumForm.quoteIdList = this.quoteIdList1.toString() === '' ? '' : this.quoteIdList1
} else {
this.quoteIdList1 = []
this.replaceLawsNumForm.quoteIdList = ''
}
const formData = {
...this.replaceLawsNumForm
}
let url = 'lawss/sarLawsInfo/page'
this.$http.get(url, formData, {
_this: this,
loading: 'replaceLoading'
}, res => {
this.replaceLawsNumRow = res.data.list
this.replaceTotal = res.data.count
if (this.selectedListRep.length !== 0) {
this.selectedListRep.map((list) => {
this.replaceLawsNumRow.map((item) => {
if (list.id === item.id) {
item._checked = true
}
})
})
}
}, e => {
})
},
// 代替政策编号-取消
replaceLawsNumModelCancel () {
// this.replaceLawsNumModel = false
this.$refs.selections.clearSelection()
},
// 代替政策号 table选择事件
selectReplaceStandNumRowChange (row) {
this.selectedListRep = row
},
// 代替政策分页
pageChangeReplace (page) {
this.replacePage = page
this.replaceLawsNumForm.page = page
this.getReplaceLawsNumRow()
},
pageSizeChangeReplace (pageSize) {
// this.replaceRows = pageSize
this.replaceLawsNumForm.pageSize = pageSize
this.getReplaceLawsNumRow()
},
// 代替政策编号确定
replaceLawsNumModelBt () {
let textArr = []
if (typeof this.value === 'string') {
if (this.value) {
textArr = this.value.split(',')
}
}
if (this.selectedListRep.length === 0) {
return this.$message({
message: '请先选择数据',
type: 'warning'
})
}
if (this.selectedListRep.length + textArr.length > 20) {
return this.$message({
message: '代替文件号最多选择20项',
type: 'warning'
})
}
this.selectedListRep.map((item) => {
let texts = ''
// 判断数据是国内外法规标准还是企业标准
if (this.dataSource === 'LAWS_STAND') {
texts = item.lawsNumber
}
textArr.push(texts)
textArr = [...new Set(textArr)]
this.replaceLawsNumModel = false
})
// this.SarLawsInfoEO.replaceLawsNum = textArr.join(',')
this.$emit('input', textArr.join(','))
this.$refs.selections.clearSelection()
},
// 点击查看
handlePreview (item) {
let name = ''
let pageType = ''
switch (this.dataSource) {
case 'INLAND_STAND':
name = 'OtherStandardDetails'
pageType = 'INLAND_STAND'
break
case 'FOREIGN_STAND':
name = 'OtherStandardDetails'
pageType = 'FOREIGN_STAND'
break
case 'BUSINESS':
name = 'OtherBussStandardDetails'
pageType = 'BUSINESS_STAND'
break
case 'LAWS_STAND':
name = 'OtherLawsStandDetails'
pageType = 'LAWS_STAND'
break
}
let routeUrl = this.$router.resolve({
name: name,
params: {
id: item.id,
pageType: pageType
}
})
window.open(routeUrl.href, '_blank')
},
getResetLawsNumRow () {
this.replaceLawsNumForm = {
lawsNumber: '', // 政策编号
numberName: '', // 政策名称
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
total: 0,
validFlag: '0'
}
this.getReplaceLawsNumRow()
}
}
}
</script>
<style scoped lang="less">
/deep/.el-dialog__body {
padding: 0 20px 0;
}
/deep/.el-dialog__footer {
padding: 0 20px 20px;
}
/deep/.input-width input.el-input__inner {
width: 220px;
}
</style>
@@ -0,0 +1,85 @@
<template>
<div class="wrapper">
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
<el-input
:value="value"
:placeholder="placeholder"
:clearable="clearable"
@input="handleChange"
></el-input>
</el-form-item>
<slot />
</div>
</template>
<script>
export default {
name: "InputFormItem",
props: {
value: {
required: true
},
prop: {
type: String
},
label: {
type: String,
},
disabled: {
type: Boolean,
default: false
},
clearable: {
type: Boolean,
default: true
},
},
computed: {
placeholder () {
return `请输入${this.label}`
},
},
methods: {
handleChange (event) {
this.$emit('input', event)
}
}
}
</script>
<style scoped lang="less">
.wrapper {
display: flex;
border-bottom: 1px dashed #e5e5e5;
}
.add-form-item {
margin-bottom: 0;
min-height: 50px;
line-height: 50px;
//border-bottom: 1px dashed #e5e5e5;
border-bottom: none;
clear: both;
flex: 1;
}
.add-form-item /deep/ .el-form-item__content .el-input .el-input__inner {
height: 45px;
//line-height: 49px;
//border: none;
//font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
//font-weight: lighter;
}
//.add-form-item /deep/ .el-form-item__label {
// padding: 0;
// line-height: 50px;
// font-size: 14px;
// color: #333333;
// text-align: left;
// overflow: hidden;
// white-space: nowrap;
// text-overflow: ellipsis;
//}
//.form-item-disabled /deep/ .el-form-item__label {
// color: #666666;
// background: transparent;
//}
</style>
@@ -0,0 +1,46 @@
<template>
<el-collapse v-model="activeName" accordion>
<el-collapse-item title="回执说明" name="1">
<div style="margin: 10px 0;">
<el-input :disabled="disabled"
type="textarea"
:rows="3"
resize="none"
placeholder="请输入意见"
:value="value"
@input="handleChange">
</el-input>
</div>
</el-collapse-item>
</el-collapse>
</template>
<script>
export default {
name: "ReceiptDescription",
data () {
return {
activeName:'1',
}
},
props: {
value: {
type: String,
default: true
},
disabled: {
type: Boolean,
default: false
}
},
methods: {
handleChange (event) {
this.$emit('input', event)
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,99 @@
<template>
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
<el-select
:value="value"
:disabled="disabled"
:placeholder="placeholder"
:filterable="filterable"
:clearable="clearable"
@change="handleChange">
<el-option
v-for="item in options"
:key="item.value"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</el-form-item>
</template>
<script>
export default {
name: "SelectFormItem",
props: {
value: {
required: true
},
prop: {
type: String
},
label: {
type: String,
},
disabled: {
type: Boolean,
default: false
},
// 下拉选项
options: {
type: Array,
required: true
},
clearable: {
type: Boolean,
default: true
},
filterable: {
type: Boolean,
default: true
},
},
computed: {
placeholder () {
return `请选择${this.label}`
},
},
methods: {
handleChange (event) {
this.$emit('input', event)
}
}
}
</script>
<style scoped lang="less">
.add-form-item {
margin-bottom: 0;
min-height: 50px;
line-height: 50px;
border-bottom: 1px dashed #e5e5e5;
clear: both;
}
//.add-form-item /deep/ .el-form-item__content .el-input .el-input__inner {
// height: 45px;
// line-height: 49px;
// border: none;
// font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
// font-weight: lighter;
//}
//.add-form-item /deep/ .el-form-item__label {
// padding: 0;
// line-height: 50px;
// font-size: 14px;
// color: #333333;
// text-align: left;
// overflow: hidden;
// white-space: nowrap;
// text-overflow: ellipsis;
//}
//.form-item-disabled /deep/ .el-form-item__label {
// color: #666666;
// background: transparent;
//}
//.add-form-item /deep/ .el-form-item__content .el-select {
// width: 100%;
//}
//.add-form-item /deep/ .el-input--suffix {
// padding-right: 30px;
//}
</style>
@@ -0,0 +1,80 @@
<template>
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
<el-select
:value="data"
multiple
:disabled="disabled"
:placeholder="placeholder"
:filterable="filterable"
:clearable="clearable"
@change="handleChange">
<el-option
v-for="item in options"
:key="item.value"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</el-form-item>
</template>
<script>
export default {
name: "SelectMultipleFormItem",
props: {
value: {
required: true
},
prop: {
type: String
},
label: {
type: String,
},
disabled: {
type: Boolean,
default: false
},
// 下拉选项
options: {
type: Array,
required: true
},
clearable: {
type: Boolean,
default: true
},
filterable: {
type: Boolean,
default: true
},
},
computed: {
placeholder () {
return `请选择${this.label}`
},
data () {
if (this.value && this.value !== '') {
return this.value.split(',')
} else {
return []
}
}
},
methods: {
handleChange (event) {
this.$emit('input', event.join(','))
}
}
}
</script>
<style scoped lang="less">
.add-form-item {
margin-bottom: 0;
min-height: 50px;
line-height: 50px;
border-bottom: 1px dashed #e5e5e5;
clear: both;
}
</style>
@@ -0,0 +1,96 @@
<template>
<el-timeline-item :timestamp="timestamp" placement="top" :color="name ? '#66b1ff' : ''" class="timeline-item">
<el-card>
<el-form-item :prop="prop" style="margin-bottom: 0">
<h4>{{ title }}</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input
:disabled="disabled"
:value="name"
:placeholder="title"
readonly
@click.native="choice(id)"></el-input>
</div>
</el-form-item>
</el-card>
<Role-tree v-if="!disabled"
:check-box="!multiple"
:is-title="`选择${title}`"
:is-visible.sync="modalShowFlag"
@checkedRole="checkedRole"
:nodeList="nodeList"
></Role-tree>
</el-timeline-item>
</template>
<script>
export default {
name: "TimeLineFormItem",
props: {
id:{
type: String,
required: true
},
name:{
type: String,
required: true
},
prop: {
type: String
},
disabled: {
type: Boolean,
default: false
},
timestamp: {
type: String,
required: true
},
title: {
type: String,
required: true
},
multiple: {// 多选
type: Boolean,
default: false
}
},
data () {
return {
drawerTitle: '', //drawer标题
modalShowFlag: false, // drawer开关
nodeList: [],
}
},
methods: {
handleChange (event) {
this.$emit('input', event)
},
choice (id) {
this.nodeList = id.split(',')
this.modalShowFlag = true
},
checkedRole (data) {
const id = this.joint(data, 'id')
const name = this.joint(data, 'name')
this.$emit('update:id', id)
this.$emit('update:name', name)
},
joint (data, type) {
return data.reduce((init,item) => {
if (init === '') {
return item[type]
} else {
return init + ',' + item[type]
}
}, '')
}
}
}
</script>
<style scoped lang="less">
.timeline-item /deep/ .el-form-item__content{
margin: 0!important;
}
</style>
@@ -0,0 +1,208 @@
<template>
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
<el-input
disabled
style="display: none;"
:value="ids"
clearable
></el-input>
<div style="display: flex;justify-content: space-between">
<div style="width: 80%;margin-top: 13px">
<div v-for="file in FileList"
:key="file.id"
@click="onPreview(file)"
style="color: #409eff;cursor:pointer"
class="fileClass">
{{ file.name }}
</div>
</div>
<div style="width: 20%;">
<el-button :disabled="disabled"
type="primary"
class="common-button-primary"
size="mini"
@click="showUpload"
style="margin-left: 10px; margin-top: 11px; float: right;">
<i class="el-icon-upload"></i>
</el-button>
</div>
</div>
<el-dialog width='400px' :visible.sync="fileMadel" title="上传文件">
<el-upload
multiple
drag
:file-list="fileList"
:action="fileUrl"
ref="importfile"
name="file"
:accept="accept"
:before-upload="beforeUpload"
:on-success="onSuccess"
:on-preview="onPreview"
:on-remove="removeOneFile"
:show-file-list="true"
>
<div style="padding: 20px 0">
<i class="el-icon-upload" style="color: #3399ff"></i>
<p>点击或拖拽上传文件</p>
</div>
</el-upload>
</el-dialog>
</el-form-item>
</template>
<script>
export default {
name: "UploadFormItem",
props: {
ids: {
required: true,
type: String,
default: ''
},
names: {
required: true,
type: String
},
prop: {
type: String
},
label: {
type: String,
},
disabled: {
type: Boolean,
default: false
},
fileUrl: {
type: String,
default: () => 'api/att/attFile/uploadNew'
},
accept: {
type: String,
default: '.pdf, .PDF, .ppt, .PPT, .pptx, .PPTX, .doc, .DOC, .docx, .DOCX, .xls, .xlsx'
},
size: {
type: Number,
default: 200
}
},
created () {
this.initFileList()
},
data () {
return {
fileMadel: false,
fileList: [],// 用于el-upload
FileList: [],// 用于回显
}
},
methods: {
showUpload () {
this.fileMadel = true;
},
initFileList () {
if (this.ids && this.ids !== '' && this.names && this.names !== '') {
let fileList = []
const idArr = this.ids.split(',')
const nameArr = this.names.split(',')
for (let i = 0 ; i < idArr.length; i++) {
fileList.push({
id: idArr[i],
name: nameArr[i]
})
}
this.fileList = fileList
this.FileList = fileList
}
},
beforeUpload (file) {
const fileName = file.name
const fileSuffix = fileName.slice(fileName.lastIndexOf('.') + 1)
// 判断上传文件格式
const acceptArr = this.accept.split(',').map(type => type.slice(type.lastIndexOf('.') + 1))
if (acceptArr.includes(fileSuffix)) {
return true
} else {
this.$message.error('文件' + file.name + `格式不正确,请上传${acceptArr.join(',')}文件`)
return false
}
// 判断文件上传大小
if (file.size / 1024 / 1024 <= this.size) {
return true
} else {
this.$message.error('文件' + file.name + `大小不超过${this.size}M`)
return false
}
return true
},
// 导入标准数据成功后执行
onSuccess (response, file,fileList) {
// 上传成功后判断是否是两条数据是的话替换掉旧数据
if (response.ok) {
const fileObj = {
id: file.response.data.id,
name: file.response.data.name
}
let ids;
let names;
if (this.ids && this.ids.length > 0) {
ids = this.ids + ',' + fileObj.id
names = this.names + ',' + fileObj.name
} else {
ids = fileObj.id
names = fileObj.name
}
this.$set(this.FileList, this.FileList.length, fileObj)
this.$emit('update:ids', ids)
this.$emit('update:names', names)
this.$message({
message: response.message,
type: 'success'
})
}
},
removeOneFile(file, fileList) {
const ids = fileList.reduce((init, file) => {
if (init === '') {
return file.id || file.response.data.id
} else {
return init + ',' + (file.id || file.response.data.id)
}
}, '')
const names = fileList.reduce((init, file) => {
if (init === '') {
return file.name
} else {
return init + ',' + file.name
}
}, '')
this.FileList = fileList.map(file => ({
id: file.id || file.response.data.id,
name: file.name
}))
this.$emit('update:ids', ids)
this.$emit('update:names', names)
},
// 文件预览及下载
onPreview(file) {
let attId = ""
if(file && file.id){
attId = file.id
}else {
attId = file.response.data.id
}
this.$preview(attId)
},
}
}
</script>
<style scoped lang="less">
.fileClass{
line-height: 22px !important;
}
</style>
@@ -0,0 +1,104 @@
<template>
<div>
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
<el-input
:value="value"
:placeholder="placeholder"
:clearable="clearable"
readonly
@click.native="choice('role', placeholder, value)">
></el-input>
</el-form-item>
<Role-tree
:is-title="choiceTitle"
:is-visible.sync="modalShowRoleFlag"
@checkedRole="checkedRole"
:nodeList="nodeList"
></Role-tree>
</div>
</template>
<script>
export default {
name: "personFormItem",
props: {
value: {
required: true
},
prop: {
type: String
},
label: {
type: String,
},
disabled: {
type: Boolean,
default: false
},
clearable: {
type: Boolean,
default: true
},
},
data () {
return {
choiceTitle: '', // 人员选择
modalShowRoleFlag: false,
nodeList: [],
}
},
computed: {
placeholder () {
return `选择${this.label}`
},
},
methods: {
handleChange (event) {
this.$emit('input', event)
},
choice(type, title, nameId) {
this.nodeList = []
if (nameId) {
let nameId1 = nameId.split(',')
let idList = []
nameId1.forEach(item => {
let a, b
a = item.substring(item.indexOf('(') +1)
b = a.substring(0, a.lastIndexOf(')'))
idList.push(b)
})
idList = idList.join(',')
// 管理员(admin),张兰英(zhanglanying) => ['admin', 'zhanglanying']
this.nodeList = idList.split(',')
}
this.choiceTitle = title
this.modalShowRoleFlag = true
},
checkedRole(data) {
let idList = ''
let nameList = ''
data.forEach(item => {
if (nameList.length > 0) {
nameList += ','
idList += ','
}
idList += item.id
nameList += item.name
})
this.$emit('input', nameList)
this.$emit('change', {
ids: this.unique(data.map(item => item.topUnitId)).join(","),
names: this.unique(data.map(item => item.topUnit)).join(",")
})
},
unique(newArr) {
const res = new Map();
return newArr.filter((newArr) => !res.has(newArr) && res.set(newArr, 1));
},
}
}
</script>
<style scoped>
</style>
@@ -57,7 +57,7 @@
<p class="half"><label style=" margin-right: 95px;">是否纳入认证清单</label><span>{{ sarStandardsInfoEO.isRelateAccess === '1' ? '是' : (sarStandardsInfoEO.isRelateAccess ? '否':'-')}}</span></p>
<p class="half"><label style=" margin-right: 190px;">年度</label><span>{{ sarStandardsInfoEO.lawsYear || '-' }}</span></p>
<p class="half"><label style=" margin-right: 95px;">福田转发通知文号</label><span>{{ sarStandardsInfoEO.lawsNotisyncNum || '-' }}</span></p>
<p class="half"><label style=" margin-right: 125px;">通知文号链接</label><span>{{ sarStandardsInfoEO.NotisyncNumLink || '-' }}</span></p>
<p class="half"><label style=" margin-right: 125px;">通知文号链接</label><span>{{ sarStandardsInfoEO.notisyncNumLink || '-' }}</span></p>
<p class="half"><label style=" margin-right: 157px;">信息简报</label><span>{{ sarStandardsInfoEO.lawsBulletin || '-' }}</span></p>
<p class="half"><label style=" margin-right: 190px;">标签</label><span>{{ sarStandardsInfoEO.lawsLabel || '-' }}</span></p>
<p class="half"><label style=" margin-right: 62px;">备注最终政策发布</label><span>{{ sarStandardsInfoEO.lawsRemark || '-' }}</span></p>
@@ -219,8 +219,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="通知文号链接" prop="NotisyncNumLink" label-width="150px" class="add-form-item">
<el-input v-model="sarLawsStandEO.NotisyncNumLink"
<el-form-item label="通知文号链接" prop="notisyncNumLink" label-width="150px" class="add-form-item">
<el-input v-model="sarLawsStandEO.notisyncNumLink"
placeholder="请输入通知文号链接"
clearable></el-input>
</el-form-item>
@@ -443,12 +443,12 @@
</template>
<!--实施日期-多个日期标签-->
<template v-else-if="field.attrField === 'SSRQLAWS'">
<cus-tom-data-picker-group
<DatePickerGroupFormItem
:key="field.attrField"
:config="field"
v-model="sarLawsStandEO[field.attrField]"
:disabled="formdisableflag"
></cus-tom-data-picker-group>
></DatePickerGroupFormItem>
</template>
<!--单日期选择-->
<template v-else-if="field.attrType === 'DATE_PICKER'">
@@ -551,8 +551,9 @@
import CustomSVPPS from '@/components/CustomFormComponents/SVPPS'
import CustomInputForStandards from '@/components/CustomFormComponents/InputForStandardsForLaws'
import CustomInput from '@/components/CustomFormComponents/Input'
import CusTomDataPickerGroup
from "@/pages/regulatoryRepository/localProductsOrProjectLibrary/components/DatePickerGroup";
// import CusTomDataPickerGroup
// from "@/pages/regulatoryRepository/localProductsOrProjectLibrary/components/DatePickerGroup";
import DatePickerGroupFormItem from "@/components/hzwlComponents/DatePickerGroupFormItem";
import CustomDatePick from '@/components/CustomFormComponents/DatePicker'
import CustomFile from '@/components/CustomFormComponents/File'
import CustomTextarea from '@/components/CustomFormComponents/Textarea'
@@ -1022,7 +1023,8 @@ export default {
CustomSVPPS,
CustomInputForStandards,
CustomInput,
CusTomDataPickerGroup,
// CusTomDataPickerGroup,
DatePickerGroupFormItem,
CustomDatePick,
CustomFile,
CustomTextarea,
@@ -1629,8 +1631,6 @@ export default {
})
},
choice(type, title, nameId) {
console.log(nameId)
// 管理员(admin),张兰英(zhanglanying) => ['admin', 'zhanglanying']
this.nodeList = []
if (nameId) {
let nameId1 = nameId.split(',')
@@ -1642,6 +1642,7 @@ export default {
idList.push(b)
})
idList = idList.join(',')
// 管理员(admin),张兰英(zhanglanying) => ['admin', 'zhanglanying']
this.nodeList = idList.split(',')
}
this.choiceTitle = title
@@ -1677,6 +1678,7 @@ export default {
}
this.$set(this.sarLawsStandEO, field, nameList)
if (this.choiceTitle === '选择投稿人') {
// 带入投稿单位
this.sarLawsStandEO.TGDWLAWSID = this.unique(data.map(item => item.topUnitId)).join(",")
this.sarLawsStandEO.TGDWLAWS = this.unique(data.map(item => item.topUnit)).join(",")
}
@@ -0,0 +1,222 @@
<template>
<div>
<ProcessTitle>
<template slot="title">基础信息</template>
</ProcessTitle>
<div class="prc-content-border">
<el-row :gutter="24">
<el-col :span="12">
<SelectFormItem label="1级政策分类"
prop="lawsTypeFirstLevel"
v-model="form.lawsTypeFirstLevel"
:disabled="disabled"
:options="dict.lawsTypeFirstLevelOptions || []">
</SelectFormItem>
</el-col>
<el-col :span="12">
<SelectFormItem label="2级政策分类"
prop="lawsTypeSecondLevel"
v-model="form.lawsTypeSecondLevel"
:disabled="disabled"
:options="dict.lawsTypeSecondLevelOptions || []">
</SelectFormItem>
</el-col>
<el-col :span="12">
<SelectFormItem label="3级政策分类"
prop="lawsTypeThirdLevel"
v-model="form.lawsTypeThirdLevel"
:disabled="disabled"
:options="dict.lawsTypeThirdLevelOptions || []">
</SelectFormItem>
</el-col>
<el-col :span="12">
<SelectFormItem label="4级政策分类"
prop="lawsTypeFourthLevel"
v-model="form.lawsTypeFourthLevel"
:disabled="disabled"
:options="dict.lawsTypeFourthLevelOptions || []">
</SelectFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="政策名称"
prop="lawsName"
v-model="form.lawsName"
:disabled="disabled">
</InputFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="英文名称"
prop="lawsEnName"
v-model="form.lawsEnName"
:disabled="disabled">
<el-button :disabled="disabled"
type="primary"
style="height: 40px;margin-top: 5px;"
@click="handleSearch">
根据编号名称文本状态查询
</el-button>
</InputFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="政策文号"
prop="lawsNo"
v-model="form.lawsNo"
:disabled="disabled">
</InputFormItem>
</el-col>
<el-col :span="12">
<DatePickerFormItem label="发文日期"
prop="issueTime"
v-model="form.issueTime" >
</DatePickerFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="发文单位"
prop="issueCompany"
v-model="form.issueCompany"
:disabled="disabled">
</InputFormItem>
</el-col>
<el-col :span="12">
<DataRangePickerFormItem label="征集意见周期"
prop="commentCycleDate"
:startTime.sync="form.commentCycleStart"
:endTime.sync="form.commentCycleEnd">
</DataRangePickerFormItem>
</el-col>
<el-col :span="12">
<SelectFormItem label="文本状态"
prop="lawsTextState"
v-model="form.lawsTextState"
:disabled="disabled"
:options="dict.lawsTextStateOptions || []">
</SelectFormItem>
</el-col>
<el-col :span="12">
<SelectMultipleFormItem label="适用车型"
prop="lawsSycx"
v-model="form.lawsSycx"
:disabled="disabled"
:options="dict.lawsSycxOptions || []">
</SelectMultipleFormItem>
</el-col>
<el-col :span="12">
<SelectFormItem label="是否纳入认证清单"
prop="isRelateAccess"
v-model="form.isRelateAccess"
:disabled="disabled"
:options="isRelateAccessOptions || []">
</SelectFormItem>
</el-col>
<el-col :span="12">
<SelectFormItem label="年度"
prop="lawsYear"
v-model="form.lawsYear"
:disabled="disabled"
:options="dict.lawsYearOptions || []">
</SelectFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="福田转发通知文号"
prop="lawsNotisyncNum"
v-model="form.lawsNotisyncNum"
:disabled="disabled">
</InputFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="通知文号链接"
prop="notisyncNumLink"
v-model="form.notisyncNumLink"
:disabled="disabled">
</InputFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="信息简报"
prop="lawsBulletin"
v-model="form.lawsBulletin"
:disabled="disabled">
</InputFormItem>
</el-col>
<el-col :span="12">
<SelectMultipleFormItem label="标签"
prop="lawsLabel"
v-model="form.lawsLabel"
:disabled="disabled"
:options="dict.lawsLabelOptions || []">
</SelectMultipleFormItem>
</el-col>
<el-col :span="12">
<InputFormItem label="备注(最终政策发布)"
prop="lawsRemark"
v-model="form.lawsRemark"
:disabled="disabled">
</InputFormItem>
</el-col>
</el-row>
</div>
<SearchResult ref="SearchResultRef" :dict="dict" @dragIn="dragIn"></SearchResult>
</div>
</template>
<script>
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
import SelectFormItem from '@/components/hzwlComponents/SelectFormItem'
import InputFormItem from '@/components/hzwlComponents/InputFormItem'
import DatePickerFormItem from '@/components/hzwlComponents/DatePickerFormItem'
import DataRangePickerFormItem from '@/components/hzwlComponents/DataRangePickerFormItem'
import SelectMultipleFormItem from '@/components/hzwlComponents/SelectMultipleFormItem'
import SearchResult from './SearchResult'
export default {
name: "Basic",
components: {
ProcessTitle,
SelectFormItem,
InputFormItem,
DatePickerFormItem,
DataRangePickerFormItem,
SelectMultipleFormItem,
SearchResult
},
data () {
return {
isRelateAccessOptions: [
{
label: '是',
value: '1'
},
{
label: '否',
value: '2'
}
]
}
},
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: () => false
},
dict: {
type: Object,
required: true
}
},
methods: {
handleSearch () {
this.$refs.SearchResultRef.open()
},
dragIn (form) {
this.$emit('dragIn', form)
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,80 @@
<template>
<div>
<ProcessTitle>
<template slot="title">实施日期</template>
</ProcessTitle>
<div class="prc-content-border">
<el-row :gutter="24">
<el-col :span="12">
<DatePickerGroupFormItem
label="实施日期(标准文本)"
prop="SSRQLAWS"
v-model="form.SSRQLAWS"
:disabled="disabled"
></DatePickerGroupFormItem>
</el-col>
<el-col :span="12">
<DatePickerFormItem label="新认证实施日期"
prop="XRZSSRQLAWS"
v-model="form.XRZSSRQLAWS"
:disabled="disabled">
</DatePickerFormItem>
</el-col>
<el-col :span="12">
<DatePickerFormItem label="新生产实施日期"
prop="ZCXSSRQLAWS"
v-model="form.ZCXSSRQLAWS"
:disabled="disabled" >
</DatePickerFormItem>
</el-col>
<el-col :span="12">
<DatePickerFormItem label="在用车实施日期"
prop="XCXSSRQLAWS"
v-model="form.XCXSSRQLAWS"
:disabled="disabled">
</DatePickerFormItem>
</el-col>
<el-col :span="12">
<DatePickerFormItem label="生效日期"
prop="SXRQLAWS"
v-model="form.SXRQLAWS"
:disabled="disabled" >
</DatePickerFormItem>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
import DatePickerGroupFormItem from "@/components/hzwlComponents/DatePickerGroupFormItem";
import DatePickerFormItem from '@/components/hzwlComponents/DatePickerFormItem'
export default {
name: "EffectiveDate",
components: {
ProcessTitle,
DatePickerGroupFormItem,
DatePickerFormItem
},
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: () => false
},
dict: {
type: Object,
required: true
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,47 @@
<template>
<el-timeline>
<el-form
ref="userForm"
:model="roleForm"
:rules="roleRules"
class="label-input-form">
</el-form>
<TimeLineFormItem
prop="prcCreateUserName"
timestamp="发起流程"
title="流程发起人"
:id.sync="roleForm.prcCreateUser"
:name.sync="roleForm.prcCreateUserName"
disabled />
<TimeLineFormItem
prop="jlUserName"
timestamp="选择政策业务经理"
title="政策业务经理"
:id.sync="roleForm.jlUserId"
:name.sync="roleForm.jlUserName"
/>
</el-timeline>
</template>
<script>
import TimeLineFormItem from '@/components/hzwlComponents/TimeLineFormItem'
export default {
name: "PersonInfo",
components: {
TimeLineFormItem
},
props: {
roleForm: {
type: Object
},
roleRules: {
type: Object
}
},
}
</script>
<style scoped>
</style>
@@ -0,0 +1,94 @@
<template>
<div>
<ProcessTitle>
<template slot="title">适用范围</template>
</ProcessTitle>
<div class="prc-content-border">
<el-row :gutter="24">
<el-col :span="12">
<SelectFormItem label="我司参与深度"
prop="CYSDLAWS"
v-model="form.CYSDLAWS"
:disabled="disabled"
:options="dict.CYSDLAWSOptions || []">
</SelectFormItem>
<DepartmentFormItem label="投稿单位"
prop="TGDWLAWS"
v-model="form.TGDWLAWS"
:ids.sync="form.TGDWLAWSID"
:disabled="disabled">
</DepartmentFormItem>
<DepartmentFormItem label="责任部门"
prop="ZRBMLAWS"
v-model="form.ZRBMLAWS"
:ids.sync="form.ZRBMLAWSID"
:disabled="disabled">
</DepartmentFormItem>
</el-col>
<el-col :span="12">
<personFormItem label="投稿人"
prop="TGRLAWS"
v-model="form.TGRLAWS"
@change="TGRLAWSChange"
:disabled="disabled">
</personFormItem>
<SelectMultipleFormItem label="适用认证"
prop="SYRZLAWS"
v-model="form.SYRZLAWS"
:disabled="disabled"
:options="dict.syrzOptions || []">
</SelectMultipleFormItem>
<personFormItem label="责任工程师"
prop="ZRGCSLAWS"
v-model="form.ZRGCSLAWS"
:disabled="disabled">
</personFormItem>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
import SelectFormItem from '@/components/hzwlComponents/SelectFormItem'
import personFormItem from '@/components/hzwlComponents/personFormItem'
import DepartmentFormItem from '@/components/hzwlComponents/DepartmentFormItem'
import SelectMultipleFormItem from '@/components/hzwlComponents/SelectMultipleFormItem'
export default {
name: "Range",
components: {
ProcessTitle,
SelectFormItem,
personFormItem,
DepartmentFormItem,
SelectMultipleFormItem
},
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: () => false
},
dict: {
type: Object,
required: true
}
},
methods: {
TGRLAWSChange (val) {
if (val) {
this.form.TGDWLAWSID = val.ids
this.form.TGDWLAWS = val.names
}
},
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,69 @@
<template>
<div>
<ProcessTitle>
<template slot="title">关联信息</template>
</ProcessTitle>
<div class="prc-content-border">
<el-row :gutter="24">
<el-col :span="12">
<InputForStandardsForLaws
label="代替文件号"
prop="DTWJHLAWS"
v-model="form.DTWJHLAWS"
:disabled="disabled"
labelWidth="210px"
></InputForStandardsForLaws>
<UploadFormItem
label="关联文件"
prop="GLWJLAWS"
:ids.sync="form.GLWJLAWS"
:names.sync="form.GLWJLAWSName"
:disabled="disabled">
</UploadFormItem>
</el-col>
<el-col :span="12">
<InputForStandardsForLaws
label="引用标准&政策"
prop="YYBZZCLAWS"
v-model="form.YYBZZCLAWS"
:disabled="disabled"
labelWidth="210px"
></InputForStandardsForLaws>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
import InputForStandardsForLaws from '@/components/hzwlComponents/InputForStandardsForLaws'
import UploadFormItem from "@/components/hzwlComponents/UploadFormItem";
export default {
name: "RelatesInfo",
components: {
ProcessTitle,
InputForStandardsForLaws,
UploadFormItem
},
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: () => false
},
dict: {
type: Object,
required: true
}
},
}
</script>
<style scoped>
</style>
@@ -0,0 +1,297 @@
<template>
<el-drawer
ref="standard"
title="查询结果"
size="1300px"
:visible.sync="standardDrawer"
direction="rtl"
:before-close="handleReviseDrawerClose">
<div class="standard-content">
<div class="content">
<div class="standard-table-search">
<el-form :model="SearchForm" inline class="label-input-form search-area">
<el-form-item label="政策编号" style="margin-right:-20px" prop="lawsNumber" class="search-item" >
<el-input :disabled="disabled"
v-model="SearchForm.lawsNumber"
clearable placeholder="根据编号查找"
:maxlength="100"
@keyup.enter.native="getData"/>
</el-form-item>
<el-form-item label="政策名称" style="margin-right:-20px" prop="lawsName" class="search-item" >
<el-input :disabled="disabled"
v-model="SearchForm.lawsName"
placeholder="请输入政策名称"
clearable
:maxlength="100"></el-input>
</el-form-item>
<el-form-item label="英文名称" style="margin-right:-20px" prop="lawsEnName" class="search-item" >
<el-input :disabled="disabled"
v-model="SearchForm.lawsEnName"
placeholder="请输入英文名称"
clearable
:maxlength="100"></el-input>
</el-form-item>
<el-formItem label="文本状态" prop="lawsTextState" class="search-item">
<el-select :disabled="disabled" v-model="SearchForm.lawsTextState" filterable clearable>
<el-option
v-for="item in dict.lawsTextStateOptions"
placeholder="请选择"
:key="item.value"
:value="item.value"
:label="item.label"
></el-option>
</el-select>
</el-formItem>
<el-form-item>
<el-button :disabled="disabled"
type="primary"
class="common-button-primary"
size="mini"
style="margin-left: 5px"
@click="getData">
查询
</el-button>
<el-button :disabled="disabled"
class="common-button-default"
size="mini"
@click="resetSearch">
清空
</el-button>
</el-form-item>
</el-form>
</div>
<div class="standard-table-wrap">
<el-table
ref="reviseDrawerTable"
:data="data"
tooltip-effect="dark"
style="width: 100%;"
border
class="drag-table"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
@selection-change="standSelectChange">
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
type="index"
label="序号"
width="80"
align="center"
></el-table-column>
<el-table-column
label="政策编号"
align="center"
>
<template slot-scope="scope">
<a @click="handlePreview(scope.row)">{{ scope.row.lawsNumber }}</a>
</template>
</el-table-column>
<el-table-column
prop="lawsName"
label="政策名称"
align="center">
</el-table-column>
<el-table-column
prop="lawsEnName"
label="英文名称"
align="center">
</el-table-column>
<el-table-column
prop="textStatus"
label="文本状态"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.standStatusShow }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button :disabled="disabled"
class="opera-btn"
size="mini"
type="primary"
@click="handlePreview(scope.row)">查看
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<pagination
:page="SearchForm.page"
:total="SearchForm.total"
@pageChange="pageChange"
@pageSizeChange="pageSizeChange"></pagination>
<loading :loading="loading">数据获取中</loading>
</div>
</div>
<div class="demo-drawer-footer">
<!--<el-button :disabled="disabled"-->
<!-- round-->
<!-- class="common-button-primary"-->
<!-- icon="el-icon-check"-->
<!-- type="primary"-->
<!-- :loading="drLoading"-->
<!-- @click="handleProcessStandardNext(1)">新增</el-button>-->
<el-button :disabled="disabled"
round
class="common-button-primary"
icon="el-icon-check"
type="primary"
:loading="buttonLoading"
@click="handleProcessStandardNext(2)">带入</el-button>
<el-button :disabled="disabled"
round
class="common-button-default"
icon="el-icon-close"
:loading="buttonLoading"
@click="handleProcessStandardNext(3)">取消</el-button>
</div>
</el-drawer>
</template>
<script>
export default {
name: "SearchResult",
data () {
return {
standardDrawer: false,
SearchForm: {
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
total: 0,
// standType: 'INLAND',
lawsNumber: '',
lawsName: '',
lawsEnName: '',
lawsTextState: ''
},
loading: false,
buttonLoading: false,
data: [],
selectedList: [],
}
},
props: {
disabled: {
type: Boolean,
default: false
},
dict: {
type: Object,
required: true
}
},
methods: {
open () {
this.standardDrawer = true
this.getData()
},
getData () {
this.loading = true
this.$http.get('lawss/sarLawsInfo/page', this.SearchForm, {}, res => {
this.loading = false
if (res.ok) {
this.data = res.data.list
this.SearchForm.total = res.data.count
}
}, e => {
this.loading = false
})
},
resetSearch() {
// this.SearchForm.lawsNumber = ''
// this.SearchForm.lawsName = ''
// this.SearchForm.lawsEnName = ''
// this.SearchForm.lawsTextState = ''
this.SearchForm = {
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
total: 0,
// standType: 'INLAND',
lawsNumber: '',
lawsName: '',
lawsEnName: '',
lawsTextState: ''
}
this.getData()
},
standSelectChange (data) {
this.selectedList = data
},
pageChange (page) {
this.SearchForm.page = page
this.getData()
},
pageSizeChange (pageSize) {
this.SearchForm.pageSize = pageSize
this.getData()
},
// 点击查看
handlePreview (item) {
let routeUrl = this.$router.resolve({
name: 'OtherLawsStandDetails',
params: {
id: item.id,
pageType: 'LAWS_STAND'
}
})
window.open(routeUrl.href, '_blank')
},
handleProcessStandardNext(status) {
switch (status) {
// 新增
case 1:
break
// 带入
case 2:
if (this.selectedList.length === 1) {
this.buttonLoading = true
this.$http.get('lawss/sarLawsInfo/getStandInfoUpdateById', {id: this.selectedList[0].id}, {
_this: this
}, res => {
if(res && res.data){
this.standardDrawer = false
this.buttonLoading = false
const json = Object.assign(res.data, res.data.attrInfoMap);
const form = JSON.parse(JSON.stringify(json))
this.$emit('dragIn', form)
}
})
} else if (this.selectedList.length > 1) {
this.$message.warning('最多可以带入一条政策信息')
} else {
this.$message.warning('请选择要带入的政策信息')
}
break
// 取消
case 3:
this.selectedList = []
this.standardDrawer = false
break
}
},
handleReviseDrawerClose (done) {
done()
},
}
}
</script>
<style scoped lang="less">
.standard-content{
flex: 1;
}
.demo-drawer-footer{
height: 61px!important;
line-height: 60px!important;
}
.pagination{
bottom: 61px;
}
</style>
@@ -0,0 +1,66 @@
<template>
<div>
<ProcessTitle>
<template slot="title">文本信息</template>
</ProcessTitle>
<div class="prc-content-border">
<el-row :gutter="24">
<el-col :span="12">
<UploadFormItem
label="政策文本"
prop="ZCWBLAWS"
:ids.sync="form.ZCWBLAWS"
:names.sync="form.ZCWBLAWSName"
:disabled="disabled">
</UploadFormItem>
<UploadFormItem
label="解读文本"
prop="JDWJLAWS"
:ids.sync="form.JDWJLAWS"
:names.sync="form.JDWJLAWSName"
:disabled="disabled">
</UploadFormItem>
</el-col>
<el-col :span="12">
<UploadFormItem
label="过程文本"
prop="GCWBLAWS"
:ids.sync="form.GCWBLAWS"
:names.sync="form.GCWBLAWSName"
:disabled="disabled">
</UploadFormItem>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import ProcessTitle from '@/pages/processCenter/pages/components/ProcessTitle'
import UploadFormItem from "@/components/hzwlComponents/UploadFormItem";
export default {
name: "TextInfo",
components: {
ProcessTitle,
UploadFormItem
},
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: () => false
},
dict: {
type: Object,
required: true
}
},
}
</script>
<style scoped>
</style>
@@ -0,0 +1,465 @@
<template>
<div class="wrapper">
<ProcessHeader toggle>
<template slot="proName">政策入库流程</template>
<template slot="proNode">发起流程</template>
</ProcessHeader>
<div class="headerTabs">
<div class="headerTabsItem" :class="active === '1' ? 'active' : ''" @click="handleTabs('1')">基础信息</div>
<div class="headerTabsItem" :class="active === '2' ? 'active' : ''" @click="handleTabs('2')">人员信息</div>
</div>
<div class="content">
<el-form v-if="reloadForm"
ref="form"
:model="form"
:rules="rules"
class="label-input-form"
label-width="210px"
>
<div v-show="active === '1'">
<Basic :form="form" :dict="dict" @dragIn="dragIn"></Basic>
<EffectiveDate :form="form" :dict="dict"></EffectiveDate>
<TextInfo :form="form" :dict="dict"></TextInfo>
<Range :form="form" :dict="dict"></Range>
<RelatesInfo :form="form" :dict="dict"></RelatesInfo>
<ReceiptDescription v-model="form.commentText"></ReceiptDescription>
</div>
<div class="block" style="padding-top: 20px;" v-show="active === '2'">
<PersonInfo ref="roleForm" :roleForm="roleForm"></PersonInfo>
</div>
</el-form>
</div>
<ProcessFooter
v-show="!disabled"
show-save
show-submit
:submitLoading="footerLoading"
:saveLoading="footerLoading"
@save="handleSave"
@submit="handleSubmit"
>
</ProcessFooter>
</div>
</template>
<script>
import ProcessHeader from '@/pages/processCenter/pages/components//ProcessHeader'
import ProcessFooter from '@/pages/processCenter/pages/components//ProcessFooter'
import Basic from "./components/Basic";
import EffectiveDate from "./components/EffectiveDate";
import TextInfo from "./components/TextInfo";
import Range from "./components/Range";
import RelatesInfo from "./components/RelatesInfo";
import ReceiptDescription from "@/components/hzwlComponents/ReceiptDescription";
import PersonInfo from "./components/PersonInfo";
import {saveTaskFirst, queryTaskFirst, taskDel} from "api/process";
export default {
name: "ZrckStep1",
components: {
ProcessHeader,
ProcessFooter,
Basic,
EffectiveDate,
TextInfo,
Range,
RelatesInfo,
ReceiptDescription,
PersonInfo
},
data () {
const form = {
// 基础信息
lawsTypeFirstLevel: '',
lawsTypeSecondLevel: '',
lawsTypeThirdLevel: '',
lawsTypeFourthLevel: '',
lawsName: '',
lawsEnName: '',
lawsNo: '',
issueTime: '',
issueCompany: '',
commentCycleStart: '',// 征集意见周期
commentCycleEnd: '',// 征集意见周期
lawsTextState: '',
lawsSycx: '',
isRelateAccess: '2',
lawsYear: '',
lawsNotisyncNum: '',
NotisyncNumLink: '',
lawsBulletin: '',
lawsLabel: '',
lawsRemark: '',
// 实施日期
SSRQLAWS: '',
XRZSSRQLAWS: '',
ZCXSSRQLAWS: '',
XCXSSRQLAWS: '',
SXRQLAWS: '',
// 文本信息
ZCWBLAWS: '',
ZCWBLAWSName: '',
JDWJLAWS: '',
JDWJLAWSName: '',
GCWBLAWS: '',
GCWBLAWSName: '',
// 适用范围
CYSDLAWS: '',
TGDWLAWS: '',
TGDWLAWSID: '',
ZRBMLAWS: '',
ZRBMLAWSID: '',
TGRLAWS: '',
SYRZLAWS: '',
ZRGCSLAWS: '',
// 关联信息
DTWJHLAWS: '',
GLWJLAWS: '',
GLWJLAWSName: '',
YYBZZCLAWS: '',
// 回执说明
commentText:''
}
const roleForm = {
jlUserId: '',
jlUserName: '',
prcCreateUser: this.$store.getters.userInfo.userId,
prcCreateUserName: this.$store.getters.userInfo.userName,
}
// 完整校验
const moreSarLawsStandRules = {
lawsTypeFirstLevel: [
{required: true, message: '1级政策分类不能为空', trigger: 'change'}
],
lawsTypeSecondLevel: [
{required: true, message: '2级政策分类不能为空', trigger: 'change'}
],
lawsTypeThirdLevel: [
{required: true, message: '3级政策分类不能为空', trigger: 'change'}
],
lawsTypeFourthLevel: [
{required: true, message: '4级政策分类不能为空', trigger: 'change'}
],
lawsName: [
{required: true, message: '政策名称不能为空', trigger: 'change'},
{type: 'string', max: 500, message: '政策名称不能超过500个字符', trigger: 'change'},
{validator: this.verify.checkSpecialCharacterOftags, trigger: 'change'}
],
lawsEnName: [
// {required: false, message: '英文名称不能为空', trigger: 'change'},
{type: 'string', max: 500, message: '英文名称不能超过500个字符', trigger: 'change'},
{validator: this.verify.valiateEnName, trigger: 'change'}
],
lawsNo: [
// {required: true, type: 'string', message: '政策文号不能为空', trigger: 'change'},
{type: 'string', max: 100, message: '政策文号不能超过100个字符', trigger: 'change'}
],
issueTime: [
{required: true, message: '发文日期不能为空', trigger: 'change'},
],
issueCompany: [
{required: true, type: 'string', message: '发文单位不能为空', trigger: 'change'},
{type: 'string', max: 100, message: '发文单位不能超过100个字符', trigger: 'change'}
],
lawsTextState: [
{required: true, message: '文本状态不能为空', trigger: 'change'}
],
isRelateAccess: [
{required: true, message: '是否纳入认证清单不能为空', trigger: 'change'}
],
lawsYear: [
{required: true, message: '年度不能为空', trigger: 'change'}
],
lawsNotisyncNum: [
{type: 'string', max: 500, message: '福田转发通知文号不能超过500个字符', trigger: 'change'}
],
lawsRemark: [
{type: 'string', max: 500, message: '备注不能超过500个字符', trigger: 'change'}
],
SSRQLAWS: [
{required: true, message: '实施日期不能为空', trigger: 'change'}
]
}
// 认证清单为否 的校验
const littleSarLawsStandRules = {
lawsTypeFirstLevel: [
{required: true, message: '1级政策分类不能为空', trigger: 'change'}
],
lawsTypeSecondLevel: [
{required: true, message: '2级政策分类不能为空', trigger: 'change'}
],
lawsTypeThirdLevel: [
{required: true, message: '3级政策分类不能为空', trigger: 'change'}
],
lawsTypeFourthLevel: [
{required: true, message: '4级政策分类不能为空', trigger: 'change'}
],
lawsName: [
{required: true, message: '政策名称不能为空', trigger: 'change'},
{type: 'string', max: 500, message: '政策名称不能超过500个字符', trigger: 'change'},
{validator: this.verify.checkSpecialCharacterOftags, trigger: 'change'}
],
isRelateAccess: [
{required: true, message: '是否纳入认证清单不能为空', trigger: 'change'}
],
}
return {
active: '1',
dict: {},
form,
roleForm,
disabled: false,
footerLoading: false,
moreSarLawsStandRules,
littleSarLawsStandRules,
rules: {},
reloadForm: true, // 重新渲染表单
bpnId: this.$route.query.bpnId || ''
}
},
created() {
this.getDicTypeListCode()
this.resolveRules()
this.getTaskId()
},
watch: {
'form.isRelateAccess' () {
// 移除校验结果重新生成校验
this.resolveRules()
}
},
methods: {
handleTabs(tab) {
this.active = tab
},
resolveRules () {
this.reloadForm = false
let rules = {}
if (this.form.isRelateAccess === '1') {
// 认证清单为是
rules = this.moreSarLawsStandRules
} else if (this.form.isRelateAccess === '2') {
// 认证清单为否
rules = this.littleSarLawsStandRules
}
this.rules = { ...rules }
this.$nextTick(() => {
this.reloadForm = true
})
},
getTaskId () {
if(this.$route.query.bpnId){
queryTaskFirst({
bpnId: this.$route.query.bpnId
}).then(res => {
this.reloadForm = false
let mes = JSON.parse(res.mes)
this.$set(this, 'form', mes.form)
this.roleForm = mes.roleForm
this.$nextTick(() => {
this.reloadForm = true
})
})
}
},
// 带入流程
dragIn (form) {
this.reloadForm = false
this.$set(this, 'form', Object.assign(this.form, form))
this.$nextTick(() => {
this.reloadForm = true
})
},
//保存
handleSave() {
this.footerLoading = true
let _formData = new FormData()
_formData.append('id', this.bpnId || '')
_formData.append('createUser', this.$store.getters.userInfo.userId)
_formData.append('createUserName', this.$store.getters.userInfo.uName)
_formData.append('prcType', 'laws1')
_formData.append('prcName', '政策入库流程')
_formData.append('json', JSON.stringify({
taskInfo: '申请人发起',
form: this.form,
roleForm: this.roleForm,
}))
saveTaskFirst(_formData).then(res => {
this.footerLoading = false
this.$message.success('保存成功')
this.bpnId = res.result
}).catch(e => {
this.footerLoading = false
})
},
handleSubmit() {
this.$refs['form'].validate((valid) => {
if (valid) {
this.$refs['roleForm'].$refs['userForm'].validate((valid) => {
if (valid) {
this.footerLoading = true
const json = Object.assign(this.form, this.roleForm);
this.$http.post('lawss/activiti/startProcessRollBack', {
createUser: this.$store.getters.userInfo.userId,
createUserName: this.$store.getters.userInfo.userName,
type: 'laws1',
json: JSON.stringify({
form: this.form,
roleForm: this.roleForm
})
}, {}, res => {
if (res.ok) {
this.$http.post('lawss/activiti/completeTask', {
taskIds: res.data,
userId : this.$store.getters.userInfo.userId,
json: JSON.stringify(json)
}, {
_this: this
}, res => {
if (res.success) {
this.$message.success(res.message)
this.footerLoading = false
if (this.$route.query.bpnId !== '') {
let taskId = {
id: this.$route.query.bpnId
}
// taskDel(taskId).then(res=>{
// return res
// })
}
// 流程提交之后,应该流转至待办任务页面
this.$router.push({path:'/processCenter?tabsName=ProcessCenter'})
}
})
}
})
}else {
this.$message.warning('请检查人员信息表单是否填写完整')
}
})
} else {
this.$message.warning('请检查基础信息表单是否填写完整')
}
})
},
getDicTypeListCode () {
// 查询各下拉框数据
this.$http.get('sys/dictype/getDicTypeListCode', '', {
_this: this
}, res => {
// this.$set(this.dict, 'lawsTypeFirstLevelOptions', res.data.lawsTypeFirstLevel)
// this.$set(this.dict, 'lawsTypeSecondLevelOptions', res.data.lawsTypeSecondLevel)
// this.$set(this.dict, 'lawsTypeThirdLevelOptions', res.data.lawsTypeThirdLevel)
// this.$set(this.dict, 'lawsTypeFourthLevelOptions', res.data.lawsTypeFourthLevel)
// this.$set(this.dict, 'lawsTextStateOptions', res.data.lawsTextState)
// this.dict.lawsTypeOptions = res.data.lawsType
this.dict.lawsTypeFirstLevelOptions = res.data.lawsTypeFirstLevel
this.dict.lawsTypeSecondLevelOptions = res.data.lawsTypeSecondLevel
this.dict.lawsTypeThirdLevelOptions = res.data.lawsTypeThirdLevel
this.dict.lawsTypeFourthLevelOptions = res.data.lawsTypeFourthLevel
this.dict.lawsTextStateOptions = res.data.lawsTextState
this.dict.lawsSycxOptions = res.data.lawsSycx
this.dict.lawsYearOptions = res.data.lawsYear
this.dict.lawsLabelOptions = res.data.lawsLabel
this.dict.CYSDLAWSOptions = res.data.CYSDLAWS
this.dict.syrzOptions = res.data.YYRZLAWS
this.dict = { ...this.dict }
// this.allSelectOptions = res.data || {}
//
// this.countryOptions = res.data.COUNTRY
// this.applyCountryOptions = res.data.COUNTRY
// this.regionOptions = res.data.REGION // 区域
// this.standStateOptions = res.data.BUSSSTATE
// this.energyKindOptions = res.data.ENERGYTYPES
// this.standGeneraOptions = res.data.BUSSBIGCLASS
// this.standSubclassOptions = res.data.BUSSFINECLASS
// this.standSortOptions = res.data.STANDCLASSIFY // 标准类别
// this.standNatureOptions = res.data.SARPROPERTY // 标准性质
// this.standStateOptions = res.data.TEXTSTATUSBUSS // 文本状态
// this.standSystemOptions = res.data.TXLBBUSS // 标准体系
// this.applyArcticOptions = res.data.ENERGYTYPES // 适用车型
// this.categoryOptions = res.data.NYLXCLASS // 能源类型
// this.applyAuthOptions = res.data.SYRZCLASS // 适用认证
// this.cysdOptions = res.data.WSCYSD // 我司参与深度
// this.zrgcsOptions = res.data.ZRGCSCLASS // 责任工程师
// this.txlbOptions = res.data.TXLBCLASS // 体系类别
// this.qcdwOptions = res.data.QCDW // 起草单位
// this.qcrOptions = res.data.QCRBUSS // 起草人
// this.nylxOptions = res.data.NYLXCLASS // 能源类型
// this.syrzOptions = res.data.SYRZCLASS // 适用认证
// this.sycpxOptions = res.data.SYCPXCLASS // 适用产品线
// this.zrgcsOptions = res.data.ZRGCSCLASS // 责任工程师
// this.zrbmOptions = res.data.ZRBMCLASS // 责任部门
// this.gkglbmOptions=res.data.GKGLBM //归口管理部门
// this.lawsTypeOptions = res.data.lawsType
// this.lawsTypeFirstLevelOptions = res.data.lawsTypeFirstLevel
// this.lawsTypeSecondLevelOptions = res.data.lawsTypeSecondLevel
// this.lawsTypeThirdLevelOptions = res.data.lawsTypeThirdLevel
// this.lawsTypeFourthLevelOptions = res.data.lawsTypeFourthLevel
// this.lawsTextStateOptions = res.data.lawsTextState
// this.lawsSyqyOptions = res.data.lawsSyqy
// this.lawsSycxOptions = res.data.lawsSycx
// this.lawsYearOptions = res.data.lawsYear
// this.lawsLabelOptions = res.data.lawsLabel
// this.CYSDLAWSOptions = res.data.CYSDLAWS
// this.TGRLAWSOptions = res.data.TGRLAWS
// this.TGDWLAWSOptions = res.data.TGDWLAWS
// this.NYLXLAWSOptions = res.data.NYLXLAWS
// this.YYRZLAWSOptions = res.data.YYRZLAWS
// this.ZRBMLAWSOptions = res.data.ZRBMLAWS
// this.ZRGCSLAWSOptions = res.data.ZRGCSLAWS
}, e => {
})
},
}
}
</script>
<style scoped lang="less">
.wrapper{
position: relative;
height: 100%;
}
.headerTabs {
height: 52px;
display: flex;
align-items: center;
position: absolute;
top: 0;
right: 10px;
.headerTabsItem {
border: 1px solid #c1c1c1;
padding: 0 5px;
height: 30px;
line-height: 30px;
cursor: pointer;
}
.active {
border: 1px solid #E6A23C;
color: #fff;
background: #E6A23C;
}
}
.content {
display: flex;
flex-direction: column;
justify-content: space-between;
height: calc(~'100% - 103px');
overflow: auto;
.tableTitle {
margin-bottom: 10px;
height: 30px;
line-height: 30px;
position: relative;
font-size: 13px;
font-weight: bold;
.tableButton {
position: absolute;
right: 0;
top: 0;
}
}
}
</style>
@@ -450,7 +450,8 @@ export default {
case 'laws1':
// 政策入库流程
this.$router.push({
name: 'zcrkStep1'
// name: 'zcrkStep1'
name: 'zcrk1'
})
break
case '1':
@@ -4,7 +4,7 @@
<el-form-item
:label="config.attrName"
:prop="config.attrField"
label-width="150px"
label-width="180px"
class="add-form-item"
:class="{'form-item-disabled': disabled}"
>
+9
View File
@@ -1142,6 +1142,15 @@ const routes = [
title: '标准入库流程'
}
},
{
path: '/zcrk1',
name: 'zcrk1',
component: () => import('@/pages/processCenter/pages/creatProcess/hzwl-zcrk/step1.vue'),
meta: {
requireAuth: true,
title: '政策入库流程'
}
},
{
path: '/zcrkStep1',
name: 'zcrkStep1',