From 97e6d9a91d2c456319e803c79e72c5b4605715ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=88=98=E7=AB=8B=E6=A0=87?= <2658037827@qq.com> Date: Fri, 22 Sep 2023 15:43:51 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=BB=A1=E6=84=8F?= =?UTF-8?q?=E5=BA=A6=E5=AD=90=E9=A1=B5=E9=9D=A2=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/jwTool.js | 4 +- .../satisfactionEval/dissatisfied/detail.vue | 71 +++++-- .../satisfactionEval/dissatisfied/index.vue | 197 +++++++++++++----- .../dissatisfiedPersonnel/index.vue | 103 +++++---- .../modules/PersonnelPortrait/index.vue | 12 +- .../modules/PotentialPeople/index.vue | 6 +- .../potentialPeople/index.vue | 98 ++++++--- .../potentialPeople/sjwjj.vue | 101 +++------ .../potentialPeople/xqwmz.vue | 102 +++------ .../potentialPeople/yxwxfw.vue | 104 +++------ 10 files changed, 427 insertions(+), 371 deletions(-) diff --git a/src/utils/jwTool.js b/src/utils/jwTool.js index 5e797cf78..058e03e1f 100644 --- a/src/utils/jwTool.js +++ b/src/utils/jwTool.js @@ -3,7 +3,9 @@ import Vue from "vue"; const paramsFormat = function (params) { let strArray = [] for(let key in params) { - strArray.push(key+'='+params[key]) + if(params[key]) { + strArray.push(key+'='+params[key]) + } } return strArray.join('&') } diff --git a/src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue b/src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue index 6bd2b2eff..56e83fc80 100644 --- a/src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue +++ b/src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue @@ -15,15 +15,15 @@
事项详情

- 小区垃圾急需要处理,垃圾桶旁边垃圾堆积严重,现在已经影响居民的日常生活和出行,望有关部门能够重视。 + {{unsatisfiedMattersModel.reason}}

