Browse Source

Merge branch 'dev' into jw_feature_dev

feature
张若晨 2 years ago
parent
commit
c3e45dd5fc
  1. 241
      src/views/dataBoard/renfang/resi/classNew.vue
  2. 8
      src/views/dataBoard/renfang/visualizing/components/dangyuan.vue
  3. 4
      src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue
  4. 9
      src/views/dataBoard/renfang/visualizing/components/laonianren.vue
  5. 18
      src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue
  6. 8
      src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue
  7. 4
      src/views/modules/home/index.vue
  8. 2
      src/views/modules/satisfaction/communitySelfInsp/index.vue
  9. 5
      src/views/modules/satisfaction/satisfactionProvince/formList.vue
  10. 474
      src/views/modules/satisfaction/satisfactionProvince/index.vue

241
src/views/dataBoard/renfang/resi/classNew.vue

@ -14,8 +14,10 @@
<div class="second-select" v-if="type == 'old'"> <div class="second-select" v-if="type == 'old'">
<el-select <el-select
v-model="oldVal" @change="changeOld"
v-model="oldValsss"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
placeholder="请选择年龄" placeholder="请选择年龄"
> >
<el-option <el-option
@ -29,6 +31,7 @@
<el-select <el-select
v-model="searchParams.resideSituation" v-model="searchParams.resideSituation"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
@change="changeSearch" @change="changeSearch"
placeholder="请选择居住情况" placeholder="请选择居住情况"
> >
@ -44,6 +47,7 @@
<el-select <el-select
v-model="searchParams.lowIncomeType" v-model="searchParams.lowIncomeType"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
@change="changeSearch" @change="changeSearch"
placeholder="请选择低保类型" placeholder="请选择低保类型"
> >
@ -58,6 +62,7 @@
<el-select <el-select
v-model="searchParams.lowIncomeReason" v-model="searchParams.lowIncomeReason"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
@change="changeSearch" @change="changeSearch"
placeholder="请选择低保原因" placeholder="请选择低保原因"
> >
@ -71,12 +76,14 @@
</div> </div>
<div class="second-select" v-if="type == 'zhiyuanzhe'"> <div class="second-select" v-if="type == 'zhiyuanzhe'">
<el-select <el-select
v-model="oldVal" @change="changeOld"
v-model="oldValsss"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
placeholder="请选择年龄" placeholder="请选择年龄"
> >
<el-option <el-option
v-for="item in oldAllList" v-for="item in oldAllList1"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
@ -86,6 +93,7 @@
<el-select <el-select
v-model="searchParams.gategoryCode" v-model="searchParams.gategoryCode"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
@change="changeSearch" @change="changeSearch"
placeholder="请选择志愿者类型" placeholder="请选择志愿者类型"
> >
@ -99,12 +107,14 @@
</div> </div>
<div class="second-select" v-if="type == 'dangyuan'"> <div class="second-select" v-if="type == 'dangyuan'">
<el-select <el-select
v-model="oldVal" @change="changeOld"
v-model="oldValsss"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
placeholder="请选择年龄" placeholder="请选择年龄"
> >
<el-option <el-option
v-for="item in oldAllList" v-for="item in oldAllList1"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
@ -114,6 +124,7 @@
<el-select <el-select
v-model="searchParams.cultureLevel" v-model="searchParams.cultureLevel"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
@change="changeSearch" @change="changeSearch"
placeholder="请选择学历" placeholder="请选择学历"
> >
@ -127,13 +138,14 @@
</div> </div>
<div class="second-select" v-if="type == 'shiye'"> <div class="second-select" v-if="type == 'shiye'">
<el-select <el-select
v-model="oldVal" @change="changeOld"
v-model="oldValsss"
:popper-append-to-body="false" :popper-append-to-body="false"
@change="changeSearch" :clearable="true"
placeholder="请选择年龄" placeholder="请选择年龄"
> >
<el-option <el-option
v-for="item in oldAllList" v-for="item in oldAllList1"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
@ -143,6 +155,7 @@
<el-select <el-select
v-model="searchParams.employmentWish" v-model="searchParams.employmentWish"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
@change="changeSearch" @change="changeSearch"
placeholder="请选择就业愿望" placeholder="请选择就业愿望"
> >
@ -157,6 +170,7 @@
<el-select <el-select
v-model="searchParams.unemploymentReason" v-model="searchParams.unemploymentReason"
:popper-append-to-body="false" :popper-append-to-body="false"
:clearable="true"
@change="changeSearch" @change="changeSearch"
placeholder="请选择失业原因" placeholder="请选择失业原因"
> >
@ -180,6 +194,7 @@
<el-input <el-input
type="text" type="text"
v-model="searchParams.serviceOrgName" v-model="searchParams.serviceOrgName"
:clearable="true"
placeholder="请输入服务方名称" placeholder="请输入服务方名称"
@blur="changeFwfmc" @blur="changeFwfmc"
/> />
@ -266,7 +281,7 @@ export default {
value: ["80", "89"], value: ["80", "89"],
}, },
{ {
label: "90岁以上", label: "90岁以上",
value: ["90", "139"], value: ["90", "139"],
}, },
], ],
@ -312,10 +327,32 @@ export default {
value: ["80", "89"], value: ["80", "89"],
}, },
{ {
label: "90岁以上", label: "90岁以上",
value: ["90", "139"], value: ["90", "139"],
}, },
], ],
oldAllList1: [
{
label: "49岁及以下",
value: ["0", "49"],
},
{
label: "50-59岁",
value: ["50", "59"],
},
{
label: "60-69岁",
value: ["60", "69"],
},
{
label: "70-79岁",
value: ["70", "79"],
},
{
label: "80岁及以上",
value: ["80", "139"],
},
],
colList: [ colList: [
{ {
align: "left", align: "left",
@ -413,7 +450,7 @@ export default {
url: "/actual/base/peopleRoomOverview/postPageList", url: "/actual/base/peopleRoomOverview/postPageList",
}, },
], ],
oldVal: ["60", "69"], oldValsss: ["60", "69"],
jzVal: "", jzVal: "",
searchParams: {}, searchParams: {},
unemploymentArr: [], unemploymentArr: [],
@ -424,9 +461,9 @@ export default {
lowIncomeTypeArr: [], lowIncomeTypeArr: [],
}; };
}, },
activated() { activated() {
const query = this.$route.query; const query = this.$route.query;
this.query = this.$route.query;
this.org_id = query.org_id; this.org_id = query.org_id;
this.type = query.type; this.type = query.type;
this.type_id = query.type_id; this.type_id = query.type_id;
@ -445,34 +482,99 @@ export default {
this.tableTitle = type_name + "居民列表"; this.tableTitle = type_name + "居民列表";
this.pageNo = 1; this.pageNo = 1;
const type = this.type; const type = this.type;
if (type == "old") {
if (query.olds) {
const olds = this.oldList.filter((item) => query.olds == item.label)[0];
this.changeOld(olds.value);
setTimeout(() => {
this.oldValsss = olds.value;
}, 200);
this.searchParams = {
resideSituation: null,
};
}
if (query.qingk) {
this.searchParams = {
resideSituation: query.qingk,
};
this.oldValsss = undefined;
}
}
if (type == "dibao") { if (type == "dibao") {
if (query.lowIncomeType) {
this.searchParams = { this.searchParams = {
lowIncomeType: null, // lowIncomeType: query.lowIncomeType, //
lowIncomeReason: null, // lowIncomeReason: null, //
}; };
} }
if (query.lowIncomeReason) {
this.searchParams = {
lowIncomeType: null, //
lowIncomeReason: query.lowIncomeReason, //
};
}
}
if (type == "shiye") { if (type == "shiye") {
if (query.olds) {
const olds = this.oldAllList1.filter((item) => query.olds == item.label)[0];
this.changeOld(olds.value);
setTimeout(() => {
this.oldValsss = olds.value;
}, 200);
this.searchParams = { this.searchParams = {
employmentWish: null, // employmentWish: null, //
unemploymentReason: null, // unemploymentReason: null, //
startAge: null,
endAge: null,
}; };
} }
if (type == "dangyuan") { if (query.employmentWish) {
this.searchParams = { this.searchParams = {
cultureLevel: null, // employmentWish: query.employmentWish, //
unemploymentReason: null, //
startAge: null, startAge: null,
endAge: null, endAge: null,
}; };
} }
if (type == "zhiyuan") { if (query.unemploymentReason) {
this.searchParams = { this.searchParams = {
gategoryCode: null, // employmentWish: null, //
unemploymentReason: query.unemploymentReason, //
startAge: null, startAge: null,
endAge: null, endAge: null,
}; };
} }
}
if (type == "dangyuan") {
if (query.olds) {
const olds = this.oldAllList1.filter(
(item) => query.olds == item.label
)[0];
this.changeOld(olds.value);
setTimeout(() => {
this.oldValsss = olds.value;
}, 200);
}
if (query.cultureLevel) {
this.searchParams = {
cultureLevel: query.cultureLevel, //
};
}
}
if (type == "zhiyuanzhe") {
if (query.olds) {
const olds = this.oldAllList1.filter(
(item) => query.olds == item.label
)[0];
this.changeOld(olds.value);
setTimeout(() => {
this.oldValsss = olds.value;
}, 200);
}
if (query.gategoryCode) {
this.searchParams = {
gategoryCode: query.gategoryCode, //
};
}
}
if ( if (
type == "fuwu" || type == "fuwu" ||
type == "wennuan" || type == "wennuan" ||
@ -483,7 +585,9 @@ export default {
serviceOrgName: null, // serviceOrgName: null, //
}; };
} }
if (!query.olds) {
this.getList(); this.getList();
}
if (this.pageType != "normal") { if (this.pageType != "normal") {
this.colList = [ this.colList = [
{ {
@ -544,25 +648,39 @@ export default {
this.pageNo = 1; this.pageNo = 1;
}, },
watch: { watch: {
// $route(to, from) { // oldValsss: {
// this.$router.go(0); // handler(newVal) {
// // this.pageNo = 1;
// // const searchParams = {
// // startAge: newVal[0],
// // endAge: newVal[1],
// // };
// // this.getList(searchParams);
// },
// }, // },
oldVal: { searchParams(newVal) {
handler(newVal, oldVal) {
this.pageNo = 1; this.pageNo = 1;
const searchParams = {
startAge: newVal[0],
endAge: newVal[1],
};
this.getList(searchParams);
},
},
searchParams(newVal, oldVal) {
this.getList(); this.getList();
}, },
}, },
methods: { methods: {
changeOld(e) {
if (!e) {
this.oldValsss = undefined;
const searchParams = {
startAge: null,
endAge: null,
};
this.getList(searchParams);
return;
}
const searchParams = {
startAge: e[0],
endAge: e[1],
};
this.oldValsss = e;
this.getList(searchParams);
},
handleClickBreadItem({ item }) { handleClickBreadItem({ item }) {
this.$router.push({ this.$router.push({
path: item.path, path: item.path,
@ -613,17 +731,33 @@ export default {
this.getList(); this.getList();
}, },
async getList(item) { async getList(item) {
const { url } = this.typeList.filter((item) => item.type == this.type)[0]; const { url } = this.typeList.filter((d) => d.type == this.type)[0];
const sourceType = ["公共服务", "共性需求", "政策找人", "服务找人"]; const sourceType = ["公共服务", "共性需求", "政策找人", "服务找人"];
this.loading = true; this.loading = true;
let params = {};
if (this.oldValsss && this.oldValsss != "" && this.oldValsss.length != 0) {
params = {
startAge: this.oldValsss[0],
endAge: this.oldValsss[1],
};
} else {
params = {
startAge: null,
endAge: null,
};
}
let queryParam = { let queryParam = {
pageNo: this.pageNo, pageNo: this.pageNo,
pageSize: this.pageSize, pageSize: this.pageSize,
...this.searchParams, ...this.searchParams,
...item, ...params,
}; };
for (let key in queryParam) { for (let key in queryParam) {
if (queryParam[key] == "ALL") { if (
queryParam[key] == "ALL" ||
queryParam[key] == "" ||
queryParam[key] == null
) {
queryParam[key] = undefined; queryParam[key] = undefined;
} }
} }
@ -641,8 +775,8 @@ export default {
item.name ? item.name : "--", item.name ? item.name : "--",
item.gridName ? item.gridName : "--", item.gridName ? item.gridName : "--",
item.fullName ? item.fullName : "--", item.fullName ? item.fullName : "--",
item.mobile ? $sensitive(item.mobile, 3, 7) : "--", item.mobile ? this.$sensitive(item.mobile, 3, 7) : "--",
item.idNum ? $sensitive(item.idNum, 0, 14) : "--", item.idNum ? this.$sensitive(item.idNum, 0, 14) : "--",
item.gender ? gender[item.gender] : "--", item.gender ? gender[item.gender] : "--",
item.birthday ? item.birthday : "--", item.birthday ? item.birthday : "--",
{ type: "operate", list: ["查看"] }, { type: "operate", list: ["查看"] },
@ -680,9 +814,7 @@ export default {
}, },
...data.data, ...data.data,
]; ];
} catch (error) { } catch (error) {}
console.log(error, "获取居住情况字典");
}
}, },
// async getPostNation() { // async getPostNation() {
// try { // try {
@ -691,7 +823,6 @@ export default {
// }); // });
// this.PostDictonArr = data.data; // this.PostDictonArr = data.data;
// } catch (error) { // } catch (error) {
// console.log(error, "");
// } // }
// }, // },
async getUnemployment() { async getUnemployment() {
@ -706,9 +837,7 @@ export default {
}, },
...data.data, ...data.data,
]; ];
} catch (error) { } catch (error) {}
console.log(error, "获取失业原因字典");
}
}, },
async getCareer() { async getCareer() {
try { try {
@ -722,9 +851,7 @@ export default {
}, },
...data.data, ...data.data,
]; ];
} catch (error) { } catch (error) {}
console.log(error, "获取就业愿望字典");
}
}, },
async getVolunteer() { async getVolunteer() {
try { try {
@ -738,9 +865,7 @@ export default {
}, },
...data.data, ...data.data,
]; ];
} catch (error) { } catch (error) {}
console.log(error, "获取志愿者类别字典");
}
}, },
async getLowIncomeReason() { async getLowIncomeReason() {
try { try {
@ -754,9 +879,7 @@ export default {
}, },
...data.data, ...data.data,
]; ];
} catch (error) { } catch (error) {}
console.log(error, "获取低保原因字典");
}
}, },
async getLowIncomeType() { async getLowIncomeType() {
try { try {
@ -770,9 +893,7 @@ export default {
}, },
...data.data, ...data.data,
]; ];
} catch (error) { } catch (error) {}
console.log(error, "获取低保类型字典");
}
}, },
async getPostNation() { async getPostNation() {
try { try {
@ -786,14 +907,10 @@ export default {
}, },
...data.data, ...data.data,
]; ];
} catch (error) { } catch (error) {}
console.log(error, "获取学历字典");
}
},
}, },
destroyed() {
console.log("我已经离开了!");
}, },
destroyed() {},
}; };
</script> </script>

