Merge remote-tracking branch 'origin/dev_20230829_change' into dev_20231101_TXSS
# Conflicts: # src/common/axios/index.js # src/pages/config/pages/attributeCustom/components/standSystem.vue
This commit is contained in:
+4
-3
@@ -14,11 +14,14 @@
|
||||
"axios": "^0.21.1",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"core-js": "^3.6.5",
|
||||
"cross-env": "^5.0.5",
|
||||
"echarts": "^5.0.1",
|
||||
"element-ui": "^2.13.2",
|
||||
"es6-promise": "^4.2.8",
|
||||
"increase-memory-limit": "^1.0.3",
|
||||
"jquery": "^3.5.1",
|
||||
"js-base64": "^2.6.2",
|
||||
"lodash": "^4.17.21",
|
||||
"moment": "^2.29.1",
|
||||
"qs": "latest",
|
||||
"sortablejs": "^1.14.0",
|
||||
@@ -31,9 +34,7 @@
|
||||
"vue-custom-scrollbar": "^1.4.4",
|
||||
"vue-i18n": "^8.22.4",
|
||||
"vue-router": "^3.2.0",
|
||||
"vuex": "^3.4.0",
|
||||
"increase-memory-limit": "^1.0.3",
|
||||
"cross-env": "^5.0.5"
|
||||
"vuex": "^3.4.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "~4.5.0",
|
||||
|
||||
+44
-1
@@ -49,7 +49,14 @@ export function inboundLiaisonDetail (data) {
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 联络人分配FO详情查询
|
||||
export function queryZchgxxmscTaskDetail (data) {
|
||||
return axios({
|
||||
url: '/api/lawss/activiti/queryZchgxxmscTaskDetail',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
// 流程保存
|
||||
export function saveTask (data) {
|
||||
return axios({
|
||||
@@ -1074,3 +1081,39 @@ export function productDeptIssue(params) {
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
// 内外部会议入库
|
||||
export function processCreateMeeting (data) {
|
||||
return axios({
|
||||
url: '/api/lawss/meeting/processCreateMeeting',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 政策课题入会
|
||||
export function processLawsTopicMembership (data) {
|
||||
return axios({
|
||||
url: '/api/lawss/sarLawsTopic/processLawsTopicMembership',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 政策课题参会
|
||||
export function processLawsTopicParticipation (data) {
|
||||
return axios({
|
||||
url: '/api/lawss/sarLawsTopic/processLawsTopicParticipation',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 政策法规资料入库流程
|
||||
export function processLawsRegulatoryInformation (data) {
|
||||
return axios({
|
||||
url: '/api/lawss/sarLawsTopic/processLawsRegulatoryInformation',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
@@ -635,6 +635,34 @@ export default {
|
||||
})
|
||||
},
|
||||
|
||||
// formData
|
||||
_put (url, params = {}, config = {}) {
|
||||
var _formData = formData(params)
|
||||
// 参数包含this
|
||||
let _this = config._this || false
|
||||
// 参数包含loading
|
||||
let loading = config.loading || false
|
||||
// 是否显示操作提示
|
||||
let showTips = config.showTips === undefined ? true : config.showTips
|
||||
if (_this && loading) { _this[loading] = true }
|
||||
|
||||
return new Promise((resolve,reject) => {
|
||||
_axios.put(api() + url + '?' + new Date().getTime(), _formData).then(res => {
|
||||
if (res.data.ok !== undefined && showTips) {
|
||||
let type = res.data.ok ? 'success' : 'warning'
|
||||
if (_this && res.data.message !== '' && res.data.message !== null) {
|
||||
Message[type](res.data.message)
|
||||
}
|
||||
}
|
||||
resolve(res.data)
|
||||
}).catch(err => {
|
||||
reject(err)
|
||||
}).finally(()=>{
|
||||
if (_this && loading) { _this[loading] = false }
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
_downloadFile (url, params = {}, method = 'get', fileName = '导出文件') {
|
||||
_axios({
|
||||
method,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
clearable
|
||||
:editable="true"
|
||||
:disabled="disabled"
|
||||
:placeholder="placeholder"
|
||||
:placeholder="placeholder || defaultPlaceholder"
|
||||
@input="handleChange"
|
||||
>
|
||||
</el-date-picker>
|
||||
@@ -49,10 +49,13 @@ export default {
|
||||
span: {
|
||||
type: Number,
|
||||
default: 24
|
||||
},
|
||||
placeholder: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
placeholder () {
|
||||
defaultPlaceholder () {
|
||||
return `请选择${this.config.attrName}`
|
||||
},
|
||||
showMessage () {
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<el-form-item
|
||||
:label="config.attrName"
|
||||
:prop="config.attrField"
|
||||
:rules="rules"
|
||||
:label-width="labelWidth"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': disabled}"
|
||||
@@ -197,6 +198,14 @@ export default {
|
||||
showModifyName: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
rules: {
|
||||
type: Array
|
||||
},
|
||||
// 单位 M
|
||||
size: {
|
||||
type: Number,
|
||||
default: 200
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -314,12 +323,16 @@ export default {
|
||||
fileSuffix = fileSuffix.toLocaleLowerCase()
|
||||
// 判断上传文件格式
|
||||
if (!this.allowType.includes(fileSuffix)) {
|
||||
this.$message.error(`文件${file.name}格式不正确,请上传${this.allowType.join('、')}文件`)
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: break-all;;color: #F56C6C">文件{file.name}格式不正确,请上传{this.allowType.join('、')}文件</div>,
|
||||
type: 'error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size / 1024 / 1024 > 200) {// eslint-disable-line
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
if (file.size / 1024 / 1024 > this.size) {// eslint-disable-line
|
||||
this.$message.error('文件' + file.name + `超过${ this.size }M`)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<el-form-item
|
||||
:label="config.attrName"
|
||||
:prop="config.attrField"
|
||||
:rules="rules"
|
||||
label-width="150px"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': disabled}"
|
||||
@@ -40,6 +41,9 @@ export default {
|
||||
span: {
|
||||
type: Number,
|
||||
default: 24
|
||||
},
|
||||
rules: {
|
||||
type: Array
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@@ -55,8 +59,8 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
handleChange (event) {
|
||||
const value = event.target.value
|
||||
this.$emit('input', value)
|
||||
// const value = event.target.value
|
||||
this.$emit('input', event)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
<template>
|
||||
<!--流程-审批历史-->
|
||||
<div class="flow-list">
|
||||
<el-table
|
||||
height="100%"
|
||||
ref="selection"
|
||||
:data="data"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%"
|
||||
border
|
||||
row-key="id"
|
||||
:no-data-text="listNoDataText"
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="name"
|
||||
label="任务步骤"
|
||||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="assignee"
|
||||
label="任务受理人"
|
||||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
label="创建时间"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.createTime ? $moment(scope.row.createTime).format('YYYY-MM-DD') : '' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="endTime"
|
||||
label="完成时间"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? $moment(scope.row.endTime).format('YYYY-MM-DD') : '' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="comment"
|
||||
label="流程信息"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{scope.row.commentText}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="completeFlag"
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<loading :loading="loading">流程列表加载中</loading>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "ApprovalHistory",
|
||||
props: {
|
||||
data: {
|
||||
type: Array,
|
||||
required: true
|
||||
},
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
listNoDataText () {
|
||||
return this.processType === 1 ? '暂无待办流程' : '暂无已办流程'
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,109 @@
|
||||
<template>
|
||||
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
|
||||
<el-date-picker
|
||||
:value="currentTime"
|
||||
:picker-options="pickerOptions"
|
||||
:disabled="disabled"
|
||||
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,64 @@
|
||||
<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 || defaultPlaceholder"
|
||||
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
|
||||
},
|
||||
placeholder: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
defaultPlaceholder () {
|
||||
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,162 @@
|
||||
<!-- 多选时间组件 -->
|
||||
<template>
|
||||
<el-tooltip class="item" effect="dark" :content="label" placement="top-start">
|
||||
<el-form-item
|
||||
:label="label"
|
||||
:prop="prop"
|
||||
:label-width="labelWidth"
|
||||
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: {
|
||||
type: String,
|
||||
},
|
||||
prop: {
|
||||
type: String
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
labelWidth: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
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,90 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
:value="value"
|
||||
:placeholder="placeholder"
|
||||
:clearable="clearable"
|
||||
:disabled="disabled"
|
||||
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,349 @@
|
||||
<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;"
|
||||
:disabled="disabled"
|
||||
@click="selectLaws"
|
||||
>手动查找</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.lawsNo"
|
||||
placeholder="根据政策文号查找"
|
||||
clearable
|
||||
:maxlength="100"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="政策名称" class="search-item input-width">
|
||||
<el-input
|
||||
v-model="replaceLawsNumForm.lawsName"
|
||||
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
|
||||
label="政策文号"
|
||||
min-width="130">
|
||||
<template slot-scope="scope">
|
||||
<span>
|
||||
<a v-if="scope.row.lawsNo" class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.lawsNo }}</a>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="lawsName"
|
||||
label="政策名称"
|
||||
min-width="130">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="lawsEnName"
|
||||
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,
|
||||
},
|
||||
value: {
|
||||
required: true
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 栅格比例
|
||||
span: {
|
||||
type: Number,
|
||||
default: 24
|
||||
},
|
||||
// label宽度
|
||||
labelWidth: {
|
||||
type: String,
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
replaceLawsNumModel: false,
|
||||
// 代替标准号
|
||||
replaceLawsNumForm: {
|
||||
// dataSource: 'BUSINESS', // 数据来源
|
||||
lawsNo: '',
|
||||
lawsName: '', // 政策名称
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 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 () {
|
||||
this.replaceLawsNumModel = true
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 代替政策号 请求数据
|
||||
getReplaceLawsNumRow () {
|
||||
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.$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 (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.lawsNo
|
||||
}
|
||||
textArr.push(texts)
|
||||
textArr = [...new Set(textArr)]
|
||||
this.replaceLawsNumModel = false
|
||||
})
|
||||
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 = {
|
||||
lawsNo: '',
|
||||
lawsName: '', // 政策名称
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 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,89 @@
|
||||
<template>
|
||||
<div class="wrapper">
|
||||
<el-form-item :label="label" :prop="prop" :rules="rules" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
:value="value"
|
||||
:placeholder="placeholder"
|
||||
:clearable="clearable"
|
||||
:disabled="disabled"
|
||||
@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
|
||||
},
|
||||
rules: {
|
||||
type: Array
|
||||
}
|
||||
},
|
||||
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,56 @@
|
||||
<template>
|
||||
<!--意见-->
|
||||
<el-collapse v-model="activeName" accordion>
|
||||
<el-collapse-item :title="title" name="1">
|
||||
<div style="margin: 10px 0;">
|
||||
<el-form-item :prop="prop" label-width="0">
|
||||
<el-input :disabled="disabled"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
resize="none"
|
||||
placeholder="请输入意见"
|
||||
:value="value"
|
||||
@input="handleChange">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</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
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
prop: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
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,101 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="action-bar">
|
||||
<el-button :disabled="disabled" type="primary" class="common-button-primary add-button" size="mini" @click="onAdd">
|
||||
添加
|
||||
</el-button>
|
||||
<el-button :disabled="disabled || selectedList.length <= 0" type="primary" class="common-button-primary add-button" size="mini" @click="onDelete">
|
||||
批量删除
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table border
|
||||
class="table"
|
||||
ref="selection"
|
||||
:data="tableData"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%;"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center"/>
|
||||
<template v-for="item in options">
|
||||
<el-table-column
|
||||
:prop="item.prop"
|
||||
:label="item.label"
|
||||
align="center">
|
||||
<template slot-scope="{ row, column, $index }">
|
||||
<!--<el-form-item :prop="'meetingList.' + $index + '.meetingName'" :rules="rules.meetingName" label-width="0">-->
|
||||
<!-- <el-input :disabled="disabled" style="margin: 10px 0;" v-model="row.meetingName"></el-input>-->
|
||||
<!--</el-form-item>-->
|
||||
<el-form-item :prop="parentProp + '.' + $index + '.' + item.prop" :rules="rules[item.prop]" label-width="0">
|
||||
<el-input v-if="!disabled" :disabled="disabled" v-model="row[item.prop]"></el-input>
|
||||
<span v-else>{{ row[item.prop] }}</span>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "TableFormItem",
|
||||
props: {
|
||||
data: {
|
||||
type: Array,
|
||||
required: true
|
||||
},
|
||||
// [ { label: '会议名称', prop: 'meetingName' } ]
|
||||
options: {
|
||||
type: Array,
|
||||
required: true
|
||||
},
|
||||
parentProp: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: () => false
|
||||
},
|
||||
rules: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
tableData () {
|
||||
return this.data.map((item, index) => {
|
||||
item.index = index
|
||||
return item
|
||||
})
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
selectedList: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSelectionChange (selection) {
|
||||
this.selectedList = []
|
||||
selection.forEach(item => {
|
||||
this.selectedList.push(item.index)
|
||||
})
|
||||
},
|
||||
onAdd () {
|
||||
this.$emit('add')
|
||||
},
|
||||
onDelete () {
|
||||
this.$emit('delete', this.selectedList)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.table {
|
||||
/deep/ .el-form-item {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,51 @@
|
||||
<template>
|
||||
<el-form-item :label="label" :prop="prop" :rules="rules" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:value="value"
|
||||
:placeholder="placeholder"
|
||||
:disabled="disabled"
|
||||
show-word-limit
|
||||
:autosize="{minRows: 1,maxRows: 4}"
|
||||
@input="handleChange"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "TextareaFormItem",
|
||||
props: {
|
||||
value: {
|
||||
required: true
|
||||
},
|
||||
prop: {
|
||||
type: String
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
rules: {
|
||||
type: Array
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
placeholder () {
|
||||
return `请输入${this.label}`
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
handleChange (event) {
|
||||
this.$emit('input', event)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
||||
</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,209 @@
|
||||
<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, .doc, .DOC, .docx, .DOCX, .ppt, .PPT, .pptx, .PPTX, .xls, .XLS, .xlsx, .XLSX, .pdg, .PDG'
|
||||
},
|
||||
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)) {
|
||||
this.$message({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: <div style="word-break: break-all;;color: #F56C6C">文件{file.name}格式不正确,请上传{this.allowType.join('、')}文件</div>,
|
||||
type: 'error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size / 1024 / 1024 > this.size) {// eslint-disable-line
|
||||
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,62 @@
|
||||
<template>
|
||||
<!--导出文件改名字模态框-->
|
||||
<el-dialog :visible.sync="exportModelFlag" title="导出文件" width="300px">
|
||||
<el-form :inline="true" class="label-input-form search-area">
|
||||
<el-form-item label="导出名称" class="search-item">
|
||||
<el-input v-model="exportName" placeholder="请输入导出文件名称" :maxlength="30" clearable label="导出名称"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="demo-drawer-footer">
|
||||
<el-button class="common-button-default" icon="el-icon-close" @click="cancel">取消</el-button>
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="submit">提交</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "exportDialog",
|
||||
data () {
|
||||
return {
|
||||
exportModelFlag: false,
|
||||
exportName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openModel () {
|
||||
this.exportName = ''
|
||||
this.exportModelFlag = true
|
||||
},
|
||||
cancel () {
|
||||
this.exportModelFlag = false
|
||||
},
|
||||
submit () {
|
||||
// 导出文件名
|
||||
this.$emit('exportName', this.exportName)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/deep/ .label-input-form .add-form-item .el-form-item__content .el-input .el-input__inner {
|
||||
width: 280px;
|
||||
}
|
||||
/deep/ .el-dialog .el-dialog__header {
|
||||
width: 100%;
|
||||
font-size: 14px;
|
||||
color: #17233d;
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
/deep/ .el-dialog .el-dialog__body {
|
||||
padding: 15px 20px;
|
||||
}
|
||||
/deep/ .el-dialog .el-dialog__footer .el-button {
|
||||
height: 32px;
|
||||
padding: 8px 23px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,106 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 导入模态窗 -->
|
||||
<el-dialog width='400px' v-if="visible" :visible="visible" @close="onClose" title="导入文件">
|
||||
<el-upload
|
||||
multiple
|
||||
drag
|
||||
:action="action"
|
||||
ref="importfile"
|
||||
name="file"
|
||||
accept=".ZIP, .zip"
|
||||
:before-upload="beginImportFile"
|
||||
:on-success="importFileSuccess"
|
||||
: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-dialog :visible.sync="importFailed" :close-on-click-modal="false" width="400px">
|
||||
<p slot="title" style="color:#f60">
|
||||
<span>导入失败</span>
|
||||
</p>
|
||||
<div style="max-height: 300px;overflow: auto;padding: 10px 0;">
|
||||
<p v-html="importForm.content"></p>
|
||||
</div>
|
||||
<div slot="footer" class="demo-drawer-footer">
|
||||
<el-button type="primary" round class="common-button-default" icon="el-icon-check" @click="importFailed = false">
|
||||
确认
|
||||
</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "importZip",
|
||||
data () {
|
||||
return {
|
||||
importFailed: false,
|
||||
importForm: {}
|
||||
}
|
||||
},
|
||||
props: {
|
||||
action: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onClose () {
|
||||
this.$emit('update:visible', false)
|
||||
},
|
||||
// 导入按钮 上传之前的钩子
|
||||
beginImportFile(file) {
|
||||
var filename = file.name
|
||||
var index1 = filename.lastIndexOf('.')
|
||||
var index2 = filename.length
|
||||
var fileSuffix = filename.substring(index1, index2)
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.ZIP' || fileSuffix === '.zip') {
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传ZIP压缩文件')
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
// eslint-disable-next-line no-unreachable
|
||||
if (file.size / 1024 / 1024 <= 200) {
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
// 导入标准数据成功后执行
|
||||
importFileSuccess(response, file) {
|
||||
if (response.ok) {
|
||||
this.$emit('update:visible', false)
|
||||
// this.visible = false
|
||||
this.$message({
|
||||
message: response.message,
|
||||
type: 'success'
|
||||
})
|
||||
this.getData()
|
||||
} else {
|
||||
this.importFailed = true
|
||||
this.importForm.content = response.message
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,105 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-form-item :label="label" :prop="prop" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
:value="value"
|
||||
:placeholder="placeholder"
|
||||
:clearable="clearable"
|
||||
:disabled="disabled"
|
||||
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>
|
||||
@@ -6,6 +6,7 @@
|
||||
:visible.sync="isVisible2"
|
||||
:wrapperClosable="false"
|
||||
@close="handleTreeDrawerCancel"
|
||||
append-to-body
|
||||
size="400px">
|
||||
<el-form
|
||||
@submit.native.prevent
|
||||
|
||||
@@ -218,34 +218,54 @@
|
||||
// }
|
||||
]
|
||||
},
|
||||
// {
|
||||
// title: '政策法规库',
|
||||
// path: '/policyRegulation',
|
||||
// 'icon-class': 'el-icon-s-management',
|
||||
// menuId: 'asdzcfgk',
|
||||
// children: [
|
||||
// {
|
||||
// title: '问题项管控',
|
||||
// path: '/problemControl',
|
||||
// menuId: '50d7a0c0af4740c486100c257ae6068e'
|
||||
// },
|
||||
// {
|
||||
// title: '国内外政策',
|
||||
// path: '/nationalPolicy',
|
||||
// menuId: '6557e9c4ce672af71be5807052da126b'
|
||||
// },
|
||||
// {
|
||||
// title: '标准跟踪清单',
|
||||
// path: '/standardTrackingList',
|
||||
// menuId: 'a26b92e156f68dbfe0d73b0dc068ebe4'
|
||||
// },
|
||||
// {
|
||||
// title: '政策工作组',
|
||||
// path: '/policyWorkGroup',
|
||||
// menuId: 'f1a4b33a498e58a8a87c954ce5ce6ad6'
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
{
|
||||
title: '政策法规库',
|
||||
path: '/policyRegulation',
|
||||
'icon-class': 'el-icon-s-management',
|
||||
menuId: 'asdzcfgk',
|
||||
children: [
|
||||
{
|
||||
title: '问题项管控',
|
||||
path: '/problemControl',
|
||||
menuId: '50d7a0c0af4740c486100c257ae6068e'
|
||||
},
|
||||
// {
|
||||
// title: '国内外政策',
|
||||
// path: '/nationalPolicy',
|
||||
// menuId: '6557e9c4ce672af71be5807052da126b'
|
||||
// },
|
||||
{
|
||||
title: '国内外政策',
|
||||
path: '/Policy',
|
||||
menuId: '6557e9c4ce672af71be5807052da126b'
|
||||
},
|
||||
{
|
||||
title: '标准跟踪清单',
|
||||
path: '/standardTrackingList',
|
||||
menuId: 'a26b92e156f68dbfe0d73b0dc068ebe4'
|
||||
},
|
||||
{
|
||||
title: '政策工作组',
|
||||
path: '/policyWorkGroup',
|
||||
menuId: 'f1a4b33a498e58a8a87c954ce5ce6ad6'
|
||||
},
|
||||
{
|
||||
title: '内外部会议',
|
||||
path: '/meeting',
|
||||
menuId: 'e5681c5ccbef386fcf50e217afdd3ff4'
|
||||
},
|
||||
{
|
||||
title: '政策课题',
|
||||
path: '/policyTopics',
|
||||
menuId: '627f66cd6746234edd4722e20d8c01bb'
|
||||
},
|
||||
{
|
||||
title: '政策法规资料',
|
||||
path: '/regulatoryMaterials',
|
||||
menuId: '5b77e62147c5397178bc76f698e151c1'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '工作中心',
|
||||
path: '/processCenter',
|
||||
@@ -404,11 +424,11 @@
|
||||
// path: '/convertDocView',
|
||||
// menuId: '3F52K25546'
|
||||
// },
|
||||
// {
|
||||
// title: '菜单管理',
|
||||
// path: '/menuManage',
|
||||
// menuId: '87b8b4f5817a7829696e63185c744d52'
|
||||
// },
|
||||
{
|
||||
title: '菜单管理',
|
||||
path: '/menuManage',
|
||||
menuId: '87b8b4f5817a7829696e63185c744d52'
|
||||
},
|
||||
{
|
||||
title: '链接管理',
|
||||
path: '/linkManage',
|
||||
@@ -423,16 +443,16 @@
|
||||
// path: '/DynamicInformations',
|
||||
// menuId: '3C87BSHJUF'
|
||||
// },
|
||||
// // {
|
||||
// // title: '流程分类管理',
|
||||
// // path: '/processClassificationManage',
|
||||
// // menuId: 'N323F2UB9FTUV5SD3GTD'
|
||||
// // },
|
||||
// // {
|
||||
// // title: '流程管理',
|
||||
// // path: '/processManage',
|
||||
// // menuId: 'K5KXSS3X9CF7CS8AMFJ5'
|
||||
// // },
|
||||
{
|
||||
title: '流程分类管理',
|
||||
path: '/processClassificationManage',
|
||||
// menuId: 'N323F2UB9FTUV5SD3GTD'
|
||||
},
|
||||
{
|
||||
title: '流程管理',
|
||||
path: '/processManage',
|
||||
// menuId: 'K5KXSS3X9CF7CS8AMFJ5'
|
||||
},
|
||||
// {
|
||||
// title: 'SVPPS',
|
||||
// path: '/svpps',
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
+160
-134
@@ -1,11 +1,13 @@
|
||||
<template>
|
||||
<div class="roleTree">
|
||||
<el-drawer
|
||||
:title="isTitle"
|
||||
:visible.sync="visible"
|
||||
:wrapperClosable="false"
|
||||
@close="handleTreeDrawerCancel"
|
||||
size="460px">
|
||||
:title="isTitle"
|
||||
v-if="visible"
|
||||
:visible.sync="visible"
|
||||
:wrapperClosable="false"
|
||||
@close="handleTreeDrawerCancel"
|
||||
append-to-body
|
||||
size="460px">
|
||||
<el-form
|
||||
ref="attributeEO"
|
||||
class="label-input-form"
|
||||
@@ -14,16 +16,16 @@
|
||||
>
|
||||
<el-form-item class="form-item-disabled" style="margin: 10px;">
|
||||
<el-input
|
||||
v-model="filterText"
|
||||
placeholder="请输入姓名"
|
||||
@keyup.enter.native="searchChange"
|
||||
v-model="filterText"
|
||||
placeholder="请输入姓名"
|
||||
@keyup.enter.native="searchChange"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item class="form-item-disabled" style="margin-top: 10px;">
|
||||
<el-button size="medium " type="primary" @click="searchChange">
|
||||
查询
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item class="form-item-disabled" style="margin-top: 10px;">
|
||||
<el-button size="medium " type="primary" @click="searchChange">
|
||||
查询
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="divTree">
|
||||
<!-- 当前tree展示全部人员 -->
|
||||
@@ -71,7 +73,7 @@
|
||||
ref="tree"
|
||||
:lazy="false"
|
||||
:key="treeKey"
|
||||
>
|
||||
>
|
||||
<span class="custom-tree-node" slot-scope="{ node, data }">
|
||||
<span :class="node.disabled ? 'is-show' : 'is-leaf-none'"></span>
|
||||
<span> {{ node.label }} </span>
|
||||
@@ -89,13 +91,19 @@
|
||||
closable>
|
||||
{{tag.name}}
|
||||
</el-tag>
|
||||
<el-tag v-show="delList.length > 0 && !checkBox" type="danger" closable size="mini" @close="handleCloseAll()">全部删除</el-tag>
|
||||
<el-tag v-show="delList.length > 0 && !checkBox" type="danger" closable size="mini"
|
||||
@close="handleCloseAll()">全部删除
|
||||
</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
<div id="roleFormButton" class="demo-drawer-footer">
|
||||
<el-button class="common-button-primary" size="mini" icon="el-icon-check" type="primary" :loading="subLoading" @click="saveUserInfo">确定</el-button>
|
||||
<el-button class="common-button-primary" size="mini" icon="el-icon-check" type="primary"
|
||||
:loading="subLoading" @click="saveUserInfo">确定
|
||||
</el-button>
|
||||
|
||||
<el-button class="common-button-default" size="mini" icon="el-icon-close" :loading="subLoading" @click="handleTreeDrawerCancel">取消</el-button>
|
||||
<el-button class="common-button-default" size="mini" icon="el-icon-close" :loading="subLoading"
|
||||
@click="handleTreeDrawerCancel">取消
|
||||
</el-button>
|
||||
</div>
|
||||
<loading style="z-index: 2099;" :loading="treeLoading">导入中...</loading>
|
||||
</el-drawer>
|
||||
@@ -103,15 +111,16 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
function debounce(func, wait = 500){
|
||||
function debounce(func, wait = 500) {
|
||||
let timeout;
|
||||
return function(event){
|
||||
return function (event) {
|
||||
clearTimeout(timeout)
|
||||
timeout = setTimeout(()=>{
|
||||
timeout = setTimeout(() => {
|
||||
func.call(this, event)
|
||||
},wait)
|
||||
}, wait)
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
name: "roleTree",
|
||||
props: {
|
||||
@@ -133,13 +142,13 @@
|
||||
}
|
||||
},
|
||||
type: {
|
||||
type: Number,
|
||||
default: 0
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data () {
|
||||
data() {
|
||||
return {
|
||||
treeKey:1,
|
||||
treeKey: 1,
|
||||
defaultKey: [],//默认展开的节点的 key 的数组
|
||||
visible: false,
|
||||
selectList: [],
|
||||
@@ -160,13 +169,13 @@
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
nameJoinAccount(treeData1){
|
||||
treeData1.forEach(item=>{
|
||||
if(item.account) item.name = `${item.name}(${item.account})`
|
||||
if(item.children) this.nameJoinAccount(item.children)
|
||||
})
|
||||
},
|
||||
handleClose (tag) {
|
||||
nameJoinAccount(treeData1) {
|
||||
treeData1.forEach(item => {
|
||||
if (item.account) item.name = `${item.name}(${item.account})`
|
||||
if (item.children) this.nameJoinAccount(item.children)
|
||||
})
|
||||
},
|
||||
handleClose(tag) {
|
||||
let arr = []
|
||||
for (let a = 0; a < this.delList.length; a++) {
|
||||
if (tag.id === this.delList[a].id) {
|
||||
@@ -188,7 +197,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
handleCloseAll () {
|
||||
handleCloseAll() {
|
||||
this.$msgbox({
|
||||
title: '提示',
|
||||
message: '是否删除当前选中人员',
|
||||
@@ -208,41 +217,41 @@
|
||||
}
|
||||
)
|
||||
},
|
||||
searchChange(){
|
||||
// 查询
|
||||
if (this.filterText.length) {
|
||||
this.open1 = false // 显示第二个tree
|
||||
this.treeLoading = true
|
||||
this.defaultKey = []
|
||||
this.$http.get('SarInstitution/institution/getNextTwo', {
|
||||
userName: this.filterText
|
||||
}, {}, res => {
|
||||
this.treeData1 = res
|
||||
this.treeData1.forEach(item => {
|
||||
this.defaultKey.push(item.id)
|
||||
})
|
||||
this.nameJoinAccount(this.treeData1)
|
||||
this.treeLoading = false
|
||||
})
|
||||
// this.treeKey++
|
||||
searchChange() {
|
||||
// 查询
|
||||
if (this.filterText.length) {
|
||||
this.open1 = false // 显示第二个tree
|
||||
this.treeLoading = true
|
||||
this.defaultKey = []
|
||||
this.$http.get('SarInstitution/institution/getNextTwo', {
|
||||
userName: this.filterText
|
||||
}, {}, res => {
|
||||
this.treeData1 = res
|
||||
this.treeData1.forEach(item => {
|
||||
this.defaultKey.push(item.id)
|
||||
})
|
||||
this.nameJoinAccount(this.treeData1)
|
||||
this.treeLoading = false
|
||||
})
|
||||
// this.treeKey++
|
||||
|
||||
|
||||
// this.$http.get('SarInstitution/institution/institutionAndUser', {
|
||||
// userName: this.filterText
|
||||
// }, {}, res => {
|
||||
// this.treeData1 = res.data
|
||||
// this.treeData1.forEach(item => {
|
||||
// this.defaultKey.push(item.id)
|
||||
// })
|
||||
// console.log(1);
|
||||
// this.getChildren()
|
||||
// this.treeLoading = false
|
||||
// })
|
||||
} else {
|
||||
this.open1 = true
|
||||
}
|
||||
},
|
||||
changeInput:debounce(function (val) {
|
||||
// this.$http.get('SarInstitution/institution/institutionAndUser', {
|
||||
// userName: this.filterText
|
||||
// }, {}, res => {
|
||||
// this.treeData1 = res.data
|
||||
// this.treeData1.forEach(item => {
|
||||
// this.defaultKey.push(item.id)
|
||||
// })
|
||||
// console.log(1);
|
||||
// this.getChildren()
|
||||
// this.treeLoading = false
|
||||
// })
|
||||
} else {
|
||||
this.open1 = true
|
||||
}
|
||||
},
|
||||
changeInput: debounce(function (val) {
|
||||
if (val.length) {
|
||||
this.open1 = false
|
||||
this.treeLoading = true
|
||||
@@ -256,28 +265,7 @@
|
||||
this.open1 = true
|
||||
}
|
||||
}),
|
||||
checkChange2 (row, type, c) {
|
||||
if (this.checkBox) {
|
||||
} else {
|
||||
if (type) {
|
||||
this.nodeList2.push(row.id)
|
||||
this.delList.push(row)
|
||||
} else {
|
||||
for (let a = 0; a < this.nodeList2.length; a ++) {
|
||||
if (row.id === this.nodeList2[a]) {
|
||||
this.nodeList2.splice(a, 1)
|
||||
}
|
||||
}
|
||||
for (let b = 0; b < this.delList.length; b++) {
|
||||
if (row.id === this.delList[b].id) {
|
||||
this.delList.splice(b, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
checkChange (row, type, c) {
|
||||
//节点选中状态发生变化时的回调(传递给 data 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点)
|
||||
checkChange2(row, type, c) {
|
||||
if (this.checkBox) {
|
||||
} else {
|
||||
if (type) {
|
||||
@@ -297,14 +285,35 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
handleTreeDrawerCancel () {
|
||||
checkChange(row, type, c) {
|
||||
//节点选中状态发生变化时的回调(传递给 data 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点)
|
||||
if (this.checkBox) {
|
||||
} else {
|
||||
if (type) {
|
||||
this.nodeList2.push(row.id)
|
||||
this.delList.push(row)
|
||||
} else {
|
||||
for (let a = 0; a < this.nodeList2.length; a++) {
|
||||
if (row.id === this.nodeList2[a]) {
|
||||
this.nodeList2.splice(a, 1)
|
||||
}
|
||||
}
|
||||
for (let b = 0; b < this.delList.length; b++) {
|
||||
if (row.id === this.delList[b].id) {
|
||||
this.delList.splice(b, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
handleTreeDrawerCancel() {
|
||||
this.filterText = ''
|
||||
this.open1 = true
|
||||
this.visible = false
|
||||
},
|
||||
saveUserInfo () {
|
||||
if(this.roleList.length === 0){
|
||||
this.roleList.push({id:"",name:""});
|
||||
saveUserInfo() {
|
||||
if (this.roleList.length === 0) {
|
||||
this.roleList.push({id: "", name: ""});
|
||||
}
|
||||
if (this.checkBox) {
|
||||
this.$emit('checkedRole', this.roleList)
|
||||
@@ -341,9 +350,9 @@
|
||||
}
|
||||
this.open1 = true
|
||||
},
|
||||
drawerCheck (data) {
|
||||
//当复选框被点击的时候触发
|
||||
//共两个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性
|
||||
drawerCheck(data) {
|
||||
//当复选框被点击的时候触发
|
||||
//共两个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性
|
||||
if (this.checkBox) { // 单选
|
||||
// 单选判断
|
||||
let getlist = this.$refs.tree.getCheckedNodes()
|
||||
@@ -360,31 +369,31 @@
|
||||
this.delList = [data]
|
||||
}
|
||||
} else { // 多选
|
||||
if (this.roleList.length === 0) {
|
||||
this.roleList.push(data)
|
||||
} else {
|
||||
let delFlag = true
|
||||
this.roleList.forEach((item, index) => {
|
||||
if (item.id === data.id) {
|
||||
this.roleList.splice(index, 1)
|
||||
delFlag = false
|
||||
}
|
||||
})
|
||||
if (delFlag) {
|
||||
this.roleList.push(data)
|
||||
if (this.roleList.length === 0) {
|
||||
this.roleList.push(data)
|
||||
} else {
|
||||
let delFlag = true
|
||||
this.roleList.forEach((item, index) => {
|
||||
if (item.id === data.id) {
|
||||
this.roleList.splice(index, 1)
|
||||
delFlag = false
|
||||
}
|
||||
})
|
||||
if (delFlag) {
|
||||
this.roleList.push(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
// this.roleList = this.$refs.tree.getCheckedNodes().concat(this.$refs.tree.getHalfCheckedNodes())
|
||||
// this.roleList = this.$refs.tree.getCheckedNodes().concat(this.$refs.tree.getHalfCheckedNodes())
|
||||
}
|
||||
},
|
||||
loadNode(node, resolve) {
|
||||
//加载子树数据的方法,仅当 lazy 属性为true 时生效
|
||||
//加载子树数据的方法,仅当 lazy 属性为true 时生效
|
||||
if (node.level === 0) {
|
||||
return resolve(this.treeData);
|
||||
}
|
||||
this.getChildren(node, resolve)
|
||||
},
|
||||
getChildren (node, resolve) {
|
||||
getChildren(node, resolve) {
|
||||
this.$http.get('SarInstitution/institution/getNext', {
|
||||
institutionId: node.key,
|
||||
userName: this.filterText
|
||||
@@ -392,16 +401,16 @@
|
||||
resolve(res)
|
||||
})
|
||||
},
|
||||
getTree () {
|
||||
getTree() {
|
||||
this.treeLoading = true
|
||||
this.$http.get('SarInstitution/institution/getFirstInstitution', {}, {}, res=> {
|
||||
this.$http.get('SarInstitution/institution/getFirstInstitution', {}, {}, res => {
|
||||
this.treeData = res
|
||||
this.treeLoading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
isVisible (val) {
|
||||
isVisible(val) {
|
||||
this.visible = val
|
||||
if (val) {
|
||||
this.nodeList2 = this.nodeList
|
||||
@@ -433,7 +442,7 @@
|
||||
this.$emit('update:isVisible', val)
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
mounted() {
|
||||
this.getTree()
|
||||
}
|
||||
}
|
||||
@@ -444,12 +453,15 @@
|
||||
overflow: auto;
|
||||
height: calc(~'100% - 300px');
|
||||
}
|
||||
|
||||
.divDel {
|
||||
border-top: 1px solid #000;
|
||||
height: 300px;
|
||||
|
||||
.divDel_title {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.divDel_box {
|
||||
height: 266px;
|
||||
padding: 0px 0 10px;
|
||||
@@ -457,50 +469,59 @@
|
||||
flex-wrap: wrap;
|
||||
overflow: auto;
|
||||
margin: 10px;
|
||||
align-content: flex-start;
|
||||
align-content: flex-start;
|
||||
|
||||
span {
|
||||
margin: 0px 5px 5px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/deep/ .icon-tree {
|
||||
margin: 0 5px 0 10px;
|
||||
position: relative;
|
||||
background: url('~@/assets/images/shangqi/img/tree-add.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
/deep/.el-tree-node__content {
|
||||
margin: 0 5px 0 10px;
|
||||
position: relative;
|
||||
background: url('~@/assets/images/shangqi/img/tree-add.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
/deep/ .el-tree-node__content {
|
||||
padding-left: 0px !important;
|
||||
}
|
||||
/deep/ .is-leaf{
|
||||
background-image:none;
|
||||
background-size:100% 100%;
|
||||
|
||||
/deep/ .is-leaf {
|
||||
background-image: none;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
/deep/ .is-leaf-none{
|
||||
|
||||
/deep/ .is-leaf-none {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
background:url('~@/assets/images/shangqi/img/personnel.png');
|
||||
background-size:100% 100%;
|
||||
background: url('~@/assets/images/shangqi/img/personnel.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
/deep/ .is-show{
|
||||
|
||||
/deep/ .is-show {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
background:url('~@/assets/images/shangqi/img/mechanism.png');
|
||||
background-size:100% 100%;
|
||||
background: url('~@/assets/images/shangqi/img/mechanism.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
/deep/.tree-line{
|
||||
|
||||
/deep/ .tree-line {
|
||||
.el-tree-node {
|
||||
position: relative;
|
||||
padding-left: 0px; // 缩进量
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.el-tree-node__children {
|
||||
padding-left: 16px; // 缩进量
|
||||
}
|
||||
|
||||
// 竖线
|
||||
.el-tree-node::before {
|
||||
content: "";
|
||||
@@ -512,10 +533,12 @@
|
||||
border-width: 1px;
|
||||
border-left: 1px dashed #858990e0;
|
||||
}
|
||||
|
||||
// 当前层最后一个节点的竖线高度固定
|
||||
.el-tree-node:last-child::before {
|
||||
height: 38px; // 可以自己调节到合适数值
|
||||
}
|
||||
|
||||
// 横线
|
||||
.el-tree-node::after {
|
||||
content: "";
|
||||
@@ -527,18 +550,21 @@
|
||||
border-width: 1px;
|
||||
border-top: 1px dashed #858990e0;
|
||||
}
|
||||
|
||||
// 去掉最顶层的虚线,放最下面样式才不会被上面的覆盖了
|
||||
& > .el-tree-node::after {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
& > .el-tree-node::before {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
// 展开关闭的icon
|
||||
.el-tree-node__expand-icon{
|
||||
.el-tree-node__expand-icon {
|
||||
font-size: 16px;
|
||||
// 叶子节点(无子节点)
|
||||
&.is-leaf{
|
||||
&.is-leaf {
|
||||
color: transparent;
|
||||
// display: none; // 也可以去掉
|
||||
}
|
||||
|
||||
@@ -298,6 +298,10 @@ router.beforeEach(function (to, from, next) {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
localStorage.removeItem("routerUrl")
|
||||
localStorage.setItem('routerUrl', 'home2')
|
||||
localStorage.removeItem("routerParam")
|
||||
localStorage.setItem('routerParam', '')
|
||||
if ((token === null || token === '' ) && toName === 'OtherStandardDetails') {
|
||||
if (document.cookie) {
|
||||
next()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<template>
|
||||
<div class="tree">
|
||||
<loading :loading="loading">加载中...</loading>
|
||||
<el-tree
|
||||
:data="data"
|
||||
:props="defaultProps"
|
||||
@@ -100,6 +101,7 @@ export default {
|
||||
drawerTitle: '',
|
||||
drawerVisible: false,
|
||||
addModel: {},
|
||||
loading: false,
|
||||
rules
|
||||
};
|
||||
},
|
||||
@@ -111,7 +113,12 @@ export default {
|
||||
console.log(data);
|
||||
},
|
||||
async getData () {
|
||||
const res = await this.$http._getData(this.api.getListStandLimit,{dicId:'9m4qqqaansxmox5e82zm'})
|
||||
const res = await this.$http._getData(this.api.getListStandLimit,{
|
||||
dicId:'9m4qqqaansxmox5e82zm'
|
||||
},{
|
||||
_this:this,
|
||||
loading: 'loading'
|
||||
})
|
||||
if (res.ok && res.data) {
|
||||
this.data = res.data
|
||||
}
|
||||
|
||||
@@ -34,15 +34,15 @@
|
||||
<!--</table-tools-bar>-->
|
||||
|
||||
<div class="content">
|
||||
<!--<div class="action-bar">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="primary"-->
|
||||
<!-- class="common-button-primary add-button"-->
|
||||
<!-- round-->
|
||||
<!-- @click="addRow"-->
|
||||
<!-- v-btn-permission="'XBRKH5BP5K'"-->
|
||||
<!-- ><i class="el-icon-plus"></i>新增</el-button>-->
|
||||
<!--</div>-->
|
||||
<div class="action-bar">
|
||||
<!-- v-btn-permission="'XBRKH5BP5K'"-->
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary add-button"
|
||||
round
|
||||
@click="addRow"
|
||||
><i class="el-icon-plus"></i>新增</el-button>
|
||||
</div>
|
||||
<loading :loading="tableDataLoading">{{$t('m.dataProcessing')}}</loading>
|
||||
<el-table
|
||||
border
|
||||
@@ -85,7 +85,8 @@
|
||||
<el-dropdown trigger="click" @command="handleCommand">
|
||||
<i class="iconfont"></i>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item v-btn-permission="'VTY972T56Q'" :command="[scope.row, '编辑']">{{$t('m.edit')}}</el-dropdown-item>
|
||||
<!-- v-btn-permission="'VTY972T56Q'"-->
|
||||
<el-dropdown-item :command="[scope.row, '编辑']">{{$t('m.edit')}}</el-dropdown-item>
|
||||
<!--<el-dropdown-item v-btn-permission="'UCDDYPWEFT'" :command="[scope.row, '删除']">{{$t('m.delete')}}</el-dropdown-item>-->
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
|
||||
@@ -35,12 +35,12 @@
|
||||
|
||||
<div class="content">
|
||||
<div class="action-bar">
|
||||
<!-- v-btn-permission="'XBRKH5BP5K'"-->
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary add-button"
|
||||
round
|
||||
@click="addRow"
|
||||
v-btn-permission="'XBRKH5BP5K'"
|
||||
><i class="el-icon-plus"></i>新增</el-button>
|
||||
</div>
|
||||
<loading :loading="tableDataLoading">{{$t('m.dataProcessing')}}</loading>
|
||||
@@ -77,8 +77,10 @@
|
||||
<el-dropdown trigger="click" @command="handleCommand">
|
||||
<i class="iconfont"></i>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item v-btn-permission="'VTY972T56Q'" :command="[scope.row, '编辑']">{{$t('m.edit')}}</el-dropdown-item>
|
||||
<el-dropdown-item v-btn-permission="'UCDDYPWEFT'" :command="[scope.row, '删除']">{{$t('m.delete')}}</el-dropdown-item>
|
||||
<!-- v-btn-permission="'VTY972T56Q'"-->
|
||||
<el-dropdown-item :command="[scope.row, '编辑']">{{$t('m.edit')}}</el-dropdown-item>
|
||||
<!-- v-btn-permission="'UCDDYPWEFT'"-->
|
||||
<el-dropdown-item :command="[scope.row, '删除']">{{$t('m.delete')}}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,440 @@
|
||||
<template>
|
||||
<div class="regulatoryMaterialsDetail">
|
||||
<div class="container">
|
||||
<div class="header">{{ form.meetingName }}</div>
|
||||
<div class="content">
|
||||
<el-collapse v-model="activeNames">
|
||||
<el-collapse-item name="1">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>基础信息</span>
|
||||
</div>
|
||||
<div class="modular-header-btn">
|
||||
<el-button class="relation-btn"
|
||||
icon="icon-relation"
|
||||
@click.stop="relateEvent()"
|
||||
>更新记录</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">会议名称</label><span>{{ form.meetingName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 100px;">会议主办单位</label><span>{{ form.meetingOrganizer || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">会议时间</label><span>{{ form.meetingTime || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">会议地点</label><span>{{ form.meetingAddress || '-' }}</span></p>
|
||||
<p style="" class="whole"><label style=" margin-right: 132px;">参会人员</label><span>{{ form.participants || '-' }}</span></p>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 132px;line-height: 44px">会议纪要</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.meetingMinutesList && form.meetingMinutesList.length > 0">
|
||||
<p class="file-item" v-for="file in form.meetingMinutesList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="whole" style=""><label style=" margin-right: 100px;">会议主要内容</label><span>{{ form.meetingContent || '-' }}</span></p>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item name="2">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>会议分类</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<p style="" class="half"><label style="margin-right: 100px;">1级会议分类</label><span>{{ form.firstMeetingTypeName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style="margin-right: 100px;">2级会议分类</label><span>{{ form.secondMeetingTypeName || '-' }}</span></p>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item v-for="(item, index) in form.meetingTopicList" :name="index">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>会议议题</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<p style="" class="whole"><label style=" margin-right: 132px;">议题名称</label><span>{{ item.agendaName || '-' }}</span></p>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 132px;line-height: 44px">议题材料</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="item.agendaMaterialsList && item.agendaMaterialsList.length > 0">
|
||||
<p class="file-item" v-for="file in item.agendaMaterialsList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="" class="half"><label style=" margin-right: 148px;">汇报人</label><span>{{ item.reporter || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 116px;">汇报人单位</label><span>{{ item.reportingUnit || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 100px;">议题主要内容</label><span>{{ item.agendaContent || '-' }}</span></p>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 更新LOG -->
|
||||
<el-dialog
|
||||
title="更新记录"
|
||||
:visible.sync="relateDialog"
|
||||
width="60%"
|
||||
class="relateClass"
|
||||
:before-close="relateDialogClose">
|
||||
<div
|
||||
v-for="(item, index) in relateNowList"
|
||||
:key="index"
|
||||
v-if="relateNowList"
|
||||
style="margin-bottom: 10px;line-height: 20px"
|
||||
>
|
||||
{{index+1}}. {{item.creationUserName}} {{item.creationTime}} {{item.content}}
|
||||
<div v-if="relateNowList.length >1"><el-divider></el-divider></div>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="relateDialogClose()">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getBusStandFileByAttId } from 'api/process'
|
||||
|
||||
export default {
|
||||
name: "meetingDetail",
|
||||
data () {
|
||||
return {
|
||||
url: {
|
||||
getMeetingInfo: 'lawss/insideOutsideMeeting/getMeetingInfo',
|
||||
getLogList: 'lawss/sarUpdLog/getLogList', // 更新记录
|
||||
},
|
||||
form: {},
|
||||
activeNames: ['1', '2'],
|
||||
// 更新记录
|
||||
relateDialog: false,
|
||||
relateNowList: [],
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
getData () {
|
||||
const id = this.$route.params.id
|
||||
this.$http._getData(this.url.getMeetingInfo, { meetingId: id }).then(res => {
|
||||
if (res.ok) {
|
||||
if (res.data.meetingTopicList && res.data.meetingTopicList.length > 0) {
|
||||
const activeNames = []
|
||||
res.data.meetingTopicList.forEach((item, index) => {
|
||||
activeNames.push(index)
|
||||
})
|
||||
this.activeNames = [...this.activeNames, ...activeNames]
|
||||
}
|
||||
this.$set(this, 'form', res.data)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 更新LOG
|
||||
relateEvent () {
|
||||
const query = {
|
||||
sarId: this.$route.params.id,
|
||||
sarType: 'INSIDE_OUTSIDE_MEETING'
|
||||
}
|
||||
this.$http._getData(this.url.getLogList, query).then(res => {
|
||||
if (res.ok && res.data.length > 0) {
|
||||
this.relateDialog = true
|
||||
const relateList = res.data
|
||||
var i
|
||||
for (i = 0; i < relateList.length; i++) {
|
||||
let obj = {creationUserName: '', creationTime: '', content: ''}
|
||||
obj.creationUserName = relateList[i].creationUserName
|
||||
obj.creationTime = relateList[i].creationTime
|
||||
obj.content = relateList[i].content
|
||||
this.relateNowList.push(obj)
|
||||
}
|
||||
} else {
|
||||
this.$message.warning('暂无数据')
|
||||
}
|
||||
})
|
||||
},
|
||||
relateDialogClose () {
|
||||
this.relateDialog = false
|
||||
this.relateNowList = []
|
||||
},
|
||||
downloadFile (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSarNew?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
downloadFileByWater (attId, fileSuffix) {
|
||||
if (fileSuffix !== 'pdf' && fileSuffix !== 'PDF') {
|
||||
this.$message.error('水印下载仅支持PDF,pdf格式文件')
|
||||
} else {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSarWaterMarkNew?fileId=' + attId + '&userId=' + this.$store.getters.userInfo.userId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
}
|
||||
},
|
||||
getBusStandFileByAttId(attId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getBusStandFileByAttId({
|
||||
attId
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
}).catch(e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
openFileInPdf (attId, fileName) {
|
||||
// 判断是否是图片格式,图片格式不预览,直接下载
|
||||
let index1 = fileName.lastIndexOf('.')
|
||||
let index2 = fileName.length
|
||||
let fileSuffix = fileName.substring(index1, index2)
|
||||
//把后缀转大写
|
||||
if(fileSuffix !== undefined && fileSuffix !== null){
|
||||
fileSuffix = fileSuffix.toUpperCase()
|
||||
}
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.PNG'|| fileSuffix === '.JPG'|| fileSuffix === '.JPEG') {
|
||||
this.downloadFile(attId)
|
||||
return true
|
||||
}
|
||||
// 缺少文件
|
||||
if (this.$hasPermission('fd83032ae5f41a0021b00e93c88edbbg')) {
|
||||
if (fileSuffix === '.PDG' || fileSuffix === '.pdg') {
|
||||
this.getBusStandFileByAttId(attId)
|
||||
.then(res => {
|
||||
if(res){
|
||||
const editFileInfo = res
|
||||
if(editFileInfo.fileSuffix === 'pdg' || editFileInfo.fileSuffix === 'PDG'){
|
||||
window.open('book://ssreader/e0?url='+editFileInfo.downLoadUrl)
|
||||
}
|
||||
}
|
||||
}).catch(e => {
|
||||
this.$message.warning('文件不存在,预览失败')
|
||||
})
|
||||
}else {
|
||||
this.$http.get('lawss/sarLawsFile/queryConvertAtt', {
|
||||
attId: attId
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.data) {
|
||||
let fileObj = {}
|
||||
fileObj.fileId = res.data.attId
|
||||
fileObj.fileName = fileName
|
||||
let fileList = []
|
||||
let repeatData = 0
|
||||
if (sessionStorage.getItem('fileInfo')) {
|
||||
fileList = JSON.parse(sessionStorage.getItem('fileInfo'))
|
||||
if (fileList != null && fileList.length > 0) {
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
if (fileList[i].fileId === res.data.attId) {
|
||||
repeatData = 1
|
||||
break
|
||||
}
|
||||
}
|
||||
if (repeatData === 0) {
|
||||
fileList.push(fileObj)
|
||||
fileList = JSON.stringify(fileList)
|
||||
sessionStorage.setItem('fileInfo', fileList)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fileList.push(fileObj)
|
||||
fileList = JSON.stringify(fileList)
|
||||
sessionStorage.setItem('fileInfo', fileList)
|
||||
}
|
||||
window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + res.data.attId))
|
||||
} else {
|
||||
this.$message.error('文档未转换成功或本地读取不到该文档')
|
||||
}
|
||||
}, e => {
|
||||
this.$message.error('文档未转换成功或本地读取不到该文档')
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$message.error('没有在线预览文档权限!')
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.regulatoryMaterialsDetail {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
overflow: auto;
|
||||
.container {
|
||||
padding: 15px 30px 0;
|
||||
width: 1200px;
|
||||
margin: 0 auto;
|
||||
height: 100%;
|
||||
.header {
|
||||
padding: 34px 0;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: #555555;
|
||||
text-align: center;
|
||||
}
|
||||
.content {
|
||||
border-top: 2px dashed rgb(209, 209, 209);
|
||||
.modular-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
border-bottom: 1px solid #E5E5E5;
|
||||
.modular-header-title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #3B424C;
|
||||
> .icon-modular-title {
|
||||
display: inline-block;
|
||||
margin-left: -28px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
background-image: url("~assets/images/shangqi/standardDetails/modular-title.png");
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
> span {
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
/deep/ .modular-header-btn{
|
||||
> button {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
font-size: 14px;
|
||||
padding: 0 10px;
|
||||
font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
|
||||
> i{
|
||||
display: inline-block;
|
||||
margin-right: 3px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
}
|
||||
.collection-btn{
|
||||
padding: 0;
|
||||
border: none;
|
||||
> i {
|
||||
color: #F2CB51;
|
||||
font-size: 18px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
> .el-icon-star-on {
|
||||
font-size: 22px;
|
||||
}
|
||||
&:hover{
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
.relation-btn {
|
||||
color: #409EFF;
|
||||
border: 1px solid #409EFF;
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
.icon-relation{
|
||||
background-image: url("~assets/images/shangqi/standardDetails/relation.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.modular-content {
|
||||
color: #333;
|
||||
font-size: 16px;
|
||||
> p {
|
||||
min-height: 43px;
|
||||
line-height: 43px;
|
||||
border-bottom: 1px solid #E5E5E5;
|
||||
}
|
||||
.half {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
.whole {
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap {
|
||||
border: none;
|
||||
}
|
||||
.file-item{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.file-title {
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
color: #409EFF;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 780px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
/deep/ .el-collapse-item__content {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/deep/ .icon-download {
|
||||
display: inline-block;
|
||||
margin-left: 3px;
|
||||
width: 18px;
|
||||
height: 16px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
vertical-align: sub;
|
||||
cursor: pointer;
|
||||
background-image: url("~assets/images/shangqi/img/download.png");
|
||||
}
|
||||
|
||||
/deep/ .icon-download2 {
|
||||
display: inline-block;
|
||||
margin-left: 3px;
|
||||
width: 18px;
|
||||
height: 16px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
vertical-align: sub;
|
||||
cursor: pointer;
|
||||
background-image: url("~assets/images/shangqi/img/download2.png");
|
||||
}
|
||||
</style>
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="other-standard-details v-class" :class="{'hidden': !isMoreAwayBtn}">
|
||||
<!--title 标题-->
|
||||
<div class="details-header">
|
||||
<span>{{sarStandardsInfoEO.lawsNumber}}-{{sarStandardsInfoEO.lawsYear}} 《{{sarStandardsInfoEO.lawsName}}》 政策详情</span>
|
||||
<span>{{sarStandardsInfoEO.lawsNo}}-{{sarStandardsInfoEO.lawsYear}} 《{{sarStandardsInfoEO.lawsName}}》 政策详情</span>
|
||||
</div>
|
||||
<!--主体内容-->
|
||||
<div class="details-content" style="position: relative">
|
||||
@@ -40,27 +40,34 @@
|
||||
<template v-if = "item.label === '基础信息'">
|
||||
<div class="details-content-modular basic-information" style="margin-bottom: 0;border: none">
|
||||
<div class="basic-information-content">
|
||||
<p style="" class="half"><label style=" margin-right: 157px;">政策分类</label><span>{{ sarStandardsInfoEO.lawsType }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 157px;">政策编号</label><span>{{ sarStandardsInfoEO.lawsNumber }}</span></p>
|
||||
<p><label style=" margin-right: 157px;">政策名称</label><span>{{ sarStandardsInfoEO.lawsName || '-' }}</span></p>
|
||||
<p v-if="activeState" style=""><label style=" margin-right: 157px;">英文名称</label><span>{{ sarStandardsInfoEO.lawsEnName || '-' }}</span></p>
|
||||
<!--<p style="" class="half"><label style=" margin-right: 157px;">政策分类</label><span>{{ sarStandardsInfoEO.lawsType }}</span></p>-->
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">1级政策分类</label><span>{{ sarStandardsInfoEO.lawTypeFirstLevelName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">2级政策分类</label><span>{{ sarStandardsInfoEO.lawTypeFourthLevelName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">3级政策分类</label><span>{{ sarStandardsInfoEO.lawTypeSecondLevelName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">4级政策分类</label><span>{{ sarStandardsInfoEO.lawTypeThirdLevelName || '-' }}</span></p>
|
||||
<!--<p style="" class="half"><label style=" margin-right: 157px;">政策编号</label><span>{{ sarStandardsInfoEO.lawsNumber }}</span></p>-->
|
||||
<p class="half"><label style=" margin-right: 157px;">政策名称</label><span>{{ sarStandardsInfoEO.lawsName || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 157px;">英文名称</label><span>{{ sarStandardsInfoEO.lawsEnName || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 157px;">政策文号</label><span>{{ sarStandardsInfoEO.lawsNo || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 157px;">发文日期</label><span>{{ sarStandardsInfoEO.issueTime || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 157px;">发文单位</label><span>{{ sarStandardsInfoEO.issueCompany || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 125px;">征集意见周期</label><span>{{ formatDateFunc(sarStandardsInfoEO.commentCycleStart) || '' }} - {{formatDateFunc(sarStandardsInfoEO.commentCycleEnd) || ''}}</span></p>
|
||||
<p class="half">
|
||||
<label style=" margin-right: 156px;"
|
||||
title=""
|
||||
>文本状态</label><span style="">{{ sarStandardsInfoEO.standStatusShow || '-' }}</span>
|
||||
</p>
|
||||
<p class="half"><label style=" margin-right: 157px;">信息简报</label><span>{{ sarStandardsInfoEO.lawsBulletin || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 157px;">适用区域</label><span>{{ sarStandardsInfoEO.lawsSyqy || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 156px;">文本状态</label><span style="">{{ sarStandardsInfoEO.standStatusShow || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 157px;">适用车型</label><span>{{ sarStandardsInfoEO.lawsSycx || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 95px;">是否纳入认证清单</label><span>{{ sarStandardsInfoEO.isRelateAccess === '1' ? '是' : (sarStandardsInfoEO.isRelateAccess ? '否':'-')}}</span></p>
|
||||
<p class="half"><label style=" margin-right: 95px;">福田转发通知文号</label><span>{{ sarStandardsInfoEO.lawsNotisyncNum || '-' }}</span></p>
|
||||
<p class="half"><label style=" margin-right: 157px;">政策文号</label><span>{{ sarStandardsInfoEO.lawsNo || '-' }}</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>
|
||||
<a v-if="sarStandardsInfoEO.notisyncNumLink && sarStandardsInfoEO.notisyncNumLink!== ''" :href="sarStandardsInfoEO.notisyncNumLink" target="_blank" style="cursor: pointer;color: rgb(45, 140, 240);">
|
||||
{{ sarStandardsInfoEO.lawsNotisyncNum || '-' }}
|
||||
</a>
|
||||
<span v-else>{{ 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: 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>
|
||||
<!--<p class="half"><label style=" margin-right: 157px;">适用区域</label><span>{{ sarStandardsInfoEO.lawsSyqy || '-' }}</span></p>-->
|
||||
<!--<p class="half"><label style=" margin-right: 157px;">政策文号</label><span>{{ sarStandardsInfoEO.lawsNo || '-' }}</span></p>-->
|
||||
<template v-for="(child, childIndex) in item.child2">
|
||||
<p class="half">
|
||||
<label style=" margin-right: 156px;">{{child.attrName}}</label>
|
||||
|
||||
@@ -0,0 +1,597 @@
|
||||
<template>
|
||||
<div class="regulatoryMaterialsDetail">
|
||||
<div class="container">
|
||||
<div class="header">{{ form.topicName }}</div>
|
||||
<div class="content">
|
||||
<el-collapse v-model="activeNames">
|
||||
<el-collapse-item name="1">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>基础信息</span>
|
||||
</div>
|
||||
<div class="modular-header-btn">
|
||||
<el-button class="relation-btn"
|
||||
icon="icon-relation"
|
||||
@click.stop="relateEvent()"
|
||||
>更新记录</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">课题名称</label><span>{{ form.topicName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 100px;">课题承办单位</label><span>{{ form.organizer || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 100px;">课题指导单位</label><span>{{ form.guidanceUnit || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 100px;">课题参与单位</label><span>{{ form.participatingUnit || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">启动时间</label><span>{{ form.startTime || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">结题时间</label><span>{{ form.closeTime || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">课题状态</label><span>{{ form.topicStatus || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 68px;">课题费用(万元)</label><span>{{ form.topicCost || '-' }}</span></p>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 164px;line-height: 44px">协议</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.agreementList && form.agreementList.length > 0">
|
||||
<p class="file-item" v-for="file in form.agreementList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item v-for="(item, index) in form.meetingList" :name="'meetingList' + index">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>课题组会议</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">会议名称</label><span>{{ item.meetingName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">会议时间</label><span>{{ item.meetingTime || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">会议地点</label><span>{{ item.meetingAddress || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 68px;">参会人员(内部)</label><span>{{ item.participants || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 100px;">会议主要内容</label><span>{{ item.meetingContent || '-' }}</span></p>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item name="2">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>课题组资料</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 132px;line-height: 44px">研究方案</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.researchPlanList && form.researchPlanList.length > 0">
|
||||
<p class="file-item" v-for="file in form.researchPlanList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 132px;line-height: 44px">研究成果</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.researchFindingsList && form.researchFindingsList.length > 0">
|
||||
<p class="file-item" v-for="file in form.researchFindingsList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 164px;line-height: 44px">其他</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.otherList && form.otherList.length > 0">
|
||||
<p class="file-item" v-for="file in form.otherList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 132px;line-height: 44px">会议资料</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.conferenceMaterialsList && form.conferenceMaterialsList.length > 0">
|
||||
<p class="file-item" v-for="file in form.conferenceMaterialsList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item v-for="(item, index) in form.topicContactInformationList" :name="'topicContactInformationList' + index">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>课题组联系方式</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">姓名</label><span>{{ item.name || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">单位</label><span>{{ item.department || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">电话</label><span>{{ item.phone || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">邮箱</label><span>{{ item.email || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">身份</label><span>{{ item.identity || '-' }}</span></p>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item name="3">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>内部资料</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 132px;line-height: 44px">立项报告</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.insideProjectProposalReportList && form.insideProjectProposalReportList.length > 0">
|
||||
<p class="file-item" v-for="file in form.insideProjectProposalReportList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 132px;line-height: 44px">研究方案</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.insideResearchPlanList && form.insideResearchPlanList.length > 0">
|
||||
<p class="file-item" v-for="file in form.insideResearchPlanList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 132px;line-height: 44px">会议资料</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.insideConferenceMaterialsList && form.insideConferenceMaterialsList.length > 0">
|
||||
<p class="file-item" v-for="file in form.insideConferenceMaterialsList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 132px;line-height: 44px">研究成果</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.insideResearchFindingsList && form.insideResearchFindingsList.length > 0">
|
||||
<p class="file-item" v-for="file in form.insideResearchFindingsList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="whole" style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 164px;line-height: 44px">其他</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.insideOtherList && form.insideOtherList.length > 0">
|
||||
<p class="file-item" v-for="file in form.insideOtherList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
|
||||
<el-collapse-item v-for="(item, index) in form.insideContactInformationList" :name="'insideContactInformationList' + index">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>内部联系方式</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">姓名</label><span>{{ item.name || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">单位</label><span>{{ item.department || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">电话</label><span>{{ item.phone || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">邮箱</label><span>{{ item.email || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 164px;">身份</label><span>{{ item.identity || '-' }}</span></p>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 更新LOG -->
|
||||
<el-dialog
|
||||
title="更新记录"
|
||||
:visible.sync="relateDialog"
|
||||
width="60%"
|
||||
class="relateClass"
|
||||
:before-close="relateDialogClose">
|
||||
<div
|
||||
v-for="(item, index) in relateNowList"
|
||||
:key="index"
|
||||
v-if="relateNowList"
|
||||
style="margin-bottom: 10px;line-height: 20px"
|
||||
>
|
||||
{{index+1}}. {{item.creationUserName}} {{item.creationTime}} {{item.content}}
|
||||
<div v-if="relateNowList.length >1"><el-divider></el-divider></div>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="relateDialogClose()">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getBusStandFileByAttId } from 'api/process'
|
||||
|
||||
export default {
|
||||
name: "policyTopicsDetail",
|
||||
data () {
|
||||
return {
|
||||
url: {
|
||||
getLawsTopicInfo: 'lawss/sarLawsTopic/getLawsTopicInfo',
|
||||
getLogList: 'lawss/sarUpdLog/getLogList', // 更新记录
|
||||
},
|
||||
form: {},
|
||||
activeNames: ['1', '2', '3'],
|
||||
// 更新记录
|
||||
relateDialog: false,
|
||||
relateNowList: [],
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
getData () {
|
||||
const id = this.$route.params.id
|
||||
this.$http._getData(this.url.getLawsTopicInfo, { id }).then(res => {
|
||||
if (res.ok) {
|
||||
const activeNames = []
|
||||
res.data.meetingList.forEach((item, index) => {
|
||||
activeNames.push('meetingList' + index)
|
||||
})
|
||||
res.data.topicContactInformationList.forEach((item, index) => {
|
||||
activeNames.push('topicContactInformationList' + index)
|
||||
})
|
||||
res.data.insideContactInformationList.forEach((item, index) => {
|
||||
activeNames.push('insideContactInformationList' + index)
|
||||
})
|
||||
this.activeNames = [...this.activeNames, ...activeNames]
|
||||
this.$set(this, 'form', res.data)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 更新LOG
|
||||
relateEvent () {
|
||||
const query = {
|
||||
sarId: this.$route.params.id,
|
||||
sarType: 'LAWS_TOPIC'
|
||||
}
|
||||
this.$http._getData(this.url.getLogList, query).then(res => {
|
||||
if (res.ok && res.data.length > 0) {
|
||||
this.relateDialog = true
|
||||
const relateList = res.data
|
||||
var i
|
||||
for (i = 0; i < relateList.length; i++) {
|
||||
let obj = {creationUserName: '', creationTime: '', content: ''}
|
||||
obj.creationUserName = relateList[i].creationUserName
|
||||
obj.creationTime = relateList[i].creationTime
|
||||
obj.content = relateList[i].content
|
||||
this.relateNowList.push(obj)
|
||||
}
|
||||
} else {
|
||||
this.$message.warning('暂无数据')
|
||||
}
|
||||
})
|
||||
},
|
||||
relateDialogClose () {
|
||||
this.relateDialog = false
|
||||
this.relateNowList = []
|
||||
},
|
||||
downloadFile (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSarNew?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
downloadFileByWater (attId, fileSuffix) {
|
||||
if (fileSuffix !== 'pdf' && fileSuffix !== 'PDF') {
|
||||
this.$message.error('水印下载仅支持PDF,pdf格式文件')
|
||||
} else {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSarWaterMarkNew?fileId=' + attId + '&userId=' + this.$store.getters.userInfo.userId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
}
|
||||
},
|
||||
getBusStandFileByAttId(attId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getBusStandFileByAttId({
|
||||
attId
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
}).catch(e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
openFileInPdf (attId, fileName) {
|
||||
// 判断是否是图片格式,图片格式不预览,直接下载
|
||||
let index1 = fileName.lastIndexOf('.')
|
||||
let index2 = fileName.length
|
||||
let fileSuffix = fileName.substring(index1, index2)
|
||||
//把后缀转大写
|
||||
if(fileSuffix !== undefined && fileSuffix !== null){
|
||||
fileSuffix = fileSuffix.toUpperCase()
|
||||
}
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.PNG'|| fileSuffix === '.JPG'|| fileSuffix === '.JPEG') {
|
||||
this.downloadFile(attId)
|
||||
return true
|
||||
}
|
||||
// 缺少文件
|
||||
if (this.$hasPermission('fd83032ae5f41a0021b00e93c88edbbg')) {
|
||||
if (fileSuffix === '.PDG' || fileSuffix === '.pdg') {
|
||||
this.getBusStandFileByAttId(attId)
|
||||
.then(res => {
|
||||
if(res){
|
||||
const editFileInfo = res
|
||||
if(editFileInfo.fileSuffix === 'pdg' || editFileInfo.fileSuffix === 'PDG'){
|
||||
window.open('book://ssreader/e0?url='+editFileInfo.downLoadUrl)
|
||||
}
|
||||
}
|
||||
}).catch(e => {
|
||||
this.$message.warning('文件不存在,预览失败')
|
||||
})
|
||||
}else {
|
||||
this.$http.get('lawss/sarLawsFile/queryConvertAtt', {
|
||||
attId: attId
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.data) {
|
||||
let fileObj = {}
|
||||
fileObj.fileId = res.data.attId
|
||||
fileObj.fileName = fileName
|
||||
let fileList = []
|
||||
let repeatData = 0
|
||||
if (sessionStorage.getItem('fileInfo')) {
|
||||
fileList = JSON.parse(sessionStorage.getItem('fileInfo'))
|
||||
if (fileList != null && fileList.length > 0) {
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
if (fileList[i].fileId === res.data.attId) {
|
||||
repeatData = 1
|
||||
break
|
||||
}
|
||||
}
|
||||
if (repeatData === 0) {
|
||||
fileList.push(fileObj)
|
||||
fileList = JSON.stringify(fileList)
|
||||
sessionStorage.setItem('fileInfo', fileList)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fileList.push(fileObj)
|
||||
fileList = JSON.stringify(fileList)
|
||||
sessionStorage.setItem('fileInfo', fileList)
|
||||
}
|
||||
window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + res.data.attId))
|
||||
} else {
|
||||
this.$message.error('文档未转换成功或本地读取不到该文档')
|
||||
}
|
||||
}, e => {
|
||||
this.$message.error('文档未转换成功或本地读取不到该文档')
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$message.error('没有在线预览文档权限!')
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.regulatoryMaterialsDetail {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
overflow: auto;
|
||||
.container {
|
||||
padding: 15px 30px 0;
|
||||
width: 1200px;
|
||||
margin: 0 auto;
|
||||
height: 100%;
|
||||
.header {
|
||||
padding: 34px 0;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: #555555;
|
||||
text-align: center;
|
||||
}
|
||||
.content {
|
||||
border-top: 2px dashed rgb(209, 209, 209);
|
||||
.modular-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
border-bottom: 1px solid #E5E5E5;
|
||||
.modular-header-title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #3B424C;
|
||||
> .icon-modular-title {
|
||||
display: inline-block;
|
||||
margin-left: -28px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
background-image: url("~assets/images/shangqi/standardDetails/modular-title.png");
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
> span {
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
/deep/ .modular-header-btn{
|
||||
> button {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
font-size: 14px;
|
||||
padding: 0 10px;
|
||||
font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
|
||||
> i{
|
||||
display: inline-block;
|
||||
margin-right: 3px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
}
|
||||
.collection-btn{
|
||||
padding: 0;
|
||||
border: none;
|
||||
> i {
|
||||
color: #F2CB51;
|
||||
font-size: 18px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
> .el-icon-star-on {
|
||||
font-size: 22px;
|
||||
}
|
||||
&:hover{
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
.relation-btn {
|
||||
color: #409EFF;
|
||||
border: 1px solid #409EFF;
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
.icon-relation{
|
||||
background-image: url("~assets/images/shangqi/standardDetails/relation.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.modular-content {
|
||||
color: #333;
|
||||
font-size: 16px;
|
||||
> p {
|
||||
min-height: 43px;
|
||||
line-height: 43px;
|
||||
border-bottom: 1px solid #E5E5E5;
|
||||
}
|
||||
.half {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
.whole {
|
||||
width: 100%;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap {
|
||||
border: none;
|
||||
}
|
||||
.file-item{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.file-title {
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
color: #409EFF;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 780px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
/deep/ .el-collapse-item__content {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/deep/ .icon-download {
|
||||
display: inline-block;
|
||||
margin-left: 3px;
|
||||
width: 18px;
|
||||
height: 16px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
vertical-align: sub;
|
||||
cursor: pointer;
|
||||
background-image: url("~assets/images/shangqi/img/download.png");
|
||||
}
|
||||
|
||||
/deep/ .icon-download2 {
|
||||
display: inline-block;
|
||||
margin-left: 3px;
|
||||
width: 18px;
|
||||
height: 16px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
vertical-align: sub;
|
||||
cursor: pointer;
|
||||
background-image: url("~assets/images/shangqi/img/download2.png");
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,474 @@
|
||||
<template>
|
||||
<div class="regulatoryMaterialsDetail">
|
||||
<div class="container">
|
||||
<div class="header">{{ form.name }}</div>
|
||||
<div class="content">
|
||||
<el-collapse v-model="activeNames">
|
||||
<el-collapse-item name="1">
|
||||
<template slot="title">
|
||||
<div class="modular-header">
|
||||
<div class="modular-header-title">
|
||||
<i class="icon-modular-title"/><span>基础信息</span>
|
||||
</div>
|
||||
<div class="modular-header-btn">
|
||||
<el-button v-if="form.collectId"
|
||||
@click.stop="collectClick(form.collectId)"
|
||||
title="取消收藏"
|
||||
class="collection-btn"
|
||||
icon="el-icon-star-on"
|
||||
:loading="isSubmit"
|
||||
></el-button>
|
||||
<el-button v-else
|
||||
@click.stop="collectClick()"
|
||||
title="收藏"
|
||||
class="collection-btn"
|
||||
icon="el-icon-star-off"
|
||||
:loading="isSubmit"
|
||||
></el-button>
|
||||
<el-button class="relation-btn"
|
||||
icon="icon-relation"
|
||||
@click.stop="relateEvent()"
|
||||
>更新记录</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div class="modular-content">
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">1级资料分类</label><span>{{ form.firstTypeName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">2级资料分类</label><span>{{ form.secondTypeName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">3级资料分类</label><span>{{ form.thirdTypeName || '-' }}</span></p>
|
||||
<p style="" class="half"><label style=" margin-right: 132px;">4级资料分类</label><span>{{ form.fourthTypeName || '-' }}</span></p>
|
||||
<p style=""><label style=" margin-right: 156px;">资料名称</label><span>{{ form.name || '-' }}</span></p>
|
||||
<p style=""><label style=" margin-right: 124px;">资料归属单位</label><span>{{ form.department || '-' }}</span></p>
|
||||
<p style=""><label style=" margin-right: 186px;">作者</label><span>{{ form.author || '-' }}</span></p>
|
||||
<p style=""><label style=" margin-right: 156px;">上传时间</label><span>{{ form.uploadTime || '-' }}</span></p>
|
||||
<p style=""><label style=" margin-right: 156px;">资料说明</label><span>{{ form.description || '-' }}</span></p>
|
||||
<div style="display: flex;border-bottom: 1px solid #E5E5E5">
|
||||
<label style=" margin-right: 156px;line-height: 44px">资料文件</label>
|
||||
<div style="min-height: 44px;padding: 8px 0;">
|
||||
<template v-if="form.informationFileList && form.informationFileList.length > 0">
|
||||
<p class="file-item" v-for="file in form.informationFileList">
|
||||
<a class="file-title" target="_blank" :title="file.oldFileName" @click="openFileInPdf(file.id, file.oldFileName)">{{ file.oldFileName }}</a>
|
||||
<i v-if="form.downloadable" title="下载" class="icon-download" @click="downloadFile(file.id)"></i>
|
||||
<i v-if="form.downloadable" title="下载带水印" class="icon-download2" @click="downloadFileByWater(file.id, file.fileSuffix)"></i>
|
||||
</p>
|
||||
</template>
|
||||
<p v-else>-</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style=""><label style=" margin-right: 156px;">可查看者</label><span>{{ form.viewableBy || '-' }}</span></p>
|
||||
<p style=""><label style=" margin-right: 156px;">可下载者</label><span>{{ form.downloadableBy || '-' }}</span></p>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 更新LOG -->
|
||||
<el-dialog
|
||||
title="更新记录"
|
||||
:visible.sync="relateDialog"
|
||||
width="60%"
|
||||
class="relateClass"
|
||||
:before-close="relateDialogClose">
|
||||
<div
|
||||
v-for="(item, index) in relateNowList"
|
||||
:key="index"
|
||||
v-if="relateNowList"
|
||||
style="margin-bottom: 10px;line-height: 20px"
|
||||
>
|
||||
{{index+1}}. {{item.creationUserName}} {{item.creationTime}} {{item.content}}
|
||||
<div v-if="relateNowList.length >1"><el-divider></el-divider></div>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="relateDialogClose()">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getBusStandFileByAttId } from 'api/process'
|
||||
|
||||
export default {
|
||||
name: "regulatoryMaterialsDetail",
|
||||
data () {
|
||||
return {
|
||||
url: {
|
||||
getLawsInformationInfo: 'lawss/sarLawsInformation/getLawsInformationInfo',
|
||||
getLogList: 'lawss/sarUpdLog/getLogList', // 更新记录
|
||||
personCollect: 'person/personCollect', // 收藏
|
||||
updateByUserId: 'person/personCollect/updateByUserId', // 取消收藏
|
||||
},
|
||||
form: {},
|
||||
activeNames: ['1'],
|
||||
isSubmit: false,
|
||||
|
||||
// 更新记录
|
||||
relateDialog: false,
|
||||
relateNowList: [],
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
userToId (userStr) {
|
||||
return (userStr && userStr !== '') ? userStr.split(',').map(item => item.split('(')[1].split(')')[0]) : []
|
||||
},
|
||||
// 下载权限
|
||||
hasDownLoadPermission() {
|
||||
const userId = this.$store.getters.userInfo.userId
|
||||
// 未设置可下载者 创建人和审批人可下载
|
||||
if (!this.form.downloadableBy || this.form.downloadableBy === '') {
|
||||
if (this.userToId(this.form.createAndApproveBy).find(item => item === userId)) {
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
// 设置可下载者 可下载者可下载
|
||||
if (this.userToId(this.form.downloadableBy).find(item => item === userId)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
},
|
||||
|
||||
getData () {
|
||||
const id = this.$route.params.id
|
||||
this.$http._getData(this.url.getLawsInformationInfo, { id }).then(res => {
|
||||
if (res.ok) {
|
||||
this.$set(this, 'form', res.data)
|
||||
}
|
||||
})
|
||||
},
|
||||
removeCommasAtStartAndEnd(inputString) {
|
||||
// 检查字符串是否以逗号开头
|
||||
if (inputString.charAt(0) === ',') {
|
||||
inputString = inputString.slice(1); // 去除开头的逗号
|
||||
}
|
||||
|
||||
// 检查字符串是否以逗号结尾
|
||||
if (inputString.charAt(inputString.length - 1) === ',') {
|
||||
inputString = inputString.slice(0, -1); // 去除结尾的逗号
|
||||
}
|
||||
return inputString;
|
||||
},
|
||||
|
||||
/**
|
||||
* 点击 加收藏 按钮事件
|
||||
* @param collectId 有值:取消收藏 无值:加收藏
|
||||
*/
|
||||
collectClick (collectId) {
|
||||
if (collectId) {
|
||||
// 取消收藏
|
||||
this.$http._put(this.url.updateByUserId, {
|
||||
id: collectId
|
||||
},{
|
||||
_this: this,
|
||||
loading: 'isSubmit'
|
||||
}).then(res => {
|
||||
this.form.collectId = ''
|
||||
})
|
||||
} else {
|
||||
// 加收藏
|
||||
let personCollect = {
|
||||
userId: this.$store.getters.userInfo.userId,
|
||||
collectResId: this.form.id,
|
||||
collectTitle: this.form.name,
|
||||
collectType: 'LAWS_INFORMATION' // 国内收藏type
|
||||
}
|
||||
this.$http._postData(this.url.personCollect, personCollect, {
|
||||
_this: this,
|
||||
loading: 'isSubmit'
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success(res.message)
|
||||
this.form.collectId = res.data.id
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
// 更新LOG
|
||||
relateEvent () {
|
||||
const query = {
|
||||
sarId: this.$route.params.id,
|
||||
sarType: 'LAWS_INFORMATION'
|
||||
}
|
||||
this.$http._getData(this.url.getLogList, query).then(res => {
|
||||
if (res.ok && res.data.length > 0) {
|
||||
this.relateDialog = true
|
||||
const relateList = res.data
|
||||
var i
|
||||
for (i = 0; i < relateList.length; i++) {
|
||||
let obj = {creationUserName: '', creationTime: '', content: ''}
|
||||
obj.creationUserName = relateList[i].creationUserName
|
||||
obj.creationTime = relateList[i].creationTime
|
||||
obj.content = relateList[i].content
|
||||
this.relateNowList.push(obj)
|
||||
}
|
||||
} else {
|
||||
this.$message.warning('暂无数据')
|
||||
}
|
||||
})
|
||||
},
|
||||
relateDialogClose () {
|
||||
this.relateDialog = false
|
||||
this.relateNowList = []
|
||||
},
|
||||
downloadFile (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSarNew?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
downloadFileByWater (attId, fileSuffix) {
|
||||
if (fileSuffix !== 'pdf' && fileSuffix !== 'PDF') {
|
||||
this.$message.error('水印下载仅支持PDF,pdf格式文件')
|
||||
} else {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSarWaterMarkNew?fileId=' + attId + '&userId=' + this.$store.getters.userInfo.userId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
}
|
||||
},
|
||||
getBusStandFileByAttId(attId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getBusStandFileByAttId({
|
||||
attId
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
}).catch(e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
openFileInPdf (attId, fileName) {
|
||||
// 判断是否是图片格式,图片格式不预览,直接下载
|
||||
let index1 = fileName.lastIndexOf('.')
|
||||
let index2 = fileName.length
|
||||
let fileSuffix = fileName.substring(index1, index2)
|
||||
//把后缀转大写
|
||||
if(fileSuffix !== undefined && fileSuffix !== null){
|
||||
fileSuffix = fileSuffix.toUpperCase()
|
||||
}
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.PNG'|| fileSuffix === '.JPG'|| fileSuffix === '.JPEG') {
|
||||
this.downloadFile(attId)
|
||||
return true
|
||||
}
|
||||
// 缺少文件
|
||||
if (this.$hasPermission('fd83032ae5f41a0021b00e93c88edbbg')) {
|
||||
if (fileSuffix === '.PDG' || fileSuffix === '.pdg') {
|
||||
this.getBusStandFileByAttId(attId)
|
||||
.then(res => {
|
||||
if(res){
|
||||
const editFileInfo = res
|
||||
if(editFileInfo.fileSuffix === 'pdg' || editFileInfo.fileSuffix === 'PDG'){
|
||||
window.open('book://ssreader/e0?url='+editFileInfo.downLoadUrl)
|
||||
}
|
||||
}
|
||||
}).catch(e => {
|
||||
this.$message.warning('文件不存在,预览失败')
|
||||
})
|
||||
}else {
|
||||
this.$http.get('lawss/sarLawsFile/queryConvertAtt', {
|
||||
attId: attId
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.data) {
|
||||
let fileObj = {}
|
||||
fileObj.fileId = res.data.attId
|
||||
fileObj.fileName = fileName
|
||||
let fileList = []
|
||||
let repeatData = 0
|
||||
if (sessionStorage.getItem('fileInfo')) {
|
||||
fileList = JSON.parse(sessionStorage.getItem('fileInfo'))
|
||||
if (fileList != null && fileList.length > 0) {
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
if (fileList[i].fileId === res.data.attId) {
|
||||
repeatData = 1
|
||||
break
|
||||
}
|
||||
}
|
||||
if (repeatData === 0) {
|
||||
fileList.push(fileObj)
|
||||
fileList = JSON.stringify(fileList)
|
||||
sessionStorage.setItem('fileInfo', fileList)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fileList.push(fileObj)
|
||||
fileList = JSON.stringify(fileList)
|
||||
sessionStorage.setItem('fileInfo', fileList)
|
||||
}
|
||||
window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + res.data.attId))
|
||||
} else {
|
||||
this.$message.error('文档未转换成功或本地读取不到该文档')
|
||||
}
|
||||
}, e => {
|
||||
this.$message.error('文档未转换成功或本地读取不到该文档')
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$message.error('没有在线预览文档权限!')
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.regulatoryMaterialsDetail {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
overflow: auto;
|
||||
.container {
|
||||
padding: 15px 30px 0;
|
||||
width: 1200px;
|
||||
margin: 0 auto;
|
||||
height: 100%;
|
||||
.header {
|
||||
padding: 34px 0;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: #555555;
|
||||
text-align: center;
|
||||
}
|
||||
.content {
|
||||
border-top: 2px dashed rgb(209, 209, 209);
|
||||
.modular-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
border-bottom: 1px solid #E5E5E5;
|
||||
.modular-header-title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
color: #3B424C;
|
||||
> .icon-modular-title {
|
||||
display: inline-block;
|
||||
margin-left: -28px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
background-image: url("~assets/images/shangqi/standardDetails/modular-title.png");
|
||||
position: relative;
|
||||
top: 2px;
|
||||
}
|
||||
> span {
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
/deep/ .modular-header-btn{
|
||||
> button {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
font-size: 14px;
|
||||
padding: 0 10px;
|
||||
font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
|
||||
> i{
|
||||
display: inline-block;
|
||||
margin-right: 3px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
vertical-align: text-bottom;
|
||||
}
|
||||
}
|
||||
.collection-btn{
|
||||
padding: 0;
|
||||
border: none;
|
||||
> i {
|
||||
color: #F2CB51;
|
||||
font-size: 18px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
> .el-icon-star-on {
|
||||
font-size: 22px;
|
||||
}
|
||||
&:hover{
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
.relation-btn {
|
||||
color: #409EFF;
|
||||
border: 1px solid #409EFF;
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
.icon-relation{
|
||||
background-image: url("~assets/images/shangqi/standardDetails/relation.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.modular-content {
|
||||
color: #333;
|
||||
font-size: 16px;
|
||||
> p {
|
||||
min-height: 43px;
|
||||
line-height: 43px;
|
||||
border-bottom: 1px solid #E5E5E5;
|
||||
}
|
||||
.half {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
/deep/ .el-collapse-item__wrap {
|
||||
border: none;
|
||||
}
|
||||
.file-item{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.file-title {
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
color: #409EFF;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 780px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/deep/ .icon-download {
|
||||
display: inline-block;
|
||||
margin-left: 3px;
|
||||
width: 18px;
|
||||
height: 16px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
vertical-align: sub;
|
||||
cursor: pointer;
|
||||
background-image: url("~assets/images/shangqi/img/download.png");
|
||||
}
|
||||
|
||||
/deep/ .icon-download2 {
|
||||
display: inline-block;
|
||||
margin-left: 3px;
|
||||
width: 18px;
|
||||
height: 16px;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
vertical-align: sub;
|
||||
cursor: pointer;
|
||||
background-image: url("~assets/images/shangqi/img/download2.png");
|
||||
}
|
||||
</style>
|
||||
@@ -72,6 +72,12 @@ export default {
|
||||
standardReleaseList: [], //标准发布数据
|
||||
}
|
||||
},
|
||||
props: {
|
||||
messageType: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
@@ -113,7 +119,8 @@ export default {
|
||||
getAdvice() {
|
||||
this.loading = true
|
||||
this.$http.get("/lawss/NewsFeed/getNewsFeed", {
|
||||
messageType: 'GNWBZFG',
|
||||
// messageType: 'GNWBZFG',
|
||||
messageType: this.messageType,
|
||||
page: this.page,
|
||||
pageSize: this.pageSize
|
||||
}, {
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
prop="problemDescription"
|
||||
label="问题描述"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<a class="table-jump" @click="handleClick(scope.row.id)">{{ scope.row.problemDescription }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="questioner"
|
||||
@@ -63,6 +66,12 @@ export default {
|
||||
togo () {
|
||||
this.$router.push({path:'/releaseQA2'})
|
||||
},
|
||||
handleClick (id) {
|
||||
this.$router.push({
|
||||
path:'/standQA',
|
||||
query: { id }
|
||||
})
|
||||
},
|
||||
getDate(){
|
||||
this.loading = true
|
||||
let form = this.form
|
||||
|
||||
@@ -163,8 +163,10 @@ export default {
|
||||
prcId: row.prcId,
|
||||
prcNum: row.prcNum,
|
||||
prcName: row.prcName,
|
||||
prcType: row.prcType
|
||||
prcType: row.prcType,
|
||||
taskDefinitionKey: row.taskDefinitionKey
|
||||
}
|
||||
const params = {}
|
||||
let name = ''
|
||||
switch(prcType) {
|
||||
case '1':
|
||||
@@ -178,9 +180,11 @@ export default {
|
||||
break
|
||||
case 'laws1':
|
||||
if (row.taskInfo === '政策入库审批') {
|
||||
name = 'zcrkStep2'
|
||||
// name = 'zcrkStep2'
|
||||
name = 'policyWarehousing2'
|
||||
}else if (row.taskInfo === '重新发起入库流程'){
|
||||
name = 'zcrkStep3'
|
||||
// name = 'zcrkStep3'
|
||||
name = 'policyWarehousing1'
|
||||
}
|
||||
break
|
||||
case 'buss1':
|
||||
@@ -606,8 +610,67 @@ export default {
|
||||
case '27':
|
||||
name = 'MyQuestions2'
|
||||
break
|
||||
case '29':
|
||||
if (row.taskInfo === '内外部会议入库审批') {
|
||||
name = 'policyMeetings2'
|
||||
} else if (row.taskInfo === '重新发起内外部会议入库流程') {
|
||||
name = 'policyMeetings1'
|
||||
}
|
||||
break
|
||||
case '30':
|
||||
name = 'policyTopicEnrollment'
|
||||
switch (row.taskInfo) {
|
||||
case '审核':
|
||||
params.type = 'step2'
|
||||
break
|
||||
case '审定':
|
||||
params.type = 'step3'
|
||||
break
|
||||
case '批准':
|
||||
params.type = 'step4'
|
||||
break
|
||||
case '重新起草':
|
||||
params.type = 'step1_1'
|
||||
break
|
||||
}
|
||||
break
|
||||
case '31':
|
||||
name = 'policyTopicParticipation'
|
||||
switch (row.taskInfo) {
|
||||
case '审核':
|
||||
params.type = 'step2'
|
||||
break
|
||||
case '审定':
|
||||
params.type = 'step3'
|
||||
break
|
||||
case '批准':
|
||||
params.type = 'step4'
|
||||
break
|
||||
case '重新起草':
|
||||
params.type = 'step1_1'
|
||||
break
|
||||
case '32': {
|
||||
name = 'policyRegulatoryMaterials'
|
||||
switch (row.taskInfo) {
|
||||
case '批准':
|
||||
params.type = 'step2'
|
||||
break
|
||||
case '重新起草':
|
||||
params.type = 'step1_1'
|
||||
break
|
||||
}
|
||||
}
|
||||
break
|
||||
case '33':
|
||||
name = 'policyConsultation'
|
||||
break
|
||||
case '34':
|
||||
name = 'policyComplianceReview'
|
||||
break
|
||||
}
|
||||
this.$router.push({ name, query })
|
||||
break
|
||||
}
|
||||
this.$router.push({ name, query, params })
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
+14
-10
@@ -15,14 +15,22 @@
|
||||
<span slot="label"><i class="el-icon-s-order"></i> 标准征求意见</span>
|
||||
<solicitOpinions></solicitOpinions>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane name="release" style="overflow-y: auto;height: 100%">
|
||||
<span slot="label"><i class="el-icon-s-promotion"></i> 国内外标准法规入库</span>
|
||||
<release></release>
|
||||
<el-tab-pane name="releaseZL" style="overflow-y: auto;height: 100%">
|
||||
<span slot="label"><i class="el-icon-chat-line-round"></i> 标准化动态</span>
|
||||
<releaseZL></releaseZL>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane name="releaseUs" style="overflow-y: auto;height: 100%">
|
||||
<span slot="label"><i class="el-icon-s-operation"></i> 在研标准法规入库</span>
|
||||
<el-tab-pane name="releaseUs" style="overflow-y: auto;height: 100%">
|
||||
<span slot="label"><i class="el-icon-s-operation"></i> 在研标准法规动态</span>
|
||||
<releaseUs></releaseUs>
|
||||
</el-tab-pane>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane name="releaseCn" style="overflow-y: auto;height: 100%">
|
||||
<span slot="label"><i class="el-icon-s-promotion"></i> 国内标准法规动态</span>
|
||||
<release messageType="GNBZFG"></release>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane name="release" style="overflow-y: auto;height: 100%">
|
||||
<span slot="label"><i class="el-icon-s-promotion"></i> 国外标准法规动态</span>
|
||||
<release messageType="GWBZFG"></release>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane name="releaseBuss" style="overflow-y: auto;height: 100%">
|
||||
<span slot="label" style="position: relative"><i class="el-icon-s-promotion"></i>
|
||||
企业标准发布
|
||||
@@ -31,10 +39,6 @@
|
||||
</span>
|
||||
<releaseBuss></releaseBuss>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane name="releaseZL" style="overflow-y: auto;height: 100%">
|
||||
<span slot="label"><i class="el-icon-chat-line-round"></i> 标准化动态</span>
|
||||
<releaseZL></releaseZL>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane name="releaseQA" style="overflow-y: auto;height: 100%">
|
||||
<span slot="label"><i class="el-icon-chat-line-round"></i> 标准问答</span>
|
||||
<releaseQA></releaseQA>
|
||||
|
||||
@@ -1017,7 +1017,9 @@ export default {
|
||||
this.total = res.data.count
|
||||
}else{
|
||||
this.splitInfoPage = 1
|
||||
this.getSarFileSplitInfoEOPage()
|
||||
// this.getSarFileSplitInfoEOPage()
|
||||
this.standInfoList = []
|
||||
this.total = 0
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
|
||||
@@ -0,0 +1,250 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="政策课题"
|
||||
:visible.sync="show"
|
||||
width="1100px"
|
||||
custom-class="demo-drawer"
|
||||
:close-on-click-modal="false"
|
||||
@close=""
|
||||
append-to-body
|
||||
>
|
||||
<!--搜索区-->
|
||||
<div class="search-area">
|
||||
<el-form :modal="searchForm" :inline="true" class="label-input-form">
|
||||
<el-formItem label="课题名称" prop="topicName" class="search-item">
|
||||
<el-input v-model="searchForm.topicName" clearable placeholder="请输入课题名称" :maxlength="100" @keyup.enter.native="onSearch"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="课题承办单位" prop="organizer" class="search-item">
|
||||
<el-input v-model="searchForm.organizer" clearable placeholder="请输入课题承办单位" :maxlength="100" @keyup.enter.native="onSearch"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="启动时间" class="search-item" style="margin-right: 0">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
type="date"
|
||||
clearable
|
||||
:editable="true"
|
||||
placeholder="请选择启动时间"
|
||||
v-model="searchForm.startTimeBegin"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-formItem>
|
||||
<el-form-item label="至" label-width="25px" class="search-item">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
type="date"
|
||||
clearable
|
||||
:editable="true"
|
||||
placeholder="选择结束时间"
|
||||
v-model="searchForm.startTimeEnd"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-formItem label="课题状态" prop="topicStatus" class="search-item">
|
||||
<el-select v-model="searchForm.topicStatus"
|
||||
placeholder="请选择课题状态"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in topicStatusOptions"
|
||||
:key="opt.value"
|
||||
:value="!opt.value ? '' : opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
class="common-button-primary"
|
||||
v-btn-permission="'91821ac75391d6e77388f13b68803396'"
|
||||
@click="onSearch">
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="common-button-default"
|
||||
v-btn-permission="'22a0ea67e20998458c519281980a3af2'"
|
||||
@click="onClear">清空
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<div class="content">
|
||||
<el-table
|
||||
ref="selection"
|
||||
:data="data"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%;overflow-y: auto;overflow-x: hidden;"
|
||||
:height="300"
|
||||
border
|
||||
class="drag-table"
|
||||
@sort-change="sortChange"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px', fontWeight: 'bold', height: '48px', padding: 0}"
|
||||
:cell-style="{padding: 0}"
|
||||
@selection-change="selectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="topicName"
|
||||
label="课题名称"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="{row, column, $index}">
|
||||
<a class="table-jump" style="color: #2d8cf0" @click="handlePreview(row.id)">{{ row.topicName }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="organizer"
|
||||
label="课题承办单位"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="startTime"
|
||||
label="启动时间"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="topicStatus"
|
||||
label="课题状态"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination style="position: relative" :page="searchForm.page" :total="total" @pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
|
||||
<loading :loading="loading">数据获取中...</loading>
|
||||
</div>
|
||||
<div slot="footer">
|
||||
<el-button class="common-button-default" round icon="el-icon-close" @click="handleCancel">取消</el-button>
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="handleDragIn">带入</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "TopicsTable",
|
||||
data () {
|
||||
const topicStatusOptions = [
|
||||
{
|
||||
label: '进行中',
|
||||
value: '进行中'
|
||||
},
|
||||
{
|
||||
label: '已结题',
|
||||
value: '已结题'
|
||||
},
|
||||
]
|
||||
return {
|
||||
show: false,
|
||||
searchForm: {},
|
||||
api: {
|
||||
page: 'lawss/sarLawsTopic/page'
|
||||
},
|
||||
// 列表
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
selectedList: [],
|
||||
topicStatusOptions,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async getData () {
|
||||
this.searchForm.pageSize = this.searchForm.pageSize || this.$store.getters.userInfo.configContent
|
||||
this.searchForm.page = this.searchForm.page || 1
|
||||
let params = { ...this.searchForm }
|
||||
const res = await this.$http._getData(this.api.page, params, {_this:this,loading: 'loading'})
|
||||
if (res.ok && res.data) {
|
||||
this.data = res.data.list
|
||||
this.total = res.data.count
|
||||
}
|
||||
},
|
||||
open () {
|
||||
this.$set(this, 'searchForm', {})
|
||||
this.getData()
|
||||
this.show = true
|
||||
},
|
||||
// 选择项勾选改变
|
||||
selectionChange (data) {
|
||||
this.selectedList = data
|
||||
},
|
||||
// 表格排序
|
||||
sortChange({ column, prop, order }) {
|
||||
this.searchForm.sortField = prop
|
||||
this.searchForm.sortMode = 'asc'
|
||||
if (order === 'descending') {
|
||||
this.searchForm.sortMode = 'desc'
|
||||
}
|
||||
if (!order) {
|
||||
this.searchForm.sortField = ''
|
||||
this.searchForm.sortMode = ''
|
||||
}
|
||||
this.getData()
|
||||
},
|
||||
// 分页点击后方法
|
||||
pageChange (page) {
|
||||
this.searchForm.page = page
|
||||
this.getData()
|
||||
},
|
||||
// 分页每页显示数改变后方法
|
||||
pageSizeChange (pageSize) {
|
||||
this.searchForm.pageSize = pageSize
|
||||
this.getData()
|
||||
},
|
||||
// 点击查看
|
||||
handlePreview(id) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'policyTopicsDetail',
|
||||
params: { id }
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
onSearch () {
|
||||
this.searchForm.page = 1
|
||||
this.getData()
|
||||
},
|
||||
onClear () {
|
||||
this.$set(this, 'searchForm', {})
|
||||
this.getData()
|
||||
},
|
||||
handleCancel () {
|
||||
this.show = false
|
||||
},
|
||||
handleDragIn () {
|
||||
if (this.selectedList.length === 0) {
|
||||
return this.$message.warning('请选择要带入的课题信息')
|
||||
}
|
||||
if (this.selectedList.length > 1) {
|
||||
return this.$message.warning('最多可以带入一条课题信息')
|
||||
}
|
||||
this.$emit('dragIn', this.selectedList[0])
|
||||
this.show = false
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
/deep/ .demo-drawer{
|
||||
.el-dialog__body{
|
||||
padding: 0 20px;
|
||||
}
|
||||
.el-dialog__footer {
|
||||
padding: 0 20px 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,197 @@
|
||||
<template>
|
||||
<el-drawer
|
||||
title="高级搜索"
|
||||
size="800px"
|
||||
:visible="visible"
|
||||
:wrapperClosable="false"
|
||||
:before-close="beforeClose">
|
||||
<div class="drawer-content">
|
||||
<el-form
|
||||
:model="form"
|
||||
class="label-input-form table-lattice"
|
||||
label-width="80px">
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="参会人员"
|
||||
title="参会人员"
|
||||
v-model="form.participants">
|
||||
</InputFormItem>
|
||||
<InputFormItem
|
||||
label="会议主要内容"
|
||||
title="会议主要内容"
|
||||
v-model="form.meetingContent">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="会议地点"
|
||||
title="会议地点"
|
||||
v-model="form.meetingAddress">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">会议分类</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<SelectFormItem
|
||||
label="1级会议分类"
|
||||
title="1级会议分类"
|
||||
v-model="form.firstMeetingType"
|
||||
:options="dict.firstMeetingType">
|
||||
</SelectFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<SelectFormItem
|
||||
label="2级会议分类"
|
||||
title="2级会议分类"
|
||||
v-model="form.secondMeetingType"
|
||||
:options="dict.secondMeetingType">
|
||||
</SelectFormItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">会议议题</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="议题名称"
|
||||
title="议题名称"
|
||||
v-model="form.agendaName">
|
||||
</InputFormItem>
|
||||
<InputFormItem
|
||||
label="汇报人单位"
|
||||
title="汇报人单位"
|
||||
v-model="form.reportingUnit">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="汇报人"
|
||||
title="汇报人"
|
||||
v-model="form.reporter">
|
||||
</InputFormItem>
|
||||
<InputFormItem
|
||||
label="议题主要内容"
|
||||
title="议题主要内容"
|
||||
v-model="form.agendaContent">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="drawer-footer">
|
||||
<el-button
|
||||
class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
type="primary"
|
||||
@click="onSearch('search')">搜索
|
||||
</el-button>
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-close"
|
||||
@click="onCancel('cancel')">取消
|
||||
</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</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 DatePickerGroupFormItem from "@/components/hzwlComponents/DatePickerGroupFormItem";
|
||||
import DepartmentFormItem from "@/components/hzwlComponents/DepartmentFormItem";
|
||||
import personFormItem from "@/components/hzwlComponents/personFormItem";
|
||||
import InputForStandardsForLaws from "@/components/hzwlComponents/InputForStandardsForLaws";
|
||||
|
||||
export default {
|
||||
name: "advancedSearch",
|
||||
components: {
|
||||
ProcessTitle,
|
||||
SelectFormItem,
|
||||
InputFormItem,
|
||||
DatePickerFormItem,
|
||||
DataRangePickerFormItem,
|
||||
SelectMultipleFormItem,
|
||||
DatePickerGroupFormItem,
|
||||
DepartmentFormItem,
|
||||
personFormItem,
|
||||
InputForStandardsForLaws
|
||||
},
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
dict: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
type: 'cancel'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
beforeClose (done) {
|
||||
switch (this.type) {
|
||||
case "search":
|
||||
this.onSearch()
|
||||
break
|
||||
case 'cancel':
|
||||
this.onCancel()
|
||||
break
|
||||
}
|
||||
},
|
||||
onSearch (type) {
|
||||
this.type = type
|
||||
this.$emit('search')
|
||||
this.$emit('update:visible', false)
|
||||
},
|
||||
onCancel(type) {
|
||||
this.type = type
|
||||
this.$emit('resetAdvancedSearchForm')
|
||||
this.$emit('update:visible', false)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.drawer-content {
|
||||
padding: 0 19px;
|
||||
overflow-y: auto;
|
||||
flex: auto;
|
||||
}
|
||||
.drawer-footer {
|
||||
width: 100%;
|
||||
padding: 0 20px;
|
||||
height: 70px;
|
||||
line-height: 69px;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
text-align: right;
|
||||
background: #fff;
|
||||
z-index: 999;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,401 @@
|
||||
<template>
|
||||
<el-drawer :title="title"
|
||||
:visible="showDrawer"
|
||||
:wrapperClosable="false"
|
||||
@close="onClose"
|
||||
size="1050px">
|
||||
<div class="drawer-content">
|
||||
<el-form
|
||||
v-if="showDrawer && reloadForm"
|
||||
ref="formRef"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-col :span="24"><div class="divider-line">基础信息</div></el-col>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议名称" prop="meetingName" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.meetingName"
|
||||
placeholder="请输入会议名称"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="课题名称" prop="topicName" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.topicName"
|
||||
placeholder="请输入课题名称"
|
||||
clearable></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
size="mini"
|
||||
style="position:absolute;top: 10px;right: 0;"
|
||||
@click="handleGetTopic"
|
||||
>调取课题</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议主办单位" prop="meetingOrganizer" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.meetingOrganizer"
|
||||
placeholder="请输入会议主办单位"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<CustomDatePick
|
||||
:config="{
|
||||
attrName: '会议时间',
|
||||
attrField: 'meetingTime'
|
||||
}"
|
||||
v-model="form.meetingTime"
|
||||
></CustomDatePick>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议地点" prop="meetingAddress" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.meetingAddress"
|
||||
placeholder="请输入会议地点"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="参会人员" prop="participants" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.participants"
|
||||
placeholder="请输入参会人员"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<custom-file
|
||||
:config="{
|
||||
attrName: '会议纪要',
|
||||
attrField: 'meetingMinutes'
|
||||
}"
|
||||
v-model="form.meetingMinutes"
|
||||
></custom-file>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<CustomTextarea
|
||||
:config="{
|
||||
attrName: '会议主要内容',
|
||||
attrField: 'meetingContent'
|
||||
}"
|
||||
v-model="form.meetingContent"
|
||||
></CustomTextarea>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-col :span="24"><div class="divider-line">会议分类</div></el-col>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="1级会议分类" prop="firstMeetingType" label-width="150px" class="add-form-item">
|
||||
<template slot="label">1级会议分类</template>
|
||||
<el-select v-model="form.firstMeetingType"
|
||||
placeholder="请选择1级会议分类"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in dict.firstMeetingType"
|
||||
:key="opt.value"
|
||||
:value="opt.value === undefined ? '' :opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="2级会议分类" prop="secondMeetingType" label-width="150px" class="add-form-item">
|
||||
<template slot="label">2级会议分类</template>
|
||||
<el-select v-model="form.secondMeetingType"
|
||||
placeholder="请选择2级会议分类"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in dict.secondMeetingType"
|
||||
:key="opt.value"
|
||||
:value="opt.value === undefined ? '' :opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<template v-for="(item, index) in form.meetingTopicList">
|
||||
<el-col :span="24">
|
||||
<div class="divider-line">
|
||||
会议议题
|
||||
<el-button type="primary" size="mini" icon="el-icon-plus" @click="addMeetingTopic"
|
||||
:style="{visibility: (index === form.meetingTopicList.length - 1) ? 'visible' : 'collapse'}"></el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-minus" @click="removeMeetingTopic(index)"
|
||||
:style="{visibility: (form.meetingTopicList.length < 2 && index === 0) ? 'collapse' : 'visible'}"></el-button>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="议题名称" :prop="'meetingTopicList.' + index + '.agendaName'" :rules="rules.agendaName" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.agendaName"
|
||||
placeholder="请输入议题名称"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '议题材料',
|
||||
attrField: `meetingTopicList.${index}.agendaMaterials`
|
||||
}"
|
||||
:rules="rules.agendaMaterials"
|
||||
v-model="item.agendaMaterials"
|
||||
></customFile>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="汇报人" :prop="'meetingTopicList.' + index + '.reporter'" :rules="rules.reporter" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.reporter"
|
||||
placeholder="请输入汇报人"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="汇报人单位" :prop="'meetingTopicList.' + index + '.reportingUnit'" :rules="rules.reportingUnit" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.reportingUnit"
|
||||
placeholder="请输入汇报人单位"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<CustomTextarea
|
||||
:config="{
|
||||
attrName: '议题主要内容',
|
||||
attrField: `meetingTopicList.${index}.agendaContent`
|
||||
}"
|
||||
:rules="rules.agendaContent"
|
||||
v-model="item.agendaContent"
|
||||
></CustomTextarea>
|
||||
</el-col>
|
||||
</template>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="drawer-footer">
|
||||
<el-button icon="el-icon-check" type="primary" @click="onSubmit" :loading="isSubmit">提交</el-button>
|
||||
<el-button icon="el-icon-close" @click="onClose">取消</el-button>
|
||||
</div>
|
||||
<TopicsTable ref="TopicsTableRef" @dragIn="dragIn"></TopicsTable>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CustomDatePick from '@/components/CustomFormComponents/DatePicker'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import CustomTextarea from '@/components/CustomFormComponents/Textarea'
|
||||
import TopicsTable from "./TopicsTable";
|
||||
|
||||
export default {
|
||||
name: "editDrawer",
|
||||
components: {
|
||||
CustomDatePick,
|
||||
CustomFile,
|
||||
CustomTextarea,
|
||||
TopicsTable
|
||||
},
|
||||
props: {
|
||||
dict: {
|
||||
type: Object
|
||||
},
|
||||
showDrawer: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '新增'
|
||||
},
|
||||
editForm: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
data (){
|
||||
const rules = {
|
||||
meetingName: [
|
||||
{required: true, type: 'string', message: '会议名称不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '会议名称不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
meetingOrganizer: [
|
||||
{required: true, type: 'string', message: '会议主办单位不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '会议主办单位不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
meetingTime: [
|
||||
{required: true, message: '会议时间不能为空', trigger: 'change'}
|
||||
],
|
||||
meetingAddress: [
|
||||
{required: true, type: 'string', message: '会议地点不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '会议地点不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
participants: [
|
||||
{required: true, type: 'string', message: '参会人员不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '参会人员不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
meetingContent: [
|
||||
{required: true, type: 'string', message: '会议主要内容不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '会议主要内容不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
firstMeetingType: [
|
||||
{required: true, message: '1级会议分类不能为空', trigger: 'change'}
|
||||
],
|
||||
secondMeetingType: [
|
||||
{required: true, message: '2级会议分类不能为空', trigger: 'change'}
|
||||
],
|
||||
agendaName: [
|
||||
{required: true, type: 'string', message: '议题名称不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '议题名称不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
reporter: [
|
||||
{required: true, type: 'string', message: '汇报人不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '汇报人不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
reportingUnit: [
|
||||
{required: true, type: 'string', message: '汇报人单位不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '汇报人单位不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
agendaContent: [
|
||||
{required: true, type: 'string', message: '议题主要内容不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '议题主要内容不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
}
|
||||
const form = {
|
||||
meetingName: '',
|
||||
meetingOrganizer: '',
|
||||
meetingTime: '',
|
||||
meetingAddress: '',
|
||||
participants: '',
|
||||
meetingMinutes: '',
|
||||
meetingContent: '',
|
||||
firstMeetingType: '',
|
||||
secondMeetingType: '',
|
||||
meetingTopicList: [
|
||||
{
|
||||
agendaName: '',
|
||||
agendaMaterials: '',
|
||||
reporter: '',
|
||||
reportingUnit: '',
|
||||
agendaContent: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
return {
|
||||
rules,
|
||||
form,
|
||||
isSubmit: false,
|
||||
reloadForm: true,
|
||||
api: {
|
||||
add: 'lawss/insideOutsideMeeting/addMeetingInfo',
|
||||
delete :'lawss/insideOutsideMeeting/deleteMeetingInfo',
|
||||
update: 'lawss/insideOutsideMeeting/updateMeetingInfo'
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
showDrawer (val) {
|
||||
if (this.title === '编辑') {
|
||||
this.form = { ...this.editForm }
|
||||
} else {
|
||||
this.resetForm()
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
addMeetingTopic () {
|
||||
const meetingTopicItem = {
|
||||
agendaName: '',
|
||||
agendaMaterials: '',
|
||||
reporter: '',
|
||||
reportingUnit: '',
|
||||
agendaContent: ''
|
||||
}
|
||||
this.form.meetingTopicList = [...this.form.meetingTopicList, meetingTopicItem]
|
||||
},
|
||||
removeMeetingTopic (index) {
|
||||
let res = []
|
||||
this.form.meetingTopicList.forEach((item, i) => {
|
||||
if (i !== index) {
|
||||
res.push(item)
|
||||
}
|
||||
})
|
||||
this.form.meetingTopicList = [ ...res ]
|
||||
},
|
||||
resetForm () {
|
||||
this.form = {
|
||||
meetingName: '',
|
||||
meetingOrganizer: '',
|
||||
meetingTime: '',
|
||||
meetingAddress: '',
|
||||
participants: '',
|
||||
meetingMinutes: '',
|
||||
meetingContent: '',
|
||||
firstMeetingType: '',
|
||||
secondMeetingType: '',
|
||||
meetingTopicList: [
|
||||
{
|
||||
agendaName: '',
|
||||
agendaMaterials: '',
|
||||
reporter: '',
|
||||
reportingUnit: '',
|
||||
agendaContent: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
onClose () {
|
||||
this.$emit('update:showDrawer', false)
|
||||
this.$refs['formRef'].resetFields()
|
||||
this.resetForm()
|
||||
},
|
||||
onSubmit () {
|
||||
this.$refs.formRef.validate(valid => {
|
||||
if (valid) {
|
||||
if (this.title === '新增') {
|
||||
this.$http._postData(this.api.add, this.form).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('新增成功')
|
||||
this.onClose()
|
||||
this.$emit('load')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$http._putData(this.api.update, this.form).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('修改成功')
|
||||
this.onClose()
|
||||
this.$emit('load')
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
handleGetTopic () {
|
||||
this.$refs.TopicsTableRef.open()
|
||||
},
|
||||
dragIn (val) {
|
||||
this.$set(this.form, 'topicName', val.topicName)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.drawer-content {
|
||||
padding: 0 19px;
|
||||
overflow-y: auto;
|
||||
flex: auto;
|
||||
}
|
||||
.drawer-footer {
|
||||
width: 100%;
|
||||
padding: 0 20px;
|
||||
height: 70px;
|
||||
line-height: 69px;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
text-align: right;
|
||||
background: #fff;
|
||||
z-index: 999;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,381 @@
|
||||
<template>
|
||||
<div class="meeting-root">
|
||||
<!--搜索区-->
|
||||
<div class="search-area">
|
||||
<el-form :modal="searchForm" :inline="true" class="label-input-form">
|
||||
<el-formItem label="会议名称" prop="meetingName" class="search-item">
|
||||
<el-input v-model="searchForm.meetingName" clearable placeholder="请输入会议名称" :maxlength="100" @keyup.enter.native="onSearch"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="会议主办单位" prop="meetingOrganizer" class="search-item">
|
||||
<el-input v-model="searchForm.meetingOrganizer" clearable placeholder="请输入会议主办单位" :maxlength="100" @keyup.enter.native="onSearch"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="会议时间" class="search-item" style="margin-right: 0">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
type="date"
|
||||
clearable
|
||||
:editable="true"
|
||||
placeholder="选择开始时间"
|
||||
v-model="searchForm.meetingTimeBegin"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-formItem>
|
||||
<el-form-item label="至" label-width="25px" class="search-item">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
type="date"
|
||||
clearable
|
||||
:editable="true"
|
||||
placeholder="选择结束时间"
|
||||
v-model="searchForm.meetingTimeEnd"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
class="common-button-primary"
|
||||
v-btn-permission="'520f8524252e76e751a883a0a8a8615c'"
|
||||
@click="onSearch">
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="common-button-default"
|
||||
v-btn-permission="'6a9483964b7b49dd473ef9e6fd4a649e'"
|
||||
@click="onClear">清空
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
v-btn-permission="'7f98cd8b424d6ad83b1770a6576993fc'"
|
||||
@click="advancedSearch">高级检索
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--按钮区-->
|
||||
<div class="action-bar">
|
||||
<el-button class="common-button-default export-button"
|
||||
size="mini"
|
||||
title="不勾选时默认导出所有筛选项;勾选时仅导出勾选项"
|
||||
v-btn-permission="'6d749caee927a480fa99e5ddc48d8e05'"
|
||||
@click="exportData"><i class="iconfont"></i>导出
|
||||
</el-button>
|
||||
<el-button class="common-button-default in-button"
|
||||
size="mini"
|
||||
v-btn-permission="'b168e0381ec7ba5d762c36ad2935542f'"
|
||||
@click="addImportModal"><i class="iconfont"></i>导入
|
||||
</el-button>
|
||||
<el-button class="common-button-default in-button"
|
||||
size="mini"
|
||||
v-btn-permission="'7990fb64c468c2d37cc2246fc3cb694e'"
|
||||
@click="handleMoudel"><i class="iconfont"></i>模板下载
|
||||
</el-button>
|
||||
<el-button type="primary"
|
||||
class="common-button-primary add-button"
|
||||
size="mini"
|
||||
v-btn-permission="'f0e663244c1f823caa07e99bfc6535dc'"
|
||||
@click="openDrawer('add')"
|
||||
><i class="el-icon-plus"></i>新增
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<div class="content">
|
||||
<el-table
|
||||
ref="selection"
|
||||
:data="data"
|
||||
tooltip-effect="dark"
|
||||
style="width:100%;height: calc(100% - 57px)"
|
||||
height="string"
|
||||
border
|
||||
class="drag-table"
|
||||
@sort-change="sortChange"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px', fontWeight: 'bold', height: '48px', padding: 0}"
|
||||
:cell-style="{padding: 0}"
|
||||
@selection-change="selectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="meetingName"
|
||||
label="会议名称"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="{row, column, $index}">
|
||||
<a class="table-jump" style="color: #2d8cf0" @click="handlePreview(row.id)">{{ row.meetingName }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="meetingOrganizer"
|
||||
label="会议主办单位"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="meetingTime"
|
||||
label="会议时间"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="meetingAddress"
|
||||
label="会议地点"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="agendaName"
|
||||
label="议题名称"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.meetingTopicList.map(item => item.agendaName).join(',') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="isPermission('62cdf3d570941c154d28371632ccfa2e,71155d105e930bb8e7881a8a9809646a') > 0"
|
||||
prop="action"
|
||||
label="操作"
|
||||
align="center"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a class="table-jump" v-btn-permission="'62cdf3d570941c154d28371632ccfa2e'" style="color: #2d8cf0" @click="openDrawer('edit', scope.row)">编辑</a>
|
||||
<a class="table-jump" v-btn-permission="'71155d105e930bb8e7881a8a9809646a'" style="color: #f56c6c;margin-left: 10px" @click="onDelete(scope.row.id)">删除</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination :page="searchForm.page" :total="total" @pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
|
||||
<loading :loading="loading">数据获取中...</loading>
|
||||
</div>
|
||||
<!-- 高级搜索 -->
|
||||
<AdvancedSearch :visible.sync="advancedSearchVisible" :form="advancedSearchForm" :dict="dict" @search="onSearch" @resetAdvancedSearchForm="resetAdvancedSearchForm"></AdvancedSearch>
|
||||
<!-- 新增编辑 -->
|
||||
<editDrawer ref="editDrawerRef" :dict="dict" :showDrawer.sync="showDrawer" :title="titleDrawer" :editForm="editForm" @load="getData"></editDrawer>
|
||||
<!-- 导入 -->
|
||||
<ImportZip :visible.sync="importModalShowFlag" :action="importExcelUrl"></ImportZip>
|
||||
<!-- 导出 -->
|
||||
<ExportDialog ref="exportDialogRef" @exportName="handleExport"></ExportDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import editDrawer from "./components/editDrawer";
|
||||
import AdvancedSearch from './components/advancedSearch'
|
||||
import ImportZip from '@/components/hzwlComponents/importZip'
|
||||
import ExportDialog from '@/components/hzwlComponents/exportDialog'
|
||||
import store from "@/store";
|
||||
|
||||
export default {
|
||||
name: "meeting",
|
||||
components: {
|
||||
editDrawer,
|
||||
AdvancedSearch,
|
||||
ImportZip,
|
||||
ExportDialog
|
||||
},
|
||||
data(){
|
||||
return {
|
||||
searchForm: {},
|
||||
advancedSearchForm: {},
|
||||
data: [],
|
||||
total: 0,
|
||||
selectedList: [],
|
||||
loading: false,
|
||||
dict: {},
|
||||
showDrawer: false,
|
||||
titleDrawer: '',
|
||||
// 导入
|
||||
importModalShowFlag: false,
|
||||
importExcelUrl: '',
|
||||
// 高级搜索
|
||||
advancedSearchVisible: false,
|
||||
editForm: void 0,
|
||||
api: {
|
||||
page: 'lawss/insideOutsideMeeting/page',
|
||||
delete :'lawss/insideOutsideMeeting/deleteMeetingInfo'
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
// 点击查看
|
||||
handlePreview(id) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'meetingDetail',
|
||||
params: { id }
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
isPermission (value) {
|
||||
let hasCount = 0
|
||||
let set =new Set( value.split(","))
|
||||
let menuList = store.getters.getMenuList
|
||||
if (menuList === '') {
|
||||
return hasCount
|
||||
} else {
|
||||
menuList.map((menu) => {
|
||||
if ( set.has(menu.id)|| value === undefined || value === '') {
|
||||
hasCount++
|
||||
}
|
||||
})
|
||||
}
|
||||
return hasCount
|
||||
},
|
||||
async getData () {
|
||||
this.searchForm.pageSize = this.searchForm.pageSize || this.$store.getters.userInfo.configContent
|
||||
this.searchForm.page = this.searchForm.page || 1
|
||||
let params = { ...this.searchForm, ...this.advancedSearchForm }
|
||||
const res = await this.$http._getData(this.api.page, params, {_this:this,loading: 'loading'})
|
||||
if (res.ok && res.data) {
|
||||
this.data = res.data.list
|
||||
this.total = res.data.count
|
||||
}
|
||||
},
|
||||
onSearch(){
|
||||
this.getData()
|
||||
},
|
||||
onClear () {
|
||||
this.$set(this, 'searchForm', {})
|
||||
this.$set(this, 'advancedSearchForm', {})
|
||||
this.getData()
|
||||
},
|
||||
resetAdvancedSearchForm () {
|
||||
this.$set(this, 'advancedSearchForm', {})
|
||||
this.getData()
|
||||
},
|
||||
// 高级搜索
|
||||
advancedSearch () {
|
||||
this.$set(this, 'advancedSearchForm', {})
|
||||
this.advancedSearchVisible = true
|
||||
},
|
||||
// 选择项勾选改变
|
||||
selectionChange (data) {
|
||||
this.selectedList = []
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
this.selectedList.push(data[i].id)
|
||||
}
|
||||
},
|
||||
// 表格排序
|
||||
sortChange({ column, prop, order }) {
|
||||
this.searchForm.sortField = prop
|
||||
this.searchForm.sortMode = 'asc'
|
||||
if (order === 'descending') {
|
||||
this.searchForm.sortMode = 'desc'
|
||||
}
|
||||
if (!order) {
|
||||
this.searchForm.sortField = ''
|
||||
this.searchForm.sortMode = ''
|
||||
}
|
||||
this.getData()
|
||||
},
|
||||
// 分页点击后方法
|
||||
pageChange (page) {
|
||||
this.searchForm.page = page
|
||||
this.getData()
|
||||
},
|
||||
// 分页每页显示数改变后方法
|
||||
pageSizeChange (pageSize) {
|
||||
this.searchForm.pageSize = pageSize
|
||||
this.getData()
|
||||
},
|
||||
// 导出
|
||||
exportData () {
|
||||
this.$refs.exportDialogRef.openModel()
|
||||
},
|
||||
handleExport (exportName) {
|
||||
const params = {
|
||||
...this.searchForm,
|
||||
exportName: exportName,
|
||||
exportIds: this.selectedList.join(',')
|
||||
}
|
||||
let query = '?'
|
||||
for(let i in params){
|
||||
if (params[i] && params[i]!=='') {
|
||||
query = query + i + '=' + params[i] + '&'
|
||||
}
|
||||
}
|
||||
query = query.slice(0,-1)
|
||||
window.open('/api/lawss/insideOutsideMeeting/exportMeetingInfo' + query)
|
||||
this.$refs.exportDialogRef.cancel()
|
||||
this.$message.success('导出信息成功')
|
||||
},
|
||||
// 导入
|
||||
addImportModal() {
|
||||
this.importModalShowFlag = true
|
||||
this.importExcelUrl = '/api/lawss/insideOutsideMeeting/importMeetingInfo'
|
||||
},
|
||||
// 模板下载
|
||||
handleMoudel(){
|
||||
window.open('/api/lawss/insideOutsideMeeting/exportTemplateFile?fileName=内外部会议导入模板')
|
||||
},
|
||||
// 新增编辑
|
||||
openDrawer (type, row) {
|
||||
this.showDrawer = false
|
||||
switch (type) {
|
||||
case 'add':
|
||||
this.titleDrawer = '新增'
|
||||
break
|
||||
case 'edit':
|
||||
this.titleDrawer = '编辑'
|
||||
this.$set(this, 'editForm', row)
|
||||
break
|
||||
}
|
||||
this.$nextTick(()=>{
|
||||
this.showDrawer = true
|
||||
})
|
||||
},
|
||||
onDelete (id) {
|
||||
this.$confirm('确认删除这些数据?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
}).then(() => {
|
||||
this.$http._deleteData(this.api.delete, { meetingId: id }).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('删除成功')
|
||||
this.getData()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
// 查询各下拉框数据
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.dict = { ...res.data }
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.meeting-root{
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.content{
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,185 @@
|
||||
<template>
|
||||
<!-- 新增体系 -->
|
||||
<el-drawer
|
||||
:wrapperClosable="false"
|
||||
:title="productTitle"
|
||||
:visible.sync="productModal"
|
||||
size="800px"
|
||||
:before-close="closeDrawer"
|
||||
label-width="130px"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<el-form :model="productModelAdd"
|
||||
ref="productModelAdd"
|
||||
:rules="productRules"
|
||||
class="label-input-form"
|
||||
label-width="130px">
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-form-item label="菜单名称" prop="menuName" class="add-form-item">
|
||||
<el-input v-model.trim="productModelAdd.menuName" placeholder="请输入菜单名称" clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-form-item label="排序号" prop="displaySeq" class="add-form-item">
|
||||
<el-input v-model.number="productModelAdd.displaySeq"
|
||||
number
|
||||
placeholder="请输入排序号"
|
||||
:maxlength="4"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-form-item v-if="modalType === 2" label="上级菜单" prop="parentIdsName" class="add-form-item">
|
||||
<el-input v-model="productModelAdd.parentIdsName" disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-form-item label="描述" prop="remarks" class="add-form-item">
|
||||
<el-input v-model.trim="productModelAdd.remarks"
|
||||
placeholder="请输入描述"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button
|
||||
class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
type="primary"
|
||||
@click="saveProduct('productModelAdd')">提交</el-button>
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-close"
|
||||
@click="closeDrawer">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "addStructure",
|
||||
data(){
|
||||
return {
|
||||
productTitle: '', // 模态框标题
|
||||
productModal: false, // 模态框是否打开
|
||||
modalType: '',
|
||||
productModelAdd: {
|
||||
id : "",
|
||||
sorDivide : "FOREIGN_LAWS",
|
||||
menuName : "",
|
||||
parentId : null,
|
||||
parentIds : null,
|
||||
parentIdsName : "",
|
||||
displaySeq : "",
|
||||
creationTime : "",
|
||||
modifyTime : "",
|
||||
remarks : "",
|
||||
children : [],
|
||||
},
|
||||
productRules: {
|
||||
menuName: [
|
||||
{required: true, message: '一级菜单不能为空', trigger: 'blur'},
|
||||
{type: 'string', max: 100, message: '最多输入100位', trigger: 'blur'}
|
||||
],
|
||||
displaySeq: [
|
||||
{type: 'number', required: true, message: '排序号不能为空且为正整数', trigger: 'blur'},
|
||||
{type: 'string', validator: this.verify.validStandNumInCompile2, trigger: 'blur'}
|
||||
],
|
||||
remarks: [
|
||||
{type: 'string', max: 500, message: '最多输入500位', trigger: 'blur'}
|
||||
],
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
append(data) {
|
||||
this.modalType = 1
|
||||
this.selectChildMenu(data)
|
||||
this.productModal = true
|
||||
this.productTitle = '新增体系'
|
||||
this.productModelAdd.dicTypeCode = ''
|
||||
},
|
||||
update(data) {
|
||||
this.modalType = 2
|
||||
this.selectChildMenu(data)
|
||||
this.productModal = true
|
||||
this.productTitle = '编辑体系'
|
||||
},
|
||||
// 查询二级菜单
|
||||
selectChildMenu (row) {
|
||||
this.$http.get('sarResource/ts-resource/getMenuById', {
|
||||
menuId: row.id
|
||||
}, {}, res => {
|
||||
if (res.ok) {
|
||||
if(this.modalType === 1){
|
||||
let idsName = ""
|
||||
if (row.parentIds !== null) {
|
||||
if (row.parentIds.indexOf(res.data.id) != -1) {
|
||||
this.productModelAdd.parentIds = row.parentIds
|
||||
} else {
|
||||
if(row.parentIds && row.parentIds.substr(-1,1) === ','){
|
||||
this.productModelAdd.parentIds = row.parentIds + res.data.id+','
|
||||
idsName = row.parentIdsName + ',' + res.data.menuName
|
||||
}else {
|
||||
this.productModelAdd.parentIds = row.parentIds + ',' + res.data.id+','
|
||||
idsName = row.parentIdsName + ',' + res.data.menuName
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.productModelAdd.parentIds = ','+res.data.id+','
|
||||
idsName = res.data.menuName;
|
||||
}
|
||||
this.productModelAdd.parentId = res.data.id
|
||||
this.productModelAdd.parentIdsName = idsName
|
||||
this.$forceUpdate()
|
||||
}else {
|
||||
this.productModelAdd = res.data
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交新增/修改
|
||||
saveProduct (name) {
|
||||
this.$refs[name].validate((valid) => {
|
||||
if (valid) {
|
||||
this.productModelAdd.sorDivide = 'FOREIGN_LAWS'
|
||||
this.productModelAdd.validFlag = '0'
|
||||
if (this.modalType === 1) {
|
||||
this.$http.postData('sarResource/ts-resource/add', this.productModelAdd, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.$emit('selectMenuList')
|
||||
this.closeDrawer()
|
||||
} else {
|
||||
this.productModal = true
|
||||
}
|
||||
}, e => {})
|
||||
} else if (this.modalType === 2) {
|
||||
this.$http.putData('sarResource/ts-resource', this.productModelAdd, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.$emit('selectMenuList')
|
||||
this.closeDrawer()
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
} else {
|
||||
}
|
||||
})
|
||||
},
|
||||
closeDrawer () {
|
||||
this.$refs['productModelAdd'].resetFields()
|
||||
this.productModal = false
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,531 @@
|
||||
<template>
|
||||
<el-drawer
|
||||
title="高级搜索"
|
||||
size="800px"
|
||||
:wrapperClosable="false"
|
||||
:visible.sync="isAdvancedSearch">
|
||||
<div class="demo-drawer-content">
|
||||
<el-form
|
||||
:model="lawsStandInfoSearch"
|
||||
class="label-input-form table-lattice"
|
||||
label-width="80px">
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<SelectFormItem label="1级政策分类"
|
||||
title="1级政策分类"
|
||||
v-model="lawsStandInfoSearch.lawsTypeFirstLevel"
|
||||
:options="dict.lawsTypeFirstLevelOptions">
|
||||
</SelectFormItem>
|
||||
<SelectFormItem label="3级政策分类"
|
||||
title="3级政策分类"
|
||||
v-model="lawsStandInfoSearch.lawsTypeThirdLevel"
|
||||
:options="dict.lawsTypeThirdLevelOptions">
|
||||
</SelectFormItem>
|
||||
<InputFormItem label="政策名称"
|
||||
title="政策名称"
|
||||
v-model="lawsStandInfoSearch.lawsName">
|
||||
</InputFormItem>
|
||||
<InputFormItem label="政策文号"
|
||||
title="政策文号"
|
||||
v-model="lawsStandInfoSearch.lawsNo">
|
||||
</InputFormItem>
|
||||
<InputFormItem label="发文单位"
|
||||
title="发文单位"
|
||||
v-model="lawsStandInfoSearch.issueCompany">
|
||||
</InputFormItem>
|
||||
<SelectFormItem label="文本状态"
|
||||
title="文本状态"
|
||||
v-model="lawsStandInfoSearch.lawsTextState"
|
||||
:options="dict.lawsTextStateOptions">
|
||||
</SelectFormItem>
|
||||
<SelectFormItem label="是否纳入认证清单"
|
||||
title="是否纳入认证清单"
|
||||
v-model="lawsStandInfoSearch.isRelateAccess"
|
||||
:options="isRelateAccessOptions || []">
|
||||
</SelectFormItem>
|
||||
<InputFormItem label="福田转发通知文号"
|
||||
title="福田转发通知文号"
|
||||
v-model="lawsStandInfoSearch.lawsNotisyncNum">
|
||||
</InputFormItem>
|
||||
<InputFormItem label="信息简报"
|
||||
title="信息简报"
|
||||
v-model="lawsStandInfoSearch.lawsBulletin">
|
||||
</InputFormItem>
|
||||
<InputFormItem label="备注(最终政策发布)"
|
||||
title="备注(最终政策发布)"
|
||||
v-model="lawsStandInfoSearch.lawsRemark">
|
||||
</InputFormItem>
|
||||
|
||||
<!--#region-->
|
||||
<!--<el-form-item label="政策分类" title="政策分类" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.lawsType" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.lawsTypeOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="发文日期" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-datePicker v-model="lawsStandInfoSearch.issueTime"-->
|
||||
<!-- :editable="false"-->
|
||||
<!-- placeholder="请选择发文日期"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- clearable></el-datePicker>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="适用区域" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.lawsSyqy" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.lawsSyqyOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="年度" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.lawsYear" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.lawsYearOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="信息简报" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-input v-model="lawsStandInfoSearch.lawsBulletin" clearable-->
|
||||
<!-- placeholder="请输入政策文号"-->
|
||||
<!-- ></el-input>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--#endregion-->
|
||||
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<SelectFormItem label="2级政策分类"
|
||||
title="2级政策分类"
|
||||
v-model="lawsStandInfoSearch.lawsTypeSecondLevel"
|
||||
:options="dict.lawsTypeSecondLevelOptions">
|
||||
</SelectFormItem>
|
||||
<SelectFormItem label="4级政策分类"
|
||||
title="4级政策分类"
|
||||
v-model="lawsStandInfoSearch.lawsTypeFourthLevel"
|
||||
:options="dict.lawsTypeFourthLevelOptions">
|
||||
</SelectFormItem>
|
||||
<InputFormItem label="英文名称"
|
||||
title="英文名称"
|
||||
v-model="lawsStandInfoSearch.lawsEnName">
|
||||
</InputFormItem>
|
||||
<DatePickerFormItem label="发文日期"
|
||||
title="发文日期"
|
||||
v-model="lawsStandInfoSearch.issueTime">
|
||||
</DatePickerFormItem>
|
||||
<DataRangePickerFormItem label="征集意见周期"
|
||||
title="征集意见周期"
|
||||
:startTime.sync="lawsStandInfoSearch.commentCycleStart"
|
||||
:endTime.sync="lawsStandInfoSearch.commentCycleEnd">
|
||||
</DataRangePickerFormItem>
|
||||
<SelectMultipleFormItem label="适用车型"
|
||||
title="适用车型"
|
||||
v-model="lawsStandInfoSearch.lawsSycx"
|
||||
:options="dict.lawsSycxOptions || []">
|
||||
</SelectMultipleFormItem>
|
||||
<SelectFormItem label="年度"
|
||||
title="年度"
|
||||
v-model="lawsStandInfoSearch.lawsYear"
|
||||
:options="dict.lawsYearOptions">
|
||||
</SelectFormItem>
|
||||
<InputFormItem label="通知文号链接"
|
||||
title="通知文号链接"
|
||||
v-model="lawsStandInfoSearch.notisyncNumLink">
|
||||
</InputFormItem>
|
||||
<SelectMultipleFormItem label="标签"
|
||||
title="标签"
|
||||
v-model="lawsStandInfoSearch.lawsLabel"
|
||||
:options="dict.lawsLabelOptions">
|
||||
</SelectMultipleFormItem>
|
||||
|
||||
<!--#region-->
|
||||
<!--<el-form-item label="政策文号" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-input v-model="lawsStandInfoSearch.lawsNo" clearable-->
|
||||
<!-- placeholder="请输入政策文号"></el-input>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="发文单位" title="发文单位" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-input v-model="lawsStandInfoSearch.issueCompany" placeholder="请输入发文单位" clearable></el-input>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="适用车型" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.lawsSycx" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.lawsSycxOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="是否纳入认证清单" title="是否纳入认证清单" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.isRelateAccess">-->
|
||||
<!-- <el-option value="1" label="是" key="1"></el-option>-->
|
||||
<!-- <el-option value="2" label="否" key="2"></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="福田转发通知文号" title="福田转发通知文号" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-input v-model="lawsStandInfoSearch.lawsNotisyncNum" placeholder="请输入福田转发通知文号" clearable></el-input>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="标签" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.lawsLabel" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.lawsLabelOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--#endregion-->
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!--#region-->
|
||||
<!--<el-row :gutter="24">-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item label="征集意见周期" title="征集意见周期" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-date-picker-->
|
||||
<!-- v-model="commentCycleDate"-->
|
||||
<!-- :picker-options="pickerOptions"-->
|
||||
<!-- type="daterange"-->
|
||||
<!-- range-separator="至"-->
|
||||
<!-- start-placeholder="起始时间"-->
|
||||
<!-- end-placeholder="结束时间"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- align="right">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!--</el-row>-->
|
||||
<!--#endregion-->
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">实施日期</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<DatePickerGroupFormItem label="实施日期"
|
||||
title="实施日期"
|
||||
v-model="lawsStandInfoSearch.SSRQLAWS"
|
||||
></DatePickerGroupFormItem>
|
||||
<DatePickerFormItem label="新生产实施日期"
|
||||
title="新生产实施日期"
|
||||
v-model="lawsStandInfoSearch.ZCXSSRQLAWS">
|
||||
</DatePickerFormItem>
|
||||
<DatePickerFormItem label="生效日期"
|
||||
title="生效日期"
|
||||
v-model="lawsStandInfoSearch.SXRQLAWS">
|
||||
</DatePickerFormItem>
|
||||
|
||||
<!--#region-->
|
||||
<!--<el-form-item label="实施日期" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-datePicker v-model="lawsStandInfoSearch.SSRQLAWS"-->
|
||||
<!-- :editable="false"-->
|
||||
<!-- placeholder="请选择实施日期"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- clearable></el-datePicker>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="新车型实施日期" title="新车型实施日期" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-datePicker v-model="lawsStandInfoSearch.XCXSSRQLAWS"-->
|
||||
<!-- :editable="false"-->
|
||||
<!-- placeholder="请选择实施日期"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- clearable></el-datePicker>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--#endregion-->
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<DatePickerFormItem label="新认证实施日期"
|
||||
title="新认证实施日期"
|
||||
v-model="lawsStandInfoSearch.XRZSSRQLAWS"
|
||||
></DatePickerFormItem>
|
||||
<DatePickerFormItem label="在用车实施日期"
|
||||
title="在用车实施日期"
|
||||
v-model="lawsStandInfoSearch.XCXSSRQLAWS"
|
||||
></DatePickerFormItem>
|
||||
|
||||
<!--#region-->
|
||||
<!--<el-form-item label="在产车实施日期" title="在产车实施日期" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-datePicker v-model="lawsStandInfoSearch.ZCXSSRQLAWS"-->
|
||||
<!-- :editable="false"-->
|
||||
<!-- placeholder="请选择实施日期"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- clearable></el-datePicker>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--#endregion-->
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">适用范围</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<SelectFormItem label="我司参与深度"
|
||||
title="我司参与深度"
|
||||
v-model="lawsStandInfoSearch.CYSDLAWS"
|
||||
:options="dict.CYSDLAWSOptions">
|
||||
</SelectFormItem>
|
||||
<DepartmentFormItem label="投稿单位"
|
||||
title="投稿单位"
|
||||
v-model="lawsStandInfoSearch.TGDWLAWS"
|
||||
:ids.sync="lawsStandInfoSearch.TGDWLAWSID">
|
||||
</DepartmentFormItem>
|
||||
<DepartmentFormItem label="责任部门"
|
||||
title="责任部门"
|
||||
v-model="lawsStandInfoSearch.ZRBMLAWS"
|
||||
:ids.sync="lawsStandInfoSearch.ZRBMLAWSID">
|
||||
</DepartmentFormItem>
|
||||
<!--#region-->
|
||||
<!--<el-form-item label="发布机构" title="发布机构" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-input v-model="lawsStandInfoSearch.FBJGLAWS" placeholder="请输入发布机构" clearable></el-input>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="投稿人" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.TGRLAWS" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.TGRLAWSOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="能源类型" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.NYLXLAWS" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.NYLXLAWSOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="责任部门" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.ZRBMLAWS" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.ZRBMLAWSOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--#endregion-->
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<personFormItem label="投稿人"
|
||||
title="投稿人"
|
||||
v-model="lawsStandInfoSearch.TGRLAWS">
|
||||
</personFormItem>
|
||||
<SelectMultipleFormItem label="适用认证"
|
||||
title="适用认证"
|
||||
v-model="lawsStandInfoSearch.SYRZLAWS"
|
||||
:options="dict.syrzOptions">
|
||||
</SelectMultipleFormItem>
|
||||
<personFormItem label="责任工程师"
|
||||
title="责任工程师"
|
||||
v-model="lawsStandInfoSearch.ZRGCSLAWS">
|
||||
</personFormItem>
|
||||
<!--#region-->
|
||||
<!--<el-form-item label="我司参与深度" title="我司参与深度" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.CYSDLAWS" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.CYSDLAWSOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="投稿单位" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.TGDWLAWS" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.TGDWLAWSOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="适用认证" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.YYRZLAWS" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.YYRZLAWSOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--<el-form-item label="责任工程师" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-select v-model="lawsStandInfoSearch.ZRGCSLAWS" filterable clearable>-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in dict.ZRGCSLAWSOptions"-->
|
||||
<!-- placeholder="请选择"-->
|
||||
<!-- :key="item.value"-->
|
||||
<!-- :value="item.value"-->
|
||||
<!-- :label="item.label"-->
|
||||
<!-- ></el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--#endregion-->
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">关联信息</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<InputForStandardsForLaws label="代替文件号"
|
||||
title="代替文件号"
|
||||
v-model="lawsStandInfoSearch.DTWJHLAWS"
|
||||
></InputForStandardsForLaws>
|
||||
<InputForStandardsForLaws label="引用标准&政策"
|
||||
title="引用标准&政策"
|
||||
v-model="lawsStandInfoSearch.YYBZZCLAWS"
|
||||
></InputForStandardsForLaws>
|
||||
<InputFormItem label="参会记录"
|
||||
title="参会记录"
|
||||
v-model="lawsStandInfoSearch.CHJLLAWS">
|
||||
</InputFormItem>
|
||||
<!--#region-->
|
||||
<!--<el-form-item label="代替文件号" title="代替文件号" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-input v-model="lawsStandInfoSearch.DTWJHLAWS" placeholder="请输入代替文件号" clearable></el-input>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--#endregion-->
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputForStandardsForLaws label="被代替文件号"
|
||||
title="被代替文件号"
|
||||
v-model="lawsStandInfoSearch.BDTWJHLAWS"
|
||||
></InputForStandardsForLaws>
|
||||
<InputFormItem label="相关流程"
|
||||
title="相关流程"
|
||||
v-model="lawsStandInfoSearch.XGLC">
|
||||
</InputFormItem>
|
||||
<!--#region-->
|
||||
<!--<el-form-item label="被代替文件号" title="被代替文件号" class="add-form-item form-item-disabled">-->
|
||||
<!-- <el-input v-model="lawsStandInfoSearch.BDTWJHLAWS" placeholder="请输入被代替文件号" clearable></el-input>-->
|
||||
<!--</el-form-item>-->
|
||||
<!--#endregion-->
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button
|
||||
class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
type="primary"
|
||||
@click="getBussionStandTableBtn(lawsStandInfoSearch,'','sel')">搜索
|
||||
</el-button>
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-close"
|
||||
@click="clearAllSearch('lawsStandInfoSearch')">取消
|
||||
</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</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 DatePickerGroupFormItem from "@/components/hzwlComponents/DatePickerGroupFormItem";
|
||||
import DepartmentFormItem from "@/components/hzwlComponents/DepartmentFormItem";
|
||||
import personFormItem from "@/components/hzwlComponents/personFormItem";
|
||||
import InputForStandardsForLaws from "@/components/hzwlComponents/InputForStandardsForLaws";
|
||||
|
||||
export default {
|
||||
name: "advancedSearch",
|
||||
components: {
|
||||
ProcessTitle,
|
||||
SelectFormItem,
|
||||
InputFormItem,
|
||||
DatePickerFormItem,
|
||||
DataRangePickerFormItem,
|
||||
SelectMultipleFormItem,
|
||||
DatePickerGroupFormItem,
|
||||
DepartmentFormItem,
|
||||
personFormItem,
|
||||
InputForStandardsForLaws
|
||||
},
|
||||
data () {
|
||||
return{
|
||||
isAdvancedSearch: false,
|
||||
isRelateAccessOptions: [
|
||||
{
|
||||
label: '是',
|
||||
value: '1'
|
||||
},
|
||||
{
|
||||
label: '否',
|
||||
value: '2'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
props: {
|
||||
lawsStandInfoSearch: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
dict: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
open () {
|
||||
this.isAdvancedSearch = true
|
||||
},
|
||||
close () {
|
||||
this.isAdvancedSearch = false
|
||||
},
|
||||
// 搜索
|
||||
getBussionStandTableBtn (item, advancedSearch, type) {
|
||||
this.$emit('advancedSearch')
|
||||
this.close()
|
||||
},
|
||||
// 清空搜索框
|
||||
clearAllSearch (flag) {
|
||||
this.$emit('clearSearch', {})
|
||||
this.close()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,376 @@
|
||||
<template>
|
||||
<!-- 配置标准 -->
|
||||
<el-drawer
|
||||
title="配置政策"
|
||||
:wrapperClosable="false"
|
||||
:visible.sync="configStandFlag"
|
||||
size="1200px"
|
||||
@close="cancelConfigStand"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form :model="sarConfigStandSearch" :inline="true" class="label-input-form">
|
||||
<!-- <el-formItem label="标准名称" prop="standName" class="search-item">-->
|
||||
<!-- <el-input v-model="sarConfigStandSearch.standName" @keyup.enter.native="searchConfiguraStand"-->
|
||||
<!-- placeholder="根据标准名称查找" clearable/>-->
|
||||
<!-- </el-formItem>-->
|
||||
<el-formItem label="政策文号" prop="lawsNo" class="search-item">
|
||||
<el-input v-model="sarConfigStandSearch.lawsNo" @keyup.enter.native="searchConfiguraStand"
|
||||
placeholder="根据政策文号查找" clearable/>
|
||||
</el-formItem>
|
||||
<!-- <el-formItem label="企标类别" prop="standSort" class="search-item">-->
|
||||
<!-- <el-select v-model="sarConfigStandSearch.standSort" placeholder="根据企标类别查找"-->
|
||||
<!-- @keyup.enter.native="searchConfiguraStand" clearable>-->
|
||||
<!-- <el-option v-for="opt in standSortOptions" :value="opt.value === undefined ? '' :opt.value" :key="opt.value" :label="opt.label">{{ opt.label }}-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-formItem>-->
|
||||
<el-formItem label="政策名称" prop="lawsName" class="search-item">
|
||||
<el-input v-model="sarConfigStandSearch.lawsName" @keyup.enter.native="searchConfiguraStand" placeholder="根据政策名称查找" clearable :maxlength="100"/>
|
||||
</el-formItem>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
size="small"
|
||||
:loading="searching"
|
||||
@click="searchConfiguraStand">
|
||||
查询
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
size="small"
|
||||
@click="clearAllSearch(3)"
|
||||
>清空
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="drawer-content">
|
||||
<el-table
|
||||
ref="selection"
|
||||
:data="configStandList"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%; flex: auto;"
|
||||
height="100%"
|
||||
border
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
@sort-change="sortChangeConfig"
|
||||
@selection-change="selectConfigStandChange">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="lawsNo"
|
||||
label="政策文号"
|
||||
width="150"
|
||||
align="center"
|
||||
>
|
||||
</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="issueTime"
|
||||
label="发文日期"
|
||||
width="120"
|
||||
sortable
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{formatDate(scope.row.issueTime)}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ssrqlaws"
|
||||
label="实施日期"
|
||||
width="120"
|
||||
sortable
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{formatDate(scope.row.ssrqlaws)}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standStatusShow"
|
||||
label="文本状态"
|
||||
width="100"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<pagination
|
||||
style="position: relative;"
|
||||
:page="configPage"
|
||||
:pageSize="configRows"
|
||||
:total="configTotal"
|
||||
@pageChange="configuraPageChange"
|
||||
@pageSizeChange="configuraPageSizeChange"></pagination>
|
||||
<div class="divDel">
|
||||
<div class="divDel_title">已选政策</div>
|
||||
<div class="divDel_box">
|
||||
<el-tag
|
||||
v-for="tag in selectConfigStand"
|
||||
:key="tag.id"
|
||||
size="mini"
|
||||
closable
|
||||
@close="handleTagClose(tag)">
|
||||
<a v-if="tag.standStatusShow === '作废' "
|
||||
class="table-jump" style="color: #F56C6C"
|
||||
@click="handlePreview(tag)">{{ tag.lawsName }}</a>
|
||||
<a v-else @click="handlePreview(tag)" class="table-jump" style="color: #333333">{{ tag.lawsName }}</a>
|
||||
</el-tag>
|
||||
</div>
|
||||
</div>
|
||||
<loading :loading="configLoading">加载中...</loading>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button
|
||||
type="primary"
|
||||
round class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
@click="saveConfigStand"
|
||||
:loading="isSubmit"
|
||||
>提交</el-button>
|
||||
<el-button class="common-button-default" style="padding: 7px 12px;" icon="el-icon-close" type="primary"
|
||||
round @click="cancelConfigStand">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "configStandDrawer",
|
||||
data () {
|
||||
return {
|
||||
configStandFlag: false, // 控制配置标准表格是否显示
|
||||
configPage: 1,
|
||||
configTotal: 0,
|
||||
configRows: this.$store.getters.userInfo.configContent,
|
||||
searching: false,
|
||||
configStandList: [],
|
||||
configLoading: false, // 配置表格加载中
|
||||
isSubmit: false,
|
||||
sarConfigStandSearch: {
|
||||
page: this.configPage,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
standType: 'INLAND',
|
||||
validFlag: '0',
|
||||
// menuId: '',
|
||||
// classifyCode: '',
|
||||
lawsName: '',
|
||||
lawsNo: '',
|
||||
// quoteStand: '',
|
||||
// standCode: '',
|
||||
// standName: '',
|
||||
// standGenera: '',
|
||||
// standSubclass: '',
|
||||
// issueTime: '',
|
||||
// putTime: '',
|
||||
// orgName: '',
|
||||
// responsibleUnit: '',
|
||||
// standSort: '',
|
||||
// replaceStandNum: ''
|
||||
}, // 分页查询过程中用到的对象
|
||||
selectConfigStand: []
|
||||
}
|
||||
},
|
||||
props: {
|
||||
selectSarMenu: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
getBussionStandTable: {
|
||||
type: Function,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
open () {
|
||||
this.configStandFlag = true
|
||||
this.sarConfigStandSearch.menuId = 'nomenu'
|
||||
this.sarConfigStandSearch.page = 1
|
||||
this.selectConfiguraStand()
|
||||
},
|
||||
searchConfiguraStand () {
|
||||
this.configPage = 1
|
||||
this.sarConfigStandSearch.page = 1
|
||||
this.selectConfiguraStand()
|
||||
},
|
||||
clearAllSearch (flag) {
|
||||
this.sarConfigStandSearch.lawsNo=''
|
||||
this.sarConfigStandSearch.lawsName=''
|
||||
this.configPage = 1
|
||||
this.sarConfigStandSearch.page = 1
|
||||
this.selectConfiguraStand()
|
||||
},
|
||||
// 取消配置标准
|
||||
cancelConfigStand () {
|
||||
this.configStandFlag = false
|
||||
this.sarConfigStandSearch.lawsNo=''
|
||||
this.sarConfigStandSearch.lawsName=''
|
||||
this.configPage = 1
|
||||
this.selectConfigStand = []
|
||||
},
|
||||
selectConfiguraStand () {
|
||||
this.$http.get('lawss/sarLawsInfo/page', this.sarConfigStandSearch, {
|
||||
_this: this,
|
||||
loading: 'configLoading'
|
||||
}, res => {
|
||||
this.configStandList = res.data.list
|
||||
this.configTotal = res.data.count
|
||||
this.selectConfigStand = []
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 配置标准-表格排序
|
||||
sortChangeConfig(sortObj) {
|
||||
if (sortObj.column.order !== 'normal') {
|
||||
switch (sortObj.prop) {
|
||||
case 'issueTime' :
|
||||
// 后台联调
|
||||
if (sortObj.order === null) {
|
||||
this.sarConfigStandSearch.nowOrderBy = ''
|
||||
} else {
|
||||
this.sarConfigStandSearch.nowOrderBy = '1'
|
||||
}
|
||||
break;
|
||||
case 'XCXSSRQLAWS' :
|
||||
// 后台联调
|
||||
if (sortObj.order === null) {
|
||||
this.sarConfigStandSearch.nowOrderBy = ''
|
||||
} else {
|
||||
this.sarConfigStandSearch.nowOrderBy = '2'
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch (sortObj.order) {
|
||||
case 'ascending' :
|
||||
this.sarConfigStandSearch.nowOrder = '2'
|
||||
break;
|
||||
case 'descending' :
|
||||
this.sarConfigStandSearch.nowOrder = '1'
|
||||
break;
|
||||
default:
|
||||
this.sarConfigStandSearch.nowOrder = ''
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.selectConfiguraStand()
|
||||
},
|
||||
selectConfigStandChange (alldata) {
|
||||
this.selectConfigStand = alldata
|
||||
},
|
||||
// 分页点击后方法
|
||||
configuraPageChange (page) {
|
||||
this.configPage = page
|
||||
this.sarConfigStandSearch.page = page
|
||||
this.selectConfiguraStand()
|
||||
},
|
||||
// 分页每页显示数改变后方法
|
||||
configuraPageSizeChange (pageSize) {
|
||||
this.configRows = pageSize
|
||||
this.sarConfigStandSearch.pageSize = pageSize
|
||||
this.selectConfiguraStand()
|
||||
this.getBussionStandTable()
|
||||
},
|
||||
// 提交配置搜索项
|
||||
saveConfigStand () {
|
||||
let search = {}
|
||||
search.menuId = this.selectSarMenu.id
|
||||
if (this.selectConfigStand.length === 0) {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请至少选择一条标准',
|
||||
type: 'warning'
|
||||
})
|
||||
} else {
|
||||
search.idlist = this.selectConfigStand.map(item => item.id)
|
||||
this.$http.postData('lawss/sarLawsInfo/saveStandardsMenu', search, {
|
||||
_this: this,
|
||||
loading: 'isSubmit'
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('配置成功')
|
||||
this.configStandFlag = false
|
||||
this.getBussionStandTable()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
},
|
||||
formatDate (dateStr) {
|
||||
if (dateStr && dateStr!== '') {
|
||||
let dateArr = dateStr.split(',')
|
||||
return dateArr.map(date => date.slice(0,10)).join(',')
|
||||
}
|
||||
return dateStr
|
||||
},
|
||||
handleTagClose (tag) {
|
||||
this.$set(this, 'selectConfigStand', this.selectConfigStand.filter(item => item.id !== tag.id))
|
||||
this.$refs.selection.toggleRowSelection(tag, false)
|
||||
},
|
||||
handlePreview (tag) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherLawsStandDetails',
|
||||
params: {
|
||||
id: tag.id,
|
||||
pageType: 'FOREIGN_LAWS'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.el-drawer__wrapper{
|
||||
.demo-drawer-content{
|
||||
.drawer-content{
|
||||
//height: calc(~'100% - 52px - 56px');
|
||||
//flex: auto;
|
||||
height: calc(100% - 220px);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.divDel {
|
||||
border-top: 1px solid #000;
|
||||
height: 100px;
|
||||
.divDel_title {
|
||||
margin: 10px;
|
||||
}
|
||||
.divDel_box {
|
||||
height: 55px;
|
||||
padding: 0px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
overflow: auto;
|
||||
margin: 10px;
|
||||
align-content: flex-start;
|
||||
span {
|
||||
margin: 0px 5px 5px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.demo-drawer-footer{
|
||||
height: 60px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,78 @@
|
||||
<template>
|
||||
<!--导出文件改名字模态框-->
|
||||
<el-dialog :visible.sync="exportModelFlag" title="导出文件" width="300px">
|
||||
<el-form :inline="true" class="label-input-form search-area">
|
||||
<el-form-item label="导出名称" class="search-item">
|
||||
<el-input v-model="exportName" placeholder="请输入导出文件名称" :maxlength="30" clearable label="导出名称"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="demo-drawer-footer">
|
||||
<el-button class="common-button-default" icon="el-icon-close" @click="cancal">取消</el-button>
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="exportTestItem">提交</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "exportFileDialog",
|
||||
data () {
|
||||
return {
|
||||
exportModelFlag: false,
|
||||
exportName: '',
|
||||
saveExportType: 'all',
|
||||
}
|
||||
},
|
||||
props: {
|
||||
selectedList: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
SarExportSearchEo: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
open () {
|
||||
this.exportModelFlag = true
|
||||
},
|
||||
cancal () {
|
||||
this.exportModelFlag = false
|
||||
},
|
||||
// 导出选中的标准 此处因为复选框没有设置好,所以先设置导出所有数据
|
||||
exportStandard () {
|
||||
// 区别是选择导出还是全部导出
|
||||
if (this.selectedList.length > 0) {
|
||||
this.saveExportType = 'apart'
|
||||
} else {
|
||||
this.saveExportType = 'all'
|
||||
}
|
||||
this.exportName = ''
|
||||
this.exportModelFlag = true
|
||||
},
|
||||
exportTestItem () {
|
||||
if (this.saveExportType === 'apart') {
|
||||
window.open('/api/lawss/sarLawsInfo/exportStandardsInfoExcel?exportContent=' + this.selectedList.join(',') + '&exportType=' + this.saveExportType + '&exportName=' + this.exportName + '&userId=' + this.$store.getters.userInfo.userId)
|
||||
this.$message({
|
||||
message: '导出信息成功',
|
||||
type: 'success'
|
||||
})
|
||||
} else if (this.saveExportType === 'all') {
|
||||
let exportEOStr = JSON.stringify(this.SarExportSearchEo)
|
||||
exportEOStr = exportEOStr.replace(/""/g, null)
|
||||
window.open('/api/lawss/sarLawsInfo/exportStandardsInfoExcel?exportContent=' + exportEOStr + '&exportType=' + this.saveExportType + '&exportName=' + this.exportName + '&userId=' + this.$store.getters.userInfo.userId)
|
||||
this.$message({
|
||||
message: '导出信息成功',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
this.exportModelFlag = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,635 @@
|
||||
<template>
|
||||
<!--表格-->
|
||||
<div class="content">
|
||||
<el-table
|
||||
ref="selection"
|
||||
:data="standinfoList"
|
||||
tooltip-effect="dark"
|
||||
style="width:100%;"
|
||||
:height="tableHeight"
|
||||
border
|
||||
class="drag-table"
|
||||
:row-class-name="dragRowClassName"
|
||||
@sort-change="sortChange"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="standSelectChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
min-width="5%"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="lawsName"
|
||||
label="政策名称"
|
||||
min-width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.standStatusShow === '作废'" style="color: #F56C6C" @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.lawsName }}</a>
|
||||
<a v-if="scope.row.standStatusShow === '参考' " style="color: #E6A23C" @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.lawsName }}</a>
|
||||
<a v-if="scope.row.standStatusShow !== '作废' && scope.row.standStatusShow !== '参考'" style="color: #333333" @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.lawsName }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="lawsNo"
|
||||
label="政策文号"
|
||||
sortable
|
||||
min-width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.standStatusShow === '作废'" style="color: #F56C6C" @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.lawsNo }}</a>
|
||||
<a v-else-if="scope.row.standStatusShow === '参考' " style="color: #E6A23C" @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.lawsNo }}</a>
|
||||
<a v-else style="color: #333333" @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.lawsNo }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="issueCompany"
|
||||
label="发文单位"
|
||||
sortable
|
||||
min-width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.standStatusShow === '作废'" style="color: #F56C6C" @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.issueCompany }}</a>
|
||||
<a v-else-if="scope.row.standStatusShow === '参考' " style="color: #E6A23C" @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.issueCompany }}</a>
|
||||
<a v-else style="color: #333333" @click="handlePreview(scope.row)" class="table-jump">{{ scope.row.issueCompany }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="issueTime"
|
||||
label="发文日期"
|
||||
sortable
|
||||
min-width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.standStatusShow === '作废'" style="color: #F56C6C" @click="handlePreview(scope.row)" class="table-jump">{{ formatDate(scope.row.issueTime) }}</a>
|
||||
<a v-else-if="scope.row.standStatusShow === '参考' " style="color: #E6A23C" @click="handlePreview(scope.row)" class="table-jump">{{ formatDate(scope.row.issueTime) }}</a>
|
||||
<a v-else style="color: #333333" @click="handlePreview(scope.row)" class="table-jump">{{ formatDate(scope.row.issueTime) }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="ssrqlaws"
|
||||
label="实施日期"
|
||||
sortable
|
||||
min-width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.standStatusShow === '作废'" style="color: #F56C6C" @click="handlePreview(scope.row)" class="table-jump">{{ formatDate(scope.row.ssrqlaws) }}</a>
|
||||
<a v-else-if="scope.row.standStatusShow === '参考' " style="color: #E6A23C" @click="handlePreview(scope.row)" class="table-jump">{{ formatDate(scope.row.ssrqlaws) }}</a>
|
||||
<a v-else style="color: #333333" @click="handlePreview(scope.row)" class="table-jump">{{ formatDate(scope.row.ssrqlaws) }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="lawsSycx"
|
||||
label="适用车型"
|
||||
sortable
|
||||
min-width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.standStatusShow === '作废'" style="color: #F56C6C" @click="handlePreview(scope.row)" class="table-jump">{{ convert(scope.row.lawsSycx, 'lawsSycxOptions') }}</a>
|
||||
<a v-else-if="scope.row.standStatusShow === '参考' " style="color: #E6A23C" @click="handlePreview(scope.row)" class="table-jump">{{ convert(scope.row.lawsSycx, 'lawsSycxOptions') }}</a>
|
||||
<a v-else style="color: #333333" @click="handlePreview(scope.row)" class="table-jump">{{ convert(scope.row.lawsSycx, 'lawsSycxOptions') }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
sortable
|
||||
prop="standStatusShow"
|
||||
label="文本状态"
|
||||
min-width="110"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.standStatusShow === '作废'" style="color: #F56C6C">
|
||||
{{scope.row.standStatusShow}}
|
||||
</span>
|
||||
<span v-if="scope.row.standStatusShow === '参考'" style="color: #E6A23C">
|
||||
{{scope.row.standStatusShow}}
|
||||
</span>
|
||||
<span v-if="scope.row.standStatusShow !== '作废' && scope.row.standStatusShow !== '参考'">
|
||||
{{scope.row.standStatusShow}}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="isPermission('1a8b50a3541387dc2818fc361ea3ab31,dca69b895a88c2e3a3bf16d44e34fc04,b98579c3d0514ba75c4d1b21c9d5aa17,c158e787202d1e67f75d5a2f9da889df') > 0"
|
||||
prop="action"
|
||||
label="操作"
|
||||
align="center"
|
||||
min-width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a class="table-jump" v-btn-permission="'1a8b50a3541387dc2818fc361ea3ab31'" v-if="scope.row.collectBtn" style="color: #2d8cf0" @click="handleCommand([scope.row, '收藏'])">收藏</a>
|
||||
<a class="table-jump" v-btn-permission="'dca69b895a88c2e3a3bf16d44e34fc04'" v-else style="color: #2d8cf0" @click="handleCommand([scope.row, '取消收藏'])">取消收藏</a>
|
||||
<a class="table-jump" v-btn-permission="'b98579c3d0514ba75c4d1b21c9d5aa17'" style="color: #2d8cf0;margin-left: 10px" @click="handleCommand([scope.row, '编辑'])">编辑</a>
|
||||
<a class="table-jump" v-btn-permission="'c158e787202d1e67f75d5a2f9da889df'" style="color: #f56c6c;margin-left: 10px" @click="handleCommand([scope.row, '删除'])">删除</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination :page="lawsStandInfoSearch.page" :total="total"
|
||||
@pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
<editDrawer
|
||||
ref="editDrawerRef"
|
||||
:formFieldListData="formFieldListData"
|
||||
:selectSarMenu="selectSarMenu"
|
||||
:getBussionStandTable="getBussionStandTable">
|
||||
</editDrawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import editDrawer from "./editDrawer";
|
||||
import store from "@/store";
|
||||
export default {
|
||||
name: "mainTable",
|
||||
data () {
|
||||
return {
|
||||
standinfoList: [],
|
||||
tableHeight: null,
|
||||
tableFlag: '',
|
||||
total: 0,
|
||||
loading: false,
|
||||
selectedList: [],
|
||||
formFieldListData: [],
|
||||
dict: {}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
editDrawer
|
||||
},
|
||||
props: {
|
||||
// 搜索条件
|
||||
lawsStandInfoSearch: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
},
|
||||
// 用来记录当前选中的二级菜单对象
|
||||
selectSarMenu: {
|
||||
type: Object,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
selectedList: {
|
||||
handler: function(newValue, oldValue) {
|
||||
this.$emit('selectedList', newValue)
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getBussionStandTable()
|
||||
this.getDicTypeListCode()
|
||||
},
|
||||
mounted() {
|
||||
// 加载动态表单数据
|
||||
this.getAddFormFieldList()
|
||||
this.tableHeight = $('.content').height() - 44 - 20
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $('.content').height() - 44 - 20
|
||||
}
|
||||
},
|
||||
destroyed() {
|
||||
window.onresize = null
|
||||
this.tableHeight = ''
|
||||
},
|
||||
methods: {
|
||||
addModal () {
|
||||
this.$refs.editDrawerRef.addModal()
|
||||
},
|
||||
// 分页查询企业标准---表格
|
||||
getBussionStandTable (item, nodeId,type) {
|
||||
if (item !== '' && item !== null && item !== undefined) {
|
||||
item.pageSize = this.$store.getters.userInfo.configContent
|
||||
}
|
||||
this.lawsStandInfoSearch.pageSize = this.$store.getters.userInfo.configContent
|
||||
const data = item || this.lawsStandInfoSearch
|
||||
const formData = {...data}
|
||||
if (nodeId !== undefined) {
|
||||
formData.menuId = nodeId
|
||||
}
|
||||
if ( (this.lawsStandInfoSearch.menuId == null || this.lawsStandInfoSearch.menuId === '') && this.selectSarMenu.id) {
|
||||
formData.menuId = this.selectSarMenu.id
|
||||
}
|
||||
// 处理我的收藏和个性化标签传参
|
||||
if (this.selectSarMenu.menuName === '我的收藏') {
|
||||
formData.menuId = undefined
|
||||
formData.labelMenuId = undefined
|
||||
formData.collectMenuId = 'zcwdsc'
|
||||
} else if (this.selectSarMenu.id === 'gxhbq' || this.selectSarMenu.pId === 'gxhbq') {
|
||||
formData.menuId = undefined
|
||||
formData.labelMenuId = this.selectSarMenu.id
|
||||
formData.collectMenuId = undefined
|
||||
} else {
|
||||
formData.labelMenuId = undefined
|
||||
formData.collectMenuId = undefined
|
||||
}
|
||||
formData.userId = this.$store.getters.userInfo.userId
|
||||
if(type === 'sel'){
|
||||
const advanceSearchVOList = [];
|
||||
if(this.formFieldListData !== undefined && this.formFieldListData !== null){
|
||||
const formFieldList = this.formFieldListData
|
||||
formFieldList.forEach((item) => {
|
||||
const value = this.lawsStandInfoSearch[item.attrField]
|
||||
// 时间格式处理
|
||||
if (value !== undefined && value !== null && value !== '') {
|
||||
advanceSearchVOList.push({
|
||||
connect: advanceSearchVOList.length > 0 ? "and" : "",
|
||||
field: item.attrField || '',
|
||||
type: 'like',
|
||||
value: value
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
formData.advanceSearchVOStr = JSON.stringify(advanceSearchVOList);
|
||||
if(this.commentCycleDate && this.commentCycleDate.length === 2){
|
||||
formData.commentCycleStart = this.commentCycleDate[0]
|
||||
formData.commentCycleEnd = this.commentCycleDate[1]
|
||||
}
|
||||
}
|
||||
const attrSearchMap = {
|
||||
applyArctic: formData.applyArctic
|
||||
}
|
||||
formData['attrSearchStr'] = JSON.stringify(attrSearchMap)
|
||||
// 排序
|
||||
if (this.nowOrder) {
|
||||
formData.nowOrderBy = this.nowOrderBy
|
||||
formData.nowOrder = this.nowOrder
|
||||
}
|
||||
// this.SarExportSearchEo = formData
|
||||
this.$emit('SarExportSearchEo', formData)
|
||||
this.$http.get('lawss/sarLawsInfo/page', formData, {
|
||||
_this: this, loading: 'loading'
|
||||
}, res => {
|
||||
for (let i = 0; i < res.data.list.length; i++) {
|
||||
res.data.list[i].checked = false
|
||||
if (res.data.list[i].collectId != null && res.data.list[i].collectId !== '') {
|
||||
res.data.list[i].collectBtn = false
|
||||
res.data.list[i].cancelCollectBtn = true
|
||||
} else {
|
||||
res.data.list[i].collectBtn = true
|
||||
res.data.list[i].cancelCollectBtn = false
|
||||
}
|
||||
res.data.list[i].isSubmit = false
|
||||
}
|
||||
this.standinfoList = res.data.list
|
||||
this.total = res.data.count
|
||||
if ((this.standinfoList.length === 0 || this.standinfoList === []) && this.lawsStandInfoSearch.page !== 1) {
|
||||
this.pageChange(1)
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 获取拖拽行的id
|
||||
dragRowClassName (row, index) {
|
||||
return 'drag-row' + ' ' + 'id=' + row.row.id
|
||||
},
|
||||
// 表格排序
|
||||
sortChange(sortObj) {
|
||||
this.nowOrderBy = sortObj.column.property
|
||||
// this.nowOrder = sortObj.order
|
||||
switch (sortObj.order) {
|
||||
case 'descending':
|
||||
this.nowOrder = 'desc';
|
||||
break;
|
||||
case 'ascending':
|
||||
this.nowOrder = 'asc';
|
||||
break;
|
||||
default:
|
||||
this.nowOrder = void 0
|
||||
break;
|
||||
}
|
||||
|
||||
// if (sortObj.column.order !== 'normal') {
|
||||
// this.nowOrder = ''
|
||||
// this.orderBy = ''
|
||||
// switch (sortObj.column.property) {
|
||||
// case 'issueTime' :
|
||||
// // 后台联调
|
||||
// this.orderBy = 1;
|
||||
// this.nowOrder = sortObj.column.order
|
||||
// if (this.nowOrder === 'ascending') {
|
||||
// this.nowOrder = 2
|
||||
// } else if (this.nowOrder === 'descending') {
|
||||
// this.nowOrder = 1
|
||||
// }
|
||||
// break
|
||||
// // case 'putTime' :
|
||||
// case 'XCXSSRQLAWS' :
|
||||
// // 后台联调
|
||||
// this.orderBy = 2;
|
||||
// this.nowOrder = sortObj.column.order
|
||||
// if (this.nowOrder === 'ascending') {
|
||||
// this.nowOrder = 2
|
||||
// } else if (this.nowOrder === 'descending') {
|
||||
// this.nowOrder = 1
|
||||
// }
|
||||
// break
|
||||
// case 'standStatusShow' :
|
||||
// this.orderBy = 3;
|
||||
// this.nowOrder = sortObj.column.order
|
||||
// if (this.nowOrder === 'ascending') {
|
||||
// this.nowOrder = 2
|
||||
// } else if (this.nowOrder === 'descending') {
|
||||
// this.nowOrder = 1
|
||||
// }
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
//搜索后排序,应该以被搜索后的数据排序
|
||||
this.getBussionStandTable(this.lawsStandInfoSearch)
|
||||
},
|
||||
// 选择项勾选改变
|
||||
standSelectChange (data) {
|
||||
this.selectedList = []
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
this.selectedList.push(data[i].id)
|
||||
}
|
||||
},
|
||||
// 点击查看
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherLawsStandDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'FOREIGN_LAWS'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
isPermission (value) {
|
||||
let hasCount = 0
|
||||
let set =new Set( value.split(","))
|
||||
let menuList = store.getters.getMenuList
|
||||
if (menuList === '') {
|
||||
return hasCount
|
||||
} else {
|
||||
menuList.map((menu) => {
|
||||
if ( set.has(menu.id)|| value === undefined || value === '') {
|
||||
hasCount++
|
||||
}
|
||||
})
|
||||
}
|
||||
return hasCount
|
||||
},
|
||||
// 分页点击后方法
|
||||
pageChange (page) {
|
||||
this.lawsStandInfoSearch.page = page
|
||||
this.getBussionStandTable()
|
||||
},
|
||||
// 分页每页显示数改变后方法
|
||||
pageSizeChange (pageSize) {
|
||||
this.lawsStandInfoSearch.pageSize = pageSize
|
||||
this.getBussionStandTable()
|
||||
},
|
||||
arr(data){
|
||||
if(data){
|
||||
if(data.indexOf(",") !== -1){
|
||||
let arr = data.split(",");
|
||||
let list = []
|
||||
arr.forEach(item =>{
|
||||
list.push(item.slice(0, 10));
|
||||
})
|
||||
return list.join(",");
|
||||
}else {
|
||||
return data.slice(0, 10)
|
||||
}
|
||||
}
|
||||
return ""
|
||||
},
|
||||
// 更多
|
||||
handleCommand (command) {
|
||||
switch (command[1]) {
|
||||
case '编辑':
|
||||
this.$refs.editDrawerRef.selectStandardPro(command[0], 'edit')
|
||||
break
|
||||
case '收藏':
|
||||
this.collectStandard(command[0])
|
||||
break
|
||||
// case '分享':
|
||||
// this.visibleShare = true
|
||||
// this.resPk = JSON.parse(JSON.stringify(command[0]))
|
||||
// break
|
||||
// case '移除政策':
|
||||
// this.deleteEnterStandFromKind(1, command[0].id)
|
||||
// break
|
||||
case '删除':
|
||||
this.deleteStand(1, command[0].id)
|
||||
break
|
||||
// case '流程':
|
||||
// break
|
||||
case '取消收藏':
|
||||
this.cancelCollectStandard(command[0])
|
||||
break
|
||||
// case '授权':
|
||||
// this.givePower(command[0])
|
||||
// break
|
||||
}
|
||||
},
|
||||
collectStandard (item) {
|
||||
const query = {}
|
||||
query.collectResId = item.id
|
||||
query.collectTitle = ' ( 编号:' + item.lawsNumber + ')'
|
||||
query.collectType = 'FOREIGN_LAWS'
|
||||
query.userId = this.$store.getters.userInfo.userId
|
||||
this.$http.postData('person/personCollect', query, {
|
||||
_this: this
|
||||
}, res => {
|
||||
item.collectBtn = !item.collectBtn
|
||||
item.collectId = res.data.id
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 取消收藏法规
|
||||
cancelCollectStandard (item) {
|
||||
this.$http.put('person/personCollect/updateByUserId', {
|
||||
id: item.collectId
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.$message.success('取消收藏成功')
|
||||
item.collectBtn = !item.collectBtn
|
||||
item.collectId = ''
|
||||
this.getBussionStandTable()
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 删除标准
|
||||
deleteStand (flag, itemid) {
|
||||
if (flag === 1) {
|
||||
this.$confirm('确认删除这些数据?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
}).then(() => {
|
||||
this.$http.post('lawss/sarLawsInfo/deleteSarLawsStandInfo', {ids: itemid}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.getBussionStandTable()
|
||||
this.selectedList = []
|
||||
}, e => {
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
} else {
|
||||
if (this.selectedList.length === 0) {
|
||||
this.$confirm('请选择一条数据进行删除', '提示', {
|
||||
showCancelButton: false,
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
})
|
||||
} else {
|
||||
this.$confirm('确认删除这些数据?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
}).then(() => {
|
||||
this.$http.post('lawss/sarLawsInfo/deleteSarLawsStandInfo', {ids: this.selectedList.join(',')}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.getBussionStandTable()
|
||||
this.selectedList = []
|
||||
}, e => {
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
getAddFormFieldList (isEdit) {
|
||||
this.$http.get('lawss/sarStandAttrDetails/list', {}, {_this: this},
|
||||
res => {
|
||||
if (res.ok) {
|
||||
const { data = {} } = res
|
||||
this.formFieldListData = data['FOREIGN_LAWS']
|
||||
// 追加高级查询动态下拉框数据s
|
||||
// this.twoOptions = [
|
||||
// // {
|
||||
// // label: '企标类别',
|
||||
// // value: 'stand_sort',
|
||||
// // type: 'SEL_OPTION',
|
||||
// // disabled: false
|
||||
// // },
|
||||
// {
|
||||
// label: '标准状态',
|
||||
// value: 'stand_status',
|
||||
// type: 'SEL_OPTION',
|
||||
// disabled: false
|
||||
// },
|
||||
// {
|
||||
// label: '企标编号',
|
||||
// value: 'stand_code',
|
||||
// type: 'INPUT',
|
||||
// disabled: false
|
||||
// },
|
||||
// {
|
||||
// label: '中文名称',
|
||||
// value: 'stand_name',
|
||||
// type: 'INPUT',
|
||||
// disabled: false
|
||||
// },
|
||||
// {
|
||||
// label: '英文名称',
|
||||
// value: 'stand_en_name',
|
||||
// type: 'INPUT',
|
||||
// disabled: false
|
||||
// },
|
||||
// {
|
||||
// label: '发文日期',
|
||||
// value: 'issue_time',
|
||||
// type: 'DATE_PIC_OPTS',
|
||||
// disabled: false
|
||||
// },
|
||||
// {
|
||||
// label: '标准实施日期',
|
||||
// value: 'put_time',
|
||||
// type: 'DATE_PIC_OPTS',
|
||||
// disabled: false
|
||||
// },
|
||||
// // {
|
||||
// // label: '代替企标编号',
|
||||
// // value: 'replace_stand_num',
|
||||
// // type: 'INPUT',
|
||||
// // disabled: false
|
||||
// // },
|
||||
// // {
|
||||
// // label: '被代替企标编号',
|
||||
// // value: 'replaced_stand_num',
|
||||
// // type: 'INPUT',
|
||||
// // disabled: false
|
||||
// // }
|
||||
// ]
|
||||
// this.formFieldListData.map(item => {
|
||||
// if (item.attrType !== 'FILE' && item.attrField !== 'FZRQ' && item.attrField !== 'ZYQCR'
|
||||
// && item.attrField !== 'QTQCR' && item.attrField !== 'WFSPJS' && item.attrField !== 'XGLC' && item.attrField !== 'XGJH') {
|
||||
// this.twoOptions.push({
|
||||
// value: item.attrField,
|
||||
// label: item.attrName,
|
||||
// selVal: item.selVal,
|
||||
// type: item.attrType,
|
||||
// disabled: false,
|
||||
// __wx__: item
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
}
|
||||
}, e => {})
|
||||
},
|
||||
convert(value, dict) {
|
||||
if (this.dict[dict]) {
|
||||
return value.split(',').map(v => this.dict[dict].find(item => item.value === v)?.label || v).join(',')
|
||||
// return this.dict[dict].find(item => item.value === value)?.label || value
|
||||
} else {
|
||||
return value
|
||||
}
|
||||
},
|
||||
formatDate (dateStr) {
|
||||
if (dateStr && dateStr!== '') {
|
||||
let dateArr = dateStr.split(',')
|
||||
return dateArr.map(date => date.slice(0,10)).join(',')
|
||||
}
|
||||
return dateStr
|
||||
},
|
||||
getDicTypeListCode () {
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
// this.dict.lawsSycxOptions = res.data.lawsSycx// 政策_适用车型
|
||||
this.$set(this.dict, 'lawsSycxOptions', res.data.lawsSycx)
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
// 表格
|
||||
.content{
|
||||
//height: calc(~'100% - 43.5px - 56px');
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
flex: auto;
|
||||
.pagination {
|
||||
position: static;
|
||||
/deep/ .pagination-slot {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,117 @@
|
||||
<template>
|
||||
<table-tools-bar
|
||||
@search="getBussionStandTableBtn(lawsStandInfoSearch)"
|
||||
@reset="clearAllSearch('lawsStandInfoSearch')"
|
||||
>
|
||||
<div slot="left">
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form :modal="lawsStandInfoSearch" :inline="true" class="label-input-form" @submit.native.prevent="getBussionStandTableBtn(lawsStandInfoSearch)">
|
||||
<!--<el-formItem label="政策编号" prop="lawsNumber" class="search-item">-->
|
||||
<!-- <el-input v-model="lawsStandInfoSearch.lawsNumber" clearable placeholder="根据编号查找" :maxlength="100" @keyup.enter.native="getBussionStandTableBtn(lawsStandInfoSearch)"/>-->
|
||||
<!--</el-formItem>-->
|
||||
<el-formItem label="政策名称" prop="numberName" class="search-item">
|
||||
<el-input v-model="lawsStandInfoSearch.lawsName" clearable placeholder="根据政策名称查找" :maxlength="100" @keyup.enter.native="getBussionStandTableBtn(lawsStandInfoSearch)"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="政策文号" prop="lawsNo" class="search-item">
|
||||
<el-input v-model="lawsStandInfoSearch.lawsNo" clearable placeholder="根据政策文号查找" :maxlength="100" @keyup.enter.native="getBussionStandTableBtn(lawsStandInfoSearch)"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="发文单位" prop="issueCompany" class="search-item">
|
||||
<el-input v-model="lawsStandInfoSearch.issueCompany" clearable placeholder="根据发文单位查找" :maxlength="100" @keyup.enter.native="getBussionStandTableBtn(lawsStandInfoSearch)"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="适用车型" prop="lawsSycx" class="search-item">
|
||||
<el-select :value="lawsSycx" multiple filterable clearable collapse-tags @change="lawsSycxChange">
|
||||
<el-option
|
||||
v-for="item in dict.lawsSycxOptions"
|
||||
placeholder="请选择适用车型"
|
||||
:key="item.value"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
<el-formItem label="文本状态" prop="lawsTextState" class="search-item">
|
||||
<el-select v-model="lawsStandInfoSearch.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 class="search-item btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
class="common-button-primary"
|
||||
v-btn-permission="'776298201c756873ddc8000eb716e347'"
|
||||
@click="getBussionStandTableBtn(lawsStandInfoSearch)">
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="common-button-default"
|
||||
v-btn-permission="'f0e6ba2b9736b77f9a271addf692b9c0'"
|
||||
@click="clearAllSearch('lawsStandInfoSearch')">清空
|
||||
</el-button>
|
||||
<el-button size="mini" type="primary" class="common-button-primary"
|
||||
v-btn-permission="'2e08f0dcb187e214127f971419f91174'" @click="selectMoreBtn">高级检索
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="right" class="right shaixuan-button">
|
||||
<!-- <el-button icon="shaixuan" type="primary" class="common-button-primary" round @click="isAdvancedSearch = true">高级检索</el-button>-->
|
||||
</div>
|
||||
</table-tools-bar>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "policySearch",
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
},
|
||||
props: {
|
||||
lawsStandInfoSearch: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
dict: {
|
||||
type: Object,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
lawsSycx () {
|
||||
return this.lawsStandInfoSearch.lawsSycx ? this.lawsStandInfoSearch.lawsSycx.split(',') : []
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
// 搜索
|
||||
getBussionStandTableBtn (item, advancedSearch, type) {
|
||||
this.$emit('getBussionStandTableBtn')
|
||||
},
|
||||
// 高级检索
|
||||
selectMoreBtn () {
|
||||
this.$emit('selectMoreBtn')
|
||||
},
|
||||
// 清空搜索框
|
||||
clearAllSearch (flag) {
|
||||
this.$emit('clearSearch')
|
||||
},
|
||||
lawsSycxChange (value) {
|
||||
this.$set(this.lawsStandInfoSearch, 'lawsSycx', value.join(','))
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,324 @@
|
||||
<template>
|
||||
<!--右侧内容-->
|
||||
<div id="right" class="tree-right v-class">
|
||||
<!-- 普通搜索 -->
|
||||
<policySearch ref="policySearchRef"
|
||||
:lawsStandInfoSearch="lawsStandInfoSearch"
|
||||
:dict="dict"
|
||||
@getBussionStandTableBtn="getBussionStandTableBtn"
|
||||
@clearSearch="clearSearch"
|
||||
@selectMoreBtn="selectMoreBtn"></policySearch>
|
||||
<!--按钮区-->
|
||||
<div class="action-bar">
|
||||
<!--<el-button-->
|
||||
<!-- type="primary"-->
|
||||
<!-- class="common-button-primary add-button"-->
|
||||
<!-- round-->
|
||||
<!-- @click="addModal"-->
|
||||
<!--><i class="el-icon-plus"></i>新增</el-button>-->
|
||||
<!--<el-button-->
|
||||
<!-- class="common-button-default in-button"-->
|
||||
<!-- round-->
|
||||
<!-- :loading="searching"-->
|
||||
<!-- @click="addImportModal(1)"-->
|
||||
<!-- v-btn-permission="'SKNTPDKZFF'"-->
|
||||
<!-- ><i class="iconfont"></i>导入-->
|
||||
<!--</el-button>-->
|
||||
<el-button
|
||||
class="common-button-default export-button"
|
||||
round
|
||||
@click="exportStandard"
|
||||
title="不勾选时默认导出所有筛选项;勾选时仅导出勾选项"
|
||||
v-btn-permission="'15e322e28629ee9e55283d12e3167e21'"
|
||||
><i class="iconfont"></i>导出</el-button>
|
||||
<!-- <el-button-->
|
||||
<!-- class="common-button-default"-->
|
||||
<!-- round-->
|
||||
<!-- :loading="searching"-->
|
||||
<!-- @click="uploadImportModal(1)"-->
|
||||
<!-- v-btn-permission="'afX1p2gh3c'"-->
|
||||
<!-- ><i class="iconfont"></i>模板下载</el-button>-->
|
||||
<!-- <el-button
|
||||
class="common-button-default delete-button"
|
||||
round
|
||||
@click="deleteStand(2)"
|
||||
v-btn-permission="'fd83032ae5f41a0021b00e93c88edbbe'"
|
||||
><i class="iconfont"></i>批量删除</el-button>-->
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
round
|
||||
@click="configurationStandard"
|
||||
v-btn-permission="'1a6c9118cd677304924f81e02d58ac06'"
|
||||
><i class="iconfont"></i>配置政策</el-button>
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
round
|
||||
@click="deleteEnterStandFromKind(2)"
|
||||
v-btn-permission="'0f54e3b982693ff122287b85785c9c37'"
|
||||
><i class="iconfont"></i>移除政策</el-button>
|
||||
</div>
|
||||
<!--table-->
|
||||
<mainTable
|
||||
ref="mainTableRef"
|
||||
:lawsStandInfoSearch="lawsStandInfoSearch"
|
||||
:selectSarMenu="selectSarMenu"
|
||||
@selectedList="getSelectedList"
|
||||
@SarExportSearchEo="getSarExportSearchEo"
|
||||
/>
|
||||
<!--高级搜索-->
|
||||
<advancedSearch
|
||||
ref="advancedSearchRef"
|
||||
:lawsStandInfoSearch="lawsStandInfoSearch"
|
||||
@clearSearch="clearSearch"
|
||||
@advancedSearch="advancedSearch"
|
||||
:dict="dict">
|
||||
</advancedSearch>
|
||||
<!--导出-->
|
||||
<exportFileDialog ref="exportFileDialogRef" :selectedList="selectedList" :SarExportSearchEo="SarExportSearchEo" />
|
||||
<!-- 配置政策 -->
|
||||
<configStandDrawer
|
||||
ref="configStandDrawerRef"
|
||||
:selectSarMenu="selectSarMenu"
|
||||
:getBussionStandTable="() => {this.$refs.mainTableRef.getBussionStandTable()}" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import policySearch from './policySearch'
|
||||
import advancedSearch from './advancedSearch'
|
||||
import mainTable from "./mainTable";
|
||||
import exportFileDialog from './exportFileDialog'
|
||||
import configStandDrawer from "./configStandDrawer";
|
||||
|
||||
export default {
|
||||
name: "policyTable",
|
||||
components: {
|
||||
policySearch,
|
||||
advancedSearch,
|
||||
mainTable,
|
||||
exportFileDialog,
|
||||
configStandDrawer
|
||||
},
|
||||
data () {
|
||||
const lawsStandInfoSearch = {}
|
||||
return {
|
||||
lawsStandInfoSearch, // 分页查询过程中用到的对象
|
||||
dict: {},
|
||||
|
||||
// 导出相关
|
||||
selectedList: [],
|
||||
SarExportSearchEo: {}, // 查询条件
|
||||
}
|
||||
},
|
||||
props: {
|
||||
// 用来记录当前选中的二级菜单对象
|
||||
selectSarMenu: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.getDicTypeListCode() // 字典项
|
||||
},
|
||||
methods: {
|
||||
// 打开高级搜索
|
||||
selectMoreBtn () {
|
||||
this.$set(this, 'lawsStandInfoSearch', {
|
||||
commentCycleStart: '',
|
||||
commentCycleEnd: ''
|
||||
})
|
||||
this.$refs.advancedSearchRef.open()
|
||||
},
|
||||
|
||||
// 清除搜索条件
|
||||
clearSearch () {
|
||||
this.$set(this, 'lawsStandInfoSearch', {})
|
||||
this.$refs.advancedSearchRef.close()
|
||||
this.$nextTick(() => {
|
||||
this.getBussionStandTableBtn()
|
||||
})
|
||||
},
|
||||
|
||||
// 左侧树点击后 重新获取数据
|
||||
treeClickGetBussionStandTable (menuId) {
|
||||
this.$set(this.lawsStandInfoSearch, 'menuId', menuId)
|
||||
this.$set(this.lawsStandInfoSearch, 'page', 1)
|
||||
this.$refs.mainTableRef.getBussionStandTable(this.lawsStandInfoSearch, menuId)
|
||||
},
|
||||
|
||||
// 普通搜索
|
||||
getBussionStandTableBtn () {
|
||||
this.$set(this.lawsStandInfoSearch, 'page', 1)
|
||||
this.$refs.mainTableRef.getBussionStandTable()
|
||||
},
|
||||
|
||||
// 高级搜索
|
||||
advancedSearch () {
|
||||
this.$set(this.lawsStandInfoSearch, 'page', 1)
|
||||
this.lawsStandInfoSearch = { ...this.lawsStandInfoSearch }
|
||||
this.$refs.mainTableRef.getBussionStandTable(this.lawsStandInfoSearch, '', 'sel')
|
||||
},
|
||||
|
||||
// --------------新增----------------
|
||||
// addModal () {
|
||||
// this.getMenu().then(boolean => {
|
||||
// if (boolean) {
|
||||
// this.$refs.mainTableRef.addModal()
|
||||
// }
|
||||
// })
|
||||
// },
|
||||
|
||||
// -------------导出相关---------------
|
||||
// 选中项
|
||||
getSelectedList (val) {
|
||||
this.$set(this, 'selectedList', val)
|
||||
},
|
||||
exportStandard () {
|
||||
this.$refs.exportFileDialogRef.exportStandard()
|
||||
},
|
||||
// 设置查询条件
|
||||
getSarExportSearchEo (val) {
|
||||
this.$set(this, 'SarExportSearchEo', val)
|
||||
},
|
||||
|
||||
// -------------配置政策----------
|
||||
// 点击配置标准弹出相应模态框
|
||||
configurationStandard () {
|
||||
this.getMenu().then(boolean => {
|
||||
if (boolean) {
|
||||
const winWidth = window.screen.width
|
||||
if (winWidth > 1920) {
|
||||
this.drawerWidth = 1400
|
||||
} else {
|
||||
this.drawerWidth = winWidth - 200
|
||||
}
|
||||
let menuId = this.selectSarMenu.id
|
||||
if (menuId == null || menuId === '') {
|
||||
this.$message.error('请选择要配置的目录')
|
||||
} else {
|
||||
if (this.selectSarMenu.parentId == null || this.selectSarMenu.parentId === '') {
|
||||
this.$message.error('请选择二级及以下目录')
|
||||
} else {
|
||||
this.$refs.configStandDrawerRef.open()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// -------------移除政策-----------
|
||||
// 判断当前左侧树节点是否是我的收藏和个性化标签
|
||||
getMenu () {
|
||||
return new Promise((resolve, reject) => {
|
||||
let menu = this.selectSarMenu
|
||||
if (menu.id === 'zcwdsc') {
|
||||
this.$message.warning('请选择海外标准法规及以下节点')
|
||||
} else {
|
||||
resolve(true)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 移除政策
|
||||
deleteEnterStandFromKind (flag, item) {
|
||||
this.getMenu().then(boolean => {
|
||||
if (boolean) {
|
||||
if (this.selectSarMenu.parentId == null || this.selectSarMenu.parentId === '') {
|
||||
this.$message({
|
||||
showClose: true,
|
||||
message: '请选择二级及以下目录',
|
||||
type: 'error'
|
||||
})
|
||||
} else {
|
||||
let search = {}
|
||||
// 取最外层目录id
|
||||
search.menuId = this.selectSarMenu.id
|
||||
// search.menuId = this.removeOneId
|
||||
search.idlist = []
|
||||
// search.menuId = this.removeOneId
|
||||
if (this.selectedList.length === 0) {
|
||||
this.$message.error('请先选择要移除的数据!')
|
||||
} else {
|
||||
this.$confirm('确认移除选中数据?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
}).then(() => {
|
||||
for (let i = 0; i < this.selectedList.length; i++) {
|
||||
search.idlist.push(this.selectedList[i])
|
||||
}
|
||||
this.$http.putData('lawss/sarLawsMenu/removeStandInfo', search, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.$refs.mainTableRef.getBussionStandTable()
|
||||
}, e => {
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
getDicTypeListCode () {
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.dict.lawsTextStateOptions = res.data.lawsTextState
|
||||
this.dict.lawsTypeOptions = res.data.lawsType
|
||||
this.dict.lawsSyqyOptions = res.data.lawsSyqy
|
||||
this.dict.lawsYearOptions = res.data.lawsYear
|
||||
this.dict.lawsLabelOptions = res.data.lawsLabel
|
||||
this.dict.TGRLAWSOptions = res.data.TGRLAWS
|
||||
this.dict.NYLXLAWSOptions = res.data.NYLXLAWS
|
||||
this.dict.ZRBMLAWSOptions = res.data.ZRBMLAWS
|
||||
this.dict.CYSDLAWSOptions = res.data.CYSDLAWS
|
||||
this.dict.TGDWLAWSOptions = res.data.TGDWLAWS
|
||||
this.dict.ZRGCSLAWSOptions = res.data.ZRGCSLAWS
|
||||
this.dict.lawsSycxOptions = res.data.lawsSycx
|
||||
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.lawsSyqyOptions = res.data.lawsSyqy
|
||||
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.TGRLAWSOptions = res.data.TGRLAWS
|
||||
this.dict.TGDWLAWSOptions = res.data.TGDWLAWS
|
||||
this.dict.NYLXLAWSOptions = res.data.NYLXLAWS
|
||||
this.dict.YYRZLAWSOptions = res.data.YYRZLAWS
|
||||
this.dict.ZRBMLAWSOptions = res.data.ZRBMLAWS
|
||||
this.dict.ZRGCSLAWSOptions = res.data.ZRGCSLAWS
|
||||
this.dict.syrzOptions = res.data.YYRZLAWS
|
||||
this.dict = { ...this.dict }
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
#right{
|
||||
float:right;
|
||||
width:70%;
|
||||
height:100%;
|
||||
}
|
||||
|
||||
.tree-right {
|
||||
overflow-y: hidden;
|
||||
padding:0 0;
|
||||
position: relative;
|
||||
width: 84%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,261 @@
|
||||
<template>
|
||||
<div style="width: 100%" class="wrapper">
|
||||
<el-input
|
||||
placeholder="输入树状图体系"
|
||||
v-model="filterText">
|
||||
</el-input>
|
||||
<div class="tree">
|
||||
<el-card style="height: 100%;padding-right: 120px;overflow-y:auto">
|
||||
<el-tree
|
||||
ref="tree"
|
||||
node-key="id"
|
||||
class="tree-line"
|
||||
icon-class="icon-tree"
|
||||
:indent="0"
|
||||
:props="props"
|
||||
:data="treeList"
|
||||
:default-expanded-keys="['64df1d5522bb49c09af6']"
|
||||
highlight-current
|
||||
@node-click="treeClick"
|
||||
:filter-node-method="filterNode">
|
||||
<span class="custom-tree-node" slot-scope="{ node, data }" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
|
||||
<span :class="data.children.length !== 0 ? 'is-show' : 'is-leaf-none'"></span>
|
||||
<span style="font-size:12px"> {{ node.label }} </span>
|
||||
<span>
|
||||
<el-button
|
||||
type="text"
|
||||
size="mini"
|
||||
v-show="data.show"
|
||||
v-btn-permission="'a3109949cc30dae1ef523c037b2651b8'"
|
||||
@click="() => append(data)">
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
size="mini"
|
||||
v-show="data.show"
|
||||
v-btn-permission="'61a33c05ed689934f7d4a0de4220c9ce'"
|
||||
@click="() => update(data)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
size="mini"
|
||||
v-show="data.showDel"
|
||||
v-btn-permission="'b123231eb8c42b2a61e3dc5f59654f79'"
|
||||
@click="() => remove(node, data)">
|
||||
删除
|
||||
</el-button>
|
||||
</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-card>
|
||||
</div>
|
||||
<addStructure ref="addStructureRef" @selectMenuList="selectMenuList"></addStructure>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import addStructure from "./addStructure";
|
||||
export default {
|
||||
name: "policyTree",
|
||||
components: {
|
||||
addStructure
|
||||
},
|
||||
data(){
|
||||
return {
|
||||
treeList: [],
|
||||
filterText: '', // 企业标准库过滤
|
||||
props: {
|
||||
label: 'menuName',
|
||||
children: 'children'
|
||||
},
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.selectMenuList()
|
||||
},
|
||||
watch: {
|
||||
filterText(val) {
|
||||
this.$refs.tree.filter(val);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
selectMenuList () {
|
||||
this.$http.get('sarResource/ts-resource/getListStand', {
|
||||
sorDivide: 'FOREIGN_LAWS',
|
||||
userId: this.$store.getters.userInfo.userId
|
||||
}, {}, res => {
|
||||
if (res.ok) {
|
||||
this.treeList = res.data
|
||||
}
|
||||
})
|
||||
this.$emit('treeClick', {})
|
||||
},
|
||||
filterNode(value, data) {
|
||||
if (!value) return true;
|
||||
return data.menuName.indexOf(value) !== -1;
|
||||
},
|
||||
treeClick (treeNode) {
|
||||
this.$emit('treeClick', treeNode)
|
||||
},
|
||||
append(data) {
|
||||
this.$refs.addStructureRef.append(data)
|
||||
},
|
||||
update(data) {
|
||||
this.$refs.addStructureRef.update(data)
|
||||
},
|
||||
remove(node, data) {
|
||||
this.$confirm('是否删除菜单?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
cancelButtonText: '取消',
|
||||
roundButton: true,
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$http.put("sarResource/ts-resource/delResourceById", {
|
||||
resourceId: data.id
|
||||
}, res => {
|
||||
}, e => {
|
||||
if(e.ok){
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: "删除成功"
|
||||
})
|
||||
this.selectMenuList()
|
||||
}else {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: e.message
|
||||
})
|
||||
}
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '已取消删除'
|
||||
})
|
||||
})
|
||||
},
|
||||
// 树节点鼠标移入移出
|
||||
mouseenter(data){
|
||||
this.$set(data, 'show', true)
|
||||
if(data.parentId !== null && data.id !== 'zcwdsc'){
|
||||
this.$set(data, 'showDel', true)
|
||||
}
|
||||
},
|
||||
mouseleave(data){
|
||||
this.$set(data, 'show', false)
|
||||
this.$set(data, 'showDel', false)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
/deep/ .icon-tree {
|
||||
margin:0 5px 0 10px;
|
||||
position:relative;
|
||||
background:url('~@/assets/images/shangqi/img/tree-add.png');
|
||||
background-size:100% 100%;
|
||||
}
|
||||
/deep/ .expanded{
|
||||
background:url('~@/assets/images/shangqi/img/tree-sub.png');
|
||||
background-size:100% 100%;
|
||||
}
|
||||
/deep/ .is-leaf{
|
||||
background-image:none;
|
||||
background-size:100% 100%;
|
||||
}
|
||||
/deep/ .is-leaf-none{
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
background: url('~@/assets/images/shangqi/img/none-file-new.png');
|
||||
background-size:100% 100%;
|
||||
}
|
||||
/deep/ .is-show{
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
background:url('~@/assets/images/shangqi/img/tree.png');
|
||||
background-size:100% 100%;
|
||||
}
|
||||
|
||||
/deep/.tree-line{
|
||||
.el-tree-node {
|
||||
position: relative;
|
||||
padding-left: 0px; // 缩进量
|
||||
line-height: 30px;
|
||||
}
|
||||
.el-tree-node__children {
|
||||
padding-left: 16px; // 缩进量
|
||||
}
|
||||
|
||||
// 竖线
|
||||
.el-tree-node::before {
|
||||
content: "";
|
||||
height: 100%;
|
||||
width: 1px;
|
||||
position: absolute;
|
||||
left: -3px;
|
||||
top: -26px;
|
||||
border-width: 1px;
|
||||
border-left: 1px dashed #858990e0;
|
||||
}
|
||||
// 当前层最后一个节点的竖线高度固定
|
||||
.el-tree-node:last-child::before {
|
||||
height: 38px; // 可以自己调节到合适数值
|
||||
}
|
||||
|
||||
// 横线
|
||||
.el-tree-node::after {
|
||||
content: "";
|
||||
width: 11px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
left: -3px;
|
||||
top: 12px;
|
||||
border-width: 1px;
|
||||
border-top: 1px dashed #858990e0;
|
||||
}
|
||||
|
||||
// 去掉最顶层的虚线,放最下面样式才不会被上面的覆盖了
|
||||
& > .el-tree-node::after {
|
||||
border-top: none;
|
||||
}
|
||||
& > .el-tree-node::before {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
// 展开关闭的icon
|
||||
.el-tree-node__expand-icon{
|
||||
font-size: 16px;
|
||||
// 叶子节点(无子节点)
|
||||
&.is-leaf{
|
||||
color: transparent;
|
||||
// display: none; // 也可以去掉
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style scoped lang="less">
|
||||
.tree{
|
||||
/deep/ .el-card__body {
|
||||
padding: 0 !important;
|
||||
}
|
||||
.el-card {
|
||||
width: 500px;
|
||||
min-width: 2000px;
|
||||
max-width: 100%;
|
||||
/* min-width: min-content;*/
|
||||
}
|
||||
height: 95%;
|
||||
width: 95%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,123 @@
|
||||
<template>
|
||||
<div class="nationalPolicy">
|
||||
<div id="foreignRegulationsDatabase" :class="{ 'tree-close': sideClose }" class="v-class">
|
||||
<!--左侧树-->
|
||||
<div id="left" class="tree-content" :class="{ 'tree-closed': sideClose }" >
|
||||
<!-- 政策树 -->
|
||||
<policyTree ref="policyTreeRef" @treeClick="treeClick"></policyTree>
|
||||
<div class="tree-collapse" @click="treeCollapse" :class="{ 'tree-close': sideClose }">
|
||||
<!--切换折叠样式-->
|
||||
<i class="el-icon-arrow-left" v-if="sideClose === false"></i>
|
||||
<i class="el-icon-arrow-right" v-if="sideClose === true"></i>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 可拖拽 -->
|
||||
<div id="resize"></div>
|
||||
<policyTable ref="policyTableRef" :selectSarMenu="selectSarMenu"></policyTable>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import policyTree from "./components/policyTree";
|
||||
import policyTable from "./components/policyTable";
|
||||
export default {
|
||||
name: 'NationalPolicy',
|
||||
components: {
|
||||
policyTree,
|
||||
policyTable
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
sideClose: false, // 边栏收展状态
|
||||
selectSarMenu: {}// 用来记录当前选中的二级菜单对象
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.dragControllerLR()
|
||||
},
|
||||
methods: {
|
||||
treeClick (treeNode) {
|
||||
// 点击左侧树 重新获取数据
|
||||
this.$set(this, 'selectSarMenu', treeNode)
|
||||
this.$nextTick(() => {
|
||||
this.$refs.policyTableRef.treeClickGetBussionStandTable(treeNode.id || '')
|
||||
})
|
||||
},
|
||||
treeCollapse () {
|
||||
this.sideClose = !this.sideClose
|
||||
},
|
||||
|
||||
// 左右拖动事件
|
||||
dragControllerLR: function() {
|
||||
var resize = document.getElementById("resize");
|
||||
var left = document.getElementById("left");
|
||||
var right = document.getElementById("right");
|
||||
var box = document.getElementById("foreignRegulationsDatabase");
|
||||
resize.onmousedown = function(e){
|
||||
var startX = e.clientX;
|
||||
resize.left = resize.offsetLeft;
|
||||
document.onmousemove = function(e){
|
||||
var endX = e.clientX;
|
||||
|
||||
var moveLen = resize.left + (endX - startX);
|
||||
var maxT = box.clientWidth - resize.offsetWidth;
|
||||
if(moveLen<150) moveLen = 150;
|
||||
if(moveLen>maxT-150) moveLen = maxT-150;
|
||||
|
||||
resize.style.left = moveLen;
|
||||
left.style.width = moveLen + "px";
|
||||
right.style.width = (box.clientWidth - moveLen - 5) + "px";
|
||||
}
|
||||
document.onmouseup = function(evt){
|
||||
document.onmousemove = null;
|
||||
document.onmouseup = null;
|
||||
resize.releaseCapture && resize.releaseCapture();
|
||||
}
|
||||
resize.setCapture && resize.setCapture();
|
||||
return false;
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
#left{
|
||||
width:calc(30% - 5px);
|
||||
height:100%;
|
||||
float:left;
|
||||
}
|
||||
|
||||
#resize{
|
||||
width:5px;
|
||||
height:100%;
|
||||
cursor: w-resize;
|
||||
float:left;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
<style lang="less" scoped>
|
||||
@import '~@/assets/styles/mixins';
|
||||
@import '~@/assets/styles/style';
|
||||
.nationalPolicy{
|
||||
height: 100%;
|
||||
}
|
||||
#foreignRegulationsDatabase {
|
||||
display: flex;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
//background: #fff;
|
||||
.tree-content {
|
||||
width: 20%;
|
||||
position: relative;
|
||||
/*height: 100%;*/
|
||||
background: #fff;
|
||||
.tree-collapse {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,276 @@
|
||||
<template>
|
||||
<el-drawer
|
||||
title="高级搜索"
|
||||
size="800px"
|
||||
:visible="visible"
|
||||
:wrapperClosable="false"
|
||||
:before-close="beforeClose">
|
||||
<div class="drawer-content">
|
||||
<el-form
|
||||
:model="form"
|
||||
class="label-input-form table-lattice"
|
||||
label-width="80px">
|
||||
<ProcessTitle>
|
||||
<template slot="title">基础信息</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="课题指导单位"
|
||||
title="课题指导单位"
|
||||
v-model="form.guidanceUnit">
|
||||
</InputFormItem>
|
||||
<InputFormItem
|
||||
label="课题参与单位"
|
||||
title="课题参与单位"
|
||||
v-model="form.participatingUnit">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="结题时间"
|
||||
title="结题时间"
|
||||
v-model="form.closeTime">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="课题费用(万元)"
|
||||
title="课题费用(万元)"
|
||||
v-model="form.topicCost">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">课题组会议</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="会议名称"
|
||||
title="会议名称"
|
||||
v-model="form.meetingName">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="会议时间"
|
||||
title="会议时间"
|
||||
v-model="form.meetingTime">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="会议地点"
|
||||
title="会议地点"
|
||||
v-model="form.meetingAddress">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="参会人员(内部)"
|
||||
title="参会人员(内部)"
|
||||
v-model="form.participants">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="会议主要内容"
|
||||
title="会议主要内容"
|
||||
v-model="form.meetingContent">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">课题组联系方式</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="姓名"
|
||||
title="姓名"
|
||||
v-model="form.topicGroupName">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="单位"
|
||||
title="单位"
|
||||
v-model="form.topicGroupDepartment">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="电话"
|
||||
title="电话"
|
||||
v-model="form.topicGroupPhone">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="邮箱"
|
||||
title="邮箱"
|
||||
v-model="form.topicGroupEmail">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="身份"
|
||||
title="身份"
|
||||
v-model="form.topicGroupIdentity">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<ProcessTitle>
|
||||
<template slot="title">内部联系方式</template>
|
||||
</ProcessTitle>
|
||||
<div class="prc-content-border">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="姓名"
|
||||
title="姓名"
|
||||
v-model="form.insideName">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="单位"
|
||||
title="单位"
|
||||
v-model="form.insideDepartment">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="电话"
|
||||
title="电话"
|
||||
v-model="form.insidePhone">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="邮箱"
|
||||
title="邮箱"
|
||||
v-model="form.insideEmail">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<InputFormItem
|
||||
label="身份"
|
||||
title="身份"
|
||||
v-model="form.insideIdentity">
|
||||
</InputFormItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="drawer-footer">
|
||||
<el-button
|
||||
class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
type="primary"
|
||||
@click="onSearch('search')">搜索
|
||||
</el-button>
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-close"
|
||||
@click="onCancel('cancel')">取消
|
||||
</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</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 DatePickerGroupFormItem from "@/components/hzwlComponents/DatePickerGroupFormItem";
|
||||
import DepartmentFormItem from "@/components/hzwlComponents/DepartmentFormItem";
|
||||
import personFormItem from "@/components/hzwlComponents/personFormItem";
|
||||
import InputForStandardsForLaws from "@/components/hzwlComponents/InputForStandardsForLaws";
|
||||
|
||||
export default {
|
||||
name: "advancedSearch",
|
||||
components: {
|
||||
ProcessTitle,
|
||||
SelectFormItem,
|
||||
InputFormItem,
|
||||
DatePickerFormItem,
|
||||
DataRangePickerFormItem,
|
||||
SelectMultipleFormItem,
|
||||
DatePickerGroupFormItem,
|
||||
DepartmentFormItem,
|
||||
personFormItem,
|
||||
InputForStandardsForLaws
|
||||
},
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
dict: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
},
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
type: 'cancel'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
beforeClose (done) {
|
||||
switch (this.type) {
|
||||
case "search":
|
||||
this.onSearch()
|
||||
break
|
||||
case 'cancel':
|
||||
this.onCancel()
|
||||
break
|
||||
}
|
||||
},
|
||||
onSearch (type) {
|
||||
this.type = type
|
||||
this.$emit('search')
|
||||
this.$emit('update:visible', false)
|
||||
},
|
||||
onCancel(type) {
|
||||
this.type = type
|
||||
this.$emit('resetAdvancedSearchForm')
|
||||
this.$emit('update:visible', false)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.drawer-content {
|
||||
padding: 0 19px;
|
||||
overflow-y: auto;
|
||||
flex: auto;
|
||||
}
|
||||
.drawer-footer {
|
||||
width: 100%;
|
||||
padding: 0 20px;
|
||||
height: 70px;
|
||||
line-height: 69px;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
text-align: right;
|
||||
background: #fff;
|
||||
z-index: 999;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,609 @@
|
||||
<template>
|
||||
<el-drawer :title="title"
|
||||
:visible="showDrawer"
|
||||
:wrapperClosable="false"
|
||||
@close="onClose"
|
||||
size="1050px">
|
||||
<div class="drawer-content">
|
||||
<el-form
|
||||
v-if="showDrawer && reloadForm"
|
||||
ref="formRef"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-col :span="24"><div class="divider-line">基础信息</div></el-col>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="课题名称" prop="topicName" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.topicName"
|
||||
placeholder="请输入课题名称"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="课题承办单位" prop="organizer" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.organizer"
|
||||
placeholder="请输入课题承办单位"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="课题指导单位" prop="guidanceUnit" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.guidanceUnit"
|
||||
placeholder="请输入课题指导单位"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="课题参与单位" prop="participatingUnit" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.participatingUnit"
|
||||
placeholder="请输入课题参与单位"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<CustomDatePick
|
||||
:config="{
|
||||
attrName: '启动时间',
|
||||
attrField: 'startTime'
|
||||
}"
|
||||
v-model="form.startTime"
|
||||
></CustomDatePick>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<CustomDatePick
|
||||
:config="{
|
||||
attrName: '结题时间',
|
||||
attrField: 'closeTime'
|
||||
}"
|
||||
v-model="form.closeTime"
|
||||
></CustomDatePick>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="课题状态" prop="topicStatus" label-width="150px" class="add-form-item">
|
||||
<el-select v-model="form.topicStatus"
|
||||
placeholder="请选择课题状态"
|
||||
disabled
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in topicStatusOptions"
|
||||
:key="opt.value"
|
||||
:value="!opt.value ? '' : opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="课题费用(万元)" prop="topicCost" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.topicCost"
|
||||
placeholder="请输入课题费用(万元)"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '协议',
|
||||
attrField: 'agreement'
|
||||
}"
|
||||
v-model="form.agreement"
|
||||
></customFile>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<template v-for="(item, index) in form.meetingList">
|
||||
<el-col :span="24">
|
||||
<div class="divider-line">
|
||||
课题组会议
|
||||
<el-button type="primary" size="mini" icon="el-icon-plus" @click="add('meetingList')"
|
||||
:style="{visibility: (index === form.meetingList.length - 1) ? 'visible' : 'collapse'}"></el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-minus" @click="remove('meetingList', index)"
|
||||
:style="{visibility: (form.meetingList.length < 2 && index === 0) ? 'collapse' : 'visible'}"></el-button>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议名称" :prop="'meetingList.' + index + '.meetingName'" :rules="rules.meetingName" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.meetingName"
|
||||
placeholder="请输入会议名称"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议时间" :prop="'meetingList.' + index + '.meetingTime'" :rules="rules.meetingTime" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.meetingTime"
|
||||
placeholder="请输入会议时间"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议地点" :prop="'meetingList.' + index + '.meetingAddress'" :rules="rules.meetingAddress" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.meetingAddress"
|
||||
placeholder="请输入会议地点"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="参会人员(内部)" :prop="'meetingList.' + index + '.participants'" :rules="rules.participants" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.participants"
|
||||
placeholder="请输入参会人员(内部)"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议主要内容" :prop="'meetingList.' + index + '.meetingContent'" :rules="rules.meetingContent" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.meetingContent"
|
||||
placeholder="请输入会议主要内容"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
</el-row>
|
||||
<el-col :span="24"><div class="divider-line">课题组资料</div></el-col>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '研究方案',
|
||||
attrField: 'researchPlan'
|
||||
}"
|
||||
v-model="form.researchPlan"
|
||||
></customFile>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '研究成果',
|
||||
attrField: 'researchFindings'
|
||||
}"
|
||||
v-model="form.researchFindings"
|
||||
></customFile>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '其他',
|
||||
attrField: 'other'
|
||||
}"
|
||||
v-model="form.other"
|
||||
></customFile>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '会议资料',
|
||||
attrField: 'conferenceMaterials'
|
||||
}"
|
||||
v-model="form.conferenceMaterials"
|
||||
:allowType="['.pdf', '.PDF', '.doc','.DOC', '.docx','.DOCX', '.pptx', '.PPTX', '.ppt', '.PPT', '.xls','.XLS', '.xlsx','.XLSX', '.pdg', '.PDG', '.mp3', '.MP3', '.Ogg', '.Wav']"
|
||||
:size="500"
|
||||
></customFile>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<template v-for="(item, index) in form.topicContactInformationList">
|
||||
<el-col :span="24">
|
||||
<div class="divider-line">
|
||||
课题组联系方式
|
||||
<el-button type="primary" size="mini" icon="el-icon-plus" @click="add('topicContactInformationList')"
|
||||
:style="{visibility: (index === form.topicContactInformationList.length - 1) ? 'visible' : 'collapse'}"></el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-minus" @click="remove('topicContactInformationList', index)"
|
||||
:style="{visibility: (form.topicContactInformationList.length < 2 && index === 0) ? 'collapse' : 'visible'}"></el-button>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名" :prop="'topicContactInformationList.' + index + '.name'" :rules="rules.name" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.name"
|
||||
placeholder="请输入姓名"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="单位" :prop="'topicContactInformationList.' + index + '.department'" :rules="rules.department" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.department"
|
||||
placeholder="请输入单位"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="电话" :prop="'topicContactInformationList.' + index + '.phone'" :rules="rules.phone" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.phone"
|
||||
placeholder="请输入电话"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="邮箱" :prop="'topicContactInformationList.' + index + '.email'" :rules="rules.email" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.email"
|
||||
placeholder="请输入邮箱"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份" :prop="'topicContactInformationList.' + index + '.identity'" :rules="rules.identity" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.identity"
|
||||
placeholder="请输入身份"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
</el-row>
|
||||
<el-col :span="24"><div class="divider-line">内部资料</div></el-col>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '立项报告',
|
||||
attrField: 'insideProjectProposalReport'
|
||||
}"
|
||||
v-model="form.insideProjectProposalReport"
|
||||
></customFile>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '研究方案',
|
||||
attrField: 'insideResearchPlan'
|
||||
}"
|
||||
v-model="form.insideResearchPlan"
|
||||
></customFile>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '会议资料',
|
||||
attrField: 'insideConferenceMaterials'
|
||||
}"
|
||||
v-model="form.insideConferenceMaterials"
|
||||
></customFile>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '研究成果',
|
||||
attrField: 'insideResearchFindings'
|
||||
}"
|
||||
v-model="form.insideResearchFindings"
|
||||
></customFile>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '其他',
|
||||
attrField: 'insideOther'
|
||||
}"
|
||||
v-model="form.insideOther"
|
||||
></customFile>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<template v-for="(item, index) in form.insideContactInformationList">
|
||||
<el-col :span="24">
|
||||
<div class="divider-line">
|
||||
内部联系方式
|
||||
<el-button type="primary" size="mini" icon="el-icon-plus" @click="add('insideContactInformationList')"
|
||||
:style="{visibility: (index === form.insideContactInformationList.length - 1) ? 'visible' : 'collapse'}"></el-button>
|
||||
<el-button type="primary" size="mini" icon="el-icon-minus" @click="remove('insideContactInformationList', index)"
|
||||
:style="{visibility: (form.insideContactInformationList.length < 2 && index === 0) ? 'collapse' : 'visible'}"></el-button>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名" :prop="'insideContactInformationList.' + index + '.name'" :rules="rules.name" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.name"
|
||||
placeholder="请输入姓名"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="单位" :prop="'insideContactInformationList.' + index + '.department'" :rules="rules.department" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.department"
|
||||
placeholder="请输入单位"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="电话" :prop="'insideContactInformationList.' + index + '.phone'" :rules="rules.phone" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.phone"
|
||||
placeholder="请输入电话"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="邮箱" :prop="'insideContactInformationList.' + index + '.email'" :rules="rules.email" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.email"
|
||||
placeholder="请输入邮箱"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份" :prop="'insideContactInformationList.' + index + '.identity'" :rules="rules.identity" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="item.identity"
|
||||
placeholder="请输入身份"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</template>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="drawer-footer">
|
||||
<el-button icon="el-icon-check" type="primary" @click="onSubmit" :loading="isSubmit">提交</el-button>
|
||||
<el-button icon="el-icon-close" @click="onClose">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CustomDatePick from '@/components/CustomFormComponents/DatePicker'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import CustomTextarea from '@/components/CustomFormComponents/Textarea'
|
||||
|
||||
export default {
|
||||
name: "editDrawer",
|
||||
components: {
|
||||
CustomDatePick,
|
||||
CustomFile,
|
||||
CustomTextarea
|
||||
},
|
||||
props: {
|
||||
dict: {
|
||||
type: Object
|
||||
},
|
||||
showDrawer: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '新增'
|
||||
},
|
||||
editForm: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
data (){const rules = {
|
||||
topicName: [
|
||||
{required: true, type: 'string', message: '课题名称不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '课题名称不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
organizer: [
|
||||
{required: true, type: 'string', message: '课题承办单位不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '课题承办单位不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
guidanceUnit: [
|
||||
{type: 'string', max: 500, message: '课题指导单位不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
participatingUnit: [
|
||||
{type: 'string', max: 500, message: '课题参与单位不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
startTime: [
|
||||
{required: true, message: '启动时间不能为空', trigger: 'change'}
|
||||
],
|
||||
topicStatus: [
|
||||
{required: true, type: 'string', message: '课题状态不能为空', trigger: 'change'},
|
||||
],
|
||||
topicCost: [
|
||||
{type: 'string', max: 500, message: '课题费用(万元)不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
meetingName: [
|
||||
{type: 'string', max: 500, message: '会议名称不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
meetingTime: [
|
||||
{type: 'string', max: 500, message: '会议时间不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
meetingAddress: [
|
||||
{type: 'string', max: 500, message: '会议地点不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
participants: [
|
||||
{type: 'string', max: 500, message: '参会人员(内部)不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
meetingContent: [
|
||||
{type: 'string', max: 500, message: '会议主要内容不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
name: [
|
||||
{type: 'string', max: 500, message: '姓名不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
department: [
|
||||
{type: 'string', max: 500, message: '单位不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
phone: [
|
||||
{type: 'string', max: 500, message: '电话不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
email: [
|
||||
{type: 'string', max: 500, message: '邮箱不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
identity: [
|
||||
{type: 'string', max: 500, message: '身份不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
}
|
||||
const form = {
|
||||
// 基础信息
|
||||
topicName: '',
|
||||
organizer: '',
|
||||
guidanceUnit: '',
|
||||
participatingUnit: '',
|
||||
startTime: '',
|
||||
closeTime: '',
|
||||
topicStatus: '',
|
||||
topicCost: '',
|
||||
agreement: '',
|
||||
// 课题组会议
|
||||
meetingList: [
|
||||
{
|
||||
meetingName: '',
|
||||
meetingTime: '',
|
||||
meetingAddress: '',
|
||||
participants: '',
|
||||
meetingContent: '',
|
||||
}
|
||||
],
|
||||
// 课题组资料
|
||||
researchPlan: '',
|
||||
researchFindings: '',
|
||||
other: '',
|
||||
conferenceMaterials: '',
|
||||
// 课题组联系方式
|
||||
topicContactInformationList: [
|
||||
{
|
||||
name: '',
|
||||
department: '',
|
||||
phone: '',
|
||||
email: '',
|
||||
identity: ''
|
||||
}
|
||||
],
|
||||
// 内部资料
|
||||
insideProjectProposalReport: '',
|
||||
insideResearchPlan: '',
|
||||
insideConferenceMaterials: '',
|
||||
insideResearchFindings: '',
|
||||
insideOther: '',
|
||||
// 内部联系方式
|
||||
insideContactInformationList: [
|
||||
{
|
||||
name: '',
|
||||
department: '',
|
||||
phone: '',
|
||||
email: '',
|
||||
identity: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
const topicStatusOptions = [
|
||||
{
|
||||
label: '进行中',
|
||||
value: '进行中'
|
||||
},
|
||||
{
|
||||
label: '已结题',
|
||||
value: '已结题'
|
||||
},
|
||||
]
|
||||
return {
|
||||
rules,
|
||||
form,
|
||||
initForm: { ...form },
|
||||
topicStatusOptions,
|
||||
isSubmit: false,
|
||||
reloadForm: true,
|
||||
api: {
|
||||
add: 'lawss/sarLawsTopic/addLawsTopic',
|
||||
update: 'lawss/sarLawsTopic/updateLawsTopicInfo'
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
showDrawer (val) {
|
||||
if (this.title === '编辑') {
|
||||
this.form = { ...this.editForm }
|
||||
} else {
|
||||
this.resetForm()
|
||||
}
|
||||
},
|
||||
'form.startTime' () {
|
||||
this.setTopicStatus()
|
||||
},
|
||||
'form.closeTime' () {
|
||||
this.setTopicStatus()
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
setTopicStatus () {
|
||||
if (!this.form.startTime) {
|
||||
this.form.topicStatus = ''
|
||||
}
|
||||
if (this.form.startTime && !this.form.closeTime) {
|
||||
this.form.topicStatus = '进行中'
|
||||
}
|
||||
if (this.form.startTime && this.form.closeTime) {
|
||||
this.form.topicStatus = '已结题'
|
||||
}
|
||||
},
|
||||
onClose () {
|
||||
this.$emit('update:showDrawer', false)
|
||||
this.$refs['formRef'].resetFields()
|
||||
this.resetForm()
|
||||
},
|
||||
onSubmit () {
|
||||
this.$refs.formRef.validate(valid => {
|
||||
if (valid) {
|
||||
if (this.title === '新增') {
|
||||
this.$http._postData(this.api.add, this.form).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('新增成功')
|
||||
this.onClose()
|
||||
this.$emit('load')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$http._putData(this.api.update, this.form).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('修改成功')
|
||||
this.onClose()
|
||||
this.$emit('load')
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
add (type) {
|
||||
let item = {}
|
||||
switch (type) {
|
||||
case 'meetingList':
|
||||
item = {
|
||||
meetingName: '',
|
||||
meetingTime: '',
|
||||
meetingAddress: '',
|
||||
participants: '',
|
||||
meetingContent: ''
|
||||
}
|
||||
break
|
||||
case 'topicContactInformationList':
|
||||
case 'insideContactInformationList':
|
||||
item = {
|
||||
name: '',
|
||||
department: '',
|
||||
phone: '',
|
||||
email: '',
|
||||
identity: ''
|
||||
}
|
||||
break
|
||||
}
|
||||
this.form[type] = [...this.form[type], item]
|
||||
},
|
||||
remove (type, index) {
|
||||
let res = []
|
||||
this.form[type].forEach((item, i) => {
|
||||
if (i !== index) {
|
||||
res.push(item)
|
||||
}
|
||||
})
|
||||
this.form[type] = [ ...res ]
|
||||
},
|
||||
resetForm () {
|
||||
this.form = this.initForm
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.drawer-content {
|
||||
padding: 0 19px;
|
||||
overflow-y: auto;
|
||||
flex: auto;
|
||||
}
|
||||
.drawer-footer {
|
||||
width: 100%;
|
||||
padding: 0 20px;
|
||||
height: 70px;
|
||||
line-height: 69px;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
text-align: right;
|
||||
background: #fff;
|
||||
z-index: 999;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,388 @@
|
||||
<template>
|
||||
<div class="root">
|
||||
<!--搜索区-->
|
||||
<div class="search-area">
|
||||
<el-form :modal="searchForm" :inline="true" class="label-input-form">
|
||||
<el-formItem label="课题名称" prop="topicName" class="search-item">
|
||||
<el-input v-model="searchForm.topicName" clearable placeholder="请输入课题名称" :maxlength="100" @keyup.enter.native="onSearch"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="课题承办单位" prop="organizer" class="search-item">
|
||||
<el-input v-model="searchForm.organizer" clearable placeholder="请输入课题承办单位" :maxlength="100" @keyup.enter.native="onSearch"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="启动时间" class="search-item" style="margin-right: 0">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
type="date"
|
||||
clearable
|
||||
:editable="true"
|
||||
placeholder="选择开始时间"
|
||||
v-model="searchForm.startTimeBegin"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-formItem>
|
||||
<el-form-item label="至" label-width="25px" class="search-item">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
type="date"
|
||||
clearable
|
||||
:editable="true"
|
||||
placeholder="选择结束时间"
|
||||
v-model="searchForm.startTimeEnd"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-formItem label="课题状态" prop="topicStatus" class="search-item">
|
||||
<el-select v-model="searchForm.topicStatus"
|
||||
placeholder="请选择课题状态"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in topicStatusOptions"
|
||||
:key="opt.value"
|
||||
:value="!opt.value ? '' : opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
class="common-button-primary"
|
||||
v-btn-permission="'91821ac75391d6e77388f13b68803396'"
|
||||
@click="onSearch">
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="common-button-default"
|
||||
v-btn-permission="'22a0ea67e20998458c519281980a3af2'"
|
||||
@click="onClear">清空
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
v-btn-permission="'e66b04cb8113ff11b4b1a8240846996e'"
|
||||
@click="advancedSearch">高级检索
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--按钮区-->
|
||||
<div class="action-bar">
|
||||
<el-button class="common-button-default export-button"
|
||||
size="mini"
|
||||
title="不勾选时默认导出所有筛选项;勾选时仅导出勾选项"
|
||||
v-btn-permission="'31f23e4d699588b08aa8f81f3e3ea42c'"
|
||||
@click="exportData"><i class="iconfont"></i>导出
|
||||
</el-button>
|
||||
<el-button class="common-button-default in-button"
|
||||
size="mini"
|
||||
v-btn-permission="'0f2b3075261e335f91f9b8e470899aa9'"
|
||||
@click="addImportModal"><i class="iconfont"></i>导入
|
||||
</el-button>
|
||||
<el-button class="common-button-default in-button"
|
||||
size="mini"
|
||||
v-btn-permission="'a136ee2c452b4340c563e3b8d76ba5e6'"
|
||||
@click="handleMoudel"><i class="iconfont"></i>模板下载
|
||||
</el-button>
|
||||
<el-button type="primary"
|
||||
class="common-button-primary add-button"
|
||||
size="mini"
|
||||
v-btn-permission="'46d989bf6115a26d5875843197d3d573'"
|
||||
@click="openDrawer('add')"
|
||||
><i class="el-icon-plus"></i>新增
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<div class="content">
|
||||
<el-table
|
||||
ref="selection"
|
||||
:data="data"
|
||||
tooltip-effect="dark"
|
||||
style="width:100%;height: calc(100% - 57px)"
|
||||
height="string"
|
||||
border
|
||||
class="drag-table"
|
||||
@sort-change="sortChange"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px', fontWeight: 'bold', height: '48px', padding: 0}"
|
||||
:cell-style="{padding: 0}"
|
||||
@selection-change="selectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="topicName"
|
||||
label="课题名称"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="{row, column, $index}">
|
||||
<a class="table-jump" style="color: #2d8cf0" @click="handlePreview(row.id)">{{ row.topicName }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="organizer"
|
||||
label="课题承办单位"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="startTime"
|
||||
label="启动时间"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="topicStatus"
|
||||
label="课题状态"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="isPermission('4930216cff743a9e8235bcc71ec54b34,0cfab6ab180c2d080a8ba9ef8b8449f8') > 0"
|
||||
prop="action"
|
||||
label="操作"
|
||||
align="center"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a class="table-jump" v-btn-permission="'4930216cff743a9e8235bcc71ec54b34'" style="color: #2d8cf0" @click="openDrawer('edit', scope.row)">编辑</a>
|
||||
<a class="table-jump" v-btn-permission="'0cfab6ab180c2d080a8ba9ef8b8449f8'" style="color: #f56c6c;margin-left: 10px" @click="onDelete(scope.row.id)">删除</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination :page="searchForm.page" :total="total" @pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
|
||||
<loading :loading="loading">数据获取中...</loading>
|
||||
</div>
|
||||
<!-- 高级搜索 -->
|
||||
<AdvancedSearch :visible.sync="advancedSearchVisible" :form="advancedSearchForm" @search="onSearch" @resetAdvancedSearchForm="resetAdvancedSearchForm"></AdvancedSearch>
|
||||
<!-- 新增编辑 -->
|
||||
<editDrawer ref="editDrawerRef" :showDrawer.sync="showDrawer" :title="titleDrawer" :editForm="editForm" @load="getData"></editDrawer>
|
||||
<!-- 导入 -->
|
||||
<ImportZip :visible.sync="importModalShowFlag" :action="importExcelUrl"></ImportZip>
|
||||
<!-- 导出 -->
|
||||
<ExportDialog ref="exportDialogRef" @exportName="handleExport"></ExportDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AdvancedSearch from './components/advancedSearch'
|
||||
import editDrawer from "./components/editDrawer";
|
||||
import ImportZip from '@/components/hzwlComponents/importZip'
|
||||
import ExportDialog from '@/components/hzwlComponents/exportDialog'
|
||||
import store from "@/store";
|
||||
|
||||
export default {
|
||||
name: "policyTopics",
|
||||
components: {
|
||||
AdvancedSearch,
|
||||
editDrawer,
|
||||
ImportZip,
|
||||
ExportDialog
|
||||
},
|
||||
data () {
|
||||
const topicStatusOptions = [
|
||||
{
|
||||
label: '进行中',
|
||||
value: '进行中'
|
||||
},
|
||||
{
|
||||
label: '已结题',
|
||||
value: '已结题'
|
||||
},
|
||||
]
|
||||
return {
|
||||
// 搜索
|
||||
searchForm: {},
|
||||
advancedSearchVisible: false,
|
||||
advancedSearchForm: {},
|
||||
topicStatusOptions,
|
||||
// 列表
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
selectedList: [],
|
||||
// 新增编辑
|
||||
showDrawer: false,
|
||||
titleDrawer: '',
|
||||
editForm: void 0,
|
||||
// 导入
|
||||
importModalShowFlag: false,
|
||||
importExcelUrl: '',
|
||||
api: {
|
||||
page: 'lawss/sarLawsTopic/page',
|
||||
delete: 'lawss/sarLawsTopic/deleteLawsTopicById'
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getData()
|
||||
},
|
||||
methods: {
|
||||
// 点击查看
|
||||
handlePreview(id) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'policyTopicsDetail',
|
||||
params: { id }
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
isPermission (value) {
|
||||
let hasCount = 0
|
||||
let set =new Set( value.split(","))
|
||||
let menuList = store.getters.getMenuList
|
||||
if (menuList === '') {
|
||||
return hasCount
|
||||
} else {
|
||||
menuList.map((menu) => {
|
||||
if ( set.has(menu.id)|| value === undefined || value === '') {
|
||||
hasCount++
|
||||
}
|
||||
})
|
||||
}
|
||||
return hasCount
|
||||
},
|
||||
async getData () {
|
||||
this.searchForm.pageSize = this.searchForm.pageSize || this.$store.getters.userInfo.configContent
|
||||
this.searchForm.page = this.searchForm.page || 1
|
||||
let params = { ...this.searchForm, ...this.advancedSearchForm }
|
||||
const res = await this.$http._getData(this.api.page, params, {_this:this,loading: 'loading'})
|
||||
if (res.ok && res.data) {
|
||||
this.data = res.data.list
|
||||
this.total = res.data.count
|
||||
}
|
||||
},
|
||||
onSearch(){
|
||||
this.getData()
|
||||
},
|
||||
onClear () {
|
||||
this.$set(this, 'searchForm', {})
|
||||
this.$set(this, 'advancedSearchForm', {})
|
||||
this.getData()
|
||||
},
|
||||
resetAdvancedSearchForm () {
|
||||
this.$set(this, 'advancedSearchForm', {})
|
||||
this.getData()
|
||||
},
|
||||
// 高级搜索
|
||||
advancedSearch () {
|
||||
this.$set(this, 'advancedSearchForm', {})
|
||||
this.advancedSearchVisible = true
|
||||
},
|
||||
|
||||
// 选择项勾选改变
|
||||
selectionChange (data) {
|
||||
this.selectedList = []
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
this.selectedList.push(data[i].id)
|
||||
}
|
||||
},
|
||||
// 表格排序
|
||||
sortChange({ column, prop, order }) {
|
||||
this.searchForm.sortField = prop
|
||||
this.searchForm.sortMode = 'asc'
|
||||
if (order === 'descending') {
|
||||
this.searchForm.sortMode = 'desc'
|
||||
}
|
||||
if (!order) {
|
||||
this.searchForm.sortField = ''
|
||||
this.searchForm.sortMode = ''
|
||||
}
|
||||
this.getData()
|
||||
},
|
||||
// 分页点击后方法
|
||||
pageChange (page) {
|
||||
this.searchForm.page = page
|
||||
this.getData()
|
||||
},
|
||||
// 分页每页显示数改变后方法
|
||||
pageSizeChange (pageSize) {
|
||||
this.searchForm.pageSize = pageSize
|
||||
this.getData()
|
||||
},
|
||||
|
||||
// 导出
|
||||
exportData () {
|
||||
this.$refs.exportDialogRef.openModel()
|
||||
},
|
||||
handleExport (exportName) {
|
||||
const params = {
|
||||
...this.form,
|
||||
exportName: exportName,
|
||||
exportIds: this.selectedList.join(',')
|
||||
}
|
||||
let query = '?'
|
||||
for(let i in params){
|
||||
if (params[i] && params[i]!=='') {
|
||||
query = query + i + '=' + params[i] + '&'
|
||||
}
|
||||
}
|
||||
query = query.slice(0,-1)
|
||||
window.open('/api/lawss/sarLawsTopic/exportLawsTopicInfo' + query)
|
||||
this.$refs.exportDialogRef.cancel()
|
||||
this.$message.success('导出信息成功')
|
||||
},
|
||||
// 导入
|
||||
addImportModal() {
|
||||
this.importModalShowFlag = true
|
||||
this.importExcelUrl = '/api/lawss/sarLawsTopic/importLawsTopicInfo'
|
||||
},
|
||||
// 模板下载
|
||||
handleMoudel(){
|
||||
window.open('/api/lawss/sarLawsTopic/exportTemplateFile?fileName=政策课题导入模板')
|
||||
},
|
||||
// 新增编辑
|
||||
openDrawer (type, row) {
|
||||
this.showDrawer = false
|
||||
switch (type) {
|
||||
case 'add':
|
||||
this.titleDrawer = '新增'
|
||||
break
|
||||
case 'edit':
|
||||
this.titleDrawer = '编辑'
|
||||
this.$set(this, 'editForm', row)
|
||||
break
|
||||
}
|
||||
this.$nextTick(()=>{
|
||||
this.showDrawer = true
|
||||
})
|
||||
},
|
||||
onDelete (id) {
|
||||
this.$confirm('确认删除这些数据?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
}).then(() => {
|
||||
this.$http._deleteData(this.api.delete, { id }).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('删除成功')
|
||||
this.getData()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.root{
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.content{
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
+410
@@ -0,0 +1,410 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<!-- 搜索区 -->
|
||||
<div class="search-area">
|
||||
<el-form :modal="searchForm" :inline="true" class="label-input-form">
|
||||
<el-formItem label="1级资料分类" prop="firstType" class="search-item">
|
||||
<el-select v-model="searchForm.firstType"
|
||||
placeholder="请选择1级资料分类"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in dict.firstMaterialType"
|
||||
:key="opt.value"
|
||||
:value="!opt.value ? '' : opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
<el-formItem label="2级资料分类" prop="secondType" class="search-item">
|
||||
<el-select v-model="searchForm.secondType"
|
||||
placeholder="请选择2级资料分类"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in dict.secondMaterialType"
|
||||
:key="opt.value"
|
||||
:value="!opt.value ? '' : opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
<el-formItem label="资料名称" prop="name" class="search-item">
|
||||
<el-input v-model="searchForm.name" clearable placeholder="请输入资料名称" :maxlength="100" @keyup.enter.native="onSearch"/>
|
||||
</el-formItem>
|
||||
<el-formItem label="上传时间" class="search-item" style="margin-right: 0">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
type="date"
|
||||
clearable
|
||||
:editable="true"
|
||||
placeholder="选择开始时间"
|
||||
v-model="searchForm.uploadTimeBegin"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-formItem>
|
||||
<el-form-item label="至" label-width="25px" class="search-item">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
type="date"
|
||||
clearable
|
||||
:editable="true"
|
||||
placeholder="选择结束时间"
|
||||
v-model="searchForm.uploadTimeEnd"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
class="common-button-primary"
|
||||
v-btn-permission="'17af98fabcda36aae6a8c3915f48b31a'"
|
||||
@click="onSearch">
|
||||
查询
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="common-button-default"
|
||||
v-btn-permission="'aa73f0af9e46aed8bb9fba7340a6b739'"
|
||||
@click="onClear">清空
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--按钮区-->
|
||||
<div class="action-bar">
|
||||
<el-button class="common-button-default export-button"
|
||||
size="mini"
|
||||
title="不勾选时默认导出所有筛选项;勾选时仅导出勾选项"
|
||||
v-btn-permission="'cca3e020321a3443f38435fd86bb62f0'"
|
||||
@click="exportData"><i class="iconfont"></i>导出
|
||||
</el-button>
|
||||
<el-button class="common-button-default in-button"
|
||||
size="mini"
|
||||
v-btn-permission="'11f125d942b845db01d077a8021bac10'"
|
||||
@click="addImportModal"><i class="iconfont"></i>导入
|
||||
</el-button>
|
||||
<el-button class="common-button-default in-button"
|
||||
size="mini"
|
||||
v-btn-permission="'be26878aa645671c5b16b38c2d44b4eb'"
|
||||
@click="handleMoudel"><i class="iconfont"></i>模板下载
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
class="common-button-primary add-button"
|
||||
v-btn-permission="'3c0bc511645234732bc7e4ea6b7103c6'"
|
||||
@click="openDrawer('add')">
|
||||
<i class="el-icon-plus"></i>新增
|
||||
</el-button>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<div class="content">
|
||||
<el-table
|
||||
ref="tableRef"
|
||||
:data="data"
|
||||
tooltip-effect="dark"
|
||||
style="width:100%;height: calc(100% - 57px)"
|
||||
height="string"
|
||||
border
|
||||
class="drag-table"
|
||||
@sort-change="sortChange"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px', fontWeight: 'bold', height: '48px', padding: 0}"
|
||||
:cell-style="{padding: 0}"
|
||||
@selection-change="selectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="firstTypeName"
|
||||
label="1级资料类别"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="secondTypeName"
|
||||
label="2级资料类别"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="name"
|
||||
label="资料名称"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="{row, column, $index}">
|
||||
<a class="table-jump" style="color: #2d8cf0" @click="handlePreview(row.id)">{{ row.name }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="uploadTime"
|
||||
label="上传时间"
|
||||
align="center"
|
||||
sortable="custom"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="isPermission('5ba6c5466021b86fc9d00b25fd46d5c6,ead39a6339efe11b1077982ff12fd3cd') > 0"
|
||||
prop="action"
|
||||
label="操作"
|
||||
align="center"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a class="table-jump" v-btn-permission="'5ba6c5466021b86fc9d00b25fd46d5c6'" style="color: #2d8cf0" @click="openDrawer('edit', scope.row)">编辑</a>
|
||||
<a class="table-jump" v-btn-permission="'ead39a6339efe11b1077982ff12fd3cd'" style="color: #f56c6c;margin-left: 10px" @click="onDelete(scope.row.id)">删除</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination :page="searchForm.page" :total="total" @pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
|
||||
<loading :loading="loading">数据获取中...</loading>
|
||||
</div>
|
||||
<!-- 新增编辑 -->
|
||||
<editDrawer ref="editDrawerRef" :dict="dict" @load="getData"></editDrawer>
|
||||
<!-- 导入 -->
|
||||
<ImportZip :visible.sync="importModalShowFlag" :action="importExcelUrl"></ImportZip>
|
||||
<!-- 导出 -->
|
||||
<ExportDialog ref="exportDialogRef" @exportName="handleExport"></ExportDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import editDrawer from "./editDrawer";
|
||||
import ImportZip from '@/components/hzwlComponents/importZip'
|
||||
import ExportDialog from '@/components/hzwlComponents/exportDialog'
|
||||
import store from "@/store";
|
||||
|
||||
export default {
|
||||
name: "RegulatoryMaterialsMain",
|
||||
components: {
|
||||
editDrawer,
|
||||
ImportZip,
|
||||
ExportDialog
|
||||
},
|
||||
props: {
|
||||
treeNodeId: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
url: {
|
||||
page: 'lawss/sarLawsInformation/page',
|
||||
delete: 'lawss/sarLawsInformation/deleteLawsInformation',
|
||||
},
|
||||
searchForm: {},
|
||||
dict: {},
|
||||
// 列表
|
||||
data: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
selectedList: [],
|
||||
// 新增编辑
|
||||
showDrawer: false,
|
||||
// 导入
|
||||
importModalShowFlag: false,
|
||||
importExcelUrl: '',
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getDicTypeListCode()
|
||||
this.getData()
|
||||
},
|
||||
watch: {
|
||||
treeNodeId: {
|
||||
handler: function (val, oldVal) {
|
||||
this.getData()
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
isPermission (value) {
|
||||
let hasCount = 0
|
||||
let set =new Set( value.split(","))
|
||||
let menuList = store.getters.getMenuList
|
||||
if (menuList === '') {
|
||||
return hasCount
|
||||
} else {
|
||||
menuList.map((menu) => {
|
||||
if ( set.has(menu.id)|| value === undefined || value === '') {
|
||||
hasCount++
|
||||
}
|
||||
})
|
||||
}
|
||||
return hasCount
|
||||
},
|
||||
userToId (userStr) {
|
||||
return (userStr && userStr !== '') ? userStr.split(',').map(item => item.split('(')[1].split(')')[0]) : []
|
||||
},
|
||||
hasViewPermission(row) {
|
||||
const userId = this.$store.getters.userInfo.userId
|
||||
// 未设置可查看者 所有用户 可查看
|
||||
if (!row.viewableBy || row.viewableBy === '') {
|
||||
return true
|
||||
} else {
|
||||
// 设置了查看者 可查看者可查看
|
||||
if (this.userToId(row.viewableBy).find(item => item === userId)) {
|
||||
return true
|
||||
}
|
||||
// 可下载者需要查看权限
|
||||
// 未设置可下载者 创建人和审批人可查看
|
||||
if (!row.downloadableBy || row.downloadableBy === '') {
|
||||
if (this.userToId(row.createAndApproveBy).find(item => item === userId)) {
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
// 设置可下载者 可下载者可查看
|
||||
if (this.userToId(row.downloadableBy).find(item => item === userId)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
},
|
||||
|
||||
getDicTypeListCode () {
|
||||
this.$http._getData('sys/dictype/getDicTypeListCode').then(res => {
|
||||
this.dict = { ...res.data }
|
||||
})
|
||||
},
|
||||
async getData () {
|
||||
this.searchForm.pageSize = this.searchForm.pageSize || this.$store.getters.userInfo.configContent
|
||||
this.searchForm.page = this.searchForm.page || 1
|
||||
this.searchForm.treeNodeId = this.treeNodeId
|
||||
let params = { ...this.searchForm}
|
||||
const res = await this.$http._getData(this.url.page, params, {_this:this,loading: 'loading'})
|
||||
if (res.ok && res.data) {
|
||||
this.data = res.data.list
|
||||
this.total = res.data.count
|
||||
}
|
||||
},
|
||||
onSearch(){
|
||||
this.getData()
|
||||
},
|
||||
onClear () {
|
||||
this.$set(this, 'searchForm', {})
|
||||
this.getData()
|
||||
},
|
||||
|
||||
// 选择项勾选改变
|
||||
selectionChange (data) {
|
||||
this.selectedList = []
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
this.selectedList.push(data[i].id)
|
||||
}
|
||||
},
|
||||
// 表格排序
|
||||
sortChange({ column, prop, order }) {
|
||||
this.searchForm.sortField = prop
|
||||
this.searchForm.sortMode = 'asc'
|
||||
if (order === 'descending') {
|
||||
this.searchForm.sortMode = 'desc'
|
||||
}
|
||||
if (!order) {
|
||||
this.searchForm.sortField = ''
|
||||
this.searchForm.sortMode = ''
|
||||
}
|
||||
this.getData()
|
||||
},
|
||||
// 分页点击后方法
|
||||
pageChange (page) {
|
||||
this.searchForm.page = page
|
||||
this.getData()
|
||||
},
|
||||
// 分页每页显示数改变后方法
|
||||
pageSizeChange (pageSize) {
|
||||
this.searchForm.pageSize = pageSize
|
||||
this.getData()
|
||||
},
|
||||
// 点击查看
|
||||
handlePreview(id) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'regulatoryMaterialsDetail',
|
||||
params: { id }
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
|
||||
// 导出
|
||||
exportData () {
|
||||
this.$refs.exportDialogRef.openModel()
|
||||
},
|
||||
handleExport (exportName) {
|
||||
const params = {
|
||||
...this.form,
|
||||
exportName: exportName,
|
||||
userId: this.$store.getters.userInfo.userId,
|
||||
exportIds: this.selectedList.join(',')
|
||||
}
|
||||
let query = '?'
|
||||
for(let i in params){
|
||||
if (params[i] && params[i]!=='') {
|
||||
query = query + i + '=' + params[i] + '&'
|
||||
}
|
||||
}
|
||||
query = query.slice(0,-1)
|
||||
window.open('/api/lawss/sarLawsInformation/exportLawsInformationInfo' + query)
|
||||
this.$refs.exportDialogRef.cancel()
|
||||
this.$message.success('导出信息成功')
|
||||
},
|
||||
// 导入
|
||||
addImportModal() {
|
||||
this.importModalShowFlag = true
|
||||
this.importExcelUrl = '/api/lawss/sarLawsInformation/importLawsInformationInfo'
|
||||
},
|
||||
// 模板下载
|
||||
handleMoudel(){
|
||||
window.open('/api/lawss/sarLawsInformation/exportTemplateFile?fileName=政策法规资料导入模板')
|
||||
},
|
||||
// 新增编辑
|
||||
openDrawer (type, row) {
|
||||
this.showDrawer = false
|
||||
switch (type) {
|
||||
case 'add':
|
||||
this.$refs.editDrawerRef.add(this.treeNodeId)
|
||||
break
|
||||
case 'edit':
|
||||
this.$refs.editDrawerRef.edit(row.id)
|
||||
break
|
||||
}
|
||||
},
|
||||
onDelete (id) {
|
||||
this.$confirm('确认删除这些数据?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
}).then(() => {
|
||||
this.$http._deleteData(this.url.delete, { id }).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('删除成功')
|
||||
this.getData()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.main{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
.content{
|
||||
flex: 1;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
+344
@@ -0,0 +1,344 @@
|
||||
<template>
|
||||
<div style="width: 100%" class="wrapper">
|
||||
<el-input
|
||||
placeholder="输入树状图体系"
|
||||
v-model="filterText">
|
||||
</el-input>
|
||||
<div class="tree">
|
||||
<el-card style="height: 100%;padding-right: 120px;overflow-y:auto">
|
||||
<el-tree
|
||||
ref="tree"
|
||||
node-key="id"
|
||||
class="tree-line"
|
||||
icon-class="icon-tree"
|
||||
:expand-on-click-node="false"
|
||||
:indent="0"
|
||||
:props="props"
|
||||
:data="treeList"
|
||||
:default-expanded-keys="['1716336011358269441']"
|
||||
highlight-current
|
||||
@node-click="treeClick"
|
||||
:filter-node-method="filterNode">
|
||||
<span class="custom-tree-node" slot-scope="{ node, data }" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
|
||||
<span :class="data.children.length !== 0 ? 'is-show' : 'is-leaf-none'"></span>
|
||||
<span style="font-size:12px"> {{ node.label }} </span>
|
||||
<span>
|
||||
<el-button
|
||||
type="text"
|
||||
size="mini"
|
||||
v-show="data.show"
|
||||
v-btn-permission="'a7fee733685bf16abb9dffb4e423d632'"
|
||||
@click="() => append(data)">
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
size="mini"
|
||||
v-show="data.show"
|
||||
v-btn-permission="'1e96ef8234a8f7a50cafab999e2e7bdf'"
|
||||
@click="() => update(data)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="text"
|
||||
size="mini"
|
||||
v-show="data.showDel"
|
||||
v-btn-permission="'b6fa8bd927d679c28109d1c72f0d1d72'"
|
||||
@click="() => remove(node, data)">
|
||||
删除
|
||||
</el-button>
|
||||
</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</el-card>
|
||||
</div>
|
||||
<el-drawer
|
||||
:wrapperClosable="false"
|
||||
:title="DrawerTitle"
|
||||
:visible.sync="DrawerVisible"
|
||||
size="800px"
|
||||
:before-close="handleCancel"
|
||||
label-width="130px"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<el-form :model="DrawerModel"
|
||||
ref="DrawerModelRef"
|
||||
:rules="DrawerRules"
|
||||
class="label-input-form"
|
||||
label-width="130px">
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-form-item label="目录名称" prop="name" class="add-form-item">
|
||||
<el-input v-model.trim="DrawerModel.name" placeholder="请输入目录名称" clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col>
|
||||
<el-form-item label="目录顺序" prop="sort" class="add-form-item">
|
||||
<el-input v-model.number="DrawerModel.sort"
|
||||
number
|
||||
placeholder="请输入目录顺序"
|
||||
:maxlength="4"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button
|
||||
class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
type="primary"
|
||||
@click="handleSubmit">提交
|
||||
</el-button>
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-close"
|
||||
@click="handleCancel">取消
|
||||
</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "RegulatoryMaterialsTree",
|
||||
data(){
|
||||
return {
|
||||
treeList: [],
|
||||
filterText: '',
|
||||
props: {
|
||||
label: 'name',
|
||||
children: 'children'
|
||||
},
|
||||
|
||||
// drawer
|
||||
DrawerTitle: '',
|
||||
DrawerVisible: false,
|
||||
DrawerModel: {
|
||||
name: '',
|
||||
parentId: '',
|
||||
sort: ''
|
||||
},
|
||||
DrawerRules: {
|
||||
name: [
|
||||
{required: true, message: '目录名称不能为空', trigger: 'change'}
|
||||
],
|
||||
sort: [
|
||||
{required: true, message: '目录顺序不能为空', trigger: 'change'}
|
||||
]
|
||||
},
|
||||
|
||||
url: {
|
||||
getTree: 'lawss/sarLawsInformation/tree/getTree',
|
||||
addTreeNode: 'lawss/sarLawsInformation/tree/addTreeNode',
|
||||
updateTreeNode: 'lawss/sarLawsInformation/tree/updateTreeNode',
|
||||
deleteTreeNode: 'lawss/sarLawsInformation/tree/deleteTreeNode',
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getMenuList()
|
||||
},
|
||||
watch: {
|
||||
filterText(val) {
|
||||
this.$refs.tree.filter(val);
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
getMenuList () {
|
||||
this.$http._getData(this.url.getTree).then(res => {
|
||||
if (res.ok) {
|
||||
this.treeList = res.data
|
||||
this.$emit('treeClick', res.data[0])
|
||||
}
|
||||
})
|
||||
},
|
||||
filterNode(value, data) {
|
||||
if (!value) return true;
|
||||
return data.menuName.indexOf(value) !== -1;
|
||||
},
|
||||
treeClick (treeNode) {
|
||||
this.$emit('treeClick', treeNode)
|
||||
},
|
||||
append(data) {
|
||||
this.DrawerTitle = '新增目录'
|
||||
this.DrawerModel.name = ''
|
||||
this.DrawerModel.parentId = data.id
|
||||
this.DrawerVisible = true
|
||||
},
|
||||
update(data) {
|
||||
this.DrawerModel = data
|
||||
this.DrawerTitle = '编辑目录'
|
||||
this.DrawerVisible = true
|
||||
},
|
||||
remove(node, data) {
|
||||
this.$confirm(data.children.length > 0 ? '该节点下有记录,是否删除?' : '是否删除菜单', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
cancelButtonText: '取消',
|
||||
roundButton: true,
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.$http._deleteData(this.url.deleteTreeNode, { id: data.id }).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('删除成功')
|
||||
this.getMenuList()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}).catch(() => {
|
||||
this.$message.info('已取消删除')
|
||||
})
|
||||
},
|
||||
// 树节点鼠标移入移出
|
||||
mouseenter(data){
|
||||
this.$set(data, 'show', true)
|
||||
if(data.parentId !== null){
|
||||
this.$set(data, 'showDel', true)
|
||||
}
|
||||
},
|
||||
mouseleave(data){
|
||||
this.$set(data, 'show', false)
|
||||
this.$set(data, 'showDel', false)
|
||||
},
|
||||
|
||||
handleCancel () {
|
||||
this.$refs.DrawerModelRef.resetFields()
|
||||
this.DrawerModel = {
|
||||
name: '',
|
||||
parentId: '',
|
||||
sort: ''
|
||||
}
|
||||
this.DrawerVisible = false
|
||||
},
|
||||
handleSubmit () {
|
||||
this.$refs.DrawerModelRef.validate(valid => {
|
||||
if (valid) {
|
||||
let method = this.DrawerTitle === '新增目录' ? '_postData' : '_putData'
|
||||
let url = this.DrawerTitle === '新增目录' ? this.url.addTreeNode : this.url.updateTreeNode
|
||||
this.$http[method](url, this.DrawerModel).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
this.getMenuList()
|
||||
this.handleCancel()
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
/deep/ .icon-tree {
|
||||
margin:0 5px 0 10px;
|
||||
position:relative;
|
||||
background:url('~@/assets/images/shangqi/img/tree-add.png');
|
||||
background-size:100% 100%;
|
||||
}
|
||||
/deep/ .expanded{
|
||||
background:url('~@/assets/images/shangqi/img/tree-sub.png');
|
||||
background-size:100% 100%;
|
||||
}
|
||||
/deep/ .is-leaf{
|
||||
background-image:none;
|
||||
background-size:100% 100%;
|
||||
}
|
||||
/deep/ .is-leaf-none{
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
background: url('~@/assets/images/shangqi/img/none-file-new.png');
|
||||
background-size:100% 100%;
|
||||
}
|
||||
/deep/ .is-show{
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
background:url('~@/assets/images/shangqi/img/tree.png');
|
||||
background-size:100% 100%;
|
||||
}
|
||||
|
||||
/deep/.tree-line{
|
||||
.el-tree-node {
|
||||
position: relative;
|
||||
padding-left: 0px; // 缩进量
|
||||
line-height: 30px;
|
||||
}
|
||||
.el-tree-node__children {
|
||||
padding-left: 16px; // 缩进量
|
||||
}
|
||||
|
||||
// 竖线
|
||||
.el-tree-node::before {
|
||||
content: "";
|
||||
height: 100%;
|
||||
width: 1px;
|
||||
position: absolute;
|
||||
left: -3px;
|
||||
top: -26px;
|
||||
border-width: 1px;
|
||||
border-left: 1px dashed #858990e0;
|
||||
}
|
||||
// 当前层最后一个节点的竖线高度固定
|
||||
.el-tree-node:last-child::before {
|
||||
height: 38px; // 可以自己调节到合适数值
|
||||
}
|
||||
|
||||
// 横线
|
||||
.el-tree-node::after {
|
||||
content: "";
|
||||
width: 11px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
left: -3px;
|
||||
top: 12px;
|
||||
border-width: 1px;
|
||||
border-top: 1px dashed #858990e0;
|
||||
}
|
||||
|
||||
// 去掉最顶层的虚线,放最下面样式才不会被上面的覆盖了
|
||||
& > .el-tree-node::after {
|
||||
border-top: none;
|
||||
}
|
||||
& > .el-tree-node::before {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
// 展开关闭的icon
|
||||
.el-tree-node__expand-icon{
|
||||
font-size: 16px;
|
||||
// 叶子节点(无子节点)
|
||||
&.is-leaf{
|
||||
color: transparent;
|
||||
// display: none; // 也可以去掉
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style scoped lang="less">
|
||||
.tree{
|
||||
/deep/ .el-card__body {
|
||||
padding: 0 !important;
|
||||
}
|
||||
.el-card {
|
||||
width: 500px;
|
||||
min-width: 2000px;
|
||||
max-width: 100%;
|
||||
/* min-width: min-content;*/
|
||||
}
|
||||
height: 95%;
|
||||
width: 95%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,352 @@
|
||||
<template>
|
||||
<el-drawer :title="title"
|
||||
:visible="showDrawer"
|
||||
:wrapperClosable="false"
|
||||
@close="onClose"
|
||||
size="1050px">
|
||||
<div class="drawer-content">
|
||||
<el-form
|
||||
v-if="showDrawer && reloadForm"
|
||||
ref="formRef"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-col :span="24"><div class="divider-line">基础信息</div></el-col>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="firstType" label-width="150px" class="add-form-item">
|
||||
<template slot="label">1级资料分类</template>
|
||||
<el-select :value="stringToArr(form.firstType)"
|
||||
@change="handleChange($event,'firstType')"
|
||||
multiple
|
||||
placeholder="请选择1级资料分类"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in dict.firstMaterialType"
|
||||
:key="opt.value"
|
||||
:value="opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="thirdType" label-width="150px" class="add-form-item">
|
||||
<template slot="label">3级资料分类</template>
|
||||
<el-select :value="stringToArr(form.thirdType)"
|
||||
@change="handleChange($event,'thirdType')"
|
||||
multiple
|
||||
placeholder="请选择3级资料分类"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in dict.thirdMaterialType"
|
||||
:key="opt.value"
|
||||
:value="opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="资料名称" prop="name" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.name"
|
||||
placeholder="请输入资料名称"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="作者" prop="author" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.author"
|
||||
placeholder="请输入作者"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="资料说明" prop="description" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.description"
|
||||
placeholder="请输入资料说明"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="可查看者" prop="viewableBy" label-width="150px" class="add-form-item">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="form.viewableBy"
|
||||
placeholder="选择可查看者"
|
||||
readonly
|
||||
@click.native="choice( '选择可查看者', form.viewableBy)">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="secondType" label-width="150px" class="add-form-item">
|
||||
<template slot="label">2级资料分类</template>
|
||||
<el-select :value="stringToArr(form.secondType)"
|
||||
@change="handleChange($event,'secondType')"
|
||||
multiple
|
||||
placeholder="请选择2级资料分类"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in dict.secondMaterialType"
|
||||
:key="opt.value"
|
||||
:value="opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="fourthType" label-width="150px" class="add-form-item">
|
||||
<template slot="label">4级资料分类</template>
|
||||
<el-select :value="stringToArr(form.fourthType)"
|
||||
@change="handleChange($event,'fourthType')"
|
||||
multiple
|
||||
placeholder="请选择4级资料分类"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in dict.fourthMaterialType"
|
||||
:key="opt.value"
|
||||
:value="opt.value" :label="opt.label"
|
||||
>
|
||||
{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="资料归属部门" prop="department" label-width="150px" class="add-form-item">
|
||||
<el-input v-model="form.department"
|
||||
placeholder="请输入资料归属部门"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<CustomDatePick
|
||||
:config="{
|
||||
attrName: '上传时间',
|
||||
attrField: 'uploadTime'
|
||||
}"
|
||||
v-model="form.uploadTime"
|
||||
disabled
|
||||
placeholder="系统自动生成"
|
||||
></CustomDatePick>
|
||||
<customFile
|
||||
:config="{
|
||||
attrName: '资料文件',
|
||||
attrField: 'informationFile'
|
||||
}"
|
||||
v-model="form.informationFile"
|
||||
:allowType="['.pdf', '.PDF', '.doc','.DOC', '.docx','.DOCX', '.pptx', '.PPTX', '.ppt', '.PPT', '.xls','.XLS', '.xlsx','.XLSX', '.pdg', '.PDG', '.zip']"
|
||||
:size="100"
|
||||
></customFile>
|
||||
<el-form-item label="可下载者" prop="viewableBy" label-width="150px" class="add-form-item">
|
||||
<el-input
|
||||
clearable
|
||||
v-model="form.downloadableBy"
|
||||
placeholder="选择可下载者"
|
||||
readonly
|
||||
@click.native="choice( '选择可下载者', form.downloadableBy)">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="drawer-footer">
|
||||
<el-button icon="el-icon-check" type="primary" @click="onSubmit" :loading="isSubmit">提交</el-button>
|
||||
<el-button icon="el-icon-close" @click="onClose">取消</el-button>
|
||||
</div>
|
||||
<Role-tree
|
||||
:is-title="choiceTitle"
|
||||
:is-visible.sync="modalShowRoleFlag"
|
||||
@checkedRole="checkedRole"
|
||||
:nodeList="nodeList"
|
||||
></Role-tree>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CustomDatePick from '@/components/CustomFormComponents/DatePicker'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import SelectMultipleFormItem from '@/components/hzwlComponents/SelectMultipleFormItem'
|
||||
|
||||
export default {
|
||||
name: "editDrawer",
|
||||
components: {
|
||||
CustomDatePick,
|
||||
CustomFile,
|
||||
SelectMultipleFormItem
|
||||
},
|
||||
props: {
|
||||
dict: {
|
||||
type: Object
|
||||
},
|
||||
},
|
||||
data (){
|
||||
const rules = {
|
||||
firstType: [
|
||||
{required: true, message: '1级资料分类不能为空', trigger: 'change'}
|
||||
],
|
||||
secondType: [
|
||||
{required: true, message: '2级资料分类不能为空', trigger: 'change'}
|
||||
],
|
||||
thirdType: [
|
||||
{required: true, message: '3级资料分类不能为空', trigger: 'change'}
|
||||
],
|
||||
fourthType: [
|
||||
{required: true, message: '4级资料分类不能为空', trigger: 'change'}
|
||||
],
|
||||
name: [
|
||||
{required: true, type: 'string', message: '资料名称不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '资料名称不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
department: [
|
||||
{required: true, type: 'string', message: '资料归属部门不能为空', trigger: 'change'},
|
||||
{type: 'string', max: 500, message: '资料归属部门不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
author: [
|
||||
{type: 'string', max: 500, message: '作者不能超过500个字符', trigger: 'change'}
|
||||
],
|
||||
}
|
||||
const form = {
|
||||
// 基础信息
|
||||
firstType: '',
|
||||
secondType: '',
|
||||
thirdType: '',
|
||||
fourthType: '',
|
||||
name: '',
|
||||
department: '',
|
||||
author: '',
|
||||
uploadTime: '',
|
||||
description: '',
|
||||
informationFile: '',
|
||||
viewableBy: '',
|
||||
downloadableBy: '',
|
||||
}
|
||||
return {
|
||||
title: '',
|
||||
showDrawer: false,
|
||||
rules,
|
||||
form,
|
||||
initForm: { ...form },
|
||||
isSubmit: false,
|
||||
reloadForm: true,
|
||||
// 人员选择
|
||||
choiceTitle: '',
|
||||
modalShowRoleFlag: false,
|
||||
nodeList: [],
|
||||
url: {
|
||||
add: 'lawss/sarLawsInformation/addLawsInformation',
|
||||
update: 'lawss/sarLawsInformation/updateLawsInformationInfo',
|
||||
getLawsInformationInfo: 'lawss/sarLawsInformation/getLawsInformationInfo'
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
stringToArr (str) {
|
||||
if (str && this.value !== '') {
|
||||
return str.split(',')
|
||||
} else {
|
||||
return []
|
||||
}
|
||||
},
|
||||
handleChange (val, field) {
|
||||
this.form[field] = val.join(',')
|
||||
},
|
||||
add (treeNodeId) {
|
||||
this.form = { ...this.initForm }
|
||||
this.form.treeNodeId = treeNodeId
|
||||
this.title = '新增'
|
||||
this.showDrawer = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['formRef'].resetFields()
|
||||
})
|
||||
},
|
||||
edit (id) {
|
||||
this.title = '修改'
|
||||
this.showDrawer = true
|
||||
this.$http._getData(this.url.getLawsInformationInfo, { id }).then(res => {
|
||||
if (res.ok) {
|
||||
this.$set(this, 'form', res.data)
|
||||
this.reloadForm = false
|
||||
this.$nextTick(() => {
|
||||
this.reloadForm = true
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
onClose () {
|
||||
this.showDrawer = false
|
||||
},
|
||||
onSubmit () {
|
||||
this.$refs.formRef.validate(valid => {
|
||||
if (valid) {
|
||||
if (this.title === '新增') {
|
||||
this.$http._postData(this.url.add, this.form, { _this: this, loading: 'isSubmit' }).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('新增成功')
|
||||
this.onClose()
|
||||
this.$emit('load')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$http._putData(this.url.update, this.form,{ _this: this, loading: 'isSubmit' }).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('修改成功')
|
||||
this.onClose()
|
||||
this.$emit('load')
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
choice(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(',')
|
||||
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
|
||||
})
|
||||
let field = ''
|
||||
switch (this.choiceTitle) {
|
||||
case '选择可查看者':
|
||||
field = 'viewableBy'
|
||||
break
|
||||
case '选择可下载者':
|
||||
field = 'downloadableBy'
|
||||
break
|
||||
}
|
||||
this.$set(this.form, field, nameList)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.drawer-content {
|
||||
padding: 0 19px;
|
||||
overflow-y: auto;
|
||||
flex: auto;
|
||||
}
|
||||
.drawer-footer {
|
||||
width: 100%;
|
||||
padding: 0 20px;
|
||||
height: 70px;
|
||||
line-height: 69px;
|
||||
border-top: 1px solid #e8e8e8;
|
||||
text-align: right;
|
||||
background: #fff;
|
||||
z-index: 999;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,121 @@
|
||||
<template>
|
||||
<div id="regulatoryMaterials">
|
||||
<!--左侧树-->
|
||||
<div id="left" class="tree-content" :class="{ 'tree-closed': sideClose }" >
|
||||
<!-- 政策树 -->
|
||||
<RegulatoryMaterialsTree ref="RegulatoryMaterialsTreeRef" @treeClick="treeClick"></RegulatoryMaterialsTree>
|
||||
<div class="tree-collapse" @click="treeCollapse" :class="{ 'tree-close': sideClose }">
|
||||
<!--切换折叠样式-->
|
||||
<i class="el-icon-arrow-left" v-if="sideClose === false"></i>
|
||||
<i class="el-icon-arrow-right" v-if="sideClose === true"></i>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 可拖拽 -->
|
||||
<div id="resize"></div>
|
||||
<div id="right">
|
||||
<RegulatoryMaterialsMain :treeNodeId="treeNodeId"></RegulatoryMaterialsMain>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import RegulatoryMaterialsTree from './components/RegulatoryMaterialsTree'
|
||||
import RegulatoryMaterialsMain from './components/RegulatoryMaterialsMain'
|
||||
|
||||
export default {
|
||||
name: "regulatoryMaterials",
|
||||
data() {
|
||||
return {
|
||||
sideClose: false, // 边栏收展状态
|
||||
treeNodeId: ''
|
||||
}
|
||||
},
|
||||
components: {
|
||||
RegulatoryMaterialsTree,
|
||||
RegulatoryMaterialsMain
|
||||
},
|
||||
mounted() {
|
||||
this.dragControllerLR()
|
||||
},
|
||||
methods: {
|
||||
treeClick (treeNode) {
|
||||
// 点击左侧树 重新获取数据
|
||||
this.treeNodeId = treeNode.id || ''
|
||||
// this.$nextTick(() => {
|
||||
// this.$refs.policyTableRef.treeClickGetBussionStandTable(treeNode.id || '')
|
||||
// })
|
||||
},
|
||||
|
||||
|
||||
|
||||
// 左侧树收展
|
||||
treeCollapse () {
|
||||
this.sideClose = !this.sideClose
|
||||
},
|
||||
|
||||
// 左右拖动事件
|
||||
dragControllerLR: function() {
|
||||
var resize = document.getElementById("resize");
|
||||
var left = document.getElementById("left");
|
||||
var right = document.getElementById("right");
|
||||
var box = document.getElementById("regulatoryMaterials");
|
||||
resize.onmousedown = function(e){
|
||||
var startX = e.clientX;
|
||||
resize.left = resize.offsetLeft;
|
||||
document.onmousemove = function(e){
|
||||
var endX = e.clientX;
|
||||
|
||||
var moveLen = resize.left + (endX - startX);
|
||||
var maxT = box.clientWidth - resize.offsetWidth;
|
||||
if(moveLen<150) moveLen = 150;
|
||||
if(moveLen>maxT-150) moveLen = maxT-150;
|
||||
|
||||
resize.style.left = moveLen;
|
||||
left.style.width = moveLen + "px";
|
||||
right.style.width = (box.clientWidth - moveLen - 5) + "px";
|
||||
}
|
||||
document.onmouseup = function(evt){
|
||||
document.onmousemove = null;
|
||||
document.onmouseup = null;
|
||||
resize.releaseCapture && resize.releaseCapture();
|
||||
}
|
||||
resize.setCapture && resize.setCapture();
|
||||
return false;
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
#regulatoryMaterials {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
position: relative;
|
||||
.tree-content {
|
||||
position: relative;
|
||||
background: #fff;
|
||||
.tree-collapse {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
#left{
|
||||
width: 20%;
|
||||
height:100%;
|
||||
float:left;
|
||||
}
|
||||
|
||||
#resize{
|
||||
width:5px;
|
||||
height:100%;
|
||||
cursor: w-resize;
|
||||
float:left;
|
||||
}
|
||||
|
||||
#right{
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -115,6 +115,15 @@
|
||||
:loading="submitLoading"
|
||||
v-if="showOver2"
|
||||
>驳回</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
class="common-button-danger"
|
||||
icon="el-icon-close"
|
||||
@click="rejectClick"
|
||||
:loading="rejectLoading"
|
||||
v-if="showReject"
|
||||
>驳回</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
@@ -351,6 +360,14 @@ export default {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
rejectLoading:{
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
showReject:{
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
backBTNTexts: {
|
||||
type: String
|
||||
},
|
||||
@@ -372,6 +389,9 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
rejectClick(){
|
||||
this.$emit('reject')
|
||||
},
|
||||
handleOver() {
|
||||
this.$emit('over')
|
||||
},
|
||||
|
||||
@@ -115,7 +115,31 @@ export default {
|
||||
{
|
||||
label: "问答流程",
|
||||
value: "27"
|
||||
}
|
||||
},
|
||||
{
|
||||
label: "内外部会议入库流程",
|
||||
value: "29"
|
||||
},
|
||||
{
|
||||
label: "政策课题入会流程",
|
||||
value: "30"
|
||||
},
|
||||
{
|
||||
label: "政策课题参会流程",
|
||||
value: "31"
|
||||
},
|
||||
{
|
||||
label: "政策法规资料入库流程",
|
||||
value: "32"
|
||||
},
|
||||
{
|
||||
label: "政策征求意见流程",
|
||||
value: "33"
|
||||
},
|
||||
{
|
||||
label: '重点认证标准/政策合规性项目审查流程',
|
||||
value: "34"
|
||||
}
|
||||
],
|
||||
formDisableFlag: false,
|
||||
pickerOptions: {
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
<template>
|
||||
<el-dialog width='400px' :visible.sync="fileMadel" :title="title">
|
||||
<el-upload
|
||||
v-if="fileMadel"
|
||||
multiple
|
||||
class="upload-demo"
|
||||
drag
|
||||
:action="fileUrl"
|
||||
ref="importfile"
|
||||
name="file"
|
||||
:before-upload="beginImportFile"
|
||||
:on-success="importFileSuccess"
|
||||
:on-remove="importFileRemove"
|
||||
:show-file-list="true"
|
||||
:file-list="fileList"
|
||||
>
|
||||
<div style="padding: 20px 0">
|
||||
<i class="el-icon-upload" style="color: #3399ff"></i>
|
||||
<p>点击或拖拽上传文件</p>
|
||||
</div>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "processFile",
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: '上传文件'
|
||||
},
|
||||
fileMax_M: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
accept: {
|
||||
type: String,
|
||||
default: '*'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fileMadel: false,
|
||||
fileUrl: 'api/att/attFile/uploadNew',
|
||||
fileList: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getFile(fileList) {
|
||||
this.fileList = fileList || []
|
||||
this.fileMadel = true
|
||||
},
|
||||
beginImportFile(file) {
|
||||
var filename = file.name
|
||||
var index1 = filename.lastIndexOf('.')
|
||||
var index2 = filename.length
|
||||
var fileSuffix = filename.substring(index1, index2)
|
||||
fileSuffix = fileSuffix.toLowerCase()
|
||||
|
||||
if (this.fileMax_M > 0) {
|
||||
if (file.size / 1024 / 1024 > this.fileMax_M) {
|
||||
this.$message({
|
||||
message: '文件' + file.name + '大小不超过' + this.fileMax_M + 'M',
|
||||
type: 'warning'
|
||||
})
|
||||
return false
|
||||
}
|
||||
}
|
||||
if (this.accept == '*') {
|
||||
} else {
|
||||
if (this.accept.includes(fileSuffix)) {
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传' + this.accept + '文件')
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
},
|
||||
// 导入标准数据成功后执行
|
||||
importFileSuccess(response, file, fileList) {
|
||||
if (response.ok) {
|
||||
let templateFileList = []
|
||||
let list = []
|
||||
fileList.forEach(item => {
|
||||
let data = item.response ? item.response.data : item
|
||||
templateFileList.push(data)
|
||||
list.push(data.id)
|
||||
})
|
||||
let templateFileId = list.join(',')
|
||||
this.$emit('uploadSuccess', templateFileList, templateFileId)
|
||||
this.$message({
|
||||
// showClose: true,
|
||||
message: response.message,
|
||||
type: 'success'
|
||||
})
|
||||
} else {
|
||||
this.$message.error('程序异常,上传失败')
|
||||
}
|
||||
},
|
||||
importFileRemove(file, fileList) {
|
||||
let list = []
|
||||
let templateFileList = []
|
||||
fileList.forEach(item => {
|
||||
templateFileList.push(item)
|
||||
list.push(item.name)
|
||||
})
|
||||
let templateFileName = list.join(',')
|
||||
this.$emit('uploadSuccess', templateFileList, templateFileName)
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -188,7 +188,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -249,7 +249,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -250,7 +250,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -250,7 +250,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -257,7 +257,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? '已完成' : '未完成'}}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -433,7 +433,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
@@ -349,7 +349,7 @@
|
||||
label="状态"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
|
||||
<span>{{ scope.row.endTime ? '已完成' : scope.row.receiveStatus ? '已接收' : '未完成' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user