|
|
@ -7,7 +7,8 @@ |
|
|
|
<span>话题详情</span> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="btn-close" @click="handleClose"> |
|
|
|
<div class="btn-close" |
|
|
|
@click="handleClose"> |
|
|
|
<img src="@/assets/img/shuju/people/close.png" /> |
|
|
|
</div> |
|
|
|
|
|
|
@ -15,12 +16,10 @@ |
|
|
|
<div class="info-title">话题内容</div> |
|
|
|
<div class="info-content">{{ info.topicContent }}</div> |
|
|
|
<div class="info-pics"> |
|
|
|
<img |
|
|
|
:src="src" |
|
|
|
<img :src="src" |
|
|
|
:key="src" |
|
|
|
v-for="src in info.topicImgs" |
|
|
|
@click="watchImg(src)" |
|
|
|
/> |
|
|
|
@click="watchImg(src)" /> |
|
|
|
</div> |
|
|
|
<div class="info-prop"> |
|
|
|
<span>发布时间:</span> |
|
|
@ -37,65 +36,57 @@ |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="tabs"> |
|
|
|
<div |
|
|
|
class="tab-btn" |
|
|
|
<div class="tab-btn" |
|
|
|
@click="subStartGroupIndex" |
|
|
|
v-if="groupList.length > 9" |
|
|
|
> |
|
|
|
v-if="groupList.length > 9"> |
|
|
|
<img src="@/assets/img/shuju/people/arrow-double-left.png" /> |
|
|
|
</div> |
|
|
|
<div |
|
|
|
v-show="index >= startGroupIndex && index < startGroupIndex + 9" |
|
|
|
<div v-show="index >= startGroupIndex && index < startGroupIndex + 9" |
|
|
|
class="tab" |
|
|
|
:class="groupIndex % groupList.length == index ? 'z-on' : ''" |
|
|
|
:key="'tab' + index" |
|
|
|
@click="groupIndex = index" |
|
|
|
v-for="(item, index) in groupList" |
|
|
|
> |
|
|
|
v-for="(item, index) in groupList"> |
|
|
|
{{ item.label }} |
|
|
|
</div> |
|
|
|
<div |
|
|
|
class="tab-btn" |
|
|
|
<div class="tab-btn" |
|
|
|
@click="addStartGroupIndex" |
|
|
|
v-if="groupList.length > 9" |
|
|
|
> |
|
|
|
v-if="groupList.length > 9"> |
|
|
|
<img src="@/assets/img/shuju/people/arrow-double-right.png" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="m-case"> |
|
|
|
<div class="m-yanpan" v-if="groupIndex == 0"> |
|
|
|
<div class="m-yanpan" |
|
|
|
v-if="groupIndex == 0"> |
|
|
|
<div v-if="issueInfo.projectId"> |
|
|
|
<analyse |
|
|
|
v-if="yanPan.loading" |
|
|
|
<analyse v-if="yanPan.loading" |
|
|
|
singleTitle="楼院小组" |
|
|
|
:userList="yanPan.houseUserList" |
|
|
|
:userName="yanPan.icUserName" |
|
|
|
:singleList="yanPan.categoryList" |
|
|
|
@user="toUserInfo" |
|
|
|
@project="toProjectInfo" |
|
|
|
/> |
|
|
|
@project="toProjectInfo" /> |
|
|
|
<screen-loading v-else>加载中</screen-loading> |
|
|
|
</div> |
|
|
|
<div v-else class="m-hint"> |
|
|
|
<img |
|
|
|
src="@/assets/img/modules/visual/noData.png" |
|
|
|
class="no-data-img" |
|
|
|
/> |
|
|
|
<div v-else |
|
|
|
class="m-hint"> |
|
|
|
<img src="@/assets/img/modules/visual/noData.png" |
|
|
|
class="no-data-img" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="m-tb" v-if="groupIndex == 1"> |
|
|
|
<cpt-tb |
|
|
|
:col-list="comment.colList" |
|
|
|
<div class="m-tb" |
|
|
|
v-if="groupIndex == 1"> |
|
|
|
<cpt-tb :col-list="comment.colList" |
|
|
|
:loading="comment.loading" |
|
|
|
:header="comment.header" |
|
|
|
:list="comment.list" |
|
|
|
@operate="checkTopicCommentImg" |
|
|
|
></cpt-tb> |
|
|
|
@operate="checkTopicCommentImg"></cpt-tb> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div v-if="groupIndex == 2"> |
|
|
|
<div class="m-row" v-if="info.issueId"> |
|
|
|
<div class="m-row" |
|
|
|
v-if="info.issueId"> |
|
|
|
<div class="m-info"> |
|
|
|
<div class="info-prop"> |
|
|
|
<span>议题标题:</span> |
|
|
@ -113,7 +104,8 @@ |
|
|
|
<span>议题发起人:</span> |
|
|
|
<span>{{ issueInfo.issueInitiator }}</span> |
|
|
|
</div> |
|
|
|
<div class="info-prop"> |
|
|
|
<div v-if="issueInfo.topicInfo&&issueInfo.topicInfo.groupName" |
|
|
|
class="info-prop"> |
|
|
|
<span>议题来源:</span> |
|
|
|
<span>{{ issueInfo.topicInfo.groupName }}</span> |
|
|
|
</div> |
|
|
@ -143,22 +135,20 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<line-chart |
|
|
|
v-if="issueChartData.length > 0" |
|
|
|
:list="issueChartData" |
|
|
|
/> |
|
|
|
<line-chart v-if="issueChartData.length > 0" |
|
|
|
:list="issueChartData" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-else class="m-hint"> |
|
|
|
<img |
|
|
|
src="@/assets/img/modules/visual/noData.png" |
|
|
|
class="no-data-img" |
|
|
|
/> |
|
|
|
<div v-else |
|
|
|
class="m-hint"> |
|
|
|
<img src="@/assets/img/modules/visual/noData.png" |
|
|
|
class="no-data-img" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div v-if="groupIndex == 3"> |
|
|
|
<div class="m-row" v-if="issueInfo.projectId"> |
|
|
|
<div class="m-row" |
|
|
|
v-if="issueInfo.projectId"> |
|
|
|
<div class="m-info"> |
|
|
|
<div class="info-prop"> |
|
|
|
<span>项目标题:</span> |
|
|
@ -176,33 +166,36 @@ |
|
|
|
<span>当前处理部门:</span> |
|
|
|
<span>{{ projectInfo.departmentNameList.join("、") }}</span> |
|
|
|
</div> |
|
|
|
<div class="info-prop" v-if="projectCate.length > 0"> |
|
|
|
<div class="info-prop" |
|
|
|
v-if="projectCate.length > 0"> |
|
|
|
<span>分类:</span> |
|
|
|
<fold-text :row="3"> |
|
|
|
<div :key="item.name" v-for="item in projectCate"> |
|
|
|
<div :key="item.name" |
|
|
|
v-for="item in projectCate"> |
|
|
|
{{ item.name }} |
|
|
|
</div> |
|
|
|
</fold-text> |
|
|
|
</div> |
|
|
|
<div class="info-prop" v-if="projectTag.length > 0"> |
|
|
|
<div class="info-prop" |
|
|
|
v-if="projectTag.length > 0"> |
|
|
|
<span>标签:</span> |
|
|
|
<fold-text :row="3"> |
|
|
|
<div :key="item.name" v-for="item in projectTag"> |
|
|
|
<div :key="item.name" |
|
|
|
v-for="item in projectTag"> |
|
|
|
{{ item.name }} |
|
|
|
</div> |
|
|
|
</fold-text> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="m-process" v-if="projectProcess.length > 0"> |
|
|
|
<div class="m-process" |
|
|
|
v-if="projectProcess.length > 0"> |
|
|
|
<div class="process-title">处理进展</div> |
|
|
|
<div class="list"> |
|
|
|
<div |
|
|
|
class="item" |
|
|
|
<div class="item" |
|
|
|
:class="index === 0 ? 'z-on' : ''" |
|
|
|
:key="item.processId" |
|
|
|
v-for="(item, index) in projectProcess" |
|
|
|
> |
|
|
|
v-for="(item, index) in projectProcess"> |
|
|
|
<div class="item-row"> |
|
|
|
<div class="name">{{ item.processName }}</div> |
|
|
|
<div class="date"> |
|
|
@ -215,20 +208,16 @@ |
|
|
|
<div class="detail-value">{{ item.departmentName }}</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div |
|
|
|
class="detail" |
|
|
|
v-if="item.processName != '转项目' && item.publicReply" |
|
|
|
> |
|
|
|
<div class="detail" |
|
|
|
v-if="item.processName != '转项目' && item.publicReply"> |
|
|
|
<div class="detail-field">说 明:</div> |
|
|
|
<div class="detail-value"> |
|
|
|
<fold-text :row="3">{{ item.publicReply }}</fold-text> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div |
|
|
|
class="detail" |
|
|
|
v-if="item.processName != '转项目' && item.internalRemark" |
|
|
|
> |
|
|
|
<div class="detail" |
|
|
|
v-if="item.processName != '转项目' && item.internalRemark"> |
|
|
|
<div class="detail-field">内部备注:</div> |
|
|
|
<div class="detail-value"> |
|
|
|
<fold-text :row="3">{{ |
|
|
@ -238,12 +227,10 @@ |
|
|
|
</div> |
|
|
|
<div class="detail"> |
|
|
|
<div class="attachement-list"> |
|
|
|
<a |
|
|
|
:href="att.url" |
|
|
|
<a :href="att.url" |
|
|
|
target="_blank" |
|
|
|
:key="att.url" |
|
|
|
v-for="att in item.internalFile" |
|
|
|
> |
|
|
|
v-for="att in item.internalFile"> |
|
|
|
<i class="el-icon-folder-opened"></i> |
|
|
|
{{ att.name }} |
|
|
|
</a> |
|
|
@ -253,11 +240,10 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-else class="m-hint"> |
|
|
|
<img |
|
|
|
src="@/assets/img/modules/visual/noData.png" |
|
|
|
class="no-data-img" |
|
|
|
/> |
|
|
|
<div v-else |
|
|
|
class="m-hint"> |
|
|
|
<img src="@/assets/img/modules/visual/noData.png" |
|
|
|
class="no-data-img" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -276,7 +262,7 @@ import analyse from "@/views/modules/visual/cpts/analyse"; |
|
|
|
import foldText from "@/views/components/foldText"; |
|
|
|
import dateFormat from "dai-js/tools/dateFormat"; |
|
|
|
|
|
|
|
function iniData() { |
|
|
|
function iniData () { |
|
|
|
return { |
|
|
|
groupList: [ |
|
|
|
{ label: "研判分析" }, |
|
|
@ -434,7 +420,7 @@ export default { |
|
|
|
computed: {}, |
|
|
|
|
|
|
|
watch: { |
|
|
|
topicId() { |
|
|
|
topicId () { |
|
|
|
let data = iniData(); |
|
|
|
Object.keys(data).forEach((k) => { |
|
|
|
this[k] = data[k]; |
|
|
@ -443,16 +429,16 @@ export default { |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
mounted() { |
|
|
|
mounted () { |
|
|
|
this.getApiData(); |
|
|
|
}, |
|
|
|
|
|
|
|
methods: { |
|
|
|
watchImg(src) { |
|
|
|
watchImg (src) { |
|
|
|
window.open(src); |
|
|
|
}, |
|
|
|
|
|
|
|
addStartGroupIndex() { |
|
|
|
addStartGroupIndex () { |
|
|
|
const { startGroupIndex, groupList } = this; |
|
|
|
if (startGroupIndex < groupList.length - 9) { |
|
|
|
this.startGroupIndex = startGroupIndex + 1; |
|
|
@ -460,7 +446,7 @@ export default { |
|
|
|
this.startGroupIndex = groupList.length - 9; |
|
|
|
} |
|
|
|
}, |
|
|
|
subStartGroupIndex() { |
|
|
|
subStartGroupIndex () { |
|
|
|
const { startGroupIndex, groupList } = this; |
|
|
|
if (startGroupIndex > 0) { |
|
|
|
this.startGroupIndex = startGroupIndex - 1; |
|
|
@ -468,11 +454,11 @@ export default { |
|
|
|
this.startGroupIndex = 0; |
|
|
|
} |
|
|
|
}, |
|
|
|
handleClose() { |
|
|
|
handleClose () { |
|
|
|
this.$emit("close"); |
|
|
|
}, |
|
|
|
|
|
|
|
async getApiData() { |
|
|
|
async getApiData () { |
|
|
|
this.getComment(); |
|
|
|
await this.getInfo(); |
|
|
|
await this.getIssueInfo(); |
|
|
@ -484,7 +470,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//加载组织数据 |
|
|
|
async getInfo() { |
|
|
|
async getInfo () { |
|
|
|
const url = "/resi/group/topic/gettopicdetail"; |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, { |
|
|
@ -499,7 +485,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//加载组织数据 |
|
|
|
async getComment() { |
|
|
|
async getComment () { |
|
|
|
const url = "/resi/group/comment/getcommentlistoftopic"; |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, { |
|
|
@ -526,7 +512,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
checkTopicCommentImg(index) { |
|
|
|
checkTopicCommentImg (index) { |
|
|
|
const { |
|
|
|
comment: { srcList }, |
|
|
|
} = this; |
|
|
@ -536,7 +522,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//加载组织数据 |
|
|
|
async getIssueInfo() { |
|
|
|
async getIssueInfo () { |
|
|
|
const { |
|
|
|
info: { issueId }, |
|
|
|
} = this; |
|
|
@ -555,7 +541,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//加载组织数据 |
|
|
|
async getIssueTrend() { |
|
|
|
async getIssueTrend () { |
|
|
|
const { |
|
|
|
info: { issueId }, |
|
|
|
} = this; |
|
|
@ -592,7 +578,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//加载组织数据 |
|
|
|
async getProjectProcess() { |
|
|
|
async getProjectProcess () { |
|
|
|
const { issueInfo } = this; |
|
|
|
if (!issueInfo || !issueInfo.projectId) return; |
|
|
|
const url = "/gov/project/trace/processlist-v2"; |
|
|
@ -615,7 +601,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//加载组织数据 |
|
|
|
async getProjectInfo() { |
|
|
|
async getProjectInfo () { |
|
|
|
const { issueInfo } = this; |
|
|
|
if (!issueInfo || !issueInfo.projectId) return; |
|
|
|
const url = "/gov/project/trace/projectdetail"; |
|
|
@ -631,7 +617,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async getProjectCate() { |
|
|
|
async getProjectCate () { |
|
|
|
const { issueInfo } = this; |
|
|
|
if (!issueInfo || !issueInfo.projectId) return; |
|
|
|
const url = "/gov/project/projectcategory/categorytaglist"; |
|
|
@ -649,7 +635,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
//加载组织数据 |
|
|
|
async getYanPan() { |
|
|
|
async getYanPan () { |
|
|
|
const url = "/gov/project/project/topic-research-analysis"; |
|
|
|
|
|
|
|
if (!this.issueInfo.projectId) return; |
|
|
@ -685,13 +671,13 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
toUserInfo(item) { |
|
|
|
toUserInfo (item) { |
|
|
|
this.$router.push({ |
|
|
|
path: `/main-shuju/visual-basicinfo-people/${item.icResiUserId}`, |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
toProjectInfo(item) { |
|
|
|
toProjectInfo (item) { |
|
|
|
console.log(item); |
|
|
|
this.topicId = item.topicId; |
|
|
|
}, |
|
|
|