8
src/views/dataBoard/renfang/visualizing/components/dangyuan.vue

@ -157,7 +157,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: this.dyLeft && this.dyLeft.length > 0 ? [30, 130] : [0, 0], radius: this.dyLeft && this.dyLeft.length > 0 ? [30, 130] : [0, 0],
center: ["50%", "50%"], center: ["50%", "50%"],
@ -180,7 +179,7 @@ export default {
], ],
}; };
this.myChart1.setOption(option); this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => { this.myChart1.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -189,6 +188,7 @@ export default {
type_name: "党员", type_name: "党员",
pageType: "normal", pageType: "normal",
type: "dangyuan", type: "dangyuan",
olds: e.data.name,
}, },
}); });
}); });
@ -273,7 +273,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.dyRight && this.dyRight.length > 0 ? [30, 130] : [0, 0], this.dyRight && this.dyRight.length > 0 ? [30, 130] : [0, 0],
@ -296,7 +295,7 @@ export default {
}, },
], ],
}; };
this.myChart2.on("click", (a, b) => { this.myChart2.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -305,6 +304,7 @@ export default {
type_name: "党员", type_name: "党员",
pageType: "normal", pageType: "normal",
type: "dangyuan", type: "dangyuan",
cultureLevel: e.data.name,
}, },
}); });
}); });

