This commit is contained in:
那些花儿
2025-07-02 19:22:58 +08:00
parent 725dc7b289
commit 56cbae8ec2
14 changed files with 1355 additions and 143 deletions
@@ -430,6 +430,7 @@
Vue.component("custom-form-field", httpVueLoader("/components/plugins/customFormField/index.vue?v=" + new Date().getTime()))
Vue.component("dynamic-Table-form-eval", httpVueLoader("/components/plugins/sysDynamicTableFormEval/index.vue?v=" + new Date().getTime()))
Vue.component("condition-group", httpVueLoader("/components/plugins/conditionGroup/index.vue?v=" + new Date().getTime()))
Vue.component("excel-import", httpVueLoader("/components/plugins/sysImport/excelImport.vue?v=" + new Date().getTime()))
</script>
</head>
<body>
@@ -3,28 +3,47 @@ const activity = {
<div class="home-activity">
<el-card shadow="never">
<div class="card-title" slot="header">最新活动</div>
<div v-if="activityOptions && activityOptions.length > 0" v-for="item in activityOptions" :key="item.id">
<div style="width: 100%">
<div style="background-color: #fff; position: relative; margin-bottom: 10px">
<div style="display: flex; justify-content: center; align-items: center">
<el-image :src="item.cover" alt="" fit="contain" style="margin: 3px 14px 0 0; width: 100px; height: 70px; border-radius: 8px">
<div v-if="activityOptions && activityOptions.length > 0" v-for="item in activityOptions"
:key="item.id">
<div style="width: 100%">
<div style="background-color: #fff; position: relative; margin-bottom: 10px">
<div style="display: flex; justify-content: center; align-items: center;border-bottom: 1px solid var(--border-color-lighter);padding-bottom: 8px">
<div
style="position: relative;flex-shrink: 1;width: 150px; height: 90px;margin-right: 10px; ">
<el-image :src="item.cover" alt="" fit="cover"
style="width: 100%; height: 100%; border-radius: 8px;">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
<div style="flex: 1">
<div style="line-height: 22px; color: #111">
<i class="el-icon-star-on" style="color: red; font-size: 17px"></i>{{item.name}}
</div>
<div style="font-size: 12px; line-height: 20px; color: #999">开始时间:{{$moment(item.startDate).format('MM-DD HH:mm')}}</div>
<div style="font-size: 12px; line-height: 20px; color: #999">结束时间:{{$moment(item.endDate).format('MM-DD HH:mm')}}</div>
<el-tag class="act-item-tag" type="danger" size="mini"
v-if="$moment().unix() > $moment(item.endDate).unix()">
已结束
</el-tag>
<el-tag class="act-item-tag" type="success" size="mini"
v-else-if="$moment().unix() < $moment(item.endDate).unix()">
进行中
</el-tag>
</div>
<div style="flex: 1;height: 90px;display: flex;flex-direction: column;justify-content: space-between;">
<div style="color: #111">
<i class="el-icon-star-on" style="color: red; font-size: 17px"></i>{{item.name}}
</div>
<div @click="enterActivity(item)">
<el-tag style="cursor: pointer">查看<i class="el-icon-s-promotion"></i></el-tag>
<div style="font-size: 12px; color: #999">
开始时间:{{$moment(item.startDate).format('MM-DD HH:mm')}}
</div>
<div style="font-size: 12px; color: #999">
结束时间:{{$moment(item.endDate).format('MM-DD HH:mm')}}
</div>
</div>
<div @click="enterActivity(item)">
<el-button size="mini" type="primary">查看<i class="el-icon-s-promotion"></i>
</el-button>
</div>
</div>
</div>
</div>
</div>
<el-empty v-if="activityOptions.length === 0" description="暂无活动"></el-empty>
</el-card>
@@ -63,5 +82,12 @@ const activity = {
.home-activity .el-empty {
padding: 40px 0 !important;
}
.home-activity .act-item-tag{
position: absolute;
right: 0;
bottom: 0;
z-index: 1;
}
`
}
@@ -22,7 +22,8 @@ const SYS_MENU_QUICK_ENTRY_COMPONENT = {
<el-table-column label="名称" prop="name"></el-table-column>
<el-table-column label="图标" prop="icon">
<template scope="{row}">
<svg-icon :name="row.icon"></svg-icon>
<svg-icon :name="row.icon" v-if="platform==='PC'"></svg-icon>
<img v-else :src="row.icon" alt="" style="width: 30px;height: 30px">
</template>
</el-table-column>
</el-table>
@@ -31,10 +31,10 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
style="width: 100%;"
v-model="formData.projectTypeCode">
<el-option
:key="item.id"
:label="item.name+' ('+item.code+')'"
:value="item.code"
v-for="item in projectTypeList">
:key="item.id"
:label="item.name+' ('+item.code+')'"
:value="item.code"
v-for="item in projectTypeList">
</el-option>
</el-select>
</el-form-item>
@@ -68,10 +68,10 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
reserve-keyword
style="width: 100%" v-model="formData.userId">
<el-option
:key="item.userId"
:label="item.userName+'-'+item.loginName+'-'+item.unitName"
:value="item.userId"
v-for="item in userList">
:key="item.userId"
:label="item.userName+'-'+item.loginName+'-'+item.unitName"
:value="item.userId"
v-for="item in userList">
</el-option>
</el-select>
</el-form-item>
@@ -84,48 +84,48 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
</el-form-item>
</el-col>
<!-- <el-col :span="12"-->
<!-- v-if="formData.isEnrollSystem === true">-->
<!-- <el-form-item label="活动计划时间" prop="plannedDate">-->
<!-- <el-date-picker-->
<!-- @change="plannedDateChange"-->
<!-- end-placeholder="结束日期"-->
<!-- range-separator="-"-->
<!-- start-placeholder="开始日期"-->
<!-- style="width: 100%"-->
<!-- type="daterange"-->
<!-- v-model="formData.plannedDate" value-format="yyyy-MM-dd">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- <el-col :span="12"-->
<!-- v-if="formData.isEnrollSystem === true">-->
<!-- <el-form-item label="活动计划时间" prop="plannedDate">-->
<!-- <el-date-picker-->
<!-- @change="plannedDateChange"-->
<!-- end-placeholder="结束日期"-->
<!-- range-separator="-"-->
<!-- start-placeholder="开始日期"-->
<!-- style="width: 100%"-->
<!-- type="daterange"-->
<!-- v-model="formData.plannedDate" value-format="yyyy-MM-dd">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="12">
<el-form-item label="实际活动时间" prop="time">
<el-date-picker
end-placeholder="结束日期"
range-separator="-"
start-placeholder="开始日期"
style="width: 100%"
type="daterange"
v-model="formData.time"
value-format="yyyy-MM-dd">
end-placeholder="结束日期"
range-separator="-"
start-placeholder="开始日期"
style="width: 100%"
type="daterange"
v-model="formData.time"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
:rules="[{required:[1,2].includes(formData.signUpMethod),message:'请选择报名日期',trigger:['change','blur']}]"
label="报名日期"
prop="applyTime2">
:rules="[{required:[1,2].includes(formData.signUpMethod),message:'请选择报名日期',trigger:['change','blur']}]"
label="报名日期"
prop="applyTime2">
<el-date-picker
end-placeholder="结束时间"
range-separator="-"
start-placeholder="开始时间"
style="width: 100%"
type="datetimerange"
v-model="formData.applyTime2"
value-format="yyyy-MM-dd HH:mm">
end-placeholder="结束时间"
range-separator="-"
start-placeholder="开始时间"
style="width: 100%"
type="datetimerange"
v-model="formData.applyTime2"
value-format="yyyy-MM-dd HH:mm">
</el-date-picker>
</el-form-item>
</el-col>
@@ -133,9 +133,9 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
<el-col :span="12" v-if="!formData.isEnrollSystem">
<el-form-item label="活动人数" prop="peopleNum">
<el-input
maxlength="10"
placeholder="请填写活动人数"
v-model="formData.peopleNum"></el-input>
maxlength="10"
placeholder="请填写活动人数"
v-model="formData.peopleNum"></el-input>
</el-form-item>
</el-col>
@@ -156,8 +156,8 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
</div>
<div>
<el-button
@click="$refs.drawerUserScope.userScopeDialog = true"
type="primary">设置
@click="$refs.drawerUserScope.userScopeDialog = true"
type="primary">设置
</el-button>
</div>
</div>
@@ -181,7 +181,9 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
<el-form-item label="报名人数限制" prop="userNumberLimit">
<el-radio-group v-model="formData.userNumberLimit" size="small">
<el-radio border :label="1">总人数限制</el-radio>
<el-radio border :label="2" v-if="activity_type===40001">分工会人数限制</el-radio>
<el-radio border :label="2" v-if="activity_type===40001">
分工会人数限制
</el-radio>
<el-radio border :label="null">不限制</el-radio>
</el-radio-group>
</el-form-item>
@@ -315,10 +317,10 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
<el-col :span="24" v-if="formData.isEnrollSystem === false">
<el-form-item label="活动考核内容" prop="activityExamineContent">
<el-input
:rows="7"
placeholder="请输入活动考核内容"
type="textarea"
v-model="formData.activityExamineContent">
:rows="7"
placeholder="请输入活动考核内容"
type="textarea"
v-model="formData.activityExamineContent">
</el-input>
</el-form-item>
</el-col>
@@ -428,16 +430,16 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
<el-table :data="userData" border height="500" size="small"
stripe v-loading="userTabLoading" row-key="userId">
<el-table-column
label="序号" type="index"
width="100">
label="序号" type="index"
width="100">
</el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:key="column.prop"
:sortable="column.sortable"
v-for="column in userColumns">
:label="column.label"
:prop="column.prop"
:key="column.prop"
:sortable="column.sortable"
v-for="column in userColumns">
</el-table-column>
<el-table-column label="操作"
prop="userOnline"
@@ -455,26 +457,25 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
</table-tool>
<el-form-item label="" prop="activitySummary">
<el-input
:disabled="!formData.time || Date.now() < Date.parse(formData.time[1])"
:rows="5"
placeholder="请输入活动内容"
type="textarea"
v-model="formData.activitySummary">
:disabled="!formData.time || Date.now() < Date.parse(formData.time[1])"
:rows="5"
placeholder="请输入活动内容"
type="textarea"
v-model="formData.activitySummary">
</el-input>
</el-form-item>
<el-alert
class="mb20"
show-icon
style="margin-left: 130px"
title="活动结束后可输入活动总结"
type="info"
v-if="!formData.time || Date.now() < Date.parse(formData.time[1])">
class="mb20"
show-icon
style="margin-left: 130px"
title="活动结束后可输入活动总结"
type="info"
v-if="!formData.time || Date.now() < Date.parse(formData.time[1])">
</el-alert>
</el-tab-pane>
</el-tabs>
<div style="padding: 20px;text-align: center;">
<el-button @click="operation" style="width: 300px" type="primary" :disabled="formLoading">
确 定
@@ -484,12 +485,12 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
</el-card>
<drawer-user-scope
@group_change="getActivityGroup"
ref="drawerUserScope"
:group_id.sync="formData.groupId"
@group_change="getActivityGroup"
ref="drawerUserScope"
:group_id.sync="formData.groupId"
></drawer-user-scope>
<el-dialog :close-on-click-modal="false" :visible.sync="userDialogVisible" title="添加人员" width="40%">
<el-dialog :close-on-click-modal="false" :visible.sync="userDialogVisible" append-to-body title="添加人员" width="40%">
<el-form :model="formData" label-width="100px">
<el-form-item label="参加人员" prop="userId">
@@ -501,11 +502,11 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
style="width: 100%"
v-model="formData.tissuePersonList">
<el-option
:disabled="userData.map(v=>v.userId).includes(item.userId)"
:key="item.userId"
:label="item.userName+'-'+item.loginName+'-'+item.unitName"
:value="item.userId"
v-for="item in userList">
:disabled="userData.map(v=>v.userId).includes(item.userId)"
:key="item.userId"
:label="item.userName+'-'+item.loginName+'-'+item.unitName"
:value="item.userId"
v-for="item in userList">
</el-option>
</el-select>
</el-form-item>
@@ -99,11 +99,14 @@ layout("/layouts/platform.html"){
</search-item>
<search-item label="聘用方式:">
<dict-select clearable code="USER_PREPARED_BY_TYPE"
multiple
collapse-tags
placeholder="请选择聘用方式"
v-model="pageForm.preparedBys"></dict-select>
<dict-select
clearable
code="USER_PREPARED_BY_TYPE"
multiple
collapse-tags
placeholder="请选择聘用方式"
v-model="pageForm.preparedBys"
></dict-select>
</search-item>
<search-item label="在职状态:">
@@ -201,9 +204,22 @@ layout("/layouts/platform.html"){
<add_welfare_list_by_select ref="addWelfareListUser" @search="doSearch"></add_welfare_list_by_select>
<!--添加福利人员-->
<add-user ref="addUserRef" @refresh="doSearch"></add-user>
<!--人员备注-->
<update-remark ref="updateRemarkRef" @refresh="doSearch"></update-remark>
<!--导入福利名单-->
<excel-import
ref="excelImportRef"
url="/platform/welfare/list/mange/importByExcel"
template_url="/platform/welfare/list/mange/downloadTemplate"
:visible.sync="showImportDialog"
title="导入用户数据"
width="700px"
:extra_params="{projectId:pageForm.projectId}"
></excel-import>
</div>
<script>
@@ -260,7 +276,9 @@ layout("/layouts/platform.html"){
importLoading: false,
importDialog: false,
welfareListUserDrawer: false
welfareListUserDrawer: false,
showImportDialog: false
}
},
methods: {
@@ -275,12 +293,14 @@ layout("/layouts/platform.html"){
this.doSearch()
this.importDialog = false
},
// 打开导入名单
openImport() {
this.importData = {
isfg: 1,
fileList: []
}
this.importDialog = true
this.showImportDialog = true
},
doDelete(row) {
this.$confirm("您确定要删除吗?", "提示", {
@@ -16,12 +16,13 @@ const home = {
<!--快捷入口-->
<div class="quick-grid">
<div class="section-title">快速入口</div>
<van-grid :column-num="4" icon-size="46" square clickable :border="false">
<van-grid-item v-for="item in quickEntries"
@click="menuClick(item)"
:key="item.id"
:text="item.name">
<img src="https://staticfile.org/images/banners/Home/7@2x.png"
<img :src="item.icon"
slot="icon"
style="width: 40px; height: 40px"/>
</van-grid-item>
@@ -30,8 +31,17 @@ const home = {
<!--活动列表-->
<div class="act-list">
<div class="section-title">最新活动</div>
<template v-if="activityOptions && activityOptions.length > 0">
<div v-for="item in activityOptions" :key="item.id" class="act-item" @click="enterAct(item)">
<van-tag class="act-item-wrapper-tag" v-if="$moment().unix() > $moment(item.endDate).unix()">
已结束
</van-tag>
<van-tag class="act-item-wrapper-tag" type="success" v-else-if="$moment().unix() < $moment(item.endDate).unix()">
进行中
</van-tag>
<div class="act-item-cover">
<van-image v-if="item.cover" width="120" height="84" :src="item.cover"></van-image>
</div>
@@ -93,6 +103,8 @@ const home = {
.quick-grid {
background-color: #fff;
margin: 10px;
border-radius: 10px;
padding: 10px;
}
.quick-grid .van-grid-item .van-grid-item__text {
@@ -101,6 +113,7 @@ const home = {
text-overflow: ellipsis;
width: 85%;
text-align: center;
flex-shrink: 0;
}
.act-list {
@@ -115,17 +128,22 @@ const home = {
width: 100%;
padding: 6px;
background-color: #fff;
position: relative;
display: flex;
position: relative;
}
.act-item-cover {
margin: 0 14px 0 0;
width: 120px;
height: 84px;
flex-shrink: 0;
}
.act-item-cover .van-image{
width: 120px;
height: 84px;
/*width: 120px;*/
/*height: 84px;*/
width: 100%;
height: 100%;
}
.act-item-wrapper{
@@ -135,6 +153,13 @@ const home = {
width: 100%;
}
.act-item-wrapper-tag{
position: absolute;
left: 10px;
top: 10px;
z-index: 1;
}
.act-item-wrapper .content-title{
font-size: 14px;
width: 100%;
@@ -151,5 +176,10 @@ const home = {
color: grey;
padding-bottom: 6px;
}
.section-title{
padding: 10px 0 5px 10px;
}
`
}