Browse Source

Merge remote-tracking branch 'origin/yantai_master' into 烟台-master

yantai_master
jianjun 3 years ago
parent
commit
34f20a79da
  1. 4
      .env.development
  2. 1102
      src/js/dai/nongli.js
  3. 100
      src/views/modules/communityParty/calendar/cpts/calendar.vue
  4. 360
      src/views/modules/communityParty/calendar/index.vue
  5. 12
      src/views/modules/communityParty/stas/index.vue
  6. 4
      src/views/modules/shequzhili/event/cpts/event-detail.vue
  7. 46
      src/views/modules/shequzhili/event/eventList.vue
  8. 425
      src/views/modules/visual/communityParty/crateForm.vue
  9. 325
      src/views/modules/visual/communityParty/party.vue
  10. 59
      src/views/modules/workSys/resiCate.vue

4
.env.development

@ -1,7 +1,7 @@
NODE_ENV=development
# VUE_APP_API_SERVER = http://epmet-dev.elinkservice.cn:41080/api
# VUE_APP_API_SERVER = http://192.168.1.140/api
VUE_APP_API_SERVER = https://epmet-yantai.elinkservice.cn/api
VUE_APP_API_SERVER = http://192.168.1.140/api
# VUE_APP_API_SERVER = https://epmet-yantai.elinkservice.cn/api
# VUE_APP_API_SERVER = https://epmet-test.elinkservice.cn/api
# VUE_APP_API_SERVER = https://epmet-cloud.elinkservice.cn/api
# VUE_APP_API_SERVER = https://epdc-shibei.elinkservice.cn/api

1102
src/js/dai/nongli.js

File diff suppressed because it is too large

100
src/views/modules/communityParty/calendar/cpts/calendar.vue