4
src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue

@ -226,7 +226,7 @@ export default {
], ],
}; };
this.myChart1.setOption(option); this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => { this.myChart1.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -235,6 +235,7 @@ export default {
type_name: "低保人员", type_name: "低保人员",
pageType: "normal", pageType: "normal",
type: "dibao", type: "dibao",
lowIncomeType: e.node.name,
}, },
}); });
}); });
@ -363,6 +364,7 @@ export default {
type_name: "低保人员", type_name: "低保人员",
pageType: "normal", pageType: "normal",
type: "dibao", type: "dibao",
lowIncomeReason: e.node.name,
}, },
}); });
}); });

9
src/views/dataBoard/renfang/visualizing/components/laonianren.vue

@ -157,7 +157,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.lnrLeft && this.lnrLeft.length > 0 ? [30, 130] : [0, 0], this.lnrLeft && this.lnrLeft.length > 0 ? [30, 130] : [0, 0],
@ -181,7 +180,7 @@ export default {
], ],
}; };
this.myChart1.setOption(option); this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => { this.myChart1.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -190,6 +189,7 @@ export default {
type_name: "老年人", type_name: "老年人",
pageType: "normal", pageType: "normal",
type: "old", type: "old",
olds: e.data.name,
}, },
}); });
}); });
@ -276,7 +276,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.lnrRight && this.lnrRight.length > 0 ? [30, 130] : [0, 0], this.lnrRight && this.lnrRight.length > 0 ? [30, 130] : [0, 0],
@ -299,7 +298,8 @@ export default {
}, },
], ],
}; };
this.myChart2.on("click", (a, b) => { this.myChart2.on("click", (e) => {
console.log('a, b::', e);
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -308,6 +308,7 @@ export default {
type_name: "老年人", type_name: "老年人",
pageType: "normal", pageType: "normal",
type: "old", type: "old",
qingk: e.data.name,
}, },
}); });
}); });

