This commit is contained in:
2025-10-19 17:18:13 +08:00
parent c9e825ecb9
commit be764149e4
20 changed files with 131 additions and 185 deletions
@@ -3,7 +3,7 @@ const ACTIVITY_CULTURE_INFO_ACTIVITY = {
<div>
<div class="process-title">
申请信息
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
<el-link type="primary" @click="openChart" v-if="viewData.activity_type !== 40001">点击查看流程图</el-link>
</div>
<el-descriptions :column="3" border class="margin-top" style="margin: 10px" title="">
<el-descriptions-item label="活动名称" span="3">
@@ -153,7 +153,7 @@ const singleSignUp = {
</div>
<!-- 分工会报名-->
<div v-else-if="viewData.signUpMethod===3">
<div class="process-title">选择报名人员,报名人数 <span style="color: red">{{viewData.teamNum}}</span>人
<div class="process-title">选择报名人员
</div>
<el-select
v-if="inApplyTime"
@@ -470,6 +470,7 @@ const singleSignUp = {
if (val) {
this.$axios.post("/platform/activity/culture/applyUser/queryTeammate", {
keyword: val,
tissueId: this.id,
signUpMethod: this.viewData.signUpMethod
}).then((res) => {
if (res.code === 0) {
@@ -512,7 +513,7 @@ const singleSignUp = {
const union = this.viewData.unionUserNumberLimit.find(v => v.id === this.$store.state.user.union.id)
this.viewData.teamNum = union.limitNum
this.listTeamUserUnion()
}else{
} else {
this.listTeamUser()
}
if (this.viewData.formConfig) {
@@ -29,8 +29,8 @@ const ACTIVITY_CULTURE_USER_STATISTICS = {
</el-select>
</search-item>
<search-item label="工会名称" v-if="activity_type===40002||activity_type===40001">
<el-select clearable filterable placeholder="请选择工会"
<search-item label="所属工会" v-if="activity_type===40002||activity_type===40001">
<el-select clearable filterable placeholder="请选择所属工会"
style="width: 100%"
v-model="pageForm.unionId">
<el-option
@@ -13,7 +13,9 @@ const ARTICLE_INFO = {
<el-descriptions-item label="投稿人联系方式">{{ viewData.mobile }}</el-descriptions-item>
<el-descriptions-item label="稿件修改人联系方式">{{ viewData.mobile2 }}</el-descriptions-item>
<el-descriptions-item label="投稿标题" :span="2">{{ viewData.title }}</el-descriptions-item>
<el-descriptions-item label="投稿说明" :span="2">{{ viewData.excerpt }}</el-descriptions-item>
<el-descriptions-item label="投稿说明" :span="2">
<span style="white-space: pre-line">{{ viewData.excerpt }}</span>
</el-descriptions-item>
<el-descriptions-item label="稿件" :span="2">
<file-preview :files="viewData.files" complete_result></file-preview>
</el-descriptions-item>
@@ -145,7 +145,7 @@ layout("/layouts/platform.html"){
type: "warning"
}).then(() => {
this.$axios.post('/platform/article/write/submitAgain', {
info: JSON.stringify(this.formData),
article: JSON.stringify(this.formData),
taskId: GetQueryString("taskId")
}).then(res => {
if (res.code === 0) {
@@ -28,15 +28,8 @@ layout("/layouts/platform.html"){
v-for="item in projectOptions"></el-option>
</el-select>
</search-item>
<search-item label="职工信息">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch" style="width: 100%">
<el-select v-model="pageForm.searchName" slot="prepend"
style="width: 80px;">
<el-option label="姓名" value="hcu.username"></el-option>
<el-option label="工号" value="hcu.loginname"></el-option>
</el-select>
</el-input>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="所属工会" v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])">
<el-select placeholder="请选择所属工会" v-model="pageForm.unionId"
@@ -189,7 +182,6 @@ layout("/layouts/platform.html"){
return {
pageForm: {
year: moment().format('YYYY'),
searchName: "hcu.username",
},
unions: [],
units: [],
@@ -69,9 +69,9 @@ layout("/layouts/platform.html"){
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'view',data:row}">
<!-- <el-dropdown-item :command="{type:'view',data:row}">
查看
</el-dropdown-item>
</el-dropdown-item>-->
<el-dropdown-item :command="{type:'code',data:row}">
二维码
</el-dropdown-item>
@@ -463,6 +463,12 @@ layout("/layouts/platform.html"){
this.conditionStructureDialogVisible = true
if(row.matchCnd){
this.conditionGroup = row.matchCnd
}else{
this.conditionGroup = {
logic: "AND",
conditions: [],
groups: []
}
}
// this.$refs.conditionStructureDialog.onOpen(row.matchCnd ? row.matchCnd : null)
},
@@ -37,15 +37,15 @@ layout("/layouts/platform.html"){
:value="item.id" :key="item.id"></el-option>
</el-select>
</search-item>
<search-item label="所属单位">
<el-select placeholder="请选择所属单位" v-model="pageForm.unitId"
style="width: 100%;"
clearable
filterable>
<el-option v-for="item in units" :label="item.name"
:value="item.id" :key="item.id"></el-option>
</el-select>
</search-item>
<!-- <search-item label="所属单位">
<el-select placeholder="请选择所属单位" v-model="pageForm.unitId"
style="width: 100%;"
clearable
filterable>
<el-option v-for="item in units" :label="item.name"
:value="item.id" :key="item.id"></el-option>
</el-select>
</search-item>-->
</search>
</el-card>
@@ -80,6 +80,12 @@ layout("/layouts/platform.html"){
type="primary"
v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])">一键选择去年数据
</el-button>
<el-button @click="msgNotSelect"
icon="el-icon-printer"
size="small"
type="primary"
v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])">给未选发送消息
</el-button>
</template>
<el-button :disabled="!pageForm.projectId"
@@ -259,6 +265,28 @@ layout("/layouts/platform.html"){
}
},
methods: {
async msgNotSelect() {
const confirm = await this.$confirm('请确定未选择的教职工发送提醒短信?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
this.tableLoading = true
const resp = await $.get(loc() + '/msgNotSelect', {
projectId: this.pageForm.projectId
})
if (resp.code === 0) {
setTimeout(() => {
this.doSearch()
this.tableLoading = false
this.notifySuccess(resp.msg)
}, 2000)
} else {
this.notifyWarning(resp.msg)
}
}
},
async doSelectByAdmin() {
if (!this.noSelectOptionId || !this.campus) {
this.notifyWarning('请选择套餐/院区')
@@ -298,16 +326,15 @@ layout("/layouts/platform.html"){
type: 'warning'
})
if (confirm === "confirm") {
this.loading = true
this.tableLoading = true
const resp = await $.get(loc() + '/selectOptionByLastYear', {
projectId: this.pageForm.projectId
})
this.tableLoading = false
if (resp.code === 0) {
setTimeout(() => {
this.doSearch()
this.loading = false
this.notifySuccess(resp.msg)
}, 2000)
this.doSearch()
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
@@ -6,7 +6,7 @@ const info = {
<el-descriptions-item label="年度">{{ viewData.year }}</el-descriptions-item>
<el-descriptions-item label="编号">{{ viewData.serialNumber }}</el-descriptions-item>
<el-descriptions-item label="线路名称">{{ viewData.lineName }}</el-descriptions-item>
<el-descriptions-item label="区域性质">{{ viewData.regionalNature }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="线路内容" :span="2">
<div v-html="viewData.content"></div>
</el-descriptions-item>
@@ -17,7 +17,8 @@ const info = {
{{ viewData.travelAgency.travelAgencyName }}
</el-descriptions-item>
<el-descriptions-item label="联系人">{{ viewData.travelAgency.contact }}</el-descriptions-item>
<el-descriptions-item label="电话">{{ viewData.travelAgency.contactMobileNumber }}</el-descriptions-item>
<el-descriptions-item label="电话">{{ viewData.travelAgency.contactMobileNumber }}
</el-descriptions-item>
<el-descriptions-item label="邮箱">{{ viewData.travelAgency.email }}</el-descriptions-item>
<el-descriptions-item label="官网">
<a :href="viewData.travelAgency.officialWebsite" class="text-primary" target="_blank">
@@ -35,17 +35,8 @@ layout("/layouts/platform.html"){
></el-option>
</el-select>
</search-item>
<search-item label="报名人">
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入内容"
v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="info.userName"></el-option>
<el-option label="工号" value="info.loginName"></el-option>
</el-select>
</el-input>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="所属工会">
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" clearable style="width: 100%"
@@ -115,7 +106,7 @@ layout("/layouts/platform.html"){
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="auditDialogVisible=false" size="small">取消</el-button>
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
@@ -141,7 +132,6 @@ layout("/layouts/platform.html"){
pageDataUrl: "/platform/excellentRecuperation/schoolAudit/pageData",
pageForm: {
year: moment().format('YYYY'),
searchName: "info.userName",
approval: false
},
activityList: [],
@@ -166,7 +156,7 @@ layout("/layouts/platform.html"){
})
}).then((res) => {
if (res.code === 0) {
this.auditDialogVisible = false
this.$refs.guava.index()
this.$message.success(res.msg)
this.doSearch()
}
@@ -35,17 +35,8 @@ layout("/layouts/platform.html"){
></el-option>
</el-select>
</search-item>
<search-item label="报名人">
<el-input @keyup.enter.native="doSearch" clearable
placeholder="请输入内容"
v-model="pageForm.searchKeyword">
<el-select placeholder="查询类型" slot="prepend"
style="width: 100px;"
v-model="pageForm.searchName">
<el-option label="姓名" value="info.userName"></el-option>
<el-option label="工号" value="info.loginName"></el-option>
</el-select>
</el-input>
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="所属工会">
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" clearable style="width: 100%"
@@ -109,7 +100,6 @@ layout("/layouts/platform.html"){
pageDataUrl: "/platform/excellentRecuperation/summary/pageData",
pageForm: {
year: moment().format('YYYY'),
searchName: "info.userName",
},
activityList: [],
unionOptions: [],
@@ -21,8 +21,8 @@ layout("/layouts/platform.html"){
value-format="yyyy"
></el-date-picker>
</search-item>
<search-item label="关键字">
<el-input placeholder="请输入旅行社名称或联系人查询" clearable v-model="pageForm.searchKeyword"
<search-item label="旅行社">
<el-input placeholder="请输入旅行社查询" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch"></el-input>
</search-item>
</search>
@@ -7,7 +7,7 @@ layout("/layouts/platform.html"){
<template>
<el-card shadow="never">
<search @search="doSearch">
<search-item label="姓名/工号">
<el-input placeholder="请输入姓名或工号" clearable v-model="pageForm.searchKeyword"
style="width: 100%">
</el-input>
@@ -142,7 +142,7 @@ layout("/layouts/platform.html"){
<template #edit>
<file-import ref="viewImport" temp_url="/platform/thirtyTeach/manage/downloadImportTemp"
post_url="/platform/thirtyTeach/manage/doImport" is_show_radio
@flush="$refs.guava.index();pageData()"
@flush="pageData()"
></file-import>
</template>
</guava>
@@ -279,7 +279,7 @@ layout("/layouts/platform_h5.html"){
<!-- 分工会报名-->
<div v-else-if="viewData.signUpMethod===3" class="block">
<div class="notice-title left-tag-title">选择报名人员
<div class="notice-title left-tag-title">选择报名人员
<span v-if="viewData.userNumberLimit===2">
,报名人数 <span style="color: red">
{{viewData.unionTeamNum}}</span>
@@ -709,6 +709,7 @@ layout("/layouts/platform_h5.html"){
if (val) {
this.$axios.post("/platform/activity/culture/applyUser/queryTeammate", {
keyword: val,
tissueId: this.id,
signUpMethod: this.viewData.signUpMethod
}).then((res) => {
if (res.code === 0) {
@@ -3,65 +3,7 @@ layout("/layouts/platform_h5.html"){
#-->
<style>
.list-card {
position: relative;
margin: 10px;
background-color: #fff;
border-radius: 6px;
box-shadow: 0 8px 12px #ebedf0;
width: auto;
}
.list-card > .content {
padding: 8px 5px;
display: flex;
max-height: 100px;
}
.content-right {
width: calc(100% - 150px);
max-width: calc(100% - 150px);
padding-left: 15px;
overflow: hidden;
text-overflow: ellipsis;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.cr-title {
line-height: 20px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: bold;
}
.concat, .mobile, .union {
font-size: 13px;
line-height: 18px;
width: 100%;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.desc_info div {
font-size: 12px;
}
.tag {
position: absolute;
display: inline-block;
background-color: #1867b0;
color: #fff;
font-size: 14px;
top: 0px;
border-radius: 6px;
right: -3px;
padding: 0px 6px;
transform: rotate(16deg);
}
</style>
@@ -84,48 +26,22 @@ layout("/layouts/platform_h5.html"){
</van-sticky>
<table-list api="/platform/healthCheckup/h5/pageData" :page_form.sync="pageForm" ref="tableListRef"
@ready="doSearch">
@ready="doSearch" img="cover">
<template v-slot="{index,row}">
<div class="list-card">
<div class="content" @click="viewProjectDetail(row)">
<van-image
height="76"
radius="8"
:src="row.cover"
width="100"
fit="cover">
<template #loading>
<van-loading type="spinner" size="20" />
</template>
<template #error>
<div style="font-size: 12px; color: #999;">暂无图片</div>
</template>
</van-image>
<div class="content-right">
<div v-if="row.selectCount <= 0" class="tag">未选择</div>
<div v-else class="tag" style="background-color: green">已选择</div>
<div class="cr-title">
<span>{{row.name}}</span>
</div>
<div class="desc_info">
<div class="concat">
<span>开始时间:</span>
{{row.choiceTimeStart}}
</div>
<div class="mobile">
<span>结束时间:</span>
{{row.choiceTimeEnd}}
</div>
</div>
</div>
<table-column label="开始时间">
{{$moment(row.choiceTimeStart).format('MM/DD HH:mm')}}
</table-column>
<table-column label="结束时间">
{{$moment(row.choiceTimeEnd).format('MM/DD HH:mm')}}
</table-column>
</template>
<template #actions="{index,row}">
<template v-if="$moment().isBefore($moment(row.choiceTimeEnd))">
<div class="action-btn" @click="onView(row)">
<i class="fa fa-edit"></i>
<span>去报名</span>
</div>
<div style="text-align: right; padding: 0 10px 10px 0;">
<div class="action-btn" @click="onView(row)">
<i class="fa fa-edit"></i>
<span>报名</span>
</div>
</div>
</div>
</template>
</template>
</table-list>