Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
zhaokaiyao@91isoft.com
2021-11-09 10:51:44 +08:00
7 changed files with 1926 additions and 199 deletions
+18 -18
View File
@@ -10,24 +10,24 @@
标准法规管理系统 Standard and Regulations Management System
</span>
<!-- header头部 右侧内容 当前登录人和退出-->
<div class="header-right" style="display: inline-block; float: right; margin-right: 20px; color: #fff">
<div>
<el-dropdown
trigger="click"
@command="handleCommand"
>
<div>
<img :src="userAvator" v-if="$store.getters.userInfo.avator">
<span class="iconfont" v-else style="color: #FFFFFF;">&#xe69b;</span>
<span style="color: #FFFFFF;">{{ $store.getters.userInfo.uName }}</span>
<i style="color: #FFFFFF;" class="el-icon-arrow-down"/>
</div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="loginOut">退出</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
<!-- <div class="header-right" style="display: inline-block; float: right; margin-right: 20px; color: #fff">-->
<!-- <div>-->
<!-- <el-dropdown-->
<!-- trigger="click"-->
<!-- @command="handleCommand"-->
<!-- >-->
<!-- <div>-->
<!-- <img :src="userAvator" v-if="$store.getters.userInfo.avator">-->
<!-- <span class="iconfont" v-else style="color: #FFFFFF;">&#xe69b;</span>-->
<!-- <span style="color: #FFFFFF;">{{ $store.getters.userInfo.uName }}</span>-->
<!-- <i style="color: #FFFFFF;" class="el-icon-arrow-down"/>-->
<!-- </div>-->
<!-- <el-dropdown-menu slot="dropdown">-->
<!-- <el-dropdown-item command="loginOut">退出</el-dropdown-item>-->
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
<!-- </div>-->
<!-- </div>-->
</div>
<!-- <div class="header-left">-->
<!-- <span class="logo" @click="toHome" title="回到首页"></span>-->
@@ -0,0 +1,674 @@
<!-- 配置管理 - 属性自定义 - 其他 -->
<template>
<div class="attribute-custom v-class">
<div class="action-bar1">
<el-button class="common-button-primary add-button" size="mini" type="primary" v-btn-permission="''" @click="showAddModel"><i class="el-icon-plus"></i>新增</el-button>
</div>
<loading :loading="attributeDataLoading">数据处理中</loading>
<div class="content">
<el-table
style="width: 100%;"
:data="attributeList"
height="100%"
border
ref="selections"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}"
@on-selection-change="handleSelectone"
>
<el-table-column
type="selection"
width="55"
align="center"
>
</el-table-column>
<el-table-column
prop="sarType"
label="所属模块"
width="140"
>
<template slot-scope="scope">
{{ getSarTypeText(scope.row.sarType) }}
</template>
</el-table-column>
<el-table-column
prop="attrField"
label="属性字段"
>
</el-table-column>
<el-table-column
prop="attrName"
label="属性名称"
>
</el-table-column>
<el-table-column
prop="attrType"
label="属性类型"
>
<template slot-scope="scope">
{{ getAttrTypeText(scope.row.attrType) }}
</template>
</el-table-column>
<el-table-column
prop="attrLen"
label="字段长度"
width="120"
>
</el-table-column>
<el-table-column
prop="orderNum"
label="展示顺序"
width="100"
>
</el-table-column>
<el-table-column label="操作" align="center" width="50" fixed="right">
<template slot-scope="scope">
<div @click.stop style="display: inline-block">
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="[scope.row, '编辑']" v-btn-permission="'b1e60ec7b60389713bf5b450ec2d1115'">编辑</el-dropdown-item>
<el-dropdown-item :disabled="scope.row.isEdit==='1'" v-btn-permission="'c157be4e073787ea6c4a04bd39686c2d'" :command="[scope.row, '删除']">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
</el-table-column>
</el-table>
</div>
<pagination :total="total" :pageChange="pageNo" :pageSizeChange="pageSize" @pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
<!-- 新建抽屉-->
<el-drawer
:title="attributeTitle"
:visible.sync="showInfoModal"
size="800px"
:styles="styles"
:wrapperClosable="false"
@close="cancelModel"
>
<div class="demo-drawer-content">
<el-form
ref="attributeEO"
:model="attributeEO"
:rules="attributeEOFormRules"
class="label-input-form"
label-width="150px"
>
<input v-model="attributeEO.id" v-show="false">
<el-form-item label="所属模块" prop="sarType" class="add-form-item" v-show="false">
<el-input v-model="attributeEO.sarType" ></el-input>
</el-form-item>
<el-form-item label="属性字段" prop="attrField" class="add-form-item" :class="{'form-item-disabled': addOrEdit === 'edit'}">
<el-input v-model.trim="attributeEO.attrField" :disabled="addOrEdit === 'edit'" placeholder="请输入属性字段" clearable/>
</el-form-item>
<el-form-item label="属性名称" prop="attrName" class="add-form-item">
<el-input v-model.trim="attributeEO.attrName" placeholder="请输入属性名称" clearable/>
</el-form-item>
<el-form-item label="属性类型" prop="attrType" class="add-form-item" :class="{'form-item-disabled': addOrEdit === 'edit'}">
<el-select v-model="attributeEO.attrType" placeholder="请选择" :disabled="addOrEdit === 'edit'" filterable>
<el-option
v-for="item in attrTypeOptions"
:label="item.label"
:value="item.value"
:key="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="选项值" prop="selVal" class="add-form-item" v-if="attributeEO.attrType === 'SEL_OPTION' || attributeEO.attrType === 'SEL_OPTS'">
<el-select v-model="attributeEO.selVal" placeholder="请选择" :disabled="addOrEdit === 'edit'" filterable>
<el-option
v-for="item in relateDicIdOptions"
:label="item.label"
:value="item.value"
:key="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="字段长度" prop="attrLen" class="add-form-item">
<el-input v-model.number="attributeEO.attrLen" :disabled="addOrEdit === 'edit'" placeholder="只允许输入正整数" number :maxlength="4"/>
</el-form-item>
<el-form-item label="展示顺序" prop="orderNum" class="add-form-item">
<el-input v-model.number="attributeEO.orderNum" placeholder="只允许输入正整数" number :maxlength="3"/>
</el-form-item>
<el-form-item label="是否必填" prop="isMust" class="add-form-item">
<el-select v-model="attributeEO.isMust">
<el-option v-for="opt in isMustOptions" :key="opt.value" :value="opt.value" :label="opt.label">{{ opt.label }}</el-option>
</el-select>
</el-form-item>
<el-form-item label="是否展示" prop="isShowImp" class="add-form-item">
<el-select v-model="attributeEO.isShowImp">
<el-option
v-for="opt in isMustOptions"
:key="opt.value"
:value="opt.value"
:label="opt.label"
></el-option>
</el-select>
</el-form-item>
</el-form>
</div>
<div id="roleFormButton" class="demo-drawer-footer">
<el-button class="common-button-primary" icon="el-icon-check" type="primary" @click="saveInfo()">提交</el-button>
<el-button class="common-button-default" icon="el-icon-close" @click="cancelModel">取消</el-button>
</div>
</el-drawer>
<!-- <el-dialog
destroy-on-close
:close-on-click-modal="false"
:close-on-press-escape="false"
:visible.sync="displayLocationFormDialogVisible"
:title="displayLocationFormDialogTilte"
@on-ok="handleDisplayLocationFormDialogSubmit('displayLocationDialogForm')"
@on-cancel="handleDisplayLocationFormDialogReset('displayLocationDialogForm')"
width="400px"
>
<el-form
ref="displayLocationDialogForm"
:model="displayLocationDialogFormData"
:rules="displayLocationDialogFormRules"
label-width="100px"
class="label-input-form"
>
<el-form-item label="区域名称" prop="areaName" class="add-form-item">
<el-input v-model="displayLocationDialogFormData.areaName" placeholder="请输入区域名称"></el-input>
</el-form-item>
<el-form-item label="所属模块" prop="sarType" class="add-form-item">
<el-select v-model="displayLocationDialogFormData.sarType" filterable>
<el-option
v-for="item in sarTypeLocationOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="排序号" prop="showIndex" class="add-form-item">
<el-input v-model.number="displayLocationDialogFormData.showIndex" placeholder="请输入排序号"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button class="common-button-default" @click="handleDisplayLocationFormDialogReset('displayLocationDialogForm')"> </el-button>
<el-button class="common-button-primary" type="primary" @click="handleDisplayLocationFormDialogSubmit('displayLocationDialogForm')"> </el-button>
</span>
</el-dialog>-->
</div>
</template>
<script>
const sarType = 'OTHER'
export default {
name: 'attribute-custom',
data () {
return {
sarType: sarType,
displayLocationDialogTableConfig: {
columns: [
{
title: '展示区域',
key: 'areaName'
},
{
title: '排序号',
key: 'showIndex'
},
{
title: '操作',
slot: 'operations'
}
],
page: {
pageSize: 100,
currentPage: 1,
total: 0
},
loading: false
},
displayLocationDialogTableData: [],
displayLocationDialogVisible: false,
displayLocationFormDialogVisible: false,
defaultDisplayLocationDialogFormData: {
areaName: '',
sarType: '',
showIndex: ''
},
displayLocationDialogFormData: {
areaName: '',
showIndex: ''
},
displayLocationDialogFormRules: {
areaName: [
{ required: true, message: '请输入展示区域', trigger: 'blur' },
{ type: 'string', max: 100, message: '最多输入100字', trigger: 'blur' }
],
sarType: [
{required: true, message: '所属模块不能为空', trigger: 'change'}
],
showIndex: [
{ type: 'number', required: true, message: '不能为空且为正整数', trigger: 'blur' },
{ type: 'number', min: 0, max: 999, message: '请输入0-999之间的整数', trigger: 'blur' }
]
},
attributeDataLoading: false,
attributeList: [],
total: 0,
pageNo: 1,
pageSize: this.$store.getters.userInfo.configContent,
attributeEO: {
id: '',
attrField: '',
attrName: '',
attrLen: '',
attrType: '',
orderNum: '',
isMust: '1',
isShowImp: '0',
selVal: '',
isSearch: '1',
sarType: 'OTHER',
isWarn: '1'
},
attrTypeOptions: [
{ label: '输入框(字符串)', value: 'INPUT_STR' },
{ label: '输入框(数字)', value: 'INPUT_NUM' },
{ label: '单选下拉框', value: 'SEL_OPTION' },
{ label: '多选下拉框', value: 'SEL_OPTS' },
{ label: '单日期选择', value: 'DATE_PICKER' },
{ label: '多日期选择', value: 'DATE_PIC_OPTS' },
{ label: '文件', value: 'FILE' },
{ label: '文本框', value: 'TEXTAREA' }
],
sarTypeLocationOptions: [
// { label: '国内政策', value: 'INLAND_LAWS' },
{ label: '国内外政策', value: 'Other' }
],
isMustOptions: [
{ label: '是', value: '0' },
{ label: '否', value: '1' }
],
showRegionOptions: [],
relateDicIdOptions: [],
attributeTitle: '',
showInfoModal: false,
attributeEOFormRules: {
sarType: [
{required: true, message: '所属模块不能为空', trigger: 'change'}
],
attrField: [
{required: true, message: '属性字段不能为空', trigger: 'blur'},
{type: 'string', max: 50, message: '最多输入50位', trigger: 'blur'},
{type: 'string', validator: this.verify.validFieldOracle, trigger: 'blur'}
],
attrName: [
{required: true, message: '属性名称不能为空', trigger: 'blur'},
{type: 'string', max: 100, message: '最多输入100位', trigger: 'blur'}
],
attrType: [
{required: true, message: '属性类型不能为空', trigger: 'change'}
],
attrLen: [
{type: 'number', required: true, message: '字段长度不能为空且为正整数', trigger: 'blur'},
{type: 'string', validator: this.verify.validStandNumInCompile2, trigger: 'blur'}
],
orderNum: [
{type: 'number', required: true, message: '展示顺序不能为空且为正整数', trigger: 'blur'},
{type: 'string', validator: this.verify.validStandNumInCompile2, trigger: 'blur'}
],
isMust: [
{required: true, message: '是否必填不能为空', trigger: 'change'}
],
isShowImp: [
{required: true, message: '是否展示必填不能为空', trigger: 'change'}
],
showRegionId:[
{required:true, message:'展示区域不能为空', trigger:'change'}
]
},
styles: {
height: 'calc(100% - 55px)',
overflow: 'auto',
paddingBottom: '53px',
position: 'static'
},
addOrEdit: '',
selectedList: []
}
},
computed: {
/*displayLocationFormDialogTilte () {
const formData = {...this.displayLocationDialogFormData}
const isEdit = !!formData.id
return isEdit ? '修改展示区域' : '新增展示区域'
}*/
},
methods: {
// 更多
handleCommand (command) {
switch (command[1]) {
case '编辑':
this.handleTableEdit(command[0])
break
case '删除':
this.handleTableDelete(command[0])
break
}
},
// 展示区域 更多
handleCommand2 (command) {
switch (command[1]) {
case '修改':
this.showAddDisplayLocationDialog(command[0])
break
case '删除':
this.removeDisplayLocation(command[0])
break
}
},
removeDisplayLocation (data) {
this.$confirm('确认删除该条数据?', {
confirmButtonClass: 'common-button-primary',
roundButton: false,
title: '确认删除',
callback: (action, instance) => {
if (action === 'confirm') {
const {id} = data
this.$http.delete('lawssBase/utArea/deleteById', {
id,
sarType: this.sarType
}, {
_this: this
}, res => {
this.queryDisplayLocationDialogTableData()
}, e => {
console.log(e)
})
}
}
})
},
handleDisplayLocationFormDialogSubmit (name) {
this.$refs[name].validate((valid) => {
if (valid) {
const formData = {...this.displayLocationDialogFormData, sarType: this.sarType}
const isEdit = !!formData.id
const url = isEdit ? 'lawssBase/utArea/updateUtArea' : 'lawssBase/utArea/createUtArea'
const method = isEdit ? 'putData' : 'postData'
this.$http[method](url, formData, {
_this: this
}, res => {
this.displayLocationFormDialogVisible = false
this.queryDisplayLocationDialogTableData()
// this.displayLocationDialogTableData = res.data.list
// this.displayLocationDialogTableConfig.page.total = res.data.count
}, e => {
console.log(e)
})
} else {
// this.$message.error('Fail!')
}
})
},
handleDisplayLocationFormDialogReset (name) {
this.displayLocationFormDialogVisible = false
this.$nextTick(() => {
this.$refs.displayLocationDialogForm.resetFields()
})
},
/**
* 打开新增展示区域管理弹框
*/
showAddDisplayLocationDialog (data) {
if (data) {
// 编辑
this.displayLocationDialogFormData = {
areaName: data.areaName,
showIndex: data.showIndex,
id: data.id,
sarType: data.sarType
}
} else {
this.displayLocationDialogFormData = {...this.defaultDisplayLocationDialogFormData}
}
this.displayLocationFormDialogVisible = true
},
/**
* 查询展示区域管理弹框里的列表数据
*/
queryDisplayLocationDialogTableData () {
return new Promise((resolve, reject) => {
this.$http.get('lawssBase/utArea/page', {
page: this.displayLocationDialogTableConfig.page.currentPage,
pageSize: this.displayLocationDialogTableConfig.page.pageSize,
sarType: this.sarType
}, {
_this: this.displayLocationDialogTableConfig,
loading: 'loading'
}, res => {
this.displayLocationDialogTableData = res.data.list
this.displayLocationDialogTableConfig.page.total = res.data.count
resolve(res)
}, e => {
console.log(e)
reject(e)
})
})
},
/**
* 查询新增弹框里的列表数据
*/
queryDisplayLocationList (sarType) {
return new Promise((resolve, reject) => {
this.$http.get('lawssBase/utArea/getAreaList', {
sarType: sarType || this.sarType
}, {
_this: this
}, res => {
this.showRegionOptions = res.data || []
resolve(res)
}, e => {
console.log(e)
reject(e)
})
})
},
handleSelectone (data) {
this.selectedList = []
for (let i = 0; i < data.length; i++) {
this.selectedList.push(data[i].id)
}
},
pageChange (page) {
this.pageNo = page
this.getAttrByPage()
},
pageSizeChange (pageSize) {
this.pageSize = pageSize
this.getAttrByPage()
},
getAttrByPage () {
this.$http.get('lawss/sarStandAttrDetails/page', {
page: this.pageNo,
pageSize: this.pageSize,
sarType: this.sarType
}, {
_this: this,
loading: 'attributeDataLoading'
},
res => {
this.attributeList = res.data.list
this.total = res.data.count
}, e => {})
this.$refs.selections.clearSelection()
},
async showAddModel () {
await this.queryDisplayLocationList()
// this.$refs['attributeEO'] && this.$refs['attributeEO'].resetFields()
this.attributeEO.newWebSite = ''
this.addOrEdit = 'add'
this.attributeTitle = '新增'
this.showInfoModal = true
this.$nextTick(() => {
this.$refs['attributeEO'].resetFields()
})
},
saveInfo () {
this.$refs['attributeEO'].validate((valid) => {
if (valid) {
if ((this.attributeEO.attrType === 'SEL_OPTION' || this.attributeEO.attrType === 'SEL_OPTS') && (this.attributeEO.selVal == null || this.attributeEO.selVal === '')) {
this.$message.warning('下拉框类型字段,选项值不能为空')
} else {
if (this.addOrEdit === 'add') {
this.$http.postData('lawss/sarStandAttrDetails/createStandAttrDetails', this.attributeEO,
{
_this: this
}, res => {
if (res.ok) {
this.getAttrByPage()
this.showInfoModal = false
} else {
}
})
} else {
this.$http.putData('lawss/sarStandAttrDetails/updateStandAttrDetails', this.attributeEO,
{
_this: this
}, res => {
if (res.ok) {
this.getAttrByPage()
this.showInfoModal = false
} else {
}
})
}
}
}
})
},
cancelModel () {
this.showInfoModal = false
this.$refs['attributeEO'] && this.$refs['attributeEO'].resetFields()
},
deleteAttr () {
if (this.selectedList.length === 0) {
this.$message.error('请先选择要删除的数据!')
} else {
this.$confirm('确认删除选中数据?', {
title: '提示',
confirmButtonClass: 'common-button-primary',
roundButton: false,
callback: (action, instance) => {
if (action === 'confirm') {
this.$http.put('lawss/sarStandAttrDetails/deleteByIds', {
ids: this.selectedList.join(','),
sarType: this.sarType
}, {
_this: this
}, res => {
this.getAttrByPage()
}, e => {
})
}
}
})
}
},
getDictionarySelList () {
this.$http.get('sys/dictionary/getDictionaryCodeSelList', {
sarType: this.sarType
}, {
_this: this
},
res => {
this.relateDicIdOptions = res.data
}, e => {})
},
getAttrTypeText (type) {
let texts = ''
if (type === 'INPUT_STR') {
texts = '输入框(字符串)'
} else if (type === 'INPUT_NUM') {
texts = '输入框(数字)'
} else if (type === 'SEL_OPTION') {
texts = '单选下拉框'
} else if (type === 'SEL_OPTS') {
texts = '多选下拉框'
} else if (type === 'DATE_PICKER') {
texts = '单日期选择'
} else if (type === 'DATE_PIC_OPTS') {
texts = '多日期选择'
} else if (type === 'FILE') {
texts = '文件'
} else if (type === 'TEXTAREA') {
texts = '文本框'
}
return texts
},
getSarTypeText (type) {
let texts = ''
if (type === 'OTHER') {
texts = '其他'
}
return texts
},
async handleTableEdit (params) {
await this.queryDisplayLocationList(params.sarType)
// this.$refs['attributeEO'] && this.$refs['attributeEO'].resetFields()
this.addOrEdit = 'edit'
this.attributeTitle = '编辑'
this.showInfoModal = true
this.attributeEO = JSON.parse(JSON.stringify(params))
},
handleTableDelete (params) {
this.selectedList = []
this.selectedList.push(params.id)
this.deleteAttr()
},
async handleSarTypeChange (sarType) {
this.attributeEO.showRegionId = ''
await this.queryDisplayLocationList(sarType)
}
},
mounted () {
this.getAttrByPage()
this.getDictionarySelList()
}
}
</script>
<style lang="less" scoped>
@import '~@/assets/styles/mixins';
.attribute-custom{
background: #FFF;
height: 100%;
position: relative;
display: flex;
flex-direction: column;
flex: auto;
.action-bar{
padding: 0;
}
.content {
padding: 0;
overflow-y: auto;
flex: auto;
display: flex;
flex-direction: column;
//height: calc(~'100% - 50px - 56px');
}
.pagination {
position: static;
/deep/ .pagination-slot {
padding: 0;
}
}
.modalStyle{
padding: 14px;
font-size: 15px;
}
.sysMenuTreeDiv{
height: 400px;
overflow-y: auto;
}
}
</style>
@@ -16,6 +16,11 @@
<buss v-if="tabValue === 'buss'"></buss>
</div>
</el-tab-pane>
<!-- <el-tab-pane label="其他" name="other">
<div style="position: absolute;top: 0;left: 0;right: 0;bottom: 0;">
<other v-if="tabValue === 'other'"></other>
</div>
</el-tab-pane>-->
</el-tabs>
</div>
</template>
@@ -24,12 +29,14 @@
import Laws from './components/laws'
import Stand from './components/stand'
import Buss from './components/buss'
/*import Other from './components/other'*/
export default {
name: 'index',
components: {
Laws,
Stand,
Buss
Buss,
// Other
},
data () {
return {
@@ -15,132 +15,190 @@
:key="index"
v-if="item.isShowImp === '0'"
>
<div class="modular-header" v-if="item.label !== '基础信息'">
<div class="modular-header-title"><i class="icon-modular-title"/><span>{{ item.label }}</span></div>
</div>
<div class="modular-header" v-if="item.label === '基础信息'">
<div class="modular-header-title"><i class="icon-modular-title"/><span>{{ item.label }}</span></div>
<!-- <div class="modular-header-title"><i class="icon-modular-title" /><span>企标信息</span>-->
<!-- </div>-->
<div class="modular-header-btn">
<el-button v-if="sarStandardsInfoEO.collectId" @click="collectClick(sarStandardsInfoEO.collectId)" title="取消收藏" class="collection-btn" icon="icon-collection" :loading="isSubmit"></el-button>
<el-button v-else @click="collectClick()" title="收藏" class="collection-btn" icon="el-icon-star-off" :loading="isSubmit"></el-button>
<el-button class="relation-btn" icon="icon-relation" @click="relateEvent()">更新LOG</el-button>
</div>
</div>
<div class="modular-content">
<template v-if = "item.label === '基础信息'">
<div class="details-content-modular basic-information" style="margin-bottom: 0">
<div class="basic-information-content">
<p style="color: #C42626;"><label style=" margin-right: 171px;">企标号</label><span>{{ sarStandardsInfoEO.standCode }}</span></p>
<p><label style=" margin-right: 157px;">中文名称</label><span>{{ sarStandardsInfoEO.standName || '-' }}</span></p>
<p><label style=" margin-right: 157px;">英文名称</label><span>{{ sarStandardsInfoEO.standEnName || '-' }}</span></p>
<p>
<label style=" margin-right: 156px;"
title="“修订中”为现行有效版本;“已修订”标准的有效性需根据实际实施情况判定"
>文本状态</label><span style="color: #409EFF;">{{ sarStandardsInfoEO.standStatusShow || '-' }}</span>
</p>
<p><label style=" margin-right: 157px;">发布日期</label><span>{{ sarStandardsInfoEO.issueTime || '-' }}</span></p>
<p style="border: none;"><label style=" margin-right: 122px;">标准实施日期</label><span>{{ sarStandardsInfoEO.putTime || '-' }}</span></p>
</div>
</div>
</template>
<template
v-for="(child, childIndex) in item.child"
v-if="child.isShowImp === '0'"
>
<div
:key="childIndex"
class="modular-item"
:class="halfClass(child, item.child[childIndex + 1], childIndex)"
>
<label class="modular-content-p-name" :title="child.attrName">{{ child.attrName }}</label>
<span
v-if="child.attrField === 'ZYQCR'"
class="modular-content-p-val clearfix"
:title="child.value || '-'"
<el-collapse v-model="activeNames" @change="handleChange">
<el-collapse-item :name="item.label" @click.native="handleChange1(item.label)">
<template slot="title">
<div class="modular-header" v-if="item.label !== '基础信息'">
<div class="modular-header-title"><i class="icon-modular-title"/><span>{{ item.label }}</span></div>
</div>
<div class="modular-header" v-if="item.label === '基础信息'">
<div class="modular-header-title"><i class="icon-modular-title"/><span>{{ item.label }}</span></div>
<!-- <div class="modular-header-title"><i class="icon-modular-title" /><span>企标信息</span>-->
<!-- </div>-->
<div class="modular-header-btn">
<el-button v-if="sarStandardsInfoEO.collectId" @click="collectClick(sarStandardsInfoEO.collectId)" title="取消收藏" class="collection-btn" icon="icon-collection" :loading="isSubmit"></el-button>
<el-button v-else @click="collectClick()" title="收藏" class="collection-btn" icon="el-icon-star-off" :loading="isSubmit"></el-button>
<el-button class="relation-btn" icon="icon-relation" @click="relateEvent()">更新LOG</el-button>
</div>
</div>
</template>
<div class="modular-content">
<template v-if = "item.label === '基础信息'">
<div class="details-content-modular basic-information" style="margin-bottom: 0">
<div class="basic-information-content">
<p class="half" style="color: #C42626;"><label style=" margin-right: 171px;">企标号</label><span>{{ sarStandardsInfoEO.standCode }}</span></p>
<template v-for="(child, childIndex) in item.child1">
<p class="half files-title"
>
<label style=" margin-right: 102px;">{{ child.attrName }}</label>
<template v-for="(file, fileIndex) in child1Func(child.value)">
<span>
<a style="font-size: 16px;color: #409EFF;cursor: pointer" @click="openFileInPdf(file.id, file.oldFileName)" target="_blank" :title="file.oldFileName">{{ file.oldFileName | ellipsis }}</a>
<i
title="下载"
@click="downloadFile(file.id)"
class="icon-download"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? 'd5b28957b5105c805e90a16fd5056a45' : 'a772afab2a6708883335500f3f86e771'"
/>
<i
title="下载带水印"
@click="downloadFileByWater(file.id, file.fileSuffix)"
class="icon-download2"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? '02fd6eff0537c283dd071683de10689f' : '824f3bf9edef83fc7488917136167232'"
/>
<!-- <span class="time-text">上传时间{{ dateFormat(file.modifyTime) }}</span>-->
</span>
<!-- <el-button-->
<!-- v-if="child.attrField === itemNam "-->
<!-- v-for="(itemNam,index) in itemExistList"-->
<!-- :key="index"-->
<!-- @click="showItemsModel(child.attrField)"-->
<!-- class="decomposition-btn"-->
<!-- style="right:62px"-->
<!-- icon="icon-separate"-->
<!-- >标准分解单-->
<!-- </el-button>-->
<el-button v-if="child.value.length > 1" style="color:#409EFF;border: 1px solid #409EFF;background: rgba(64, 158, 255, 0.1);"
class="decomposition-btn" icon="icon-relation" @click="relateEvent1(child.value)">更多</el-button>
</template>
<template v-if="!child.value && child.value.length === 0">-</template>
</p>
</template>
<p><label style="margin-right: 157px;">中文名称</label><span>{{ sarStandardsInfoEO.standName || '-' }}</span></p>
<p v-if="activeState"><label style=" margin-right: 157px;">英文名称</label><span>{{ sarStandardsInfoEO.standEnName || '-' }}</span></p>
<p class="half">
<label style=" margin-right: 156px;"
title="“修订中”为现行有效版本;“已修订”标准的有效性需根据实际实施情况判定"
>文本状态</label><span style="color: #409EFF;">{{ sarStandardsInfoEO.standStatusShow || '-' }}</span>
</p>
<p class="half"><label style=" margin-right: 157px;">发布日期</label><span>{{ sarStandardsInfoEO.issueTime || '-' }}</span></p>
<p class="half" style=""><label style=" margin-right: 122px;">标准实施日期</label><span>{{ sarStandardsInfoEO.putTime || '-' }}</span></p>
<template
v-for="(child, childIndex) in item.child"
v-if="child.isShowImp === '0'"
>
<p class="half">
<label style=" margin-right: 157px;" :title="child.attrName">{{child.attrName}}</label>
<span :title="child.value || '-'">
<template v-if="child.value">
{{ child.value }}
</template>
<template v-else>
{{ '-' }}
</template>
</span>
</p>
</template>
</div>
</div>
</template>
<template
v-for="(child, childIndex) in item.child"
v-if="child.isShowImp === '0' && item.label !== '基础信息'"
>
<div
:key="childIndex"
:class="item.label !== '过程稿件' ? 'modular-item half' : 'modular-item'"
>
<label class="modular-content-p-name" :title="child.attrName">{{ child.attrName }}</label>
<span
v-if="child.attrField === 'ZYQCR'"
class="modular-content-p-val clearfix"
:title="child.value || '-'"
>
<template v-if="child.value">
{{ child.value }}
<put-question-button
style="float: right;"
:resId="sarStandardsInfoEO.id"
:resType="saveStandType"
style="float: right;"
:resId="sarStandardsInfoEO.id"
:resType="saveStandType"
></put-question-button>
</template>
<template v-else>
{{ '-' }}
</template>
</span>
<!--规范性引用文件-->
<template v-else-if="child.attrField === 'GFXYYWJ' && child.value">
<p class="modular-content-p-val">
<!--规范性引用文件-->
<template v-else-if="child.attrField === 'GFXYYWJ' && child.value">
<p class="modular-content-p-val">
<span v-for="(item, index) in child.value.split(',')" :key="index">
<a @click="showReplaceStandInfo(item)" style="cursor: pointer;color: #0c91e5;margin-right: 5px;" class="span-line">{{item}}</a>
</span>
</p>
</template>
<!--相关流程-->
<template v-else-if="child.attrField === 'XGLC' && child.value">
<p class="modular-content-p-val">
</p>
</template>
<!--相关流程-->
<template v-else-if="child.attrField === 'XGLC' && child.value">
<p class="modular-content-p-val">
<span v-for="(item, index) in child.value.split(',')" :key="index">
<a @click="processCenterClick(item)" style="cursor: pointer;color: #0c91e5;margin-right: 5px;" class="span-line">{{item}}</a>
</span>
</p>
</template>
<!--相关计划-->
<template v-else-if="child.attrField === 'XGJH' && child.value">
</p>
</template>
<!--相关计划-->
<template v-else-if="child.attrField === 'XGJH' && child.value">
<span
v-if="child.value.length === 0"
class="modular-content-p-val"
:title="'-'"
v-if="child.value.length === 0"
class="modular-content-p-val"
:title="'-'"
>
{{ '-' }}
</span>
<p v-else class="modular-content-p-val">
<p v-else class="modular-content-p-val">
<span v-for="(item, index) in child.value" :key="index">
<a @click="showXGJH(item)" style="cursor: pointer;color: #0c91e5;margin-right: 5px;" class="span-line">查看计划</a>
</span>
</p>
</template>
<span
v-else-if="child.attrField === 'SVPPS'"
class="modular-content-p-val"
:title="child.tips || '-'"
>
</p>
</template>
<span
v-else-if="child.attrField === 'SVPPS'"
class="modular-content-p-val"
:title="child.tips || '-'"
>
{{ !child.value || child.value === 'null' ? '-' : child.value }}
</span>
<span
v-else-if="child.attrType !== 'FILE'"
class="modular-content-p-val"
:title="child.value || '-'"
>
<span
v-else-if="child.attrType !== 'FILE'"
class="modular-content-p-val"
:title="child.value || '-'"
>
{{ child.value || '-' }}
</span>
<div v-else class="modular-content-p-flies">
<p
class="files-title"
v-for="(file, fileIndex) in child.value"
:key="fileIndex"
>
<a @click="openFileInPdf(file.id, file.oldFileName)" target="_blank">{{ file.oldFileName }}</a>
<i title="下载" @click="downloadFile(file.id)" class="icon-download" v-btn-permission="'9882f477aad895ec56a7464f3e9c0b11'"/>
<i title="下载带水印" @click="downloadFileByWater(file.id, file.fileSuffix)" class="icon-download2" v-btn-permission="'9bab2662fbd9d0507b39be813371a597'"/>
<span class="time-text">上传时间{{ dateFormat(file.modifyTime) }}</span>
</p>
<!-- <el-button-->
<!-- @click="showItemsModel(child.attrField)"-->
<!-- class="decomposition-btn"-->
<!-- icon="icon-separate"-->
<!-- >标准分解单</el-button>-->
</div>
</div>
<div v-else class="modular-content-p-flies">
<p
class="files-title"
v-for="(file, fileIndex) in child.value"
:key="fileIndex"
>
<a @click="openFileInPdf(file.id, file.oldFileName)" target="_blank">{{ file.oldFileName }}</a>
<i title="下载" @click="downloadFile(file.id)" class="icon-download" v-btn-permission="'9882f477aad895ec56a7464f3e9c0b11'"/>
<i title="下载带水印" @click="downloadFileByWater(file.id, file.fileSuffix)" class="icon-download2" v-btn-permission="'9bab2662fbd9d0507b39be813371a597'"/>
<!-- <span class="time-text">上传时间{{ dateFormat(file.modifyTime) }}</span>-->
</p>
<!-- <el-button-->
<!-- @click="showItemsModel(child.attrField)"-->
<!-- class="decomposition-btn"-->
<!-- icon="icon-separate"-->
<!-- >标准分解单</el-button>-->
</div>
</div>
</template>
</div>
</template>
</div>
</el-collapse-item>
</el-collapse>
</div>
</div>
<div v-show="!isMoreAwayBtn" class="more" @click="moreClick">更多<img src="@/assets/images/shangqi/img/more.png"></div>
<!-- <div v-show="!isMoreAwayBtn" class="more" @click="moreClick">更多<img src="@/assets/images/shangqi/img/more.png"></div>-->
<!-- <div v-show="isMoreAwayBtn" class="put-away" @click="putAwayClick">收起<img src="@/assets/images/shangqi/img/more.png"></div>-->
<!--查看标准条目列表-->
<el-drawer
@@ -518,6 +576,40 @@
<el-button type="primary" @click="relateDialogClose()"> </el-button>
</span>
</el-dialog>
<el-dialog
title="更多发布稿"
:visible.sync="relateDialog1"
class="relateClass"
width="40%"
:before-close="relateDialogClose1">
<div
v-for="(file, index) in relateNowList1"
:key="index"
v-if="relateNowList1"
style="margin-bottom: 10px;line-height: 20px;max-height: 300px"
>
{{ index + 1 }}.
<a style="font-size: 16px;color: #409EFF;cursor: pointer" @click="openFileInPdf(file.id, file.oldFileName)" target="_blank" :title="file.oldFileName">{{ file.oldFileName }}</a>
<i
title="下载"
@click="downloadFile(file.id)"
class="icon-download"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? 'd5b28957b5105c805e90a16fd5056a45' : 'a772afab2a6708883335500f3f86e771'"
/>
<i
title="下载带水印"
@click="downloadFileByWater(file.id, file.fileSuffix)"
class="icon-download2"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? '02fd6eff0537c283dd071683de10689f' : '824f3bf9edef83fc7488917136167232'"
/>
<div v-if="relateNowList.length >1">
<el-divider></el-divider>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="relateDialogClose1"> </el-button>
</div>
</el-dialog>
<!-- 导入失败-->
<el-dialog :visible.sync="importFailed" :close-on-click-modal="false" width="400px">
<p slot="title" style="color:#f60">
@@ -874,13 +966,26 @@ export default {
components: {
PutQuestionButton
},
filters: {
ellipsis (value) {
if (!value) return ''
if (value.length > 12) {
return value.slice(0,12) + '...'
}
return value
}
},
data () {
return {
activeNames: ['基础信息'],
activeState: false,
visiblePlanCheck: false,
form: {},
relateDialog: false,
relateDialog1: false,
relateList: [],
relateNowList: [],
relateNowList1: [],
sarType: sarType,
loading: true,
showItemInfoModal: false,
@@ -1079,6 +1184,23 @@ export default {
watch: {
},
methods: {
child1Func(child1){
const list = []
console.log(child1)
if(child1 && child1.length > 1){
list.push(child1[0])
return list
}
return child1
},
handleChange(val) {
console.log(val)
},
handleChange1(val) {
if(val && val === '基础信息'){
this.activeState = true
}
},
getPlanStatusName(status) {
switch (status) {
case "1":
@@ -1913,6 +2035,10 @@ export default {
})
}
},
relateEvent1(list){
this.relateDialog1 = true
this.relateNowList1 = list
},
// 更新LOG
relateEvent () {
this.$http.get('lawss/sarUpdLog/getLogList', {
@@ -1942,6 +2068,10 @@ export default {
})
},
relateDialogClose1() {
this.relateDialog1 = false
this.relateNowList = []
},
relateDialogClose () {
this.relateDialog = false
this.relateNowList = []
@@ -2019,6 +2149,7 @@ export default {
const [displayLocation, {attrInfoMap: dynamicFormField}, formFieldList] = values
// const relatedPlansRes = await this.queryRelatedPlans()
// const relatedPlans = relatedPlansRes.list
console.log(formFieldList)
formFieldList.forEach((field) => {
displayLocation.forEach((location) => {
location.isShowImp = '0'
@@ -2046,22 +2177,47 @@ export default {
// }
}
}
if (location.label === '文本信息') {
if (location.label === '过程稿件') {
location.isShowImp = '0'
}
})
})
displayLocation.forEach(location => {
// 动态属性字段-FBGBJBD 单独添加至基础信息
const list = displayLocation.filter ( item => item.label === '过程稿件');
console.log(list)
if(location.label === '基础信息' && list && list.length > 0){
if (!list[0].child) {
location['child1'] = []
}else {
const childList = list[0].child.filter ( item => item.attrField === 'FBGBUSS');
console.log(childList)
console.log(childList.length)
location['child1'] = childList
console.log(location['child1'])
}
}
const child = location.child || []
const halfType = ['INPUT_STR', 'DATE_PICKER', 'SEL_OPTION', 'INPUT_NUM']
const fieldsIsTextAreaOrFile = child.filter(field => {
return !halfType.includes(field.attrType)
return field.attrField !== 'FBGBUSS' && !halfType.includes(field.attrType)
})
const fieldOthers = child.filter(field => {
return halfType.includes(field.attrType)
return halfType.includes(field.attrType)
})
location.child = [...fieldOthers, ...fieldsIsTextAreaOrFile].sort(this.compare('orderNum'))
})
for (let i = 0; i < displayLocation.length; i++) {
// sss
if(displayLocation[i].label !== '基础信息' && displayLocation[i].label !== '过程稿件'){
const childList = displayLocation[i].child.filter ( item => item.value !== null && item.value !== '');
if(childList.length === 0){
displayLocation.splice(i,1)
}
}
}
this.dynamicFormField = displayLocation
sessionStorage.setItem('displayLocation', JSON.stringify(displayLocation))
this.loading = false
@@ -2085,6 +2241,63 @@ export default {
<style lang="less" scoped>
@import '~@/assets/styles/mixins';
@import '~@/assets/styles/style';
/deep/ .el-collapse{
border: none;
}
/deep/ .el-collapse-item__wrap{
border: none;
}
/deep/ .decomposition-btn {
position: absolute;
top: 6px;
right: 0;
padding: 0 10px;
height: 30px;
line-height: 30px;
font-size: 14px;
color: #07C160;
border: 1px solid #07C160;
background: rgba(1, 193, 96, 0.1);
/deep/ .icon-separate {
display: inline-block;
margin-right: 3px;
width: 16px;
height: 16px;
background-repeat: no-repeat;
background-size: 100% 100%;
background-position: center center;
vertical-align: sub;
background-image: url("~assets/images/shangqi/standardDetails/separate.png");
}
}
/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");
}
.other-standard-details{
padding: 15px 30px 0;
width: 1200px;
@@ -2108,6 +2321,7 @@ export default {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 50px;
border-bottom: 1px solid #E5E5E5;
.modular-header-title{
@@ -2122,7 +2336,8 @@ export default {
background-size: 100% 100%;
background-position: center center;
background-image: url("~assets/images/shangqi/standardDetails/modular-title.png");
vertical-align: top;
position: relative;
top: 2px;
}
& > span{
padding-left: 10px;
@@ -2186,11 +2401,12 @@ export default {
.modular-content{
& > div{
border-bottom: 1px solid #E5E5E5;
height: 44px;
.modular-content-p-name{
display: inline-block;
width: 220px;
height: 50px;
line-height: 50px;
height: 43px;
line-height: 43px;
font-size: 16px;
color: #333333;
vertical-align: top;
@@ -2270,16 +2486,14 @@ export default {
}
}
.basic-information{
/*border-top: 2px dashed #D1D1D1;*/
border-bottom: 2px dashed #D1D1D1;
.modular-header{
height: 60px;
border-bottom: none;
}
.basic-information-content{
& > p{
min-height: 55px;
line-height: 55px;
min-height: 42px;
line-height: 43px;
border-bottom: 1px solid #E5E5E5;
}
}
@@ -18,7 +18,7 @@
v-if="item.isShowImp === '0'"
>
<el-collapse v-model="activeNames" @change="handleChange">
<el-collapse-item :name="item.label">
<el-collapse-item :name="item.label" @click.native="handleChange1(item.label)">
<template slot="title">
<div class="modular-header" v-if="item.label === '基础信息'">
<div class="modular-header-title"><i class="icon-modular-title"/><span>{{ item.label }}</span></div>
@@ -57,43 +57,45 @@
<!-- <p><label style=" margin-right: 150px;">标准年份</label><span>{{ sarStandardsInfoEO.standYear || '-' }}</span></p>-->
<template v-for="(child, childIndex) in item.child1">
<p class="half files-title"
v-for="(file, fileIndex) in child1Func(child.value)"
>
<label style=" margin-right: 102px;">{{ child.attrName }}</label>
<span>
<a style="font-size: 16px;color: #409EFF;cursor: pointer" @click="openFileInPdf(file.id, file.oldFileName)" target="_blank" :title="file.oldFileName">{{ file.oldFileName | ellipsis }}</a>
<i
title="下载"
@click="downloadFile(file.id)"
class="icon-download"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? 'd5b28957b5105c805e90a16fd5056a45' : 'a772afab2a6708883335500f3f86e771'"
/>
<i
title="下载带水印"
@click="downloadFileByWater(file.id, file.fileSuffix)"
class="icon-download2"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? '02fd6eff0537c283dd071683de10689f' : '824f3bf9edef83fc7488917136167232'"
/>
<!-- <span class="time-text">上传时间{{ dateFormat(file.modifyTime) }}</span>-->
</span>
<el-button
v-if="child.attrField === itemNam "
v-for="(itemNam,index) in itemExistList"
:key="index"
@click="showItemsModel(child.attrField)"
class="decomposition-btn"
style="right:62px"
icon="icon-separate"
>标准分解单
</el-button>
<el-button v-if="child.value.length > 1" style="color:#409EFF;border: 1px solid #409EFF;background: rgba(64, 158, 255, 0.1);"
class="decomposition-btn" icon="icon-relation" @click="relateEvent1(child.value)">更多</el-button>
<template v-for="(file, fileIndex) in child1Func(child.value)">
<span>
<a style="font-size: 16px;color: #409EFF;cursor: pointer" @click="openFileInPdf(file.id, file.oldFileName)" target="_blank" :title="file.oldFileName">{{ file.oldFileName | ellipsis }}</a>
<i
title="下载"
@click="downloadFile(file.id)"
class="icon-download"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? 'd5b28957b5105c805e90a16fd5056a45' : 'a772afab2a6708883335500f3f86e771'"
/>
<i
title="下载带水印"
@click="downloadFileByWater(file.id, file.fileSuffix)"
class="icon-download2"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? '02fd6eff0537c283dd071683de10689f' : '824f3bf9edef83fc7488917136167232'"
/>
<!-- <span class="time-text">上传时间{{ dateFormat(file.modifyTime) }}</span>-->
</span>
<el-button
v-if="child.attrField === itemNam "
v-for="(itemNam,index) in itemExistList"
:key="index"
@click="showItemsModel(child.attrField)"
class="decomposition-btn"
style="right:62px"
icon="icon-separate"
>标准分解单
</el-button>
<el-button v-if="child.value.length > 1" style="color:#409EFF;border: 1px solid #409EFF;background: rgba(64, 158, 255, 0.1);"
class="decomposition-btn" icon="icon-relation" @click="relateEvent1(child.value)">更多</el-button>
</template>
<template v-if="!child.value && child.value.length === 0">-</template>
</p>
</template>
<p><label style=" margin-right: 150px;">中文名称</label><span>{{
sarStandardsInfoEO.standName || '-'
}}</span></p>
<p><label style=" margin-right: 150px;">英文名称</label><span>{{
<p v-if="activeState"><label style=" margin-right: 150px;">英文名称</label><span>{{
sarStandardsInfoEO.standEnName || '-'
}}</span></p>
<p class="half">
@@ -1415,6 +1417,7 @@
data() {
return {
activeNames: ['基础信息'],
activeState: false,
itemExistList:[],
interpretationContent: '',
relatedTermsDrawerVisible: false,
@@ -1720,7 +1723,12 @@
return child1
},
handleChange(val) {
console.log(val);
console.log(val)
},
handleChange1(val) {
if(val && val === '基础信息'){
this.activeState = true;
}
},
judgeSuffix(fileName){
if ('pdf'===fileName.substring(fileName.lastIndexOf('.') + 1)){
@@ -3106,18 +3114,10 @@
})
})
for (let i = 0; i < displayLocation.length; i++) {
// sss
if(displayLocation[i].label !== '基础信息' && displayLocation[i].label !== '过程稿件'){
const childList = displayLocation[i].child.filter ( item => item.value !== null && item.value !== '');
if(childList.length === 0){
displayLocation.splice(i,1)
}
}
}
displayLocation.forEach(location => {
// 动态属性字段-FBGBJBD 单独添加至基础信息
const list = displayLocation.filter ( item => item.label === '过程稿件');
console.log()
if(location.label === '基础信息' && list && list.length > 0){
if (!list[0].child) {
location['child1'] = []
@@ -3162,6 +3162,16 @@
location.showAll = false
})
for (let i = 0; i < displayLocation.length; i++) {
// sss
if(displayLocation[i].label !== '基础信息' && displayLocation[i].label !== '过程稿件'){
const childList = displayLocation[i].child.filter ( item => item.value !== null && item.value !== '');
if(childList.length === 0){
displayLocation.splice(i,1)
}
}
}
this.$http.get('sarLawsAttrDetailedList/sar-laws-attr-detailed-list', {
id: this.$route.params.id
}, {
@@ -3232,6 +3242,14 @@
}
}
/deep/ .el-collapse{
border: none;
}
/deep/ .el-collapse-item__wrap{
border: none;
}
/deep/ .el-collapse-item__content {
padding-bottom: 0px;
font-size: 13px;
@@ -3522,8 +3540,8 @@
.modular-content-p-name {
display: inline-block;
width: 220px;
height: 50px;
line-height: 50px;
height: 43px;
line-height: 43px;
font-size: 16px;
color: #333333;
vertical-align: top;
@@ -3622,7 +3640,7 @@
.basic-information-content {
& > p {
min-height: 43px;
min-height: 42px;
line-height: 43px;
border-bottom: 1px solid #E5E5E5;
}
@@ -181,9 +181,12 @@
<!-- <el-option v-for="opt in standSortOptions" :value="opt.value" :key="opt.value" :label="opt.label">{{ opt.label}}</el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-formItem label="标准号/名称" prop="numberName" class="search-item">
<el-input v-model="sarBussionessSearch.numberName" clearable placeholder="根据标准号/名称查找" :maxlength="100" @keyup.enter.native="getBussionStandTableBtn(sarBussionessSearch)"/>
<el-formItem label="标准号" prop="numberName" class="search-item">
<el-input v-model="sarBussionessSearch.standCode" clearable placeholder="根据标准号查找" :maxlength="100" @keyup.enter.native="getBussionStandTableBtn(sarBussionessSearch)"/>
</el-formItem>
<el-formItem label="标准名称" prop="standName" class="search-item">
<el-input v-model="sarBussionessSearch.standName" clearable placeholder="根据标准名称查找" :maxlength="100" @keyup.enter.native="getBussionStandTableBtn(sarBussionessSearch)"/>
</el-formItem>
<el-form-item class="search-item btn-box">
<el-button
:loading="searching"
@@ -1,7 +1,491 @@
<template>
<div class="workingGroup1" ref="wrap">
<div class="header" v-if="headerNo">
<div class="header-left">
<span style="font-weight: 600;">当前节点: </span>{{ addForm.pName }}
</div>
<div class="header-right">
<el-button
type="primary"
size="mini"
class="common-button-primary"
v-if="addButton"
@click="addItem">
新增
</el-button>
<el-button
type="primary"
size="mini"
class="common-button-primary"
v-if="addItemButton"
@click="">
新增标准
</el-button>
<el-button
type="primary"
size="mini"
class="common-button-primary"
v-if="editButton"
@click="">
编辑
</el-button>
<el-button
type="primary"
size="mini"
class="common-button-primary"
v-if="seeButton"
@click="">
查看
</el-button>
<el-button
type="primary"
size="mini"
class="common-button-primary"
v-if="seeItemButton"
@click="">
查看标准
</el-button>
<el-button
type="danger"
size="mini"
class="common-button-default"
v-if="delectButton"
@click="">
删除
</el-button>
</div>
</div>
<div id="container"></div>
<el-drawer
ref="standard"
size="1000px"
:title="addDrawerTitle"
:visible.sync="addDrawer"
:before-close="addDrawerClose">
<div class="content">
<div class="standard-table-search">
<el-row :gutter="24">
<el-col :span="24">
<el-form :model="addForm" inline class="label-input-form">
<el-form-item label="上级节点" style="width: 100%; margin-right:10px" class="add-form-item form-item-disabled">
<el-input
v-model="addForm.pName"
disabled
:maxlength="100"/>
</el-form-item>
<el-form-item label="节点类型" style="width: 100%; margin-right:10px" class="add-form-item form-item-disabled">
<el-input
v-model="addForm.itemType"
disabled
:maxlength="100"/>
</el-form-item>
<el-form-item label="编号" style="width: 100%; margin-right:10px" prop="number" class="add-form-item">
<el-input
v-model="addForm.number"
placeholder="请输入编号"
:maxlength="100"/>
</el-form-item>
<el-form-item label="名称" style="width: 100%; margin-right:10px" prop="name" class="add-form-item">
<el-input
v-model="addForm.name"
placeholder="请输入名称"
:maxlength="100"/>
</el-form-item>
<el-form-item label="换届时间" style="width: 100%; margin-right:10px" prop="hjTime" class="add-form-item">
<el-date-picker
v-model="addForm.hjTime"
type="date"
placeholder="请选择换届时间">
</el-date-picker>
</el-form-item>
<el-form-item label="标准化工作领域" style="width: 100%; margin-right:10px" prop="field" class="add-form-item">
<el-input
v-model="addForm.field"
placeholder="请输入标准化工作领域"
:maxlength="100"/>
</el-form-item>
<el-form-item label="备注" style="width: 100%; margin-right:10px" prop="mark" class="add-form-item">
<el-input
v-model="addForm.mark"
placeholder="请输入备注"
:maxlength="100"/>
</el-form-item>
<div class="formTitle">
<div class="left">秘书处联系方式</div>
<div class="right">
<el-button
type="primary"
size="mini"
class="common-button-primary"
@click="addTelItem">
添加联系方式
</el-button>
<el-button
type="danger"
size="mini"
class="common-button-primary"
v-if="addForm.wgNetInfos.length"
@click="delTelItem">
删除
</el-button>
</div>
</div>
<el-table
:data="addForm.wgNetInfos"
style="width: 100%"
border
@selection-change="val => delNetInfos = val"
>
<el-table-column
type="selection"
align="center"
width="55"
v-if="addForm.wgNetInfos.length">
</el-table-column>
<el-table-column
label="联络人"
prop="joinPerson"
align="center"
width="150">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPerson"></el-input>
</template>
</el-table-column>
<el-table-column
label="单位"
prop="joinPersonCompany"
align="center">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPersonCompany"></el-input>
</template>
</el-table-column>
<el-table-column
label="电话"
prop="joinPersonPhone"
align="center"
width="150">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPersonPhone"></el-input>
</template>
</el-table-column>
<el-table-column
label="邮箱"
prop="joinPersonEmail"
align="center"
width="200">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPersonEmail"></el-input>
</template>
</el-table-column>
</el-table>
<div class="formTitle">
<div class="left">集团参与情况</div>
<div class="right">
<el-button
type="primary"
size="mini"
class="common-button-primary"
@click="addCyItem">
添加联系方式
</el-button>
<el-button
type="danger"
size="mini"
class="common-button-primary"
v-if="addForm.wgNetInfos.length"
@click="delCyItem">
删除
</el-button>
</div>
</div>
<el-table
:data="addForm.wgDepts"
style="width: 100%"
border
@selection-change="val => delDepts = val"
>
<el-table-column
type="selection"
align="center"
width="55"
v-if="addForm.wgDepts.length">
</el-table-column>
<el-table-column
label="我司在工作组排名顺序"
prop="joinPm"
align="center"
width="150">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPm"></el-input>
</template>
</el-table-column>
<el-table-column
label="我司人员"
prop="joinPerson"
align="center"
width="150">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPerson"></el-input>
</template>
</el-table-column>
<el-table-column
label="单位"
prop="joinPersonCompany"
align="center">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPersonCompany"></el-input>
</template>
</el-table-column>
<el-table-column
label="部门"
prop="joinDept"
align="center">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinDept"></el-input>
</template>
</el-table-column>
<el-table-column
label="电话"
prop="joinPersonPhone"
align="center"
width="150">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPersonPhone"></el-input>
</template>
</el-table-column>
<el-table-column
label="邮箱"
prop="joinPersonEmail"
align="center"
width="200">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPersonEmail"></el-input>
</template>
</el-table-column>
<el-table-column
label="身份"
prop="joinSf"
align="center"
width="200">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinSf"></el-input>
</template>
</el-table-column>
<el-table-column
prop="joinfile"
label="资料"
width="250"
align="center">
<template slot-scope="scope">
<div v-if="scope.row.joinfile.length > 0" class="fileClass">
<div v-for="(item, index) in scope.row.joinfile" :key="index" @click="fileUpload('集团参与情况', scope.$index)" style="margin-right: 5px;">
{{ item.name }}
</div>
</div>
<div v-else>
<el-button
type="primary"
class="common-button-primary"
@click="fileUpload('集团参与情况', scope.$index)"
size="mini">
点击上传
</el-button>
</div>
</template>
</el-table-column>
</el-table>
<div class="formTitle">
<div class="left">支付信息</div>
<div class="right">
<el-button
type="primary"
size="mini"
class="common-button-primary"
@click="addZfItem">
添加支付信息
</el-button>
<el-button
type="danger"
size="mini"
class="common-button-primary"
v-if="addForm.wgPayInfos.length"
@click="delZfItem">
删除
</el-button>
</div>
</div>
<el-table
:data="addForm.wgPayInfos"
style="width: 100%"
border
@selection-change="val => delPayInfos = val"
>
<el-table-column
type="selection"
align="center"
width="55"
v-if="addForm.wgPayInfos.length">
</el-table-column>
<el-table-column
label="费用"
prop="joinPrice"
align="center"
width="150">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinPrice"></el-input>
</template>
</el-table-column>
<el-table-column
label="年份"
prop="joinYear"
align="center"
width="150">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinYear"></el-input>
</template>
</el-table-column>
<el-table-column
label="状态"
prop="joinStatus"
align="center">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinStatus"></el-input>
</template>
</el-table-column>
<el-table-column
label="计划内"
prop="joinJhn"
align="center">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinJhn"></el-input>
</template>
</el-table-column>
<el-table-column
label="缴费方式"
prop="joinJffs"
align="center"
width="150">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinJffs"></el-input>
</template>
</el-table-column>
<el-table-column
label="费用列支"
prop="joinFylz"
align="center"
width="200">
<template slot-scope="scope">
<el-input style="margin: 10px 0;" v-model="scope.row.joinFylz"></el-input>
</template>
</el-table-column>
<el-table-column
prop="joinfile"
label="资料"
width="250"
align="center">
<template slot-scope="scope">
<div v-if="scope.row.joinfile.length > 0" class="fileClass">
<div v-for="(item, index) in scope.row.joinfile" :key="index" @click="fileUpload('支付信息', scope.$index)" style="margin-right: 5px;">
{{ item.name }}
</div>
</div>
<div v-else>
<el-button
type="primary"
class="common-button-primary"
@click="fileUpload('支付信息', scope.$index)"
size="mini">
点击上传
</el-button>
</div>
</template>
</el-table-column>
</el-table>
<div class="formTitle">
<div class="left">参会记录</div>
<div class="right">
<el-button
type="primary"
size="mini"
class="common-button-primary"
@click="addChItem">
添加参会记录
</el-button>
<el-button
type="danger"
size="mini"
class="common-button-primary"
v-if="addForm.wgMeetingInfos.length"
@click="delChItem">
删除
</el-button>
</div>
</div>
<el-table
:data="addForm.wgMeetingInfos"
style="width: 100%"
border
@selection-change="val => delMeetingInfos = val"
>
<el-table-column
type="selection"
align="center"
width="55"
v-if="addForm.wgMeetingInfos.length">
</el-table-column>
<el-table-column
prop="joinfile"
label="资料"
width="250"
align="center">
<template slot-scope="scope">
<div v-if="scope.row.joinfile.length > 0" class="fileClass">
<div v-for="(item, index) in scope.row.joinfile" :key="index" @click="fileUpload('参会记录', scope.$index)" style="margin-right: 5px;">
{{ item.name }}
</div>
</div>
<div v-else>
<el-button
type="primary"
class="common-button-primary"
@click="fileUpload('参会记录', scope.$index)"
size="mini">
点击上传
</el-button>
</div>
</template>
</el-table-column>
</el-table>
</el-form>
</el-col>
</el-row>
</div>
</div>
</el-drawer>
<el-dialog width='400px' :visible.sync="fileMadel" title="上传资料">
<el-upload
v-if="fileMadel"
multiple
class="upload-demo"
drag
:action="fileUrl"
ref="importfile2"
name="file"
accept=".ZIP, .zip, .docx, .DOCX, .xls, .xlsx"
: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>
</div>
</template>
<script>
@@ -10,34 +494,282 @@
name: "workingGroup1",
data() {
return {
headerNo: false,
addForm: {
pName: '',
level: '',
itemType: '',
number: '', // 编号
name: '', // 名字
state: '', // 状态
properties: '', // 性质
hjTime: '', // 换届时间
field: '', // 标准化工作领域
mark: '', // 备注
wgNetInfos: [], // 秘书联系方式
wgMeetingInfos: [], // 参会记录
wgDepts: [], // 集团参与
wgStandorpolicyInfos: [], // 标准政策
wgPayInfos: [], // 支付信息
},
delNetInfos: [], // 删除秘书处数据集合
delDepts: [], // 删除集团参与数据集合
delPayInfos: [], // 删除支付信息数据集合
delMeetingInfos: [], // 删除参会记录数据集合
activeName: 'workingGroup1',
graphData: {},
graph: null,
currentNode: '',
currentNodeData: {},
addForm: {
pMenuName: '',
menuType: '',
sarGroupMenuEO: {
pid: '',
menuType: '',
menuLevel: ''
}
},
pMenuName: '',
menuType: '',
detailData: {
menuId: '',
nodeType: '',
nodeName: '',
parentId: '',
standFlag: '',
data: ''
},
delData: {},
addDrawerTitle: '',
addDrawer: false,
addButton: false,
editButton: false,
delectButton: false,
seeButton: false,
addItemButton: false,
seeItemButton: false,
fileIndex: '',
fileList: [],
fileMadel: false,
fileUrl: 'api/att/attFile/upload',
fileType: '',
}
},
methods: {
fileUpload(type, index) {
this.fileIndex = index
this.fileType = type
if (this.fileType === '集团参与情况') {
this.fileList = this.addForm.wgDepts[this.fileIndex].joinfile
} else if (this.fileType === '支付信息') {
this.fileList = this.addForm.wgPayInfos[this.fileIndex].joinfile
} else if (this.fileType === '参会记录') {
this.fileList = this.addForm.wgMeetingInfos[this.fileIndex].joinfile
}
this.fileMadel = true
},
importFileSuccess(response, file) {
if (response.ok) {
let data
if (this.fileType === '集团参与情况') {
this.addForm.wgDepts[this.fileIndex].joinfile.push(response.data)
data = this.addForm.wgDepts
} else if (this.fileType === '支付信息') {
this.addForm.wgPayInfos[this.fileIndex].joinfile.push(response.data)
data = this.addForm.wgPayInfos
} else if (this.fileType === '参会记录') {
this.addForm.wgMeetingInfos[this.fileIndex].joinfile.push(response.data)
data = this.addForm.wgMeetingInfos
}
let list = ''
data[this.fileIndex].joinfile.forEach(item => {
if (list.length > 0) {
list += ','
list += item.name
} else {
list+= item.name
}
})
data[this.fileIndex].joinfileName = list
this.$message({
showClose: true,
message: response.message,
type: 'success'
})
} else {
this.$message.error('程序异常,上传失败')
}
},
importFileRemove(file, fileList) {
let list = ''
let data
if (this.fileType === '集团参与情况') {
this.addForm.wgDepts[this.fileIndex].joinfile.push(response.data)
data = this.addForm.wgDepts
} else if (this.fileType === '支付信息') {
this.addForm.wgPayInfos[this.fileIndex].joinfile.push(response.data)
data = this.addForm.wgPayInfos
} else if (this.fileType === '参会记录') {
this.addForm.wgMeetingInfos[this.fileIndex].joinfile.push(response.data)
data = this.addForm.wgMeetingInfos
}
data[this.fileIndex].joinfile = []
if (fileList.length) {
fileList.forEach(item => {
data[this.fileIndex].joinfile.push(item)
if (list.length > 0) {
list += ','
list += item.name
} else {
list+= item.name
}
})
data[this.fileIndex].joinfileName = list
} else {
data[this.fileIndex].joinfile = []
data[this.fileIndex].joinfileName = ''
}
},
// 导入按钮 上传之前的钩子
beginImportFile(file) {
var filename = file.name
var index1 = filename.lastIndexOf('.')
var index2 = filename.length
var fileSuffix = filename.substring(index1, index2)
// const fileSuffix = file.name.split('.')[1] // 后缀名
// 判断上传文件格式
if (fileSuffix === '.ppt' || fileSuffix === '.docx' || fileSuffix === '.DOCX' || fileSuffix === '.PPT' || fileSuffix === '.xls' || fileSuffix === '.xlsx') {
return true
} else {
this.$message.error('文件' + file.name + '格式不正确,请上传PPT,DOCX,XLS文件')
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
},
addTelItem () {
var id = Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
this.addForm.wgNetInfos.push({
joinId: id,
joinPersonCompany: '',
joinPerson: '',
joinPersonPhone: '',
joinPersonEmail: ''
})
}, // 新增秘书处联系方式
addCyItem () {
var id = Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
this.addForm.wgDepts.push({
joinId: id,
joinPersonCompany: '',
joinPerson: '',
joinPersonPhone: '',
joinPersonEmail: '',
joinDept: '',
joinSf: '',
joinfile: [],
joinfileName: '',
joinPm: ''
})
}, // 新增集团参与情况
addZfItem () {
var id = Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
this.addForm.wgPayInfos.push({
joinId: id,
joinPrice: '',
joinYear: '',
joinStatus: '',
joinJhn: '',
joinJffs: '',
joinfile: [],
joinfileName: '',
joinFylz: ''
})
}, // 新增支付信息
addChItem () {
var id = Number(Math.random().toString().substr(3, 3) + Date.now()).toString(36);
this.addForm.wgMeetingInfos.push({
joinId: id,
joinfile: [],
joinfileName: '',
})
}, // 新增参会记录
delTelItem () {
if (this.delNetInfos.length) {
this.$confirm('您是否确认删除选中数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
confirmButtonClass: 'common-button-primary',
roundButton: true
}).then(() => {
for (let a = 0; a < this.addForm.wgNetInfos.length; a++) {
this.delNetInfos.forEach(item => {
if (this.addForm.wgNetInfos[a].joinId === item.joinId) {
this.addForm.wgNetInfos.splice(a, 1)
}
})
}
}).catch(() => {})
} else {
this.$message.warning('请选择要移除的数据')
}
}, // 删除秘书处联系方式
delCyItem () {
if (this.delDepts.length) {
this.$confirm('您是否确认删除选中数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
confirmButtonClass: 'common-button-primary',
roundButton: true
}).then(() => {
for (let a = 0; a < this.addForm.wgDepts.length; a++) {
this.delDepts.forEach(item => {
if (this.addForm.wgDepts[a].joinId === item.joinId) {
this.addForm.wgDepts.splice(a, 1)
}
})
}
}).catch(() => {})
} else {
this.$message.warning('请选择要移除的数据')
}
}, // 删除集团参与情况
delZfItem () {
if (this.delPayInfos.length) {
this.$confirm('您是否确认删除选中数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
confirmButtonClass: 'common-button-primary',
roundButton: true
}).then(() => {
for (let a = 0; a < this.addForm.wgPayInfos.length; a++) {
this.delPayInfos.forEach(item => {
if (this.addForm.wgPayInfos[a].joinId === item.joinId) {
this.addForm.wgPayInfos.splice(a, 1)
}
})
}
}).catch(() => {})
} else {
this.$message.warning('请选择要移除的数据')
}
}, // 删除支付信息
delChItem () {
if (this.delMeetingInfos.length) {
this.$confirm('您是否确认删除选中数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
confirmButtonClass: 'common-button-primary',
roundButton: true
}).then(() => {
for (let a = 0; a < this.addForm.wgMeetingInfos.length; a++) {
this.delMeetingInfos.forEach(item => {
if (this.addForm.wgMeetingInfos[a].joinId === item.joinId) {
this.addForm.wgMeetingInfos.splice(a, 1)
}
})
}
}).catch(() => {})
} else {
this.$message.warning('请选择要移除的数据')
}
}, // 删除参会记录
addItem () {
this.addDrawer = true
}, // 新增
addDrawerClose () {
this.addDrawer = false
}, // drawer关闭事件
getData () {
this.$http.get('wg_work_group/researchData', {
type: '0'
@@ -48,14 +780,61 @@
this.renderGraph(res.data)
}
})
},
}, // 获取数据
handleNodeClick (node) {
let json = {
id: '123',
name: '123',
this.headerNo = true
let row = node._cfg.model
console.log(row);
this.addForm = {
wgNetInfos: [],
wgDepts: [],
wgPayInfos: [],
wgMeetingInfos: [],
level: row.level,
pName: row.name,
itemType: row.level === '0' ? '标委会' : (row.level === '1' ? '分标委' : (row.level === '2' ? '工作组' : '标准'))
}
},
if (row.level === '0') {
this.addDrawerTitle = '新增标委会'
this.addButton = true
this.addItemButton = false
this.editButton = false
this.delectButton = false
this.seeButton = false
this.seeItemButton = false
} else if (row.level === '1') {
this.addDrawerTitle = '新增分标委'
this.addButton = true
this.addItemButton = false
this.editButton = true
this.delectButton = true
this.seeButton = true
this.seeItemButton = false
} else if (row.level === '2') {
this.addDrawerTitle = '新增工作组'
this.addButton = true
this.addItemButton = false
this.editButton = true
this.delectButton = true
this.seeButton = true
this.seeItemButton = false
} else if (row.level === '3') {
this.addDrawerTitle = '新增标准'
this.addButton = false
this.addItemButton = true
this.editButton = true
this.delectButton = true
this.seeButton = true
this.seeItemButton = false
} else if (row.level === '4') {
this.addButton = false
this.addItemButton = false
this.editButton = false
this.delectButton = true
this.seeButton = false
this.seeItemButton = true
}
}, // 点击节点事件
handleEdgeClick (node) {},
renderGraph(row) {
this.graphData = row
@@ -280,9 +1059,19 @@
this.handleEdgeClick (edgeItem)
});
},
getList() {
this.$http.get('sys/dictype/getDicTypeListCode', {},{
_this: this
}, res => {
if (res.ok) {
console.log(res);
}
})
}
},
mounted() {
this.getData();
this.getList()
},
created() {
// this.getData();
@@ -296,5 +1085,27 @@
<style lang="less" scoped>
.workingGroup1{
height: 100%;
/deep/.el-form-item__label {
height: 100%;
}
/deep/.el-form-item__content {
line-height: 50px;
height: 100%;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
.header-right {
}
}
.formTitle {
display: flex;
justify-content: space-between;
align-items: center;
.left {
font-weight: bold;
}
}
}
</style>