Browse Source

Merge branch 'luckysheet' into test

test
mk 5 months ago
parent
commit
2952257c31
  1. 16
      src/views/modules/base/smartExcel/cpts/excel-upload-data.vue
  2. 5
      src/views/modules/base/smartExcel/cpts/export-process-two.vue
  3. 410
      src/views/modules/shequzhili/analysis/index.vue

16
src/views/modules/base/smartExcel/cpts/excel-upload-data.vue

@ -2,20 +2,20 @@
<div class="m-detail-main" v-loading="dataListLoading">
<div class="steps1">
<el-steps :active="progress">
<el-step :class="[this.operatorName == null ? 'showNum' : '']" title="选择数据源"
<el-step :class="[this.operatorName == null ? 'showNum' : '']" :title="`${pageType === 'excel'?'选择数据源':'填写表格信息'}`"
:description="`${this.operatorName}(${this.createdTime})`"></el-step>
<el-step title="智能填表设置" :class="[this.progress == 2 || this.progress == 3 ? '' : 'showNum']"></el-step>
<el-step title="数据填充范围"></el-step>
<el-step :title="`${pageType === 'excel'?'智能填表设置':'设置表格字段'}`" :class="[this.progress == 2 || this.progress == 3 ? '' : 'showNum']"></el-step>
<el-step :title="`${pageType === 'excel'?'数据填充范围':'确定数据范围'}`"></el-step>
</el-steps>
</div>
<div v-show="progress == 1" style="width: 80%; margin-top: 10px; font-size: 16px;">
<el-form :model="formData" :rules="rules" ref="ref_form" :label-width="'120px'" v-if="pageType === 'report'">
<el-form-item label="标题名称" prop="reportName">
<el-input v-model.trim="formData.reportName" size="small" clearable style=" height: 40px;" placeholder="请输入">
<el-form :model="formData" :rules="rules" ref="ref_form" :label-width="'120px'" v-if="pageType === 'report'" style="margin: 50px 0 ;">
<el-form-item label="表格名称" prop="reportName">
<el-input v-model.trim="formData.reportName" size="small" clearable style=" height: 40px;" placeholder="请输入表格名称,5-30字符">
</el-input>
</el-form-item>
</el-form>
<div v-if="pageType === 'report'" style="margin-left: 35px;">选择数据源</div>
<div class="flex" style="margin: 60px 0;">
<div @click="onClickTab(item)" class="flex"
style=" cursor: pointer; position: relative;display: flex; flex-direction: column; align-items: center; justify-content: center; width: 155px;height: 90px;background: #F1F4FA;border-radius: 4px; margin-left: 60px;"
@ -139,7 +139,7 @@ export default {
// },
],
rules: {
reportName: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }]
reportName: [{ required: true, message: '请输入表格名称,5-30字符', trigger: 'blur',min:5,max:30}]
},
formData: {
columnMateJson: '',

5
src/views/modules/base/smartExcel/cpts/export-process-two.vue

@ -14,7 +14,7 @@
<div class="right-header">
<div class="title">已选字段</div>
</div>
<div class="h80 scroll-h">
<div class="h80">
<el-collapse v-model.trim="activeCollapse" id="collapsWrs">
<el-collapse-item v-for="item in rightList" :key="item.id" :title="item.label" :name="item.id"
class="col-h">
@ -164,7 +164,7 @@ export default {
.diy-wr {
display: flex;
width: 100%;
margin-top: 20px;
margin-top: 50px;
.scroll-h{
height: 450px;
overflow-y: scroll;
@ -175,6 +175,7 @@ export default {
.check-boxwr {
overflow: auto;
margin-left: 10px;
}
}

410
src/views/modules/shequzhili/analysis/index.vue

@ -27,13 +27,13 @@
</div>
<div class="m-table">
<div style="margin:30px 0">
<h1 style="font-size: 24px; font-weight: bold;"> 事件统计 </h1>
<h1 style="font-size: 24px; font-weight: bold;"> 镇街办件情况总览 </h1>
</div>
<div class="div_room">
<div class="item2">
<img src="./img/responsivity.png" />
<div class="item2_div">
<span class="div_span1">{{ analysisList.responseRate}}%</span>
<span class="div_span1">98%</span>
<div style="display: flex; align-items: center;justify-content:center;">
<span class="div_span2">响应率</span>
<img style="width: 10px;height: 10px;margin-top: 10px;margin-left: 5px;" src="./img/describe.png">
@ -43,7 +43,7 @@
<div class="item2">
<img src="./img/ontimeCompletionRate.png" />
<div class="item2_div">
<span class="div_span1">{{ analysisList.returnRate? analysisList.returnRate:0}}%</span>
<span class="div_span1">98%</span>
<div style="display: flex; align-items: center;justify-content:center;">
<span class="div_span2">办结率</span>
<img style="width: 10px;height: 10px;margin-top: 10px;margin-left: 5px;" src="./img/describe.png">
@ -53,7 +53,7 @@
<div class="item2">
<img src="./img/finalResolutionRate.png" />
<div class="item2_div">
<span class="div_span1">{{ analysisList.resolveRate? analysisList.resolveRate:0}}%</span>
<span class="div_span1">98%</span>
<div style="display: flex; align-items: center;justify-content:center;">
<span class="div_span2">最终解决率</span>
<img style="width: 10px;height: 10px;margin-top: 10px;margin-left: 5px;" src="./img/describe.png">
@ -63,7 +63,7 @@
<div class="item2">
<img src="./img/finalSatisfactionRate.png" />
<div class="item2_div">
<span class="div_span1">{{ analysisList.satisfiedRate? analysisList.satisfiedRate:0}}%</span>
<span class="div_span1">98%</span>
<div style="display: flex; align-items: center;justify-content:center;">
<span class="div_span2">最终满意率</span>
<img style="width: 10px;height: 10px;margin-top: 10px;margin-left: 5px;" src="./img/describe.png">
@ -74,13 +74,12 @@
</div>
<div class="div_room">
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">派件/派件</div>
<div>派件/派件</div>
<div class="item" @click="onEventNum()">
<div class="item_category">
<img src="./img/eventSumNum.png" alt />
<div class="row_left">{{ analysisList.total }}</div>
<div class="item_content">
收件数
<div class="item_content">收件数
<el-tooltip class="item_content" effect="dark" content="按导入事件的接收时间在统计时段内的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
</el-tooltip>
@ -95,7 +94,7 @@
</div>
</div>
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">办理</div>
<div>办理</div>
<div class="item" @click="onEventNum()" style="background-color: #f2fffb;">
<div class="item_category">
<img src="./img/perp.png" alt />
@ -114,7 +113,7 @@
</div>
</div>
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">办结</div>
<div>办结</div>
<div class="item" @click="onEventNum()" style="background-color: #f4fdff; ">
<div class="item_category">
<img src="./img/completed.png" alt />
@ -128,12 +127,12 @@
content="在统计时段内所有“未办结”状态的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
</el-tooltip></div> -->
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.inTimeResolveNum?analysisList.inTimeResolveNum:"0"}}</div>
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.total }}</div>
<div class="item_content">按时办结数<el-tooltip class="item_content" effect="dark"
content="在统计时段内进行“办结”操作且未超过(部门)办结时限的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
</el-tooltip></div>
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.total?analysisList.total:"0"}}</div>
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.total }}</div>
<div class="item_content">超期办结数<el-tooltip class="item_content" effect="dark"
content="在统计时段内进行“办结”操作但已超过(部门)办结时限的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
@ -142,11 +141,11 @@
</div>
</div>
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">退件/不合规申请件</div>
<div>退件/不合规申请件</div>
<div class="item" @click="onEventNum()" style="background-color:#fffdf0;">
<div class="item_category">
<img src="./img/returnTheItem.png" alt />
<div class="row_left">{{ analysisList.returnTotal }}</div>
<div class="row_left">{{ analysisList.total }}</div>
<div class="item_content">退件数<el-tooltip class="item_content" effect="dark" content="在统计时段内进行“退件”操作的事件数"
placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
@ -156,7 +155,7 @@
content="在统计时段内进行“退件”操作且未超过退件时限的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
</el-tooltip></div>
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.overTimeTotal }}</div>
<div class="row_left" style="color:#FF7035 ;">{{ analysisList.total }}</div>
<div class="item_content">超期退件数<el-tooltip class="item_content" effect="dark"
content="在统计时段内进行“退件”操作但已超过退件时限的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
@ -172,16 +171,16 @@
</div>
</div>
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center;">
<div style="font-size: 16px; margin-top: 20px">退件/不合规申请件</div>
<div>退件/不合规申请件</div>
<div class="item" @click="onEventNum('3')">
<div class="item_category">
<img src="./img/acttive.png" alt />
<div class="row_left">{{ analysisList.tackleWarehouseTotal }}</div>
<div class="row_left">{{ analysisList.total }}</div>
<div class="item_content">攻坚事件数<el-tooltip class="item_content" effect="dark"
content="在统计时段内进行“派件”操作且符合攻坚事件条件的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
</el-tooltip></div>
<div class="row_left">{{ analysisList.sensitiveTotal }}</div>
<div class="row_left">{{ analysisList.total }}</div>
<div class="item_content">敏感渠道来源件数<el-tooltip class="item_content" effect="dark"
content="在统计时段内进行“派件”操作且符合敏感渠道来源的事件数" placement="top">
<img class="img_describe" src="./img/describe1.png" alt="描述图标" />
@ -197,11 +196,11 @@
</div>
<el-table :data="tableList" style="width: 100%;margin-bottom: 20px;" row-key="id" border
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
<el-table-column prop="categoryName" label="事件类型" :show-overflow-tooltip="true">
<el-table-column prop="categoryName" label="事件类型">
</el-table-column>
<el-table-column prop="eventCount" label="事件数量" :show-overflow-tooltip="true">
<el-table-column prop="eventCount" label="事件数量">
</el-table-column>
<el-table-column prop="proportion" label="同级占比" :show-overflow-tooltip="true">
<el-table-column prop="proportion" label="同级占比">
<template slot-scope="scope">
{{ scope.row.proportion }}%
</template>
@ -213,7 +212,7 @@
<div>
<echartsAffairs></echartsAffairs>
</div>
<div style="display: flex;margin-top: 20px" >
<div style="display: flex">
<div class="f-align_item " :class="{ active: selectedIndex === index }" v-for="(item, index) in titleList"
:key="item.value" @click="selectItem(index)">
<div style="font-size: 20px; "> {{ item.label }} </div>
@ -224,18 +223,18 @@
<el-table :data="departmentList" height="300" border class="m-table-item" style="width: 100%">
<el-table-column fixed="left" prop="assignOrgName" align="center" label="部门科室"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="total" align="center" label="件数" :show-overflow-tooltip="true">
<el-table-column fixed="left" prop="total" align="center" label="件数" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="totalRate" align="center" label="占比" :show-overflow-tooltip="true">
<el-table-column fixed="left" prop="totalRate" align="center" label="占比" :show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.totalRate }}%
</template>
</el-table-column>
<el-table-column prop="unresolveTotal" align="center" label="未办结数"
<el-table-column prop="unresolveTotal" align="center" label="派件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="illegalConnectRate" align="center" label="联系当事人超期数"
<el-table-column prop="address" align="center" label="联系当事人(初访)件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="illegalResolveTotal" align="center" label="办理超期数"
<el-table-column prop="address" align="center" label="办理中件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="address" align="center" label="办结件数"
:show-overflow-tooltip="true"></el-table-column>
@ -264,35 +263,65 @@
</el-table-column>
<el-table-column fixed="right" prop="totalRate" align="center" label="解决率" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column fixed="right" prop="satisfiedRate" align="center" label="满意率" :show-overflow-tooltip="true">
<el-table-column fixed="right" prop="totalRate" align="center" label="满意率" :show-overflow-tooltip="true">
</el-table-column>
</el-table>
</div>
<div style="display: flex;width: 49%;flex-direction:column;">
<h1 style="font-size: 24px; font-weight: bold; margin: 20px 0;"> 社区工单量统计 </h1>
<el-table :data="communityList" height="300" border class="m-table-item" style="">
<el-table-column prop="assignOrgName" align="center" label="社区"
<div v-if="selectedIndex === 1" style="">
<el-table :data="communityList" height="300" border class="m-table-item" style="width: 100%">
<el-table-column fixed="left" prop="assignOrgName" align="center" label="社区"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="total" align="center" label="件数" :show-overflow-tooltip="true">
<el-table-column fixed="left" prop="total" align="center" label="收件数" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="totalRate" align="center" label="占比" :show-overflow-tooltip="true">
<el-table-column fixed="left" prop="totalRate" align="center" label="占比" :show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.totalRate }}%
</template>
</el-table-column>
<el-table-column prop="unresolveTotal" align="center" label="未办结数"
<el-table-column prop="unresolveTotal" align="center" label="派件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="address" align="center" label="联系当事人(初访)件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="address" align="center" label="办理中件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="address" align="center" label="办结件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="address" align="center" label="未办结件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="address" align="center" label="按时办结数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="address" align="center" label="超期办结数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="address" align="center" label="退件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="illegalConnectRate" align="center" label="正常退件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="illegalResolveTotal" align="center" label="超期退件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="illegalResolveTotal" align="center" label="不合规申请件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="illegalConnectRate" align="center" label="联系当事人超期数"
<el-table-column prop="illegalResolveTotal" align="center" label="攻坚事件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="illegalResolveTotal" align="center" label="办理超期数"
<el-table-column prop="illegalResolveTotal" align="center" label="敏感渠道来源件数"
:show-overflow-tooltip="true"></el-table-column>
<el-table-column fixed="right" prop="total" align="center" label="响应率" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column fixed="right" prop="totalRate" align="center" label="按时办结率"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column fixed="right" prop="totalRate" align="center" label="解决率" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column fixed="right" prop="totalRate" align="center" label="满意率" :show-overflow-tooltip="true">
</el-table-column>
</el-table>
</div>
</div>
<div style="margin: 20px;">
<div class="chart-container">
<div ref="chart" class="chart"></div>
</div>
</div>
<div>
<h1 style="font-size: 24px; font-weight: bold;"> 存在主要问题 </h1>
@ -309,7 +338,7 @@
</el-table-column>
<el-table-column prop="content" align="center" label="操作" fixed="right" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="clickAddressData(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="clickAddressData(row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
@ -318,9 +347,6 @@
<h2 style="font-size: 20px; font-weight: bold;"> 同一人员重复投诉</h2>
<el-table :data="mobileData" height="300" border class="m-table-item" style="">
<el-table-column label="序号" fixed="left" type="index" align="center" width="50" />
<el-table-column prop="name" align="center" label="联系人" :show-overflow-tooltip="true">
<template slot-scope="scope">{{ scope.row.name? scope.row.name:"匿名"}}</template>
</el-table-column>
<el-table-column prop="mobile" align="center" label="联系方式" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button v-if="scope.row.resiId !== null && scope.row.resiId !== ''" @click="handleLook(scope.row)"
@ -340,7 +366,7 @@
</el-table-column>
<el-table-column prop="content" align="center" label="操作" fixed="right" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="clickMobileData(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="clickMobileData(row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
@ -363,7 +389,7 @@
</el-table-column>
<el-table-column prop="content" align="center" label="操作" fixed="right" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="clickAddressMobileData(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="clickAddressMobileData(row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
@ -382,7 +408,7 @@
</el-table-column>
<el-table-column prop="content" align="center" label="操作" fixed="right" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="clickAwoFlagData(scope.row)" type="text" size="small">查看</el-button>
<el-button @click="clickAwoFlagData(row)" type="text" size="small">查看</el-button>
</template>
</el-table-column>
</el-table>
@ -433,7 +459,7 @@
<add-complain-list ref="ref_area_no_same_list" @clickAwoFlagData="clickAwoFlagData"></add-complain-list>
</el-dialog>
<el-dialog :title="`${$store.state.user.agencyName}12345政务热线诉求总结`" :visible.sync="summarizeDialog" width="50%"
v-if="summarizeDialog" center>
v-if="summarizeDialog" @close="handleCloseSummarizeDialog" center>
<div class="chatContent">
<mark-down></mark-down>
</div>
@ -447,19 +473,29 @@ import eventInfo from "../../shequzhili/event/cpts/event-info.vue";
import { requestPost, requestGet } from "@/js/dai/request";
import nextTick from "dai-js/tools/nextTick";
import { mapGetters } from "vuex";
import axios from "axios";
import * as echarts from "echarts";
import util from "@js/util.js";
import TableRow from './TableRow.vue';
import mobileList from "./mobileList";
import areaNoSameList from "./areaNoSameList";
import addComplainList from "./addComplainList";
import echartsAffairs from "./cpts/echarts-affairs.vue";
import markDown from "./markDown.vue";
export default {
components: {TableRow,formList,eventInfo,areaSameList,mobileList,areaNoSameList,addComplainList,markDown},
components: { TableRow, formList, eventInfo, areaSameList, mobileList, areaNoSameList, addComplainList, echartsAffairs ,markDown},
data() {
return {
selectedIndex: 0,
titleList: [
{
value: 0,
label: '部门科室办件情况'
},
{
value: 1,
label: '社区办件情况'
},
],
starttime: "",
endtime: "",
level: 1,
@ -471,15 +507,12 @@ export default {
queryDateStart: "",
queryDateEnd: "",
},
agencyLevel: '',
orgData: {
id: "",
level: "agency",
},
analysisList: {},
//
report: {
streetName: "",
@ -488,45 +521,34 @@ export default {
departHotline: "",
hotDemand: "",
},
addressData:[],
addressData: [
],
mobileData: [],
addressMobileData: [],
addComplainData: [],
eventCategorys: [],
categoryPie: {},
communityChart: {},
departChart: {},
hotlineChart: {},
categoryCountShow: false,
communityCountShow: false,
departCountShow: false,
subCategoryCountShow: false,
showFormList: false,
showFormDetail: false,
showAreaSameEventList: false,
showMobileEventList: false,
showAreaNoSameEventList: false,
showAddEventList: false,
recId: "",
departId: "",
communityId: "",
eventId: "",
eventDetailData: {},
pageType: "info",
mergeObj: {},
mergeArr: ['address'],
categoryPieOption: {
tooltip: {
trigger: 'item'
@ -783,6 +805,7 @@ export default {
]
},
summarizeDialog: false,
displayedText: '',
};
},
@ -793,9 +816,10 @@ export default {
return this.$store.state.inIframe ? h : _h;
},
...mapGetters(["clientHeight", "iframeHeight"]),
},
watch: {},
async mounted() {
mounted() {
this.user = this.$store.state.user;
this.agencyId = this.user.agencyId;
this.getLastMonthRange()
@ -803,12 +827,25 @@ export default {
this.agencyLevel = localStorage.getItem("level", this.orgData.level);
this.getTableData();
// this.initEcharts();
await this.EventCategoryAnalysis();
await this.EventCate();
this.EventCategoryAnalysis();
this.EventCate();
this.getCategoryTree()
this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org");
},
methods: {
regexChat(str) {
const regex = /"content":"(.*?)"/g;
const matches = [];
let match;
while ((match = regex.exec(str)) !== null) {
const formattedContent = match[1].replace(/\\n/g, '\\\\n');
console.log(formattedContent,'formattedContent');
matches.push(formattedContent);
}
const mergedContent = matches.join('');
return mergedContent;
},
handelClickShowSummarize() {
this.summarizeDialog = true;
},
@ -817,16 +854,36 @@ export default {
this.displayedText = '';
},
initChart(url) {
this.$http.get(url).then(({ data: { data } }) => {
const chartDom = this.$refs.chart;
const myChart = echarts.init(chartDom);
const departmentNames = this.selectedIndex === 0 ? this.departmentList : this.communityList;
let xData = departmentNames.map(item => item.assignOrgName)
let responseRate = departmentNames.map(item => item.responseRate)
let assignOrgName = departmentNames.map(item => item.assignOrgName)
console.log(assignOrgName,"dsfkljldsk");
let returnRate = departmentNames.map(item => item.returnRate)
let resolveRate = departmentNames.map(item => item.resolveRate)
let satisfiedRate = departmentNames.map(item => item.satisfiedRate)
const departmentNames = [
{ name: "部门A1", xiangying: "87.43", banjie: "64.22", zuizhong: "54", manyi: "200" },
{ name: "部门A2", xiangying: "45.31", banjie: "85.49", zuizhong: "78", manyi: "180" },
{ name: "部门A3", xiangying: "92.10", banjie: "48.56", zuizhong: "80", manyi: "250" },
{ name: "部门A4", xiangying: "76.32", banjie: "92.78", zuizhong: "85", manyi: "190" },
{ name: "部门A5", xiangying: "54.89", banjie: "77.34", zuizhong: "93", manyi: "210" },
{ name: "部门A6", xiangying: "80.45", banjie: "61.23", zuizhong: "88", manyi: "170" },
{ name: "部门A7", xiangying: "67.21", banjie: "90.12", zuizhong: "95", manyi: "220" },
{ name: "部门A8", xiangying: "48.76", banjie: "85.45", zuizhong: "78", manyi: "160" },
{ name: "部门A9", xiangying: "59.88", banjie: "73.67", zuizhong: "82", manyi: "230" },
{ name: "部门A10", xiangying: "88.34", banjie: "68.4", zuizhong: "89", manyi: "240" },
{ name: "部门A11", xiangying: "71.90", banjie: "80.1", zuizhong: "77", manyi: "195" },
{ name: "部门A12", xiangying: "64.78", banjie: "94.0", zuizhong: "92", manyi: "260" },
{ name: "部门A13", xiangying: "90.12", banjie: "79.3", zuizhong: "85", manyi: "280" },
{ name: "部门A14", xiangying: "53.34", banjie: "88.67", zuizhong: "76", manyi: "275" },
{ name: "部门A15", xiangying: "75.45", banjie: "69.87", zuizhong: "82", manyi: "245" },
{ name: "部门A16", xiangying: "66.78", banjie: "71.45", zuizhong: "79", manyi: "210" },
{ name: "部门A17", xiangying: "82.34", banjie: "95.23", zuizhong: "91", manyi: "265" },
{ name: "部门A18", xiangying: "77.98", banjie: "84.65", zuizhong: "89", manyi: "255" },
{ name: "部门A19", xiangying: "58.67", banjie: "75.34", zuizhong: "81", manyi: "190" },
{ name: "部门A20", xiangying: "63.22", banjie: "72.34", zuizhong: "88", manyi: "285" }
];
let xData = departmentNames.map(item => item.name)
let xiangying = departmentNames.map(item => item.xiangying)
let banjie = departmentNames.map(item => item.banjie)
let zuizhong = departmentNames.map(item => item.zuizhong)
let manyi = departmentNames.map(item => item.manyi)
const option = {
tooltip: { trigger: "axis" },
legend: {
@ -844,11 +901,11 @@ export default {
},
series: [
{
name: "响应率", type: "bar", barWidth: 20, data: responseRate, color: "#3B82F6"
name: "响应率", type: "bar", barWidth: 20, data: xiangying, color: "#3B82F6"
},
{ name: "按时办结率", type: "bar", barWidth: 20, data: returnRate, color: "#22C55E" },
{ name: "最终解决率", type: "bar", barWidth: 20, data: resolveRate, color: "#FACC15" },
{ name: "最终满意率", type: "bar", barWidth: 20, data: satisfiedRate, color: "#FB923C" },
{ name: "按时办结率", type: "bar", barWidth: 20, data: banjie, color: "#22C55E" },
{ name: "最终解决率", type: "bar", barWidth: 20, data: zuizhong, color: "#FACC15" },
{ name: "最终满意率", type: "bar", barWidth: 20, data: manyi, color: "#FB923C" },
],
grid: { left: "3%", right: "4%", bottom: "10%", containLabel: true },
dataZoom: [
@ -858,6 +915,9 @@ export default {
show: true,
start: 0, //
end: 50, // 50%
// height:normalFontSize(12),
// width:normalFontSize(112),
// xAxisIndex: [0], // X
handleSize: 0, //
backgroundColor: "transparent", //
fillerColor: "transparent", //
@ -877,6 +937,7 @@ export default {
};
myChart.setOption(option);
window.addEventListener("resize", () => myChart.resize());
});
},
@ -886,9 +947,9 @@ export default {
selectItem(index) {
this.selectedIndex = index; //
if (index === 0) {
this.initChart();
this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org");
} else {
this.initChart();
this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org");
}
},
onEventNum(data) {
@ -916,7 +977,6 @@ export default {
},
initEcharts() {
if (this.categoryCountShow) {
this.categoryPie = echarts.init(document.getElementById("categoryPie"));
this.categoryPie.setOption(this.categoryPieOption);
@ -1074,7 +1134,8 @@ export default {
if (this.formData.queryDateStart && this.formData.queryDateEnd) {
this.starttime = this.formData.queryDateStart,
this.endtime = this.formData.queryDateEnd
}else{{
} else {
{
this.getLastMonthRange()
}
}
@ -1088,8 +1149,6 @@ export default {
if (code === 0) {
this.tableList = data
// this.tableList=this.flattenTree(data);
console.log(this.tableList);
console.log(this.tableList,"lksdjfklj s");
} else {
this.$message.error(msg);
}
@ -1127,7 +1186,8 @@ export default {
if (this.formData.queryDateStart && this.formData.queryDateEnd) {
this.starttime = this.formData.queryDateStart,
this.endtime = this.formData.queryDateEnd
}else{{
} else {
{
this.getLastMonthRange()
}
}
@ -1138,6 +1198,7 @@ export default {
}
const { data, code, msg } = await requestPost(url, param);
if (code === 0) {
data.map(item => {
if (item.assignOrgType == "duty") {
this.departmentList.push(item)
@ -1145,7 +1206,6 @@ export default {
this.communityList.push(item)
}
})
this.initChart();
} else {
this.$message.error(msg);
}
@ -1195,7 +1255,8 @@ export default {
if (this.formData.queryDateStart && this.formData.queryDateEnd) {
this.starttime = this.formData.queryDateStart,
this.endtime = this.formData.queryDateEnd
}else{{
} else {
{
this.getLastMonthRange()
}
}
@ -1206,7 +1267,6 @@ export default {
}
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
console.log(data);
this.analysisList = data[0];
console.log(this.analysisList);
} else {
@ -1371,7 +1431,6 @@ export default {
},
clickAddressData(row, column) {
console.log(row,"sdfkjlsdfkljdsf");
this.hiddenAllDialog();
this.showFormList = true;
this.recId = row.categoryId;
@ -1469,9 +1528,29 @@ export default {
return [0, 0];
}
}
}
},
getLastWeekDateRange() {
const today = new Date();
const dayOfWeek = today.getDay();
const startOfLastWeek = new Date(today);
const endOfLastWeek = new Date(today);
startOfLastWeek.setDate(today.getDate() - dayOfWeek - 6);
endOfLastWeek.setDate(today.getDate() - dayOfWeek);
const formatDate = (date) => {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`;
};
return {
queryDateStart: formatDate(startOfLastWeek),
queryDateEnd: formatDate(endOfLastWeek),
};
},
},
props: {},
};
</script>
@ -1480,37 +1559,14 @@ export default {
@import "@/assets/scss/modules/management/list-main.scss";
@import "@/assets/scss/modules/shequzhili/event-info.scss";
@import "./css/index.scss";
.header {
background: url("@/assets/img/AI/渐变背景.png") no-repeat;
height: 68px;
background-size: 100% 100%;
/* 固定背景图片的宽度和高度 */
display: flex;
align-items: center;
padding-left: 30px;
margin: 10px 10px 0;
div {
background: url("@/assets/img/AI/文字背景.png") no-repeat;
height: 34px;
line-height: 30px;
background-size: 100% 100%;
/* 固定背景图片的宽度和高度 */
letter-spacing: 2px;
}
img {
width: 55px;
height: 55px;
margin-right: 10px;
}
}
table {
width: 100%;
border-collapse: collapse;
}
th, td {
th,
td {
width: 40px;
height: 20px;
border: 1px solid #ccc;
@ -1553,40 +1609,128 @@ thead {
}
.centered-title {
text-align: center; /* 将文本水平居中对齐 */
font-size: 28px; /* 设置标题字体大小 */
font-weight: bold; /* 设置标题加粗 */
color: #333; /* 设置标题颜色 */
margin-bottom: 20px; /* 设置标题与下方内容的间距 */
text-align: center;
/* 将文本水平居中对齐 */
font-size: 28px;
/* 设置标题字体大小 */
font-weight: bold;
/* 设置标题加粗 */
color: #333;
/* 设置标题颜色 */
margin-bottom: 20px;
/* 设置标题与下方内容的间距 */
}
.no-data {
display: flex;
justify-content: center;
align-items: center;
height: 200px; /* 调整高度以适应你的需要 */
color: #888; /* 灰色字体颜色 */
font-size: 20px; /* 字体大小 */
height: 200px;
/* 调整高度以适应你的需要 */
color: #888;
/* 灰色字体颜色 */
font-size: 20px;
/* 字体大小 */
}
.arrow-container {
position: relative;
width: 100px; /* 调整箭头容器的宽度 */
height: 100px; /* 调整箭头容器的高度 */
width: 100px;
/* 调整箭头容器的宽度 */
height: 100px;
/* 调整箭头容器的高度 */
}
.header {
background: url("@/assets/img/AI/渐变背景.png") no-repeat;
height: 68px;
background-size: 100% 100%;
/* 固定背景图片的宽度和高度 */
display: flex;
align-items: center;
padding-left: 30px;
margin: 10px 10px 0;
div {
background: url("@/assets/img/AI/文字背景.png") no-repeat;
height: 34px;
line-height: 30px;
background-size: 100% 100%;
/* 固定背景图片的宽度和高度 */
letter-spacing: 2px;
}
img {
width: 55px;
height: 55px;
margin-right: 10px;
}
}
.chatContent {
width: 100%;
/* 限制最大宽度,确保换行 */
word-wrap: break-word;
// /* */
overflow-wrap: break-word;
white-space: pre-wrap;
/* 保持空格和换行 */
max-height: 480px;
overflow-y: scroll;
}
.flex {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
}
.arrow {
width: 0;
height: 0;
border-style: solid;
border-width: 20px 0 20px 34.6px; /* 通过调整这里的数值可以改变箭头的大小 */
border-color: transparent transparent transparent #007bff; /* 改变箭头颜色 */
border-width: 20px 0 20px 34.6px;
/* 通过调整这里的数值可以改变箭头的大小 */
border-color: transparent transparent transparent #007bff;
/* 改变箭头颜色 */
position: absolute;
top: 50%;
transform: translateY(-50%);
}
</style>
.f-align_item {
cursor: pointer;
font-size: 16px;
margin-right: 20px;
line-height: 32px;
}
.f-align_item.active {
line-height: 32px;
color: #427ee0;
/* 点击时的文字颜色 */
font-weight: bold;
border-bottom: 2px solid #427ee0;
margin-right: 20px
/* 点击时的下划线 */
}
.f-align_item span {
color: black;
/* 默认文字颜色 */
}
.chart-container {
width: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.chart {
width: 100%;
height: 350px;
}
</style>
Loading…
Cancel
Save