@ -1,36 +1,43 @@
<template>
<div class="m-calendar">
<div class="top-list">
<div class="top"
v-for="(item, index) in top"
:class="{ 'z-weekend': index > 4 }"
:key="item">
<div
class="top"
v-for="(item, index) in top"
:class="{ 'z-weekend': index > 4 }"
:key="item"
>
{{ item }}
</div>
</div>
<!-- 日历号 -->
<div class="date-list">
<div class="date-item"
:class="{
<div
class="date-item"
:class="{
'z-on': item.format == currentDate,
'z-this-month': item.thisMonth,
'z-today': item.isToday,
'z-after-today': item.afterToday,
'z-weekend': item.day == 6 || item.day == 0,
}"
v-for="(item, index) in visibleCalendar"
:key="index"
@click="handleClickDate(item)">
v-for="(item, index) in visibleCalendar"
:key="index"
@click="handleClickDate(item)"
>
<div class="date">{{ item.date }}</div>
<slot name="date-item"
v-bind:item="item"
v-bind:index="index"></slot>
<div class="nongli">
{{ computeNongliText(item.year, item.month, item.date) }}
</div>
<slot name="date-item" v-bind:item="item" v-bind:index="index"> </slot>
</div>
</div>
</div>
</template>
<script>
import nongli from "@/js/dai/nongli";
export default {
props: {
currentYear: {
@ -42,7 +49,7 @@ export default {
default: new Date().getMonth(),
},
},
data () {
data() {
return {
top: ["一", "二", "三", "四", "五", "六", "日"],
currentDate: "",
@ -50,7 +57,7 @@ export default {
},
computed: {
// ,42
visibleCalendar () {
visibleCalendar() {
//
const { currentYear, currentMonth } = this;
const today = new Date();
@ -111,25 +118,30 @@ export default {
},
},
watch: {
visibleCalendar () {
visibleCalendar() {
this.init();
},
},
mounted () {
mounted() {
console.log("123", this.time);
this.init();
},
methods: {
init () {
computeNongliText(y, m, d) {
let item = nongli.solar2lunar(y, m + 1, d);
return item.festival || item.lunarFestival || item.Term || item.IDayCn;
},
init() {
if (!this.currentDate) {
this.handleClickDate(
this.visibleCalendar.find((item) => item.isToday) ||
this.visibleCalendar.filter((item) => item.thisMonth)[0]
this.visibleCalendar.filter((item) => item.thisMonth)[0]
);
}
},
handleClickDate (item) {
handleClickDate(item) {
console.log("点击日历日期", item);
this.currentDate = item.format;
@ -152,8 +164,8 @@ export default {
left: 0;
right: 0;
bottom: 0;
border-left: 1px solid #eee;
border-top: 1px solid #eee;
border-left: 1px solid #e5e5e5;
border-top: 1px solid #e5e5e5;
pointer-events: none;
}
@ -165,8 +177,8 @@ export default {
width: 14.285%;
padding: 20px 0;
font-size: 20px;
font-weight:bold;
background-color: #E6A23C;
font-weight: bold;
background-color: rgba(#ccc, 0.2);
text-align: center;
&::after {
@ -177,9 +189,9 @@ export default {
left: 0;
right: 0;
bottom: 0;
border-right: 1px solid #eee;
border-right: 1px solid #e5e5e5;
pointer-events: none;
border-bottom: 1px solid #eee;
border-bottom: 1px solid #e5e5e5;
}
&.z-weekend {
@ -210,8 +222,8 @@ export default {
left: 0;
right: 0;
bottom: 0;
border-right: 1px solid #eee;
border-bottom: 1px solid #eee;
border-right: 1px solid #e5e5e5;
border-bottom: 1px solid #e5e5e5;
pointer-events: none;
}
@ -220,19 +232,39 @@ export default {
line-height: 50px;
font-size: 28px;
font-weight: bold;
color:#3e8ef7;
color: #3e8ef7;
}
.nongli {
position: absolute;
z-index: 0;
left: 0;
right: 0;
text-align: center;
color: #bbb;
font-size: 16px;
font-weight: bold;
}
&.z-weekend {
.date {
color: #ff3333;
}
}
&.z-on {
z-index: 21;
box-shadow: 0 0 15px 5px #a8cee0;
background:#3E8EF7;
background: #3e8ef7;
.date {
font-size: 30px;
color:#ffffff;
color: #ffffff;
font-weight: bold;
}
.nongli {
color: #ffffff;
}
}
&.z-this-month {
@ -244,12 +276,6 @@ export default {
font-weight: 700;
}
}
&.z-weekend {
.date {
color: #ff3333;
}
}
}
}
}

360
src/views/modules/communityParty/calendar/index.vue

@ -1,25 +1,28 @@
<template>
<div>
<div v-if="showType === 'list'"
class="g-cnt">
<div v-if="showType === 'list'" class="g-cnt">
<el-row :gutter="15">
<el-col :span="6">
<div class="m-sizer">
<div class="item">
<el-cascader class="customer_cascader"
ref="myCascader"
size="big"
v-model="fmData.orgId"
:options="partyOptions"
:props="partyOptionsProps"
:show-all-levels="false"
@change="handleChangeParty"></el-cascader>
<el-cascader
class="customer_cascader"
ref="myCascader"
size="big"
v-model="fmData.orgId"
:options="partyOptions"
:props="partyOptionsProps"
:show-all-levels="false"
@change="handleChangeParty"
></el-cascader>
</div>
<div class="item">
<el-radio v-model="fmData.isSelf"
label="1">本人创建的活动</el-radio>
<el-radio v-model="fmData.isSelf"
label="0">本组织所有活动</el-radio>
<el-radio v-model="fmData.isSelf" label="1"
>本人创建的活动</el-radio
>
<el-radio v-model="fmData.isSelf" label="0"
>本组织所有活动</el-radio
>
</div>
</div>
@ -31,16 +34,20 @@
<div class="date-week">{{ currentDate.dayFormat }}</div>
</div>
<div class="m-list"
v-if="
<div
class="m-list"
v-if="
currentDateData.activityList.length > 0 ||
currentDateData.scheduleList.length > 0
">
"
>
<div class="list-title">今日活动/日程</div>
<div class="list">
<div class="item"
:key="item.activityId"
v-for="item in currentDateData.activityList">
<div
class="item"
:key="item.activityId"
v-for="item in currentDateData.activityList"
>
<div class="item-title">
{{ item.theme }}
</div>
@ -48,6 +55,10 @@
<span>活动类型</span>
<span>{{ item.actTypeName }}</span>
</div>
<div class="item-prop">
<span>活动主题</span>
<span>{{ item.topic }}</span>
</div>
<div class="item-prop">
<span>开始时间</span>
<span>{{ item.holdTime }}</span>
@ -60,23 +71,33 @@
<span>参加组织</span>
<span>{{ item.joinOrgs.join("、") }}</span>
</div>
<div v-if="item.isMe"
class="item-ope">
<el-button type="primary"
v-if="item.isPublish === '0'"
size="mini"
@click="handleClickHuodong('publish', item)">发布</el-button>
<el-button type="success"
size="mini"
@click="handleClickHuodong('edit', item)">修改</el-button>
<el-button size="mini"
@click="handleClickHuodong('del', item)">删除</el-button>
<div v-if="item.isMe" class="item-ope">
<el-button
type="primary"
v-if="item.isPublish === '0'"
size="mini"
@click="handleClickHuodong('publish', item)"
>发布</el-button
>
<el-button
type="success"
size="mini"
@click="handleClickHuodong('edit', item)"
>修改</el-button
>
<el-button
size="mini"
@click="handleClickHuodong('del', item)"
>删除</el-button
>
</div>
</div>
<div class="item"
:key="item.scheduleId"
v-for="item in currentDateData.scheduleList">
<div
class="item"
:key="item.scheduleId"
v-for="item in currentDateData.scheduleList"
>
<div class="item-title">
{{ item.title }}
</div>
@ -93,22 +114,29 @@
<span>{{ item.remark }}</span>
</div>
<div class="item-ope">
<el-button type="success"
size="mini"
@click="handleClickRicheng('edit', item)">修改</el-button>
<el-button size="mini"
@click="handleClickRicheng('del', item)">删除</el-button>
<el-button
type="success"
size="mini"
@click="handleClickRicheng('edit', item)"
>修改</el-button
>
<el-button
size="mini"
@click="handleClickRicheng('del', item)"
>删除</el-button
>
</div>
</div>
</div>
</div>
<div class="m-ope">
<el-button type="warning"
style="width: 48%"
@click="addHudong">添加活动计划</el-button>
<el-button style="width: 48%"
@click="addRicheng">添加日程</el-button>
<el-button type="warning" style="width: 48%" @click="addHudong"
>添加活动计划</el-button
>
<el-button style="width: 48%" @click="addRicheng"
>添加日程</el-button
>
</div>
</el-col>
@ -116,54 +144,74 @@
<div class="m-cal">
<div class="hd">
<div class="hd-year">
<el-date-picker v-model="currentYearStr"
value-format="yyyy"
type="year"
placeholder="选择年度"
size="big"
style="width: 100px;">
<el-date-picker
v-model="currentYearStr"
value-format="yyyy"
type="year"
placeholder="选择年度"
size="big"
style="width: 100px"
:editable="false"
:clearable="false"
>
</el-date-picker>
</div>
<div class="hd-month">
<div class="month-item"
:class="{ 'z-on': m - 1 == currentMonth }"
:key="'month' + m"
@click="currentMonth = m - 1"
v-for="m in 12">
<el-badge :value="monthData[m-1]"
:hidden="monthData[m-1] == 0"
class="item">
<div
class="month-item"
:class="{ 'z-on': m - 1 == currentMonth }"
:key="'month' + m"
@click="currentMonth = m - 1"
v-for="m in 12"
>
<el-badge
:value="monthData[m - 1]"
:hidden="monthData[m - 1] == 0"
class="item"
>
<div class="month-text">{{ m }}</div>
</el-badge>
</div>
</div>
<div class="hd-btn">
<el-button type="primary"
size="big"
@click="handleAddYearPlan"
style="padding-left:10px; padding-right:10px;">生成年度活动计划</el-button>
<el-button
type="primary"
size="big"
@click="handleAddYearPlan"
style="padding-left: 10px; padding-right: 10px"
>生成年度活动计划</el-button
>
</div>
</div>
<calendar :currentYear="currentYear"
:currentMonth="currentMonth"
@rangeChange="handleRangeChange"
@clickDate="handleChangeDate">
<calendar
:currentYear="currentYear"
:currentMonth="currentMonth"
@rangeChange="handleRangeChange"
@clickDate="handleChangeDate"
>
<template v-slot:date-item="{ item, index }">
<div class="tip"
v-if="
<div
class="tip"
v-if="
rangeData[item.dateId] &&
rangeData[item.dateId].activityList.length > 0
">
<div class="tip-num"
v-if="rangeData[item.dateId].activityList.length > 1">
"
>
<div
class="tip-num"
v-if="rangeData[item.dateId].activityList.length > 1"
>
{{ rangeData[item.dateId].activityList.length }}
</div>
<div class="tip-text">
<span class="z-on">
{{ rangeData[item.dateId].activityList[0].actTypeName }}</span>
{{
rangeData[item.dateId].activityList[0].actTypeName
}}</span
>
{{
rangeData[item.dateId].activityList[0].isPublish==='0'
rangeData[item.dateId].activityList[0].isPublish === "0"
? "(未发布)"
: "(已发布)"
}}
@ -172,11 +220,12 @@
{{ rangeData[item.dateId].activityList[0].topic }}
</div>
<div class="all-list"
:class="computeAllListClass(index)">
<div class="item"
:key="item.activityId"
v-for="item in rangeData[item.dateId].activityList">
<div class="all-list" :class="computeAllListClass(index)">
<div
class="item"
:key="item.activityId"
v-for="item in rangeData[item.dateId].activityList"
>
<div class="item-title">
{{ item.theme }}
</div>
@ -184,6 +233,10 @@
<span>活动类型</span>
<span>{{ item.actTypeName }}</span>
</div>
<div class="item-prop">
<span>活动主题</span>
<span>{{ item.topic }}</span>
</div>
<div class="item-prop">
<span>开始时间</span>
<span>{{ item.holdTime }}</span>
@ -199,21 +252,24 @@
</div>
</div>
</div>
<div class="corn"
v-if="
<div
class="corn"
v-if="
rangeData[item.dateId] &&
rangeData[item.dateId].scheduleList.length > 0
">
"
>
<div class="corn-num">
{{ rangeData[item.dateId].scheduleList.length }}
</div>
<div class="corn-text">日程</div>
<div class="all-list"
:class="computeAllListClass(index)">
<div class="item"
:key="item.scheduleId"
v-for="item in rangeData[item.dateId].scheduleList">
<div class="all-list" :class="computeAllListClass(index)">
<div
class="item"
:key="item.scheduleId"
v-for="item in rangeData[item.dateId].scheduleList"
>
<div class="item-title">
{{ item.title }}
</div>
@ -240,42 +296,52 @@
</div>
<div v-if="showType === 'yearplan'">
<yearplan-list :currentYearStr="currentYearStr"
@handleOk="handleAddPlanOk"
@handleClose="handleAddPlanClose"></yearplan-list>
<yearplan-list
:currentYearStr="currentYearStr"
@handleOk="handleAddPlanOk"
@handleClose="handleAddPlanClose"
></yearplan-list>
</div>
<el-dialog v-if="showAdd"
:visible.sync="showAdd"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="addDiaTitle"
width="850px"
top="5vh"
class="dialog-h"
@closed="showAdd = false">
<add-activity ref="ref_add_form"
:formType="formType"
:icPartyActId="icPartyActId"
:defaultTime="currentDate.dateId"
@handleOk="handleOk"
@handleClose="handleClose"></add-activity>
<el-dialog
v-if="showAdd"
:visible.sync="showAdd"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="addDiaTitle"
width="850px"
top="5vh"
class="dialog-h"
@closed="showAdd = false"
>
<add-activity
ref="ref_add_form"
:formType="formType"
:icPartyActId="icPartyActId"
:defaultTime="currentDate.dateId"
@handleOk="handleOk"
@handleClose="handleClose"
></add-activity>
</el-dialog>
<el-dialog v-if="showSchedule"
:visible.sync="showSchedule"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="scheduleDiaTitle"
width="850px"
top="5vh"
class="dialog-h"
@closed="showSchedule = false">
<schedule-form ref="ref_schedule_form"
:formType="formType"
:scheduleId="scheduleId"
@handleOk="handleOk"
@handleClose="handleClose">
<el-dialog
v-if="showSchedule"
:visible.sync="showSchedule"
:close-on-click-modal="false"
:close-on-press-escape="false"
:title="scheduleDiaTitle"
width="850px"
top="5vh"
class="dialog-h"
@closed="showSchedule = false"
>
<schedule-form
ref="ref_schedule_form"
:formType="formType"
:scheduleId="scheduleId"
@handleOk="handleOk"
@handleClose="handleClose"
>
</schedule-form>
</el-dialog>
</div>
@ -289,7 +355,7 @@ import yearplanList from "../orgActivity/activivityList/yearplanList";
import addActivity from "../orgActivity/activivityList/addActivity";
import scheduleForm from "../orgActivity/activivityList/scheduleForm";
function doAfter (fn) {
function doAfter(fn) {
return new Promise(async (resolve) => {
while (!fn()) {
await nextTick(100);
@ -306,7 +372,7 @@ export default {
addActivity,
scheduleForm,
},
data () {
data() {
let todayObj = new Date();
return {
@ -357,10 +423,10 @@ export default {
};
},
computed: {
currentYear () {
currentYear() {
return parseInt(this.currentYearStr);
},
apiParams () {
apiParams() {
const { currentYear, fmData } = this;
return {
yearId: currentYear,
@ -387,13 +453,13 @@ export default {
this.getMonthData();
},
},
async mounted () {
async mounted() {
await this.getPartyOptions();
this.getMonthData();
},
methods: {
//
addHudong () {
addHudong() {
this.icPartyActId = "";
this.addDiaTitle = "新增活动计划";
this.formType = "add";
@ -401,14 +467,14 @@ export default {
},
//
addRicheng () {
addRicheng() {
this.formType = "schedule";
this.scheduleId = ''
this.scheduleId = "";
this.showSchedule = true;
},
//
handleClickHuodong (type, item) {
handleClickHuodong(type, item) {
console.log(type, item);
this.icPartyActId = item.activityId;
@ -452,7 +518,7 @@ export default {
}
},
async publishActivity () {
async publishActivity() {
const url = `/resi/partymember/icPartyAct/publish/${this.icPartyActId}`;
const { data, code, msg } = await requestPost(url, {});
@ -465,7 +531,7 @@ export default {
}
},
async cancelActivity () {
async cancelActivity() {
const url = "/resi/partymember/icPartyAct/del";
let params = [];
@ -482,7 +548,7 @@ export default {
},
//
handleClickRicheng (type, item) {
handleClickRicheng(type, item) {
console.log(type, item);
this.scheduleId = item.scheduleId;
if (type == "edit") {
@ -507,7 +573,7 @@ export default {
}
},
async cancelSchedule () {
async cancelSchedule() {
const url = "/resi/partymember/icSchedule/del";
let params = [];
@ -524,15 +590,15 @@ export default {
},
//
refreshData () {
refreshData() {
this.getMonthData();
this.getRangeData();
this.getCurrentDateData();
},
handleChangeParty () { },
handleChangeParty() {},
handleChangeDate (item) {
handleChangeDate(item) {
console.log("handleChangeDate");
this.currentYearStr = item.year + "";
this.currentMonth = item.month;
@ -541,7 +607,7 @@ export default {
this.getCurrentDateData();
},
computeAllListClass (index) {
computeAllListClass(index) {
let x = index % 7;
let y = Math.floor(index / 7);
if (x < 3) {
@ -559,12 +625,12 @@ export default {
}
},
handleRangeChange (arr) {
handleRangeChange(arr) {
this.rangeDateList = arr;
this.getRangeData();
},
async getRangeData () {
async getRangeData() {
const arr = this.rangeDateList;
const url = "/resi/partymember/icPartyAct/homeSearch";
@ -602,7 +668,7 @@ export default {
}
},
async getMonthData () {
async getMonthData() {
const url = "/resi/partymember/icPartyAct/homeMonthTotal";
if (!this.apiParams.orgId) return;
@ -616,14 +682,14 @@ export default {
this.monthData[index] = parseInt(item.count);
});
console.log("--------------monthData", this.monthData);
this.$forceUpdate()
this.$forceUpdate();
}
} else {
this.$message.error(msg);
}
},
async getCurrentDateData () {
async getCurrentDateData() {
const url = "/resi/partymember/icPartyAct/actAndScheduleList";
if (!this.apiParams.orgId) return;
@ -640,7 +706,7 @@ export default {
}
},
async getPartyOptions () {
async getPartyOptions() {
const url = "/resi/partymember/icPartyOrg/getSearchTreelist";
let params = {
customerId: localStorage.getItem("customerId"),
@ -657,25 +723,25 @@ export default {
}
},
handleAddYearPlan () {
handleAddYearPlan() {
this.showType = "yearplan";
},
handleAddPlanOk () {
handleAddPlanOk() {
this.showType = "list";
this.refreshData();
},
handleAddPlanClose () {
handleAddPlanClose() {
this.showType = "list";
},
handleClose () {
handleClose() {
this.formType = "";
this.showAdd = false;
this.showSchedule = false;
},
handleOk () {
handleOk() {
this.handleClose();
this.refreshData();
},
@ -731,6 +797,8 @@ $red: #f33;
font-size: 14px;
font-weight: bold;
cursor: pointer;
opacity: 0.7;
transform: scale(0.94);
}
}
}

12
src/views/modules/communityParty/stas/index.vue

@ -75,42 +75,42 @@
header-align="center"
align="center"
label="支部党员大会(次)"
min-width="80">
>
</el-table-column>
<el-table-column prop="wyhNum"
header-align="center"
align="center"
label="支部委员会(次)"
show-overflow-tooltip
max-width="100">
>
</el-table-column>
<el-table-column prop="dxzhNum"
header-align="center"
show-overflow-tooltip
align="center"
label="党小组会(次)"
mix-width="80">
>
</el-table-column>
<el-table-column prop="dkNum"
header-align="center"
align="center"
show-overflow-tooltip
label="党课(次)"
mix-width="80">
>
</el-table-column>
<el-table-column prop="ztdrNum"
header-align="center"
align="center"
show-overflow-tooltip
label="主题党日(次)"
width="100">
>
</el-table-column>
<el-table-column prop="wmfwNum"
header-align="center"
align="center"
show-overflow-tooltip
label="为民服务活动(次)"
width="130">
>
</el-table-column>
</el-table>
</div>

4
src/views/modules/shequzhili/event/cpts/event-detail.vue

@ -10,8 +10,8 @@
<span>{{ info.gridName }}</span>
</div>
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">上报时间</span>
<span>{{ info.createdTime }}</span>
<span class="info-title-2">发生时间</span>
<span>{{ info.happenTime }}</span>
</div>
<div :class="['info-prop',{'info-prop-vis':source==='visiual'}]">
<span class="info-title-2">事件内容</span>

46
src/views/modules/shequzhili/event/eventList.vue

@ -48,18 +48,23 @@
</el-form-item>
<el-form-item label="事件类型"
prop="firstIdList">
<el-cascader ref="cascaderEvent" v-model="eventTypeCheck" :options="cateOptions"
collapse-tags
:show-all-levels="false"
:props="{
<el-cascader ref="cascaderEvent"
v-model="eventTypeCheck"
:options="cateOptions"
collapse-tags
:show-all-levels="false"
:props="{
multiple: true,
checkStrictly: false,
emitPath: false,
children:'subCategory',
label:'name',
value:'id'
}" clearable class="item_width_2" @change="handleEventType" />
<!-- <template slot-scope="{ node, data }">
}"
clearable
class="item_width_2"
@change="handleEventType" />
<!-- <template slot-scope="{ node, data }">
<div @click="cascaderClick(node, data)">
<span>{{ data.name }}</span>
</div>
@ -177,14 +182,12 @@
label="所属网格"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column
prop="categoryName"
label="事件类型"
min-width="140"
align="center"
:show-overflow-tooltip="true"
/>
<!-- <template slot-scope="scope">
<el-table-column prop="categoryName"
label="事件类型"
min-width="140"
align="center"
:show-overflow-tooltip="true" />
<!-- <template slot-scope="scope">
{{ scope.row.firstName + '-' + scope.row.secondName }}
</template>
</el-table-column> -->
@ -259,11 +262,11 @@
</template> -->
</el-table-column>
<el-table-column prop="createdTime"
<el-table-column prop="happenTime"
align="center"
width="140"
:show-overflow-tooltip="true"
label="上报时间">
label="发生时间">
</el-table-column>
<el-table-column prop="operationTypeShow"
align="center"
@ -505,7 +508,7 @@ export default {
this.getCateOptions()
},
methods: {
handleEventType(val) {
handleEventType (val) {
// console.log('val-----eee', val)
console.log('nodes---', this.$refs.cascaderEvent.getCheckedNodes())
const nodes = this.$refs.cascaderEvent.getCheckedNodes()
@ -709,11 +712,11 @@ export default {
this.delEvent(rowData.icEventId);
}).catch((err) => { });
},
async delEvent (eventId){
async delEvent (eventId) {
const url = "/gov/project/icEvent/delete";
let idsArr = [eventId];
const { data, code, msg } =await requestPost(url, idsArr);
const { data, code, msg } = await requestPost(url, idsArr);
if (code === 0) {
this.$message.success("删除成功!");
@ -757,7 +760,7 @@ export default {
this.$message.error(msg);
}
},
async getCateOptions() {
async getCateOptions () {
const url = "/gov/issue/issueprojectcategorydict/list";
const { data, code, msg } = await requestPost(url, {});
@ -807,7 +810,7 @@ export default {
this.getTableData();
// this.loadTable()
},
deepTree(arr, child) {
deepTree (arr, child) {
if (Array.isArray(arr) && arr.length > 0) {
return arr.map(item => {
// if (child === 'subAgencyList') item.value = item.orgType + '-' + item.orgId
@ -831,5 +834,4 @@ export default {
width: 200px;
}
}
</style>

425
src/views/modules/visual/communityParty/crateForm.vue

@ -0,0 +1,425 @@
<template>
<div class="m-pop">
<div class="wrap">
<cpt-card>
<div class="title">
<img src="@/assets/img/shuju/title-tip.png" />
<span>党员信息</span>
</div>
<div class="btn-close"
@click="handleCancle">
<img src="@/assets/img/shuju/people/close.png" />
</div>
<div class="m-top">
<div class="m-info-left">
<div class="m-info">
<div class="info-prop">
<span>所属党组织</span>
<span>{{ form.orgName }}</span>
</div>
<div class="info-prop">
<span>姓名</span>
<span>{{ form.name }}</span>
</div>
<div class="info-prop">
<span>手机号</span>
<span>{{ form.mobile }}</span>
</div>
<div class="info-prop">
<span>身份证</span>
<span>{{ form.idCard }}</span>
</div>
<div class="info-prop">
<span>地址</span>
<span>{{ form.address|| "--" }}</span>
</div>
<div class="info-prop">
<span>流动党员</span>
<span>{{ form.isLd==='1'?'是':'否' }}</span>
</div>
<div class="info-prop">
<span>备注</span>
<span>{{ form.remark || "--" }}</span>
</div>
</div>
</div>
<div class="m-info-right">
<div class="m-info">
<div class="info-prop">
<span>党员中心户</span>
<span>{{ form.isDyzxh==='1'?'是':'否' }}</span>
</div>
<div class="info-prop">
<span>免学习</span>
<span>{{ form.isMxx==='1'?'是':'否' }}</span>
</div>
<div class="info-prop">
<span>职务</span>
<span>{{ form.postName|| "--" }}</span>
</div>
<div class="info-prop">
<span>文化程度</span>
<span>{{ form.cultureName || "--" }}</span>
</div>
<div class="info-prop">
<span>入党时间</span>
<span>{{ form.rdsj || "--" }}</span>
</div>
<div class="info-prop">
<span>党员流动号</span>
<span>{{ form.ldzh || "--" }}</span>
</div>
</div>
</div>
</div>
<div class="m-btn">
<div style="margin-top: 20px; text-align: center;">
<el-button size="small"
:disabled="false"
@click="handleCancle">取消</el-button>
<el-button v-if="form.icResiUser != null && form.icResiUser != ''"
type="primary"
:disabled="false"
size="small"
@click="jump(form.icResiUser)">查看更多</el-button>
</div>
</div>
</cpt-card>
</div>
</div>
</template>
<script>
import { isCard, isMobile } from '@/utils/validate'
import { computedCard } from '@/utils/index'
import cptCard from "@/views/modules/visual/cpts/card";
export default {
components: {
cptCard
},
props: {
partyList: {
type: Array,
default: () => []
},
info: {
type: Object,
default: () => { }
},
disabled: {
type: Boolean,
default: false
}
},
data () {
let checkMObile = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入手机号'))
} else {
if (!isMobile(value)) {
callback(new Error('手机号格式不正确'))
}
callback()
}
}
let checkIdCard = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入身份证'))
} else {
if (!isCard(value)) {
callback(new Error('身份证号格式不正确'))
}
callback()
}
}
return {
activesName: 'first',
isAuto: false,
formItemWd: '100%',
partymenberid: '',
partyProps: {
label: 'partyOrgName',
value: 'id',
emitPath: false
},
zwList: [
{
label: '普通党员',
value: '0'
},
{
label: '支部书记',
value: '1'
},
{
label: '支部委员',
value: '2'
},
{
label: '党委委员',
value: '3'
},
],
form: {
icResiUser: '',
name: '',
mobile: '',
idCard: '',
address: '',
rdsj: '',
sszb: '',
isLd: '0',
ldzh: '',
partyZw: '0',
isDyzxh: '0',
isMxx: '0',
culture: '',
remark: ''
},
eduList: [],
rules: {
sszb: [{ required: true, message: '所属党组织不能为空', trigger: 'blur' }],
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
mobile: [{ required: true, validator: checkMObile, trigger: 'blur' }],
idCard: [{ required: true, validator: checkIdCard, trigger: 'blur' }],
},
partyOrgs: []
}
},
watch: {
info: {
handler (val) {
if (Object.keys(val).length > 0) {
this.form = { ...val }
if (val.icResiUserId || val.icResiUser) this.isAuto = true
console.log('val----------in', val)
console.log('isAuto----------in', this.isAuto)
this.partyOrgs = val.orgPids.split(':')
console.log('partyOrgs-----', this.partyOrgs)
this.partymenberid = val.id
}
},
immediate: true
}
},
created () {
this.getEduList()
console.log('partyList', this.partyList)
},
mounted () {
// const w = document.getElementsByClassName('dialog-h-content')[0]
// this.formItemWd = w.clientWidth + 'px'
},
destroyed () {
// this.$refs['ruleForm'].resetFields()
},
methods: {
handleCancle () {
// this.$refs['ruleForm'].resetFields()
this.$emit('cancle')
},
handleValidBlur (n) {
if (!isCard(this.form.idCard)) return
const { age } = computedCard(this.form.idCard)
this.form.isMxx = age >= 70 ? '1' : '0'
this.validateResi()
},
async getEduList () {
await this.$http
.post('/sys/dict/data/education')
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.eduList = res.data
}
})
.catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
},
async validateResi () {
const params = {
idCard: this.form.idCard,
agencyId: this.$store.state.user.agencyId
}
await this.$http
.post('/epmetuser/icresiuser/getUserByIdCard', params)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
const { address, icResiUserId } = res.data
if (icResiUserId) {
this.form.address = address
this.isAuto = true
} else {
this.form.address = ''
this.isAuto = false
}
}
})
.catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
},
hadnleSubmitbase () {
this.$refs['ruleForm'].validate((valid) => {
if (valid) {
if (Object.keys(this.info).length > 0) this.editBase()
else this.saveBase()
} else {
console.log('error submit!!');
return false;
}
});
},
handleSavePoints (data) {
const _data = { ...data }
const params = {
..._data,
baseOptions: data.baseOptions.length > 0 ? data.baseOptions.toString() : '',
reviewOptions: data.reviewOptions.length > 0 ? data.reviewOptions.toString() : '',
inspireOptions: data.inspireOptions.length > 0 ? data.inspireOptions.toString() : '',
warnOptions: data.warnOptions.length > 0 ? data.warnOptions.toString() : ''
}
this.savePoints(params)
},
async jump (icResiUserId) {
this.$emit('saveBase', icResiUserId)
},
async saveBase () {
const params = {
...this.form
}
await this.$http
.post('/resi/partymember/icPartyMember/save', params)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.$message.success('保存成功')
this.partymenberid = res.data
this.$emit('saveBase', true)
}
})
.catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
},
async editBase () {
const params = {
...this.form
}
await this.$http
.post('/resi/partymember/icPartyMember/update', params)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.$message.success('保存成功')
this.partymenberid = res.data
this.$emit('saveBase', true)
}
})
.catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
},
async savePoints (form) {
const params = {
...form,
partyMemberId: this.partymenberid
}
let url = ''
if (form.id) url = '/resi/partymember/icPartyMemberPoint/update'
else url = '/resi/partymember/icPartyMemberPoint/save'
await this.$http
.post(url, params)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.$message.success('保存成功')
}
})
.catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
},
async saveRecord (form) {
const params = {
...form,
partyMemberId: this.partymenberid
}
await this.$http
.post('/resi/partymember/icPartyMemberPoint/save', params)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.$message.success('保存成功')
}
})
.catch(err => {
console.log('err', err)
return this.$message.error('网络错误')
})
}
}
}
</script>
<style lang="scss" scoped>
.input-width-textarea {
width: 400px;
}
.input-width {
width: 220px;
}
.flex-div {
display: flex;
// justify-content: space-between;
}
.wd50 {
width: 50%;
}
.pdl40 {
padding-left: 40px;
}
.pd0 {
padding: 0 !important;
}
</style>
<style
lang="scss"
src="@/assets/scss/modules/visual/incident-info.scss"
scoped
></style>

325
src/views/modules/visual/communityParty/party.vue

@ -2,7 +2,8 @@
<div class="warning-box">
<cpt-card :min-full-screen="true">
<div class="card-title">
<img class="title-icon" src="../../../../assets/img/shuju/title-tip.png" />
<img class="title-icon"
src="../../../../assets/img/shuju/title-tip.png" />
<div class="title-label">
党员信息统计&nbsp;&nbsp;
<!-- <el-cascader
@ -13,18 +14,18 @@
:getCheckedNodes="getCheckedNodes"
clearable @change="handleCascader">
</el-cascader> -->
<el-cascader
v-model="partyOrgs"
:options="partyOrgList"
:props="{
<el-cascader v-model="partyOrgs"
:options="partyOrgList"
:props="{
label: 'partyOrgName',
value: 'id',
checkStrictly: true
}"
:show-all-levels="false"
clearable @change="handlePartyCascader">
}"
:show-all-levels="false"
clearable
@change="handlePartyCascader">
</el-cascader>
</div>
</div>
</div>
<div class="card-echart">
<div class="card-left">
@ -33,14 +34,17 @@
<div class="echart-wr">
<!-- <div class="echart-cicle"></div> -->
<screen-echarts-frame class="echart-org"
@myChartMethod="pieInitOk"
ref="ageChart"></screen-echarts-frame>
@myChartMethod="pieInitOk"
ref="ageChart"></screen-echarts-frame>
<!-- <div id="echartOrg" class="echart-org"></div> -->
</div>
<div class="echarts-tips echarts-tips-wd50">
<div class="tips-lists">
<div v-for="(item, index) in ageItem" :key="index" class="tips-items">
<div class="tips-items-title" :class="'tips-items-title' + item.code">
<div v-for="(item, index) in ageItem"
:key="index"
class="tips-items">
<div class="tips-items-title"
:class="'tips-items-title' + item.code">
{{ item.name }}
</div>
<div class="tips-items-num">
@ -48,34 +52,33 @@
<div class="tips-item-has">{{ item.radio }}</div>
</div>
</div>
</div>
</div>
</div>
<div class="ecahrts-button">
<el-button type="warning" size="small" @click="handleExport('age')">导出</el-button>
<el-button type="warning"
size="small"
@click="handleExport('age')">导出</el-button>
</div>
<div class="warning-box-bottom">
<screen-table
:headerList="headerList"
:tableData="ageList"
:headerStyle="headerStyle"
:tableContentStyle="headerStyle"
:visibleLoading="visibleAgeLoading"
:operate="false"
@row="handleClickRow"
></screen-table>
<screen-table :headerList="headerList"
:tableData="ageList"
:headerStyle="headerStyle"
:tableContentStyle="headerStyle"
:visibleLoading="visibleAgeLoading"
:operate="false"
@row="handleClickRow"></screen-table>
<div class="pagination">
<el-pagination hide-on-single-page
:current-page="agePageNo"
:page-size="agePageSize"
background
layout="prev, pager, next"
@size-change="pageSizeChangeHandleAge"
@current-change="pageCurrentChangeHandleAge"
:total="ageTotal"
>
:current-page="agePageNo"
:page-size="agePageSize"
background
layout="prev, pager, next"
@size-change="pageSizeChangeHandleAge"
@current-change="pageCurrentChangeHandleAge"
:total="ageTotal">
</el-pagination>
</div>
</div>
@ -87,50 +90,71 @@
<!-- <div class="echart-cicle echart-cicle0"></div> -->
<!-- <div id="echartType" class="echart-org"></div> -->
<screen-echarts-frame class="echart-org"
@myChartMethod="pieInitOks"
ref="eduChart"></screen-echarts-frame>
@myChartMethod="pieInitOks"
ref="eduChart"></screen-echarts-frame>
</div>
<div v-if="false" class="echarts-tips">
<div v-if="false"
class="echarts-tips">
<div class="tips-list">
<div v-for="item in eduItem" :key="item.value" class="tips-item">
<div class="tips-item-icon" :style="'background:' + item.color"></div>
<div v-for="item in eduItem"
:key="item.value"
class="tips-item">
<div class="tips-item-icon"
:style="'background:' + item.color"></div>
<div class="tips-item-text">{{item.name}}</div>
</div>
</div>
</div>
</div>
<div class="ecahrts-button">
<el-button type="warning" size="small" @click="handleExport('edu')">导出</el-button>
<el-button type="warning"
size="small"
@click="handleExport('edu')">导出</el-button>
</div>
<div class="warning-box-bottom">
<screen-table
:headerList="headerEduList"
:tableData="eduList"
:headerStyle="headerStyle"
:tableContentStyle="headerStyle"
:visibleLoading="visibleLoading"
:operate="false"
@row="handleClickRow"
></screen-table>
<screen-table :headerList="headerEduList"
:tableData="eduList"
:headerStyle="headerStyle"
:tableContentStyle="headerStyle"
:visibleLoading="visibleLoading"
:operate="false"
@row="handleClickRow"></screen-table>
<div class="pagination">
<el-pagination hide-on-single-page
:current-page="pageNo"
:page-size="pageSize"
background
layout="prev, pager, next"
@size-change="pageSizeChangeHandleNew"
@current-change="pageCurrentChangeHandleNew"
:total="total"
>
:current-page="pageNo"
:page-size="pageSize"
background
layout="prev, pager, next"
@size-change="pageSizeChangeHandleNew"
@current-change="pageCurrentChangeHandleNew"
:total="total">
</el-pagination>
</div>
</div>
</div>
</div>
</cpt-card>
<crate-form v-if="memberDialog"
:info="memberDetailInfo"
:partyList="optionsG"
:disabled="disabled"
@saveBase="jumpDetail"
@cancle="handlerCancle" />
<!-- <el-dialog
title="党员信息"
:visible.sync="memberDialog"
width="60%"
top="5vh"
class="dialog-h"
append-to-body
:close-on-click-modal="false"
:before-close="handlerCancle">
<crate-form v-if="memberDialog" :info="memberDetailInfo" :partyList="optionsG" :disabled="disabled"
@saveBase="jumpDetail" @cancle="handlerCancle" />
</el-dialog> -->
</div>
</template>
@ -140,6 +164,7 @@ import screenTable from "../components/screen-table/index";
import cptCard from "@/views/modules/visual/cpts/card";
import nextTick from "dai-js/tools/nextTick";
import screenEchartsFrame from "../components/screen-echarts-frame";
import crateForm from './crateForm.vue';
import { pieOption } from './options'
import * as echarts from 'echarts';
@ -148,10 +173,15 @@ export default {
components: {
cptCard,
screenTable,
screenEchartsFrame
screenEchartsFrame,
crateForm
},
data() {
data () {
return {
memberDialog: false,
disabled: true,
memberDetailInfo: {},
optionsG: [],
headerList: [
{ title: "序号", coulmn: 'index' },
{ title: "姓名", coulmn: 'name' },
@ -272,7 +302,7 @@ export default {
pieEduOptions: null
};
},
async mounted() {
async mounted () {
await nextTick(100);
// await this.getAgencyList()
await this.getPartyOggList()
@ -280,16 +310,41 @@ export default {
// this.getEduCount(this.$store.state.user.agencyId, 'agency')
// this.getAgeList(this.$store.state.user.agencyId, 'agency')
// this.getEduList(this.$store.state.user.agencyId, 'agency')
this.getAgeCount()
this.getAgeCount()
this.getEduCount()
this.getAgeList()
this.getEduList()
// this.initAgeCharts()
// this.initEduCharts()
// this.initChartType()
},
async created () {
this.getGridList('query')
},
methods: {
handleSearch () {
this.memberDialog = false
},
handlerCancle () {
this.memberDialog = false
},
async getGridList (type, agencyId) {
const { user } = await this.$store.state
// addorupdate query
await this.$http
.get('/resi/partymember/icPartyOrg/getSearchTreelist', { params: { agencyId: agencyId || user.agencyId } })
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.optionsG = this.deepArrTOnull(res.data)
}
})
.catch(() => {
return this.$message.error('网络错误')
})
},
pieInitOk (dom) {
console.log('pie准备好了', dom)
this.pieAgeChartS = dom
@ -302,11 +357,11 @@ export default {
// this.pieInitState = true
},
initAgeCharts() {
initAgeCharts () {
// const eId = document.getElementById('echartOrg')
// let _charts = echarts.init(eId)
let option = {
}
this.pieAgeOptions = pieOption(this.pieAgeChartS)
this.clickAgePie(0)
@ -332,11 +387,11 @@ export default {
// option && this.$refs.pieChart.setOption(option);
},
initEduCharts() {
initEduCharts () {
// const eId = document.getElementById('echartOrg')
// let _charts = echarts.init(eId)
let option = {
}
let legend = {
show: true,
@ -394,7 +449,7 @@ export default {
// option && this.$refs.pieChart.setOption(option);
},
clickAgePie (seriesIndex) {
let _code = ''
let isClick = false
@ -402,7 +457,7 @@ export default {
this.ageItem.forEach((element, index) => {
if (index === seriesIndex) {
_code = element.code
if (!this.noInit) isClick = false
else {
element.isClick = !element.isClick
@ -514,10 +569,10 @@ export default {
}
this.noEduInit = true
},
async getAgeCount(orgId, orgType) {
async getAgeCount (orgId, orgType) {
// const url = "/epmetuser/icresiuser/partymemberagestatistics";
const url = '/resi/partymember/icPartyMember/partymemberagestatistics'
let params = {
@ -567,7 +622,7 @@ export default {
} else {
}
},
async getEduCount(orgId, orgType) {
async getEduCount (orgId, orgType) {
// const url = "/epmetuser/icresiuser/partymembereducationstatistics";
const url = '/resi/partymember/icPartyMember/partymembereducationstatistics'
let params = {
@ -591,8 +646,8 @@ export default {
} else {
}
},
async getAgeList(orgId, orgType, _code) {
async getAgeList (orgId, orgType, _code) {
this.visibleAgeLoading = true
// const url = "/epmetuser/icresiuser/partymemberagelist";
const url = '/resi/partymember/icPartyMember/partymemberagelist'
@ -618,7 +673,7 @@ export default {
// if (_code == 0 || _code) this.noInit = true
this.visibleAgeLoading = false
},
async getEduList(orgId, orgType, _code) {
async getEduList (orgId, orgType, _code) {
this.visibleLoading = true
// const url = "/epmetuser/icresiuser/partymembereducationlist";
const url = '/resi/partymember/icPartyMember/partymembereducationlist'
@ -644,34 +699,34 @@ export default {
}
this.visibleLoading = false
},
async getPartyOggList(node, resolve) {
async getPartyOggList (node, resolve) {
// const url = "/gov/org/customeragency/staffinagencylist";
// const url = '/gov/org/customeragency/agencygridtree'
// const url = '/resi/partymember/icPartyOrg/getTreelist'
const url ='/resi/partymember/icPartyOrg/getSearchTreelist'
const url = '/resi/partymember/icPartyOrg/getSearchTreelist'
let params = {
agencyId: this.$store.state.user.agencyId,
};
const { data, code, msg } = await requestGet(url, params);
console.log('data-orgparty----o', data)
if (code === 0) {
this.partyOrgList = this.deepArrTOnull(data)
} else {
}
},
deepArrTOnull(arr) {
deepArrTOnull (arr) {
let a = []
a = arr.map(item => {
return {
...item,
children: (item.children.length > 0 && this.deepArrTOnull(item.children) )|| null
children: (item.children.length > 0 && this.deepArrTOnull(item.children)) || null
}
})
return a
},
async getAgencyList(node, resolve) {
async getAgencyList (node, resolve) {
// const url = "/gov/org/customeragency/staffinagencylist";
const url = '/gov/org/customeragency/agencygridtree'
// let params = {
@ -690,25 +745,26 @@ export default {
} else {
}
},
getTreeData(data){
getTreeData (data) {
if (!Array.isArray(data)) return []
let arr = data.map(item => {
let _item = {}
if (item.subAgencyList) {
if (item.subAgencyList.length === 0) {
_item = {
_item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
children: undefined
children: undefined
}
} else _item = {
} else _item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
children: this.getTreeData(item.subAgencyList)}
children: this.getTreeData(item.subAgencyList)
}
} else {
_item = {
_item = {
label: item.agencyName,
value: item.agencyId + '-' + item.level,
level: item.level,
@ -718,19 +774,37 @@ export default {
})
return arr
},
handleClickRow(val) {
console.log('click-row----', val)
if (!val.icResiUser) {
return this.$message.warning('该党员居民信息未完善')
}
handleClickRow (val) {
this.getDetail(val.userId)
this.memberDialog = true
},
jumpDetail (val) {
this.memberDialog = false
this.$router.push({
path: `/main-shuju/visual-basicinfo-people/${val.icResiUser}`,
path: `/main-shuju/visual-basicinfo-people/${val}`,
});
},
handleCascader(val) {
getDetail (id) {
let params = {
id,
}
this.$http
.post(`/resi/partymember/icPartyMember/${id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
} else {
this.memberDetailInfo = { ...res.data }
}
})
.catch((err) => {
return this.$message.error('网络错误')
})
},
handleCascader (val) {
console.log('val-vvv', val)
const _arr = val[val.length - 1].split('-')
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid'
const orgType = _arr[1] !== 'grid' ? 'agency' : 'grid'
this.agencyId = _arr[0]
this.orgType = orgType
this.noInit = false
@ -742,7 +816,7 @@ export default {
this.getAgeList(_arr[0], orgType)
this.getEduList(_arr[0], orgType)
},
handlePartyCascader(val) {
handlePartyCascader (val) {
console.log('val-vvvpppppp', val)
this.noInit = false
this.noEduInit = false
@ -762,17 +836,17 @@ export default {
this.getAgeList('')
this.getEduList('')
}
},
getCheckedNodes(val) {
getCheckedNodes (val) {
console.log('val-nnn', val)
},
lazyLoad(node, resolve) {
lazyLoad (node, resolve) {
setTimeout(() => {
this.getAgeList(node, resolve)
}, 500)
},
pageSizeChangeHandleAge(val) {
pageSizeChangeHandleAge (val) {
this.agePageNo = 1
this.agePageSize = val
this.getAgeList(this.agencyId, this.orgType, this.ageCode)
@ -781,22 +855,22 @@ export default {
this.agePageNo = val
this.getAgeList(this.agencyId, this.orgType, this.ageCode)
},
pageSizeChangeHandleNew(val) {
pageSizeChangeHandleNew (val) {
this.pageNo = 1;
this.pageSize = val;
this.getEduList(this.agencyId, this.orgType, this.eduCode)
},
pageCurrentChangeHandleNew(val) {
pageCurrentChangeHandleNew (val) {
this.pageNo = val;
this.getEduList(this.agencyId, this.orgType, this.eduCode)
},
async handleExport(type) {
async handleExport (type) {
const urls = {
age: '/epmetuser/icresiuser/partymemberagelist/export',
edu: '/epmetuser/icresiuser/partymembereducationlist/export'
}
const _arr = this.selectAgency[this.selectAgency.length - 1].split('-')
const orgType = _arr[1] !== 'grid' ? 'agency': 'grid'
const orgType = _arr[1] !== 'grid' ? 'agency' : 'grid'
let params = {
orgId: _arr[0],
orgType: orgType,
@ -878,8 +952,8 @@ export default {
color: #fff;
line-height: 24px;
text-align: center;
background: #06186D;
border: 1px solid #1A64CC;
background: #06186d;
border: 1px solid #1a64cc;
border-radius: 2px;
}
.el-input__prefix {
@ -891,15 +965,13 @@ export default {
line-height: 24px;
}
}
}
}
.title-label {
.title-label {
font-size: 22px;
font-family: PingFang SC;
font-weight: 800;
::v-deep .el-input {
width: 180px;
.el-input__inner {
font-size: 18px;
@ -909,7 +981,7 @@ export default {
border: 1px solid #1a64cc;
}
.el-icon-arrow-down::before {
content: "\e790";
content: "\e790";
}
}
}
@ -937,7 +1009,7 @@ export default {
color: #fff;
}
.card-left-title::after {
content: '';
content: "";
position: absolute;
top: 50%;
left: 20px;
@ -945,7 +1017,7 @@ export default {
height: 12px;
box-sizing: border-box;
margin-top: -6px;
background: #2865FA;
background: #2865fa;
border-radius: 50%;
}
.echart-wr {
@ -988,7 +1060,10 @@ export default {
.echarts-tips-wd50 {
width: 320px;
}
.tips-list, .tips-item, .tips-lists, .tips-items-num {
.tips-list,
.tips-item,
.tips-lists,
.tips-items-num {
display: flex;
align-items: center;
}
@ -1008,12 +1083,12 @@ export default {
height: 10px;
box-sizing: border-box;
margin-right: 8px;
background: #1B51FF;
background: #1b51ff;
border-radius: 2px;
}
.tips-item-text {
font-size: 16px;
color: #D2E7FF;
color: #d2e7ff;
}
}
}
@ -1034,19 +1109,24 @@ export default {
box-sizing: border-box;
padding-left: 6px;
font-size: 16px;
color: #EFF0F1;
background: url('../../../../assets/img/shuju/measure/huang@2x.png') no-repeat left bottom;
color: #eff0f1;
background: url("../../../../assets/img/shuju/measure/huang@2x.png")
no-repeat left bottom;
&1 {
background: url('../../../../assets/img/shuju/measure/lv@2x.png') no-repeat left bottom;
background: url("../../../../assets/img/shuju/measure/lv@2x.png")
no-repeat left bottom;
}
&2 {
background: url('../../../../assets/img/shuju/measure/zi@2x.png') no-repeat left bottom;
background: url("../../../../assets/img/shuju/measure/zi@2x.png")
no-repeat left bottom;
}
&3 {
background: url('../../../../assets/img/shuju/measure/lan@2x.png') no-repeat left bottom;
background: url("../../../../assets/img/shuju/measure/lan@2x.png")
no-repeat left bottom;
}
&4 {
background: url('../../../../assets/img/shuju/measure/lanlv@2x.png') no-repeat left bottom;
background: url("../../../../assets/img/shuju/measure/lanlv@2x.png")
no-repeat left bottom;
}
}
.tips-items-num {
@ -1074,8 +1154,7 @@ export default {
padding-right: 30px;
text-align: right;
::v-deep .el-button--warning {
background: linear-gradient(90deg, #0863EA, #3B9FFC);
background: linear-gradient(90deg, #0863ea, #3b9ffc);
border: 0;
}
}

59
src/views/modules/workSys/resiCate.vue

@ -185,6 +185,26 @@
size="small"
label="描述文字"></el-input-number> /
</el-form-item>
<el-form-item v-if="form.columnName==='IS_YLFN'"
label="自动匹配">
<el-switch v-model="autoMatching"></el-switch>
</el-form-item>
<el-form-item v-if="form.columnName==='IS_YLFN' && autoMatching"
label="匹配规则">
<span>年龄</span>
<el-input-number v-model="ageMin"
:min="0"
size="small"
label="描述文字"></el-input-number>
<span>{{' — '}}</span>
<el-input-number v-model="ageMax"
:min="ageMin"
size="small"
label="描述文字"></el-input-number>
</el-form-item>
</el-form>
<div class="resi-btns">
<el-button size="small"
@ -290,6 +310,10 @@ export default {
level2: 0,
level3: 0
},
autoMatching: false,
ageMin: 0,
ageMax: 1,
rules: {
managementIcon: [{ required: true, message: '管理平台图标不能为空', trigger: 'blur' }],
dataIcon: [{ required: true, message: '数据平台图标不能为空', trigger: 'blur' }],
@ -430,8 +454,26 @@ export default {
warn: row.warn == '1' ? true : false,
level1: row.level1 || 0,
level2: row.level2 || 0,
level3: row.level3 || 0
level3: row.level3 || 0,
}
if (row.columnName === 'IS_YLFN') {
if (row.autoMatching === '1') {
this.autoMatching = true
} else {
this.autoMatching = false
}
if (row.ylfnValue) {
let array = row.ylfnValue.split(',')
this.ageMin = array[0]
this.ageMax = array[1]
}
}
this.dialogVisible = true
},
async handleSUbmit () {
@ -440,6 +482,21 @@ export default {
if (this.form.warn) {
if (!this.form.level1) return this.$message.error('黄色预警不能为0')
}
if (this.form.columnName === 'IS_YLFN') {
this.form.autoMatching = this.autoMatching ? '1' : '0'
if (this.autoMatching) {
if ((this.ageMin > 0 || this.ageMin === 0) && (this.ageMax > 0 || this.ageMax === 0)) {
this.form.ylfnValue = this.ageMin + ',' + this.ageMax
} else {
return this.$message.error('年龄范围不能为空')
}
}
} else {
}
this.btnLoading = true
const _form = {
...this.form,

Loading…
Cancel
Save