Files
foton-laws-system-front/src/pages/details/otherBussStandardDetails/index.vue
T

3542 lines
137 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--企标详情页-->
<template>
<div class="other-standard-details v-class" :class="{'hidden': !isMoreAwayBtn}">
<!--title 标题-->
<div class="details-header">
<span>{{sarStandardsInfoEO.standCode}} 《{{sarStandardsInfoEO.standName}}》 企标详情</span>
<b style="float:right;font-size: 25px;color: #ff9900">{{ ((qualityCommentScore*2*0.9)+(dynamicCommentScore*2*0.1)).toFixed(3) }}</b>
<!-- 之前的,先注掉-->
<!-- <span>{{sarStandardsInfoEO.standCode}}-{{sarStandardsInfoEO.standYear}} 《{{sarStandardsInfoEO.standName}}》 企标详情</span>-->
</div>
<!--主体内容-->
<div class="details-content" style="position: relative">
<div class="details-content-modular basic-information" style="border-top: 2px dashed #D1D1D1;">
</div>
<div
class="details-content-modular clearfix"
v-for="(item, index) in dynamicFormField"
:key="index"
v-if="item.isShowImp === '0'"
>
<el-collapse v-model="activeNames" @change="handleChange">
<div v-if="item.label === '基础信息'" class="details-content-modular basic-information"
style="border-top:none;position: absolute;right: 36px;">
<div class="modular-header" style="height: 50px;">
<div class="modular-header-btn">
<el-button type="warning" icon="el-icon-edit" @click="qbBtn">企标评价</el-button>
<el-dialog title="企业标准评价" :visible.sync="businessCommentDialog" :width="(commentAverageScoreTag === '1' && commentActiveName !== 'dynamicComment')?'90%':'65%'" :close-on-click-modal="false">
<el-tabs v-model="commentActiveName" @tab-click="tabsClickBtn">
<el-tab-pane label="动态评价" name="dynamicComment">
<el-table ref="businessCommentTable" :data="businessCommentTable.filter((v) => v.code !== '3U9lb')" border style="width: 100%; flex: auto;margin-bottom: 2%"
class="comment-table"
:header-cell-style="{background: '#E8E8E8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
type="index"
label="序号"
width="55"
align="center"
/>
<el-table-column prop="threeIndexTitle" label="评价指标" width="300">
<!--commentTarget-->
<template slot-scope="scope">
<span>{{scope.row.threeIndexTitle}}</span>
</template>
</el-table-column>
<el-table-column prop="targetScore" label="指标分值" width="165">
<template slot-scope="scope">
<el-col :span="20">
<el-rate
v-model="scope.row.targetScore"
@change="targetScoreChange(scope.row)"
allow-half>
</el-rate>
</el-col>
<b style="margin-top: 5px;margin-left: -2%;color: #ff9900">{{ scope.row.targetScore * 2 }}</b>
</template>
</el-table-column>
<el-table-column property="reason" label="简述理由">
<template slot-scope="scope">
<el-input clearable size="mini" placeholder="请简述评分理由" @change="commentReasonChange(scope.row)" v-model="scope.row.commentReason" />
</template>
</el-table-column>
</el-table>
<el-form :model="businessCommentForm">
<el-form-item label="动态评价分值">
<el-col :span="4">
<el-rate
v-model="businessCommentForm.averageScore"
disabled
style="margin-top: 12px">
</el-rate>
</el-col>
<b style="margin-top: 5px;margin-left: -2%;color: #ff9900">{{ businessCommentForm.averageScore * 2 }}</b>
</el-form-item>
<el-form-item label="对标准的意见和建议,是否需要修订">
<template>
<el-radio v-model="businessCommentForm.revise" label="1">是</el-radio>
<el-radio v-model="businessCommentForm.revise" label="0">否</el-radio>
<el-input v-show="businessCommentForm.revise === '1'"
v-model="businessCommentForm.reviseReason"
placeholder="请填写修订理由"
type="textarea"
:rows="2"></el-input>
</template>
</el-form-item>
</el-form>
<div style="padding-left: 80%">
<el-button
type="primary"
class="common-button-primary"
size="mini"
:loading="commentSubmitLoading"
icon="el-icon-check"
@click="commentSubmit"
>提交
</el-button>
<el-button
size="mini"
icon="el-icon-close"
class="common-button-default"
@click="businessCommentDialog = false"
>取消
</el-button>
</div>
</el-tab-pane>
<el-tab-pane label="历史评价" name="historyComment">
<el-form>
<el-row>
<el-col :span="10" :offset="4">
<el-form-item>
<el-radio v-model="commentAverageScoreTag" label="1" border @change="tabsClick">质量评价总平均分</el-radio>
<b style="margin-top: 30px;margin-left: 5px;font-size: 20px;color: #ff9900">{{
qualityCommentScore * 2
}}</b>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item>
<el-radio v-model="commentAverageScoreTag" label="2" border @change="tabsClick">动态评价总平均分</el-radio>
<b style="margin-top: 30px;margin-left: 5px;font-size: 20px;color: #ff9900">{{
dynamicCommentScore * 2
}}</b>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<el-table
v-if="commentAverageScoreTag === '1'"
:data="qualityHistoryPeopleTable"
empty-text="无人评价"
style="width: 100%"
height="345px"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
prop="historyPeopleName"
align="center"
label="质量评价人"
width="200px">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" :content="scope.row.processNode" placement="right">
<el-button type="default"
style="width: 180px;" size="mini"
@click="historyPeopleChange(scope.row)">
{{ scope.row.userName + '-' + scope.row.processNode.substring(0,9) }}
</el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<el-table
v-else-if="commentAverageScoreTag === '2'"
:data="dynamicHistoryPeopleTable"
empty-text="无人评价"
style="width: 100%"
height="345px"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
prop="historyPeopleName"
align="center"
label="动态评价人"
width="130px"
show-overflow-tooltip>
<template slot-scope="scope">
<el-button type="default"
style="width: 100px;" size="mini" @click="historyPeopleChange(scope.row)">
{{ scope.row.userName }}
</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
<el-col :span="20" >
<div style="width: 100%;padding: 0 1% 2% 0" v-loading="historyInfoLoading" v-show="commentAverageScoreTag === '1'">
<el-table
:data="qualityHistoryCommentTable"
:summary-method="getSummaries"
show-summary
:span-method="(({row, column, rowIndex, columnIndex})=>objectSpanMethod({row, column, rowIndex, columnIndex},qualityHistoryCommentTable))"
style="width: 100%"
:header-cell-style="{background: '#E8E8E8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column label="企业标准编写质量评价表" align="center" label-class-name="column1">
<el-table-column
label="标准代号"
>
<el-table-column
prop="oneIndexTitle"
align="center"
label="一级指标"
width = '120'
>
</el-table-column>
</el-table-column>
<el-table-column
:label="sarStandardsInfoEO.standCode"
>
<el-table-column
prop="twoIndexTitle"
align="center"
label="二级指标"
width = '120'
>
</el-table-column>
<el-table-column
prop="threeIndexTitle"
label="三级指标"
width="300"
>
</el-table-column>
</el-table-column>
<el-table-column
label="标准名称"
>
<el-table-column
prop="weight"
align="center"
label="指标权重 %"
width = '100'
>
<template slot-scope="scope">
{{scope.row.valueType === 'number' ? scope.row.weight * 100 : '加分项('+scope.row.weight+'分)'}}
</template>
</el-table-column>
</el-table-column>
<el-table-column
:label="sarStandardsInfoEO.standName"
>
<el-table-column
prop="targetScore"
align="center"
label="指标分值(10分制)优≥8分;合格6~8分;不合格<6分"
width = '200'
>
<template slot-scope="scope">
<span v-if="scope.row.targetScore">{{ scope.row.targetScore }}</span>
<span v-else style="color: #c0c4cc">该用户没有填写分值</span>
</template>
</el-table-column>
<el-table-column
prop="scoreMin"
align="center"
label="分值小计"
width = '80'
>
<template slot-scope="scope">
{{setScoreMin(scope.row)}}
</template>
</el-table-column>
<el-table-column
prop="commentReason"
align="center"
label="简述扣分理由(不合格<6分,必填)"
>
<template slot-scope="scope" v-if="scope.row.valueType !== 'add'">
<span v-if="scope.row.commentReason">{{ scope.row.commentReason }}</span>
<span v-else style="color: #c0c4cc">该用户没有填写理由</span>
</template>
</el-table-column>
</el-table-column>
</el-table-column>
</el-table>
</div>
<div style="width: 100%" v-loading="historyInfoLoading" v-show="commentAverageScoreTag === '2'">
<el-table ref="businessCommentTable" :data="dynamicHistoryCommentTable.filter((v) => v.code !== '3U9lb')" border style="width: 100%; flex: auto;margin-bottom: 2%"
class="comment-table"
:header-cell-style="{background: '#E8E8E8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
type="index"
label="序号"
width="55"
align="center"
/>
<el-table-column prop="threeIndexTitle" label="评价指标" width="300">
<!--commentTarget-->
<template slot-scope="scope">
<span>{{scope.row.indexTitle}}</span>
</template>
</el-table-column>
<el-table-column prop="targetScore" label="指标分值" width="165">
<template slot-scope="scope">
<el-col :span="20">
<el-rate
v-model="scope.row.targetScore / 2"
disabled
allow-half>
</el-rate>
</el-col>
<b style="margin-left: 5px;font-size: 12px;color: #ff9900">{{ parseInt(scope.row.targetScore) }}</b>
</template>
</el-table-column>
<el-table-column property="reason" label="简述理由">
<template slot-scope="scope">
<span v-if="scope.row.commentReason">{{scope.row.commentReason}}</span>
<span v-else style="color: #c0c4cc">该用户没有填写评分理由</span>
</template>
</el-table-column>
</el-table>
<el-form :model="historyCommentForm">
<el-form-item label="动态评价分值">
<el-col :span="5">
<el-rate
v-model="historyCommentForm.averageScore / 2"
disabled
style="margin-top: 12px;">
</el-rate>
</el-col>
<b style="margin-top: 5px;margin-left: -2%;color: #ff9900">{{ historyCommentForm.averageScore }}</b>
</el-form-item>
<el-form-item label="对标准的意见和建议,是否需要修订">
<template>
<el-radio v-model="historyCommentForm.revise" label="1" disabled>是</el-radio>
<el-radio v-model="historyCommentForm.revise" label="0" disabled>否</el-radio>
<el-input v-show="historyCommentForm.revise === '1'"
v-model="historyCommentForm.reviseReason"
disabled
placeholder="请填写修订理由"
type="textarea"
:rows="2"></el-input>
</template>
</el-form-item>
</el-form>
</div>
</el-col>
</el-row>
</el-form>
</el-tab-pane>
</el-tabs>
</el-dialog>
<el-button v-if="sarStandardsInfoEO.collectId" @click="collectClick(sarStandardsInfoEO.collectId)" title="取消收藏" class="collection-btn" icon="el-icon-star-on" :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()">更新记录</el-button>
</div>
</div>
</div>
<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>
</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="" style="color: #C42626;"><label style=" margin-right: 171px;">企标号</label><span>{{ sarStandardsInfoEO.standCode }}</span></p>
<template v-for="(child, childIndex) in item.child1">
<div class="files-title" style="border-bottom: 1px solid #E5E5E5">
<label style=" margin-right: 172px;">{{ child.attrName }}</label>
<template v-if="child.value && child.value.length > 0" v-for="(file, fileIndex) in child1Func(child.value)">
<!-- 单个文件-->
<span v-if="child.value && child.value.length > 0 && child.value.length === 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' : '9882f477aad895ec56a7464f3e9c0b11'"
/>
<i
title="下载带水印"
v-show="file.fileSuffix === 'pdf' || file.fileSuffix === 'PDF'"
@click="downloadFileByWater(file.id, file.fileSuffix)"
class="icon-download2"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? '02fd6eff0537c283dd071683de10689f' : '9bab2662fbd9d0507b39be813371a597'"
/>
<!-- <span class="time-text">上传时间:{{ dateFormat(file.modifyTime) }}</span>-->
</span>
<!-- 多个文件-->
<div v-else-if="child.value && child.value.length > 0">
<span style="margin-left: 19%">
<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'"
/>
</span>
<!-- <span class="time-text">上传时间:{{ dateFormat(file.modifyTime) }}</span>-->
</div>
<!-- <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 === null" >-</template>
</div>
</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.textStatusBussShow || '-' }}</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"
></put-question-button>
</template>
<template v-else>
{{ '-' }}
</template>
</span>
<!--规范性引用文件-->
<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">
<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">
<span
v-if="child.value.length === 0"
class="modular-content-p-val"
:title="'-'"
>
{{ '-' }}
</span>
<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 || '-'"
>
{{ !child.value || child.value === 'null' ? '-' : child.value }}
</span>
<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>
</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="put-away" @click="putAwayClick">收起<img src="@/assets/images/shangqi/img/more.png"></div>-->
<!--查看标准条目列表-->
<el-drawer
title="查看分解单"
:wrapperClosable="false"
:visible.sync="modalStandItemflag"
size="80%"
class="not-footer-drawer"
>
<div class="search-area">
<div class="left">
<el-form inline :model="standardForm" ref="ruleForm" class="label-input-form">
<el-form-item class="search-item">
<el-input size="small" v-model="standItemSearch.orgName" v-show="false" style="height: 32px"/>
<el-input size="small" v-model="standItemSearch.responsibleUnit" v-show="false" style="height: 32px"/>
<el-popover
placement="bottom"
popper-class="user-dept-popper"
trigger="click"
:value="false"
>
<el-input
v-model="standItemSearch.orgName"
slot="reference"
placeholder="请选择部门"
readonly
id="searchInlandDeptBtn"
@on-change="inputChange"
style="margin-right: 0;"/>
<div class="api">
<laws-tree :zNodes="searchInlandNodes"
treeDivId="domesticTree1"
ref="reloadTree2"
deptSelect
showRMenu
@treeDblClick="searchInlandNodesClick"
class="ztree" style="width: 200px;height: 400px;overflow: auto">
</laws-tree>
</div>
</el-popover>
</el-form-item>
<el-form-item class="search-item">
<el-input v-model="standItemSearch.nameOrRequest" size="small" placeholder="根据条款名称/内容查找" clearable maxlength="100"></el-input>
</el-form-item>
<!-- <el-form-item class="search-item">-->
<!-- <el-input v-model="standItemSearch.parts" size="small" placeholder="根据涉及零部件查找" clearable maxlength="100"></el-input>-->
<!-- </el-form-item>-->
<el-form-item class="search-item btn-box">
<el-button
:loading="searching"
icon="el-icon-search"
type="primary"
round
class="common-button-primary"
@click="searchSarStandItems">
</el-button>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
class="common-button-default"
icon="el-icon-refresh-left"
@click="clearAllSearch"
round>
</el-button>
</el-form-item>
</el-form>
</div>
</div>
<div class="action-bar">
<el-button
round
type="primary"
class="common-button-primary add-button"
:loading="searching"
icon="add"
@click="addItemModal"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? '84a37ea1e1' : '3D87NJR8N3'">新增</el-button>
<el-button class="common-button-default" :loading="searching" @click="uploadImportModal">模板下载</el-button>
<el-button class="common-button-default in-button" :loading="searching" icon="in" @click="addImportModal(2)" v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? '9ca97b05b2' : '6JM97X9W9C'">导入</el-button>
<el-button class="common-button-default export-button" icon="export" @click="exportStandardItem">导出</el-button>
<el-button class="common-button-default delete-button" icon="delete" @click="deleteStandItem(2)" v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? '8ac1820c42' : 'LRQHPT8E2Y'">删除</el-button>
</div>
<div class="content">
<el-table
ref="multipleTable"
:data="standItemList"
tooltip-effect="dark"
border
style="width: 100%"
:height="tableHeight"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}"
@selection-change="selectAllStand">
<el-table-column
type="selection"
width="55"
fixed="left"
align="center">
</el-table-column>
<el-table-column
prop="itemsNum"
label="条款号"
width="150"
>
</el-table-column>
<el-table-column
prop="itemsName"
label="条款名称"
width="150"
>
</el-table-column>
<el-table-column
prop="termsConditions"
label="内容简介"
width="250"
>
</el-table-column>
<el-table-column
prop="responsibleUnitShow"
label="责任部门"
width="150">
</el-table-column>
<el-table-column
prop="fo"
label="FO"
width="150">
</el-table-column>
<el-table-column
prop="dutyEngineerShow"
label="责任工程师"
width="150">
</el-table-column>
<el-table-column
prop="svpps"
label="SVPPS"
width="150">
</el-table-column>
<el-table-column
prop="applyArcticShow"
label="适用车辆类型"
width="150">
</el-table-column>
<el-table-column
prop="claimTypeShow"
label="要求类型"
width="150">
</el-table-column>
<el-table-column
prop="busStandCover"
label="覆盖关系"
width="150">
</el-table-column>
<el-table-column label="操作" align="center" width="50" fixed="right">
<template slot-scope="scope">
<div @click.stop>
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :disabled="scope.row.enable==='0'" :command="[scope.row, '查看']">查看</el-dropdown-item>
<el-dropdown-item :disabled="scope.row.enable==='0'" :command="[scope.row, '编辑']">编辑</el-dropdown-item>
<el-dropdown-item :disabled="scope.row.enable==='0'" :command="[scope.row, '删除']">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
</el-table-column>
</el-table>
<loading :loading="tableLoading">数据加载中...</loading>
</div>
<pagination :page="standItemSearch.page" :total="standitemTotal" @pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
</el-drawer>
<!--新增标准条目-->
<el-drawer
:title="itemModalTitle"
:wrapperClosable="false"
:visible.sync="modalItemaddShowflag"
size="800px"
>
<div class="demo-drawer-content">
<el-form
ref="sarStandardsItemForm"
:model="standItemEO"
class="label-input-form"
:rules="sarStandardItemRules"
label-width="150px"
>
<el-form-item label="条款号" prop="itemsNum" class="add-form-item">
<el-input v-model="standItemEO.itemsNum" :disabled="itemFormdisableflag" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="条款名称" prop="itemsName" class="add-form-item">
<el-input v-model="standItemEO.itemsName" :disabled="itemFormdisableflag" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="内容简介" prop="termsConditions" class="add-form-item">
<el-input v-model="standItemEO.termsConditions" :disabled="itemFormdisableflag" placeholder="请输入内容"/>
</el-form-item>
<el-form-item
label="责任部门"
prop="responsibleUnit"
class="add-form-item"
>
<el-input v-model="standItemEO.responsibleUnit" v-show="false" />
<el-popover
placement="bottom"
popper-class="user-dept-popper"
trigger="click"
:value="false"
>
<el-input
slot="reference"
v-model="standItemEO.orgName"
placeholder="根据责任部门查找"
readonly
clearable
id="deptBtnS"
/>
<div class="api">
<laws-tree
:zNodes="zNodesSItem"
treeDivId="zNodesSItem"
deptSelect
showRMenu
@treeDblClick="treeDblClickS"
class="ztree" style="width: 200px;height: 400px;overflow: auto">
</laws-tree>
</div>
</el-popover>
</el-form-item>
<el-form-item label="FO" prop="fo" class="add-form-item">
<el-input v-model="standItemEO.fo" :disabled="itemFormdisableflag" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="责任工程师" prop="dutyEngineer" class="add-form-item">
<el-input v-model="standItemEO.dutyEngineer" v-show="false"></el-input>
<el-popover placement="bottom" popper-class="user-dept-popper" trigger="click">
<el-input
v-model="standItemEO.dutyEngineerShow"
placeholder="请选择责任工程师"
readonly
id="enginBtnS"
slot="reference"
/>
<div class="api">
<dept-tree treeDivId="zNodesSItemEngin"
ref="zNodesSItemEngin"
allDept
showUser
:editable="false"
@treeDblClick="(treeId, treeNode) => treeDblClickEngin(treeId, treeNode)"
style="height: 300px;overflow: auto">
</dept-tree>
</div>
</el-popover>
</el-form-item>
<el-form-item label="svpps" prop="svpps" class="add-form-item">
<el-input v-model="standItemEO.svpps" :disabled="itemFormdisableflag" placeholder="请输入内容"></el-input>
</el-form-item>
<el-form-item label="适用车辆类型" prop="applyArctic" class="add-form-item">
<el-select v-model="standItemEO.applyArctic" multiple placeholder="请选择" :filterable="true">
<el-option
v-for="opt in applyArcticOptions"
:key="opt.value"
:label="opt.label"
:value="opt.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="要求类型" prop="claimType" class="add-form-item">
<el-select v-model="standItemEO.claimType" placeholder="请选择" :filterable="true">
<el-option
v-for="opt in requestOptions"
:key="opt.value"
:label="opt.label"
:value="opt.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="企标覆盖关系" prop="busStandCover" class="add-form-item">
<el-input v-model="standItemEO.busStandCover" :disabled="itemFormdisableflag" placeholder="请输入内容"></el-input>
</el-form-item>
</el-form>
</div>
<div class="demo-drawer-footer">
<el-button class="common-button-primary" icon="el-icon-check" type="primary" v-if="!itemFormdisableflag" @click="saveOrUpdateStandItem" :loading="isSubmit">保存</el-button>
<el-button class="common-button-default" icon="el-icon-close" @click="resetForm">取消</el-button>
</div>
</el-drawer>
<!--导入模态窗-->
<el-dialog width="400px" :visible.sync="importModalshowflag" title="导入文件" :footer-hide="true">
<el-upload
multiple
drag
:show-file-list="showUploadlist"
:on-success="importFileSuccess"
:on-remove="removeOneFile"
:before-upload="beforeUpload"
:action="importExcelUrl"
:file-list="defaultFileList"
accept=".xlsx"
name="file"
ref="importFileAboutStand">
<div style="padding: 20px 0">
<i class="el-icon-upload" style="color: #3399ff"></i>
<p>点击或拖拽上传文件</p>
</div>
</el-upload>
</el-dialog>
<!--分解单-查看 (标准拆分-属性)-->
<el-drawer
:wrapperClosable="false"
size="800px"
title="查看属性信息"
:visible.sync="showItemInfoModal"
>
<div class="see-drawer-content">
<div class="see-drawer-div">
<label class="see-drawer-name" title="条款号">条款号</label>
<span class="see-drawer-val" :title="standShowItemEO.itemsNum">{{ standShowItemEO.itemsNum }}</span>
</div>
<div class="see-drawer-div">
<label class="see-drawer-name" title="条款名称">条款名称</label>
<span class="see-drawer-val" :title="standShowItemEO.itemsName">{{ standShowItemEO.itemsName }}</span>
</div>
<div class="see-drawer-div">
<label class="see-drawer-name" title="内容简介">内容简介</label>
<span class="see-drawer-val" :title="standShowItemEO.termsConditions">{{ standShowItemEO.termsConditions }}</span>
</div>
<div class="see-drawer-div">
<label class="see-drawer-name" title="责任部门">责任部门</label>
<span class="see-drawer-val" :title="standShowItemEO.responsibleUnit">{{ standShowItemEO.responsibleUnit }}</span>
</div>
<div class="see-drawer-div">
<label class="see-drawer-name" title="FO">FO</label>
<span class="see-drawer-val" :title="standShowItemEO.fo">{{ standShowItemEO.fo }}</span>
</div>
<div class="see-drawer-div">
<label class="see-drawer-name" title="责任工程师">责任工程师</label>
<span class="see-drawer-val" :title="standShowItemEO.dutyEngineerShow">{{ standShowItemEO.dutyEngineerShow }}</span>
</div>
<div class="see-drawer-div">
<label class="see-drawer-name" title="svpps">svpps</label>
<span class="see-drawer-val" :title="standShowItemEO.svpps">{{ standShowItemEO.svpps }}</span>
</div>
<div class="see-drawer-div">
<label class="see-drawer-name" title="适用车辆类型">适用车辆类型</label>
<span class="see-drawer-val" :title="standShowItemEO.applyArctic">{{ standShowItemEO.applyArctic }}</span>
</div>
<div class="see-drawer-div">
<label class="see-drawer-name" title="要求类型">要求类型</label>
<span class="see-drawer-val" :title="standShowItemEO.claimTypeShow">{{ standShowItemEO.claimTypeShow }}</span>
</div>
<div class="see-drawer-div">
<label class="see-drawer-name" title="企标覆盖关系">企标覆盖关系</label>
<span class="see-drawer-val" :title="standShowItemEO.busStandCover">{{ standShowItemEO.busStandCover }}</span>
</div>
</div>
</el-drawer>
<!-- 更新LOG -->
<el-dialog
title="更新LOG"
:visible.sync="relateDialog"
width="60%"
class="relateClass"
:before-close="relateDialogClose">
<div
v-for="(item, index) in relateNowList"
:key="index"
v-if="relateNowList"
style="margin-bottom: 10px;line-height: 20px"
>
{{index+1}}. {{item.creationUserName}} {{item.creationTime}} {{item.content}}
<div v-if="relateNowList.length >1">
<el-divider></el-divider>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="relateDialogClose()">关 闭</el-button>
</span>
</el-dialog>
<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' : '9882f477aad895ec56a7464f3e9c0b11'"
/>
<i
title="下载带水印"
@click="downloadFileByWater(file.id, file.fileSuffix)"
class="icon-download2"
v-btn-permission="$route.params.pageType === 'INLAND_STAND' ? '02fd6eff0537c283dd071683de10689f' : '9bab2662fbd9d0507b39be813371a597'"
/>
<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">
<span>导入失败</span>
</p>
<div style="max-height: 300px;overflow: auto;padding: 10px 0;">
<p v-html="importForm.content"></p>
</div>
<div slot="footer" class="demo-drawer-footer">
<el-button type="primary" round class="common-button-default" icon="el-icon-check" @click="importFailed = false">确认</el-button>
</div>
</el-dialog>
<!-- 查看企标计划条目 -->
<el-drawer
title="查看"
:visible.sync="visiblePlanCheck"
:wrapperClosable="false"
size="800px"
>
<div class="demo-drawer-content">
<div class="el-drawer-form">
<el-form
ref="form"
:model="form"
class="label-input-form"
>
<el-form-item
label="企标编号"
prop="standCode"
label-width="150px"
class="add-form-item"
>
<p>{{ form.standCode }}</p>
</el-form-item>
<!-- <el-form-item-->
<!-- label="企标类别"-->
<!-- prop="standSortShow"-->
<!-- label-width="150px"-->
<!-- class="add-form-item"-->
<!-- >-->
<!-- <p>{{ form.standSortShow }}</p>-->
<!-- </el-form-item>-->
<el-form-item
label="计划状态"
prop="planStatus"
label-width="150px"
class="add-form-item"
>
<p>{{ getPlanStatusName(form.planStatus) }}</p>
</el-form-item>
<el-form-item
label="计划类型"
prop="planType"
label-width="150px"
class="add-form-item"
>
<p>{{ getPlanTypeName(form.planType) }}</p>
</el-form-item>
<el-form-item
label="修订企标"
prop="reviseBussStand"
label-width="150px"
class="add-form-item"
v-if="form.planType === '2'">
<p>{{ form.reviseBussStand }}</p>
</el-form-item>
<el-form-item
label="企标名称"
prop="cnName"
label-width="150px"
class="add-form-item"
>
<p>{{ form.cnName }}</p>
</el-form-item>
<el-form-item
label="英文名称"
prop="enName"
label-width="150px"
class="add-form-item"
>
<p>{{ form.enName }}</p>
</el-form-item>
<el-form-item
label="代替企标编号"
prop="replacedStandNum"
label-width="150px"
class="add-form-item select-and-input">
<p>{{ form.replacedStandNum }}</p>
</el-form-item>
<el-form-item
label="主起草部门"
prop="compilersUser"
label-width="150px"
class="add-form-item"
>
<div class="tag-group" v-if="form.primaryDrafterDeptName">
<template
v-for="(tag, index) in form.primaryDrafterDeptName.split(',')"
>
<div class="tag-wrap" :key="index">
<el-tag size="small">{{
tag
}}</el-tag>
</div>
</template>
</div>
</el-form-item>
<el-form-item
label="主起草人"
prop="compilersUser"
label-width="150px"
class="add-form-item"
>
<div class="tag-group" v-if="form.primaryDrafterName">
<template
v-for="(tag, index) in form.primaryDrafterName.split(',')"
>
<div class="tag-wrap" :key="index">
<el-tag size="small">{{
tag
}}</el-tag>
</div>
</template>
</div>
</el-form-item>
<el-form-item
label="起草部门"
prop="otherDrafterDept"
label-width="150px"
class="add-form-item"
>
<div class="tag-group" v-if="form.otherDrafterDeptName">
<template
v-for="(tag, index) in form.otherDrafterDeptName.split(',')"
>
<div class="tag-wrap" :key="index">
<el-tag size="small">{{
tag
}}</el-tag>
</div>
</template>
</div>
</el-form-item>
<el-form-item
label="其他起草人"
prop="compilersUser"
label-width="150px"
class="add-form-item"
>
<div class="tag-group" v-if="form.compilersUserName">
<template
v-for="(tag, index) in form.compilersUserName.split(',')"
>
<div class="tag-wrap" :key="index">
<el-tag size="small">{{
tag
}}</el-tag>
</div>
</template>
</div>
</el-form-item>
<!-- <el-form-item-->
<!-- label="起草分标委"-->
<!-- prop="draftCommittee"-->
<!-- label-width="150px"-->
<!-- class="add-form-item"-->
<!-- >-->
<!-- <p>{{ getFBWName(form.draftCommittee) }}</p>-->
<!-- </el-form-item>-->
<el-form-item
label="相关部门"
prop="compileUnitName"
label-width="150px"
class="add-form-item"
>
<div class="tag-group" v-if="form.compileUnitName">
<template
v-for="(tag, index) in form.compileUnitName.split(',')"
>
<div class="tag-wrap" :key="index">
<el-tag size="small">{{ tag }}</el-tag>
</div>
</template>
</div>
</el-form-item>
<el-form-item
label="标准密级"
prop="standLevel"
label-width="150px"
class="add-form-item"
>
<p>{{ getStandLevelName(form.standLevel) }}</p>
</el-form-item>
<el-form-item
label="计划开始编写日期"
prop="planStartTime"
label-width="150px"
class="add-form-item"
>
<p>
{{
form.putTime
? $dateFormat(new Date(form.planStartTime), "yyyy-MM-dd")
: "-"
}}
</p>
</el-form-item>
<el-form-item
label="计划发布日期"
prop="putTime"
label-width="150px"
class="add-form-item"
>
<p>
{{
form.planStartTime
? $dateFormat(new Date(form.putTime), "yyyy-MM-dd")
: "-"
}}
</p>
</el-form-item>
<el-form-item
label="涉及的会签部门"
prop="compileUnitName"
label-width="150px"
class="add-form-item"
>
<div class="tag-group" v-if="form.compileUnitName">
<template
v-for="(tag, index) in form.compileUnitName.split(',')"
>
<div class="tag-wrap" :key="index">
<el-tag size="small">{{ tag }}</el-tag>
</div>
</template>
</div>
</el-form-item>
<el-form-item
label="相关流程"
prop="putTime"
label-width="150px"
class="add-form-item"
>
<p>
{{
form.prcNum
? form.prcNum
: "-"
}}
</p>
</el-form-item>
<el-form-item
label="标准制修订来源*"
prop="planSource"
label-width="150px"
class="add-form-item"
>
<!-- <el-select v-model="form.planSource"-->
<!-- placeholder="请选择标准制修订来源"-->
<!-- clearable>-->
<!-- <el-option-->
<!-- v-for="opt in formOption.STANDSOURCEREVISION"-->
<!-- :key="opt.value"-->
<!-- :value="opt.value"-->
<!-- :label="opt.label"></el-option>-->
<!-- </el-select>-->
<p>{{ getPlanSourceName(form.planSource) }}</p>
</el-form-item>
<el-form-item
label="制修订原因"
prop="planReason"
label-width="150px"
class="add-form-item"
>
<!-- <el-input-->
<!-- type="textarea"-->
<!-- v-model="form.planReason"-->
<!-- placeholder="请填写制修订原因"-->
<!-- maxlength="100"-->
<!-- :autosize="{ minRows: 2, maxRows: 4}"-->
<!-- show-word-limit-->
<!-- ></el-input>-->
<p>{{ form.planReason }}</p>
<!-- 制修订原因附件上传 -->
<div class="file-wrap">
<p
v-for="item in form.planReasonFileList"
:key="item.id"
@click="downloadFile(item.id)"
>
{{ item.oldFileName }}
</p>
</div>
</el-form-item>
<el-form-item
label="验证工作"
prop="testWork"
label-width="150px"
class="add-form-item"
>
<!-- <el-input-->
<!-- type="textarea"-->
<!-- v-model="form.testWork"-->
<!-- placeholder="请输入验证工作"-->
<!-- maxlength="100"-->
<!-- :autosize="{ minRows: 2, maxRows: 4}"-->
<!-- show-word-limit-->
<!-- ></el-input>-->
<p>{{ form.testWork || "-" }}</p>
<!-- 验证工作附件上传 -->
<div class="file-wrap">
<p
v-for="item in form.testWorkFileList"
:key="item.id"
@click="downloadFile(item.id)"
>
{{ item.oldFileName }}
</p>
</div>
</el-form-item>
<el-form-item
label="项目影响"
prop="planImpact"
label-width="150px"
class="add-form-item"
>
<p>{{ form.planImpact || "-" }}</p>
<!-- 项目影响附件上传 -->
<div class="file-wrap">
<p
v-for="item in form.planImpactFileLis"
:key="item.id"
@click="downloadFile(item.id)"
>
{{ item.oldFileName }}
</p>
</div>
</el-form-item>
</el-form>
</div>
</div>
</el-drawer>
<loading :loading="loading">数据获取中</loading>
</div>
</template>
<script>
import PutQuestionButton from '@/components/PutQuestionButton'
import {dateFormat} from '../../../common/date'
import { getBusStandFileByAttId } from 'api/process'
const sarType = 'BUSS'
export default {
name: 'OtherStandardDetails',
components: {
PutQuestionButton
},
filters: {
ellipsis (value) {
if (!value) return ''
if (value.length > 12) {
return value.slice(0,12) + '...'
}
return value
}
},
data () {
return {
textOptions: [],
commentAverageScoreTag: '1',
qualityFirstHistoryPeopleId: '',//质量评价最新评价的人的id
dynamicFirstHistoryPeopleId: '',//动态评价最新评价的人的id
historyInfoLoading: false,//历史评价信息的loading
historyCommentForm: {
averageScore: 0, // 平均分值
revise: '',
reviseReason: '', // 修订理由
}, // 历史评价表单
qualityHistoryCommentTable: [], // 质量评价历史评价表格
dynamicHistoryCommentTable: [], // 动态评价历史评价表格
qualityHistoryPeopleTable: [], // 质量评价历史评价人表格
dynamicHistoryPeopleTable: [], // 动态评价历史评价人表格
qualityCommentScore: 0,// 质量评价总平均分
dynamicCommentScore: 0,// 动态评价总平均分
commentActiveName: 'dynamicComment',
indexType: 'dynamic',
commentReason: '', // 评价理由
commentReason1: '', // 评价理由
commentReason2: '', // 评价理由
commentReason3: '', // 评价理由
commentReason4: '', // 评价理由
commentSubmitLoading: false,
targetScore: '', // 指标分值
targetScore1: '',
targetScore2: '',
targetScore3: '',
targetScore4: '',
businessCommentDialog: false,
businessCommentForm: {
averageScore: '', // 平均分值
revise: '',
reviseReason: '', // 修订理由
},
businessCommentTable: [],
commentTarget: '', // 评价指标
activeNames: ['基础信息','过程稿件','实施日期'],
activeState: true,
visiblePlanCheck: false,
form: {},
relateDialog: false,
relateDialog1: false,
relateList: [],
relateNowList: [],
relateNowList1: [],
sarType: sarType,
loading: true,
showItemInfoModal: false,
standShowItemEO: {},
// 提交状态
isSubmit: false,
zNodesSItem: [],
zNodesSItemEngin: [],
sarStandardsInfoEO: {
id: '',
standType: 'INLAND', // 标准分类
country: 'CN',
standSort: '',
applyArctic: '',
standCode: '',
standYear: '',
standName: '',
standEnName: '',
standState: '',
standNature: '',
replaceStandNum: '',
replacedStandNum: '',
interStandNum: '',
adoptExtent: '',
emergyKind: '',
registerPutTime: '',
applyAuth: '',
issueTime: '',
putTime: '',
newcarPutTime: '',
productPutTime: '',
newproductPutTime: '',
draftingUnit: '',
draftUser: '',
standFile: '',
standModifyFile: '',
draftFile: '',
opinionFile: '',
sentScreenFile: '',
approvalFile: '',
relevanceFile: '',
standFileList: [],
standModifyFileList: [],
draftFileList: [],
opinionFileList: [],
sentScreenFileList: [],
approvalFileList: [],
relevanceFileList: [],
tags: '',
synopsis: '',
responsibleUnit: '',
category: '',
remark: ''
}, // 标准新增过程中用到的对象
standItemEO: {
id: '',
standId: '',
itemsNum: '',
itemsName: '',
parts: '',
mainPointImplementation: '', // 实施要点
termsConditions: '', // 内容简介
tackTime: '',
applyArctic: '', // 试用车型
energyKind: '', // 能源种类
responsibleUnit: '',
remarks: '',
orgName: '',
quoteStand: '',
relevanceFile: '',
fo: '',
dutyEngineer: '',
dutyEngineerShow: '',
svpps: '',
claimType: '',
busStandCover: '',
fileType: ''
}, // 标准条目新增过程中用到对象
applyArcticOptions: [], // 适用车型下拉框
emergyKindOptions: [], // 能源种类下拉框
itemModalTitle: '',
modalItemaddShowflag: false,
itemAddOrUPdateFlag: '',
itemFormdisableflag: false, // 查看标准条目不可编辑
recommendList: [],
showModalTitle: '',
replaceNumList: [],
replacedNumList: [],
// 代替,被代替标准号页面跳转
replaceStandInfoEO: {},
personCookieEO: {
cookieType: '',
resTitle: '',
resId: ''
},
saveStandType: 'BUSINESS',
opinionsProcessList: [], // 标准征求意见审批流程
notifiProcessList: [], // 标准法规实施通知及排查流程
modalStandItemflag: false,
tableLoading: false,
standItemSearch: {
standId: '',
responsibleUnit: '',
orgName: '',
validFlag: '0',
pageSize: this.$store.getters.userInfo.configContent,
page: 1,
nameOrRequest: '',
parts: ''
},
standitemTotal: 0,
searching: false,
searchInlandNodes: [], // 条目部门选择树形结构
standItemList: [],
tableHeight: null,
selectedItemList: [],
requestOptions: [],
sarStandardItemRules: {
itemsNum: [
{required: true, validator: this.verify.validateStandardItem, trigger: 'change'},
{type: 'string', max: 100, message: '条款号不能超过100个字符', trigger: 'change'}
],
itemsName: [
{required: true, message: '条款名称不能为空', trigger: 'change'},
{type: 'string', max: 500, message: '条款名称不能超过500个字符', trigger: 'change'}
// {type: 'string', validator: this.verify.checkSpecialCharacter, trigger: 'blur'}
],
// mainPointImplementation: [
// {type: 'string', max: 255, message: '实施要点不能超过255个字符', trigger: 'blur'}
// // {type: 'string', validator: this.verify.checkSpecialCharacter, trigger: 'blur'}
// ],
termsConditions: [
{required: true, message: '内容简介不能为空', trigger: 'change'},
{type: 'string', max: 4000, message: '内容简介不能超过4000个字符', trigger: 'change'}
// {type: 'string', validator: this.verify.checkSpecialCharacter, trigger: 'blur'}
],
responsibleUnit: [
{required: true, message: '责任部门不能为空', trigger: 'change'}
],
fo: [
{required: true, message: 'fo不能为空', trigger: 'change'},
{type: 'string', max: 100, message: 'fo不能超过100个字符', trigger: 'change'}
// {type: 'string', validator: this.verify.checkSpecialCharacter2, trigger: 'blur'}
],
dutyEngineer: [
{required: true, message: '责任工程师不能为空', trigger: 'change'}
// {type: 'string', validator: this.verify.checkSpecialCharacter2, trigger: 'blur'}
],
svpps: [
{required: true, message: 'svpps不能为空', trigger: 'change'}
// {type: 'string', validator: this.verify.checkSpecialCharacter2, trigger: 'blur'}
],
// tackTime: [],
applyArctic: [
{type: 'Array', validator: this.verify.valiCategory, trigger: 'change'}
],
claimType: [
{required: true, message: '要求类型不能为空', trigger: 'change'}
],
busStandCover: [
{required: true, message: '企标覆盖关系不能为空', trigger: 'change'}
// {type: 'string', validator: this.verify.checkSpecialCharacter2, trigger: 'blur'}
],
// energyKind: [
// {type: 'Array', validator: this.verify.valiCategory, trigger: 'change'}
// ],
// orgName
remarks: [
{type: 'string', max: 1000, message: '备注不能超过1000个字符', trigger: 'change'}
// {validator: this.verify.checkSpecialCharacter, trigger: 'blur'}
]
},
importModalshowflag: false,
showUploadlist: true, // 导入过程中新增数据时,如果数据错误,不出现导入列表
importExcelUrl: 'api/att/attFile/upload', // 导入EXCEL文档
exportModelFlag: false,
exportName: {},
standardForm: {},
defaultFileList: [], // 默认显示
currentFileList: '', // 当前操作的是哪个FormItem的上传
importModalshowflagtemp: false,
currentFile: '', // 当前操作的是哪个FormItem的上传
dynamicFormField: [],
displayLocation: [],
isMoreAwayBtn: false,
fileType: '',
importFailed: false,
importForm: {
content: ''
},
STANDSOURCEREVISION: []
}
},
props: {
},
watch: {
},
methods: {
historyPeopleChange(row){
this.historyInfoLoading = true
const qualityAllData = {
lawId: this.$route.params.id,
userId: row.userId,
evaluationType: this.indexType,
processNode: row.processNode
}
const dynamicAllData = {
lawId: this.$route.params.id,
userId: row.userId,
evaluationType: this.indexType
}
if (this.indexType === 'quality'){
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getEvaluationForm', qualityAllData , {
_this: this
}, res => {
this.qualityHistoryCommentTable = res.data
this.historyInfoLoading = false
}, e => {
this.historyInfoLoading = false
})
}else if (this.indexType === 'dynamic'){
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getEvaluationForm', dynamicAllData , {
_this: this
}, res => {
this.dynamicHistoryCommentTable = res.data
this.historyCommentForm.revise = res.data[0].targetScore
this.historyCommentForm.reviseReason = res.data[0].commentReason
let averageScore = 0
res.data.forEach(item => {
if (item.valueType === 'number'){
averageScore += parseInt(item.targetScore)
}
})
averageScore = averageScore / 4
this.historyCommentForm.averageScore = averageScore
this.historyInfoLoading = false
}, e => {
this.historyInfoLoading = false
})
}
},
tabsClickBtn(tab, event){
if (this.commentActiveName === 'dynamicComment'){
this.indexType = 'dynamic'
//查询评分表
const allData = {
lawId: this.$route.params.id,
userId: this.qualityFirstHistoryPeopleId,
evaluationType: this.indexType,
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getEvaluationForm', allData , {
_this: this
}, res => {
this.qualityHistoryCommentTable = res.data
this.historyInfoLoading = false
}, e => {
this.historyInfoLoading = false
})
}
else if (this.commentActiveName === 'historyComment'){
this.historyInfoLoading = true
this.indexType = 'quality'
//查询评分表
const allData = {
lawId: this.$route.params.id,
userId: this.dynamicFirstHistoryPeopleId,
evaluationType: this.indexType
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getEvaluationForm', allData , {
_this: this
}, res => {
this.dynamicHistoryCommentTable = res.data
this.historyCommentForm.revise = res.data[0].targetScore
this.historyCommentForm.reviseReason = res.data[0].commentReason
let averageScore = 0
res.data.forEach(item => {
if (item.valueType === 'number'){
averageScore += parseInt(item.targetScore)
}
})
averageScore = averageScore / 4
this.historyCommentForm.averageScore = averageScore
this.historyInfoLoading = false
}, e => {
this.historyInfoLoading = false
})
}
//查询动态评价总平均分和质量评价总平均分
let standId = this.$route.params.id
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getScore', {lawId:standId}, {
_this: this
}, res => {
this.qualityCommentScore = res.data.quality.toFixed(3)/2
this.dynamicCommentScore = res.data.dynamic.toFixed(3)/2
}, e => {
})
// 刷新质量评价评分人表格和动态评价评分人表格
const qualityRequest = {
lawId: standId,
evaluationType: 'quality'
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getHistory', qualityRequest, {
_this: this
}, res => {
this.qualityHistoryPeopleTable = res.data.records
this.qualityFirstHistoryPeopleId = res.data.records[0].userId
}, e => {
})
const dynamicRequest = {
lawId: standId,
evaluationType: 'dynamic'
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getHistory', dynamicRequest, {
_this: this
}, res => {
this.dynamicHistoryPeopleTable = res.data.records
this.dynamicFirstHistoryPeopleId = res.data.records[0].userId
}, e => {
})
},
tabsClick(tab, event){
this.historyInfoLoading = true
if (this.commentAverageScoreTag === '1'){
this.indexType = 'quality'
//查询评分表
const allData = {
lawId: this.$route.params.id,
userId: this.qualityFirstHistoryPeopleId,
evaluationType: this.indexType,
processNode: this.qualityHistoryPeopleTable.length>0?this.qualityHistoryPeopleTable[0].processNode:null
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getEvaluationForm', allData , {
_this: this
}, res => {
this.qualityHistoryCommentTable = res.data
this.historyInfoLoading = false
}, e => {
this.historyInfoLoading = false
})
}
else if (this.commentAverageScoreTag === '2'){
this.indexType = 'dynamic'
//查询评分表
const allData = {
lawId: this.$route.params.id,
userId: this.dynamicFirstHistoryPeopleId,
evaluationType: this.indexType
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getEvaluationForm', allData , {
_this: this
}, res => {
this.dynamicHistoryCommentTable = res.data
this.historyCommentForm.revise = res.data[0].targetScore
this.historyCommentForm.reviseReason = res.data[0].commentReason
let averageScore = 0
res.data.forEach(item => {
if (item.valueType === 'number'){
averageScore += parseInt(item.targetScore)
}
})
averageScore = averageScore / 4
this.historyCommentForm.averageScore = averageScore
this.historyInfoLoading = false
}, e => {
this.historyInfoLoading = false
})
}
//查询动态评价总平均分和质量评价总平均分
let standId = this.$route.params.id
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getScore', {lawId:standId}, {
_this: this
}, res => {
this.qualityCommentScore = res.data.quality.toFixed(3)/2
this.dynamicCommentScore = res.data.dynamic.toFixed(3)/2
}, e => {
})
// 刷新质量评价评分人表格和动态评价评分人表格
const qualityRequest = {
lawId: standId,
evaluationType: 'quality'
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getHistory', qualityRequest, {
_this: this
}, res => {
this.qualityHistoryPeopleTable = res.data.records
this.qualityFirstHistoryPeopleId = res.data.records[0].userId
}, e => {
})
const dynamicRequest = {
lawId: standId,
evaluationType: 'dynamic'
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getHistory', dynamicRequest, {
_this: this
}, res => {
this.dynamicHistoryPeopleTable = res.data.records
this.dynamicFirstHistoryPeopleId = res.data.records[0].userId
}, e => {
})
},
targetScoreChange(row){
if (this.targetScore1 === '') {
this.targetScore1 = 0
}
if (this.targetScore2 === '') {
this.targetScore2 = 0
}
if (this.targetScore3 === '') {
this.targetScore3 = 0
}
if (this.targetScore4 === '') {
this.targetScore4 = 0
}
switch (row.threeIndexTitle){
case "企业标准内容完整、要求合理(指标、流程等。)":
this.targetScore1 = 0
this.targetScore1 = row.targetScore
break
case "企业标准便于实施应用":
this.targetScore2 = 0
this.targetScore2 = row.targetScore
break
case "标准编写规范,内容清晰易理解":
this.targetScore3 = 0
this.targetScore3 = row.targetScore
break
case "标准对我的实际工作很有帮助":
this.targetScore4 = 0
this.targetScore4 = row.targetScore
break
}
this.businessCommentForm.averageScore = (this.targetScore1 + this.targetScore2 + this.targetScore3 +this.targetScore4)/4
},
commentReasonChange(row){
if (row.threeIndexTitle === '企业标准内容完整、要求合理(指标、流程等。)'){
this.commentReason1 = row.commentReason
}
if (row.threeIndexTitle === '企业标准便于实施应用'){
this.commentReason2 = row.commentReason
}
if (row.threeIndexTitle === '标准编写规范,内容清晰易理解'){
this.commentReason3 = row.commentReason
}
if (row.threeIndexTitle === '标准对我的实际工作很有帮助'){
this.commentReason4 = row.commentReason
}
},
commentSubmit(){
//验证必填
let submitFlag = true
if (this.targetScore1 === '' || this.targetScore1 === 0 ||
this.targetScore2 === '' || this.targetScore2 === 0 ||
this.targetScore3 === '' || this.targetScore3 === 0 ||
this.targetScore4 === '' || this.targetScore4 === 0) {
submitFlag = false
this.$message.warning('请评价指标分值')
}else if (
(this.commentReason1 === '' && this.targetScore1 < 3) ||
(this.commentReason2 === '' && this.targetScore2 < 3) ||
(this.commentReason3 === '' && this.targetScore3 < 3) ||
(this.commentReason4 === '' && this.targetScore4 < 3)
) {
submitFlag = false
this.$message.warning('请简述低分理由')
} else if (this.businessCommentForm.revise === ''){
submitFlag = false
this.$message.warning('请选择是否需要修订')
}else if (this.businessCommentForm.revise === '1' && this.businessCommentForm.reviseReason === ''){
submitFlag = false
this.$message.warning('请填写修订理由')
}
if (submitFlag === true) {
this.commentSubmitLoading = true
const allData = {
tableData: this.businessCommentTable,
formData: JSON.stringify(this.businessCommentForm),
standId: this.$route.params.id,
userId: this.$store.getters.userInfo.userId,
evaluationType: 'dynamic'
}
this.$http.postData('sarEnterpriseStandardEvaluation/quality-evaluation/submitEvaluationForm', allData, {
_this: this
}, res => {
if (res.ok){
this.$message.success('提交成功')
this.businessCommentDialog = false
this.commentSubmitLoading = false
//重新评分之后刷新历史评分人
let standId = this.$route.params.id
const dynamicRequest = {
lawId: standId,
evaluationType: 'dynamic'
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getHistory', dynamicRequest, {
_this: this
}, res => {
this.dynamicHistoryPeopleTable = []
this.dynamicHistoryPeopleTable = res.data.records
this.dynamicFirstHistoryPeopleId = res.data.records[0].userId
}, e => {
})
//刷新动态评价总平均分和质量评价总平均分
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getScore', {lawId:standId}, {
_this: this
}, res => {
this.qualityCommentScore = res.data.quality.toFixed(3)/2
this.dynamicCommentScore = res.data.dynamic.toFixed(3)/2
}, e => {
})
}
}, e => {
})
}
},
getSummaries(param) {
const { columns, data } = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 3) {
sums[index] = '合计:';
return;
}else if(index === 6){
sums[index] = '';
return;
}
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
sums[index] += ' ';
} else {
sums[index] = '';
}
if(sums[index] !== '' && sums[index].indexOf(".") !== -1){
sums[index] = parseFloat(sums[index]).toFixed(1);
}
});
return sums;
},
objectSpanMethod({ row, column, rowIndex, columnIndex },value) {
if (columnIndex === 0) {
if (rowIndex === 0) {
return {
rowspan: value.length,
colspan: 1
};
} else {
return {
rowspan: 0,
colspan: 0
};
}
}else if(columnIndex === 1 ) {
const _row = (this.filterData2(this.qualityHistoryCommentTable).one)[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col
}
}
},
setScoreMin(row){
return row.scoreMin = ((row.targetScore === undefined || row.targetScore === '') ? '' : row.valueType === 'add' ? row.targetScore : (row.targetScore / 10).toFixed(1))
},
filterData2(){
let spanOneArr = []
let concatOne = 0
this.qualityHistoryCommentTable.forEach((item,index)=>{//循环后端查询出来的数据(orderdata)
if(index === 0){
spanOneArr.push(1)
}else{
//name 修改
if(item.twoIndexTitle === this.qualityHistoryCommentTable[index - 1].twoIndexTitle){ //第一列需合并相同内容的字段
spanOneArr[concatOne] += 1
spanOneArr.push(0)
}else{
spanOneArr.push(1)
concatOne = index
}
}
})
return {
one: spanOneArr,
}
},
child1Func(child1) {
const list = []
if (child1 && child1.length > 1) {
for (let i = 0; i < child1.length; i++) {
list.push(child1[i])
}
return list
}
return child1
},
handleChange(val) {
console.log(val)
},
handleChange1(val) {
if(val && val === '基础信息'){
this.activeState = true
}
},
getPlanStatusName(status) {
switch (status) {
case "1":
return "制定中";
case "2":
return "修订中";
case "3":
return "已发布";
case "4":
return "计划已确认(初始状态)";
}
},
getPlanTypeName(planType) {
let planTypeName = "-";
// 计划类型
[
{
value: "1",
label: "制定",
},
{
value: "2",
label: "修订",
},
].map((item) => {
if (item.value === planType) {
planTypeName = item.label;
}
});
return planTypeName;
},
getStandLevelName(standLevel) {
let levelName = "-";
if (this.mjOptions) {
this.mjOptions.map((item) => {
if (item.value === standLevel) {
levelName = item.label;
}
});
}
return levelName;
},
getPlanSourceName(sourceType) {
let sourceName = "-";
this.STANDSOURCEREVISION.map((item) => {
if (item.value === sourceType) {
sourceName = item.label;
}
});
return sourceName;
},
showReplaceLawsInfo (item) {
this.$http.get('lawss/sarBussionessStand/queryReplaceStandInfo', {
standNum: item
}, {
_this: this
}, res => {
if (res.data != null) {
let routeUrl = this.$router.resolve({
name: 'OtherBussStandardDetails',
params: {
id: res.data.id,
pageType: this.$route.params.pageType
}
})
window.open(routeUrl.href, '_blank')
} else {
this.$message.error('标准号已不存在!')
}
}, e => {
})
},
clickButtonToUpload (current) {
this.currentFileList = current
this.currentFile = JSON.parse(JSON.stringify(current).replace('List', ''))
// this.importModalshowflagtemp = true
this.importModalshowflag = true
// this.$refs.importFileAboutStand.clearFiles()
this.defaultFileList = []
if (this.standItemEO[this.currentFile] === 'null' || this.standItemEO[this.currentFile] == null) {
this.standItemEO[this.currentFile] = ''
}
let fileList
if (this.standItemEO[this.currentFile] != null && this.standItemEO[this.currentFile] !== '') {
let paramefile = this.standItemEO[this.currentFile]
if (paramefile.charAt(paramefile.length - 1) === ',') {
paramefile = paramefile.substring(0, paramefile.length - 1)
}
this.$http.get('att/attFile/getMultiFileInfos', {
fileIds: paramefile
}, {
_this: this
}, res => {
fileList = res.data
if (fileList != null && fileList.length > 0) {
for (let i = 0; i < fileList.length; i++) {
let obj = {name: '', response: {}}
obj.name = fileList[i].oldFileName
obj.response.data = fileList[i]
this.defaultFileList.push(obj)
}
}
}, e => {
})
}
},
// 新增、编辑上传文件之前的钩子
beforeUpload (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 === 'pdf' || fileSuffix === 'PDF' || fileSuffix === 'doc' || fileSuffix === 'docx' || fileSuffix === 'ppt' || fileSuffix === 'pptx') {
if (fileSuffix === '.xlsx') {
return true
} else {
// this.$message.error('文件' + file.name + '格式不正确,请上传pdf、PDF、doc、docx、ppt、pptx文件')
this.$message.error('文件' + file.name + '格式不正确,请上传xlsx文件')
return false
}
// 判断文件上传大小
if (file.size / 1024 / 1024 <= 200) {// eslint-disable-line
return true
} else {
this.$message.error('文件' + file.name + '大小不超过200M')
return false
}
return true
},
// 导入标准数据成功后执行
importFileSuccess (res, file, fileList) {
if (res.ok) {
// 使用字条目是否展示模态框判断导入的文件是标准,还是条目modalStandItemflag
// this.selectSarStandItems(this.standItemSearch.standId)
// this.showUploadlist = true
this.selectSarStandItems()
this.importModalshowflag = false
this.$message({
message: res.message,
type: 'success'
})
} else {
this.importFailed = true
this.importForm.content = res.message
this.showUploadlist = false
}
},
removeOneFile (file, fileList) {
// this.sarStandardsInfoEO[this.currentFileList] = this.removeAaary(this.sarStandardsInfoEO[this.currentFileList], file.response.data)
let ids = this.sarStandardsInfoEO[this.currentFile].split(',')
if (file.response) {
let fileIds = file.response.data.id
let newIdList = this.removeAaary(ids, fileIds)
let newStr = ''
if (newIdList != null && newIdList.length > 0) {
for (let i = 0; i < newIdList.length; i++) {
if (newIdList[i] !== '') {
newStr += newIdList[i] + ','
}
}
this.sarStandardsInfoEO[this.currentFile] = newStr
} else {
this.sarStandardsInfoEO[this.currentFile] = ''
}
}
},
// 导入文件大小超出范围
handleSizeError (file) {
this.$message.error('文件' + file.name + '大小不超过200M')
},
// 导入标准文件格式错误执行
handleFormatError (file) {
this.$message.error('文件' + file.name + '格式不正确,请上传以.xlsx结尾的excel文件')
},
// 子条目部门名称改变后
itemOrgNameChange () {
if (this.standItemEO.orgName === '') {
this.standItemEO.responsibleUnit = ''
}
this.getOrgTreeSource()
},
treeDblClickS (treeId, treeNode) {
this.standItemEO.responsibleUnit = treeNode.id
this.standItemEO.orgName = treeNode.name
$('#deptBtnS').click()
},
treeDblClickEngin (treeId, treeNode) {
this.standItemEO.dutyEngineer = treeNode.id
this.standItemEO.dutyEngineerShow = treeNode.name
$('#enginBtnS').click()
},
// 标准条目新增
saveOrUpdateStandItem () {
this.$refs['sarStandardsItemForm'].validate((valid) => {
if (valid) {
let nowstandItem = JSON.parse(JSON.stringify(this.standItemEO))
if (nowstandItem.applyArctic != null && nowstandItem.applyArctic instanceof Array) {
nowstandItem.applyArctic = nowstandItem.applyArctic.join(',') // 适用车型
}
nowstandItem.standId = this.standItemSearch.standId
nowstandItem.fileType = this.fileType
// 新增
if (this.itemAddOrUPdateFlag === 1) {
this.$http.postData('lawss/sarBussStandItems/addSarBussStandItemsList', nowstandItem, {
_this: this,
loading: 'isSubmit'
}, res => {
this.selectSarStandItems(this.standItemSearch.standId)
this.resetForm()
}, e => {
})
} else {
// 修改
this.$http.postData('lawss/sarBussStandItems/updateSarBussStandItems', nowstandItem, {
_this: this,
loading: 'isSubmit'
}, res => {
this.selectSarStandItems(this.standItemSearch.standId)
this.standItemEO.responsibleUnit = ''
this.selectedItemList = []
this.resetForm()
}, e => {
})
}
} else {
this.$message.error('请检查表单是否填写正确!')
}
})
},
// 表单清空
resetForm () {
this.modalItemaddShowflag = false
this.standItemEO.orgName = ''
this.standItemSearch.responsibleUnit = ''
this.standItemSearch.orgName = ''
this.$nextTick(() => {
this.$refs['sarStandardsItemForm'].resetFields()
})
},
selectAllStand (alldata) {
this.selectedItemList = []
for (let i = 0; i < alldata.length; i++) {
this.selectedItemList.push(alldata[i].id)
}
},
// 分页点击后方法
pageChange (page) {
this.standItemSearch.page = page
this.selectSarStandItems()
},
// 分页每页显示数改变后方法
pageSizeChange (pageSize) {
this.standItemSearch.pageSize = this.$store.getters.userInfo.configContent
this.selectSarStandItems()
// 此处需要调用接口,修改个人配置
},
selectStandMessage () {
let url = this.$route.params.pageType === 'SUB' ? 'lawss/sarSubsionessStand/getStandInfoById' : 'lawss/sarBussionessStand/getStandInfoById'
return new Promise((resolve, reject) => {
this.$http.get(url, {id: this.sarStandardsInfoEO.id}, {
_this: this
}, res => {
this.sarStandardsInfoEO = res.data || {}
// this.textOptions.forEach(item => {
// if(this.sarStandardsInfoEO.textStatusBuss === item.value){
// this.sarStandardsInfoEO.textStatusBuss = item.label
// }
// })
if (this.sarStandardsInfoEO.issueTime) {
this.sarStandardsInfoEO.issueTime = this.sarStandardsInfoEO.issueTime.split(' ')[0]
}
if (this.sarStandardsInfoEO.putTime) {
this.sarStandardsInfoEO.putTime = this.sarStandardsInfoEO.putTime.split(' ')[0]
}
// 代替标准号
if (this.sarStandardsInfoEO.replaceStandNum) {
this.sarStandardsInfoEO.replaceStandNum = this.sarStandardsInfoEO.replaceStandNum.replace(/<br \/>/g, '\r\n')
this.sarStandardsInfoEO.replaceStandNum = this.sarStandardsInfoEO.replaceStandNum.replace(/<br \/>/g, '\n')
}
if (this.sarStandardsInfoEO.replaceStandNum) {
this.replaceNumList = this.sarStandardsInfoEO.replaceStandNum.split(',')
}
Object.keys(this.sarStandardsInfoEO.attrInfoMap || {}).forEach((key) => {
if (this.sarStandardsInfoEO.attrInfoMap[key]) {
this.sarStandardsInfoEO[key] = this.sarStandardsInfoEO.attrInfoMap[key]
}
})
this.addPersonCookie()
resolve(res.data)
}, e => {
reject(e)
})
})
},
// 新增浏览记录
addPersonCookie () {
this.personCookieEO.cookieType = this.$route.params.pageType
if (this.sarStandardsInfoEO.standYear != null && this.sarStandardsInfoEO.standYear !== '') {
this.personCookieEO.resTitle = this.sarStandardsInfoEO.standName + '(编号:' + this.sarStandardsInfoEO.standSortShow + ' ' + this.sarStandardsInfoEO.standCode + '-' + this.sarStandardsInfoEO.standYear + ')'
} else {
this.personCookieEO.resTitle = this.sarStandardsInfoEO.standName + '(编号:' + this.sarStandardsInfoEO.standSortShow + ' ' + this.sarStandardsInfoEO.standCode + ')'
}
this.personCookieEO.resId = this.$route.params.id
this.$http.postData('person/personCookies/create', this.personCookieEO, {
_this: this
}, res => {
}, e => {
})
},
// 获取组织机构数据
getOrgTreeSource () {
this.$http.get('sys/org/getTree', {}, {_this: this},
res => {
if (res.ok) {
let treeNode = []
res.data.map((item, index) => {
let treeItem = {}
for (let key in item) {
if (key === 'orgName') {
treeItem.name = item[key]
} else {
treeItem[key] = item[key]
}
}
treeNode[index] = treeItem
})
this.zNodesSItem = treeNode
this.searchInlandNodes = treeNode
}
}, e => {})
},
// 查询相近标准
selectCloseStand (id) {
let obj = {}
obj.id = id
let url = ''
url = 'lawss/sarStandardsInfo/selectCloseStand'
this.$http.get(url, obj, {
_this: this
}, res => {
if (res.ok) {
this.recommendList = res.data
}
}, e => {
})
},
getBusStandFileByAttId(attId) {
return new Promise((resolve, reject) => {
getBusStandFileByAttId({
attId
}).then(res => {
if (res.ok) {
resolve(res.data)
} else {
reject()
}
}).catch(e => {
reject(e)
})
})
},
openFileInPdf (attId, oldFileName) {
// 判断是否是图片格式,图片格式不预览,直接下载
let index1 = oldFileName.lastIndexOf('.')
let index2 = oldFileName.length
let fileSuffix = oldFileName.substring(index1, index2)
//把后缀转大写
if(fileSuffix !== undefined && fileSuffix !== null){
fileSuffix = fileSuffix.toUpperCase()
}
// 判断上传文件格式
if (fileSuffix === '.PNG'|| fileSuffix === '.JPG'|| fileSuffix === '.JPEG') {
this.downloadFile(attId)
return true
}
// 缺少文件
if (this.$hasPermission('43ae63abc1b64e6bd5cf3bb75b423bc2')) {
if (fileSuffix === '.PDG' || fileSuffix === '.pdg') {
this.getBusStandFileByAttId(attId)
.then(res => {
if(res){
const editFileInfo = res
console.log(editFileInfo)
if(editFileInfo.fileSuffix === 'pdg' || editFileInfo.fileSuffix === 'PDG'){
window.open('book://ssreader/e0?url='+editFileInfo.downLoadUrl)
}else {
const nowTime = new Date().getTime()
// window.open('http://127.0.0.1:8012/onlinePreview?url='+encodeURIComponent(Base64.encode(editFileInfo.downLoadUrl)));
// window.open(onlyOfficeUrl+'/onlyOffice?oldFileName=' + editFileInfo.oldFileName + '&fileType=' + editFileInfo.fileSuffix + '&attId=' + editFileInfo.id + '&fileUrl=' + editFileInfo.downLoadUrl + '&key=' + editFileInfo.id + nowTime+'&filePath='+editFileInfo.filePath+'&fileName='+editFileInfo.fileName)
}
// window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + editFileInfo.id))
}
// switch (res.convertState) {
// case 'ERROR':
// this.$message.warning('文档转换失败')
// break
// case 'LODING':
// this.$message.info('文档转换中,请稍后查看')
// break
// case 'SUCCESS':
// const { convertFileInfo } = res
// window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + convertFileInfo.id))
// break
// }
}).catch(e => {
console.log(e)
this.$message.warning('文件不存在,预览失败')
})
}else {
this.$http.get('lawss/sarBussStandFile/queryConvertAtt', {
attId: attId
}, {
_this: this
}, res => {
if (res.data) {
let fileObj = {}
fileObj.fileId = res.data.attId
fileObj.fileName = oldFileName
let fileList = []
let repeatData = 0
if (sessionStorage.getItem('fileInfo')) {
fileList = JSON.parse(sessionStorage.getItem('fileInfo'))
if (fileList != null && fileList.length > 0) {
for (let i = 0; i < fileList.length; i++) {
if (fileList[i].fileId === res.data.attId) {
repeatData = 1
break
}
}
if (repeatData === 0) {
fileList.push(fileObj)
fileList = JSON.stringify(fileList)
sessionStorage.setItem('fileInfo', fileList)
}
}
} else {
fileList.push(fileObj)
fileList = JSON.stringify(fileList)
sessionStorage.setItem('fileInfo', fileList)
}
window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + res.data.attId))
} else {
this.$message.error('文档未转换成功或本地读取不到该文档')
}
}, e => {
this.$message.error('文档未转换成功或本地读取不到该文档')
})
}
} else {
this.$message.error('没有在线预览文档权限!')
}
this.$http.get('lawss/sarBussionessStand/logBuss', {
standCode: this.sarStandardsInfoEO.standCode,
standName: this.sarStandardsInfoEO.standName
}, {
_this: this
}, res => {
console.log(res);
})
},
showItemsModel (attField) {
this.fileType = attField
this.getOrgTreeSource()
this.selectedItemList = []
this.selectSarStandItems()
this.modalStandItemflag = true
this.$nextTick(() => {
this.tableHeight = $('.content').height()
window.onresize = function () {
this.tableHeight = $('.content').height()
}.bind(this)
})
},
// 分解单----查看标准条目相关
selectSarStandItems (id, flag) {
this.standItemSearch.standId = this.sarStandardsInfoEO.id
this.standItemSearch.fileType = this.fileType
this.$http.get('lawss/sarBussStandItems/getSarBussStandItemsList', this.standItemSearch, {
_this: this, loading: 'tableLoading'
}, res => {
this.selectedItemList = []
this.standItemList = res.data.list
this.standitemTotal = res.data.count // 分页需要
}, e => {
})
this.modalStandItemflag = true
this.$nextTick(() => {
this.tableHeight = $('.content').height()
window.onresize = function () {
this.tableHeight = $('.content').height()
}.bind(this)
})
},
downloadFile (attId) {
if (attId != null && attId !== '') {
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
} else {
this.$message.error('请选择要下载的文件')
}
this.$http.get('lawss/sarBussionessStand/logBussDownload1', {
standCode: this.sarStandardsInfoEO.standCode,
standName: this.sarStandardsInfoEO.standName
}, {
_this: this
}, res => {
console.log(res);
})
},
downloadFileByWater (attId, fileSuffix) {
if (fileSuffix !== 'pdf' && fileSuffix !== 'PDF') {
this.$message.error('水印下载仅支持PDF,pdf格式文件')
} else {
if (attId != null && attId !== '') {
window.location.href = '/api/att/attFile/downloadFileForSarWaterMark?fileId=' + attId
} else {
this.$message.error('请选择要下载的文件')
}
}
this.$http.get('lawss/sarBussionessStand/logBussDownload2', {
standCode: this.sarStandardsInfoEO.standCode,
standName: this.sarStandardsInfoEO.standName
}, {
_this: this
}, res => {
console.log(res);
})
},
/**
* @author liruohao
* @date 2019/4/25
* @Description: 跳转流程
*/
processCenterClick (item) {
let routeUrl = this.$router.resolve({
name: 'ProcessDetail',
query: {
prcNum: item
}
})
window.open(routeUrl.href, '_blank')
},
// 请求标准id和类型
showReplaceStandInfo (item) {
// this.replaceStandInfoEO.standType = this.sarStandardsInfoEO.standType
this.$http.get('sarStandardsInfo/sar-standards-info/queryInfoByStandNum', {
standNumber: item
}, {
_this: this
}, res => {
if (res.ok) {
let name = ''
let pageType = ''
const standType = res.data.standType || 'BUSINESS'
switch (standType) {
case 'INLAND':
name = 'OtherStandardDetails'
pageType = 'INLAND_STAND'
break
case 'FOREIGN':
name = 'OtherStandardDetails'
pageType = 'FOREIGN_STAND'
break
case 'BUSINESS':
name = 'OtherBussStandardDetails'
pageType = 'BUSINESS_STAND'
break
}
let routeUrl = this.$router.resolve({
name: name,
params: {
id: res.data.id,
pageType: pageType
}
})
window.open(routeUrl.href, '_blank')
} else {
this.$message.error(res.message)
}
}, e => {
})
},
searchSarStandItems () {
this.standItemSearch.page = 1
this.selectSarStandItems()
},
// 清空搜索框
clearAllSearch () {
// 标准条目搜索
this.standItemSearch.responsibleUnit = ''
this.standItemSearch.orgName = ''
this.standItemSearch.parts = ''
this.standItemSearch.nameOrRequest = ''
this.selectSarStandItems()
},
inputChange () {
this.standItemSearch.responsibleUnit = ''
this.getOrgTreeSource()
},
searchInlandNodesClick (treeId, treeNode) {
this.standItemSearch.responsibleUnit = treeNode.id
this.standItemSearch.orgName = treeNode.name
$('#searchInlandDeptBtn').click()
},
// 点击条目表格上面的操作按钮新增
addItemModal () {
this.standItemEO = {
id: '',
standId: '',
itemsNum: '',
itemsName: '',
parts: '',
mainPointImplementation: '', // 实施要点
termsConditions: '', // 条款要求
tackTime: '',
applyArctic: '', // 试用车型
energyKind: '', // 能源种类
responsibleUnit: '',
remarks: '',
orgName: ''
}
this.itemModalTitle = '新增标准法规分解单'
this.modalItemaddShowflag = true
this.itemAddOrUPdateFlag = 1
this.getOrgTreeSource()
this.itemFormdisableflag = false
},
// 模板下载
uploadImportModal (flag) {
window.open('/api/att/attFile/uploadModalFile?fileName=标准条目导入模板.xlsx')
},
// 点击导入标准
addImportModal (flag) {
this.importModalshowflag = true
this.importExcelUrl = '/api/lawss/sarBussStandItems/importSarBussStandItemsList?standId=' + this.standItemSearch.standId
this.$nextTick(() => {
this.$refs.importFileAboutStand.clearFiles()
})
},
exportStandardItem () {
if (this.selectedItemList != null && this.selectedItemList.length > 0) {
window.open('/api/lawss/sarBussStandItems/exportStandardItemExcel?idList=' + this.selectedItemList.join(','))
this.$message({
message: '导出成功',
type: 'success'
})
} else {
this.$message({
message: '请先选择要导出的数据',
type: 'warning'
})
}
},
// 标准条目删除
deleteStandItem (item, flag) {
// flag==1 删除单条 flag==2 批量删除
let ids = []
if (flag === 1) {
// item的id
ids.push(item.id)
// ids.push(this.standItemEO.id)
this.$confirm('确认删除该条数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http.post('lawss/sarStandItems/deleteStandItem', {id: ids}, {
_this: this
}, res => {
this.selectSarStandItems(this.standItemSearch.standId, 1)
this.selectedItemList = []
}, e => {
})
}).catch(() => {
// 取消删除,清空选择
// this.$refs.selections.clearSelection()
})
} else {
if (this.selectedItemList.length === 0) {
this.$message.error('请先选择要删除的数据!')
} else {
ids = this.selectedItemList
this.$confirm('确认删除选中数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http.post('lawss/sarStandItems/deleteStandItem', {id: ids}, {
_this: this
}, res => {
this.selectSarStandItems(this.standItemSearch.standId, 1)
this.selectedItemList = []
}, e => {
})
}).catch(() => {
// 取消删除,清空选择
// this.$refs.selections.clearSelection()
})
}
}
},
// 分解单-查看
handlePreview (item) {
this.showItemInfoModal = true
let fileList = []
item.defaultFileList = []
this.standShowItemEO = JSON.parse(JSON.stringify(item))
if (this.standShowItemEO.tackTime != null && this.standShowItemEO.tackTime !== '') {
this.standShowItemEO.tackTime = this.standShowItemEO.tackTime.split(' ')[0]
}
// let selectNode = this.getTreeNameByid(this.standShowItemEO.responsibleUnit)
this.standShowItemEO.applyArctic = this.standShowItemEO.applyArcticShow // 将编辑的显示字段赋值
this.standShowItemEO.energyKind = this.standShowItemEO.emergyKindShow
this.standShowItemEO.responsibleUnit = this.standShowItemEO.responsibleUnitShow
// 请求文件信息
if (item.relevanceFile != null && item.relevanceFile !== '') {
let paramefile = item.relevanceFile
if (paramefile.charAt(paramefile.length - 1) === ',') {
paramefile = paramefile.substring(0, paramefile.length - 1)
}
this.$http.get('att/attFile/getMultiFileInfos', {
fileIds: paramefile
}, {
_this: this
}, res => {
fileList = res.data
if (fileList != null && fileList.length > 0) {
for (let i = 0; i < fileList.length; i++) {
let obj = {name: '', response: {}}
obj.name = fileList[i].oldFileName
obj.response.data = fileList[i]
item.defaultFileList.push(obj)
}
}
this.standShowItemEO = JSON.parse(JSON.stringify(item))
if (this.standShowItemEO.tackTime != null && this.standShowItemEO.tackTime !== '') {
this.standShowItemEO.tackTime = this.standShowItemEO.tackTime.split(' ')[0]
}
// let selectNode = this.getTreeNameByid(this.standShowItemEO.responsibleUnit)
this.standShowItemEO.orgName = this.standShowItemEO.responsibleUnitShow
}, e => {
})
}
},
// 分解单-编辑
selectStandardPro (item) {
this.itemModalTitle = '编辑标准法规分解单'
this.modalItemaddShowflag = true
item.orgName = ''
this.standItemEO = JSON.parse(JSON.stringify(item))
this.standItemEO.standId = this.standItemSearch.standId
this.standItemEO.quoteStand = item.quoteStand
this.itemAddOrUPdateFlag = 2
this.itemFormdisableflag = false
let a = []
if (this.standItemEO.applyArctic != null && !(this.standItemEO.applyArctic instanceof Array)) {
a = this.standItemEO.applyArctic.split(',')
this.standItemEO.applyArctic = a // 适用车型
}
this.standItemEO.orgName = this.standItemEO.responsibleUnitShow
this.updateResidToAttid('relevanceFile')
},
// 修改过程中,将resId 修改成 attid
updateResidToAttid (filetype) {
if (this.sarStandardsInfoEO[filetype] !== null && this.sarStandardsInfoEO[filetype] !== '') {
this.$http.get('lawss/attFile/getMultiFileInfosByResid', {
fileIds: this.sarStandardsInfoEO[filetype], fileType: 'stand'
}, {
_this: this
}, res => {
this.sarStandardsInfoEO[filetype] = res.data
}, e => {
})
}
},
/**
* 展示位置
*/
queryDisplayLocation () {
return new Promise((resolve, reject) => {
this.$http.get('lawssBase/utArea/getAreaList', {
sarType: this.sarType
}, {
_this: this
}, res => {
// this.showRegionOptions = res.data || []
resolve(res.data || [])
}, e => {
reject(e)
})
})
},
/**
* 获取相关计划
*/
queryRelatedPlans () {
return new Promise((resolve, reject) => {
this.$http.get('lawss/sarBussStandPlan/page', {
standCode: this.sarStandardsInfoEO.standCode
}, {
_this: this
}, res => {
// this.showRegionOptions = res.data || []
resolve(res.data || {})
}, e => {
reject(e)
})
})
},
/**
* 获取新增弹框的表单
*/
getAddFormFieldList (isEdit) {
return new Promise((resolve, reject) => {
this.$http.get('lawss/sarStandAttrDetails/list', {}, {_this: this},
res => {
if (res.ok) {
// const { data: { STAND: data } } = res
const { data = {} } = res
this.formFieldListData = data[this.sarType]
// this.resolveFormFieldList()
resolve(data[this.sarType])
} else {
reject(res)
}
}, e => {
reject(e)
})
})
},
// 点击更多按钮事件
moreClick () {
this.dynamicFormField.map(item => {
item.isShowImp = '0'
item.child.map(child => {
child.isShowImp = '0'
})
})
this.isMoreAwayBtn = true
},
// 点击收起按钮事件
putAwayClick () {
this.dynamicFormField = JSON.parse(sessionStorage.getItem('displayLocation'))
this.isMoreAwayBtn = false
},
// 鼠标滚轮事件
handleScroll (e) {
// 该语句可以用来判断滚轮是向上滑动还是向下
const direction = e.deltaY > 0 ? 'down' : 'up'
if (direction === 'down') {
this.moreClick()
}
},
// ...
handleCommand (command) {
switch (command[1]) {
case '查看':
this.handlePreview(command[0])
break
case '编辑':
this.selectStandardPro(command[0], 'edit')
break
case '删除':
this.deleteStandItem(command[0], 1)
break
}
},
/**
* 点击 加收藏 按钮事件
* @param collectId 有值:取消收藏 无值:加收藏
*/
collectClick (collectId) {
this.isSubmit = true
if (collectId) {
// 取消收藏
this.$http.put('person/personCollect/updateByUserId', {
id: collectId,
loading: ''
}, {
_this: this
}, res => {
this.isSubmit = false
this.sarStandardsInfoEO.collectId = ''
}, e => {
this.isSubmit = false
})
} else {
// 加收藏
let collectTitle
if (this.sarStandardsInfoEO.standYear != null && this.sarStandardsInfoEO.standYear !== '') {
collectTitle = this.sarStandardsInfoEO.standName + ' ( 编号:' + this.sarStandardsInfoEO.standSort + ' ' + this.sarStandardsInfoEO.standCode + '-' + this.sarStandardsInfoEO.standYear + ' )'
} else {
collectTitle = this.sarStandardsInfoEO.standName + ' ( 编号:' + this.sarStandardsInfoEO.standSort + ' ' + this.sarStandardsInfoEO.standCode + ' )'
}
let personCollect = {
collectResId: this.sarStandardsInfoEO.id,
collectTitle: collectTitle,
collectType: 'BUSINESS_STAND' // 国内收藏type
}
this.$http.postData('person/personCollect', personCollect, {
_this: this
}, res => {
this.isSubmit = false
this.sarStandardsInfoEO.collectId = res.data.id
}, e => {
this.isSubmit = false
})
}
},
relateEvent1(list){
this.relateDialog1 = true
this.relateNowList1 = list
},
// 更新LOG
relateEvent () {
this.$http.get('lawss/sarUpdLog/getLogList', {
sarId: this.$route.params.id,
sarType: 'BUSINESS'
}, {
_this: this
}, res => {
if (res.data.length > 0) {
this.relateDialog = true
this.relateList = res.data
var i
for (i = 0; i < this.relateList.length; i++) {
let obj = {creationUserName: '', creationTime: '', content: ''}
obj.creationUserName = this.relateList[i].creationUserName
obj.creationTime = this.relateList[i].creationTime
obj.content = this.relateList[i].content
this.relateNowList.push(obj)
}
} else {
this.$message({
message: '暂无数据',
type: 'warning'
})
}
}, e => {
})
},
relateDialogClose1() {
this.relateDialog1 = false
this.relateNowList = []
},
relateDialogClose () {
this.relateDialog = false
this.relateNowList = []
},
halfClass (data, nextData, index) {
const halfType = ['INPUT_STR', 'DATE_PICKER', 'SEL_OPTION', 'INPUT_NUM']
let flag = false
if (halfType.includes(data.attrType)) { // 是 50% 显示的组件时
// 1. 判断下一个节点是否为50%显示的组件
if (nextData && halfType.includes(nextData.attrType)) {
flag = true
} else if (index % 2 === 0) { // 下一个节点不是50%显示的组件 判断是否为奇数节点
flag = false
} else { // 下个组件不是50%显示的组件 并且刚好时偶数节点
flag = true
}
}
if (data.attrField === 'XGJH' || data.attrField === 'XGLC') {
flag = false
}
return flag ? '' : 'clear'
},
dateFormat(str) {
return dateFormat(str)
},
showXGJH(item) {
let routeUrl = this.$router.resolve({
name: 'enterBSysRevPlanManaLibDetail',
params: {
id: item.id,
pageType: 'INLAND_STAND'
}
})
window.open(routeUrl.href, '_blank')
},
// 对象排序
compare(property) {
return function(a, b) {
let value1 = a[property]
let value2 = b[property]
return value1 - value2
}
},
qbBtn() {
if (this.commentActiveName === 'dynamicComment'){
this.indexType = 'dynamic'
//查询评分表
const allData = {
lawId: this.$route.params.id,
userId: this.qualityFirstHistoryPeopleId,
evaluationType: this.indexType,
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getEvaluationForm', allData , {
_this: this
}, res => {
let averageScore = 0
res.data.forEach(item=>{
item.targetScore = Number(item.targetScore)/2
averageScore += item.targetScore
})
this.businessCommentForm.averageScore = averageScore/4
this.businessCommentTable = res.data
this.historyInfoLoading = false
}, e => {
this.historyInfoLoading = false
})
}
else if (this.commentActiveName === 'historyComment'){
this.indexType = 'quality'
//查询评分表
const allData = {
lawId: this.$route.params.id,
userId: this.dynamicFirstHistoryPeopleId,
evaluationType: this.indexType
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getEvaluationForm', allData , {
_this: this
}, res => {
this.dynamicHistoryCommentTable = res.data
this.historyCommentForm.revise = res.data[0].targetScore
this.historyCommentForm.reviseReason = res.data[0].commentReason
let averageScore = 0
res.data.forEach(item => {
if (item.valueType === 'number'){
averageScore += parseInt(item.targetScore)
}
})
averageScore = averageScore / 4
this.historyCommentForm.averageScore = averageScore
this.historyInfoLoading = false
}, e => {
this.historyInfoLoading = false
})
}
this.businessCommentDialog = true
},
},
computed: {
titleShow () {
return (this.sarStandardsInfoEO.standSortShow || '') + this.sarStandardsInfoEO.standCode + '-' + this.sarStandardsInfoEO.standYear + '《' + this.sarStandardsInfoEO.standName + '》' + '标准详情'
},
titleHidden () {
return (this.sarStandardsInfoEO.standSortShow || '') + this.sarStandardsInfoEO.standCode + '《' + this.sarStandardsInfoEO.standName + '》' + '标准详情'
},
visibleBtn () {
return this.$route.name === 'DomesticStandardDetails'
}
// sarType () {
// return this.$route.params.pageType
// }
},
async mounted () {
//查询动态评价总平均分和质量评价总平均分
let standId = this.$route.params.id
// 从数据库中查询各下拉框数据
this.$http.get('sys/dictype/getDicTypeListCode', '', {
_this: this
}, res => {
this.applyArcticOptions = res.data.ENERGYTYPES // 根据需求文档,产品类别对应标准属性中的“适用车型”
this.emergyKindOptions = res.data.ENERGYTYPES
this.requestOptions = res.data.REQUESTTYPE
this.textOptions = res.data.TEXTSTATUSBUSS //企标文本状态
this.mjOptions = res.data.MJ
this.STANDSOURCEREVISION = res.data.STANDSOURCEREVISION
}, e => {
})
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getScore', {lawId:standId}, {
_this: this
}, res => {
this.qualityCommentScore = res.data.quality.toFixed(3)/2
this.dynamicCommentScore = res.data.dynamic.toFixed(3)/2
}, e => {
})
//查询评价人表
const qualityRequest = {
lawId: standId,
evaluationType: 'quality'
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getHistory', qualityRequest, {
_this: this
}, res => {
this.qualityHistoryPeopleTable = res.data.records
this.qualityFirstHistoryPeopleId = res.data.records[0].userId
}, e => {
})
const dynamicRequest = {
lawId: standId,
evaluationType: 'dynamic'
}
this.$http.get('sarEnterpriseStandardEvaluation/quality-evaluation/getHistory', dynamicRequest, {
_this: this
}, res => {
this.dynamicHistoryPeopleTable = res.data.records
this.dynamicFirstHistoryPeopleId = res.data.records[0].userId
}, e => {
})
this.$http.get('sarEnterpriseStandardEvaluation/evaluation-index/getEvaluationIndex', {indexType:this.indexType}, {
_this: this
}, res => {
this.businessCommentTable = res.data
}, e => {
})
this.sarStandardsInfoEO.id = this.$route.params.id
this.getOrgTreeSource()
this.standItemEO.standId = this.$route.params.id
Promise.all([this.queryDisplayLocation(), this.selectStandMessage(), this.getAddFormFieldList()]).then(async(values) => {
const [displayLocation, {attrInfoMap: dynamicFormField}, formFieldList] = values
// const relatedPlansRes = await this.queryRelatedPlans()
// const relatedPlans = relatedPlansRes.list
formFieldList.forEach((field) => {
displayLocation.forEach((location) => {
location.isShowImp = '0'
if (dynamicFormField) {
let value = dynamicFormField[field.attrField]
if (field.attrField === 'SVPPS') {
let tips = dynamicFormField.SVPPSTips
field['tips'] = tips
}
if (value && typeof value === 'number') {
value = this.$moment(value).format('YYYY-MM-DD')
}
// 时间格式处理
if (field.attrType === 'DATE_PICKER' && value) {
value = this.$moment(value).format('YYYY-MM-DD')
}
field['value'] = value
if (field.showRegionId === location.value) {
if (!location.child) {
location['child'] = []
}
location['child'].push(field)
// if (field.isShowImp === '0') {
// location.isShowImp = '0'
// }
}
}
if (location.label === '过程稿件') {
location.isShowImp = '0'
}
})
})
displayLocation.forEach(location => {
// 动态属性字段-FBGBJBD 单独添加至基础信息
const list = displayLocation.filter ( item => item.label === '过程稿件');
if(location.label === '基础信息' && list && list.length > 0){
if (!list[0].child) {
location['child1'] = []
}else {
const childList = list[0].child.filter ( item => item.attrField === 'FBGBUSS');
location['child1'] = childList
}
}
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)
}
}
}
const child = location.child || []
const halfType = ['INPUT_STR', 'DATE_PICKER', 'SEL_OPTION', 'INPUT_NUM']
const fieldsIsTextAreaOrFile = child.filter(field => {
return field.attrField !== 'FBGBUSS' && !halfType.includes(field.attrType)
})
const fieldOthers = child.filter(field => {
return halfType.includes(field.attrType)
})
location.child = [...fieldOthers, ...fieldsIsTextAreaOrFile].sort(this.compare('orderNum'))
})
this.dynamicFormField = displayLocation
sessionStorage.setItem('displayLocation', JSON.stringify(displayLocation))
this.loading = false
})
/**
* 自定义鼠标滚轮事件
* chrome and ie
*/
window.addEventListener('mousewheel', this.handleScroll, false)
// firefox
window.addEventListener('DOMMouseScroll', this.handleScroll, false)
},
destroyed () {
window.removeEventListener('mousewheel', this.handleScroll, false)
window.removeEventListener('DOMMouseScroll', this.handleScroll, false)
sessionStorage.removeItem('displayLocation')
}
}
</script>
<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;
margin: 0 auto;
height: 100%;
.details-header{
padding: 34px 0;
font-size: 20px;
font-weight: bold;
color: #555555;
text-align: center;
& > span{
width: 100%;
}
}
/deep/.details-content{
/*padding: 0 67px;*/
.details-content-modular{
/*margin-bottom: 20px;*/
.modular-header{
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 50px;
border-bottom: 1px solid #E5E5E5;
.modular-header-title{
font-size: 18px;
font-weight: bold;
color: #3B424C;
& > .icon-modular-title{
display: inline-block;
margin-left: -28px;
width: 18px;
height: 18px;
background-size: 100% 100%;
background-position: center center;
background-image: url("~assets/images/shangqi/standardDetails/modular-title.png");
position: relative;
top: 2px;
}
& > span{
padding-left: 10px;
}
}
.modular-header-btn{
& > button{
height: 30px;
line-height: 30px;
font-size: 14px;
padding: 0 10px;
font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
& > i{
display: inline-block;
margin-right: 3px;
width: 18px;
height: 18px;
background-repeat: no-repeat;
background-size: 100% 100%;
background-position: center center;
vertical-align: text-bottom;
}
}
.collection-btn{
padding: 0;
border: none;
i {
color: #F2CB51;
font-size: 18px;
width: 18px;
height: 18px;
}
/*background: rgba(244, 162, 39, 0.1);*/
.icon-collection{
background-image: url("~assets/images/shangqi/standardDetails/collection.png");
}
&:hover{
background: transparent;
}
}
.relation-btn{
color: #409EFF;
border: 1px solid #409EFF;
background: rgba(64, 158, 255, 0.1);
.icon-relation{
background-image: url("~assets/images/shangqi/standardDetails/relation.png");
}
}
}
}
.basic-information-content{
color: #333333;
font-size: 16px;
/*font-weight: 400;*/
.standard-text{
height: 50px;
line-height: 50px;
border-bottom: 1px solid #E5E5E5;
}
}
.modular-content{
& > div{
border-bottom: 1px solid #E5E5E5;
.modular-content-p-name{
display: inline-block;
width: 220px;
height: 43px;
line-height: 43px;
font-size: 16px;
color: #333333;
vertical-align: top;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.modular-content-p-val{
display: inline-block;
width: calc(~'100% - 225px');
min-height: 50px;
line-height: 50px;
font-size: 16px;
color: #999999;
word-break: break-all;
//overflow: hidden;
//white-space: nowrap;
//text-overflow: ellipsis;
}
.modular-content-p-flies{
position: relative;
display: inline-block;
width: calc(~'100% - 225px');
& > .files-title{
width: calc(~'100% - 120px');
min-height: 50px;
line-height: 50px;
font-size: 16px;
color: #409EFF;
& > a{
cursor: pointer;
}
& > i{
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;
}
.icon-download{
background-image: url("~assets/images/shangqi/img/download.png");
}
.icon-download2{
background-image: url("~assets/images/shangqi/img/download2.png");
}
}
.decomposition-btn{
position: absolute;
top: 10px;
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);
.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");
}
}
}
}
}
}
.basic-information{
.modular-header{
height: 60px;
border-bottom: none;
}
.basic-information-content{
& > p{
min-height: 42px;
line-height: 43px;
border-bottom: 1px solid #E5E5E5;
}
}
}
}
.more, .put-away{
position: fixed;
bottom: 0;
width: 1200px;
display: flex;
justify-content: center;
align-items: center;
//margin-bottom: 20px;
color: #409EFF;
font-size: 16px;
cursor: pointer;
background-image: linear-gradient(-180deg,rgba(255,255,255,0) 0%,#fff 70%);
padding-bottom: 34px;
& > img{
margin-left: 5px;
width: 14px;
height: 14px;
}
}
.put-away{
& > img{
transform: rotate(180deg);
}
}
.not-footer-drawer{
.search-area{
margin-bottom: 0;
border-bottom: 5px solid #f6f6f6;
}
.content{
padding: 0;
flex: auto;
//height: calc(~'100% - 105px - 56px');
}
.pagination{
position: static;
}
}
}
.half {
width: 50%;
float: left;
}
.clear{
clear: both;
}
.hidden {
overflow: hidden;
}
.clearfix{
&:after {
clear: both;
}
&:after, &:before {
display: table;
content: "";
}
}
.details-container .el-divider {
height: 1px;
background-color: #d5d8da;
}
.relateClass{
.el-dialog__body {
max-height: 460px;
overflow-y: auto;
}
}
</style>