|
@ -1,12 +1,11 @@ |
|
|
<template> |
|
|
<template> |
|
|
<div class="analysis"> |
|
|
<div class="analysis"> |
|
|
<div v-if="list.length && list.length !== 0"> |
|
|
<div v-if="list.length && list.length !== 0"> |
|
|
<div v-for="(item, index) in list" :key="index"> |
|
|
<div v-for="(item, index) in list" |
|
|
|
|
|
:key="index"> |
|
|
<div class="content"> |
|
|
<div class="content"> |
|
|
<div class="title"> |
|
|
<div class="title"> |
|
|
<span style="font-size: 16px; font-weight: bold" |
|
|
<span style="font-size: 16px; font-weight: bold">Q{{ index + 1 }} :{{ item.label }}({{ item.type }})</span> |
|
|
>Q{{ index + 1 }} :{{ item.label }}({{ item.type }})</span |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
|
|
|
<!-- <div> |
|
|
<!-- <div> |
|
|
<span>图表类型:</span> |
|
|
<span>图表类型:</span> |
|
@ -25,31 +24,31 @@ |
|
|
:chart-option="getCharData(item)" |
|
|
:chart-option="getCharData(item)" |
|
|
:width="'90vw'" |
|
|
:width="'90vw'" |
|
|
/> --> |
|
|
/> --> |
|
|
<div v-if="computedCount(item.type)" class="cell-type" @click="handleOpen(item)"> |
|
|
<div v-if="computedCount(item.type)" |
|
|
|
|
|
class="cell-type" |
|
|
|
|
|
@click="handleOpen(item)"> |
|
|
<span>共收集 {{ item.detail.collectionTotal }} 条,</span> |
|
|
<span>共收集 {{ item.detail.collectionTotal }} 条,</span> |
|
|
<span>有效 {{ item.detail.validTotal }} 条</span> |
|
|
<span>有效 {{ item.detail.validTotal }} 条</span> |
|
|
<span v-if="item.type === 'NUMBER_INPUT'" |
|
|
<span v-if="item.type === 'NUMBER_INPUT'">,总计 {{ item.detail.sumTotal }} |
|
|
>,总计 {{ item.detail.sumTotal }} |
|
|
|
|
|
</span> |
|
|
</span> |
|
|
<span v-if="item.type === 'SWITCH'" |
|
|
<span v-if="item.type === 'SWITCH'">,开 {{ item.detail.openTotal }} 条,关 |
|
|
>,开 {{ item.detail.openTotal }} 条,关 |
|
|
{{ item.detail.closedTotal }} 条</span> |
|
|
{{ item.detail.closedTotal }} 条</span |
|
|
|
|
|
> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<div v-else-if="item.type === 'RATE'" class="cell-rate"> |
|
|
<div v-else-if="item.type === 'RATE'" |
|
|
<div |
|
|
class="cell-rate"> |
|
|
v-for="(n, i) in item.detail.maxStarNum" |
|
|
<div v-for="(n, i) in item.detail.maxStarNum" |
|
|
:key="i" |
|
|
:key="i" |
|
|
class="rate-item" |
|
|
class="rate-item"> |
|
|
> |
|
|
|
|
|
<div class="rate-item-icon"> |
|
|
<div class="rate-item-icon"> |
|
|
<el-rate :value="n" disabled text-color="#ff9900"> </el-rate> |
|
|
<el-rate :value="n" |
|
|
|
|
|
disabled |
|
|
|
|
|
text-color="#ff9900"> </el-rate> |
|
|
</div> |
|
|
</div> |
|
|
<div class="rate-item-num"> |
|
|
<div class="rate-item-num"> |
|
|
{{ item.detail.starProfile[n] || 0 }} 次 |
|
|
{{ item.detail.starProfile[n] || 0 }} 次 |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="rate-item"> |
|
|
<!-- <div class="rate-item"> |
|
|
<div class="rate-item-avg">平均星数</div> |
|
|
<div class="rate-item-avg">平均星数</div> |
|
|
<div class="rate-item-icon"> |
|
|
<div class="rate-item-icon"> |
|
|
<el-rate |
|
|
<el-rate |
|
@ -59,20 +58,26 @@ |
|
|
> |
|
|
> |
|
|
</el-rate> |
|
|
</el-rate> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
</div> --> |
|
|
|
|
|
<div class="rate-item"> |
|
|
|
|
|
<div class="rate-item-avg">平均星数</div> |
|
|
|
|
|
<div class="rate-item-icon"> |
|
|
|
|
|
<span>{{item.detail.avgStarNum}}</span> |
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div v-else-if="item.type === 'RADIO' || item.type === 'CHECKBOX' || item.type === 'SELECT'" |
|
|
<div v-else-if="item.type === 'RADIO' || item.type === 'CHECKBOX' || item.type === 'SELECT'" |
|
|
class="cell-wrapper" |
|
|
class="cell-wrapper"> |
|
|
> |
|
|
<div v-for="(n, i) in item.detail.options" |
|
|
<div v-for="(n, i) in item.detail.options" :key="i" class="cell"> |
|
|
:key="i" |
|
|
|
|
|
class="cell"> |
|
|
<div class="cell-label">{{ n.label }}</div> |
|
|
<div class="cell-label">{{ n.label }}</div> |
|
|
<div class="cell-value"> |
|
|
<div class="cell-value"> |
|
|
<div class="cell-progress"> |
|
|
<div class="cell-progress"> |
|
|
<el-progress |
|
|
<el-progress :stroke-width="20" |
|
|
:stroke-width="20" |
|
|
|
|
|
:show-text="false" |
|
|
:show-text="false" |
|
|
:percentage="computedPercent(n.currentCount, item.detail.totalCount)" |
|
|
:percentage="computedPercent(n.currentCount, item.detail.totalCount)" /> |
|
|
/> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<div class="cell-percent"> |
|
|
<div class="cell-percent"> |
|
|
{{ computedPercent(n.currentCount, item.detail.totalCount).toFixed(2) }}% |
|
|
{{ computedPercent(n.currentCount, item.detail.totalCount).toFixed(2) }}% |
|
@ -81,16 +86,17 @@ |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div v-else-if="item.type === 'CASCADER'" class="cell-wrapper"> |
|
|
<div v-else-if="item.type === 'CASCADER'" |
|
|
<div v-for="(n, i) in item.detail.profile" :key="i" class="cell"> |
|
|
class="cell-wrapper"> |
|
|
|
|
|
<div v-for="(n, i) in item.detail.profile" |
|
|
|
|
|
:key="i" |
|
|
|
|
|
class="cell"> |
|
|
<div class="cell-label">{{ i }}</div> |
|
|
<div class="cell-label">{{ i }}</div> |
|
|
<div class="cell-value"> |
|
|
<div class="cell-value"> |
|
|
<div class="cell-progress"> |
|
|
<div class="cell-progress"> |
|
|
<el-progress |
|
|
<el-progress :stroke-width="20" |
|
|
:stroke-width="20" |
|
|
|
|
|
:show-text="false" |
|
|
:show-text="false" |
|
|
:percentage="computedPercent(n, item.detail.totalCount)" |
|
|
:percentage="computedPercent(n, item.detail.totalCount)" /> |
|
|
/> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
<div class="cell-percent"> |
|
|
<div class="cell-percent"> |
|
|
{{ computedPercent(n, item.detail.totalCount).toFixed(2) }}% |
|
|
{{ computedPercent(n, item.detail.totalCount).toFixed(2) }}% |
|
@ -103,16 +109,29 @@ |
|
|
<el-divider /> |
|
|
<el-divider /> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<data-empty v-else style="padding: 20px" desc="暂无数据分析" /> |
|
|
<data-empty v-else |
|
|
|
|
|
style="padding: 20px" |
|
|
|
|
|
desc="暂无数据分析" /> |
|
|
|
|
|
|
|
|
<el-dialog :title="dialogTitle" :visible.sync="dialogTableVisible" :close-on-click-modal="false" @close="handleClose"> |
|
|
<el-dialog :title="dialogTitle" |
|
|
<el-table :data="dialogData" max-height="400" border> |
|
|
:visible.sync="dialogTableVisible" |
|
|
<el-table-column type="index" label="序号" width="50" align="center"> |
|
|
:close-on-click-modal="false" |
|
|
|
|
|
@close="handleClose"> |
|
|
|
|
|
<el-table :data="dialogData" |
|
|
|
|
|
max-height="400" |
|
|
|
|
|
border> |
|
|
|
|
|
<el-table-column type="index" |
|
|
|
|
|
label="序号" |
|
|
|
|
|
width="50" |
|
|
|
|
|
align="center"> |
|
|
<!-- <template slot-scope="scope"> |
|
|
<!-- <template slot-scope="scope"> |
|
|
{{ scope.row.index }} |
|
|
{{ scope.row.index }} |
|
|
</template> --> |
|
|
</template> --> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column v-for="item in dialogHeader" :key="item.formItemId" :prop="item.formItemId" :label="item.label" /> |
|
|
<el-table-column v-for="item in dialogHeader" |
|
|
|
|
|
:key="item.formItemId" |
|
|
|
|
|
:prop="item.formItemId" |
|
|
|
|
|
:label="item.label" /> |
|
|
<!-- <el-table-column property="name" label="姓名" width="200"></el-table-column> |
|
|
<!-- <el-table-column property="name" label="姓名" width="200"></el-table-column> |
|
|
<el-table-column property="address" label="地址"></el-table-column> --> |
|
|
<el-table-column property="address" label="地址"></el-table-column> --> |
|
|
</el-table> |
|
|
</el-table> |
|
@ -383,7 +402,7 @@ export default { |
|
|
.cell-type { |
|
|
.cell-type { |
|
|
padding-left: 10px; |
|
|
padding-left: 10px; |
|
|
font-size: 14px; |
|
|
font-size: 14px; |
|
|
color: #409EFF; |
|
|
color: #409eff; |
|
|
cursor: pointer; |
|
|
cursor: pointer; |
|
|
} |
|
|
} |
|
|
.cell-wrapper { |
|
|
.cell-wrapper { |
|
|