18
src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue

@ -222,7 +222,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.syryData1 && this.syryData1.length > 0 ? [30, 130] : [0, 0], this.syryData1 && this.syryData1.length > 0 ? [30, 130] : [0, 0],
@ -246,7 +245,7 @@ export default {
], ],
}; };
this.myChart1.setOption(option); this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => { this.myChart1.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -255,6 +254,7 @@ export default {
type_name: "失业人员", type_name: "失业人员",
pageType: "normal", pageType: "normal",
type: "shiye", type: "shiye",
unemploymentReason: e.name,
}, },
}); });
}); });
@ -352,7 +352,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.syryData2 && this.syryData2.length > 0 ? [30, 130] : [0, 0], this.syryData2 && this.syryData2.length > 0 ? [30, 130] : [0, 0],
@ -376,7 +375,7 @@ export default {
], ],
}; };
this.myChart2.setOption(option); this.myChart2.setOption(option);
this.myChart2.on("click", (a, b) => { this.myChart2.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -385,6 +384,7 @@ export default {
type_name: "失业人员", type_name: "失业人员",
pageType: "normal", pageType: "normal",
type: "shiye", type: "shiye",
employmentWish: e.name,
}, },
}); });
}); });
@ -484,7 +484,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.syryData3 && this.syryData3.length > 0 ? [30, 130] : [0, 0], this.syryData3 && this.syryData3.length > 0 ? [30, 130] : [0, 0],
@ -508,7 +507,7 @@ export default {
], ],
}; };
this.myChart3.setOption(option); this.myChart3.setOption(option);
this.myChart3.on("click", (a, b) => { this.myChart3.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -517,6 +516,7 @@ export default {
type_name: "失业人员", type_name: "失业人员",
pageType: "normal", pageType: "normal",
type: "shiye", type: "shiye",
olds: e.name,
}, },
}); });
}); });
@ -615,7 +615,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.syryData4 && this.syryData4.length > 0 ? [30, 130] : [0, 0], this.syryData4 && this.syryData4.length > 0 ? [30, 130] : [0, 0],
@ -639,7 +638,7 @@ export default {
], ],
}; };
this.myChart4.setOption(option); this.myChart4.setOption(option);
this.myChart4.on("click", (a, b) => { this.myChart4.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -746,7 +745,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.syryData5 && this.syryData5.length > 0 ? [30, 130] : [0, 0], this.syryData5 && this.syryData5.length > 0 ? [30, 130] : [0, 0],
@ -770,7 +768,7 @@ export default {
], ],
}; };
this.myChart5.setOption(option); this.myChart5.setOption(option);
this.myChart5.on("click", (a, b) => { this.myChart5.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {

8
src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue

@ -157,7 +157,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.zyzLeft && this.zyzLeft.length > 0 ? [30, 130] : [0, 0], this.zyzLeft && this.zyzLeft.length > 0 ? [30, 130] : [0, 0],
@ -181,7 +180,7 @@ export default {
], ],
}; };
this.myChart1.setOption(option); this.myChart1.setOption(option);
this.myChart1.on("click", (a, b) => { this.myChart1.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -190,6 +189,7 @@ export default {
type_name: "志愿者", type_name: "志愿者",
pageType: "normal", pageType: "normal",
type: "zhiyuanzhe", type: "zhiyuanzhe",
olds: e.data.name,
}, },
}); });
}); });
@ -276,7 +276,6 @@ export default {
}, },
series: [ series: [
{ {
name: "Nightingale Chart",
type: "pie", type: "pie",
radius: radius:
this.zyzRight && this.zyzRight.length > 0 ? [30, 130] : [0, 0], this.zyzRight && this.zyzRight.length > 0 ? [30, 130] : [0, 0],
@ -299,7 +298,7 @@ export default {
}, },
], ],
}; };
this.myChart2.on("click", (a, b) => { this.myChart2.on("click", (e) => {
this.$router.push({ this.$router.push({
path: "/dataBoard/renfang/resi-class-new", path: "/dataBoard/renfang/resi-class-new",
query: { query: {
@ -308,6 +307,7 @@ export default {
type_name: "志愿者", type_name: "志愿者",
pageType: "normal", pageType: "normal",
type: "zhiyuanzhe", type: "zhiyuanzhe",
gategoryCode: e.data.name,
}, },
}); });
}); });

4
src/views/modules/home/index.vue

@ -274,7 +274,7 @@ export default {
}, },
legend: { legend: {
data: data.series.map((item) => item.name), data: data.series.map((item) => item.name),
bottom: "10%", bottom: "5%",
icon: "rect", icon: "rect",
itemWidth: 20, itemWidth: 20,
itemHeight: 5, itemHeight: 5,
@ -283,7 +283,7 @@ export default {
grid: { grid: {
left: "3%", left: "3%",
right: "4%", right: "4%",
bottom: "25%", bottom: "30%",
containLabel: true, containLabel: true,
}, },
toolbox: { toolbox: {

2
src/views/modules/satisfaction/communitySelfInsp/index.vue

@ -295,7 +295,9 @@ export default {
this.myChart.on("click", function (params) { this.myChart.on("click", function (params) {
than.handelClickChart(params.name,params.seriesName); than.handelClickChart(params.name,params.seriesName);
}); });
this.$nextTick(()=>{
window.addEventListener("resize", this.handleWindowResize); window.addEventListener("resize", this.handleWindowResize);
})
}, },
handleWindowResize() { handleWindowResize() {
if (this.myChart) { if (this.myChart) {

5
src/views/modules/satisfaction/satisfactionProvince/formList.vue

@ -194,6 +194,7 @@ export default {
...this.formData, ...this.formData,
pageNo: this.pageNo, pageNo: this.pageNo,
pageSize: this.pageSize, pageSize: this.pageSize,
communityId:this.communityId
}; };
let url = '/governance/provinceEvaluationRecord/pageInfo' let url = '/governance/provinceEvaluationRecord/pageInfo'
const { data, code, msg } = await requestPost(url, params) const { data, code, msg } = await requestPost(url, params)
@ -217,6 +218,10 @@ export default {
formObj: { formObj: {
type: Object, type: Object,
default: () => {} default: () => {}
},
communityId:{
type:String,
default:''
} }
}, },
// //

474
src/views/modules/satisfaction/satisfactionProvince/index.vue

@ -3,65 +3,240 @@
<div class="g-main"> <div class="g-main">
<div> <div>
<div class="m-search"> <div class="m-search">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'"> <el-form
:inline="true"
:model="formData"
ref="ref_searchform"
:label-width="'100px'"
>
<el-form-item label="自评周期"> <el-form-item label="自评周期">
<el-date-picker v-model="formData.periodStart" type="month" value-format="yyyy-MM" placeholder="选择日期" <el-date-picker
style="width: 202px" clearable> v-model="formData.periodStart"
type="month"
value-format="yyyy-MM"
placeholder="选择日期"
style="width: 202px"
clearable
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<div style="float: right; margin-top:5px"> <div style="float: right; margin-top: 5px">
<el-button style="margin-left: 30px" size="small" type="primary " <el-button
@click="handleSearch">查询</el-button> style="margin-left: 30px"
<el-button style="margin-left: 10px" is-plain class="diy-button--white el-button--default" size="small"
size="small" @click="resetSearch">重置</el-button> type="primary "
@click="handleSearch"
>查询</el-button
>
<el-button
style="margin-left: 10px"
is-plain
class="diy-button--white el-button--default"
size="small"
@click="resetSearch"
>重置</el-button
>
</div> </div>
</el-form> </el-form>
</div> </div>
<div class="m-table"> <div class="m-table">
<div class="div_btn"> <div class="div_btn">
<el-upload :headers="$getElUploadHeaders()" ref="upload" class="upload-btn" action="uploadUlr" <el-upload
:limit="1" :accept="'.xls,.xlsx'" :with-credentials="true" :show-file-list="false" :headers="$getElUploadHeaders()"
:auto-upload="true" :before-upload="beforeExcelUpload" :http-request="uploadHttpRequest"> ref="upload"
<el-button type="primary" size="small" class="diy-button--white el-button--default" class="upload-btn"
:loading="importLoading">导入</el-button> action="uploadUlr"
:limit="1"
:accept="'.xls,.xlsx'"
:with-credentials="true"
:show-file-list="false"
:auto-upload="true"
:before-upload="beforeExcelUpload"
:http-request="uploadHttpRequest"
>
<el-button
type="primary"
size="small"
class="diy-button--white el-button--default"
:loading="importLoading"
>导入</el-button
>
</el-upload> </el-upload>
<el-button type="primary" style="margin-left:10px" size="small" <el-button
class="diy-button--white el-button--default" @click="handleExportModule">下载模板</el-button> type="primary"
style="margin-left: 10px"
size="small"
class="diy-button--white el-button--default"
@click="handleExportModule"
>下载模板</el-button
>
</div> </div>
<el-radio-group v-model="formData.orgCategoryCode" @change="handelChangeCategory" style="margin: 20px 0 0;"> <el-radio-group
v-model="formData.orgCategoryCode"
@change="handelChangeCategory"
style="margin: 20px 0 0"
>
<el-radio-button label="province">省满意度调查</el-radio-button> <el-radio-button label="province">省满意度调查</el-radio-button>
<el-radio-button label="city">市满意度调查</el-radio-button> <el-radio-button label="city">市满意度调查</el-radio-button>
<el-radio-button label="district">区满意度调查</el-radio-button> <el-radio-button label="district">区满意度调查</el-radio-button>
</el-radio-group> </el-radio-group>
<div class="m-table-item" :style="{ height: maxTableHeight + 'px', width: '100%' }">
<div
class="m-table-item"
v-if="user.level != 'street'"
:style="{ height: maxTableHeight + 'px', width: '100%' }"
>
<div id="myCharts"></div> <div id="myCharts"></div>
</div> </div>
<div v-else>
<section class="content_box">
<div class="left">
<img
src="../../../../assets/img/satisfaction/zhdf.png"
alt="Image"
/>
<div class="left_right">
<div>{{ badTotal }}</div>
<div>综合得分</div>
</div>
</div>
<div class="right">
<div class="box" v-for="(item, index) in badList" :key="index">
<div class="card">
<img :src="item.imgUrl" alt="Image" />
<div class="right_right">
<div>{{ item.badNum }}</div>
<div>{{ item.satisfactionCategoryName }}</div>
</div>
</div>
</div>
</div>
</section>
<el-table :data="tableList" :height="maxTableHeight">
<el-table-column label="序号" type="index" width="80" />
<el-table-column
label="社区"
show-overflow-tooltip
prop="communityName"
width=""
/>
<el-table-column label="不满意总数" prop="badTotal" width="100" />
<el-table-column
label="文化设施"
prop="culturalFacility"
width="100"
/>
<el-table-column
label="基础教育"
prop="basicEducation"
width="100"
/>
<el-table-column
label="体育设施"
prop="sportsFacility"
width="100"
/>
<el-table-column
label="生态环境"
prop="ecologicalEnv"
width="100"
/>
<el-table-column
label="社会治安"
prop="socialSecurity"
width="100"
/>
<el-table-column
label="社会救助"
prop="socialAssistance"
width="100"
/>
<el-table-column
label="老有所养"
prop="oldPeopleProvide"
width="100"
/>
<el-table-column label="病有所医" prop="medical" width="100" />
<el-table-column
label="操作"
width="90"
align="center"
fixed="right"
>
<template slot-scope="data">
<el-button type="text" @click="handleView(data.row)"
>查看</el-button
>
</template>
</el-table-column>
</el-table>
<el-row type="flex">
<el-col :span="12" align="left">
<div style="margin-top: 25px">{{ shengTotal }}</div>
</el-col>
<el-col :span="12" align="right">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pageNo"
:page-size="pageSize"
layout="prev, pager, next,jumper"
:total="shengTotal"
>
</el-pagination
></el-col>
</el-row>
</div> </div>
</div> </div>
<el-dialog v-if="showFormList" :visible.sync="showFormList" :close-on-click-modal="false" </div>
:close-on-press-escape="false" title="省满意度调查列表" :modal-append-to-body="false" width="820px" top="5vh" <el-dialog
class="dialog-h" @closed="showFormList = false"> v-if="showFormList"
<form-list ref="ref_form_list" @handleClose="handleClose" :satisfactionCategoryStr="satisfactionCategoryStr" :visible.sync="showFormList"
:formObj="formData" @handelClickDetail="handelClickDetail" :close-on-click-modal="false"
@handelClickEdit="handelClickEdit"></form-list> :close-on-press-escape="false"
<el-dialog width="820px" class="dialog-h" title="省满意度调查详情" :close-on-click-modal="false" title="省满意度调查列表"
v-if="showProvinceFollowUpDetail" :visible.sync="showProvinceFollowUpDetail" append-to-body> :modal-append-to-body="false"
<follow-detail :detailObj="detailObj" :formType="formType" width="820px"
@handleCancle="showProvinceFollowUpDetail = false" @handleComfirm="handleComfirm"></follow-detail> top="5vh"
class="dialog-h"
@closed="showFormList = false"
>
<form-list
ref="ref_form_list"
@handleClose="handleClose"
:communityId="communityId"
:formObj="formData"
@handelClickDetail="handelClickDetail"
@handelClickEdit="handelClickEdit"
></form-list>
<el-dialog
width="820px"
class="dialog-h"
title="省满意度调查详情"
:close-on-click-modal="false"
v-if="showProvinceFollowUpDetail"
:visible.sync="showProvinceFollowUpDetail"
append-to-body
>
<follow-detail
:detailObj="detailObj"
:formType="formType"
@handleCancle="showProvinceFollowUpDetail = false"
@handleComfirm="handleComfirm"
></follow-detail>
</el-dialog> </el-dialog>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { requestPost, requestGet } from "@/js/dai/request"; import { requestPost, requestGet } from "@/js/dai/request";
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import axios from "axios"; import axios from "axios";
import * as echarts from 'echarts' import * as echarts from "echarts";
import formList from "./formList"; import formList from "./formList";
import util from "@js/util.js"; import util from "@js/util.js";
import followDetail from "./followDetail" import followDetail from "./followDetail";
export default { export default {
components: { formList, followDetail }, components: { formList, followDetail },
@ -71,114 +246,122 @@ export default {
showFormList: false, showFormList: false,
formData: { formData: {
periodStart: "", periodStart: "",
orgCategoryCode:"province" orgCategoryCode: "province",
}, },
multiSelection: [], // multiSelection: [], //
importLoading: false, importLoading: false,
dicts: { dicts: {
satisfaction_category: [] satisfaction_category: [],
}, // }, //
myChart: {}, satisfactionCategoryName: [],
satisfactionCategory: [],
badList: [],
showProvinceFollowUpDetail: false,
option: { option: {
tooltip: { tooltip: {
trigger: 'axis' trigger: "axis",
}, },
legend: { legend: {
data: ['不满意'], data: ["不满意"],
bottom: '10%', bottom: "10%",
icon: 'rect', icon: "rect",
itemWidth: 20, itemWidth: 20,
itemHeight: 5, itemHeight: 5,
itemGap: 20, itemGap: 20,
}, },
grid: { grid: {
left: '3%', left: "3%",
right: '4%', right: "4%",
bottom: '25%', bottom: "25%",
containLabel: true containLabel: true,
}, },
toolbox: {}, toolbox: {},
xAxis: { xAxis: {
type: 'category', type: "category",
boundaryGap: true, boundaryGap: true,
data: [], data: [],
}, },
yAxis: { yAxis: {
type: 'value', type: "value",
name: '单位(个)', name: "单位(个)",
min: 0, min: 0,
}, },
series: [ series: [
{ {
name: '不满意', name: "不满意",
type: 'bar', type: "bar",
data: [], data: [],
barWidth: 24, // barWidth: 24, //
barCategoryGap: 0, // 0 barCategoryGap: 0, // 0
itemStyle: { itemStyle: {
color: new echarts.graphic.LinearGradient( color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
0, 0, 0, 1, { offset: 0, color: "#2c7cf2" }, //
[ { offset: 1, color: "#80b3ff" }, //
{ offset: 0, color: '#2c7cf2' }, // ]),
{ offset: 1, color: '#80b3ff' } //
]
)
}, },
showBackground: true, showBackground: true,
backgroundStyle: { backgroundStyle: {
color: '#fafbfc', color: "#fafbfc",
opacity: "0.5" opacity: "0.5",
}
}, },
]
}, },
satisfactionCategoryName: [], ],
satisfactionCategory: [], },
score: [],
showProvinceFollowUpDetail: false,
detailObj: {}, detailObj: {},
formType: '' formType: "",
echartsData: [],
tableList: [],
shengTotal: 0,
badList: [],
searchH: 86,
pageSize: 20,
pageNo: 1,
user: {},
badTotal: 0,
communityId: "",
}; };
}, },
computed: { computed: {
maxTableHeight() { maxTableHeight() {
const h = this.clientHeight - this.searchH - 330 + this.iframeHeight; const _h = this.clientHeight - 520 - this.searchH;
const _h = this.clientHeight - 330 - this.searchH; return _h;
return this.$store.state.inIframe ? h : _h;
}, },
...mapGetters(["clientHeight", "iframeHeight"]), ...mapGetters(["clientHeight"]),
}, },
created() { created() {
let date = new Date() let date = new Date();
this.formData.periodStart = util.formatDate(date, 'yyyy-MM') this.formData.periodStart = util.formatDate(date, "yyyy-MM");
this.user = this.$store.state.user;
}, },
async mounted() { async mounted() {
this.user = this.$store.state.user;
this.agencyId = this.user.agencyId; this.agencyId = this.user.agencyId;
this.$nextTick(()=>{
this.initEcharts();
})
await this.getDicts(); await this.getDicts();
await this.getTableData(); await this.getTableData();
await this.initEcharts()
}, },
methods: { methods: {
// -------------------------------------------------------------------------------- // --------------------------------------------------------------------------------
async getDicts() { async getDicts() {
try { try {
const requests = [ const requests = [
this.$http.post("sys/dict/data/dictlist", { this.$http.post("sys/dict/data/dictlist", {
dictType: "satisfaction_category", dictType: "satisfaction_category",
}), }),
]; ];
const dictKeys = ['satisfaction_category']; // const dictKeys = ["satisfaction_category"]; //
const results = await Promise.all(requests); const results = await Promise.all(requests);
results.forEach((result, index) => { results.forEach((result, index) => {
@ -194,15 +377,16 @@ export default {
}, },
// ------------------------------------------------------------------------------ // ------------------------------------------------------------------------------
initEcharts() { initEcharts() {
this.myChart = echarts.init(document.getElementById('myCharts')); if(this.user.level == 'street') return
this.myChart.setOption(this.option) this.myChart = echarts.init(document.getElementById("myCharts"));
let than = this this.myChart.setOption(this.option);
this.myChart.on('click', function (params) { let than = this;
than.handelClickChart(params.name) this.myChart.on("click", function (params) {
than.handelClickChart(params.name);
}); });
this.$nextTick(()=>{
window.addEventListener('resize', this.handleWindowResize); window.addEventListener("resize", this.handleWindowResize);
})
}, },
handleWindowResize() { handleWindowResize() {
if (this.myChart) { if (this.myChart) {
@ -210,39 +394,42 @@ export default {
} }
}, },
handelClickChart(name) { handelClickChart(name) {
this.showFormList = true this.showFormList = true;
this.satisfactionCategoryStr = this.dicts.satisfaction_category.filter(item => item.label == name)[0].value this.satisfactionCategoryStr = this.dicts.satisfaction_category.filter(
(item) => item.label == name
)[0].value;
}, },
handleClose() { handleClose() {
this.showFormList = false this.showFormList = false;
}, },
handelClickDetail(row) { handelClickDetail(row) {
this.formType = 'detail' this.formType = "detail";
this.showProvinceFollowUpDetail = true this.showProvinceFollowUpDetail = true;
this.detailObj = row || {} this.detailObj = row || {};
}, },
handelClickEdit(row) { handelClickEdit(row) {
this.formType = 'edit' this.formType = "edit";
this.showProvinceFollowUpDetail = true this.showProvinceFollowUpDetail = true;
this.detailObj = row || {} this.detailObj = row || {};
}, },
handelChangeCategory(){ handelChangeCategory() {
this.getTableData() this.getTableData();
}, },
handleComfirm(form) { handleComfirm(form) {
this.showProvinceFollowUpDetail = false this.showProvinceFollowUpDetail = false;
this.save(form) this.save(form);
}, },
async save(form) { async save(form) {
try { try {
const url = '/governance/provinceEvaluationRecord/updateInfo' const url = "/governance/provinceEvaluationRecord/updateInfo";
form.periodName = null form.periodName = null;
const { code } = await requestPost(url, form) const { code } = await requestPost(url, form);
if (code == 0) { if (code == 0) {
this.getTableData() this.getTableData();
this.$refs['ref_form_list'].getTableData() this.$refs["ref_form_list"].getTableData();
this.$message.success('保存成功') this.$message.success("保存成功");
this.showProvinceFollowUpDetail = false this.showProvinceFollowUpDetail = false;
} }
} catch (err) { } catch (err) {
console.log(err); console.log(err);
@ -253,31 +440,56 @@ export default {
console.log(this.formData); console.log(this.formData);
this.getTableData(); this.getTableData();
}, },
// //
async getTableData() { async getTableData() {
try { this.badList = []
const allowedCategories = this.dicts.satisfaction_category.map(item => item.value) if (this.user.level != "street") {
const allowedCategories = this.dicts.satisfaction_category.map(
(item) => item.value
);
const { data } = await this.$http.post( const { data } = await this.$http.post(
`/governance/provinceEvaluationRecord/staticPeopleNum`, `/governance/provinceEvaluationRecord/staticPeopleNum`,
{ ...this.formData } { ...this.formData }
); );
this.option.series[0].data = [] this.option.series[0].data = [];
this.option.xAxis.data = [] this.option.xAxis.data = [];
this.tableData = data this.echartsData = data;
this.tableData.forEach(item => { this.echartsData.forEach((item) => {
if (allowedCategories.includes(item.scopeId)) { if (allowedCategories.includes(item.scopeId)) {
this.option.series[0].data.push(item.peopleNum) this.option.series[0].data.push(item.peopleNum);
this.option.xAxis.data.push(item.scopeName) this.option.xAxis.data.push(item.scopeName);
} }
}); });
this.myChart.setOption(this.option) this.myChart.setOption(this.option);
} catch (error) { } else {
console.log(error); const { statistics, code, msg, tableList } = await requestPost(
`/governance/provinceEvaluationRecord/staticStreetPeopleNum`,
{ ...this.formData,pageSize:this.pageSize,pageNo:this.pageNo }
);
if (code == 0) {
statistics.forEach((item) => {
if (item.scopeId != "badTotal") {
this.badList.push({
badNum: item.peopleNum,
satisfactionCategoryName: item.scopeName,
imgUrl: require(`@/assets/img/satisfaction/${item.scopeId}.png`),
});
} }
});
this.tableList = tableList;
this.badTotal = statistics.filter((item) => item.scopeId == "badTotal")[0].peopleNum;
} else {
this.$message.error(msg);
}
}
},
handleView(row) {
this.showFormList = true;
this.communityId = row.communityId;
}, },
async handleExportModule() { async handleExportModule() {
let url = "/governance/provinceEvaluationRecord/provinceStatis/downloadImportTemplate"; let url =
"/governance/provinceEvaluationRecord/provinceStatis/downloadImportTemplate";
let params = {}; let params = {};
await this.$http({ await this.$http({
method: "get", method: "get",
@ -343,9 +555,12 @@ export default {
}); });
const formData = new FormData(); //FormDataappend('key', value) const formData = new FormData(); //FormDataappend('key', value)
formData.append("file", file.file); // formData.append("file", file.file); //
formData.append("orgCategory",than.formData.orgCategoryCode); // formData.append("orgCategory", than.formData.orgCategoryCode); //
await this.$http await this.$http
.post(`/governance/provinceEvaluationRecord/importDataByExcel`, formData) .post(
`/governance/provinceEvaluationRecord/importDataByExcel`,
formData
)
.then((res) => { .then((res) => {
console.log("res-up", res); console.log("res-up", res);
if (res.data.code == 0 && res.data.msg == "success") { if (res.data.code == 0 && res.data.msg == "success") {
@ -357,9 +572,20 @@ export default {
.catch((err) => { .catch((err) => {
console.log("失败", err); console.log("失败", err);
file.onError(); // file.onError(); //
this.$message.error('导入失败') this.$message.error("导入失败");
}); });
}, },
handleCurrentChange() {
console.log(`当前页: ${val}`)
this.pageNo = val
this.getTableData()
},
handleSizeChange() {
console.log(`每页 ${val}`)
this.pageSize = val
window.localStorage.setItem("pageSize", val)
this.getTableData()
},
// //
resetSearch() { resetSearch() {
this.formData = {}; this.formData = {};
@ -367,17 +593,17 @@ export default {
}, },
}, },
activated() { activated() {
this.handleWindowResize() this.handleWindowResize();
}, },
props: {}, props: {},
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/assets/scss/buttonstyle.scss"; @import "@/assets/scss/buttonstyle.scss";
@import "@/assets/scss/modules/management/list-main.scss"; @import "@/assets/scss/modules/management/list-main.scss";
@import "@/assets/scss/modules/shequzhili/event-info.scss"; @import "@/assets/scss/modules/shequzhili/event-info.scss";
.div_btn_left>* { .div_btn_left > * {
margin-right: 10px; margin-right: 10px;
} }
@ -389,7 +615,7 @@ export default {
.content_box { .content_box {
display: flex; display: flex;
height: 160px; height: 160px;
margin-top: 24px; margin: 24px 0;
.left { .left {
background: #f7faff; background: #f7faff;
@ -409,7 +635,6 @@ export default {
width: 50px; width: 50px;
height: 50px; height: 50px;
margin-right: 15px; margin-right: 15px;
} }
.left_right, .left_right,
@ -450,7 +675,6 @@ export default {
border-radius: 5px; border-radius: 5px;
padding: 20px; padding: 20px;
box-sizing: border-box; box-sizing: border-box;
} }
} }
} }

Loading…
Cancel
Save