[update] 修改自测bug,完善问答库页面
This commit is contained in:
@@ -5,13 +5,19 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
// 问答库
|
// 问答库
|
||||||
questionAnswer: {
|
questionAnswer: {
|
||||||
classify: '分类',
|
classify: 'Classify',
|
||||||
title: '标题',
|
title: 'Title',
|
||||||
quiz: '提问',
|
quiz: 'Quiz',
|
||||||
questionDesc: '问题描述',
|
questionDesc: 'Problem Description',
|
||||||
attach: '附件',
|
attach: 'Attachment',
|
||||||
quizTime: '提问时间',
|
quizTime: 'Question Time',
|
||||||
answer: '回答',
|
answer: 'answer',
|
||||||
poster: '发帖人'
|
poster: 'Poster',
|
||||||
|
answerNum: 'replies',
|
||||||
|
top: '【top】',
|
||||||
|
cancelTop: 'untop',
|
||||||
|
setTop: 'Set To Top',
|
||||||
|
answerQuestion: 'reply to a question',
|
||||||
|
word: 'word'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,12 @@ module.exports = {
|
|||||||
attach: '附件',
|
attach: '附件',
|
||||||
quizTime: '提问时间',
|
quizTime: '提问时间',
|
||||||
answer: '回答',
|
answer: '回答',
|
||||||
poster: '发帖人'
|
poster: '发帖人',
|
||||||
|
answerNum: '个回复',
|
||||||
|
top: '【置顶】',
|
||||||
|
cancelTop: '取消置顶',
|
||||||
|
setTop: '设置为置顶',
|
||||||
|
answerQuestion: '回复问题',
|
||||||
|
word: '字'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -197,7 +197,7 @@
|
|||||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
|
<a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
|
||||||
</a>
|
</a>
|
||||||
<a-button icon="search" type="primary" @click="searchQuery" style="margin-left: 8px" v-has="searchHas">{{ $t('query') }}</a-button>
|
<a-button icon="search" type="primary" @click="searchQuery" style="margin-left: 8px" v-has="searchHas">{{ $t('query') }}</a-button>
|
||||||
<a-button icon="reload" style="margin-left: 8px" @click="searchReset">{{ $t('reset') }}</a-button>
|
<a-button icon="reload" type="primary" ghost style="margin-left: 8px" @click="searchReset">{{ $t('reset') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
</a-row>
|
</a-row>
|
||||||
</a-form>
|
</a-form>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
{{this.$t('standardSelect.standardSelection')}}
|
{{this.$t('standardSelect.standardSelection')}}
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
<standard-model-selection-modal ref="standardSelectionModal" v-bind="$attrs" :value="value" @input="modalInput" @nameChange="modalNameChange"></standard-model-selection-modal>
|
<standard-model-selection-modal ref="standardSelectionModal" v-bind="$attrs" :value="value" @change="modalInput" @nameChange="modalNameChange"></standard-model-selection-modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -39,10 +39,10 @@ export default {
|
|||||||
},
|
},
|
||||||
// 输入框输入监听
|
// 输入框输入监听
|
||||||
indexClick (event) {
|
indexClick (event) {
|
||||||
this.$emit('input', event.target.value)
|
this.$emit('change', event.target.value)
|
||||||
},
|
},
|
||||||
modalInput (value) {
|
modalInput (value) {
|
||||||
this.$emit('input', value)
|
this.$emit('change', value)
|
||||||
},
|
},
|
||||||
modalNameChange (value) {
|
modalNameChange (value) {
|
||||||
this.$emit('nameChange', value)
|
this.$emit('nameChange', value)
|
||||||
@@ -50,7 +50,7 @@ export default {
|
|||||||
},
|
},
|
||||||
model: {
|
model: {
|
||||||
prop: 'value',
|
prop: 'value',
|
||||||
event: 'input'
|
event: 'change'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
<a-col :sm="8">
|
<a-col :sm="8">
|
||||||
<a-form-item :label="$t('standardSelect.source')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
<a-form-item :label="$t('standardSelect.source')" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||||
<j-dict-select-tag style="width: 100%" v-model="queryParam.source"
|
<j-dict-select-tag style="width: 100%" v-model="queryParam.source"
|
||||||
|
:disabled="disabledSourceSearch"
|
||||||
:placeholder="$t('pleaseSelect')+$t('standardSelect.source')"
|
:placeholder="$t('pleaseSelect')+$t('standardSelect.source')"
|
||||||
:triggerChange="false" dictCode="standard_source"/>
|
:triggerChange="false" dictCode="standard_source"/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@@ -66,6 +67,10 @@ export default {
|
|||||||
value: {
|
value: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: ''
|
||||||
|
},
|
||||||
|
disabledSourceSearch: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
@@ -132,10 +137,11 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
open () {
|
open () {
|
||||||
this.source ? this.queryParam.source = this.source : this.queryParam = {}
|
|
||||||
this.visible = true
|
this.visible = true
|
||||||
this.queryParam = {}
|
this.$nextTick(() => {
|
||||||
this.replacePage()
|
this.source ? this.queryParam.source = this.source : this.queryParam = {}
|
||||||
|
this.replacePage()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
// 获取表格数据
|
// 获取表格数据
|
||||||
replacePage () {
|
replacePage () {
|
||||||
@@ -181,7 +187,7 @@ export default {
|
|||||||
serialNumber.push(res.standardNumber)
|
serialNumber.push(res.standardNumber)
|
||||||
serialNameArr.push(res.standardName)
|
serialNameArr.push(res.standardName)
|
||||||
})
|
})
|
||||||
this.$emit('input', serialNumber.join(','))
|
this.$emit('change', serialNumber.join(','))
|
||||||
this.$emit('nameChange', serialNameArr.join(','))
|
this.$emit('nameChange', serialNameArr.join(','))
|
||||||
this.visible = false
|
this.visible = false
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -324,6 +324,49 @@ export const JeroListMixin = {
|
|||||||
modalLoading.destroy()
|
modalLoading.destroy()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
// 带文件导出
|
||||||
|
handleFileExport (fileName) {
|
||||||
|
if (!fileName || typeof fileName !== 'string') {
|
||||||
|
fileName = '导出文件'
|
||||||
|
}
|
||||||
|
const param = this.getQueryParams()
|
||||||
|
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||||
|
param.selections = this.selectedRowKeys.join(',')
|
||||||
|
}
|
||||||
|
console.log('导出参数', param)
|
||||||
|
// 加一个大的提示
|
||||||
|
const modalLoading = this.$info({
|
||||||
|
title: '提示',
|
||||||
|
content: <span>正在导出,请稍候 <a-spin size="small" /></span>,
|
||||||
|
keyboard: false
|
||||||
|
})
|
||||||
|
// 把知道了这个按钮去掉
|
||||||
|
this.$nextTick(() => {
|
||||||
|
document.getElementsByClassName('ant-modal-confirm-btns')[0].style = 'display:none'
|
||||||
|
})
|
||||||
|
downFile(this.url.exportZipUrl, param).then((data) => {
|
||||||
|
if (!data) {
|
||||||
|
this.$message.warning('文件下载失败')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (typeof window.navigator.msSaveBlob !== 'undefined') {
|
||||||
|
window.navigator.msSaveBlob(new Blob([data]), fileName + '.zip')
|
||||||
|
} else {
|
||||||
|
const url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
|
||||||
|
const link = document.createElement('a')
|
||||||
|
link.style.display = 'none'
|
||||||
|
link.href = url
|
||||||
|
link.setAttribute('download', fileName + '.zip')
|
||||||
|
document.body.appendChild(link)
|
||||||
|
link.click()
|
||||||
|
document.body.removeChild(link) // 下载完成移除元素
|
||||||
|
window.URL.revokeObjectURL(url) // 释放掉blob对象
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
// 销毁这个提示
|
||||||
|
modalLoading.destroy()
|
||||||
|
})
|
||||||
|
},
|
||||||
/* 导入 */
|
/* 导入 */
|
||||||
handleImportExcel (info) {
|
handleImportExcel (info) {
|
||||||
// 加一个大的提示
|
// 加一个大的提示
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
||||||
</a>
|
</a>
|
||||||
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'businessSupport:questionAnswer:search'">{{ $t('query') }}</a-button>
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'businessSupport:questionAnswer:search'">{{ $t('query') }}</a-button>
|
||||||
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -155,7 +155,7 @@ export default {
|
|||||||
title: this.$t('title'),
|
title: this.$t('title'),
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 180,
|
width: 180,
|
||||||
dataIndex: 'title',
|
dataIndex: 'titleSlot',
|
||||||
scopedSlots: { customRender: 'text' }
|
scopedSlots: { customRender: 'text' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -195,9 +195,16 @@ export default {
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
url: {
|
url: {
|
||||||
list: ''
|
list: '',
|
||||||
|
delete: ''
|
||||||
},
|
},
|
||||||
userInfo: {}
|
userInfo: {},
|
||||||
|
dataSource: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
// createBy: 'e9ca23d68d884d4ebb19d07889727dae'
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
@@ -208,9 +215,6 @@ export default {
|
|||||||
handleQuiz () {
|
handleQuiz () {
|
||||||
this.$refs.quizModal.title = this.$t('businessSupport.questionAnswer.quiz')
|
this.$refs.quizModal.title = this.$t('businessSupport.questionAnswer.quiz')
|
||||||
this.$refs.quizModal.open()
|
this.$refs.quizModal.open()
|
||||||
// this.$router.push({
|
|
||||||
// path: '/businessSupport/questionDetail'
|
|
||||||
// })
|
|
||||||
},
|
},
|
||||||
// 点击相关材料
|
// 点击相关材料
|
||||||
handleAttachClick (record) {
|
handleAttachClick (record) {
|
||||||
@@ -236,6 +240,26 @@ export default {
|
|||||||
// 其余可预览文件仍使用KKFile进行预览
|
// 其余可预览文件仍使用KKFile进行预览
|
||||||
const url = `${window._CONFIG.onlinePreviewDomainURL}?url=${encodeURIComponent(Base64.encode(fileFullUrl))}`
|
const url = `${window._CONFIG.onlinePreviewDomainURL}?url=${encodeURIComponent(Base64.encode(fileFullUrl))}`
|
||||||
window.open(url)
|
window.open(url)
|
||||||
|
},
|
||||||
|
// 查看
|
||||||
|
handleDetail (record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/businessSupport/questionDetail',
|
||||||
|
query: {
|
||||||
|
id: record.id,
|
||||||
|
canAnswer: 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 回答
|
||||||
|
handleAnswer (record) {
|
||||||
|
this.$router.push({
|
||||||
|
path: '/businessSupport/questionDetail',
|
||||||
|
query: {
|
||||||
|
id: record.id,
|
||||||
|
canAnswer: 1
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,58 +10,76 @@
|
|||||||
|
|
||||||
<a-spin :spinning="confirmLoading">
|
<a-spin :spinning="confirmLoading">
|
||||||
<a-form :form="form">
|
<a-form :form="form">
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('businessSupport.questionAnswer.classify')">
|
<a-row :gutter="24">
|
||||||
<a-select :placeholder="$t('pleaseSelect') + $t('businessSupport.questionAnswer.classify')"
|
<a-col :span="12">
|
||||||
allowClear
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('businessSupport.questionAnswer.classify')">
|
||||||
v-decorator.trim="[ 'level', validatorRules.level]">
|
<a-select :placeholder="$t('pleaseSelect') + $t('businessSupport.questionAnswer.classify')"
|
||||||
<a-select-option :value="null" :key="-1">请选择</a-select-option>
|
allowClear
|
||||||
<a-select-option :value="1">国内标准</a-select-option>
|
v-decorator.trim="[ 'level', validatorRules.level]">
|
||||||
<a-select-option :value="2">海外标准</a-select-option>
|
<a-select-option :value="null" :key="-1">请选择</a-select-option>
|
||||||
<a-select-option :value="3">企业标准</a-select-option>
|
<a-select-option value="1">国内标准</a-select-option>
|
||||||
<a-select-option :value="4">其他问题</a-select-option>
|
<a-select-option value="2">海外标准</a-select-option>
|
||||||
</a-select>
|
<a-select-option value="3">企业标准</a-select-option>
|
||||||
</a-form-item>
|
<a-select-option value="4">其他问题</a-select-option>
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardNumber')">
|
</a-select>
|
||||||
<standard-model-selection
|
</a-form-item>
|
||||||
v-decorator.trim="[ 'standardNumber', validatorRules.standardNumber]"
|
</a-col>
|
||||||
:placeholder="$t('pleaseEnterOrSelect') + $t('standardNumber')"
|
<a-col :span="12" v-if="['1', '2', '3'].includes(form.getFieldValue('level'))">
|
||||||
@nameChange="standardNameChange"
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardNumber')">
|
||||||
/>
|
<standard-model-selection
|
||||||
</a-form-item>
|
v-decorator.trim="[ 'standardNumber', validatorRules.standardNumber]"
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardName')">
|
:placeholder="$t('pleaseEnterOrSelect') + $t('standardNumber')"
|
||||||
<a-input disabled :placeholder="$t('pleaseEnter') + $t('standardName')"
|
:source="form.getFieldValue('level')"
|
||||||
v-decorator.trim="[ 'standardName', validatorRules.standardName]"/>
|
:disabledSourceSearch="true"
|
||||||
</a-form-item>
|
@nameChange="standardNameChange"
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('title')">
|
/>
|
||||||
<a-input v-decorator.trim="[ 'title', validatorRules.title]"
|
</a-form-item>
|
||||||
:placeholder="$t('pleaseEnter') + $t('title')"/>
|
</a-col>
|
||||||
</a-form-item>
|
<a-col :span="12" v-if="['1', '2', '3'].includes(form.getFieldValue('level'))">
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('project')">
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('standardName')">
|
||||||
<a-select :placeholder="$t('pleaseSelect') + $t('project')"
|
<a-input disabled :placeholder="$t('pleaseEnter') + $t('standardName')"
|
||||||
allowClear
|
v-decorator.trim="[ 'standardName', validatorRules.standardName]"/>
|
||||||
v-decorator.trim="[ 'project', validatorRules.project]">
|
</a-form-item>
|
||||||
<a-select-option :value="null" :key="-1">请选择</a-select-option>
|
</a-col>
|
||||||
<a-select-option v-for="item in projectList" :value="item.id" :key="item.id">{{ item.projectName }}</a-select-option>
|
<a-col :span="12">
|
||||||
</a-select>
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('title')">
|
||||||
</a-form-item>
|
<a-input v-decorator.trim="[ 'title', validatorRules.title]"
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('businessSupport.questionAnswer.quizTime')">
|
:placeholder="$t('pleaseEnter') + $t('title')"/>
|
||||||
<a-date-picker
|
</a-form-item>
|
||||||
v-decorator.trim="[ 'quizTime', validatorRules.quizTime]"
|
</a-col>
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
<a-col :span="12">
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('project')">
|
||||||
showTime
|
<a-select :placeholder="$t('pleaseSelect') + $t('project')"
|
||||||
></a-date-picker>
|
allowClear
|
||||||
</a-form-item>
|
v-decorator.trim="[ 'project', validatorRules.project]">
|
||||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('businessSupport.questionAnswer.questionDesc')">
|
<a-select-option :value="null" :key="-1">请选择</a-select-option>
|
||||||
<a-textarea
|
<a-select-option v-for="item in projectList" :value="item.id" :key="item.id">{{ item.projectName }}</a-select-option>
|
||||||
v-decorator.trim="[ 'questionDesc', validatorRules.questionDesc]"
|
</a-select>
|
||||||
:placeholder="$t('pleaseEnter')+$t('businessSupport.questionAnswer.questionDesc')"
|
</a-form-item>
|
||||||
:maxLength="500"
|
</a-col>
|
||||||
:rows="4" />
|
<a-col :span="12">
|
||||||
<j-upload v-decorator.trim="[ 'attach', validatorRules.attach]"
|
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('businessSupport.questionAnswer.quizTime')">
|
||||||
isDownload>
|
<a-date-picker
|
||||||
</j-upload>
|
v-decorator.trim="[ 'quizTime', validatorRules.quizTime]"
|
||||||
</a-form-item>
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
showTime
|
||||||
|
></a-date-picker>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="24">
|
||||||
|
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.questionDesc')">
|
||||||
|
<a-textarea
|
||||||
|
v-decorator.trim="[ 'questionDesc', validatorRules.questionDesc]"
|
||||||
|
:placeholder="$t('pleaseEnter')+$t('businessSupport.questionAnswer.questionDesc')"
|
||||||
|
:maxLength="500"
|
||||||
|
:rows="4" />
|
||||||
|
<j-upload v-decorator.trim="[ 'attach', validatorRules.attach]"
|
||||||
|
isDownload>
|
||||||
|
</j-upload>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-spin>
|
</a-spin>
|
||||||
|
|
||||||
@@ -91,7 +109,15 @@ export default {
|
|||||||
},
|
},
|
||||||
wrapperCol: {
|
wrapperCol: {
|
||||||
xs: { span: 24 },
|
xs: { span: 24 },
|
||||||
sm: { span: 16 }
|
sm: { span: 18 }
|
||||||
|
},
|
||||||
|
longLabelCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 3 }
|
||||||
|
},
|
||||||
|
longWrapperCol: {
|
||||||
|
xs: { span: 24 },
|
||||||
|
sm: { span: 20 }
|
||||||
},
|
},
|
||||||
validatorRules: {
|
validatorRules: {
|
||||||
classify: {
|
classify: {
|
||||||
|
|||||||
+114
-66
@@ -1,62 +1,79 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="answer-page">
|
<div class="detail-page">
|
||||||
<div class="answer-page-title">{{ model.title }}</div>
|
<div class="detail-page-title">{{ model.title }}</div>
|
||||||
<div class="answer-page-second-title">
|
<div class="detail-page-second-title">
|
||||||
{{ $t('businessSupport.questionAnswer.poster') + ':' + model.orgCodeTxt + ' ' + model.poster }}
|
{{ $t('businessSupport.questionAnswer.poster') + ':' + model.orgCodeTxt + ' ' + model.poster }}
|
||||||
</div>
|
</div>
|
||||||
<a-divider dashed/>
|
<div class="detail-page-part">
|
||||||
<div class="base-info-wrapper">
|
<div class="detail-page-part-form">
|
||||||
<a-row :gutter="24">
|
<!-- 标准号/标准名称 -->
|
||||||
<a-col :span="4" class="base-info-title">{{ $t('standardNumOrName') }}</a-col>
|
<div class="detail-page-part-form-item-large">
|
||||||
<a-col :span="20" class="base-info-value"><a>{{ model.standardNumber + ' ' + model.standardName }}</a></a-col>
|
<label>{{ $t('standardNumOrName') }}</label>
|
||||||
</a-row>
|
<span>{{ model.standardNumber && model.standardName ? model.standardNumber + ' ' + model.standardName : global.emptyLine }}</span>
|
||||||
<a-row :gutter="24">
|
</div>
|
||||||
<a-col :span="4" class="base-info-title">{{ $t('project') }}</a-col>
|
<!-- 项目 -->
|
||||||
<a-col :span="20" class="base-info-value">{{ model.project }}</a-col>
|
<div class="detail-page-part-form-item-large">
|
||||||
</a-row>
|
<label>{{ $t('project') }}</label>
|
||||||
<a-row :gutter="24">
|
<span>{{ model.project || global.emptyLine }}</span>
|
||||||
<a-col :span="4" class="base-info-title">{{ $t('businessSupport.questionAnswer.attach') }}</a-col>
|
</div>
|
||||||
<a-col :span="20" class="base-info-value"><a>{{ model.attach }}</a></a-col>
|
<!-- 附件 -->
|
||||||
</a-row>
|
<div class="detail-page-part-form-item-large-file">
|
||||||
|
<label>{{ $t('businessSupport.questionAnswer.attach') }}</label>
|
||||||
|
<span>{{ model.attach || global.emptyLine }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a-divider dashed/>
|
|
||||||
<!-- 问题描述部分 -->
|
<!-- 问题描述部分 -->
|
||||||
<div class="question-desc-wrapper">
|
<div class="question-desc-wrapper">
|
||||||
<p>{{ model.questionDesc }}</p>
|
<p class="question-desc">{{ model.questionDesc }}</p>
|
||||||
<p class="right-bottom-p">
|
<p class="right-bottom-p">
|
||||||
<span class="time-span">{{ model.quizTime }}</span>
|
<span class="time-span">{{ model.quizTime }}</span>
|
||||||
<span class="right-bottom-p-span">{{ answerArr.length }}个回复</span>
|
<span class="right-bottom-p-span">{{ answerArr.length + $t('businessSupport.questionAnswer.answerNum')}}</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<!-- 历史回答数据 -->
|
<!-- 历史回答数据 -->
|
||||||
<div v-for="(item, index) in answerArr" :key="index" class="answer-wrapper">
|
<div v-for="(item, index) in answerArr" :key="index" class="answer-wrapper">
|
||||||
<div class="left-user-info">
|
<div class="left-user-info">
|
||||||
<a-avatar shape="square" :src="getAvatarView(item.avatar)" icon="user"/>
|
<a-avatar shape="square" :size="56" :src="getAvatarView(item.avatar)" icon="user"/>
|
||||||
<p>{{ item.realname }}</p>
|
<p>{{ item.realname }}</p>
|
||||||
<p>{{ item.orgCodeTxt }}</p>
|
<p>{{ item.orgCodeTxt }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-answer-wrapper">
|
<div class="right-answer-wrapper">
|
||||||
<p v-if="item.isTop" class="top-p">【置顶】</p>
|
<!-- 是否是置顶 -->
|
||||||
|
<p v-if="item.isTop" class="top-p">{{ $t('businessSupport.questionAnswer.top') }}</p>
|
||||||
|
<!-- 回答描述 -->
|
||||||
<p :class="!item.isTop ? 'no-top-desc' : ''">{{ item.answerDesc }}</p>
|
<p :class="!item.isTop ? 'no-top-desc' : ''">{{ item.answerDesc }}</p>
|
||||||
<p class="right-bottom-p">
|
<p class="right-bottom-p">
|
||||||
<span>{{ item.answerTime }}</span>
|
<span>{{ item.answerTime }}</span>
|
||||||
<a class="right-bottom-p-a" v-if="item.isTop">取消置顶</a>
|
<!-- 置顶评论的操作按钮 -->
|
||||||
<a class="right-bottom-p-a" v-else>设置为置顶</a>
|
<template v-if="item.isTop">
|
||||||
<a class="right-bottom-p-a">删除</a>
|
<!-- 取消置顶 -->
|
||||||
|
<a class="right-bottom-p-a">{{ $t('businessSupport.questionAnswer.cancelTop') }}</a>
|
||||||
|
<!-- 删除 : 发帖人、评论人、有置顶权限的用户可以删除 ?? -->
|
||||||
|
<a class="right-bottom-p-a">{{ $t('delete') }}</a>
|
||||||
|
</template>
|
||||||
|
<!-- 非置顶评论 -->
|
||||||
|
<template v-else>
|
||||||
|
<!-- 设置为置顶 -->
|
||||||
|
<a class="right-bottom-p-a">{{ $t('businessSupport.questionAnswer.setTop') }}</a>
|
||||||
|
<!-- 删除 : 发帖人、评论人、有置顶权限的用户可以删除,置顶的评论不允许删除,取消置顶后允许删除 ?? -->
|
||||||
|
<a class="right-bottom-p-a">{{ $t('delete') }}</a>
|
||||||
|
</template>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div v-for="(item, index) in answerArr" :key="index">
|
</div>
|
||||||
<!-- 回答区域 -->
|
<!-- 回答区域 -->
|
||||||
<div class="answer-wrapper">
|
<div v-if="canAnswer === 1" class="answer-wrapper">
|
||||||
<div class="left-user-info">
|
<div class="left-user-info">
|
||||||
<a-avatar shape="square" :src="getAvatarView(currentUser.avatar)" icon="user"/>
|
<a-avatar shape="square" :size="56" :src="getAvatarView(currentUser.avatar)" icon="user"/>
|
||||||
<p>{{ currentUser.realname }}</p>
|
<p>{{ currentUser.realname }}</p>
|
||||||
<p>{{ currentUser.orgCodeTxt }}</p>
|
<p>{{ currentUser.orgCodeTxt }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-answer-form-wrapper">
|
<div class="right-answer-form-wrapper">
|
||||||
<p>回复问题</p>
|
<p>{{ $t('businessSupport.questionAnswer.answerQuestion') }}</p>
|
||||||
<a-textarea v-model="answerDesc"></a-textarea>
|
<a-textarea v-model="answerDesc" :autoSize="{minRows: 4}" :maxLength="2000"></a-textarea>
|
||||||
<a-button class="submit-btn" type="primary">提交</a-button>
|
<p class="answer-desc-num">{{ answerDesc.length }}/2000{{ $t('businessSupport.questionAnswer.word') }}</p>
|
||||||
|
<a-button class="submit-btn" type="primary" @click="submit">{{ $t('submit') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -112,12 +129,14 @@ export default {
|
|||||||
realname: '',
|
realname: '',
|
||||||
orgCodeTxt: ''
|
orgCodeTxt: ''
|
||||||
},
|
},
|
||||||
answerDesc: ''
|
answerDesc: '',
|
||||||
|
canAnswer: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
const userInfo = Vue.ls.get(USER_INFO)
|
const userInfo = Vue.ls.get(USER_INFO)
|
||||||
this.currentUser = Object.assign({}, userInfo)
|
this.currentUser = Object.assign({}, userInfo)
|
||||||
|
this.canAnswer = Number(this.$route.query.canAnswer)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getAvatarView (avatar) {
|
getAvatarView (avatar) {
|
||||||
@@ -128,47 +147,71 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
.answer-page {
|
|
||||||
padding: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.answer-page-title {
|
// 二级标题
|
||||||
font-size: 20px;
|
.detail-page-second-title {
|
||||||
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
|
|
||||||
color: #1D2129;
|
|
||||||
font-weight: 600;
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.answer-page-second-title {
|
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-weight: 550;
|
font-weight: 550;
|
||||||
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
.base-info-wrapper {
|
.detail-page-part-form-item-large {
|
||||||
font-size: 16px;
|
width: 100%;
|
||||||
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
|
display: flex;
|
||||||
.base-info-title {
|
margin: 0 16px 16px 0;
|
||||||
font-weight: 530;
|
|
||||||
|
label {
|
||||||
|
width: 20%;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #86909C;
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-break: break-all;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
color: #1D2129;
|
color: #1D2129;
|
||||||
}
|
}
|
||||||
.base-info-value {
|
}
|
||||||
color: #1D2129;
|
.detail-page-part-form-item-large-file {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
margin: 0 16px 16px 0;
|
||||||
|
|
||||||
|
label {
|
||||||
|
width: 20%;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #86909C;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-break: break-all;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 问题描述部分
|
// 问题描述部分
|
||||||
.question-desc-wrapper {
|
.question-desc-wrapper {
|
||||||
position: relative;
|
border-radius: 8px;
|
||||||
padding-bottom: 40px;
|
border: 1px solid #E5E6EB;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 20px;
|
||||||
|
.question-desc {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 历史回答数据
|
// 历史回答数据
|
||||||
.answer-wrapper {
|
.answer-wrapper {
|
||||||
width: 100%;
|
border-radius: 8px;
|
||||||
//height: 100%;
|
border: 1px solid #E5E6EB;
|
||||||
border: 1px solid #1D2129;
|
margin-bottom: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
//flex: 1;
|
|
||||||
.left-user-info {
|
.left-user-info {
|
||||||
width: 300px;
|
width: 300px;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -176,19 +219,26 @@ export default {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
background: rgb(247, 248, 250);
|
background: rgb(247, 248, 250);
|
||||||
|
padding: 20px 0 5px 0;
|
||||||
}
|
}
|
||||||
.right-answer-wrapper {
|
.right-answer-wrapper {
|
||||||
position: relative;
|
width: 100%;
|
||||||
padding: 20px 10px 40px 10px;
|
padding: 20px 10px 20px 10px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.right-answer-form-wrapper {
|
.right-answer-form-wrapper {
|
||||||
padding: 20px;
|
padding: 20px 10px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
.submit-btn {
|
.submit-btn {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.answer-desc-num {
|
||||||
|
text-align: right;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
.top-p {
|
.top-p {
|
||||||
color: #D52C26;
|
color: #D52C26;
|
||||||
}
|
}
|
||||||
@@ -199,11 +249,9 @@ export default {
|
|||||||
// 右下角的时间和按钮区域
|
// 右下角的时间和按钮区域
|
||||||
.right-bottom-p {
|
.right-bottom-p {
|
||||||
height: 20px;
|
height: 20px;
|
||||||
display: flex;
|
text-align: right;
|
||||||
width: auto;
|
padding-right: 8px;
|
||||||
position: absolute;
|
margin-bottom: 0;
|
||||||
right: 10px;
|
|
||||||
bottom: 0;
|
|
||||||
.time-span {
|
.time-span {
|
||||||
color: #86909C;
|
color: #86909C;
|
||||||
}
|
}
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
||||||
</a>
|
</a>
|
||||||
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'enterpriseStandardLibrary:check:search'">{{ $t('query') }}</a-button>
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'enterpriseStandardLibrary:check:search'">{{ $t('query') }}</a-button>
|
||||||
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -198,7 +198,7 @@ export default {
|
|||||||
title: this.$t('serialNumber'),
|
title: this.$t('serialNumber'),
|
||||||
dataIndex: '',
|
dataIndex: '',
|
||||||
key: 'rowIndex',
|
key: 'rowIndex',
|
||||||
width: 60,
|
width: 80,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
customRender: function (t, r, index) {
|
customRender: function (t, r, index) {
|
||||||
return parseInt(index) + 1
|
return parseInt(index) + 1
|
||||||
@@ -300,7 +300,7 @@ export default {
|
|||||||
list: '/enterprise/inspect/page',
|
list: '/enterprise/inspect/page',
|
||||||
exportXlsUrl: '/enterprise/inspect/exportData',
|
exportXlsUrl: '/enterprise/inspect/exportData',
|
||||||
exportPostponeDataUrl: '/enterprise/inspect/exportDataWithDelay', // 导出延期数据
|
exportPostponeDataUrl: '/enterprise/inspect/exportDataWithDelay', // 导出延期数据
|
||||||
exportRectificationPlanUrl: '' // 导出整改计划
|
exportRectificationPlanUrl: '/enterprise/inspect/exportDataRectifyPlan' // 导出整改计划
|
||||||
},
|
},
|
||||||
operationList: [
|
operationList: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -119,7 +119,7 @@
|
|||||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
||||||
</a>
|
</a>
|
||||||
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'enterpriseStandardLibrary:plan:search'">{{ $t('query') }}</a-button>
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'enterpriseStandardLibrary:plan:search'">{{ $t('query') }}</a-button>
|
||||||
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
||||||
</a>
|
</a>
|
||||||
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'enterpriseStandardLibrary:publicize:search'">{{ $t('query') }}</a-button>
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'enterpriseStandardLibrary:publicize:search'">{{ $t('query') }}</a-button>
|
||||||
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -177,7 +177,8 @@ export default {
|
|||||||
],
|
],
|
||||||
url: {
|
url: {
|
||||||
list: '/enterprise/declare/page',
|
list: '/enterprise/declare/page',
|
||||||
exportXlsUrl: '/enterprise/declare/exportData'
|
exportXlsUrl: '/enterprise/declare/exportData',
|
||||||
|
exportZipUrl: '/enterprise/declare/exportDataWithFile'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
<div style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
|
<div style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
<a-button type="primary" @click="searchQuery" icon="search" v-has="'enterpriseStandardLibrary:reviewMeeting:search'">{{ $t('query') }}</a-button>
|
<a-button type="primary" @click="searchQuery" icon="search" v-has="'enterpriseStandardLibrary:reviewMeeting:search'">{{ $t('query') }}</a-button>
|
||||||
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -100,7 +100,7 @@ export default {
|
|||||||
title: this.$t('serialNumber'),
|
title: this.$t('serialNumber'),
|
||||||
dataIndex: '',
|
dataIndex: '',
|
||||||
key: 'rowIndex',
|
key: 'rowIndex',
|
||||||
width: 60,
|
width: 80,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
customRender: function (t, r, index) {
|
customRender: function (t, r, index) {
|
||||||
return parseInt(index) + 1
|
return parseInt(index) + 1
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
||||||
</a>
|
</a>
|
||||||
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'enterpriseStandardLibrary:recheckPlan:search'">{{ $t('query') }}</a-button>
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'enterpriseStandardLibrary:recheckPlan:search'">{{ $t('query') }}</a-button>
|
||||||
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -110,7 +110,7 @@ export default {
|
|||||||
title: this.$t('serialNumber'),
|
title: this.$t('serialNumber'),
|
||||||
dataIndex: '',
|
dataIndex: '',
|
||||||
key: 'rowIndex',
|
key: 'rowIndex',
|
||||||
width: 60,
|
width: 80,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
customRender: function (t, r, index) {
|
customRender: function (t, r, index) {
|
||||||
return parseInt(index) + 1
|
return parseInt(index) + 1
|
||||||
|
|||||||
@@ -23,9 +23,9 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
||||||
<div style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
<div style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
|
||||||
<a-button type="primary" @click="searchQuery" icon="search" v-has="'sys:friendshipLink:search'">{{ $t('query') }}</a-button>
|
<a-button type="primary" @click="searchQuery" icon="search" v-has="'sys:friendshipLink:search'">{{ $t('query') }}</a-button>
|
||||||
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -88,7 +88,7 @@ export default {
|
|||||||
dataIndex: '',
|
dataIndex: '',
|
||||||
key: 'rowIndex',
|
key: 'rowIndex',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 60,
|
width: 80,
|
||||||
customRender: function (t, r, index) {
|
customRender: function (t, r, index) {
|
||||||
return parseInt(index) + 1
|
return parseInt(index) + 1
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,7 +96,7 @@
|
|||||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
||||||
</a>
|
</a>
|
||||||
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'sys:innerWorkingGroup:search'">{{ $t('query') }}</a-button>
|
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px" v-has="'sys:innerWorkingGroup:search'">{{ $t('query') }}</a-button>
|
||||||
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
<a-button type="primary" ghost @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|||||||
Reference in New Issue
Block a user