commit
This commit is contained in:
@@ -1,359 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
<style>
|
||||
.table_fixed {
|
||||
table-layout: fixed !important;
|
||||
}
|
||||
|
||||
.map-search {
|
||||
margin-bottom: 1rem;
|
||||
border-radius: .25rem;
|
||||
position: absolute;
|
||||
top: 1rem;
|
||||
background-color: white;
|
||||
width: auto;
|
||||
min-width: 22rem;
|
||||
border-width: 0;
|
||||
right: 1rem;
|
||||
box-shadow: 0 2px 6px 0 rgba(114, 124, 245, .5);
|
||||
}
|
||||
.map-search .input-item{
|
||||
position: relative;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: 3rem;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">年度:</div>
|
||||
<div class="search-item-option">
|
||||
<el-date-picker
|
||||
placeholder="选择年度"
|
||||
type="year" style="width: 100%"
|
||||
v-model="pageForm.year"
|
||||
value-format="yyyy">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">活动名称:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
||||
clearable
|
||||
style="width: 100%" v-model="pageForm.activityName">
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-query">
|
||||
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card class="mt10" shadow="never">
|
||||
<table-tool :app="this" label="活动列表">
|
||||
<template #func>
|
||||
<el-button @click="openAdd" size="medium" type="primary">新建活动</el-button>
|
||||
</template>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" :size="tableSize">
|
||||
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
|
||||
width="80px"></el-table-column>
|
||||
<el-table-column
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
align="center"
|
||||
header-align="center"
|
||||
show-overflow-tooltip
|
||||
v-for="column in tableColumns"
|
||||
>
|
||||
<template scope="{row}" v-if="column.prop==='isDisabled'">
|
||||
<el-switch
|
||||
:active-value="false"
|
||||
:inactive-value="true"
|
||||
@change="(val)=>{activityStatusChange(row.notice,val,row.id)}"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
v-model="row.isDisabled">
|
||||
</el-switch>
|
||||
</template>
|
||||
<template scope="{row:{opAt}}" v-else-if="column.prop==='opAt'">
|
||||
{{moment(opAt * 1000).format('YYYY-MM-DD HH:mm:ss')}}
|
||||
</template>
|
||||
<template scope="{row}" v-else-if="column.prop==='notice'">
|
||||
<el-switch
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
@change="(val)=>{activityNoticeChange(row.isDisabled,val,row.id)}"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
v-model="row.notice">
|
||||
</el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="150px">
|
||||
<template scope="{row}">
|
||||
<el-dropdown>
|
||||
<el-button plain size="mini">
|
||||
<i class="ti-settings"></i>
|
||||
<span class="ti-angle-down"></span>
|
||||
</el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item @click.native="openCode(row.id)">
|
||||
活动二维码
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="makeCode(row)">
|
||||
签到二维码
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="sendMsg(row)">
|
||||
通知
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="openView(row)">
|
||||
查看
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="openEdit(row)">
|
||||
编辑
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="deleteDo(row)">
|
||||
删除
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<!--#include("/platform/trainSingUp/manage/include_activity_view.html"){}#-->
|
||||
</template>
|
||||
</guava>
|
||||
|
||||
<el-dialog :close-on-click-modal="false" :visible.sync="courseDialog" :title="trainType + '列表'" top="50px">
|
||||
|
||||
<el-table :data="clickRow.courseList">
|
||||
<el-table-column :label="trainType + '名称'" prop="courseName"></el-table-column>
|
||||
<el-table-column label="校区" prop="campus"></el-table-column>
|
||||
<el-table-column label="是否签到" prop="isMobileSign">
|
||||
<template scope="{row}">
|
||||
<span v-if="row.isMobileSign === true">签到</span>
|
||||
<span v-else>不签到</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="签到方式" prop="signType">
|
||||
<template scope="{row}">
|
||||
<span v-if="row.signType === 1">扫描二维码</span>
|
||||
<span v-else-if="row.signType === 2">被扫</span>
|
||||
<span v-else-if="row.signType === 3">GPS定位签到</span>
|
||||
<span v-else>暂无签到方式</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否领取礼品" prop="isReceiveGift">
|
||||
<template scope="{row}">
|
||||
<span v-if="row.isReceiveGift === true">领取</span>
|
||||
<span v-else>不领取</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="领取方式" prop="giftType">
|
||||
<template scope="{row}">
|
||||
<span v-if="row.giftType === 1">扫描二维码</span>
|
||||
<span v-else-if="row.giftType === 2">面对面确认</span>
|
||||
<span v-else>暂无领取方式</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="260">
|
||||
<template scope="{row}">
|
||||
<el-button v-if="row.signType === 1" @click="makeCourseCode(row)" size="mini" type="primary">生成二维码
|
||||
</el-button>
|
||||
<el-button v-else size="mini" type="text">该{{trainType}}的签到方式不支持生成二维码</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
|
||||
<send-msg ref="sendMsg" :url="url"></send-msg>
|
||||
<open-qr-code ref="openQRCode" :url="url"></open-qr-code>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
let geocoder = null
|
||||
let viewMap = null
|
||||
let viewMarker = null
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
const that = this
|
||||
return {
|
||||
url: '',
|
||||
courseDialog: false,
|
||||
trainType: '',
|
||||
trainTypeList: [],
|
||||
campusList: [],
|
||||
tableColumns: [
|
||||
{label: '活动名称', prop: 'activityName'},
|
||||
{label: '年度', prop: 'year'},
|
||||
{label: '开始时间', prop: 'activityStartTime'},
|
||||
{label: '结束时间', prop: 'activityEndTime'},
|
||||
{label: '是否开启', prop: 'isDisabled'},
|
||||
{label: '是否通知', prop: 'notice'},
|
||||
{label: '创建时间', prop: 'opAt'},
|
||||
],
|
||||
viewData: {},
|
||||
mapDialog: false,
|
||||
mapIndex: 0,
|
||||
courseTypeList: [],
|
||||
courseTimeListDialog: false,
|
||||
courseTimeList: [],
|
||||
viewMapDialog: false,
|
||||
clickRow: {},
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'open-qr-code': httpVueLoader('/components/plugins/OpenQRCode.vue'),
|
||||
'send-msg': httpVueLoader('/components/plugins/SendMsgByGroupId.vue'),
|
||||
},
|
||||
methods: {
|
||||
sendMsg(row) {
|
||||
this.url = `<a href="` + (APP_DOMAIN + "/platform/mobile/trainSignUpActivity/trainList") + `">点击参与</a>`
|
||||
this.$refs.sendMsg.openDialog(row.activityGroupId)
|
||||
},
|
||||
openCode(id) {
|
||||
this.$refs.openQRCode.openCode("/platform/mobile/trainSignUpActivity/trainList")
|
||||
},
|
||||
makeCode(row) {
|
||||
this.clickRow = row
|
||||
const type = this.trainTypeList.find(o => o.code === row.trainType)
|
||||
this.trainType = type ? type.name : '培训班'
|
||||
this.courseDialog = true
|
||||
},
|
||||
makeCourseCode(row) {
|
||||
const o = {
|
||||
courseId: row.id
|
||||
}
|
||||
// 生成二维码的 base64 编码
|
||||
const content = jrQrcode.getQrBase64(JSON.stringify(o))
|
||||
let image = new Image()
|
||||
image.src = content
|
||||
let viewer = new Viewer(image)
|
||||
viewer.show()
|
||||
},
|
||||
openAdd() {
|
||||
sublime.jumpPagePjax('/platform/trainSingUp/manage/activity/add')
|
||||
},
|
||||
//活动状态改变
|
||||
async activityStatusChange(notice, val, id) {
|
||||
const resp = await $.post(loc() + '/activityStatusChange', {notice: notice, isDisabled: val, id})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
} else {
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
},
|
||||
async activityNoticeChange(isDisabled, val, id) {
|
||||
const resp = await $.post(loc() + '/activityStatusChange', {isDisabled: isDisabled, notice: val, id})
|
||||
if (resp.code === 0) {
|
||||
this.notifySuccess(resp.msg)
|
||||
} else {
|
||||
this.notifyError(resp.msg)
|
||||
}
|
||||
},
|
||||
async openEdit(row) {
|
||||
sublime.jumpPagePjax('/platform/trainSingUp/manage/activity/add?id=' + row.id + '&fromEdit=edit')
|
||||
},
|
||||
async deleteDo(row) {
|
||||
const confirm = await this.$confirm('此操作将永久删除, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
if (confirm === "confirm") {
|
||||
const resp = await $.post(loc() + '/doDelete', {id: row.id})
|
||||
this.notifySuccess("删除成功")
|
||||
this.doSearch()
|
||||
}
|
||||
},
|
||||
async openView(row) {
|
||||
const {id} = row
|
||||
const resp = await $.get(loc() + '/findOne', {id})
|
||||
if (resp.code === 0) {
|
||||
let cloneData = clone(resp.data)
|
||||
cloneData.campusList = new Set(cloneData.courseList.map(v => v.campus))
|
||||
this.viewData = cloneData
|
||||
const type = this.trainTypeList.find(o => o.code === cloneData.trainType)
|
||||
this.trainType = type ? type.name : '培训班'
|
||||
this.$refs['guava'].view()
|
||||
}
|
||||
},
|
||||
openViewMap(point) {
|
||||
if (!Array.isArray(point)) {
|
||||
this.$message.warning('没有设置点位,无法通过地图查看')
|
||||
return
|
||||
}
|
||||
this.viewMapDialog = true
|
||||
this.$nextTick(() => {
|
||||
viewMap = new AMap.Map("viewMap", {
|
||||
resizeEnable: true,
|
||||
center: point,
|
||||
zoom: 16
|
||||
})
|
||||
if (viewMarker) {
|
||||
viewMap.remove(viewMarker)
|
||||
}
|
||||
viewMarker = new AMap.Marker({
|
||||
position: point,
|
||||
offset: new AMap.Pixel(-13, -30)
|
||||
})
|
||||
viewMap.add(viewMarker)
|
||||
viewMap.setFitView(null, false, [150, 60, 100, 60]);
|
||||
})
|
||||
},
|
||||
getAddress(position) {
|
||||
// if (!geocoder) {
|
||||
// geocoder = new AMap.Geocoder({
|
||||
// city: "010", //城市设为北京,默认:“全国”
|
||||
// radius: 1000 //范围,默认:500
|
||||
// });
|
||||
// }
|
||||
// geocoder.getAddress(position, (status, result) => {
|
||||
// if (status === 'complete' && result.regeocode) {
|
||||
// const address = result.regeocode.formattedAddress
|
||||
// this.formData.courseList[this.mapIndex].location = address
|
||||
// } else {
|
||||
// log.error('根据经纬度查询地址失败')
|
||||
// }
|
||||
// })
|
||||
},
|
||||
openViewCourseTime(courseTimeList) {
|
||||
this.courseTimeList = courseTimeList
|
||||
this.courseTimeListDialog = true
|
||||
},
|
||||
},
|
||||
async created() {
|
||||
this.pageData()
|
||||
this.trainTypeList = await getDictOptions("trainSignUpType")
|
||||
this.campusList = await getCampus()
|
||||
this.courseTypeList = await getEnumOptions('TrainCourseType')
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user