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

This commit is contained in:
super_liu
2022-06-07 09:11:48 +08:00
26 changed files with 4794 additions and 210 deletions
+5
View File
@@ -151,6 +151,11 @@
path: '/standInvolveProject', path: '/standInvolveProject',
menuId: '8a9c87fe06244fb9d55e78fb281f625b' menuId: '8a9c87fe06244fb9d55e78fb281f625b'
}, },
{
title: '问答库', // 把 标准涉及项目 这几个字 改成 标准合规评估结果
path: '/standQA',
menuId: ''
},
// { // {
// title: '零部件编号申请', // title: '零部件编号申请',
// path: '/partCodeApply', // path: '/partCodeApply',
+74 -20
View File
@@ -16,7 +16,6 @@
border border
style="cursor:pointer;" style="cursor:pointer;"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"> :header-cell-style="{background: '#f8f8f9', color: '#515a6e'}">
style="width: 100%">
<el-table-column <el-table-column
label="序号" label="序号"
type="index" type="index"
@@ -24,20 +23,35 @@
width="55"> width="55">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="standName" label="标准编号">
label="名称">
<template slot-scope="scope"> <template slot-scope="scope">
<span @click="handlePreview(scope.row)">{{ scope.row.standName }}</span> <span @click="handlePreview(scope.row)">{{ scope.row.standard }}</span>
</template>
</el-table-column>
<el-table-column
prop="standName"
label="标准名称">
<template slot-scope="scope">
<span @click="handlePreview(scope.row)">{{ scope.row.standardName }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
width="120" width="120"
label="发布时间"> label="发布时间">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.issueTime ? $moment(scope.row.issueTime).format('YYYY-MM-DD') : '' }}</span> <span>{{scope.row.releaseDate ? $moment(scope.row.releaseDate).format('YYYY-MM-DD') : '' }}</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="more" v-if="!pageVerify" @click="togo">更多 </div>
<loading :loading="loading">加载中...</loading>
<pagination
v-if="pageVerify"
style="position: static;"
:page="page"
:total="total"
@pageChange="pageChange"
@pageSizeChange="pageSizeChange"></pagination>
</div> </div>
</template> </template>
@@ -48,8 +62,13 @@ export default {
mixins: [], mixins: [],
data() { data() {
return { return {
putTime: '', loading: false,
standardReleaseList: [], //标准发布数据 pageVerify: false,
page: 1,
pageSize: 10,
total: 0,
putTime: '',
standardReleaseList: [], //标准发布数据
} }
}, },
computed: {}, computed: {},
@@ -60,13 +79,33 @@ export default {
// this.addDate() // this.addDate()
}, },
methods: { methods: {
pageChange(page) {
this.page = page
this.pageSize = this.$store.getters.userInfo.configContent
this.getAdvice()
},
// 分页每页显示数改变后方法
pageSizeChange(pageSize) {
this.pageSize = this.$store.getters.userInfo.configContent
this.getAdvice()
// 此处需要调用接口,修改个人配置
},
togo () {
if(this.total && this.total > 10){
this.pageVerify = true
this.pageSize = this.$store.getters.userInfo.configContent
}else {
this.pageVerify = false
}
this.getAdvice()
},
// 点击查看 // 点击查看
handlePreview (item) { handlePreview (item) {
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
name: 'OtherStandardDetails', name: 'OtherStandardDetails',
params: { params: {
id: item.id, id: item.standardId,
pageType: item.standType + '_STAND' pageType: item.resourceType + '_STAND'
} }
}) })
window.open(routeUrl.href, '_blank') window.open(routeUrl.href, '_blank')
@@ -77,18 +116,21 @@ export default {
}, },
//获取数据 //获取数据
getAdvice() { getAdvice() {
let obj = {} this.loading = true
obj.limit = 10 this.$http.get("/lawss/NewsFeed/getNewsFeed", {
this.$http.get('sarStandardsInfo/sar-standards-info/getStandInfoByList', obj, { messageType: 'GNWBZFG',
_this: this page: this.page,
}, res => { pageSize: this.pageSize
let arr = res.data }, {
arr.forEach(item => { _this: this,loading: 'loading'
if(item.standName !== ""){ }, res => {
this.standardReleaseList.push(item) this.standardReleaseList = res.data.records
} this.total = res.data.total
}) this.loading = false
}, e => { }, e => {
this.loading = false
this.standardReleaseList = []
this.total = 0
}) })
}, },
}, },
@@ -103,6 +145,18 @@ export default {
} }
/deep/.el-table td > .cell{ /deep/.el-table td > .cell{
font-size: 13px; font-size: 13px;
}
/deep/.more {
position: absolute;
right: 0;
bottom: 2px;
font-size: 12px;
float: right;
color: #4788c0;
&:hover {
color: #3a8ee6;
cursor: pointer;
}
} }
width: 100%; width: 100%;
.time-title { .time-title {
@@ -0,0 +1,178 @@
<!-- 企标发布 -->
<template>
<div class="release">
<!-- <ul>-->
<!-- <li v-for="item in standardReleaseList" :key="item.id" class="time-title" >-->
<!-- <div style="height: 18px;">-->
<!-- <a @click="handlePreview(item)" style="color: #333333" class="table-jump">{{ item.standName }}</a>-->
<!-- <span class="time">{{item.issueTime ? $moment(item.issueTime).format('YYYY-MM-DD') : '' }}</span>-->
<!-- </div>-->
<!-- </li>-->
<!-- </ul>-->
<el-table
ref="selection"
:data="standardReleaseList"
tooltip-effect="dark"
border
style="cursor:pointer;"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}">
<el-table-column
label="序号"
type="index"
align="center"
width="55">
</el-table-column>
<el-table-column
label="标准编号">
<template slot-scope="scope">
<span @click="handlePreview(scope.row)">{{ scope.row.standard }}</span>
</template>
</el-table-column>
<el-table-column
prop="standName"
label="标准名称">
<template slot-scope="scope">
<span @click="handlePreview(scope.row)">{{ scope.row.standardName }}</span>
</template>
</el-table-column>
<el-table-column
width="120"
label="发布时间">
<template slot-scope="scope">
<span>{{scope.row.releaseDate ? $moment(scope.row.releaseDate).format('YYYY-MM-DD') : '' }}</span>
</template>
</el-table-column>
</el-table>
<div class="more" v-if="!pageVerify" @click="togo">更多 </div>
<loading :loading="loading">加载中...</loading>
<pagination
v-if="pageVerify"
style="position: static;"
:page="page"
:total="total"
@pageChange="pageChange"
@pageSizeChange="pageSizeChange"></pagination>
</div>
</template>
<script>
export default {
name: 'ReleaseBuss',
components: {},
mixins: [],
data() {
return {
loading: false,
pageVerify: false,
page: 1,
pageSize: 10,
total: 0,
putTime: '',
standardReleaseList: [], //标准发布数据
}
},
computed: {},
watch: {},
mounted() {
this.getDate()
this.getAdvice()
// this.addDate()
},
methods: {
pageChange(page) {
this.page = page
this.pageSize = this.$store.getters.userInfo.configContent
this.getAdvice()
},
// 分页每页显示数改变后方法
pageSizeChange(pageSize) {
this.pageSize = this.$store.getters.userInfo.configContent
this.getAdvice()
// 此处需要调用接口,修改个人配置
},
togo () {
if(this.total && this.total > 10){
this.pageVerify = true
this.pageSize = this.$store.getters.userInfo.configContent
}else {
this.pageVerify = false
}
this.getAdvice()
},
// 点击查看
handlePreview (item) {
let routeUrl = this.$router.resolve({
name: 'OtherBussStandardDetails',
params: {
id: item.standardId,
pageType: 'BUSINESS_STAND'
}
})
window.open(routeUrl.href, '_blank')
},
//截取时间
getDate (date) {
return date != null ? date.substring(0, date.indexOf(' ')) : ''
},
//获取数据
getAdvice() {
this.loading = true
this.$http.get("/lawss/NewsFeed/getNewsFeed", {
messageType: 'QYBZFB',
page: this.page,
pageSize: this.pageSize
}, {
_this: this,loading: 'loading'
}, res => {
this.standardReleaseList = res.data.records
this.total = res.data.total
this.loading = false
}, e => {
this.loading = false
this.standardReleaseList = []
this.total = 0
})
},
},
}
</script>
<style lang="less" scoped>
.release {
/deep/.el-table th > .cell {
font-size: 15px;
}
/deep/.el-table td > .cell{
font-size: 13px;
}
/deep/.more {
position: absolute;
right: 0;
bottom: 2px;
font-size: 12px;
float: right;
color: #4788c0;
&:hover {
color: #3a8ee6;
cursor: pointer;
}
}
width: 100%;
.time-title {
margin: 15px;
.time {
float: right;
color:#333333;
}
a {
color: #ffffff;
&:hover {
color: #e9c851;
cursor:pointer;
text-decoration: underline;
}
}
}
}
</style>
@@ -0,0 +1,183 @@
<!-- 企标发布 -->
<template>
<div class="release">
<!-- <ul>-->
<!-- <li v-for="item in standardReleaseList" :key="item.id" class="time-title" >-->
<!-- <div style="height: 18px;">-->
<!-- <a @click="handlePreview(item)" style="color: #333333" class="table-jump">{{ item.standName }}</a>-->
<!-- <span class="time">{{item.issueTime ? $moment(item.issueTime).format('YYYY-MM-DD') : '' }}</span>-->
<!-- </div>-->
<!-- </li>-->
<!-- </ul>-->
<el-table
ref="selection"
:data="standardReleaseList"
tooltip-effect="dark"
border
style="cursor:pointer;"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}">
<el-table-column
label="分类"
align="center"
width="80">
</el-table-column>
<el-table-column
label="问题描述">
<template slot-scope="scope">
<!-- <span @click="handlePreview(scope.row)">{{ scope.row.standard }}</span>-->
</template>
</el-table-column>
<el-table-column
prop="standName"
label="提问人"
width="100">
<template slot-scope="scope">
<!-- <span @click="handlePreview(scope.row)">{{ scope.row.standardName }}</span>-->
</template>
</el-table-column>
<el-table-column
width="120"
label="提问时间">
<template slot-scope="scope">
<!-- <span>{{scope.row.releaseDate ? $moment(scope.row.releaseDate).format('YYYY-MM-DD') : '' }}</span>-->
</template>
</el-table-column>
</el-table>
<div class="more" v-if="!pageVerify" @click="togo">更多 </div>
<loading :loading="loading">加载中...</loading>
<pagination
v-if="pageVerify"
style="position: static;"
:page="page"
:total="total"
@pageChange="pageChange"
@pageSizeChange="pageSizeChange"></pagination>
</div>
</template>
<script>
export default {
name: 'ReleaseQA',
components: {},
mixins: [],
data() {
return {
loading: false,
pageVerify: false,
page: 1,
pageSize: 10,
total: 0,
putTime: '',
standardReleaseList: [], //标准问答数据
}
},
computed: {},
watch: {},
mounted() {
this.getDate()
this.getAdvice()
// this.addDate()
},
methods: {
pageChange(page) {
this.page = page
this.pageSize = this.$store.getters.userInfo.configContent
this.getAdvice()
},
// 分页每页显示数改变后方法
pageSizeChange(pageSize) {
this.pageSize = this.$store.getters.userInfo.configContent
this.getAdvice()
// 此处需要调用接口,修改个人配置
},
togo () {
if(this.total && this.total > 10){
this.pageVerify = true
this.pageSize = this.$store.getters.userInfo.configContent
}else {
this.pageVerify = false
}
this.getAdvice()
},
// 点击查看
handlePreview (item) {
// let routeUrl = this.$router.resolve({
// name: 'OtherBussStandardDetails',
// params: {
// id: item.standardId,
// pageType: 'BUSINESS_STAND'
// }
// })
// window.open(routeUrl.href, '_blank')
},
//截取时间
getDate (date) {
return date != null ? date.substring(0, date.indexOf(' ')) : ''
},
//获取数据
getAdvice() {
this.loading = true
// 模拟加载
const timer = setInterval(() => {
this.loading = false
}, 2000)
console.log(timer)
// this.$http.get("/lawss/NewsFeed/getNewsFeed", {
// messageType: 'QYBZFB',
// page: this.page,
// pageSize: this.pageSize
// }, {
// _this: this,loading: 'loading'
// }, res => {
// this.standardReleaseList = res.data.records
// this.total = res.data.total
// this.loading = false
// }, e => {
// this.loading = false
// this.standardReleaseList = []
// this.total = 0
// })
},
},
}
</script>
<style lang="less" scoped>
.release {
/deep/.el-table th > .cell {
font-size: 15px;
}
/deep/.el-table td > .cell{
font-size: 13px;
}
/deep/.more {
position: absolute;
right: 0;
bottom: 2px;
font-size: 12px;
float: right;
color: #4788c0;
&:hover {
color: #3a8ee6;
cursor: pointer;
}
}
width: 100%;
.time-title {
margin: 15px;
.time {
float: right;
color:#333333;
}
a {
color: #ffffff;
&:hover {
color: #e9c851;
cursor:pointer;
text-decoration: underline;
}
}
}
}
</style>
@@ -0,0 +1,194 @@
<!-- 标准发布 -->
<template>
<div class="release">
<!-- <ul>-->
<!-- <li v-for="item in standardReleaseList" :key="item.id" class="time-title" >-->
<!-- <div style="height: 18px;">-->
<!-- <a @click="handlePreview(item)" style="color: #333333" class="table-jump">{{ item.standName }}</a>-->
<!-- <span class="time">{{item.issueTime ? $moment(item.issueTime).format('YYYY-MM-DD') : '' }}</span>-->
<!-- </div>-->
<!-- </li>-->
<!-- </ul>-->
<el-table
ref="selection"
:data="standardReleaseList"
tooltip-effect="dark"
border
style="cursor:pointer;"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}">
<el-table-column
label="序号"
type="index"
align="center"
width="55">
</el-table-column>
<el-table-column
prop="standard"
label="标准编号">
<template slot-scope="scope">
<span @click="handlePreview(scope.row)">{{ scope.row.standard }}</span>
</template>
</el-table-column>
<el-table-column
prop="standardName"
label="标准名称">
<template slot-scope="scope">
<span @click="handlePreview(scope.row)">{{ scope.row.standardName }}</span>
</template>
</el-table-column>
<el-table-column
width="120"
label="文本状态">
<template slot-scope="scope">
<span>{{ textStatusMap[scope.row.textState] }}</span>
</template>
</el-table-column>
</el-table>
<div class="more" v-if="!pageVerify" @click="togo">更多 </div>
<loading :loading="loading">加载中...</loading>
<pagination
v-if="pageVerify"
style="position: static;"
:page="page"
:total="total"
@pageChange="pageChange"
@pageSizeChange="pageSizeChange"></pagination>
</div>
</template>
<script>
export default {
name: 'ReleaseUs',
components: {},
mixins: [],
data() {
return {
loading: false,
pageVerify: false,
page: 1,
pageSize: 10,
total: 0,
putTime: '',
standardReleaseList: [], //标准发布数据
textStatusMap: {} // 文本状态id与name对应
}
},
computed: {},
watch: {},
mounted() {
this.$http.get('sys/dictype/getDicTypeListCode', '', {
_this: this
}, res => {
if (res.data.WBZTCLASS !== undefined && res.data.WBZTCLASS !== null){
this.setMap(res.data.WBZTCLASS) // 文本状态
}
}, e => {
})
this.getDate()
this.getAdvice()
// this.addDate()
},
methods: {
pageChange(page) {
this.page = page
this.pageSize = this.$store.getters.userInfo.configContent
this.getAdvice()
},
// 分页每页显示数改变后方法
pageSizeChange(pageSize) {
this.pageSize = this.$store.getters.userInfo.configContent
this.getAdvice()
// 此处需要调用接口,修改个人配置
},
togo () {
if(this.total && this.total > 10){
this.pageVerify = true
this.pageSize = this.$store.getters.userInfo.configContent
}else {
this.pageVerify = false
}
this.getAdvice()
},
// 将文本状态的id与name对应
setMap(data) {
data.forEach(item => {
this.$set(this.textStatusMap, item.value, item.label)
})
},
// 点击查看
handlePreview (item) {
let routeUrl = this.$router.resolve({
name: 'OtherStandardDetails',
params: {
id: item.standardId,
pageType: item.resourceType + '_STAND'
}
})
window.open(routeUrl.href, '_blank')
},
//截取时间
getDate (date) {
return date != null ? date.substring(0, date.indexOf(' ')) : ''
},
//获取数据
getAdvice() {
this.loading = true
this.$http.get("/lawss/NewsFeed/getNewsFeed", {
messageType: 'ZYBZFG',
page: this.page,
pageSize: this.pageSize
}, {
_this: this,loading: 'loading'
}, res => {
this.standardReleaseList = res.data.records
this.total = res.data.total
this.loading = false
}, e => {
this.loading = false
this.standardReleaseList = []
this.total = 0
})
},
},
}
</script>
<style lang="less" scoped>
.release {
/deep/.el-table th > .cell {
font-size: 15px;
}
/deep/.el-table td > .cell{
font-size: 13px;
}
/deep/.more {
position: absolute;
right: 0;
bottom: 2px;
font-size: 12px;
float: right;
color: #4788c0;
&:hover {
color: #3a8ee6;
cursor: pointer;
}
}
width: 100%;
.time-title {
margin: 15px;
.time {
float: right;
color:#333333;
}
a {
color: #ffffff;
&:hover {
color: #e9c851;
cursor:pointer;
text-decoration: underline;
}
}
}
}
</style>
@@ -14,21 +14,6 @@
:value="item.value" :value="item.value"
></el-option> ></el-option>
</el-select> </el-select>
<el-select
v-model="checkStateType"
class="search-group-itemType"
placeholder="请选择"
@change="checkStateTypeFunc"
>
<el-option
v-for="item in jumpPageType"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<div class="search-condition"> <div class="search-condition">
<el-input <el-input
@keyup.native.enter="search" @keyup.native.enter="search"
@@ -37,7 +22,8 @@
placeholder="请输入关键词" placeholder="请输入关键词"
clearable clearable
></el-input> ></el-input>
<el-button style="box-shadow:1px 1px 10px rgba(0,0,0,0.2);margin-left: 5px;font-size: 15px;" type="primary" @click="search">一般检索</el-button> <el-button style="box-shadow:1px 1px 5px rgba(0,0,0,0.2);margin-left: 5px;font-size: 15px;" type="primary" @click="search('titleSearch')">一般检索(标题)</el-button>
<el-button style="box-shadow:1px 1px 50px rgba(0,0,0,0.2);margin-left: 5px;font-size: 15px;" type="primary" @click="search('allTextSearch')">一般检索(全文)</el-button>
<el-button style="box-shadow:1px 1px 10px rgba(0,0,0,0.2);margin-left: 5px;font-size: 15px;" type="primary" @click="seniorSearch">高级检索</el-button> <el-button style="box-shadow:1px 1px 10px rgba(0,0,0,0.2);margin-left: 5px;font-size: 15px;" type="primary" @click="seniorSearch">高级检索</el-button>
</div> </div>
</div> </div>
@@ -93,10 +79,10 @@ export default {
computed: {}, computed: {},
watch: {}, watch: {},
methods: { methods: {
checkStateTypeFunc(data){ // checkStateTypeFunc(data){
this.checkStateType = data // this.checkStateType = data
this.$forceUpdate() // this.$forceUpdate()
}, // },
checkStateFunc(data){ checkStateFunc(data){
if(data === 'All'){ if(data === 'All'){
this.showType = true this.showType = true
@@ -104,13 +90,13 @@ export default {
this.showType = false this.showType = false
} }
}, },
search() { search(checkStateType) {
this.$router.push({ this.$router.push({
name: 'StandardSearch', name: 'StandardSearch',
params: { params: {
selectKey: this.checkState, selectKey: this.checkState,
searchValue: this.checkContent || undefined, searchValue: this.checkContent || undefined,
allType: this.checkStateType, allType: checkStateType,
} }
}) })
}, },
@@ -37,11 +37,7 @@
label="结束时间"> label="结束时间">
</el-table-column> </el-table-column>
</el-table> </el-table>
<div <div class="more" @click="$router.push('standardForComments')">更多 </div>
style="height: 20px;background-color: #fff;text-align: right;color: #4788c0; position: absolute; bottom: 5px; right: 5px">
<span style="margin-right: 10px;cursor: pointer;font-size: 12px"
@click="$router.push('standardForComments')">更多 </span>
</div>
</div> </div>
</template> </template>
@@ -97,6 +93,18 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
.solicitopinions { .solicitopinions {
/deep/.more {
position: absolute;
right: 0;
bottom: 0;
font-size: 12px;
float: right;
color: #4788c0;
&:hover {
color: #3a8ee6;
cursor: pointer;
}
}
/deep/.el-table__body-wrapper { /deep/.el-table__body-wrapper {
max-height: calc(65vh - 101px); max-height: calc(65vh - 101px);
overflow-y: auto; overflow-y: auto;
+20 -2
View File
@@ -15,10 +15,22 @@
<span slot="label"><i class="el-icon-s-order"></i> 标准征求意见</span> <span slot="label"><i class="el-icon-s-order"></i> 标准征求意见</span>
<solicitOpinions></solicitOpinions> <solicitOpinions></solicitOpinions>
</el-tab-pane> </el-tab-pane>
<el-tab-pane name="release"> <el-tab-pane name="release" style="overflow-y: auto;height: 100%">
<span slot="label"><i class="el-icon-s-promotion"></i> 标准发布</span> <span slot="label"><i class="el-icon-s-promotion"></i> 国内外标准法规入库</span>
<release></release> <release></release>
</el-tab-pane> </el-tab-pane>
<el-tab-pane name="releaseUs" style="overflow-y: auto;height: 100%">
<span slot="label"><i class="el-icon-s-operation"></i> 在研标准法规入库</span>
<releaseUs></releaseUs>
</el-tab-pane>
<el-tab-pane name="releaseBuss" style="overflow-y: auto;height: 100%">
<span slot="label"><i class="el-icon-s-promotion"></i> 企业标准发布</span>
<releaseBuss></releaseBuss>
</el-tab-pane>
<el-tab-pane name="releaseQA" style="overflow-y: auto;height: 100%">
<span slot="label"><i class="el-icon-chat-line-round"></i> 标准问答</span>
<releaseQA></releaseQA>
</el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</div> </div>
@@ -37,6 +49,9 @@
<script> <script>
import searchGroup from './components/searchGroup' import searchGroup from './components/searchGroup'
import release from './components/release' import release from './components/release'
import releaseUs from './components/releaseUs'
import releaseBuss from './components/releaseBuss'
import releaseQA from './components/releaseQA'
import solicitOpinions from './components/solicitopinions' import solicitOpinions from './components/solicitopinions'
import navMenu from './components/navMenu' import navMenu from './components/navMenu'
import todoList from './components/todoList' import todoList from './components/todoList'
@@ -47,6 +62,9 @@ export default {
searchGroup, searchGroup,
solicitOpinions, solicitOpinions,
release, release,
releaseUs,
releaseBuss,
releaseQA,
navMenu, navMenu,
todoList, todoList,
Empennage, Empennage,
@@ -0,0 +1,210 @@
<!--我的回答-->
<template>
<div>
<el-divider style="margin: 10px 0;"></el-divider>
<div id="message-content">
<el-form ref="form" :model="form" :rules="rules">
<el-form-item prop="reply">
<el-input
type="textarea"
:rows="2"
placeholder="请输入回答内容"
v-model="form.reply">
</el-input>
</el-form-item>
<div>
<el-button
type="primary"
class="common-button-primary"
size="small"
style="float: right;"
@click="handleSubmit"
>提交</el-button>
<el-button
type="primary"
class="common-button-primary"
size="small"
style="float: right;margin-right: 10px;"
@click="openUploadFileDialog"
>上传文件</el-button>
<el-button
type="primary"
class="common-button-primary"
size="small"
style="float: right;"
@click="queArchive"
>问题归档</el-button>
<el-button
type="primary"
class="common-button-primary"
size="small"
style="float: right;margin-right: 10px;"
@click="invitation"
>邀请</el-button>
</div>
</el-form>
</div>
<el-dialog
width='400px'
:visible.sync="importModalshowflagtemp"
title="上传文件"
:footer-hide="true"
append-to-body
>
<el-upload
multiple
drag
:on-success="uploadSuccess"
:before-upload="beforeUpload"
:on-remove="removeOneFile"
:action="actionPath"
accept=".ZIP, .zip, .docx, .DOCX, .xls, .xlsx, .pdf, .PDF"
name="file"
:file-list="fileList"
ref="importFileAboutStand">
<i class="el-icon-upload"></i>
<div class="el-upload__text">点击或拖拽上传文件</div>
</el-upload>
</el-dialog>
<!-- 选择回答人-->
<Role-tree
is-title="选择回答人"
:is-visible.sync="roleFlag"
@checkedRole="checkedRole"
:nodeList="nodeList"
></Role-tree>
</div>
</template>
<script>
export default {
name: "answerItem",
data(){
return{
roleFlag: false,
nodeList: [],
// 上传地址
actionPath: 'api/att/attFile/uploadNew',
importModalshowflagtemp: false,
fileList: [],
form:{
reply: '',
answerer: this.$store.getters.userInfo.userId,
},
rules: {
reply: [
{ required: true, message: '请输入回复内容', trigger: 'blur' },
{ min: 1, max: 500, message: '长度在 1 到 500 个字符', trigger: 'blur' }
]
},
}
},
methods:{
//提交
handleSubmit(){
let asdId = sessionStorage.getItem('queId')
this.form.fileList = this.fileList
this.form.askId = asdId
this.$http.postData('lawss/Reply/insertReply',{ ...this.form },{
_this: this
}, res => {
}, e => {
})
},
//上传文件
openUploadFileDialog(){
this.importModalshowflagtemp = true
},
//上传成功
uploadSuccess(res,file,fileList){
if(res.ok){
this.fileList.push(res.data)
this.$message.success('上传成功')
}else{
this.$message.warning(res.message)
fileList.pop()
}
this.importModalshowflagtemp = false
},
//文件上传前
beforeUpload(file){
console.log(file);
var filename = file.name;
var index1 = filename.lastIndexOf('.')
var index2 = filename.length
var fileSuffix = filename.substring(index1, index2)
//把后缀转大写
if(fileSuffix){
fileSuffix = fileSuffix.toUpperCase()
}
// 判断上传文件格式
if (fileSuffix === ".PDF" || fileSuffix === ".DOC" || fileSuffix === ".DOCX" || fileSuffix === ".PPT"
|| fileSuffix === ".PPTX" || fileSuffix === ".XLS" || fileSuffix === ".XLSX"
|| fileSuffix === ".PNG" || fileSuffix === ".JPG" || fileSuffix === ".JPEG") {
return true;
} else {
this.$message.error("文件" + file.name + "格式不正确,请上传pdf、doc、docx、ppt、pptx、xls、xlsx、png、jpg、jpeg等文件");
return false;
}
// 判断文件上传大小
if (file.size / 1024 / 1024 > 300) {
this.$message.warning("文件" + file.name + "大小不能超过300M");
return false;
}
return true;
},
//删除文件
removeOneFile(){
this.fileList.forEach((item,index) => {
if(item.name === file.name || item.id === file.id){
this.fileList.splice(index, 1)
}
})
},
checkedRole(data){
let asdId = sessionStorage.getItem('queId')
this.$http.postData('lawss/AskUser/insertAskUser',{
asdId: asdId,
usid: data[0].id,
},{
_this: this
}, res => {
if(res.ok){
this.$message.success('邀请成功')
}
}, e => {
})
},
//问题归档
queArchive(){
let list = []
let mergeList = JSON.parse(sessionStorage.getItem('mergeList'))
for (let i = 0; i < mergeList.length; i++) {
list.push(mergeList[i])
}
let listId = list.join(',')
this.$http.post('lawss/Reply/updateReply', {
id: listId,
},{
_this: this
}, res => {
}, e => {
})
},
//邀请
invitation(){
this.roleFlag = true
},
},
};
</script>
<style lang="less" scoped>
#message-content{
}
</style>
@@ -0,0 +1,80 @@
<!--回答框-->
<template>
<div id="answer-item">
<div>
<div class="row">
<div class="item">
<div>回答
<span>{{answer. reply}}</span>
</div>
</div>
</div>
<div class="row">
<div class="item">
<div style="cursor: pointer;">附件
<span style="color: #409EFF">{{answer.appendixName}}</span>
</div>
</div>
</div>
<div class="row" style="float: right; margin-right: 10px">
<div class="item">
<div>{{answer.answerer}}
<span>{{answer.replyTime}}</span>
</div>
</div>
</div>
<div>
<el-checkbox @change="answerChang" v-model="answer.checked">归档</el-checkbox>
</div>
</div>
<!-- <div class="footer-box">-->
<!-- </div>-->
</div>
</template>
<script>
export default {
name: "questionItemInfo",
props:['answer'],
data(){
return{
checked: '',
}
},
methods:{
answerChang(val){
},
},
watch:{
answer: {
immediate: true,
deep: true,
handler(val) {
this.answer = val
}
}
}
};
</script>
<style lang="less" scoped>
#answer-item{
width: 100%;
min-width: 130px;
padding: 15px 5px;
.row {
line-height: 1.8;
}
.item {
display: inline-block;
}
.footer-box{
height: 200px;
width: 100%;
position: absolute;
bottom: 0;
border-top: 1px solid #cccccc;
}
}
</style>
@@ -1,24 +1,22 @@
<!--问题的描述--> <!--问题的描述-->
<template> <template>
<div id="questions-item"> <div id="questions-item">
<div> <div>
<div class="row"> <div class="row">
<div class="item"> <div class="item">
<span>{{question.modifyTime}}</span> <div>提问
</div> <span>{{question.problemDescription}}</span>
<div class="item" style="padding-left: 10px;">
<span>{{ resType }}</span>
</div>
</div>
<div class="row" style="margin-top: 10px">
<div class="item">
<span>{{question.resCode}}</span>
</div> </div>
<div class="item" style="padding-left: 10px"> </div>
<span>{{question.content}}</span> </div>
</div> <div class="row">
</div> <div class="item">
</div> <div>{{userName}}
<span>{{question.questionTime}}</span>
</div>
</div>
</div>
</div>
</div> </div>
</template> </template>
@@ -27,26 +25,17 @@ export default {
name: "questions-item", name: "questions-item",
props: ['question'], props: ['question'],
computed: { computed: {
resType() {
const matcher = {
INLAND_STAND: '国内标准',
FOREIGN_STAND: '国外标准',
FOREIGN_LAWS: '国内外政策',
BUSINESS: '企业标准'
}
return matcher[this.question.resType]
}
}, },
data(){ data(){
return{ return{
userName: this.$store.getters.userInfo.userName,
} }
}, },
watch:{ watch:{
question: { question: {
immediate: true, immediate: true,
deep: true, deep: true,
handler(val) { handler(val){
this.question = val
} }
} }
} }
@@ -56,10 +45,10 @@ export default {
<style lang="less" scoped> <style lang="less" scoped>
#questions-item{ #questions-item{
width: 100%; width: 100%;
min-width: 130px;
padding:10px 0; padding:10px 0;
.row { .row {
line-height: 1.2; line-height: 1.8;
} }
.item { .item {
display: inline-block; display: inline-block;
@@ -0,0 +1,53 @@
<!--标准的描述-->
<template>
<div id="stand-item">
<div>
<div class="row">
<div class="item">
<span>{{stand.standardEncdoing}}</span>
</div>
</div>
<div class="row">
<div class="item">
<span>{{stand.standardName}}</span>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "stand-item",
props: ['stand'],
computed: {
},
data(){
return{
}
},
watch:{
stand: {
immediate: true,
deep: true,
handler(val) {
this.stand = val
}
}
}
};
</script>
<style lang="less" scoped>
#stand-item{
width: 100%;
min-width: 130px;
padding:10px 0;
.row {
line-height: 1.5;
}
.item {
display: inline-block;
}
}
</style>
File diff suppressed because it is too large Load Diff
+88 -13
View File
@@ -23,7 +23,9 @@
</div> </div>
<div v-else-if="!loading && standList.length" class="card-content" v-for="item in standList" :key="item.id" @click="jumpDetails(item) "> <div v-else-if="!loading && standList.length" class="card-content" v-for="item in standList" :key="item.id" @click="jumpDetails(item) ">
<div class="standTitle"> <div class="standTitle">
<div class="title">{{item.title}}</div> <div class="title">
<span v-html="item.title"></span>
</div>
</div> </div>
<div class="standContent"> <div class="standContent">
<div class="standState">标准类别: <div class="standState">标准类别:
@@ -38,6 +40,12 @@
<van-empty description="暂无数据" /> <van-empty description="暂无数据" />
</div> </div>
</div> </div>
<div v-if="moreFlag" class="bottom-box">
<div v-if="listFlag && !loading" class="list-box">没有更多数据了...</div>
<div v-else-if="!listFlag && moreFlag" @click="moreList" >点击加载更多</div>
<!-- <van-button v-else-if="!listFlag && moreFlag" @click="moreList" >加载新数据</van-button>-->
<van-loading v-else size="24px" color="#3170A8">加载中...</van-loading>
</div>
</div> </div>
</template> </template>
@@ -48,28 +56,48 @@ export default {
return{ return{
scrolled: '', scrolled: '',
moreFlag: false, moreFlag: false,
loadingFlag: false,
searchKey: '', searchKey: '',
standList: [], standList: [],
loading: true, loading: true,
listFlag: false,
page: 1, page: 1,
addFlag: 0,
} }
}, },
watch:{
scrolled:{
handler(val){
if(val === 0){
console.log('滚动条消失');
}
}
},
},
methods: { methods: {
scrool(){ scrool(){
let scrolled = this.$refs.cardBox.scrollTop this.scrolled = this.$refs.cardBox.scrollTop
// console.log(this.scrolled);
//获得可视区的高度 //获得可视区的高度
const windowHeight = this.$refs.cardBox.clientHeight const windowHeight = this.$refs.cardBox.clientHeight
//获取滚动条的总高度 //获取滚动条的总高度
const scrollHeight = this.$refs.cardBox.scrollHeight const scrollHeight = this.$refs.cardBox.scrollHeight
let windowScrolled = scrolled + windowHeight let windowScrolled = this.scrolled + windowHeight
this.scrolled = scrolled if(scrollHeight - windowScrolled < 100 && this.scrolled !== 0){
if(scrollHeight - windowScrolled < 600 ){ //把距离顶部的距离加上可视区域的高度
//把距离顶部的距离加上可视区域的高度 等于或者大于滚动条的总高度就是到达底部
this.moreFlag = true this.moreFlag = true
this.page++ }else{
this.moreFlag = false
} }
}, },
onSearch(){ moreList(){
this.moreFlag = false
this.loadingFlag = true
this.page++
this.standSearch()
},
standSearch(){
this.listFlag = false
this.moreFlag = false this.moreFlag = false
this.$http.post('search/searchCenter/searchSarBykey',{ this.$http.post('search/searchCenter/searchSarBykey',{
selectIndex: 'fulltextserch', selectIndex: 'fulltextserch',
@@ -80,12 +108,36 @@ export default {
},{ },{
_this: this, _this: this,
}, res => { }, res => {
if(this.standList.length){ if(res.data.list.length){
this.standList = this.standList.concat(res.data.list) if(this.standList.length){
this.standList = this.standList.concat(res.data.list)
}else{
this.standList = res.data.list
}
this.loading = false
}else{ }else{
this.standList = res.data.list this.listFlag = true
} }
console.log(this.standList); }, e => {
console.log(e)
})
},
//点击搜索触发事件
onSearch(){
this.moreFlag = false
this.loading = true
this.standList = []
this.page = 1
this.$http.post('search/searchCenter/searchSarBykey',{
selectIndex: 'fulltextserch',
selectValue: this.searchKey,
selectType: 'titleSearch',
page: this.page,
pageSize: 20
},{
_this: this,
}, res => {
this.standList = res.data.list
this.loading = false this.loading = false
}, e => { }, e => {
console.log(e) console.log(e)
@@ -107,7 +159,7 @@ export default {
}, },
mounted(){ mounted(){
this.searchKey = this.$route.query.searchKey this.searchKey = this.$route.query.searchKey
this.onSearch() this.standSearch()
this.$refs.cardBox.addEventListener('scroll', this.scrool); this.$refs.cardBox.addEventListener('scroll', this.scrool);
}, },
}; };
@@ -205,5 +257,28 @@ export default {
top: 40%; top: 40%;
left: 37%; left: 37%;
} }
.bottom-box{
height: 40px;
width: 91%;
position: absolute;
bottom: 0;
text-align: center;
color: #3170A8;
.list-box{
color: #3170A8;
text-align: center;
}
.van-loading {
position: absolute;
left: 37%;
}
}
.card-content:last-child{
margin-bottom: 30px;
}
.van-button--normal{
float: left;
margin-left: 35%;
}
} }
</style> </style>
+359 -37
View File
@@ -17,14 +17,15 @@
</template> </template>
</van-search> </van-search>
</div> </div>
<div class="card-box"> <div class="card-box" ref="cardBox" @scroll="scrool">
<div v-if="loading"> <div v-if="loading">
<van-loading size="24px" color="#3170A8">加载中...</van-loading> <van-loading size="24px" color="#3170A8">加载中...</van-loading>
</div> </div>
<div v-else-if="!loading && standList.length" class="card-content" v-for="item in standList" :key="item.id"> <div v-else-if="!loading && standList.length" class="card-content" v-for="item in standList" :key="item.id">
<div class="standTitle"> <div class="standTitle">
<div v-if="titleType === 'POLICY'" class="title">{{item.lawsNumber}}</div> <div v-if="titleType === 'POLICY'" class="title">{{item.lawsNumber}}</div>
<div v-else class="title">{{item.standSortShow + '&nbsp&nbsp' + item.standNumber + '-' + item.standYear }}</div> <div v-else-if="titleType !== 'POLICY' && item.standYear" class="title">{{item.standSort + '&nbsp&nbsp' + item.standNumber + '-' + item.standYear }}</div>
<div v-else class="title">{{item.standSort + '&nbsp&nbsp' + item.standNumber }}</div>
</div> </div>
<div class="standContent"> <div class="standContent">
<div class="standState">{{item.standName}}</div> <div class="standState">{{item.standName}}</div>
@@ -63,14 +64,25 @@
<span v-else style=" padding-left: 5px;"> <span v-else style=" padding-left: 5px;">
{{ textStatusMap[item.textStatus] }} {{ textStatusMap[item.textStatus] }}
</span> </span>
<!-- <span v-if="item.textStatusName === '废止' || item.textStatusName === '被代替'"-->
<!-- style="color: #F56C6C; padding-left: 5px;">-->
<!-- {{item.textStatusName}}-->
<!-- </span>-->
<!-- <span v-else-if="item.textStatusName === '参考' || item.textStatusName === '现行有效'"-->
<!-- style="color: #98E165; padding-left: 5px;">-->
<!-- {{item.textStatusName }}-->
<!-- </span>-->
<!-- <span v-else style=" padding-left: 5px;">-->
<!-- {{ item.textStatusName }}-->
<!-- </span>-->
</div> </div>
</div> </div>
<div class="content-time"> <div class="content-time">
<div style="margin-top: 10px"> <div style="margin-top: 10px">
<span style="padding: 20px;">发布日期 <span style="padding-left: 10px;min-width: 200px;">发布日期:
{{ item.issueTime ? $moment(item.issueTime).format("YYYY-MM-DD") : "" }}</span> {{ item.issueTime ? (item.issueTime !== '' ? $moment(item.issueTime).format("YYYY-MM-DD") : " ") : " " }}</span>
<span style="padding: 20px;" v-if="titleType === 'POLICY'">实施日期 {{item.XCXSSRQLAWS}}</span> <span style="padding-left: 15px;" v-if="titleType === 'POLICY'">实施日期: {{item.XCXSSRQLAWS}}</span>
<span style="padding: 20px;" v-else>实施日期 {{item.putTime}}</span> <span style="padding-left: 15px;" v-else>实施日期: {{item.SSRQ}}</span>
</div> </div>
</div> </div>
@@ -79,6 +91,11 @@
<van-empty description="暂无数据" /> <van-empty description="暂无数据" />
</div> </div>
</div> </div>
<div v-if="moreFlag" class="bottom-box">
<div v-if="listFlag && !loading" class="list-box">没有更多数据了...</div>
<div v-else-if="!listFlag && moreFlag" @click="moreList" >点击加载更多</div>
<van-loading v-else size="24px" color="#3170A8">加载中...</van-loading>
</div>
</div> </div>
</template> </template>
@@ -87,10 +104,15 @@ export default {
name: "domesticStand", name: "domesticStand",
data(){ data(){
return{ return{
scrolled: '',
moreFlag: false,
loadingFlag: false,
listFlag: false,
searchKey: '', searchKey: '',
titleType: '', titleType: '',
titleName: '', titleName: '',
loading: true, loading: true,
page: 1,
standList: [], standList: [],
standStateOptions: [], //标准文本状态 standStateOptions: [], //标准文本状态
lawsTextStateOptions: [], //政策文本状态 lawsTextStateOptions: [], //政策文本状态
@@ -101,58 +123,145 @@ export default {
} }
}, },
methods:{ methods:{
scrool(){
this.scrolled = this.$refs.cardBox.scrollTop
//获得可视区的高度
const windowHeight = this.$refs.cardBox.clientHeight
//获取滚动条的总高度
const scrollHeight = this.$refs.cardBox.scrollHeight
let windowScrolled = this.scrolled + windowHeight
if(scrollHeight - windowScrolled < 100 && this.scrolled !== 0){
//把距离顶部的距离加上可视区域的高度
this.moreFlag = true
}else{
this.moreFlag = false
}
},
moreList(){
this.moreFlag = false
this.loadingFlag = true
this.page++
this.standSearch()
},
onSearch(){ onSearch(){
this.moreFlag = false
this.loading = true
this.standList = []
this.page = 1
if(this.titleType === 'INLAND'){ if(this.titleType === 'INLAND'){
this.$http.get('sarStandardsInfo/sar-standards-info/getSarStandardsInfoPage',{ // this.$http.get('sarStandardsInfo/sar-standards-info/getSarStandardsInfoPage',{
page: 1, // page: this.page,
pageSize: 20, // standNumber: this.searchKey,
standType: 'INLAND' // pageSize: 20,
// standType: 'INLAND'
// },{
// _this: this
// },res=>{
// if (res.ok){
// this.standList = res.data.list
// this.loading = false
// }else {
// this.$message.error(res.message)
// }
// },e=>{
// })
this.$http.post('search/searchCenter/searchSarBykey',{
selectIndex: 'stand',
selectValue: this.searchKey,
selectType: 'titleSearch',
standType: 'INLAND',
page: this.page,
pageSize: 20
},{ },{
_this: this _this: this,
},res=>{ }, res => {
if (res.ok){ if (res.ok){
this.standList = res.data.list this.standList = res.data.list
this.loading = false this.loading = false
}else { }else {
this.$message.error(res.message) this.$message.error(res.message)
} }
},e=>{ }, e => {
console.log(e)
}) })
}else if(this.titleType === 'FOREIGN'){ }else if(this.titleType === 'FOREIGN'){
this.$http.get('sarStandardsInfo/sar-standards-info/getSarStandardsInfoPage',{ // this.$http.get('sarStandardsInfo/sar-standards-info/getSarStandardsInfoPage',{
page: 1, // page: 1,
pageSize: 20, // pageSize: 20,
standType: 'FOREIGN' // standNumber: this.searchKey,
// standType: 'FOREIGN'
// },{
// _this: this
// },res=>{
// if (res.ok){
// this.standList = res.data.list
// this.loading = false
// }else {
// this.$message.error(res.message)
// }
// },e=>{
// })
this.$http.post('search/searchCenter/searchSarBykey',{
selectIndex: 'stand',
selectValue: this.searchKey,
selectType: 'titleSearch',
standType: 'FOREIGN',
page: this.page,
pageSize: 20
},{ },{
_this: this _this: this,
},res=>{ }, res => {
if (res.ok){ if (res.ok){
this.standList = res.data.list this.standList = res.data.list
this.loading = false this.loading = false
}else { }else {
this.$message.error(res.message) this.$message.error(res.message)
} }
},e=>{ }, e => {
console.log(e)
}) })
}else if(this.titleType === 'POLICY'){ }else if(this.titleType === 'POLICY'){
this.$http.get('lawss/sarLawsInfo/page',{ // this.$http.get('lawss/sarLawsInfo/page',{
page: 1, // page: 1,
pageSize: 20, // pageSize: 20,
},{ // lawsNumber: this.searchKey,
_this: this // },{
}, res => { // _this: this
if (res.ok){ // }, res => {
this.standList = res.data.list // if (res.ok){
this.loading = false // this.standList = res.data.list
}else { // this.loading = false
this.$message.error(res.message) // }else {
} // this.$message.error(res.message)
}, e =>{ // }
console.log(e); // }, e =>{
}) // console.log(e);
// })
this.$http.post('search/searchCenter/searchSarBykey',{
selectIndex: 'laws',
selectValue: this.searchKey,
selectType: 'titleSearch',
type: 'laws',
page: this.page,
pageSize: 20
},{
_this: this,
}, res => {
if (res.ok){
this.standList = res.data.list
this.loading = false
}else {
this.$message.error(res.message)
}
}, e => {
console.log(e)
})
}else{ }else{
this.$http.get("/lawss/NewsFeed/getNewsFeed", { this.$http.get("/lawss/NewsFeed/getNewsFeed", {
messageType: 'ZYBZFG', messageType: 'ZYBZFG',
standard: this.searchKey,
page: 1, page: 1,
paeSize: 10 paeSize: 10
}, { }, {
@@ -169,6 +278,198 @@ export default {
}); });
} }
}, },
standSearch(){
this.listFlag = false
this.moreFlag = false
if(this.titleType === 'INLAND'){
// this.$http.get('sarStandardsInfo/sar-standards-info/getSarStandardsInfoPage',{
// page: this.page,
// pageSize: 20,
// standNumber: this.searchKey,
// standType: 'INLAND'
// },{
// _this: this
// },res=>{
// if (res.ok){
// if(res.data.list.length){
// if(this.standList.length){
// this.standList = this.standList.concat(res.data.list)
// }else{
// this.standList = res.data.list
// }
// this.loading = false
// }else{
// this.listFlag = true
// }
// }else {
// this.$message.error(res.message)
// }
// },e=>{
// })
this.$http.post('search/searchCenter/searchSarBykey',{
selectIndex: 'stand',
selectValue: this.searchKey,
selectType: 'titleSearch',
standType: 'INLAND',
page: this.page,
pageSize: 20
},{
_this: this,
}, res => {
if(res.ok){
if(res.data.list.length){
if(this.standList.length){
this.standList = this.standList.concat(res.data.list)
}else{
this.standList = res.data.list
}
this.loading = false
}else{
this.loading = false
this.listFlag = true
}
}else{
this.$message.error(res.message)
}
}, e => {
console.log(e)
})
}else if(this.titleType === 'FOREIGN'){
// this.$http.get('sarStandardsInfo/sar-standards-info/getSarStandardsInfoPage',{
// page: 1,
// pageSize: 20,
// standNumber: this.searchKey,
// standType: 'FOREIGN'
// },{
// _this: this
// },res=>{
// if (res.ok){
// if(res.data.list.length){
// if(this.standList.length){
// this.standList = this.standList.concat(res.data.list)
// }else{
// this.standList = res.data.list
// }
// this.loading = false
// }else{
// this.listFlag = true
// }
// }else {
// this.$message.error(res.message)
// }
// },e=>{
// })
this.$http.post('search/searchCenter/searchSarBykey',{
selectIndex: 'stand',
selectValue: this.searchKey,
selectType: 'titleSearch',
standType: 'FOREIGN',
page: this.page,
pageSize: 20
},{
_this: this,
}, res => {
if(res.ok){
if(res.data.list.length){
if(this.standList.length){
this.standList = this.standList.concat(res.data.list)
}else{
this.standList = res.data.list
}
this.loading = false
}else{
this.loading = false
this.listFlag = true
}
}else{
this.$message.error(res.message)
}
}, e => {
console.log(e)
})
}else if(this.titleType === 'POLICY'){
// this.$http.get('lawss/sarLawsInfo/page',{
// lawsNumber: this.searchKey,
// page: 1,
// pageSize: 20,
// },{
// _this: this
// }, res => {
// if (res.ok){
// if(res.data.list.length){
// if(this.standList.length){
// this.standList = this.standList.concat(res.data.list)
// }else{
// this.standList = res.data.list
// }
// this.loading = false
// }else{
// this.listFlag = true
// }
// }else {
// this.$message.error(res.message)
// }
// }, e =>{
// console.log(e);
// })
this.$http.post('search/searchCenter/searchSarBykey',{
selectIndex: 'laws',
selectValue: this.searchKey,
selectType: 'titleSearch',
type: 'laws',
page: this.page,
pageSize: 20
},{
_this: this,
}, res => {
if(res.ok){
if(res.data.list.length){
if(this.standList.length){
this.standList = this.standList.concat(res.data.list)
}else{
this.standList = res.data.list
}
this.loading = false
}else{
this.loading = false
this.listFlag = true
}
}else{
this.$message.error(res.message)
}
}, e => {
console.log(e)
})
}else{
this.$http.get("/lawss/NewsFeed/getNewsFeed", {
messageType: 'ZYBZFG',
standard: this.searchKey,
page: 1,
paeSize: 10
}, {
_this: this
}, res => {
if (res.ok){
if(res.data.length){
if(this.standList.length){
this.standList = this.standList.concat(res.data)
}else{
this.standList = res.data
}
this.loading = false
}else{
this.loading = false
this.listFlag = true
}
}else {
this.$message.error(res.message)
}
}, e => {
console.log(e);
});
}
},
//返回上一个页面 //返回上一个页面
back(){ back(){
this.$router.push('/phoneHome') this.$router.push('/phoneHome')
@@ -193,7 +494,8 @@ export default {
mounted() { mounted() {
this.titleType = this.$route.query.standType this.titleType = this.$route.query.standType
this.titleName = this.titleType === 'INLAND' ? '国内标准法规库' : (this.titleType === 'FOREIGN' ? '海外标准法规库' : this.titleType === 'POLICY' ? '国内外政策库' : '标准化动态库' ) this.titleName = this.titleType === 'INLAND' ? '国内标准法规库' : (this.titleType === 'FOREIGN' ? '海外标准法规库' : this.titleType === 'POLICY' ? '国内外政策库' : '标准化动态库' )
this.onSearch() this.standSearch()
this.$refs.cardBox.addEventListener('scroll', this.scrool);
//从数据库中查询下拉框数据 //从数据库中查询下拉框数据
this.$http.get("sys/dictype/getDicTypeListCode", {}, { this.$http.get("sys/dictype/getDicTypeListCode", {}, {
_this: this _this: this
@@ -249,8 +551,9 @@ export default {
color: #FFFFFF; color: #FFFFFF;
} }
.card-box{ .card-box{
height: 100%; height: 85%;
position: relative; position: relative;
overflow-y: scroll;
top: 100px; top: 100px;
} }
.card-content{ .card-content{
@@ -298,6 +601,25 @@ export default {
top: 40%; top: 40%;
left: 37%; left: 37%;
} }
.bottom-box{
height: 40px;
width: 91%;
position: absolute;
bottom: 0;
text-align: center;
color: #3170A8;
.list-box{
color: #3170A8;
text-align: center;
}
.van-loading {
position: absolute;
left: 37%;
}
}
.card-content:last-child{
margin-bottom: 30px;
}
} }
</style> </style>
@@ -2298,6 +2298,7 @@
// this.sarStandardsInfoEO.country = item.country.split(","); // this.sarStandardsInfoEO.country = item.country.split(",");
// } // }
this.fileInfoHandle() this.fileInfoHandle()
this.isSubmit = true
this.saveLoading = true this.saveLoading = true
let _formData = new FormData() let _formData = new FormData()
_formData.append('id', this.bpnId || '') _formData.append('id', this.bpnId || '')
@@ -2313,10 +2314,12 @@
commentText: this.formTongGuo.commentText commentText: this.formTongGuo.commentText
})) }))
saveTaskForPub(_formData).then(res => { saveTaskForPub(_formData).then(res => {
this.isSubmit = false
this.saveLoading = false this.saveLoading = false
this.$message.success('保存成功') this.$message.success('保存成功')
this.bpnId = res.result this.bpnId = res.result
}).catch(e => { }).catch(e => {
this.isSubmit = false
this.saveLoading = false this.saveLoading = false
}) })
}, },
@@ -2339,6 +2339,7 @@
// } // }
this.fileInfoHandle() this.fileInfoHandle()
this.saveLoading = true this.saveLoading = true
this.isSubmit = true
let _formData = new FormData() let _formData = new FormData()
_formData.append('id', this.bpnId || '') _formData.append('id', this.bpnId || '')
_formData.append('createUser', this.$store.getters.userInfo.userId) _formData.append('createUser', this.$store.getters.userInfo.userId)
@@ -2355,10 +2356,12 @@
})) }))
saveTaskForPub(_formData).then(res => { saveTaskForPub(_formData).then(res => {
this.saveLoading = false this.saveLoading = false
this.isSubmit = false
this.$message.success('保存成功') this.$message.success('保存成功')
this.bpnId = res.result this.bpnId = res.result
}).catch(e => { }).catch(e => {
this.saveLoading = false this.saveLoading = false
this.isSubmit = false
}) })
}, },
fileInfoHandle(){ fileInfoHandle(){
@@ -2475,6 +2478,7 @@
this.$refs['formTongGuo'].validate((valid) => { this.$refs['formTongGuo'].validate((valid) => {
if (valid) { if (valid) {
this.isSubmit = true this.isSubmit = true
this.saveLoading = true
this.form.commentText = this.formTongGuo.commentText this.form.commentText = this.formTongGuo.commentText
this.form.approvalOpinion = this.formTongGuo.approvalOpinion this.form.approvalOpinion = this.formTongGuo.approvalOpinion
this.form.topId = this.pId this.form.topId = this.pId
@@ -2490,7 +2494,7 @@
// this.$message.success(res.message) // this.$message.success(res.message)
// 流程提交之后,应该流转至待办任务页面 // 流程提交之后,应该流转至待办任务页面
this.isSubmit = false this.isSubmit = false
this.submitLoading = false this.saveLoading = false
this.$router.push({path:'/processCenter?tabsName=ProcessCenter'}) this.$router.push({path:'/processCenter?tabsName=ProcessCenter'})
// this.processCreateBuss(json) // this.processCreateBuss(json)
// if(this.formTongGuo.approvalOpinion === '1'){ // if(this.formTongGuo.approvalOpinion === '1'){
@@ -2502,6 +2506,8 @@
// this.processCreateLaws(json) // this.processCreateLaws(json)
// } // }
}else { }else {
this.isSubmit = false
this.saveLoading = false
this.$message.success(res.message) this.$message.success(res.message)
} }
}) })
@@ -2340,6 +2340,7 @@
// this.sarStandardsInfoEO.country = item.country.split(","); // this.sarStandardsInfoEO.country = item.country.split(",");
// } // }
this.fileInfoHandle() this.fileInfoHandle()
this.isSubmit = true
this.saveLoading = true this.saveLoading = true
let _formData = new FormData() let _formData = new FormData()
_formData.append('id', this.bpnId || '') _formData.append('id', this.bpnId || '')
@@ -2356,10 +2357,12 @@
commentText: this.formTongGuo.commentText commentText: this.formTongGuo.commentText
})) }))
saveTaskForPub(_formData).then(res => { saveTaskForPub(_formData).then(res => {
this.isSubmit = false
this.saveLoading = false this.saveLoading = false
this.$message.success('保存成功') this.$message.success('保存成功')
this.bpnId = res.result this.bpnId = res.result
}).catch(e => { }).catch(e => {
this.isSubmit = false
this.saveLoading = false this.saveLoading = false
}) })
}, },
@@ -2479,6 +2482,7 @@
this.$refs['formTongGuo'].validate((valid) => { this.$refs['formTongGuo'].validate((valid) => {
if (valid) { if (valid) {
this.isSubmit = true this.isSubmit = true
this.saveLoading = true
this.form.commentText = this.formTongGuo.commentText this.form.commentText = this.formTongGuo.commentText
this.form.approvalOpinion = this.formTongGuo.approvalOpinion this.form.approvalOpinion = this.formTongGuo.approvalOpinion
this.form.topId = this.pId this.form.topId = this.pId
@@ -2494,6 +2498,7 @@
// this.$message.success(res.message) // this.$message.success(res.message)
// 流程提交之后,应该流转至待办任务页面 // 流程提交之后,应该流转至待办任务页面
this.isSubmit = false this.isSubmit = false
this.saveLoading = false
this.processCreateBuss(json) this.processCreateBuss(json)
// if(this.formTongGuo.approvalOpinion === '1'){ // if(this.formTongGuo.approvalOpinion === '1'){
// this.$message.warning("驳回成功") // this.$message.warning("驳回成功")
@@ -2504,6 +2509,8 @@
// this.processCreateLaws(json) // this.processCreateLaws(json)
// } // }
}else { }else {
this.isSubmit = false
this.saveLoading = false
this.$message.success(res.message) this.$message.success(res.message)
} }
}) })
@@ -326,7 +326,7 @@
<a v-if="scope.row.standStatusShow === '作废'" style="color: #F56C6C" @click="handlePreview(scope.row)" class="table-jump">{{ <a v-if="scope.row.standStatusShow === '作废'" style="color: #F56C6C" @click="handlePreview(scope.row)" class="table-jump">{{
scope.row.standCode scope.row.standCode
}}</a> }}</a>
<a v-if="scope.row.standStatusShow === '参考'" style="color: #E6A23C" @click="handlePreview(scope.row)" class="table-jump">{{ <a v-if="scope.row.standStatusShow === '参考'" style="color: #98E165" @click="handlePreview(scope.row)" class="table-jump">{{
scope.row.standCode scope.row.standCode
}}</a> }}</a>
<a v-if="scope.row.standStatusShow !== '作废' && scope.row.standStatusShow !== '参考'" style="color: #333333" @click="handlePreview(scope.row)" class="table-jump">{{ <a v-if="scope.row.standStatusShow !== '作废' && scope.row.standStatusShow !== '参考'" style="color: #333333" @click="handlePreview(scope.row)" class="table-jump">{{
@@ -0,0 +1,190 @@
<!--我的回答-->
<template>
<div>
<el-divider style="margin: 10px 0;"></el-divider>
<div id="message-content">
<el-form ref="form" :model="form" :rules="rules">
<el-form-item prop="textarea">
<el-input
type="textarea"
:rows="2"
placeholder="请输入回答内容"
v-model="form.textarea">
</el-input>
</el-form-item>
<div>
<el-button
type="primary"
class="common-button-primary"
size="small"
style="float: right;"
@click="handleSubmit"
>提交</el-button>
<el-button
type="primary"
class="common-button-primary"
size="small"
style="float: right;margin-right: 10px;"
@click="openUploadFileDialog"
>上传文件</el-button>
<el-button
type="primary"
class="common-button-primary"
size="small"
style="float: right;"
@click="queArchive"
>问题归档</el-button>
<el-button
type="primary"
class="common-button-primary"
size="small"
style="float: right;margin-right: 10px;"
@click="invitation"
>邀请</el-button>
</div>
</el-form>
</div>
<el-dialog
width='400px'
:visible.sync="importModalshowflagtemp"
title="上传文件"
:footer-hide="true"
append-to-body
>
<el-upload
multiple
drag
:on-success="uploadSuccess"
:before-upload="beforeUpload"
:on-remove="removeOneFile"
:action="actionPath"
accept=".ZIP, .zip, .docx, .DOCX, .xls, .xlsx, .pdf, .PDF"
name="file"
:file-list="fileList"
ref="importFileAboutStand">
<i class="el-icon-upload"></i>
<div class="el-upload__text">点击或拖拽上传文件</div>
</el-upload>
</el-dialog>
<!-- 选择回答人-->
<Role-tree
is-title="选择回答人"
:is-visible.sync="roleFlag"
@checkedRole="checkedRole"
:nodeList="nodeList"
></Role-tree>
</div>
</template>
<script>
export default {
name: "answerItem",
data(){
return{
roleFlag: false,
nodeList: [],
// 上传地址
actionPath: 'api/att/attFile/uploadNew',
importModalshowflagtemp: false,
fileList: [],
form:{
textarea: '',
invitationId: '',
invitationName: '',
},
rules: {
textarea: [
{ required: true, message: '请输入回复内容', trigger: 'blur' },
{ min: 1, max: 500, message: '长度在 1 到 500 个字符', trigger: 'blur' }
]
},
}
},
methods:{
//提交
handleSubmit(){
this.form.fileList = this.fileList
console.log(this.form);
},
//上传文件
openUploadFileDialog(){
this.importModalshowflagtemp = true
},
//上传成功
uploadSuccess(res,file,fileList){
if(res.ok){
this.fileList.push(res.data)
this.$message.success('上传成功')
}else{
this.$message.warning(res.message)
fileList.pop()
}
this.importModalshowflagtemp = false
},
//文件上传前
beforeUpload(file){
console.log(file);
var filename = file.name;
var index1 = filename.lastIndexOf('.')
var index2 = filename.length
var fileSuffix = filename.substring(index1, index2)
//把后缀转大写
if(fileSuffix){
fileSuffix = fileSuffix.toUpperCase()
}
// 判断上传文件格式
if (fileSuffix === ".PDF" || fileSuffix === ".DOC" || fileSuffix === ".DOCX" || fileSuffix === ".PPT"
|| fileSuffix === ".PPTX" || fileSuffix === ".XLS" || fileSuffix === ".XLSX"
|| fileSuffix === ".PNG" || fileSuffix === ".JPG" || fileSuffix === ".JPEG") {
return true;
} else {
this.$message.error("文件" + file.name + "格式不正确,请上传pdf、doc、docx、ppt、pptx、xls、xlsx、png、jpg、jpeg等文件");
return false;
}
// 判断文件上传大小
if (file.size / 1024 / 1024 > 300) {
this.$message.warning("文件" + file.name + "大小不能超过300M");
return false;
}
return true;
},
//删除文件
removeOneFile(){
this.fileList.forEach((item,index) => {
if(item.name === file.name || item.id === file.id){
this.fileList.splice(index, 1)
}
})
},
checkedRole(data){
let asdId = sessionStorage.getItem('queId')
this.$http.postData('lawss/AskUser/insertAskUser',{
asdId: asdId,
usid: data[0].id,
},{
_this: this
}, res => {
if(res.ok){
this.$message.success('邀请成功')
}
}, e => {
})
},
//问题归档
queArchive(){
},
//邀请
invitation(){
this.roleFlag = true
},
},
};
</script>
<style lang="less" scoped>
#message-content{
}
</style>
@@ -0,0 +1,76 @@
<!--回答框-->
<template>
<div id="answer-item">
<div>
<div class="row">
<div class="item">
<div>回答
<span>{{answer. reply}}</span>
</div>
</div>
</div>
<div class="row">
<div class="item">
<div>附件
<span style="color: #409EFF">{{answer.annex}}</span>
</div>
</div>
</div>
<div class="row" style="float: right; margin-right: 10px">
<div class="item">
<div>{{answer.answerer}}
<span>{{answer.replyTime}}</span>
</div>
</div>
</div>
<!-- <div>-->
<!-- <el-checkbox v-model="checked">归档</el-checkbox>-->
<!-- </div>-->
</div>
<!-- <div class="footer-box">-->
<!-- </div>-->
</div>
</template>
<script>
export default {
name: "questionItemInfo",
props:['answer'],
data(){
return{
checked: true,
}
},
watch:{
answer: {
immediate: true,
deep: true,
handler(val) {
this.answer = val
}
}
}
};
</script>
<style lang="less" scoped>
#answer-item{
width: 100%;
min-width: 130px;
padding: 15px 5px;
.row {
line-height: 1.8;
}
.item {
display: inline-block;
}
.footer-box{
height: 200px;
width: 100%;
position: absolute;
bottom: 0;
border-top: 1px solid #cccccc;
}
}
</style>
@@ -0,0 +1,57 @@
<!--问题的描述-->
<template>
<div id="questions-item">
<div>
<div class="row">
<div class="item">
<div>提问
<span>{{question.problemDescription}}</span>
</div>
</div>
</div>
<div class="row">
<div class="item">
<div>{{userName}}
<span>{{question.questionTime}}</span>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "questions-item",
props: ['question'],
computed: {
},
data(){
return{
userName: this.$store.getters.userInfo.userName,
}
},
watch:{
question: {
immediate: true,
deep: true,
handler(val){
}
}
}
};
</script>
<style lang="less" scoped>
#questions-item{
width: 100%;
min-width: 130px;
padding:10px 0;
.row {
line-height: 1.8;
}
.item {
display: inline-block;
}
}
</style>
@@ -0,0 +1,53 @@
<!--标准的描述-->
<template>
<div id="stand-item">
<div>
<div class="row">
<div class="item">
<span>{{stand.standardEncdoing}}</span>
</div>
</div>
<div class="row">
<div class="item">
<span>{{stand.standardName}}</span>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "stand-item",
props: ['stand'],
computed: {
},
data(){
return{
}
},
watch:{
stand: {
immediate: true,
deep: true,
handler(val) {
this.stand = val
}
}
}
};
</script>
<style lang="less" scoped>
#stand-item{
width: 100%;
min-width: 130px;
padding:10px 0;
.row {
line-height: 1.5;
}
.item {
display: inline-block;
}
}
</style>
File diff suppressed because it is too large Load Diff
@@ -2740,18 +2740,28 @@
<style lang="less" scoped> <style lang="less" scoped>
@import '~@/assets/styles/mixins'; @import '~@/assets/styles/mixins';
@import '~@/assets/styles/style'; @import '~@/assets/styles/style';
/deep/ .yellowEsClass{
background-color: #E6A23C !important;
}
/deep/ .redEsClass{
background-color: #F56C6C !important;
}
/deep/ .yellowClass{ /deep/ .yellowClass{
color: #E6A23C; color: #E6A23C !important;
} }
/deep/ .redClass{ /deep/ .redClass{
color: #F56C6C; color: #F56C6C !important;
} }
/deep/ p{ /deep/ p{
display: inline; display: inline;
} }
/deep/.highlight-Es-class {
background-color: #3391ce !important;
}
/deep/.highlight-class { /deep/.highlight-class {
color: red !important; color: #3391ce !important;
} }
/deep/.pagination{ /deep/.pagination{
position: static !important; position: static !important;
+11
View File
@@ -3304,6 +3304,17 @@ const routes = [
menuId: 'JURHS3LVP35US88ABULS' menuId: 'JURHS3LVP35US88ABULS'
} }
}, },
{
path: '/standQA',
name: 'StandQA',
component: () =>
import('@/pages/regulatoryRepository/standQA'),
meta: {
requireAuth: true,
title: '问答库', // 把 标准涉及项目 这几个字 改成 标准合规评估结果
menuId: ''
}
},
// 本地产品/项目库详情页 // 本地产品/项目库详情页
{ {
path: '/localProductDetail', path: '/localProductDetail',