feature: 重构产品标准

This commit is contained in:
zyn
2024-01-04 11:24:51 +08:00
parent 1ecd340786
commit adb54fcb4c
15 changed files with 3031 additions and 3 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,197 @@
<template>
<div class="prc-content-border">
<el-row :gutter="24">
<el-col :span="12">
<SelectFormItem
v-model="form.standSort"
label="企标类别"
prop="standSort"
:customPlaceholder="standStatusPlaceholder"
:disabled="standStatusDisabled"
:options="dict.BUSSSTANDCLASS"
@change="standSortChange"
/>
<InputFormItem
v-model="form.standName"
label="中文名称"
prop="standName"
:disabled="disabled"
/>
<DatePickerFormItem
v-model="form.issueTime"
label="发布日期"
prop="issueTime"
:disabled="disabled"
/>
<InputFormItem
v-if="showStandYear"
v-model="form.standYear"
label="标准年份"
prop="standYear"
:disabled="standYearDisabled"
/>
</el-col>
<el-col :span="12">
<el-form-item v-if="showStandNum" label="企标顺序号" prop="standNum" class="add-form-item form-item-disabled standNum">
<el-input
:value="form.standNum"
placeholder="请输入企标顺序号"
clearable
@input="standNumChange"
/>
<span style="position: absolute;right: 0;color: rgb(64, 158, 255);cursor: pointer" @click="queryOrder">当前顺序号查询</span>
</el-form-item>
<el-form-item v-show="form.standStatus === '2' || form.standStatus === '3'" class="add-form-item form-item-disabled" style="margin-left: -210px">
<el-button
:disabled="disabled"
type="primary"
@click="dragIn"
>
根据企标名称起草责任单位查询
</el-button>
</el-form-item>
<SelectFormItem
v-model="form.standStatus"
label="制修订类型"
prop="standStatus"
:disabled="disabled"
:options="opinionsStand"
@change="standStatusChange"
/>
<InputFormItem
v-if="showStandCode"
v-model="form.standCode"
label="企业标准号"
prop="standCode"
:disabled="standCodeDisabled"
/>
<InputFormItem
v-model="form.standEnName"
label="英文名称"
prop="standEnName"
:disabled="disabled"
/>
<DatePickerFormItem
v-model="form.expirationDate"
label="截止日期"
prop="expirationDate"
:disabled="disabled"
/>
<DatePickerFormItem
v-model="form.putTime"
label="企标实施日期"
prop="putTime"
:disabled="disabled"
/>
</el-col>
</el-row>
<CurrentOrder ref="CurrentOrderRef" />
</div>
</template>
<script>
import InputFormItem from '@/components/hzwlComponents/InputFormItem'
import SelectFormItem from '@/components/hzwlComponents/SelectFormItem'
import DatePickerFormItem from '@/components/hzwlComponents/DatePickerFormItem'
import CurrentOrder from '@/pages/processCenter/pages/components/CurrentOrder';
export default {
name: 'Basic',
components: {
InputFormItem,
SelectFormItem,
DatePickerFormItem,
CurrentOrder,
},
props: {
form: {
type: Object,
required: true
},
dict: {
type: Object,
default: () => ({})
},
disabled: {
type: Boolean,
default: () => false
},
planDisabled: {
type: Boolean,
default: () => true
}
},
data () {
const opinionsStand = [
{ value: '1', label: '制定' },
{ value: '2', label: '修订' },
{ value: '3', label: '修改' },
]
return {
opinionsStand
}
},
computed: {
standStatusPlaceholder () {
if (this.form.standStatus === '1') {
return '请选择企标类别'
}
return '请先选择企业标准带入企标类别'
},
standStatusDisabled () {
if (this.form.standStatus === '1' || this.form.standStatus === '2') {
return this.disabled
}
return this.disabled || this.planDisabled
},
standCodeDisabled () {
return true
},
standYearDisabled () {
return true
},
showStandNum () {
if (this.form.standStatus === '1' && this.$route.params.type === '13') {
return true
}
return false
},
showStandYear () {
if (this.form.standStatus === '3' || this.$route.params.type === '13') {
return true
}
return false
},
showStandCode () {
if (this.form.standStatus === '3' || this.$route.params.type === '13') {
return true
}
return false
}
},
methods: {
dragIn () {
this.$emit('dragIn')
},
standStatusChange (e) {
this.$emit('standStatusChange', e)
},
queryOrder () {
this.$refs.CurrentOrderRef.open(this.form.standSort, this.form.standNum)
},
standSortChange (e) {
this.$emit('standSortChange', e)
},
standNumChange (e) {
this.$emit('standNumChange', e)
},
}
}
</script>
<style scoped lang="less">
.standNum /deep/.el-form-item__error{
right: 110px !important;
}
</style>
@@ -0,0 +1,357 @@
<template>
<div>
<div class="action-bar">
<el-button
type="primary"
size="mini"
class="common-button-primary add-button"
@click="createRow"
>
创建条款
</el-button>
</div>
<el-table
ref="selection"
class="modelForm"
tooltip-effect="dark"
style="width: 100%;margin-bottom: 20px;overflow-y:auto;height:56vh;border-bottom: 1px solid #EBEEF5;"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',fontWeight: 'bold', height: '48px'}"
row-key="id"
:data="form.modelData"
border
default-expand-all
>
<el-table-column
label="序号"
width="50"
align="center"
>
<template slot-scope="scope">
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column
prop="modelNum"
label="条款号"
min-width="12%"
align="center"
>
<template slot-scope="scope">
<el-input v-model="scope.row.modelNum" :title="scope.row.modelNum" placeholder="请填写条款号" />
</template>
</el-table-column>
<el-table-column
label="修改前"
align="center"
min-width="20%"
>
<template slot-scope="scope">
<el-form-item
style="margin-left: 0;margin-bottom:0;"
>
<el-input v-model="scope.row.modelUpdBefore" :title="scope.row.modelUpdBefore" :disabled="scope.row.disabled" placeholder="请填写章节修改前内容" />
</el-form-item>
</template>
</el-table-column>
<el-table-column
label="修改后"
align="center"
min-width="20%"
>
<template slot-scope="scope">
<el-form-item
style="margin-left: 0;margin-bottom:0;"
>
<el-input v-model="scope.row.modelUpdAfter" :title="scope.row.modelUpdAfter" :disabled="scope.row.disabled" placeholder="请填写章节修改后内容" />
</el-form-item>
</template>
</el-table-column>
<el-table-column
label="修改理由"
align="center"
min-width="20%"
>
<template slot-scope="scope">
<el-form-item
style="margin-left: 0;margin-bottom:0;"
>
<el-input v-model="scope.row.modelContent" :disabled="scope.row.disabled" placeholder="请填写修改理由" />
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="zrDeptIdName"
label="提出部门"
align="center"
min-width="15%"
/>
<el-table-column
prop="zrUserIdName"
label="责任人"
min-width="15%"
align="center"
/>
<el-table-column label="操作" align="center" min-width="5%">
<template slot-scope="scope">
<div style="display: inline-block" @click.stop>
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-btn-permission="''" :command="[scope.$index,scope.row, '删除']">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
</el-table-column>
</el-table>
<el-drawer
ref="standard"
size="1400px"
:title="showDrawerTitle"
:visible.sync="showDrawer"
>
<div style="height: 98%;display: flex;">
<div class="left">
<el-tabs v-model="current" type="card" style="height: 100%" @tab-click="previewIframe">
<el-tab-pane
v-for="item in FBGBUSSFileList"
:key="item.name"
style="height: 100%"
:label="item.name"
:name="item.id"
>
<loading :loading="iframeLoading">正在加载文档</loading>
<iframe
ref="iframe"
width="100%"
height="100%"
wframeborder="0"
:src="iframeUrl"
/>
</el-tab-pane>
</el-tabs>
</div>
<div class="rightDiv">
<div class="search-area">
<el-form
ref="showForm"
:model="showForm"
:rules="showFormRules"
class="label-input-form"
style="width: 100%;"
>
<el-form-item label="条款号" prop="modelNum" class="add-form-item">
<el-input
v-model="showForm.modelNum"
clearable
/>
</el-form-item>
<el-form-item label="修改前" prop="modelUpdBefore" class="add-form-item">
<el-input
v-model="showForm.modelUpdBefore"
clearable
/>
</el-form-item>
<el-form-item label="修改后" prop="modelUpdAfter" class="add-form-item">
<el-input
v-model="showForm.modelUpdAfter"
clearable
/>
</el-form-item>
<el-form-item label="修改理由" prop="modelContent" class="add-form-item">
<el-input
v-model="showForm.modelContent"
clearable
/>
</el-form-item>
<el-form-item label="提出部门" prop="zrDeptIdName" class="add-form-item form-item-disabled">
<el-input
v-model="showForm.zrDeptIdName"
disabled
clearable
/>
</el-form-item>
<el-form-item label="责任人" prop="zrUserIdName" class="add-form-item form-item-disabled">
<el-input
v-model="showForm.zrUserIdName"
disabled
clearable
/>
</el-form-item>
</el-form>
</div>
<div class="demo-drawer-footer">
<el-button
size="mini"
class="common-button-primary"
icon="el-icon-check"
type="primary"
@click="createRowSubmit"
>
提交
</el-button>
</div>
</div>
</div>
</el-drawer>
</div>
</template>
<script>
export default {
name: 'Countersign',
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: false
},
},
data () {
const showForm = {
modelNum: '',
modelName: '',
modelUpdBefore: '',
modelUpdAfter: '',
modelContent: '',
zrUserId: this.$store.getters.userInfo.userId,
zrUserIdName: this.$store.getters.userInfo.userName,
zrDeptId: this.$store.getters.userInfo.institutionId,
zrDeptIdName: this.$store.getters.userInfo.institutionName,
}
const showFormRules = {
modelNum: [
{ required: true, message: '请填写条款号', trigger: 'blur' },
],
modelUpdBefore: [
{ required: true, message: '请填写修改前', trigger: 'blur' },
],
modelUpdAfter: [
{ required: true, message: '请填写修改后', trigger: 'blur' },
],
modelContent: [
{ required: true, message: '请填写修改理由', trigger: 'blur' },
],
}
return {
FBGBUSSFileList: [],
showDrawerTitle: '',
showDrawer: false,
iframeLoading: false,
iframeUrl: '',
current: '',
showForm,
initShowForm: JSON.parse(JSON.stringify(showForm)),
showFormRules,
}
},
methods: {
createRow () {
this.showForm = JSON.parse(JSON.stringify(this.initShowForm))
const ids = this.form.FBGBUSS.split(',')
const names = this.form.FBGBUSSName.split(',')
this.FBGBUSSFileList = ids.map((id, index) => ({ id, name: names[index] }))
if (ids.length > 0) {
this.current = ids[0]
this.previewShow(ids[0])
}
this.showDrawer = true
this.showDrawerTitle = '新增征求意见'
},
previewShow (id) {
this.iframeLoading = true
this.$preview(id, 'getUrl').then((url) => {
this.iframeUrl = url
}).finally(() => {
this.iframeLoading = false
})
},
previewIframe (tab) {
const id = tab.name
this.iframeUrl = ''
this.previewShow(id)
},
createRowSubmit () {
this.$refs['showForm'].validate((valid) => {
if (valid) {
if(!this.form.modelData) {
this.form.modelData = []
}
this.form.modelData.push(this.showForm);
this.$message.success('新增成功')
this.showDrawer = false
}
})
},
handleCommand (command) {
switch (command[2]) {
case '删除':
this.handleDelete(command[0], command[1])
break
}
},
handleDelete (val) {
this.$confirm('是否确认删除本条数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'info'
}).then(() => {
this.form.modelData.splice(val, 1)
this.$message({
message: '删除成功',
type: 'success',
duration: 2000
});
});
},
}
}
</script>
<style scoped lang="less">
/deep/ .left {
width: 60%;
height: calc(~'100% - 52px');
}
/deep/ .el-tabs__content{
height: 100% !important;
}
/deep/ .rightDiv {
background: #fff;
width: 40%;
height: 98%;
.height {
margin-bottom: 0;
padding: 10px 20px;
font-size: 18px;
font-weight: bold;
color: #333333;
border-bottom: 1px solid #e5e5e5;
}
.search-area {
height: calc(~'100% - 52px');
overflow: auto;
}
.demo-drawer-footer {
width: 100%;
padding: 0 20px;
height: 50px;
line-height: 50px;
border-top: 1px solid #e8e8e8;
text-align: right;
background: #fff;
z-index: 999;
}
}
.modelForm /deep/ .el-form-item__content{
margin-left: 0 !important;
}
</style>
@@ -0,0 +1,129 @@
<template>
<el-table
ref="selection"
tooltip-effect="dark"
style="width: 100%;margin-bottom: 20px;overflow-y:auto;height:auto;border-bottom: 1px solid #EBEEF5;"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',fontWeight: 'bold', height: '48px'}"
row-key="id"
:data="form.infoList"
border
default-expand-all
>
<el-table-column
label="序号"
min-width="6%"
align="center"
>
<template slot-scope="scope">
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column
prop="modelNum"
label="条款号"
min-width="8%"
align="center"
/>
<el-table-column
prop="modelUpdBefore"
label="修改前"
align="center"
min-width="20%"
/>
<el-table-column
prop="modelUpdAfter"
label="修改后"
align="center"
min-width="20%"
/>
<el-table-column
prop="modelContent"
label="修改理由"
align="center"
min-width="20%"
/>
<el-table-column
prop="zrDeptIdName"
label="提出部门"
align="center"
min-width="15%"
/>
<el-table-column
prop="zrUserIdName"
label="责任人"
min-width="14%"
align="center"
/>
<el-table-column
label="意见是否采纳"
min-width="15%"
align="center"
>
<template slot-scope="scope">
<el-select
v-if="type==='6' || type==='C6'"
v-model="scope.row.opinionsAdopted"
filterable
clearable
:disabled="disabled"
>
<el-option
v-for="item in opinionsAdoptedOptions"
:key="item.value"
:value="item.value"
:label="item.label"
/>
</el-select>
<span v-else>{{ scope.row.opinionsAdopted }}</span>
</template>
</el-table-column>
<el-table-column
prop="opinionsAdoptedCont"
label="采纳理由"
align="center"
min-width="15%"
>
<template slot-scope="scope">
<el-input
v-if="type==='6' || type==='C6'"
v-model="scope.row.opinionsAdoptedCont"
clearable
placeholder="请填写采纳理由"
:disabled="disabled"
/>
<span v-else>{{ scope.row.opinionsAdoptedCont }}</span>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
name: 'CountersignInfo',
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: () => false
}
},
data () {
const opinionsAdoptedOptions = [
{ value: '1', label: '采纳' },
{ value: '2', label: '部分采纳' },
{ value: '3', label: '不采纳' },
]
return {
opinionsAdoptedOptions,
type: this.$route.params.type
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,71 @@
<template>
<el-table
ref="selection"
tooltip-effect="dark"
style="width: 100%;;overflow-y:auto;height:auto;border-bottom: 1px solid #EBEEF5;"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',fontWeight: 'bold', height: '48px'}"
:data="form.fileModelList"
border
default-expand-all
>
<el-table-column
type="index"
label="序号"
width="50"
align="center"
/>
<el-table-column
prop="footFileName"
label="编写文件名称"
align="center"
min-width="30%"
/>
<el-table-column
prop="userName"
label="起草人"
min-width="15%"
align="center"
/>
<el-table-column label="操作" align="center" min-width="5%">
<template slot-scope="scope">
<div style="display: inline-block;cursor: pointer;color: #409EFF;" @click="filePreview(scope.row,'onLine')">
预览
</div>
&nbsp;&nbsp;
<div style="display: inline-block;cursor: pointer;color: #409EFF;" @click="filePreview(scope.row,'down')">
下载
</div>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
name: 'FileSummary',
props: {
form: {
type: Object,
required: true
},
},
methods: {
filePreview (file, type) {
const attId = file.footFile
if (type === 'down') {
if (attId) {
window.location.href = '/api/att/attFile/downloadFileForSarNew?fileId=' + attId
} else {
this.$message.warning('文件不存在,下载失败')
}
} else {
this.$preview(attId)
}
},
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,367 @@
<template>
<div class="prc-content-border">
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="代替企标编号" prop="DTQBBHBUSS" class="add-form-item form-item-disabled">
<el-input
v-model="form.DTQBBHBUSS"
disabled
type="textarea"
resize="none"
:autosize="true"
:title="form.DTQBBHBUSS"
placeholder="请输入代替标准号"
clearable
/>
<el-button
:disabled="disabled"
type="primary"
class="common-button-primary"
size="mini"
style="position:absolute;top: 10px;right: 0;"
@click="selectLaws('DTQBBHBUSS')"
>
{{ '手动查找' }}
</el-button>
</el-form-item>
<UploadFormItem
label="关联文件"
prop="GLWJBUSSName"
:ids.sync="form.GLWJBUSS"
:names.sync="form.GLWJBUSSName"
:disabled="disabled"
:down="down"
/>
</el-col>
<el-col :span="12">
<el-form-item label="被代替企标编号" prop="BDTQBBHBUSS" class="add-form-item form-item-disabled">
<el-input
v-model="form.BDTQBBHBUSS"
disabled
type="textarea"
resize="none"
:autosize="true"
:title="form.BDTQBBHBUSS"
placeholder="请输入被代替企标编号"
clearable
/>
<el-button
:disabled="disabled"
type="primary"
class="common-button-primary"
size="mini"
style="position:absolute;top: 10px;right: 0;"
@click="selectLaws('BDTQBBHBUSS')"
>
{{ '手动查找' }}
</el-button>
</el-form-item>
<InputFormItem
v-model="form.XCSJBUSS"
label="上传时间"
prop="XCSJBUSS"
disabled
/>
</el-col>
</el-row>
<el-dialog
:title="dialogTitle"
:visible.sync="replaceLawsNumModel"
width="875px"
:close-on-click-modal="false"
:append-to-body="true"
@close="replaceLawsNumModelCancel"
>
<div class="search-area">
<div class="left">
<el-form :modal="replaceLawsNumForm" :inline="true" class="label-input-form">
<el-form-item label="编号/名称" class="search-item">
<el-input
v-model="replaceLawsNumForm.numberName"
:disabled="disabled"
placeholder="根据编号/名称查找"
clearable
:maxlength="100"
/>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
:disabled="disabled"
type="primary"
class="common-button-primary"
size="small"
@click="getReplaceLawsNumRowFirst"
>
查询
</el-button>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
:disabled="disabled"
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
type="index"
width="55"
label="序号"
align="center"
>
<template slot-scope="{scope, column, $index}">
{{ ($index + 1) + (replaceLawsNumForm.page - 1) * replaceLawsNumForm.pageSize }}
</template>
</el-table-column>
<el-table-column
label="企标编号"
>
<template slot-scope="scope">
<a class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.standCode }}</a>
</template>
</el-table-column>
<el-table-column
prop="standName"
label="企标名称"
/>
<el-table-column
prop="issueTime"
label="发布日期"
width="130"
>
<template slot-scope="scope">{{ scope.row.issueTime ? $moment(scope.row.issueTime).format('YYYY-MM-DD') : '' }}</template>
</el-table-column>
<el-table-column
prop="textStatusBuss"
label="标准状态"
width="130"
>
<template slot-scope="scope">
<span>{{ scope.row.standStatusShow }}</span>
</template>
</el-table-column>
</el-table>
<loading :loading="replaceLoading">{{ $t('m.dataAcquisition') }}</loading>
<!--分页-->
<pagination
style="position: relative;"
:page="replaceLawsNumForm.page"
:total="replaceLawsNumForm.total"
@pageChange="pageChangeReplace"
@pageSizeChange="pageSizeChangeReplace"
/>
<div slot="footer" class="demo-drawer-footer">
<el-button
:disabled="disabled"
class="common-button-default"
round
icon="el-icon-close"
@click="replaceLawsNumModel = false"
>
取消
</el-button>
<el-button
:disabled="disabled"
type="primary"
round
class="common-button-primary"
icon="el-icon-check"
@click="replaceLawsNumModelBt"
>
提交
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { selectByIdAtt } from '@/api/flow/index.js'
import UploadFormItem from '@/components/hzwlComponents/UploadFormItem';
import InputFormItem from '@/components/hzwlComponents/InputFormItem'
export default {
name: 'Info',
components: {
UploadFormItem,
InputFormItem
},
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: () => false
},
down: {
type: Boolean,
default: () => false
}
},
data () {
// 代替标准号
const replaceLawsNumForm = {
numberName: '',
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
total: 0,
standType: 'BUSINESS',
validFlag: '0',
}
return {
dialogTitle: '',
initReplaceLawsNumForm: JSON.parse(JSON.stringify(replaceLawsNumForm)),
replaceLawsNumForm,
replaceLawsNumModel: false,
replaceLawsNumRow: [],
selectedListRep: [],
replaceLoading: false,
initData: { // 存放初始数据
LSBBBUSS: '',
LSBBBUSSName: '',
}
}
},
methods: {
selectLaws (type) {
if (type === 'DTQBBHBUSS') {
this.dialogTitle = '代替企标编号'
}
if (type === 'BDTQBBHBUSS') {
this.dialogTitle = '被代替企标编号'
}
this.replaceLawsNumForm.numberName = ''
this.replaceLawsNumModel = true
this.getReplaceLawsNumRow()
},
// 代替政策号 请求数据
getReplaceLawsNumRowFirst () {
this.replaceLawsNumForm.page = 1
this.getReplaceLawsNumRow()
},
// 代替企标编号 请求数据
getReplaceLawsNumRow () {
this.$http.get('lawss/sarBussionessStand/getSarBussionStandPage', this.replaceLawsNumForm, {
_this: this,
loading: 'replaceLoading'
}, res => {
this.replaceLawsNumRow = res.data.list
this.replaceLawsNumForm.total = res.data.count
}, e => {
})
},
// 代替政策编号-取消
replaceLawsNumModelCancel () {
this.replaceLawsNumFormSearch()
this.$refs.selections.clearSelection()
},
// 代替政策号 table选择事件
selectReplaceStandNumRowChange (row) {
this.selectedListRep = row
},
replaceLawsNumFormSearch () {
this.replaceLawsNumForm = JSON.parse(JSON.stringify(this.initReplaceLawsNumForm))
},
getResetLawsNumRow () {
this.replaceLawsNumFormSearch()
this.getReplaceLawsNumRow()
},
// 代替政策分页
pageChangeReplace (page) {
this.replaceLawsNumForm.page = page
this.getReplaceLawsNumRow()
},
pageSizeChangeReplace (pageSize) {
this.replaceLawsNumForm.pageSize = pageSize
this.getReplaceLawsNumRow()
},
// 代替政策编号确定
replaceLawsNumModelBt () {
if (this.selectedListRep.length === 0) {
return this.$message({
message: '请先选择数据',
type: 'warning'
})
}
if (this.selectedListRep.length > 1) {
return this.$message({
message: '标准最多选择1项',
type: 'warning'
})
}
const standCode = this.selectedListRep[0].standCode
const standSort = this.selectedListRep[0].standSort || this.selectedListRep[0].standSortShow
if (this.dialogTitle === '代替企标编号') {
this.form.DTQBBHBUSS = standCode
if (this.form.standStatus === '2') {
this.$emit('DTQBBHBUSSChange', { standCode, standSort })
}
}
if (this.dialogTitle === '被代替企标编号') {
this.form.BDTQBBHBUSS = standCode
}
// 修订、修改 时 手动查找代替企标编号 发布稿放到历史版本
if (this.dialogTitle === '代替企标编号') {
if (this.form.standStatus === '2' || this.form.standStatus === '3') {
const id = this.selectedListRep[0].id
selectByIdAtt(id).then(res => {
if (res.ok && res.data && res.data.length > 0) {
const LSBBBUSSName = res.data.reduce((init, item) => init + ',' + item.fbgbussNmae, '').replace(/^,|,$/g, '')
const LSBBBUSS = res.data.reduce((init, item) => init + ',' + item.fbgbuss, '').replace(/^,|,$/g, '')
this.form.LSBBBUSS = (this.form.initLSBBBUSS + ',' + LSBBBUSS).replace(/^,|,$/g, '')
this.form.LSBBBUSSName = (this.form.initLSBBBUSSName + ',' + LSBBBUSSName).replace(/^,|,$/g, '')
this.$emit('refreshPage')
}
})
}
}
this.replaceLawsNumModel = false
},
// 点击查看
handlePreview (item) {
const routeUrl = this.$router.resolve({
name: 'OtherBussStandardDetails',
params: {
id: item.id,
pageType: 'BUSINESS_STAND'
}
})
window.open(routeUrl.href, '_blank')
},
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,125 @@
<template>
<el-timeline>
<el-form
ref="userForm"
:model="roleForm"
:rules="roleRules"
class="label-input-form"
>
<TimeLineFormItem
:id.sync="roleForm.prcCreateUserId"
prop="prcCreateUserName"
timestamp="起草"
title="标准起草人"
:name.sync="roleForm.prcCreateUserName"
disabled
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser2"
prop="bussUser2Name"
timestamp="企标编写"
title="其他起草人"
:name.sync="roleForm.bussUser2Name"
:disabled="disabled"
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser3"
prop="bussUser3Name"
timestamp="企标编写汇总"
title="标准起草人"
:name.sync="roleForm.bussUser3Name"
disabled
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser4"
prop="bussUser4Name"
timestamp="标准化初审"
title="标准法规工程师/事业部标准化员"
:name.sync="roleForm.bussUser4Name"
:disabled="disabled"
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser5"
prop="bussUser5Name"
timestamp="征求意见(各事业部标准化员(时代-苏杰贵、奥铃-蒋敏、欧航欧马可-吴娟、皮卡-王晶9、图雅诺-耿红静、欧辉-张蕾61、普罗科-符青萍、雷萨-刘金英),项目组各PMT/PAT)"
title="各事业部标准化员(时代-苏杰贵、奥铃-蒋敏、欧航欧马可-吴娟、皮卡-王晶9、图雅诺-耿红静、欧辉-张蕾61、普罗科-符青萍、雷萨-刘金英),项目组各PMT/PAT"
:name.sync="roleForm.bussUser5Name"
:disabled="disabled"
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser6"
prop="bussUser6Name"
timestamp="意见汇总修订"
title="标准起草人"
:name.sync="roleForm.bussUser6Name"
disabled
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser7"
prop="bussUser7Name"
timestamp="标准化复审"
title="标准法规工程师"
:name.sync="roleForm.bussUser7Name"
:disabled="disabled"
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser8"
prop="bussUser8Name"
timestamp="审核"
title="总院项目总工、标准法规部高级经理/各事业部整车所产品经理、各事业部标准业务经理"
:name.sync="roleForm.bussUser8Name"
:disabled="disabled"
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser10"
prop="bussUser10Name"
timestamp="审定"
title="产品工程经理、技术管理中心主任/事业部技术中心主任、标准法规部高级经理"
:name.sync="roleForm.bussUser10Name"
:disabled="disabled"
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser12"
prop="bussUser12Name"
timestamp="批准"
title="总院项目经理/事业部研发副总裁"
:name.sync="roleForm.bussUser12Name"
:disabled="disabled"
/>
<TimeLineFormItem
:id.sync="roleForm.bussUser13"
prop="bussUser13Name"
timestamp="发布"
title="标准法规工程师"
:name.sync="roleForm.bussUser13Name"
:disabled="disabled"
/>
</el-form>
</el-timeline>
</template>
<script>
import TimeLineFormItem from '@/components/hzwlComponents/TimeLineFormItem'
export default {
name: 'PersonInfo',
components: {
TimeLineFormItem
},
props: {
roleForm: {
type: Object
},
roleRules: {
type: Object
},
disabled: {
type: Boolean,
default: false
}
},
}
</script>
<style scoped>
</style>
@@ -0,0 +1,76 @@
<template>
<div class="prc-content-border">
<el-row :gutter="24">
<el-col :span="12">
<UploadFormItem
label="发布稿"
prop="FBGBUSSName"
:ids.sync="form.FBGBUSS"
:names.sync="form.FBGBUSSName"
:disabled="FBGBUSSDisabled"
:down="down"
/>
<UploadFormItem
label="历史版本"
prop="LSBBBUSSName"
:ids.sync="form.LSBBBUSS"
:names.sync="form.LSBBBUSSName"
:disabled="disabled"
:down="down"
/>
</el-col>
<el-col :span="12">
<UploadFormItem
label="修改单"
prop="XGDName"
:ids.sync="form.XGD"
:names.sync="form.XGDName"
:disabled="disabled"
:down="down"
/>
<UploadFormItem
label="其他文件"
prop="QTWJBUSSName"
:ids.sync="form.QTWJBUSS"
:names.sync="form.QTWJBUSSName"
:disabled="disabled"
:down="down"
/>
</el-col>
</el-row>
</div>
</template>
<script>
import UploadFormItem from '@/components/hzwlComponents/UploadFormItem';
export default {
name: 'ProcessFile',
components: {
UploadFormItem,
},
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: () => false
},
down: {
type: Boolean,
default: () => false
}
},
computed: {
FBGBUSSDisabled () {
return this.disabled || this.$route.params.type === '1'
},
},
}
</script>
<style scoped>
</style>
@@ -0,0 +1,152 @@
<template>
<div class="prc-content-border">
<el-row :gutter="24">
<el-col :span="12">
<DepartmentFormItem
v-model="form.QCDW"
prop="QCDW"
label="起草部门"
title="起草部门"
disabled
:ids.sync="form.QCDWId"
/>
<InputFormItem
v-model="form.WJSCRYBUSSName"
label="文件上传人员"
prop="WJSCRYBUSSName"
disabled
/>
<SelectMultipleFormItem
v-model="form.NYLXCLASS"
label="能源类型"
prop="NYLXCLASS"
:disabled="disabled"
:options="dict.NYLXCLASS || []"
/>
<el-form-item label="标准体系" prop="TXLBBUSS" class="add-form-item form-item-disabled">
<el-input
v-model="form.TXLBBUSS"
:disabled="disabled"
placeholder="选择标准体系"
clearable
@click.native="choiceZRR"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<personFormItem
:id.sync="form.QCRBUSSID"
v-model="form.QCRBUSS"
label="起草人"
prop="QCRBUSS"
:disabled="disabled"
@change="QCRBUSSChange"
/>
<SelectMultipleFormItem
v-model="form.SYCXCLASS"
label="适用车型"
prop="SYCXCLASS"
:disabled="disabled"
:options="dict.ENERGYTYPES || []"
/>
<SelectMultipleFormItem
v-model="form.SYCPXCLASS"
label="适用产品线"
prop="SYCPXCLASS"
:disabled="disabled"
:options="dict.SYCPXCLASS || []"
/>
</el-col>
</el-row>
<tree-select-new
v-if="!disabled"
:multiple="false"
:lazy="false"
:modalShowFlag="modalShowFlag"
drawerTitle="标准体系"
width="500"
:data="dict.TXLBBUSS"
:defaultProps="defaultProps"
:checkedKeys="[]"
nodeKey="id"
@popoverHide="popoverHide"
@popoverHideCancel="popoverHideCancel"
/>
</div>
</template>
<script>
import DepartmentFormItem from '@/components/hzwlComponents/DepartmentFormItem';
import InputFormItem from '@/components/hzwlComponents/InputFormItem'
import SelectFormItem from '@/components/hzwlComponents/SelectFormItem'
import SelectMultipleFormItem from '@/components/hzwlComponents/SelectMultipleFormItem'
import personFormItem from '@/components/hzwlComponents/personFormItem'
import TreeSelectNew from '@/components/treeSelect/treeSelectNew.vue';
export default {
name: 'Range',
components: {
DepartmentFormItem,
InputFormItem,
SelectFormItem,
SelectMultipleFormItem,
personFormItem,
TreeSelectNew
},
props: {
form: {
type: Object,
required: true
},
disabled: {
type: Boolean,
default: () => false
},
dict: {
type: Object,
default: () => ({})
},
},
data () {
return {
defaultProps: {
children: 'children',
label: 'menuName'
},
modalShowFlag: false
}
},
methods: {
choiceZRR () {
this.modalShowFlag = true
},
popoverHide (checkedIds, checkedData, isShow, isLoadChild, topId) {
if(checkedData) {
if (checkedData.parentId == null || checkedData.parentId === '') {
this.$message.error('请选择二级及以下目录')
return
}
this.form.TXLBBUSS = checkedData.menuName
this.form.menuId = checkedData.id
this.form.treeType = 'sarMs'
}
this.modalShowFlag = false
this.$forceUpdate()
},
popoverHideCancel () {
this.modalShowFlag = false
},
QCRBUSSChange (val) {
// 回显起草部门
if (val) {
this.form.QCDWID = val.ids
this.form.QCDW = val.names
}
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,298 @@
<template>
<el-drawer
ref="standard"
title="查询结果"
size="1300px"
:visible.sync="visible"
direction="rtl"
>
<div class="standard-content">
<div class="content">
<div class="standard-table-search">
<el-form :model="SearchForm" inline class="label-input-form search-area">
<el-form-item label="标准号" style="" prop="standNumber" class="search-item">
<el-input
v-model="SearchForm.standCode"
clearable
placeholder="根据编号查找"
:maxlength="100"
@keyup.enter.native="handleSearch"
/>
</el-form-item>
<el-form-item label="中文名称" style="" prop="lawsName" class="search-item">
<el-input
v-model="SearchForm.standName"
placeholder="请输入中文名称"
clearable
:maxlength="100"
/>
</el-form-item>
<el-formItem label="标准状态" prop="textStatusBuss" class="search-item">
<el-select v-model="SearchForm.textStatusBuss" filterable clearable>
<el-option
v-for="item in dict.TEXTSTATUSBUSS || []"
:key="item.value"
placeholder="请选择"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-formItem>
<el-form-item>
<el-button
type="primary"
class="common-button-primary"
size="mini"
@click="handleSearch"
>
查询
</el-button>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
class="common-button-default"
size="mini"
@click="handleResetSearch"
>
清空
</el-button>
</el-form-item>
</el-form>
</div>
<div class="standard-table-wrap">
<el-table
ref="reviseDrawerTable"
:data="data"
tooltip-effect="dark"
style="width: 100%;"
height="100%"
border
class="drag-table"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
@selection-change="standSelectChange"
>
<el-table-column
type="selection"
width="55"
align="center"
/>
<el-table-column
type="index"
label="序号"
width="80"
align="center"
>
<template slot-scope="scope">
<span :style="{color: scope.row.standStatusShow === '作废'? '#F56C6C': '#333'}">
{{ (scope.$index + 1) + (SearchForm.page - 1) * SearchForm.pageSize }}
</span>
</template>
</el-table-column>
<el-table-column
label="企标标准号"
align="center"
>
<template slot-scope="scope">
<a :style="{color: scope.row.standStatusShow === '作废'? '#F56C6C': '#333'}" @click="handlePreview(scope.row)">{{ scope.row.standCode }}</a>
</template>
</el-table-column>
<el-table-column
prop="standName"
label="中文名称"
align="center"
>
<template slot-scope="scope">
<span :style="{color: scope.row.standStatusShow === '作废'? '#F56C6C': '#333'}">{{ scope.row.standName }}</span>
</template>
</el-table-column>
<el-table-column
prop="standEnName"
label="英文名称"
align="center"
>
<template slot-scope="scope">
<span :style="{color: scope.row.standStatusShow === '作废'? '#F56C6C': '#333'}">{{ scope.row.standEnName }}</span>
</template>
</el-table-column>
<el-table-column
prop="textStatus"
label="标准状态"
align="center"
>
<template slot-scope="scope">
<span :style="{color: scope.row.standStatusShow === '作废'? '#F56C6C': '#333'}">{{ scope.row.standStatusShow }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button
class="opera-btn"
size="mini"
type="primary"
@click="handlePreview(scope.row)"
>
查看
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<pagination
:auto-size="true"
:page-size="SearchForm.pageSize"
:page="SearchForm.page"
:total="SearchForm.total"
@pageChange="pageChange"
@pageSizeChange="pageSizeChange"
/>
<loading :loading="loading">数据获取中</loading>
</div>
</div>
<div class="demo-drawer-footer">
<el-button
round
class="common-button-primary"
icon="el-icon-check"
type="primary"
:loading="buttonLoading"
@click="handleProcessStandardNext(2)"
>
带入
</el-button>
<el-button
round
class="common-button-default"
icon="el-icon-close"
:loading="buttonLoading"
@click="handleProcessStandardNext(3)"
>
取消
</el-button>
</div>
</el-drawer>
</template>
<script>
export default {
name: 'StandardDrawer',
props: {
dict: {
type: Object,
default: () => ({})
}
},
data () {
return {
visible: false,
loading: false,
data: [],
SearchForm: {
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
total: 0,
standCode: '',
standName: '',
textStatusBuss: '',
},
buttonLoading: false,
selectedList: []
}
},
methods: {
open () {
this.visible = true
this.getData()
},
getData () {
const config = { _this: this, loading: 'loading' }
this.$http._getData('lawss/sarBussionessStand/getSarBussionStandPage', this.SearchForm, config).then(res => {
if (res.ok && res.data) {
this.data = res.data.list
this.SearchForm.total = res.data.count
}
})
},
handleSearch () {
this.SearchForm.page = 1
this.getData()
},
handleResetSearch () {
this.SearchForm.page = 1
this.SearchForm.standCode = ''
this.SearchForm.standName = ''
this.SearchForm.textStatusBuss = ''
this.getData()
},
pageChange (page) {
this.SearchForm.page = page
this.getData()
},
pageSizeChange (pageSize) {
this.SearchForm.pageSize = pageSize
this.getData()
},
standSelectChange (data) {
this.selectedList = data
},
handlePreview (item) {
const routeUrl = this.$router.resolve({
name: 'OtherBussStandardDetails',
params: {
id: item.id,
pageType: 'BUSINESS_STAND'
}
})
window.open(routeUrl.href, '_blank')
},
handleProcessStandardNext (status) {
switch (status) {
case 2:
if (this.selectedList.length === 0) {
return this.$message.warning('请选择要带入的企标信息')
}
if (this.selectedList.length > 1) {
return this.$message.warning('只能选择一条企标信息')
}
this.$http._getData('lawss/sarBussionessStand/getStandInfoUpdateById', { id: this.selectedList[0].id }).then(res => {
if (res.ok && res.data) {
if (res.data.textStatusBussShow === '作废') {
this.$message.error('本版本已作废')
}
this.$emit('dragIn', res.data)
this.visible = false
}
})
break
case 3:
this.selectedList = []
this.visible = false
break
}
}
}
}
</script>
<style scoped lang="less">
.standard-content{
height: calc(100% - 61px);
}
.content {
height: calc(100% - 56px);
overflow-y: auto;
}
.standard-table-wrap {
height: calc(100% - 52px);
overflow-y: auto;
}
.demo-drawer-footer{
height: 61px!important;
line-height: 60px!important;
}
.pagination{
bottom: 61px;
}
.search-area {
justify-content: flex-start;
}
</style>
@@ -275,7 +275,9 @@ export default {
this.toProcessDetail('bussLibrary11-1', row)
}else if(prcType === 'buss2') {
// 企标 产品标准 6
this.toProcessDetail('bussLibraryProduct6-1', row)
// this.toProcessDetail('bussLibraryProduct6-1', row)
const params = { type: '6' }
this.toProcessDetailForParams('bussLibraryProduct', row, params)
}else if(prcType === 'buss3') {
// 企标复审 4
this.toProcessDetail('bussFs2-1', row)
@@ -378,7 +380,9 @@ export default {
this.toProcessDetail('bussLibrary1', row)
}else if(prcType === 'buss2') {
// 企标入库
this.toProcessDetail('bussLibraryProduct1', row)
// this.toProcessDetail('bussLibraryProduct1', row)
const params = { type: '1' }
this.toProcessDetailForParams('bussLibraryProduct', row, params)
}else if(prcType === 'buss3') {
// 企标复审
this.toProcessDetail('qbfsStep1', row)
@@ -530,8 +530,12 @@ export default {
break
case 'buss2':
// 企标制修订-产品标准
// this.$router.push({
// name: 'bussLibraryProduct1'
// })
this.$router.push({
name: 'bussLibraryProduct1'
name: 'bussLibraryProduct',
params: { type: '1' }
})
break
case '2':
@@ -560,6 +560,58 @@ export default {
// }
break
case 'buss2':
let type = ''
switch (row.taskInfo) {
case '企标编写':
type = '2'
break
case '企标编写汇总':
type = '3'
break
case '重新企标编写汇总':
type = 'C3'
break
case '标准化初审':
type = '4'
break
case '征求意见':
type = '5'
break
case '意见汇总修订':
type = '6'
break
case '重新意见汇总修订':
type = 'C6'
break
case '标准化复审':
type = '7'
break
case '审核':
type = '8'
break
case '审定':
type = '10'
break
case '批准':
type = '12'
break
case '发布':
type = '13'
break
}
routeUrl = this.$router.resolve({
name: 'bussLibraryProduct',
query: {
taskIds: row.taskIds,
prcId: row.prcId,
prcNum: row.prcNum,
prcName: row.prcName,
prcType: row.prcType
},
params: { type }
})
break
/*
if (row.taskInfo === '企标编写') {
routeUrl = this.$router.resolve({
name: 'bussLibraryProduct2',
@@ -705,6 +757,7 @@ export default {
})
}
break;
*/
case 'buss3':
if (row.taskInfo === '选择复审人') {
routeUrl = this.$router.resolve({
@@ -494,6 +494,16 @@ export default {
}
break
case 'buss2':
routeUrl = this.$router.resolve({
name: 'bussLibraryProduct',
query: {
bpnId: id,
},
params: {
type: '1'
}
})
/*
if(mes !== null && mes.taskInfo !== null && mes.taskInfo !== undefined) {
if (mes.taskInfo === '企标编写') {
routeUrl = this.$router.resolve({
@@ -642,6 +652,7 @@ export default {
}
})
}
*/
break
// 法规入库及评估流程
case '2':
+9
View File
@@ -1406,6 +1406,15 @@ const routes = [
title: '企标制修订流程及企业标准库流程'
}
},
{
path: '/bussLibraryProduct/:type',
name: 'bussLibraryProduct',
component: () => import('@/pages/processCenter/pages/creatProcess/qbrk-product/bussLibraryProduct.vue'),
meta: {
requireAuth: true,
title: '企标制修订-产品标准'
}
},
{
path: '/bussLibraryProduct1',
name: 'bussLibraryProduct1',