@@ -33,31 +33,31 @@
12345投诉
- 39 + {{unsatisfiedHisCount.satisfaction_12345}}
省满意度调查
- 102 + {{unsatisfiedHisCount.satisfaction_province}}
社区满意度自评
- 273 + {{unsatisfiedHisCount.satisfaction_community}}
回访记录
-
-
杨建国(网格长)
-
2023-08-17
-
上门回访
+
+
{{item.followUpUser}}({{item.roleName}})
+
{{item.followUpDate}}
+
{{item.followUpWay}}
@@ -75,15 +75,42 @@ export default { components: {Title}, data() { return { - dialogVisible: false + dialogVisible: false, + unsatisfiedMattersModel: '', + unsatisfiedHisCount: '', + followUpRecordDetails: '', + satisfactionSourceOptions: [{ + value: 'satisfaction_12345', + label: '12345投诉', + color: '#FFB73C', + }, { + value: 'satisfaction_province', + label: '省满意度调查', + color: '#64C1FF' + }, { + value: 'satisfaction_community', + label: '社区满意度自查', + color: '#08EBAE' + }] }; }, methods: { handleClose(done) { this.dialogVisible = false }, - open() { + open(id) { this.dialogVisible = true + this.getDetail(id) + }, + getDetail(id) { + this.$http.post('/governance/satisfactionDetailList/getUnsatisfiedMattersDetailInfo', id).then(({data: {data}}) => { + this.unsatisfiedMattersModel = data.unsatisfiedMattersModel + this.unsatisfiedHisCount = data.unsatisfiedHisCount + this.followUpRecordDetails = data.followUpRecordDetails + if(this.unsatisfiedMattersModel.satisfactionSource) { + this.unsatisfiedMattersModel.satisfactionSource = satisfactionSourceOptions.filter(item => item.value === this.unsatisfiedMattersModel.satisfactionSource)[0].label + } + }) } } } @@ -137,14 +164,17 @@ export default { line-height: 32px; margin: 0 0 10px; } + ul { margin: 0; padding: 0; list-style-type: none; } + li { color: #FFFFFF; line-height: 28px; + span { color: #9CB4D3 } @@ -156,16 +186,19 @@ export default { display: flex; justify-content: space-between; margin-bottom: 30px; + .text { font-size: 14px; font-weight: 400; color: #A3B9DA; margin-bottom: 17px; } + .num { font-size: 14px; font-weight: 400; color: #A3B9DA; + span { font-size: 32px; font-weight: bold; @@ -173,17 +206,22 @@ export default { } } } + .orange { color: #FFB73C; } + .green { color: #08EBAE; } + .light { color: #7FCEFF; } + .log { padding-left: 26px; + .log-item { display: flex; justify-content: space-between; @@ -191,6 +229,7 @@ export default { color: #fff; background: url("@/assets/images/manyidu/hf_line.png") bottom center no-repeat; padding: 9px 0; + .name { flex: 0 0 33.33333%; } diff --git a/src/views/dataBoard/satisfactionEval/dissatisfied/index.vue b/src/views/dataBoard/satisfactionEval/dissatisfied/index.vue index bb8e51eeb..3ecbdd4ce 100644 --- a/src/views/dataBoard/satisfactionEval/dissatisfied/index.vue +++ b/src/views/dataBoard/satisfactionEval/dissatisfied/index.vue @@ -3,45 +3,57 @@
+ + - + - + - + - - - - - - - 查询 + + 查询
@@ -53,71 +65,90 @@ width="80"/> - + - + + - + - + @@ -127,11 +158,11 @@ - +
@@ -146,15 +177,16 @@ export default { data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + month: this.$moment().format('YYYY-MM'), + agencyId: "", + satisfactionSource: "", + satisfactionCategory: "", + name: "", + mobile: "", + pageNo: 1, pageSize: 10, }, + id: {}, total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', @@ -163,18 +195,80 @@ export default { path: '', name: '不满意事项列表' }], - monthOptions: new Array(12).fill(0).map((_, index) => { - return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} - }), - list: [{}, {}, {}] + orgOptions: [], + satisfactionCategoryOptions: [], + list: [], + satisfactionSourceOptions: [{ + value: 'satisfaction_12345', + label: '12345投诉', + color: '#FFB73C', + }, { + value: 'satisfaction_province', + label: '省满意度调查', + color: '#64C1FF' + }, { + value: 'satisfaction_community', + label: '社区满意度自查', + color: '#08EBAE' + }] } }, + mounted() { + this.getOrg() + }, methods: { + getSatisfactionCategoryOptions() { + this.queryParams.satisfactionCategory = '' + if(!this.queryParams.satisfactionSource) { + this.satisfactionCategoryOptions = [] + return + } + this.$http.get('/governance/satisfactionDetailList/getUnsatisfiedCategory?satisfactionSource=' + this.queryParams.satisfactionSource).then(({data: {data}}) => { + this.satisfactionCategoryOptions = data.map(item => { + return { + label: item.categoryName, + value: item.categoryCode + } + }) + }) + + }, + satisfactionSourceFormat(val) { + let satisfactionSource = this.satisfactionSourceOptions.filter(item => item.value === val)[0] + return satisfactionSource ? satisfactionSource : '' + }, + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, getList() { + this.$http.get('/governance/satisfactionDetailList/getUnsatisfiedMattersList?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.total = data.total + this.list = data.list + }) + }, + getOrg() { + let params = { + orgId: this.$store.state.chooseArea.chooseName.orgId, + level: this.$store.state.chooseArea.chooseName.level + } + this.$http.post(`/gov/org/agency/maporg`, params).then(async ({data: {data}}) => { + this.queryParams.agencyId = this.$store.state.chooseArea.chooseName.orgId + let parent = {value: data.id, label: data.name} + this.orgOptions = [parent, ...data.children.map(item => { + return { + value: item.id, + label: item.name + } + })] + this.getList() + }) }, - handleView() { - this.$refs.detail.open() + handleView(id) { + console.log(id) + this.id = id + this.$refs.detail.open(id) } } } @@ -204,18 +298,23 @@ export default { height: 32px; } } + .orange { color: #FFB73C; } + .blue { color: #64C1FF; } + .green { color: #08EBAE; } + .light { color: #3CF5FF; } + .red { color: #F95619; } diff --git a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue index b68467cd3..66dcb75f0 100644 --- a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue +++ b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue @@ -2,7 +2,7 @@
- + <Title :text="`“${title}”画像匹配同类不满意人员`" noBg/> </div> <div class="table"> <el-table :data="list"> @@ -12,71 +12,52 @@ width="80"/> <el-table-column - prop="name" - label="月度" - width="114"/> - - <el-table-column - prop="address" + prop="gridName" width="118" - label="所属社区"/> + label="所属组织"/> <el-table-column - prop="address" - width="168" - label="事项来源"> + prop="restName" + label="姓名"> <template slot-scope="data"></template> </el-table-column> <el-table-column - prop="address" - width="118" - label="事项类型"/> + prop="mobile" + label="电话"/> - <el-table-column - prop="address" - show-overflow-tooltip - label="事项描述"/> <el-table-column - prop="address" - width="197" - label="提交时间"/> + prop="categoryNames" + label="人员性质"/> <el-table-column - prop="address" - width="119" - label="姓名"/> + prop="gender" + label="性别"> + <template slot-scope="{row}"> + {{row.gender === '1'?'男':row.gender === '2'?'女':row.gender === '0'?'未知':''}} + </template> + </el-table-column> <el-table-column - prop="address" - width="153" - label="电话"/> + prop="age" + label="年龄"/> <el-table-column - prop="address" - width="118px" - label="是否完成"> - <template slot-scope="data"></template> - </el-table-column> + prop="cultureLevel" + label="学历"/> <el-table-column - prop="address" - width="118px" - label="是否回访"> - <template slot-scope="data"></template> - </el-table-column> + prop="marriageName" + label="婚姻"/> <el-table-column - prop="address" - width="118px" - label="消除风险"> - <template slot-scope="data"></template> - </el-table-column> + prop="monthIncomeLevel" + label="月收入"/> - <el-table-column label="操作" width="90" align="center"> + <el-table-column label="详情" width="90" align="center"> <template slot-scope="data"> - <el-button type="text" @click="handleView">查看</el-button> + <el-button type="text" @click="handleView(data.row)">查看</el-button> </template> </el-table-column> @@ -86,7 +67,7 @@ <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -101,17 +82,11 @@ import Title from "@/views/dataBoard/satisfactionEval/components/Title" export default { name: "dissatisfied", - components: {Breadcrumb, Pagination,Title}, + components: {Breadcrumb, Pagination, Title}, data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + pageNo: 1, pageSize: 10, }, total: 0, @@ -125,14 +100,29 @@ export default { monthOptions: new Array(12).fill(0).map((_, index) => { return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} }), - list: [{}, {}, {}] + list: [], + title: '' } }, + activated() { + this.title = this.$route.query.title + let searchParams = JSON.parse(this.$route.query.searchParams) + console.log(searchParams) + this.queryParams = { + ...this.queryParams, + ...searchParams + } + this.getList() + }, methods: { getList() { - + this.$http.get('/governance/satisfactionOverview/satisfactionCrowdList?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list + this.total = total + }) }, - handleView({name,id}) { + handleView({restName,restId}) { + this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail?name='+restName+'&id='+restId) } } } @@ -162,6 +152,7 @@ export default { height: 32px; } } + .main-title { margin: 25px 0 32px; } diff --git a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue index 6ffd06d18..dfb1cee8b 100644 --- a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue @@ -37,7 +37,7 @@ </div> </div> - <div class="btn" @click="$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel')"> + <div class="btn" @click="gotopage"> <div>按画像匹配到同类:<span> <b>{{matchPeopleNum?matchPeopleNum:0}}</b>人</span></div> <i class="el-icon-arrow-right"></i> </div> @@ -61,7 +61,7 @@ export default { label: '按12345热线投诉结果', value: '12345' }], - typeCondition: 1, + typeCondition: '', typeConditionList: [], gender: "", marriageName: "", @@ -70,7 +70,8 @@ export default { gridName: "", monthIncomeLevel: "", residentTagName: "", - matchPeopleNum: 0 + matchPeopleNum: 0, + searchParams: '' } }, watch: { @@ -90,6 +91,9 @@ export default { this.resultType = val this.getData() }, + gotopage() { + this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams='+this.searchParams+'&title='+this.typeConditionList.filter(item=>item.value === this.typeCondition)[0].label) + }, getDisKey() { this.$http.post('/sys/dict/data/dictlist', {'dictType': 'satisfaction_category'}).then(({data: {data}}) => { this.typeCondition = data[0].value @@ -113,6 +117,8 @@ export default { this.monthIncomeLevel = data.monthIncomeLevel; this.residentTagName = data.residentTagName; this.matchPeopleNum = data.matchPeopleNum; + + this.searchParams = JSON.stringify({...data,...params}) }) } } diff --git a/src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue b/src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue index abe79d71c..4223950e9 100644 --- a/src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue @@ -1,6 +1,6 @@ <template> <div class="potential-people"> - <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/sjwjj')"> + <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople')"> <div class="icon"> <img src="@/assets/images/manyidu/qz_wjj.png" alt=""> </div> @@ -10,7 +10,7 @@ </div> <div class="num"><span class="orange">{{ unSolvedNum ? unSolvedNum : 0 }}</span>人</div> </div> - <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/xqwmz')"> + <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople')"> <div class="icon"> <img src="@/assets/images/manyidu/qz_wmz.png" alt=""> </div> @@ -20,7 +20,7 @@ </div> <div class="num"><span class="green">{{ unFinishNum ? unFinishNum : 0 }}</span>人</div> </div> - <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/yxwxfw')"> + <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople')"> <div class="icon"> <img src="@/assets/images/manyidu/qz_wx.png" alt=""> </div> diff --git a/src/views/dataBoard/satisfactionEval/potentialPeople/index.vue b/src/views/dataBoard/satisfactionEval/potentialPeople/index.vue index 64c136837..34c4ff51a 100644 --- a/src/views/dataBoard/satisfactionEval/potentialPeople/index.vue +++ b/src/views/dataBoard/satisfactionEval/potentialPeople/index.vue @@ -3,26 +3,17 @@ <Breadcrumb :list="breadcrumbList"/> <div class="screen"> <el-form :model="queryParams" inline> - <el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织"> + <el-select popper-class="selectPopClass" v-model="queryParams.agencyId" size="small" placeholder="按组织"> <el-option - v-for="item in monthOptions" + v-for="item in orgOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> - - <el-select popper-class="selectPopClass" v-model="queryParams.matterType" size="small" placeholder="按不满意类型"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <el-input v-model="queryParams.name" size="small" placeholder="按姓名"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按电话"></el-input> - <el-button size="small" class="btn" type="primary">查询</el-button> + <el-input v-model="queryParams.name" clearable size="small" placeholder="按姓名"></el-input> + <el-input v-model="queryParams.mobile" clearable size="small" placeholder="按电话"></el-input> + <el-button size="small" class="btn" type="primary" @click="search">查询</el-button> </el-form> </div> @@ -38,41 +29,56 @@ label="上报人"/> <el-table-column - prop="key" + prop="mobile" label="上报人电话"/> <el-table-column - prop="key" + prop="agencyName" label="所属组织"> </el-table-column> <el-table-column - prop="key" + prop="eventCount" sortable - label="事件未解决数"/> + label="事件未解决数"> + <template slot-scope="{row}"> + <el-button type="text" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/sjwjj?reportUserId='+row.reportUserId)">{{ row.eventCount }}</el-button> + </template> + </el-table-column> <el-table-column - prop="key" + prop="demandCount" sortable - label="需求未满足数"/> + label="需求未满足数"> + <template slot-scope="{row}"> + <el-button type="text" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/xqwmz?reportUserId='+row.reportUserId)">{{ row.demandCount }}</el-button> + </template> + </el-table-column> <el-table-column - prop="key" + prop="serviceCount" sortable - label="应享未享数"/> + label="应享未享数"> + <template slot-scope="{row}"> + <el-button type="text" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/yxwxfw?reportUserId='+row.reportUserId)">{{ row.serviceCount }}</el-button> + </template> + </el-table-column> <el-table-column - prop="key" + prop="countAll" sortable - label="总数"/> - + label="总数"> + <template slot-scope="{row}">{{ row.countAll }} +<!-- <el-button type="text"></el-button>--> + </template> + </el-table-column> </el-table> </div> <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -87,7 +93,7 @@ import Title from "@/views/dataBoard/satisfactionEval/components/Title" export default { name: "dissatisfied", - components: {Breadcrumb, Pagination,Title}, + components: {Breadcrumb, Pagination, Title}, data() { return { queryParams: { @@ -97,9 +103,10 @@ export default { matterType: '', name: '', tel: '', - pageNum: 1, + pageNo: 1, pageSize: 10, }, + orgOptions: [], total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', @@ -111,14 +118,43 @@ export default { monthOptions: new Array(12).fill(0).map((_, index) => { return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} }), - list: [{}, {}, {}] + list: [] } }, + mounted() { + this.getOrg() + }, methods: { + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, + getOrg() { + let params = { + orgId: this.$store.state.chooseArea.chooseName.orgId, + level: this.$store.state.chooseArea.chooseName.level + } + + this.$http.post(`/gov/org/agency/maporg`, params).then(async ({data: {data}}) => { + this.queryParams.agencyId = this.$store.state.chooseArea.chooseName.orgId + let parent = {value: data.id, label: data.name} + this.orgOptions = [parent, ...data.children.map(item => { + return { + value: item.id, + label: item.name + } + })] + this.getList() + }) + }, getList() { - + this.$http.get('/governance/satisfactionDetailList/getPotentialDissatisfiedCountDetail?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list; + this.total = data.total; + }) }, - handleView({name,id}) { + handleView(id) { + } } } diff --git a/src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue b/src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue index 9aab8d589..9a198aa5c 100644 --- a/src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue +++ b/src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue @@ -1,32 +1,6 @@ <template> <div> <Breadcrumb :list="breadcrumbList"/> - <div class="screen"> - <el-form :model="queryParams" inline> - - <el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - - <el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按事件类型"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <el-input v-model="queryParams.name" size="small" placeholder="按上报人姓名"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按上报人电话"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按事件描述关键词"></el-input> - <el-button size="small" class="btn" type="primary">查询</el-button> - </el-form> - </div> <div class="table"> <el-table :data="list"> <el-table-column @@ -39,40 +13,40 @@ label="上报人"/> <el-table-column - prop="key" + prop="mobile" label="上报人电话"/> <el-table-column - prop="key" + prop="agencyName" label="所属组织"> </el-table-column> <el-table-column - prop="key" + prop="categoryName" label="事件类型"/> <el-table-column - prop="key" + prop="eventContent" show-overflow-tooltip label="事件描述"/> <el-table-column - prop="key" + prop="latestProcessingStatus" label="最新办理状态"/> <el-table-column - prop="key" + prop="latestProcessingTime" sortable label="最近办理时间"/> <el-table-column - prop="key" + prop="happenTime" sortable label="事件上报时间"/> <el-table-column sortable label="详情"> - <template> - <el-button type="text">查看</el-button> + <template slot-scope="{row}"> + <el-button type="text" @click="handleView(row.id,row.name)">查看</el-button> </template> </el-table-column> @@ -82,7 +56,7 @@ <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -101,32 +75,39 @@ export default { data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + reportUserId: this.$route.query.reportUserId, + pageNo: 1, pageSize: 10, }, total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', name: '满意度评价' + }, { + path: '/dataBoard/satisfactionEval/potentialPeople', + name: '潜在不满意数' }, { path: '', - name: '事件未解决人数' + name: '事件未解决数' }], - monthOptions: new Array(12).fill(0).map((_, index) => { - return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} - }), - list: [{}, {}, {}] + list: [] } }, + activated() { + this.queryParams.reportUserId = this.$route.query.reportUserId + this.queryParams.pageNo = 1 + this.getList(); + }, methods: { + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, getList() { - + this.$http.get('/governance/satisfactionDetailList/getEventUnSolvedByUserId?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list; + this.total = data.total; + }) }, handleView({name,id}) { } @@ -137,25 +118,7 @@ export default { <style scoped lang="scss"> @import "@/assets/scss/dataBoard/table.scss"; -.screen { - margin: 25px 0 40px; - - .el-select, .el-input { - width: 150px; - margin-right: 4px; - border: 1px solid #126AC5; - border-radius: 2px; - - /deep/ .el-input__inner { - background: none; - border: none; - color: #fff; - } - } - - .btn { - margin-left: 46px; - height: 32px; - } +.table { + margin-top: 40px; } </style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue b/src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue index 80e542e88..d8e2d7a54 100644 --- a/src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue +++ b/src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue @@ -1,33 +1,6 @@ <template> <div> <Breadcrumb :list="breadcrumbList"/> - <div class="screen"> - <el-form :model="queryParams" inline> - - - <el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - - <el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按需求类型"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <el-input v-model="queryParams.name" size="small" placeholder="按需求人姓名"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按需求人电话"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按需求描述关键词"></el-input> - <el-button size="small" class="btn" type="primary">查询</el-button> - </el-form> - </div> <div class="table"> <el-table :data="list"> @@ -37,41 +10,41 @@ width="80"/> <el-table-column - prop="name" + prop="demandUserName" label="需求人"/> <el-table-column - prop="key" + prop="demandUserMobile" label="需求人电话"/> <el-table-column - prop="key" + prop="agencyName" label="所属组织"> </el-table-column> <el-table-column - prop="key" + prop="content" show-overflow-tooltip label="需求描述"/> <el-table-column - prop="key" + prop="latestProcessingStatus" label="最新办理状态"/> <el-table-column - prop="key" + prop="latestProcessingTime" sortable label="最近办理时间"/> <el-table-column - prop="key" + prop="reportTime" sortable label="需求提交时间"/> <el-table-column sortable label="详情"> - <template> - <el-button type="text">查看</el-button> + <template slot-scope="{row}"> + <el-button type="text" @click="handleView(row.id,row.name)">查看</el-button> </template> </el-table-column> @@ -81,7 +54,7 @@ <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -100,32 +73,39 @@ export default { data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + reportUserId: this.$route.query.reportUserId, + pageNo: 1, pageSize: 10, }, total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', name: '满意度评价' + }, { + path: '/dataBoard/satisfactionEval/potentialPeople', + name: '潜在不满意数' }, { path: '', - name: '需求未满足人数' + name: '需求未满足数' }], - monthOptions: new Array(12).fill(0).map((_, index) => { - return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} - }), - list: [{}, {}, {}] + list: [] } }, + activated() { + this.queryParams.reportUserId = this.$route.query.reportUserId + this.queryParams.pageNo = 1 + this.getList(); + }, methods: { + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, getList() { - + this.$http.get('/governance/satisfactionDetailList/getUserDemandUnSolvedByUserId?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list; + this.total = data.total; + }) }, handleView({name,id}) { } @@ -136,25 +116,7 @@ export default { <style scoped lang="scss"> @import "@/assets/scss/dataBoard/table.scss"; -.screen { - margin: 25px 0 40px; - - .el-select, .el-input { - width: 150px; - margin-right: 4px; - border: 1px solid #126AC5; - border-radius: 2px; - - /deep/ .el-input__inner { - background: none; - border: none; - color: #fff; - } - } - - .btn { - margin-left: 46px; - height: 32px; - } +.table { + margin-top: 40px; } </style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue b/src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue index c34045808..6e30b0c85 100644 --- a/src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue +++ b/src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue @@ -1,32 +1,6 @@ <template> <div> <Breadcrumb :list="breadcrumbList"/> - <div class="screen"> - <el-form :model="queryParams" inline> - <el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - - <el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按服务类型"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <el-input v-model="queryParams.name" size="small" placeholder="按服务对象姓名"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按服务对象电话"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按服务描述关键词"></el-input> - <el-button size="small" class="btn" type="primary">查询</el-button> - </el-form> - </div> - <div class="table"> <el-table :data="list"> <el-table-column @@ -39,40 +13,35 @@ label="服务对象姓名"/> <el-table-column - prop="key" + prop="mobile" label="服务对象电话"/> <el-table-column - prop="key" + prop="organizationName" label="所属组织"> </el-table-column> <el-table-column - prop="key" + prop="serviceCategoryName" label="服务类型"/> <el-table-column - prop="key" + prop="remark" show-overflow-tooltip label="服务描述"/> - <el-table-column - prop="key" - label="是否符合政策条件"/> - - <el-table-column - prop="key" + prop="serviceStatus" sortable label="是否已完成服务"/> <el-table-column - prop="key" + prop="serviceTimeStart" sortable label="服务发起时间"/> <el-table-column sortable label="详情"> - <template> - <el-button type="text">查看</el-button> + <template slot-scope="{row}"> + <el-button type="text" @click="handleView(row.id,row.name)">查看</el-button> </template> </el-table-column> @@ -82,7 +51,7 @@ <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -101,32 +70,39 @@ export default { data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + pageNo: 1, pageSize: 10, }, total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', name: '满意度评价' + }, { + path: '/dataBoard/satisfactionEval/potentialPeople', + name: '潜在不满意数' }, { path: '', - name: '应享未享服务人数' + name: '应享未享服务数' }], - monthOptions: new Array(12).fill(0).map((_, index) => { - return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} - }), - list: [{}, {}, {}] + + list: [] } }, + activated() { + this.queryParams.reportUserId = this.$route.query.reportUserId + this.queryParams.pageNo = 1 + this.getList(); + }, methods: { + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, getList() { - + this.$http.get('/governance/satisfactionDetailList/getServiceNotEnjoyedByUserId?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list; + this.total = data.total; + }) }, handleView({name,id}) { } @@ -137,25 +113,7 @@ export default { <style scoped lang="scss"> @import "@/assets/scss/dataBoard/table.scss"; -.screen { - margin: 25px 0 40px; - - .el-select, .el-input { - width: 150px; - margin-right: 4px; - border: 1px solid #126AC5; - border-radius: 2px; - - /deep/ .el-input__inner { - background: none; - border: none; - color: #fff; - } - } - - .btn { - margin-left: 46px; - height: 32px; - } +.table { + margin-top: 40px; } </style> \ No newline at end of file From 0722ed252df917961b0da7b05cadebc4947e0bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=88=98=E7=AB=8B=E6=A0=87?= <2658037827@qq.com> Date: Fri, 22 Sep 2023 15:43:51 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=BB=A1=E6=84=8F?= =?UTF-8?q?=E5=BA=A6=E5=AD=90=E9=A1=B5=E9=9D=A2=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/jwTool.js | 4 +- .../satisfactionEval/dissatisfied/detail.vue | 71 +++++-- .../satisfactionEval/dissatisfied/index.vue | 197 +++++++++++++----- .../dissatisfiedPersonnel/index.vue | 103 +++++---- .../modules/PersonnelPortrait/index.vue | 12 +- .../modules/PotentialPeople/index.vue | 6 +- .../potentialPeople/index.vue | 98 ++++++--- .../potentialPeople/sjwjj.vue | 101 +++------ .../potentialPeople/xqwmz.vue | 102 +++------ .../potentialPeople/yxwxfw.vue | 104 +++------ 10 files changed, 427 insertions(+), 371 deletions(-) diff --git a/src/utils/jwTool.js b/src/utils/jwTool.js index 5e797cf78..058e03e1f 100644 --- a/src/utils/jwTool.js +++ b/src/utils/jwTool.js @@ -3,7 +3,9 @@ import Vue from "vue"; const paramsFormat = function (params) { let strArray = [] for(let key in params) { - strArray.push(key+'='+params[key]) + if(params[key]) { + strArray.push(key+'='+params[key]) + } } return strArray.join('&') } diff --git a/src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue b/src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue index 6bd2b2eff..56e83fc80 100644 --- a/src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue +++ b/src/views/dataBoard/satisfactionEval/dissatisfied/detail.vue @@ -15,15 +15,15 @@ <div class="sub-title">事项详情</div> <div class="detail"> <p> - 小区垃圾急需要处理,垃圾桶旁边垃圾堆积严重,现在已经影响居民的日常生活和出行,望有关部门能够重视。 + {{unsatisfiedMattersModel.reason}} </p> <ul> - <li><span>事项来源:</span>省满意度调查</li> - <li><span>事项类型:</span>生态环境</li> - <li><span>所属月份:</span>2023-09</li> - <li><span>所属社区:</span>XXX社区</li> - <li><span>提交人:</span>张**</li> - <li><span>提交人电话:</span>133</li> + <li><span>事项来源:</span>{{unsatisfiedMattersModel.satisfactionSource}}</li> + <li><span>事项类型:</span>{{unsatisfiedMattersModel.satisfactionCategoryName}}</li> + <li><span>所属月份:</span>{{unsatisfiedMattersModel.satisfactionCategoryName}}</li> + <li><span>所属社区:</span>{{unsatisfiedMattersModel.organizationName}}</li> + <li><span>提交人:</span>{{unsatisfiedMattersModel.name}}</li> + <li><span>提交人电话:</span>{{unsatisfiedMattersModel.mobile}}</li> </ul> </div> </el-col> @@ -33,31 +33,31 @@ <div class="number-item"> <div class="text">12345投诉</div> <div class="num"> - <span class="orange">39</span> + <span class="orange">{{unsatisfiedHisCount.satisfaction_12345}}</span> 人 </div> </div> <div class="number-item"> <div class="text">省满意度调查</div> <div class="num"> - <span class="green">102</span> + <span class="green">{{unsatisfiedHisCount.satisfaction_province}}</span> 人 </div> </div> <div class="number-item"> <div class="text">社区满意度自评</div> <div class="num"> - <span class="light">273</span> + <span class="light">{{unsatisfiedHisCount.satisfaction_community}}</span> 人 </div> </div> </div> <div class="sub-title">回访记录</div> <div class="log"> - <div class="log-item" v-for="(item,index) in 3"> - <div class="name">杨建国(网格长)</div> - <div>2023-08-17</div> - <div>上门回访 <i class="el-icon-arrow-right"></i></div> + <div class="log-item" v-for="(item,index) in followUpRecordDetails"> + <div class="name">{{item.followUpUser}}({{item.roleName}})</div> + <div>{{item.followUpDate}}</div> + <div>{{item.followUpWay}} <i class="el-icon-arrow-right"></i></div> </div> </div> @@ -75,15 +75,42 @@ export default { components: {Title}, data() { return { - dialogVisible: false + dialogVisible: false, + unsatisfiedMattersModel: '', + unsatisfiedHisCount: '', + followUpRecordDetails: '', + satisfactionSourceOptions: [{ + value: 'satisfaction_12345', + label: '12345投诉', + color: '#FFB73C', + }, { + value: 'satisfaction_province', + label: '省满意度调查', + color: '#64C1FF' + }, { + value: 'satisfaction_community', + label: '社区满意度自查', + color: '#08EBAE' + }] }; }, methods: { handleClose(done) { this.dialogVisible = false }, - open() { + open(id) { this.dialogVisible = true + this.getDetail(id) + }, + getDetail(id) { + this.$http.post('/governance/satisfactionDetailList/getUnsatisfiedMattersDetailInfo', id).then(({data: {data}}) => { + this.unsatisfiedMattersModel = data.unsatisfiedMattersModel + this.unsatisfiedHisCount = data.unsatisfiedHisCount + this.followUpRecordDetails = data.followUpRecordDetails + if(this.unsatisfiedMattersModel.satisfactionSource) { + this.unsatisfiedMattersModel.satisfactionSource = satisfactionSourceOptions.filter(item => item.value === this.unsatisfiedMattersModel.satisfactionSource)[0].label + } + }) } } } @@ -137,14 +164,17 @@ export default { line-height: 32px; margin: 0 0 10px; } + ul { margin: 0; padding: 0; list-style-type: none; } + li { color: #FFFFFF; line-height: 28px; + span { color: #9CB4D3 } @@ -156,16 +186,19 @@ export default { display: flex; justify-content: space-between; margin-bottom: 30px; + .text { font-size: 14px; font-weight: 400; color: #A3B9DA; margin-bottom: 17px; } + .num { font-size: 14px; font-weight: 400; color: #A3B9DA; + span { font-size: 32px; font-weight: bold; @@ -173,17 +206,22 @@ export default { } } } + .orange { color: #FFB73C; } + .green { color: #08EBAE; } + .light { color: #7FCEFF; } + .log { padding-left: 26px; + .log-item { display: flex; justify-content: space-between; @@ -191,6 +229,7 @@ export default { color: #fff; background: url("@/assets/images/manyidu/hf_line.png") bottom center no-repeat; padding: 9px 0; + .name { flex: 0 0 33.33333%; } diff --git a/src/views/dataBoard/satisfactionEval/dissatisfied/index.vue b/src/views/dataBoard/satisfactionEval/dissatisfied/index.vue index bb8e51eeb..3ecbdd4ce 100644 --- a/src/views/dataBoard/satisfactionEval/dissatisfied/index.vue +++ b/src/views/dataBoard/satisfactionEval/dissatisfied/index.vue @@ -3,45 +3,57 @@ <Breadcrumb :list="breadcrumbList"/> <div class="screen"> <el-form :model="queryParams" inline> + <el-date-picker + size="small" + popper-class="selectPopClass" + v-model="queryParams.month" + type="month" + value-format="yyyy-MM" + placeholder="按月度"> + </el-date-picker> - <el-select popper-class="selectPopClass" v-model="queryParams.month" size="small" placeholder="按月度"> + <el-select popper-class="selectPopClass" v-model="queryParams.agencyId" size="small" placeholder="按组织"> <el-option - v-for="item in monthOptions" + v-for="item in orgOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> - <el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织"> + <el-select + popper-class="selectPopClass" + clearable + v-model="queryParams.satisfactionSource" + size="small" + placeholder="按不满意事项来源" + @change="getSatisfactionCategoryOptions" + > <el-option - v-for="item in monthOptions" + v-for="item in satisfactionSourceOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> - <el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按不满意事项来源"> + <el-select + popper-class="selectPopClass" + clearable + v-model="queryParams.satisfactionCategory" + size="small" + placeholder="按不满意事项类型" + > <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - - <el-select popper-class="selectPopClass" v-model="queryParams.matterType" size="small" placeholder="按不满意事项类型"> - <el-option - v-for="item in monthOptions" + v-for="item in satisfactionCategoryOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> <el-input v-model="queryParams.name" size="small" placeholder="按人员姓名"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按人员电话"></el-input> - <el-button size="small" class="btn" type="primary">查询</el-button> + <el-input v-model="queryParams.mobile" size="small" placeholder="按人员电话"></el-input> + <el-button size="small" class="btn" type="primary" @click="search">查询</el-button> </el-form> </div> @@ -53,71 +65,90 @@ width="80"/> <el-table-column - prop="name" + prop="month" label="月度" width="114"/> <el-table-column - prop="address" + prop="organizationName" width="118" label="所属社区"/> <el-table-column - prop="address" + prop="satisfactionSource" width="168" label="事项来源"> - <template slot-scope="data"></template> + <template slot-scope="{row}"> + <span :style="{color: satisfactionSourceFormat(row.satisfactionSource).color}"> + {{ satisfactionSourceFormat(row.satisfactionSource).label }} + </span> + + </template> </el-table-column> <el-table-column - prop="address" - width="118" + prop="satisfactionCategoryName" + width="150" label="事项类型"/> <el-table-column - prop="address" + prop="reason" show-overflow-tooltip label="事项描述"/> <el-table-column - prop="address" + prop="createTime" width="197" label="提交时间"/> <el-table-column - prop="address" + prop="name" width="119" label="姓名"/> <el-table-column - prop="address" + prop="mobile" width="153" label="电话"/> <el-table-column - prop="address" + prop="completeFlag" width="118px" label="是否完成"> - <template slot-scope="data"></template> + <template slot-scope="{row}"> + <span :class="row.completeFlag==='是'?'light':'red'"> + {{ row.completeFlag }} + </span> + </template> </el-table-column> + <el-table-column - prop="address" + prop="followUpStatus" width="118px" label="是否回访"> - <template slot-scope="data"></template> + <template slot-scope="{row}"> + <span :class="row.followUpStatus==='是'?'light':'red'"> + {{ row.followUpStatus }} + </span> + </template> </el-table-column> <el-table-column - prop="address" + prop="dangerFlag" width="118px" label="消除风险"> - <template slot-scope="data"></template> + <template slot-scope="{row}"> + <span :class="row.dangerFlag==='是'?'light':'red'"> + {{ row.dangerFlag }} + </span> + + </template> </el-table-column> <el-table-column label="操作" width="90" align="center"> <template slot-scope="data"> - <el-button type="text" @click="handleView">查看</el-button> + <el-button type="text" @click="handleView(data.row)">查看</el-button> </template> </el-table-column> @@ -127,11 +158,11 @@ <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> - <DissatisfiedDetail ref="detail"/> + <DissatisfiedDetail ref="detail" :id="id"/> </div> </template> @@ -146,15 +177,16 @@ export default { data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + month: this.$moment().format('YYYY-MM'), + agencyId: "", + satisfactionSource: "", + satisfactionCategory: "", + name: "", + mobile: "", + pageNo: 1, pageSize: 10, }, + id: {}, total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', @@ -163,18 +195,80 @@ export default { path: '', name: '不满意事项列表' }], - monthOptions: new Array(12).fill(0).map((_, index) => { - return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} - }), - list: [{}, {}, {}] + orgOptions: [], + satisfactionCategoryOptions: [], + list: [], + satisfactionSourceOptions: [{ + value: 'satisfaction_12345', + label: '12345投诉', + color: '#FFB73C', + }, { + value: 'satisfaction_province', + label: '省满意度调查', + color: '#64C1FF' + }, { + value: 'satisfaction_community', + label: '社区满意度自查', + color: '#08EBAE' + }] } }, + mounted() { + this.getOrg() + }, methods: { + getSatisfactionCategoryOptions() { + this.queryParams.satisfactionCategory = '' + if(!this.queryParams.satisfactionSource) { + this.satisfactionCategoryOptions = [] + return + } + this.$http.get('/governance/satisfactionDetailList/getUnsatisfiedCategory?satisfactionSource=' + this.queryParams.satisfactionSource).then(({data: {data}}) => { + this.satisfactionCategoryOptions = data.map(item => { + return { + label: item.categoryName, + value: item.categoryCode + } + }) + }) + + }, + satisfactionSourceFormat(val) { + let satisfactionSource = this.satisfactionSourceOptions.filter(item => item.value === val)[0] + return satisfactionSource ? satisfactionSource : '' + }, + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, getList() { + this.$http.get('/governance/satisfactionDetailList/getUnsatisfiedMattersList?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.total = data.total + this.list = data.list + }) + }, + getOrg() { + let params = { + orgId: this.$store.state.chooseArea.chooseName.orgId, + level: this.$store.state.chooseArea.chooseName.level + } + this.$http.post(`/gov/org/agency/maporg`, params).then(async ({data: {data}}) => { + this.queryParams.agencyId = this.$store.state.chooseArea.chooseName.orgId + let parent = {value: data.id, label: data.name} + this.orgOptions = [parent, ...data.children.map(item => { + return { + value: item.id, + label: item.name + } + })] + this.getList() + }) }, - handleView() { - this.$refs.detail.open() + handleView(id) { + console.log(id) + this.id = id + this.$refs.detail.open(id) } } } @@ -204,18 +298,23 @@ export default { height: 32px; } } + .orange { color: #FFB73C; } + .blue { color: #64C1FF; } + .green { color: #08EBAE; } + .light { color: #3CF5FF; } + .red { color: #F95619; } diff --git a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue index b68467cd3..66dcb75f0 100644 --- a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue +++ b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue @@ -2,7 +2,7 @@ <div> <Breadcrumb :list="breadcrumbList"/> <div class="main-title"> - <Title text="“基础教育”画像匹配同类不满意人员" noBg/> + <Title :text="`“${title}”画像匹配同类不满意人员`" noBg/> </div> <div class="table"> <el-table :data="list"> @@ -12,71 +12,52 @@ width="80"/> <el-table-column - prop="name" - label="月度" - width="114"/> - - <el-table-column - prop="address" + prop="gridName" width="118" - label="所属社区"/> + label="所属组织"/> <el-table-column - prop="address" - width="168" - label="事项来源"> + prop="restName" + label="姓名"> <template slot-scope="data"></template> </el-table-column> <el-table-column - prop="address" - width="118" - label="事项类型"/> + prop="mobile" + label="电话"/> - <el-table-column - prop="address" - show-overflow-tooltip - label="事项描述"/> <el-table-column - prop="address" - width="197" - label="提交时间"/> + prop="categoryNames" + label="人员性质"/> <el-table-column - prop="address" - width="119" - label="姓名"/> + prop="gender" + label="性别"> + <template slot-scope="{row}"> + {{row.gender === '1'?'男':row.gender === '2'?'女':row.gender === '0'?'未知':''}} + </template> + </el-table-column> <el-table-column - prop="address" - width="153" - label="电话"/> + prop="age" + label="年龄"/> <el-table-column - prop="address" - width="118px" - label="是否完成"> - <template slot-scope="data"></template> - </el-table-column> + prop="cultureLevel" + label="学历"/> <el-table-column - prop="address" - width="118px" - label="是否回访"> - <template slot-scope="data"></template> - </el-table-column> + prop="marriageName" + label="婚姻"/> <el-table-column - prop="address" - width="118px" - label="消除风险"> - <template slot-scope="data"></template> - </el-table-column> + prop="monthIncomeLevel" + label="月收入"/> - <el-table-column label="操作" width="90" align="center"> + <el-table-column label="详情" width="90" align="center"> <template slot-scope="data"> - <el-button type="text" @click="handleView">查看</el-button> + <el-button type="text" @click="handleView(data.row)">查看</el-button> </template> </el-table-column> @@ -86,7 +67,7 @@ <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -101,17 +82,11 @@ import Title from "@/views/dataBoard/satisfactionEval/components/Title" export default { name: "dissatisfied", - components: {Breadcrumb, Pagination,Title}, + components: {Breadcrumb, Pagination, Title}, data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + pageNo: 1, pageSize: 10, }, total: 0, @@ -125,14 +100,29 @@ export default { monthOptions: new Array(12).fill(0).map((_, index) => { return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} }), - list: [{}, {}, {}] + list: [], + title: '' } }, + activated() { + this.title = this.$route.query.title + let searchParams = JSON.parse(this.$route.query.searchParams) + console.log(searchParams) + this.queryParams = { + ...this.queryParams, + ...searchParams + } + this.getList() + }, methods: { getList() { - + this.$http.get('/governance/satisfactionOverview/satisfactionCrowdList?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list + this.total = total + }) }, - handleView({name,id}) { + handleView({restName,restId}) { + this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail?name='+restName+'&id='+restId) } } } @@ -162,6 +152,7 @@ export default { height: 32px; } } + .main-title { margin: 25px 0 32px; } diff --git a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue index 6ffd06d18..dfb1cee8b 100644 --- a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue @@ -37,7 +37,7 @@ </div> </div> - <div class="btn" @click="$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel')"> + <div class="btn" @click="gotopage"> <div>按画像匹配到同类:<span> <b>{{matchPeopleNum?matchPeopleNum:0}}</b>人</span></div> <i class="el-icon-arrow-right"></i> </div> @@ -61,7 +61,7 @@ export default { label: '按12345热线投诉结果', value: '12345' }], - typeCondition: 1, + typeCondition: '', typeConditionList: [], gender: "", marriageName: "", @@ -70,7 +70,8 @@ export default { gridName: "", monthIncomeLevel: "", residentTagName: "", - matchPeopleNum: 0 + matchPeopleNum: 0, + searchParams: '' } }, watch: { @@ -90,6 +91,9 @@ export default { this.resultType = val this.getData() }, + gotopage() { + this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams='+this.searchParams+'&title='+this.typeConditionList.filter(item=>item.value === this.typeCondition)[0].label) + }, getDisKey() { this.$http.post('/sys/dict/data/dictlist', {'dictType': 'satisfaction_category'}).then(({data: {data}}) => { this.typeCondition = data[0].value @@ -113,6 +117,8 @@ export default { this.monthIncomeLevel = data.monthIncomeLevel; this.residentTagName = data.residentTagName; this.matchPeopleNum = data.matchPeopleNum; + + this.searchParams = JSON.stringify({...data,...params}) }) } } diff --git a/src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue b/src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue index abe79d71c..4223950e9 100644 --- a/src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/PotentialPeople/index.vue @@ -1,6 +1,6 @@ <template> <div class="potential-people"> - <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/sjwjj')"> + <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople')"> <div class="icon"> <img src="@/assets/images/manyidu/qz_wjj.png" alt=""> </div> @@ -10,7 +10,7 @@ </div> <div class="num"><span class="orange">{{ unSolvedNum ? unSolvedNum : 0 }}</span>人</div> </div> - <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/xqwmz')"> + <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople')"> <div class="icon"> <img src="@/assets/images/manyidu/qz_wmz.png" alt=""> </div> @@ -20,7 +20,7 @@ </div> <div class="num"><span class="green">{{ unFinishNum ? unFinishNum : 0 }}</span>人</div> </div> - <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/yxwxfw')"> + <div class="potential-people-item" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople')"> <div class="icon"> <img src="@/assets/images/manyidu/qz_wx.png" alt=""> </div> diff --git a/src/views/dataBoard/satisfactionEval/potentialPeople/index.vue b/src/views/dataBoard/satisfactionEval/potentialPeople/index.vue index 64c136837..34c4ff51a 100644 --- a/src/views/dataBoard/satisfactionEval/potentialPeople/index.vue +++ b/src/views/dataBoard/satisfactionEval/potentialPeople/index.vue @@ -3,26 +3,17 @@ <Breadcrumb :list="breadcrumbList"/> <div class="screen"> <el-form :model="queryParams" inline> - <el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织"> + <el-select popper-class="selectPopClass" v-model="queryParams.agencyId" size="small" placeholder="按组织"> <el-option - v-for="item in monthOptions" + v-for="item in orgOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> - - <el-select popper-class="selectPopClass" v-model="queryParams.matterType" size="small" placeholder="按不满意类型"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <el-input v-model="queryParams.name" size="small" placeholder="按姓名"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按电话"></el-input> - <el-button size="small" class="btn" type="primary">查询</el-button> + <el-input v-model="queryParams.name" clearable size="small" placeholder="按姓名"></el-input> + <el-input v-model="queryParams.mobile" clearable size="small" placeholder="按电话"></el-input> + <el-button size="small" class="btn" type="primary" @click="search">查询</el-button> </el-form> </div> @@ -38,41 +29,56 @@ label="上报人"/> <el-table-column - prop="key" + prop="mobile" label="上报人电话"/> <el-table-column - prop="key" + prop="agencyName" label="所属组织"> </el-table-column> <el-table-column - prop="key" + prop="eventCount" sortable - label="事件未解决数"/> + label="事件未解决数"> + <template slot-scope="{row}"> + <el-button type="text" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/sjwjj?reportUserId='+row.reportUserId)">{{ row.eventCount }}</el-button> + </template> + </el-table-column> <el-table-column - prop="key" + prop="demandCount" sortable - label="需求未满足数"/> + label="需求未满足数"> + <template slot-scope="{row}"> + <el-button type="text" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/xqwmz?reportUserId='+row.reportUserId)">{{ row.demandCount }}</el-button> + </template> + </el-table-column> <el-table-column - prop="key" + prop="serviceCount" sortable - label="应享未享数"/> + label="应享未享数"> + <template slot-scope="{row}"> + <el-button type="text" @click="$router.push('/dataBoard/satisfactionEval/potentialPeople/yxwxfw?reportUserId='+row.reportUserId)">{{ row.serviceCount }}</el-button> + </template> + </el-table-column> <el-table-column - prop="key" + prop="countAll" sortable - label="总数"/> - + label="总数"> + <template slot-scope="{row}">{{ row.countAll }} +<!-- <el-button type="text"></el-button>--> + </template> + </el-table-column> </el-table> </div> <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -87,7 +93,7 @@ import Title from "@/views/dataBoard/satisfactionEval/components/Title" export default { name: "dissatisfied", - components: {Breadcrumb, Pagination,Title}, + components: {Breadcrumb, Pagination, Title}, data() { return { queryParams: { @@ -97,9 +103,10 @@ export default { matterType: '', name: '', tel: '', - pageNum: 1, + pageNo: 1, pageSize: 10, }, + orgOptions: [], total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', @@ -111,14 +118,43 @@ export default { monthOptions: new Array(12).fill(0).map((_, index) => { return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} }), - list: [{}, {}, {}] + list: [] } }, + mounted() { + this.getOrg() + }, methods: { + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, + getOrg() { + let params = { + orgId: this.$store.state.chooseArea.chooseName.orgId, + level: this.$store.state.chooseArea.chooseName.level + } + + this.$http.post(`/gov/org/agency/maporg`, params).then(async ({data: {data}}) => { + this.queryParams.agencyId = this.$store.state.chooseArea.chooseName.orgId + let parent = {value: data.id, label: data.name} + this.orgOptions = [parent, ...data.children.map(item => { + return { + value: item.id, + label: item.name + } + })] + this.getList() + }) + }, getList() { - + this.$http.get('/governance/satisfactionDetailList/getPotentialDissatisfiedCountDetail?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list; + this.total = data.total; + }) }, - handleView({name,id}) { + handleView(id) { + } } } diff --git a/src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue b/src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue index 9aab8d589..9a198aa5c 100644 --- a/src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue +++ b/src/views/dataBoard/satisfactionEval/potentialPeople/sjwjj.vue @@ -1,32 +1,6 @@ <template> <div> <Breadcrumb :list="breadcrumbList"/> - <div class="screen"> - <el-form :model="queryParams" inline> - - <el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - - <el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按事件类型"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <el-input v-model="queryParams.name" size="small" placeholder="按上报人姓名"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按上报人电话"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按事件描述关键词"></el-input> - <el-button size="small" class="btn" type="primary">查询</el-button> - </el-form> - </div> <div class="table"> <el-table :data="list"> <el-table-column @@ -39,40 +13,40 @@ label="上报人"/> <el-table-column - prop="key" + prop="mobile" label="上报人电话"/> <el-table-column - prop="key" + prop="agencyName" label="所属组织"> </el-table-column> <el-table-column - prop="key" + prop="categoryName" label="事件类型"/> <el-table-column - prop="key" + prop="eventContent" show-overflow-tooltip label="事件描述"/> <el-table-column - prop="key" + prop="latestProcessingStatus" label="最新办理状态"/> <el-table-column - prop="key" + prop="latestProcessingTime" sortable label="最近办理时间"/> <el-table-column - prop="key" + prop="happenTime" sortable label="事件上报时间"/> <el-table-column sortable label="详情"> - <template> - <el-button type="text">查看</el-button> + <template slot-scope="{row}"> + <el-button type="text" @click="handleView(row.id,row.name)">查看</el-button> </template> </el-table-column> @@ -82,7 +56,7 @@ <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -101,32 +75,39 @@ export default { data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + reportUserId: this.$route.query.reportUserId, + pageNo: 1, pageSize: 10, }, total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', name: '满意度评价' + }, { + path: '/dataBoard/satisfactionEval/potentialPeople', + name: '潜在不满意数' }, { path: '', - name: '事件未解决人数' + name: '事件未解决数' }], - monthOptions: new Array(12).fill(0).map((_, index) => { - return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} - }), - list: [{}, {}, {}] + list: [] } }, + activated() { + this.queryParams.reportUserId = this.$route.query.reportUserId + this.queryParams.pageNo = 1 + this.getList(); + }, methods: { + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, getList() { - + this.$http.get('/governance/satisfactionDetailList/getEventUnSolvedByUserId?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list; + this.total = data.total; + }) }, handleView({name,id}) { } @@ -137,25 +118,7 @@ export default { <style scoped lang="scss"> @import "@/assets/scss/dataBoard/table.scss"; -.screen { - margin: 25px 0 40px; - - .el-select, .el-input { - width: 150px; - margin-right: 4px; - border: 1px solid #126AC5; - border-radius: 2px; - - /deep/ .el-input__inner { - background: none; - border: none; - color: #fff; - } - } - - .btn { - margin-left: 46px; - height: 32px; - } +.table { + margin-top: 40px; } </style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue b/src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue index 80e542e88..d8e2d7a54 100644 --- a/src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue +++ b/src/views/dataBoard/satisfactionEval/potentialPeople/xqwmz.vue @@ -1,33 +1,6 @@ <template> <div> <Breadcrumb :list="breadcrumbList"/> - <div class="screen"> - <el-form :model="queryParams" inline> - - - <el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - - <el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按需求类型"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <el-input v-model="queryParams.name" size="small" placeholder="按需求人姓名"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按需求人电话"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按需求描述关键词"></el-input> - <el-button size="small" class="btn" type="primary">查询</el-button> - </el-form> - </div> <div class="table"> <el-table :data="list"> @@ -37,41 +10,41 @@ width="80"/> <el-table-column - prop="name" + prop="demandUserName" label="需求人"/> <el-table-column - prop="key" + prop="demandUserMobile" label="需求人电话"/> <el-table-column - prop="key" + prop="agencyName" label="所属组织"> </el-table-column> <el-table-column - prop="key" + prop="content" show-overflow-tooltip label="需求描述"/> <el-table-column - prop="key" + prop="latestProcessingStatus" label="最新办理状态"/> <el-table-column - prop="key" + prop="latestProcessingTime" sortable label="最近办理时间"/> <el-table-column - prop="key" + prop="reportTime" sortable label="需求提交时间"/> <el-table-column sortable label="详情"> - <template> - <el-button type="text">查看</el-button> + <template slot-scope="{row}"> + <el-button type="text" @click="handleView(row.id,row.name)">查看</el-button> </template> </el-table-column> @@ -81,7 +54,7 @@ <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -100,32 +73,39 @@ export default { data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + reportUserId: this.$route.query.reportUserId, + pageNo: 1, pageSize: 10, }, total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', name: '满意度评价' + }, { + path: '/dataBoard/satisfactionEval/potentialPeople', + name: '潜在不满意数' }, { path: '', - name: '需求未满足人数' + name: '需求未满足数' }], - monthOptions: new Array(12).fill(0).map((_, index) => { - return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} - }), - list: [{}, {}, {}] + list: [] } }, + activated() { + this.queryParams.reportUserId = this.$route.query.reportUserId + this.queryParams.pageNo = 1 + this.getList(); + }, methods: { + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, getList() { - + this.$http.get('/governance/satisfactionDetailList/getUserDemandUnSolvedByUserId?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list; + this.total = data.total; + }) }, handleView({name,id}) { } @@ -136,25 +116,7 @@ export default { <style scoped lang="scss"> @import "@/assets/scss/dataBoard/table.scss"; -.screen { - margin: 25px 0 40px; - - .el-select, .el-input { - width: 150px; - margin-right: 4px; - border: 1px solid #126AC5; - border-radius: 2px; - - /deep/ .el-input__inner { - background: none; - border: none; - color: #fff; - } - } - - .btn { - margin-left: 46px; - height: 32px; - } +.table { + margin-top: 40px; } </style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue b/src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue index c34045808..6e30b0c85 100644 --- a/src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue +++ b/src/views/dataBoard/satisfactionEval/potentialPeople/yxwxfw.vue @@ -1,32 +1,6 @@ <template> <div> <Breadcrumb :list="breadcrumbList"/> - <div class="screen"> - <el-form :model="queryParams" inline> - <el-select popper-class="selectPopClass" v-model="queryParams.org" size="small" placeholder="按组织"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - - <el-select popper-class="selectPopClass" v-model="queryParams.matterSource" size="small" placeholder="按服务类型"> - <el-option - v-for="item in monthOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - <el-input v-model="queryParams.name" size="small" placeholder="按服务对象姓名"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按服务对象电话"></el-input> - <el-input v-model="queryParams.tel" size="small" placeholder="按服务描述关键词"></el-input> - <el-button size="small" class="btn" type="primary">查询</el-button> - </el-form> - </div> - <div class="table"> <el-table :data="list"> <el-table-column @@ -39,40 +13,35 @@ label="服务对象姓名"/> <el-table-column - prop="key" + prop="mobile" label="服务对象电话"/> <el-table-column - prop="key" + prop="organizationName" label="所属组织"> </el-table-column> <el-table-column - prop="key" + prop="serviceCategoryName" label="服务类型"/> <el-table-column - prop="key" + prop="remark" show-overflow-tooltip label="服务描述"/> - <el-table-column - prop="key" - label="是否符合政策条件"/> - - <el-table-column - prop="key" + prop="serviceStatus" sortable label="是否已完成服务"/> <el-table-column - prop="key" + prop="serviceTimeStart" sortable label="服务发起时间"/> <el-table-column sortable label="详情"> - <template> - <el-button type="text">查看</el-button> + <template slot-scope="{row}"> + <el-button type="text" @click="handleView(row.id,row.name)">查看</el-button> </template> </el-table-column> @@ -82,7 +51,7 @@ <Pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageNum" + :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -101,32 +70,39 @@ export default { data() { return { queryParams: { - month: '', - org: '', - matterSource: '', - matterType: '', - name: '', - tel: '', - pageNum: 1, + pageNo: 1, pageSize: 10, }, total: 0, breadcrumbList: [{ path: '/dataBoard/satisfactionEval/index', name: '满意度评价' + }, { + path: '/dataBoard/satisfactionEval/potentialPeople', + name: '潜在不满意数' }, { path: '', - name: '应享未享服务人数' + name: '应享未享服务数' }], - monthOptions: new Array(12).fill(0).map((_, index) => { - return {label: (index - 0 + 1) + '月', value: (index - 0 + 1)} - }), - list: [{}, {}, {}] + + list: [] } }, + activated() { + this.queryParams.reportUserId = this.$route.query.reportUserId + this.queryParams.pageNo = 1 + this.getList(); + }, methods: { + search() { + this.queryParams.pageNo = 1 + this.getList(); + }, getList() { - + this.$http.get('/governance/satisfactionDetailList/getServiceNotEnjoyedByUserId?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { + this.list = data.list; + this.total = data.total; + }) }, handleView({name,id}) { } @@ -137,25 +113,7 @@ export default { <style scoped lang="scss"> @import "@/assets/scss/dataBoard/table.scss"; -.screen { - margin: 25px 0 40px; - - .el-select, .el-input { - width: 150px; - margin-right: 4px; - border: 1px solid #126AC5; - border-radius: 2px; - - /deep/ .el-input__inner { - background: none; - border: none; - color: #fff; - } - } - - .btn { - margin-left: 46px; - height: 32px; - } +.table { + margin-top: 40px; } </style> \ No newline at end of file From 61069694e008c9ecd09dfd67280c00247fac046b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=88=98=E7=AB=8B=E6=A0=87?= <2658037827@qq.com> Date: Fri, 22 Sep 2023 16:09:31 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/scss/dataBoard/overview/index.scss | 6 ++--- .../dataBoard/overview/components/jdtphx.vue | 4 +-- .../modules/EventSituation/index.vue | 4 +-- .../modules/PersonnelPortrait/index.vue | 25 ++++++++++--------- .../modules/SelfTrend/index.vue | 2 +- .../modules/TypesOfDissatisfaction/index.vue | 4 +-- 6 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/assets/scss/dataBoard/overview/index.scss b/src/assets/scss/dataBoard/overview/index.scss index 69d4eda69..8d0150eaf 100644 --- a/src/assets/scss/dataBoard/overview/index.scss +++ b/src/assets/scss/dataBoard/overview/index.scss @@ -569,7 +569,6 @@ height: 40px; line-height: 40px; font-size: 14px; - font-family: PingFang SC; font-weight: 400; color: #A3B9DA; } @@ -583,11 +582,12 @@ height: 40px; line-height: 40px; width: 110px; - height: 14px; font-size: 14px; - font-family: PingFang SC; font-weight: 400; color: #FFFFFF; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .tdbg1 { diff --git a/src/views/dataBoard/overview/components/jdtphx.vue b/src/views/dataBoard/overview/components/jdtphx.vue index 9919368e0..dbe6b842e 100644 --- a/src/views/dataBoard/overview/components/jdtphx.vue +++ b/src/views/dataBoard/overview/components/jdtphx.vue @@ -29,7 +29,7 @@ <div class="m-jdhx-card-content"> <div class="m-jdhx-card-content-item" v-for="(item,index) in houseList" :key="index"> <div class="m-jdhx-card-content-item-lable">{{item.name}}</div> - <div class="m-jdhx-card-content-item-value">{{item.num}}</div> + <div class="m-jdhx-card-content-item-value">{{item.ratio}}</div> </div> </div> </div> @@ -105,7 +105,7 @@ <div class="m-jdhx-card-content"> <div class="m-jdhx-card-content-item" v-for="(item,index) in riskList" :key="index"> <div class="m-jdhx-card-content-item-lable">{{item.riskName}}</div> - <div class="m-jdhx-card-content-item-value">{{item.riskNum}}人</div> + <div class="m-jdhx-card-content-item-value">{{item.riskNum}}</div> </div> </div> </div> diff --git a/src/views/dataBoard/satisfactionEval/modules/EventSituation/index.vue b/src/views/dataBoard/satisfactionEval/modules/EventSituation/index.vue index e904dd399..060c19ec1 100644 --- a/src/views/dataBoard/satisfactionEval/modules/EventSituation/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/EventSituation/index.vue @@ -113,7 +113,6 @@ export default { .cur-month-item { margin-left: 71px; - .txt { font-size: 16px; font-weight: 400; @@ -150,7 +149,8 @@ export default { .his-month-item { flex: 1; position: relative; - padding-left: 25px; + //padding-left: 25px; + text-align: center; &:after { content: ''; diff --git a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue index dfb1cee8b..09cfd045b 100644 --- a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue @@ -3,36 +3,36 @@ <Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange"/> <div class="screen"> <div class="txt">不满意人员画像</div> - <el-select v-model="typeCondition" @change="getData" placeholder="请选择" class="select" popper-class="selectPopClass"> +<!-- <el-select v-model="typeCondition" @change="getData" placeholder="请选择" class="select" popper-class="selectPopClass"> <el-option v-for="item in typeConditionList" :key="item.value" :label="item.label" :value="item.value"> </el-option> - </el-select> + </el-select>--> </div> <div class="portrait"> - <div class="tag yellow"> + <div class="tag yellow" v-if="gridName"> <div class="text">{{ gridName }}</div> </div> - <div class="tag blue"> + <div class="tag blue" v-if="ageClassification"> <div class="text">{{ ageClassification }}</div> </div> - <div class="tag red"> + <div class="tag red" v-if="residentTagName"> <div class="text">{{ residentTagName }}</div> </div> - <div class="tag light"> + <div class="tag light" v-if="monthIncomeLevel"> <div class="text">{{ monthIncomeLevel }}</div> </div> - <div class="tag green"> + <div class="tag green" v-if="cultureLevel"> <div class="text">{{ cultureLevel }}</div> </div> - <div class="tag orange"> + <div class="tag orange" v-if="marriageName"> <div class="text">{{ marriageName }}</div> </div> - <div class="tag purple"> + <div class="tag purple" v-if="gender"> <div class="text">{{ gender==='1'?'男':gender==='2'?'女':gender==='0'?'未知':'' }}</div> </div> </div> @@ -77,13 +77,15 @@ export default { watch: { "$store.state.chooseArea.chooseName"(val) { if (val.orgId) { - this.getDisKey() + // this.getDisKey() + this.getData(); } } }, mounted() { if (this.$store.state.chooseArea.chooseName.orgId) { - this.getDisKey() + // this.getDisKey() + this.getData(); } }, methods: { @@ -98,7 +100,6 @@ export default { this.$http.post('/sys/dict/data/dictlist', {'dictType': 'satisfaction_category'}).then(({data: {data}}) => { this.typeCondition = data[0].value this.typeConditionList = data - this.getData(); }) }, getData() { diff --git a/src/views/dataBoard/satisfactionEval/modules/SelfTrend/index.vue b/src/views/dataBoard/satisfactionEval/modules/SelfTrend/index.vue index 9cb614f1d..eb2ab027e 100644 --- a/src/views/dataBoard/satisfactionEval/modules/SelfTrend/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/SelfTrend/index.vue @@ -187,7 +187,7 @@ export default { yAxis: [ { type: 'value', - name: '单位:人', + name: '单位:' + (this.trendType === 1 ? '人' : '得分'), nameLocation: 'end', splitLine: { show: true, diff --git a/src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue b/src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue index 57d90f0d6..bdd3fe289 100644 --- a/src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue @@ -138,7 +138,7 @@ export default { } let legendName = ['省满意度调查\n各项不满意人数', '社区满意度自查\n各项不满意人数'] let series = [{ - name: "省满意度调查\n各项不满意人数", + name: this.resultType === 2?'12345热线\n事件上报人数':"省满意度调查\n各项不满意人数", type: "radar", symbol: "circle", symbolSize: 7, @@ -161,7 +161,7 @@ export default { data: [datavaule] }] if (this.resultType === 2) { - legendName = ['省满意度调查\n各项不满意人数'] + legendName = ['12345热线\n事件上报人数'] } else { series.push({ name: "社区满意度自查\n各项不满意人数", From f800d2e02a4a8dabc2a0ba86696c2f8372c995e9 Mon Sep 17 00:00:00 2001 From: SongZhen <> Date: Fri, 22 Sep 2023 16:09:35 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=BE=AE=E7=BD=91=E6=A0=BC=E8=BF=98?= =?UTF-8?q?=E5=8E=9F=E6=AD=A3=E5=B8=B8=E4=BC=A0=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../microgrid/components/popDetails.vue | 6 +++--- .../microgrid/components/reportAnEvent.vue | 15 +++++++-------- .../dataBoard/organizational/microgrid/index.vue | 8 ++++---- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/views/dataBoard/organizational/microgrid/components/popDetails.vue b/src/views/dataBoard/organizational/microgrid/components/popDetails.vue index 0fc402117..f2c8c0670 100644 --- a/src/views/dataBoard/organizational/microgrid/components/popDetails.vue +++ b/src/views/dataBoard/organizational/microgrid/components/popDetails.vue @@ -707,12 +707,13 @@ export default { } }, - async getInfo() { + async getInfo(val) { const url = "resident_info"; this.loading = true; const { data, code, msg } = await requestPostBi(url, { queryParam: { - resident_id: 1001001, + resident_id: val, + // 1001001 }, }); if (code === 0) { @@ -809,7 +810,6 @@ export default { { type: "operate", list: ["查看"] }, ]; }); - } else { this.$message.error(msg); } diff --git a/src/views/dataBoard/organizational/microgrid/components/reportAnEvent.vue b/src/views/dataBoard/organizational/microgrid/components/reportAnEvent.vue index 31f1fddfc..d75c3476f 100644 --- a/src/views/dataBoard/organizational/microgrid/components/reportAnEvent.vue +++ b/src/views/dataBoard/organizational/microgrid/components/reportAnEvent.vue @@ -1,9 +1,9 @@ <template> <Dialog title="事件详情" @close="handleClose"> <template> - <div class="eventWrap" v-loading="loading" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)"> + <div class="eventWrap"> <el-row :gutter="32"> - <el-col :span="13" style="padding-left: 40px"> + <el-col :span="13" style="padding-left: 40px" v-loading="loading" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)"> <div class="leftEvent"> <div class="eventDetails">事件详情</div> <div class="eventItem"> @@ -54,7 +54,7 @@ </div> </div> </el-col> - <el-col :span="11"> + <el-col :span="11" v-loading="loading1" element-loading-text="加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 21, 64, 0.3)"> <div class="rightEvent m-info"> <div class="eventDetails">办理进展</div> <!-- <el-timeline class="timeline" :reverse="true"> @@ -157,6 +157,7 @@ export default { return { item: {}, loading: false, + loading1: false, activities: [], }; }, @@ -195,6 +196,7 @@ export default { const { code, data, msg } = res.data; if (code === 0) { this.item = data; + this.loading = false; } else { this.loading = false; this.$message.error(msg); @@ -207,16 +209,13 @@ export default { const { code, data, msg } = res.data; if (code === 0) { this.activities = data; - this.loading = false; + this.loading1 = false; } else { - this.loading = false; + this.loading1 = false; this.$message.error(msg); } }); }, - - // /governance/icEvent/detail - // /governance/icEvent/process }, }; </script> diff --git a/src/views/dataBoard/organizational/microgrid/index.vue b/src/views/dataBoard/organizational/microgrid/index.vue index 300df0841..e2dbc601e 100644 --- a/src/views/dataBoard/organizational/microgrid/index.vue +++ b/src/views/dataBoard/organizational/microgrid/index.vue @@ -146,10 +146,10 @@ export default { getList() { this.loading = true; const getUrl = new Map([ - ["sbsj", `/gov/org/organizational/neighborhood/getBuildingUnitLevelEvent?unitId=1634090229723381761`], - ["jmxq", `/gov/org/organizational/neighborhood/getBuildingUnitLevelUserDemand?unitId=1565599676446027778`], - ["tzrq", `/gov/org/organizational/neighborhood/getBuildingUnitLevelCtp?unitId=1483661223332417537`], - ["aqyh", `/gov/org/organizational/neighborhood/getEnterprisePatrolRecord?unitId=f896b59f3cddf1f54280546d79803652`], + ["sbsj", `/gov/org/organizational/neighborhood/getBuildingUnitLevelEvent?unitId=${this.paramsData.id}`], + ["jmxq", `/gov/org/organizational/neighborhood/getBuildingUnitLevelUserDemand?unitId=${this.paramsData.id}`], + ["tzrq", `/gov/org/organizational/neighborhood/getBuildingUnitLevelCtp?unitId=${this.paramsData.id}`], + ["aqyh", `/gov/org/organizational/neighborhood/getEnterprisePatrolRecord?unitId=${this.paramsData.id}`], ]); const url = getUrl.get(this.otherTabel); // unitId=${this.paramsData.id} From a91a56e5397d54285726bca7f14e67747019fa82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=88=98=E7=AB=8B=E6=A0=87?= <2658037827@qq.com> Date: Fri, 22 Sep 2023 17:19:42 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E4=BA=8B=E4=BB=B6&?= =?UTF-8?q?=E5=9B=9E=E8=AE=BF=20=E4=BA=BA=E6=88=BF=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E6=9B=B4=E6=96=B0=20tab=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=8F=8A=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/DynamicHumanRoomData.vue | 4 +- .../overview/components/EventAndFollowUp.vue | 5 +- .../overview/components/FollowUp.vue | 166 ++++++++++++++++++ .../overview/components/GridUpdateRanking.vue | 70 ++++++++ src/views/dataBoard/overview/index.vue | 59 ++++++- 5 files changed, 292 insertions(+), 12 deletions(-) create mode 100644 src/views/dataBoard/overview/components/FollowUp.vue create mode 100644 src/views/dataBoard/overview/components/GridUpdateRanking.vue diff --git a/src/views/dataBoard/overview/components/DynamicHumanRoomData.vue b/src/views/dataBoard/overview/components/DynamicHumanRoomData.vue index 00ff17177..66656817d 100644 --- a/src/views/dataBoard/overview/components/DynamicHumanRoomData.vue +++ b/src/views/dataBoard/overview/components/DynamicHumanRoomData.vue @@ -57,10 +57,10 @@ export default { <style scoped lang="scss"> @import "@/assets/scss/dataBoard/c/common.scss"; .dhrd { - padding: 20px 16px; + padding: 0 16px 20px; } .dhrd-list { - height: 200px; + height: 140px; overflow-y: auto; @include scrollBar .dhrd-item { diff --git a/src/views/dataBoard/overview/components/EventAndFollowUp.vue b/src/views/dataBoard/overview/components/EventAndFollowUp.vue index 8d4d7f6ee..69ed1c99f 100644 --- a/src/views/dataBoard/overview/components/EventAndFollowUp.vue +++ b/src/views/dataBoard/overview/components/EventAndFollowUp.vue @@ -1,8 +1,8 @@ <template> <div class="event"> - <div class="tabs"> +<!-- <div class="tabs"> <Tabs v-model="type" :list="typeList" @changeVal="typeChange"/> - </div> + </div>--> <div class="content"> <div class="total"> <div class="tit">事件总数</div> @@ -55,6 +55,7 @@ export default { lastSumNum: 0, processNum: 0, closedNum: 0, + closedRatio: 0, } }, watch: { diff --git a/src/views/dataBoard/overview/components/FollowUp.vue b/src/views/dataBoard/overview/components/FollowUp.vue new file mode 100644 index 000000000..bab5c39ef --- /dev/null +++ b/src/views/dataBoard/overview/components/FollowUp.vue @@ -0,0 +1,166 @@ +<template> + <div class="follow-up"> + <div class="content"> + <div class="left"> + <div class="total"> + <div class="tit">回访总数</div> + <div class="num"><span>{{ sumNum ? sumNum : 0 }}</span>个</div> + </div> + <div class="left-item"> + <div class="tit">电话回访</div> + <div class="num"><span>{{ mobileNum ? mobileNum : 0 }}</span>个</div> + </div> + <div class="left-item"> + <div class="tit">上门回访</div> + <div class="num"><span>{{ visitNum ? visitNum : 0 }}</span>个</div> + </div> + </div> + <div class="xc"> + <div class="tit">回访消除 <br/> 风险人数</div> + <div class="num blue">{{ notRiskyNum ? notRiskyNum : 0 }}</div> + </div> + </div> + </div> +</template> + +<script> +export default { + name: "FollowUp", + props: { + date: { + type: String, + default: '' + } + }, + data() { + return { + org: this.$store.state.chooseArea.chooseName, + typeList: [{ + label: '12345事件', + value: '12345' + }, { + label: '事件回访', + value: 'follow' + }], + type: 'follow', + sumNum: 0, + mobileNum: 0, + visitNum: 0, + notRiskyNum: 0, + } + }, + watch: { + "$store.state.chooseArea.chooseName"(val) { + if (val.orgId) { + this.getData() + } + }, + date() { + this.getData() + } + }, + mounted() { + if (this.org.orgId) { + this.getData() + } + }, + methods: { + getData() { + this.$http.get('/actual/base/streetOverview/eventAndFollowGroup?month=' + this.date + '&level=' + this.$store.state.chooseArea.chooseName.level + '&orgId=' + this.$store.state.chooseArea.chooseName.orgId + '&queryType=' + this.type).then(({data: {data}}) => { + this.sumNum = data.sumNum + this.mobileNum = data.mobileNum + this.visitNum = data.visitNum + this.notRiskyNum = data.notRiskyNum + }) + }, + typeChange(val) { + console.log(val,'val') + this.type = val + this.getData() + } + } +} +</script> + +<style scoped lang="scss"> +.follow-up { + padding: 10px 16px; +} +.content { + background: linear-gradient(90deg, rgba(1, 94, 234, 0.1) 0%, rgba(16, 50, 103, 0) 50%, rgba(1, 94, 234, 0.1) 100%); + padding: 40px 19px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.left { + border-right: 1px solid #96B1CE; + padding-right: 35px; + display: flex; + align-items: center; + justify-content: space-between; + + .total { + .tit { + font-size: 16px; + font-weight: 400; + color: #FFFFFF; + margin-bottom: 20px; + } + + .num { + font-size: 14px; + font-weight: 500; + color: #A3B9DA; + + span { + font-size: 36px; + font-weight: bold; + font-style: italic; + color: #08EBAE; + } + } + } + + .left-item { + margin-left: 24px; + .tit { + font-size: 14px; + font-weight: 400; + color: #A3B9DA; + line-height: 24px; + margin-bottom: 24px; + } + + .num { + font-size: 14px; + font-weight: 500; + color: #A3B9DA; + span { + font-size: 30px; + font-weight: bold; + font-style: italic; + color: #78C4F3; + } + } + } +} + +.xc { + .tit { + font-size: 16px; + font-weight: 400; + color: #FFFFFF; + line-height: 24px; + margin-bottom: 10px; + } + + .num { + font-size: 32px; + font-weight: bold; + font-style: italic; + color: #FFB73C; + } +} +</style> \ No newline at end of file diff --git a/src/views/dataBoard/overview/components/GridUpdateRanking.vue b/src/views/dataBoard/overview/components/GridUpdateRanking.vue new file mode 100644 index 000000000..ee2d9b217 --- /dev/null +++ b/src/views/dataBoard/overview/components/GridUpdateRanking.vue @@ -0,0 +1,70 @@ +<template> + <div class="m-subbox m-sqrfph"> + <div class="table"> + <div class="tr"> + <div class="th">排名</div> + <div class="th">社区</div> + <div class="th">房屋更新数</div> + <div class="th">人口更新数</div> + <div class="th">人房更新总数</div> + </div> + <div class="tr" v-for="(item,index) in pmList" :key="index"> + <div :class="index - 0 + 1 < 4 ? `td tdbg${index-0+1}` : 'td'"> + {{ index - 0 + 1 }} + </div> + <div class="td">{{ item.orgName }}</div> + <div class="td">{{ item.houseNum }}</div> + <div class="td">{{ item.residentNum }}</div> + <div class="td">{{ item.sumNum }}</div> + </div> + </div> + </div> +</template> +<script> +export default { + name: "GridUpdateRanking", + props: { + date: { + type: String, + default: '' + } + }, + data() { + return { + org: this.$store.state.chooseArea.chooseName, + pmList: [], + }; + }, + watch: { + "$store.state.chooseArea.chooseName"(val) { + if (val.orgId) { + this.getList() + } + }, + date() { + this.getList() + } + }, + mounted() { + if (this.org.orgId) { + this.getList() + } + }, + methods: { + getList() { + this.$http.get('/actual/base/streetOverview/residentHouseUpdateGroup?level=' + this.$store.state.chooseArea.chooseName.level + '&orgId=' + this.$store.state.chooseArea.chooseName.orgId).then(({data: {data}}) => { + this.pmList = data + }) + } + } +}; +</script> + +<style lang="scss" src="@/assets/scss/dataBoard/overview/index.scss" scoped/> +<style lang="scss" scoped> +.m-sqrfph { + padding-top: 0 !important; + height: 160px !important; +} + +</style> diff --git a/src/views/dataBoard/overview/index.vue b/src/views/dataBoard/overview/index.vue index a6b6eaa88..598fc17c3 100644 --- a/src/views/dataBoard/overview/index.vue +++ b/src/views/dataBoard/overview/index.vue @@ -86,7 +86,14 @@ <!-- 社区&网格--> <div v-if="currentLevel === 'community' || currentLevel === 'grid'" class="m-box"> <title-box text="人房数据动态更新"/> - <DynamicHumanRoomData/> + <Tabs + v-model="dynamicType" + :list="dynamicTypeList" + v-if="currentLevel === 'community'" + @changeVal="dynamicTypeChange" + /> + <DynamicHumanRoomData v-if="dynamicType === 1"/> + <GridUpdateRanking v-if="dynamicType === 2"/> </div> <!-- 社区概览--> <div v-if="currentLevel === 'community'" class="m-box"> @@ -118,7 +125,9 @@ /> </span> </title-box> - <EventAndFollowUp :date="sjhfDate"/> + <Tabs v-model="eventType" :list="eventTypeList" @changeVal="eventTypeChange"/> + <EventAndFollowUp :date="sjhfDate" v-if="eventType === 1"/> + <FollowUp :date="sjhfDate" v-if="eventType === 2"/> </div> <!-- 网格 --> <div v-if="currentLevel === 'grid'" class="m-box"> @@ -159,9 +168,12 @@ import sqrfph from "@/views/dataBoard/overview/components/sqrfph.vue"; import sq12345 from "@/views/dataBoard/overview/components/sq12345.vue"; import DynamicHumanRoomData from "@/views/dataBoard/overview/components/DynamicHumanRoomData.vue"; +import GridUpdateRanking from "@/views/dataBoard/overview/components/GridUpdateRanking.vue"; import CommunityResult from "@/views/dataBoard/overview/components/CommunityResult.vue"; import EventAndFollowUp from "@/views/dataBoard/overview/components/EventAndFollowUp.vue"; import RankingGridData from "@/views/dataBoard/overview/components/RankingGridData.vue"; +import FollowUp from "@/views/dataBoard/overview/components/FollowUp.vue"; +import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue"; import {requestPostBi} from "@/js/dai/request-bipass"; @@ -186,7 +198,10 @@ export default { DynamicHumanRoomData, CommunityResult, EventAndFollowUp, - RankingGridData + RankingGridData, + GridUpdateRanking, + FollowUp, + Tabs }, data() { @@ -213,6 +228,22 @@ export default { displayedResiId: "", displayedHouseId: "", + dynamicType: 1, + dynamicTypeList: [{ + value: 1, + label: '更新动态' + }, { + value: 2, + label: '网格更新排行' + }], + eventType: 1, + eventTypeList: [{ + value: 1, + label: '12345事件' + }, { + value: 2, + label: '事件回访' + }] }; }, @@ -220,20 +251,26 @@ export default { // const queryOrgId = getQueryPara("orgId"); // const queryOrgLevel = getQueryPara("orgLevel"); // this.init(queryOrgId, queryOrgLevel); - if(this.$store.state.chooseArea.chooseName.orgId) { + if (this.$store.state.chooseArea.chooseName.orgId) { this.getMapData() } }, watch: { - "$store.state.chooseArea.chooseName"(val){ - if(val.orgId) { + "$store.state.chooseArea.chooseName"(val) { + if (val.orgId) { this.getMapData() } } }, methods: { + dynamicTypeChange(val) { + this.dynamicType = val + }, + eventTypeChange(val) { + this.eventType = val + }, async init(queryOrgId, queryOrgLevel) { if (queryOrgId) { this.orgId = queryOrgId; @@ -284,7 +321,7 @@ export default { breadList.push(item); this.breadList = breadList; } - this.getMapData(item.orgId,item.orgLevel) + this.getMapData(item.orgId, item.orgLevel) }, // 点击搜索结果条目,在地图上显示点和详情弹窗 @@ -299,7 +336,7 @@ export default { }, //获取地图上显示的组织数据 - async getMapData(orgId=this.$store.state.chooseArea.chooseName.orgId,level=this.$store.state.chooseArea.chooseName.level) { + async getMapData(orgId = this.$store.state.chooseArea.chooseName.orgId, level = this.$store.state.chooseArea.chooseName.level) { const url = "org_map"; this.$http.post(`/gov/org/agency/maporg`, {orgId, level}).then(({data: {data}}) => { this.orgData = data; @@ -372,3 +409,9 @@ export default { src="@/assets/scss/dataBoard/overview/index.scss" scoped ></style> + +<style lang="scss" scoped> +.tabs { + padding: 16px; +} +</style> From 15c8b800ede336d2967ed6ea9a856a85d42bd809 Mon Sep 17 00:00:00 2001 From: SongZhen <> Date: Fri, 22 Sep 2023 17:36:40 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E5=85=9A=E7=BB=84=E7=BB=87=E3=80=81?= =?UTF-8?q?=E5=B1=85=E5=A7=94=E6=9E=B6=E6=9E=84=E8=8E=B7=E5=8F=96=E4=BA=BA?= =?UTF-8?q?=E4=BA=BA=E5=91=98ID=E8=B7=B3=E8=BD=AC=E5=B1=85=E6=B0=91?= =?UTF-8?q?=E7=94=BB=E5=83=8F=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/JwTree/nodeWrap.vue | 19 +++++++++++++------ src/components/Tree/nodeWrap.vue | 18 +++++++++++------- .../organizational/dangTree/index.vue | 1 - .../organizational/personalPage/index.vue | 15 +++++++++++++-- 4 files changed, 37 insertions(+), 16 deletions(-) diff --git a/src/components/JwTree/nodeWrap.vue b/src/components/JwTree/nodeWrap.vue index 335bb9119..e6adc84e2 100644 --- a/src/components/JwTree/nodeWrap.vue +++ b/src/components/JwTree/nodeWrap.vue @@ -5,7 +5,7 @@ <div class="node-box-after"> <div class="nodeBoxTop"> <div :title="getAllName(nodeConfig.organizationName)">{{ spliceNameFun(nodeConfig.organizationName, 8) }}</div> - <div @click="gotoPersonnel" :title="getAllName(nodeConfig.name)">{{ spliceNameFun(nodeConfig.name, 12) }}</div> + <div @click="gotoPersonnel(nodeConfig.resiId)" :title="getAllName(nodeConfig.name)">{{ spliceNameFun(nodeConfig.name, 12) }}</div> </div> </div> </div> @@ -20,17 +20,17 @@ <div v-if="getOnerSixLevelFlag(item)"> <div class="wgdzb"> <div :title="getAllName(item.organizationName)">{{ spliceNameFun(item.organizationName, 8) }}</div> - <div @click="gotoPersonnel" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div> + <div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div> </div> </div> <div v-if="item.level === 'building_chief'"> <div class="lydxz"> <div :title="getAllName(item.organizationName)">{{ spliceNameFun(item.organizationName, 8) }}</div> - <div @click="gotoPersonnel" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div> + <div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.name)">{{ spliceNameFun(item.name, 12) }}</div> </div> </div> <div v-if="item.level === 'unit_chief' || item.level === 'public_welfare_post'"> - <div @click="gotoPersonnel" class="dyzxh" :title="item.name"> + <div @click="gotoPersonnel(item.resiId)" class="dyzxh gotoDesc" :title="item.name"> {{ spliceNameFun(item.name, 3) }} </div> </div> @@ -79,8 +79,15 @@ export default { return this.sixLevelArr.includes(item.level); }, - gotoPersonnel() { - this.$router.push("/organizational/orgPersonnel"); + gotoPersonnel(id) { + if (id) { + this.$router.push("/organizational/orgPersonnel"); + } else { + this.$message({ + message: "无法跳转", + type: "error", + }); + } }, }, }; diff --git a/src/components/Tree/nodeWrap.vue b/src/components/Tree/nodeWrap.vue index 680c93c18..cf20c7ace 100644 --- a/src/components/Tree/nodeWrap.vue +++ b/src/components/Tree/nodeWrap.vue @@ -6,7 +6,7 @@ <!-- {{ spliceNameFun(nodeConfig, 18) }} --> <div class="nodeBoxTop"> <div :title="getAllName(nodeConfig.partyOrgName)">{{ spliceNameFun(nodeConfig.partyOrgName, 8) }}</div> - <div @click="gotoPersonnel" :title="getAllName(nodeConfig.principalName)">{{ spliceNameFun(nodeConfig.principalName, 12) }}</div> + <div @click="gotoPersonnel(nodeConfig.resiId)" :title="getAllName(nodeConfig.principalName)">{{ spliceNameFun(nodeConfig.principalName, 12) }}</div> </div> </div> </div> @@ -21,19 +21,19 @@ <div v-if="item.laneLevel >= 2 && item.laneLevel <= 7 && item.partyOrgLevel < 8"> <div class="wgdzb"> <div :title="getAllName(item.partyOrgName)">{{ spliceNameFun(item.partyOrgName, 8) }}</div> - <div class="gotoDesc" @click="gotoPersonnel" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div> + <div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div> </div> </div> <div v-if="item.partyOrgLevel === 8"> <div class="lydxz"> <div :title="getAllName(item.partyOrgName)">{{ spliceNameFun(item.partyOrgName, 8) }}</div> - <div class="gotoDesc" @click="gotoPersonnel" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div> + <div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 12) }}</div> </div> </div> <div v-if="item.partyOrgLevel === 9"> <div class="dyzxh"> <!-- <div :title="getAllName(item.partyOrgName)">{{ spliceNameFun(item.partyOrgName, 3) }}</div> --> - <div class="gotoDesc" @click="gotoPersonnel" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 3) }}</div> + <div class="gotoDesc" @click="gotoPersonnel(item.resiId)" :title="getAllName(item.principalName)">{{ spliceNameFun(item.principalName, 3) }}</div> </div> </div> <div class="lxjtWrap" v-if="item.partyOrgLevel === 10"> @@ -53,7 +53,7 @@ <span>空巢老人</span> </div> --> </div> - <div @click="gotoPersonnel" @mouseover="getHomeTypes(item.id)" slot="reference" class="lxjt gotoDesc" :title="item.principalName"> + <div @click="gotoPersonnel(item.resiId)" @mouseover="getHomeTypes(item.id)" slot="reference" class="lxjt gotoDesc" :title="item.principalName"> {{ spliceNameFun(item.principalName, 3) }} <img src="@/assets/images/home/cjr.png" alt="" /> </div> @@ -145,8 +145,12 @@ export default { }); }, - gotoPersonnel() { - this.$router.push("/organizational/orgPersonnel"); + gotoPersonnel(id) { + if (id) { + this.$router.push({ path: "/organizational/orgPersonnel", query: { user_id: id } }); + } else { + this.$message.error("无法跳转!"); + } }, }, }; diff --git a/src/views/dataBoard/organizational/dangTree/index.vue b/src/views/dataBoard/organizational/dangTree/index.vue index 43bd9a2c2..ff6b5273c 100644 --- a/src/views/dataBoard/organizational/dangTree/index.vue +++ b/src/views/dataBoard/organizational/dangTree/index.vue @@ -46,7 +46,6 @@ export default { if (orgId) { this.getTreeData(); } - this.getTextMap(); }, methods: { getLevelArrNum(myArray) { diff --git a/src/views/dataBoard/organizational/personalPage/index.vue b/src/views/dataBoard/organizational/personalPage/index.vue index e4bc7fb58..89a6630cb 100644 --- a/src/views/dataBoard/organizational/personalPage/index.vue +++ b/src/views/dataBoard/organizational/personalPage/index.vue @@ -1,7 +1,7 @@ <template> <div class="personalWrap"> <div class="bread"> - <bread-crumb /> + <bread-crumb :list="list" /> </div> <div class="wrap-content"> <personnel-person /> @@ -19,7 +19,18 @@ export default { PersonnelPerson, }, data() { - return {}; + return { + list: [ + { + path: "/organizational/dangTree", + name: "党组织架构", + }, + { + path: "", + name: "人员信息", + }, + ], + }; }, }; </script> From ea3c0ecf78d96d308bbd95b51cc660595e0a3e5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=88=98=E7=AB=8B=E6=A0=87?= <2658037827@qq.com> Date: Fri, 22 Sep 2023 17:36:42 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=BB=E5=83=8F?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E4=BA=BA=E5=91=98=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dissatisfiedPersonnel/detail.vue | 40 +--- .../dissatisfiedPersonnel/index.vue | 11 +- .../modules/BusinessRecords.vue | 150 -------------- .../modules/EnjoyService.vue | 188 ------------------ .../dissatisfiedPersonnel/modules/Family.vue | 76 ------- .../modules/MatterDetails.vue | 93 --------- .../modules/PointsRecord.vue | 51 ----- .../modules/PersonnelPortrait/index.vue | 24 +-- 8 files changed, 22 insertions(+), 611 deletions(-) delete mode 100644 src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/BusinessRecords.vue delete mode 100644 src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/EnjoyService.vue delete mode 100644 src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/Family.vue delete mode 100644 src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/MatterDetails.vue delete mode 100644 src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/PointsRecord.vue diff --git a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail.vue b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail.vue index bee4c3220..0b3447516 100644 --- a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail.vue +++ b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail.vue @@ -3,50 +3,18 @@ <div class="breadcrumb"> <Breadcrumb :list="breadcrumbList"/> </div> - <el-row> - <el-col :span="10"> - <div class="sub-title">事项详情</div> - <MatterDetails/> - - <div class="sub-title">家庭关系</div> - <Family/> - </el-col> - <el-col :span="13" :offset="1"> - <div class="sub-title">居民各项业务记录</div> - <BusinessRecords/> - <el-row> - <el-col :span="12"> - <div class="sub-title">享受服务次数统计</div> - <EnjoyService/> - </el-col> - <el-col :span="11" :offset="1"> - <div class="sub-title">积分记录</div> - <PointsRecord/> - </el-col> - </el-row> - </el-col> - </el-row> - + <Personnel/> </div> </template> <script> import Breadcrumb from '@/views/dataBoard/satisfactionEval/components/Breadcrumb' -import MatterDetails from "./modules/MatterDetails" -import Family from "./modules/Family" -import BusinessRecords from "./modules/BusinessRecords" -import EnjoyService from "./modules/EnjoyService" -import PointsRecord from "./modules/PointsRecord" - +import Personnel from '@/views/dataBoard/cpts/personnel' export default { name: "dissatisfiedPersonnelDetail", components: { Breadcrumb, - MatterDetails, - Family, - BusinessRecords, - EnjoyService, - PointsRecord + Personnel }, data() { return { @@ -63,8 +31,6 @@ export default { } }, mounted() { - console.log(this.breadcrumbList, this.$route) - this.$set(this.breadcrumbList[2], 'name', this.$route.query.name) this.breadcrumbList[2].name = this.$route.query.name } diff --git a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue index 66dcb75f0..41b196f83 100644 --- a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue +++ b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/index.vue @@ -1,9 +1,9 @@ <template> <div> <Breadcrumb :list="breadcrumbList"/> - <div class="main-title"> +<!-- <div class="main-title"> <Title :text="`“${title}”画像匹配同类不满意人员`" noBg/> - </div> + </div>--> <div class="table"> <el-table :data="list"> <el-table-column @@ -118,11 +118,11 @@ export default { getList() { this.$http.get('/governance/satisfactionOverview/satisfactionCrowdList?' + this.$paramsFormat(this.queryParams)).then(({data: {data}}) => { this.list = data.list - this.total = total + this.total = data.total }) }, handleView({restName,restId}) { - this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail?name='+restName+'&id='+restId) + this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel/detail?name='+restName+'&user_id='+restId) } } } @@ -156,4 +156,7 @@ export default { .main-title { margin: 25px 0 32px; } +.table { + margin-top: 32px; +} </style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/BusinessRecords.vue b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/BusinessRecords.vue deleted file mode 100644 index 64a501170..000000000 --- a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/BusinessRecords.vue +++ /dev/null @@ -1,150 +0,0 @@ -<template> - <div class="business-records"> - <Tabs v-model="type" :list="typeList" @changeVal="typeChange"/> - <div class="table"> - <el-table :data="list"> - <el-table-column - label="序号" - type="index" - width="80"/> - <el-table-column - label="评价周期" - prop="key" - width=""/> - <el-table-column - label="姓名" - prop="key" - width=""/> - <el-table-column - label="电话" - prop="key" - width=""/> - <el-table-column - label="不满意类型" - prop="key" - width=""/> - <el-table-column - label="不满意原因" - prop="key" - width=""/> - <el-table-column label="操作" width="90" align="center"> - <template slot-scope="data"> - <el-button type="text" @click="handleView">查看</el-button> - </template> - </el-table-column> - </el-table> - <Pagination - v-show="total>0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> - </div> - </div> -</template> - -<script> -import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue"; - -export default { - name: "BusinessRecords", - components: {Tabs}, - data() { - return { - total: 10, - queryParams: { - pageNum: 0, - pageSize: 10, - }, - type: 1, - typeList: [{ - label: ' 12345投诉', - value: 1 - }, { - label: '省满意度调查', - value: 2 - }, { - label: '社区满意度自查', - value: 3 - }, { - label: '事件', - value: 4 - }, { - label: '需求', - value: 5 - }, { - label: '服务', - value: 6 - }, { - label: '回访记录', - value: 7 - }], - list: [{},{},{},{},{}] - } - }, - methods: { - typeChange() { - - }, - getList() { - - } - } -} -</script> - -<style scoped lang="scss"> -.business-records { - margin-bottom: 25px; -} -.table { - /deep/ .el-table td, /deep/ .el-table th, /deep/ .el-table tr { - padding: 14px !important; - border:none!important; - min-height: 52px; - - } - /deep/ .el-table td, /deep/ .el-table th { - background: none!important; - } - /deep/ .el-table td { - font-size: 14px; - font-weight: 400; - color: #FFFFFF; - text-shadow: 1px 2px 4px rgba(10,32,60,0.51); - } - - /deep/ .el-table tr { - background: none; - &:hover { - background-color: rgba(26, 149, 255, 0.3) !important; - } - - } - /deep/ .el-table__body-wrapper tr:nth-of-type(odd) { - background: rgba(14, 56, 115, 0.4); - } - - /deep/ .el-table { - background: none !important; - - &:before { - background: none; - } - } - /deep/ .el-table__header-wrapper tr { - color: #A3B9DA !important; - font-size: 14px; - font-weight: 400; - opacity: 0.76; - background: none; - &:hover { - background: none!important; - } - } - /deep/ .el-table__header-wrapper { - background: none!important; - } -} -</style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/EnjoyService.vue b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/EnjoyService.vue deleted file mode 100644 index 0e8ecee58..000000000 --- a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/EnjoyService.vue +++ /dev/null @@ -1,188 +0,0 @@ -<template> - <div className="event-statistics"> - <div id="enjoyServiceChart" style="height: 360px;"></div> - </div> -</template> - -<script> -import * as echarts from "echarts"; - -export default { - name: "EnjoyService", - data() { - return {} - }, - mounted() { - this.initCharts() - }, - methods: { - initCharts() { - let div = document.getElementById('enjoyServiceChart'); - this.myChart = echarts.init(div); - - let xData = ['岗位找人', '技能找人', '温暖找人', '服务找人']; - let tq = [300, 90, 48, 39]; - const max = Math.max(...tq) - - let barArray = new Array(xData.length).fill((parseInt(max / 100) + 1) * 100) - var option = { - title: { - show: false, - text: '', - x: 'center', - top: '15px', - textStyle: { - color: '#333333', - fontWeight: 500, - fontSize: 18, - }, - }, - tooltip: { - trigger: 'axis', - backgroundColor: 'rgba(13, 64, 71, 0.50)', - borderColor: 'rgba(143, 225, 252, 0.60)', - padding: 8, - textStyle: { - color: '#fff', - }, - formatter: function (params) { - console.log(params) - var res = '' - for (var i = 0; i < params.length; i++) { - if (params[i].seriesName != "") { - res += '<p>' + params[0].name + ':' + params[i].data + '</p>' - } - } - return res; - }, - }, - grid: { - top: '0', - left: '1%', - right: '2%', - bottom: '0', - containLabel: true - }, - yAxis: [ - { - type: 'category', - axisTick: { - show: false, - }, - splitLine: { - show: false, - }, - axisLine: { - lineStyle: { - color: '#323c41' - } - }, - axisLabel: { - align: 'right', - textStyle: { - fontSize: 12, - color: '#A3B9DA' - } - }, - boundaryGap: true, - data: xData, - }, { - type: 'category', - data: xData, - axisTick: { - show: false, - }, - axisLine: {show: false}, - axisLabel: { - show: false, - }, - boundaryGap: true, - - } - ], - - xAxis: [ - { - type: 'value', - splitLine: { - show: true, - lineStyle: { - color: 'rgba(4,187,255,0.18)', - type: 'dashed' - }, - }, - nameTextStyle: { - color: '#A3B9DA', - textStyle: { - fontSize: 12 - }, - align: 'center' - }, - axisLabel: { - show: true, - color: '#A3B9DA', - textStyle: { - fontSize: 12 - } - }, - axisTick: { - show: false - } - } - ], - series: [ - { - type: 'bar', - barWidth: 16, - itemStyle: { - // lenged文本 - opacity: 1, // 这个是 透明度 - color: new echarts.graphic.LinearGradient( - 1, - 0, - 0, - 0, - [ - { - offset: 0, - color: '#6EDDFE' // 0% 处的颜色 - }, - { - offset: 1, - color: '#0B1F57' // 100% 处的颜色 - } - ], - false - ) - }, - data: tq, //data.values - }, - { - name: '', - type: 'bar', - - barWidth: 66, - barGap: '-60%', - data: barArray, - itemStyle: { - normal: { - color: 'rgba(89,130,194,0.12)' - } - }, - zlevel: -1, - yAxisIndex: 1, - } - ], - }; - this.myChart.setOption(option); - window.addEventListener("resize", () => this.myChart.resize()); - }, - } -} -</script> - -<style scoped lang="scss"> -.event-statistics { - padding: 16px 16px; -} -</style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/Family.vue b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/Family.vue deleted file mode 100644 index 52af91e1a..000000000 --- a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/Family.vue +++ /dev/null @@ -1,76 +0,0 @@ -<template> - <div class="family"> - <div class="tag"> - <div>张三(户主)</div> - <div>入户状态:入户一致</div> - <div>居民分类:老年人</div> - </div> - <div class="tag"> - <div>张三(户主)</div> - <div>入户状态:入户一致</div> - <div>居民分类:老年人</div> - </div> - <div class="tag"> - <div>张三(户主)</div> - <div>入户状态:入户一致</div> - </div> - <div class="tag"> - <div>张三(户主)</div> - <div>入户状态:入户一致</div> - </div> - </div> -</template> - -<script> -export default { - name: "Family" -} -</script> - -<style scoped lang="scss"> -.family { - width: 464px; - height: 340px; - background: url('@/assets/images/manyidu/gx_bg.png') no-repeat center; - position: relative; - margin: 40px auto; -} -.tag { - font-size: 14px; - font-weight: 400; - color: #FFFFFF; - line-height: 22px; - padding: 18px 24px; - box-sizing: border-box; - position: absolute; - &:nth-of-type(1), - &:nth-of-type(2) { - background: url("@/assets/images/manyidu/gx_big.png") no-repeat center; - width: 180px; - height: 100px; - } - &:nth-of-type(3), - &:nth-of-type(4) { - background: url("@/assets/images/manyidu/gx_small.png") no-repeat center; - width: 180px; - height: 70px; - padding: 15px 24px; - } - &:nth-of-type(1) { - left: -98px; - top: 34px; - } - &:nth-of-type(2) { - right: -68px; - top: 34px; - } - &:nth-of-type(3) { - left: -91px; - bottom: 41px; - } - &:nth-of-type(4) { - right: -44px; - bottom: 41px; - } -} -</style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/MatterDetails.vue b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/MatterDetails.vue deleted file mode 100644 index b965bc1e4..000000000 --- a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/MatterDetails.vue +++ /dev/null @@ -1,93 +0,0 @@ -<template> - <div class="matter-details"> - <div class="user-img"> - <img src="@/assets/images/manyidu/dn_bg1.png" alt=""> - </div> - <div class="tags"> - <div class="tag red">满意度风险人员</div> - <div class="tag small">与子女同住</div> - <div class="tag">第三网格</div> - <div class="tag small">入户一致</div> - <div class="tag">13343999999</div> - <div class="tag">四季景园1号楼1单元101</div> - </div> - </div> -</template> - -<script> -export default { - name: "MatterDetails" -} -</script> - -<style scoped lang="scss"> -.matter-details { - width: 607px; - height: 372px; - background: url("@/assets/images/manyidu/dn_bg2.png") no-repeat center bottom; - position: relative; - margin: 12px auto 60px; -} -.user-img { - position: absolute; - left: calc(50% - 87px); - top: calc(50% - 37px); -} -.tag { - position: absolute; - background: url("@/assets/images/manyidu/dn_big.png") center no-repeat; - width: 108px; - height: 107px; - display: flex; - align-items: center; - justify-content: center; - font-size: 14px; - font-weight: 400; - color: #FFFFFF; - line-height: 16px; - box-sizing: border-box; - padding: 24px; - text-align: center; - word-break: break-all; - &.small { - width: 89px; - height: 89px; - background: url("@/assets/images/manyidu/dn_small.png") center no-repeat; - padding: 16px; - } - &.red { - background: url("@/assets/images/manyidu/dn_red.png") center no-repeat; - color: #FE0000; - } - &:nth-of-type(1) { - left: 0; - bottom: 15px; - } - - &:nth-of-type(2) { - left: 42px; - bottom: 185px; - } - - &:nth-of-type(3) { - left: 194px; - bottom: 245px; - } - - &:nth-of-type(4) { - left: 384px; - bottom: 240px; - } - - &:nth-of-type(5) { - left: 499px; - bottom: 157px; - } - - &:nth-of-type(6) { - left: 453px; - bottom: 10px; - } -} - -</style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/PointsRecord.vue b/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/PointsRecord.vue deleted file mode 100644 index 75f41e47a..000000000 --- a/src/views/dataBoard/satisfactionEval/dissatisfiedPersonnel/modules/PointsRecord.vue +++ /dev/null @@ -1,51 +0,0 @@ -<template> - <div> - <div class="enjoy-service"> - <div class="enjoy-service-item" v-for="(item,index) in 5"> - <div class="num">+10</div> - <div class="info"> - <div class="title">便民服务-配餐服务</div> - <div class="time">2023-07-15 15:30:30</div> - </div> - </div> - </div> - </div> -</template> - -<script> -export default { - name: "PointsRecord" -} -</script> - -<style scoped lang="scss"> - -.enjoy-service { - padding-left: 26px; -} -.enjoy-service-item { - color: #FFFFFF; - display: flex; - padding: 14px 16px 14px; - margin-bottom: 8px; - background: #07266B; - .num { - font-size: 24px; - font-weight: 500; - line-height: 22px; - } - .info { - font-size: 14px; - margin-left: 40px; - .title { - font-weight: 500; - margin-bottom: 10px; - } - .time { - font-weight: 400; - color: #A3B9DA; - } - } -} - -</style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue index 09cfd045b..07f184d0e 100644 --- a/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/PersonnelPortrait/index.vue @@ -3,14 +3,14 @@ <Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange"/> <div class="screen"> <div class="txt">不满意人员画像</div> -<!-- <el-select v-model="typeCondition" @change="getData" placeholder="请选择" class="select" popper-class="selectPopClass"> - <el-option - v-for="item in typeConditionList" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select>--> + <!-- <el-select v-model="typeCondition" @change="getData" placeholder="请选择" class="select" popper-class="selectPopClass"> + <el-option + v-for="item in typeConditionList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select>--> </div> <div class="portrait"> @@ -33,12 +33,12 @@ <div class="text">{{ marriageName }}</div> </div> <div class="tag purple" v-if="gender"> - <div class="text">{{ gender==='1'?'男':gender==='2'?'女':gender==='0'?'未知':'' }}</div> + <div class="text">{{ gender === '1' ? '男' : gender === '2' ? '女' : gender === '0' ? '未知' : '' }}</div> </div> </div> <div class="btn" @click="gotopage"> - <div>按画像匹配到同类:<span> <b>{{matchPeopleNum?matchPeopleNum:0}}</b>人</span></div> + <div>按画像匹配到同类:<span> <b>{{ matchPeopleNum ? matchPeopleNum : 0 }}</b>人</span></div> <i class="el-icon-arrow-right"></i> </div> </div> @@ -94,7 +94,7 @@ export default { this.getData() }, gotopage() { - this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams='+this.searchParams+'&title='+this.typeConditionList.filter(item=>item.value === this.typeCondition)[0].label) + this.$router.push('/dataBoard/satisfactionEval/dissatisfiedPersonnel?searchParams=' + this.searchParams) }, getDisKey() { this.$http.post('/sys/dict/data/dictlist', {'dictType': 'satisfaction_category'}).then(({data: {data}}) => { @@ -119,7 +119,7 @@ export default { this.residentTagName = data.residentTagName; this.matchPeopleNum = data.matchPeopleNum; - this.searchParams = JSON.stringify({...data,...params}) + this.searchParams = JSON.stringify({...data, ...params}) }) } }