|
|
@ -1,28 +1,25 @@ |
|
|
|
<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="small" |
|
|
|
v-model="fmData.orgId" |
|
|
|
:options="partyOptions" |
|
|
|
:props="partyOptionsProps" |
|
|
|
:show-all-levels="false" |
|
|
|
@change="handleChangeParty" |
|
|
|
></el-cascader> |
|
|
|
<el-cascader class="customer_cascader" |
|
|
|
ref="myCascader" |
|
|
|
size="small" |
|
|
|
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> |
|
|
|
|
|
|
@ -34,26 +31,22 @@ |
|
|
|
<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> |
|
|
|
<div class="item-prop"> |
|
|
|
<span>活动类型:</span> |
|
|
|
<span>{{ item.type }}</span> |
|
|
|
<span>{{ item.actTypeName }}</span> |
|
|
|
</div> |
|
|
|
<div class="item-prop"> |
|
|
|
<span>开始时间:</span> |
|
|
@ -67,32 +60,22 @@ |
|
|
|
<span>参加组织:</span> |
|
|
|
<span>{{ item.joinOrgs.join("、") }}</span> |
|
|
|
</div> |
|
|
|
<div class="item-ope"> |
|
|
|
<el-button |
|
|
|
type="primary" |
|
|
|
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" |
|
|
|
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> |
|
|
@ -105,29 +88,22 @@ |
|
|
|
<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> |
|
|
|
|
|
|
@ -135,67 +111,51 @@ |
|
|
|
<div class="m-cal"> |
|
|
|
<div class="hd"> |
|
|
|
<div class="hd-year"> |
|
|
|
<el-date-picker |
|
|
|
v-model="currentYearStr" |
|
|
|
value-format="yyyy" |
|
|
|
type="year" |
|
|
|
placeholder="选择年" |
|
|
|
size="small" |
|
|
|
style="width: 150px" |
|
|
|
> |
|
|
|
<el-date-picker v-model="currentYearStr" |
|
|
|
value-format="yyyy" |
|
|
|
type="year" |
|
|
|
placeholder="选择年" |
|
|
|
size="small" |
|
|
|
style="width: 150px"> |
|
|
|
</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="small" |
|
|
|
@click="handleAddYearPlan" |
|
|
|
>批量生成年度报表</el-button |
|
|
|
> |
|
|
|
<el-button type="primary" |
|
|
|
size="small" |
|
|
|
@click="handleAddYearPlan">批量生成年度报表</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].type }}</span |
|
|
|
> |
|
|
|
{{ rangeData[item.dateId].activityList[0].actTypeName }}</span> |
|
|
|
{{ |
|
|
|
rangeData[item.dateId].activityList[0].isPublicValue |
|
|
|
? "(已发布)" |
|
|
@ -206,18 +166,17 @@ |
|
|
|
{{ 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> |
|
|
|
<div class="item-prop"> |
|
|
|
<span>活动类型:</span> |
|
|
|
<span>{{ item.type }}</span> |
|
|
|
<span>{{ item.actTypeName }}</span> |
|
|
|
</div> |
|
|
|
<div class="item-prop"> |
|
|
|
<span>开始时间:</span> |
|
|
@ -234,24 +193,21 @@ |
|
|
|
</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> |
|
|
@ -274,50 +230,40 @@ |
|
|
|
</div> |
|
|
|
|
|
|
|
<div v-if="showType === 'yearplan'"> |
|
|
|
<yearplan-list |
|
|
|
@handleOk="handleAddPlanOk" |
|
|
|
@handleClose="handleAddPlanClose" |
|
|
|
></yearplan-list> |
|
|
|
<yearplan-list @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" |
|
|
|
@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" |
|
|
|
@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> |
|
|
@ -331,7 +277,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); |
|
|
@ -348,7 +294,7 @@ export default { |
|
|
|
addActivity, |
|
|
|
scheduleForm, |
|
|
|
}, |
|
|
|
data() { |
|
|
|
data () { |
|
|
|
let todayObj = new Date(); |
|
|
|
|
|
|
|
return { |
|
|
@ -399,10 +345,10 @@ export default { |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
currentYear() { |
|
|
|
currentYear () { |
|
|
|
return parseInt(this.currentYearStr); |
|
|
|
}, |
|
|
|
apiParams() { |
|
|
|
apiParams () { |
|
|
|
const { currentYear, fmData } = this; |
|
|
|
return { |
|
|
|
yearId: currentYear, |
|
|
@ -427,13 +373,13 @@ export default { |
|
|
|
this.getMonthData(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
async mounted() { |
|
|
|
async mounted () { |
|
|
|
await this.getPartyOptions(); |
|
|
|
this.getMonthData(); |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
// 添加活动 |
|
|
|
addHudong() { |
|
|
|
addHudong () { |
|
|
|
this.icPartyActId = ""; |
|
|
|
this.addDiaTitle = "新增活动计划"; |
|
|
|
this.formType = "add"; |
|
|
@ -441,13 +387,14 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
// 添加日程 |
|
|
|
addRicheng() { |
|
|
|
addRicheng () { |
|
|
|
this.formType = "schedule"; |
|
|
|
this.scheduleId = '' |
|
|
|
this.showSchedule = true; |
|
|
|
}, |
|
|
|
|
|
|
|
// 点击活动操作 |
|
|
|
handleClickHuodong(type, item) { |
|
|
|
handleClickHuodong (type, item) { |
|
|
|
console.log(type, item); |
|
|
|
this.icPartyActId = item.activityId; |
|
|
|
|
|
|
@ -491,7 +438,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async publishActivity() { |
|
|
|
async publishActivity () { |
|
|
|
const url = `/resi/partymember/icPartyAct/publish/${this.icPartyActId}`; |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, {}); |
|
|
@ -504,7 +451,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async cancelActivity() { |
|
|
|
async cancelActivity () { |
|
|
|
const url = "/resi/partymember/icPartyAct/del"; |
|
|
|
|
|
|
|
let params = []; |
|
|
@ -521,7 +468,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
// 点击日程操作 |
|
|
|
handleClickRicheng(type, item) { |
|
|
|
handleClickRicheng (type, item) { |
|
|
|
console.log(type, item); |
|
|
|
this.scheduleId = item.scheduleId; |
|
|
|
if (type == "edit") { |
|
|
@ -546,7 +493,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async cancelSchedule() { |
|
|
|
async cancelSchedule () { |
|
|
|
const url = "/resi/partymember/icSchedule/del"; |
|
|
|
|
|
|
|
let params = []; |
|
|
@ -563,15 +510,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; |
|
|
@ -580,7 +527,7 @@ export default { |
|
|
|
this.getCurrentDateData(); |
|
|
|
}, |
|
|
|
|
|
|
|
computeAllListClass(index) { |
|
|
|
computeAllListClass (index) { |
|
|
|
let x = index % 7; |
|
|
|
let y = Math.floor(index / 7); |
|
|
|
if (x < 3) { |
|
|
@ -598,12 +545,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"; |
|
|
|
|
|
|
@ -641,7 +588,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async getMonthData() { |
|
|
|
async getMonthData () { |
|
|
|
const url = "/resi/partymember/icPartyAct/homeMonthTotal"; |
|
|
|
|
|
|
|
if (!this.apiParams.orgId) return; |
|
|
@ -661,7 +608,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async getCurrentDateData() { |
|
|
|
async getCurrentDateData () { |
|
|
|
const url = "/resi/partymember/icPartyAct/actAndScheduleList"; |
|
|
|
|
|
|
|
if (!this.apiParams.orgId) return; |
|
|
@ -678,7 +625,7 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
async getPartyOptions() { |
|
|
|
async getPartyOptions () { |
|
|
|
const url = "/resi/partymember/icPartyOrg/getSearchTreelist"; |
|
|
|
let params = { |
|
|
|
customerId: localStorage.getItem("customerId"), |
|
|
@ -695,25 +642,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(); |
|
|
|
}, |
|
|
|