移动端返回

This commit is contained in:
Paidax
2025-04-03 17:51:01 +08:00
parent 45a16bf564
commit 3a2f108c42
74 changed files with 2859 additions and 3654 deletions
@@ -38,7 +38,9 @@ layout("/mobile/platform.html"){
font-weight: bold;
}
.concat, .mobile, .union {
.concat,
.mobile,
.union {
font-size: 13px;
line-height: 18px;
width: 100%;
@@ -83,12 +85,10 @@ layout("/mobile/platform.html"){
right: 10px;
color: #1867b0;
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="货物展示" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="货物展示" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<!--<van-dropdown-menu>
<van-dropdown-item v-model="pageForm.typeId" :options="typeList"></van-dropdown-item>
</van-dropdown-menu>-->
@@ -98,20 +98,17 @@ layout("/mobile/platform.html"){
</van-tabs>
<template>
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="mLoading"
@load="pageData">
<van-list
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="mLoading"
@load="pageData"
>
<template v-for="o in tableData">
<div class="list-card">
<div @click="showGoods(o)" class="content">
<van-image
height="100px"
width="100px"
radius="8"
:src="CREATE_PREVIEW_URL(o.imgUrl)"
class="van-image__img">
</van-image>
<van-image height="100px" width="100px" radius="8" :src="CREATE_PREVIEW_URL(o.imgUrl)" class="van-image__img"></van-image>
<div class="content-right">
<div class="cr-title">
<span>{{o.goodsName}}</span>
@@ -126,13 +123,11 @@ layout("/mobile/platform.html"){
{{o.manufacturer}}
</div>
<div>
<div v-if="o.description" style="display: flex;color: #969799">
<div v-if="o.description" style="display: flex; color: #969799">
{{removeHTMLTag(o.description).substr(0,25)+'...'}}
</div>
<div style="text-align: right;">
<a @click.stop="viewDesc(o.id,o.description)"
class="more" style="color:#1867b0"
href="#">查看更多</a>
<div style="text-align: right">
<a @click.stop="viewDesc(o.id,o.description)" class="more" style="color: #1867b0" href="#">查看更多</a>
</div>
</div>
@@ -146,54 +141,45 @@ layout("/mobile/platform.html"){
</template>
</van-list>
</template>
<van-empty
v-if="mLoading==false&&tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
<van-popup v-model="descPopup" position="right" :style="{ height: '100%',width: '100%'}"
safe-area-inset-bottom>
<van-popup v-model="descPopup" position="right" :style="{ height: '100%',width: '100%'}" safe-area-inset-bottom>
<van-sticky>
<van-nav-bar @click-left="descPopup=false" left-arrow
title="详情"></van-nav-bar>
<van-nav-bar @click-left="descPopup=false" left-arrow title="详情"></van-nav-bar>
</van-sticky>
<div class="desc" v-html="desc" @click="descClick($event)"></div>
</van-popup>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
desc: "",
descPopup: false,
pageForm:{
projectId:null,
goodsNAme:null,
typeId:null,
pageForm: {
projectId: null,
goodsNAme: null,
typeId: null
},
typeList:[],
typeList: []
}
},
methods: {
descClick(e) {
if (e.target.tagName === 'IMG') {
if (e.target.tagName === "IMG") {
vant.ImagePreview([e.target.src])
}
},
doSearch(){
this.pageForm.pageNumber=1
this.pageData();
doSearch() {
this.pageForm.pageNumber = 1
this.pageData()
},
async pageData() {
this.mLoading = true
const resp = await $.post('/mobile/benefiting/onLoad', this.pageForm)
const resp = await $.post("/mobile/benefiting/onLoad", this.pageForm)
if (resp.code === 0) {
this.tableData = resp.data.list
if (this.tableData.length === resp.data.totalCount) {
@@ -205,24 +191,23 @@ layout("/mobile/platform.html"){
this.mLoading = false
},
async getAllType() {
const resp = await $.get('/platform/benefiting/type/findAllType')
const resp = await $.get("/platform/benefiting/type/findAllType")
if (resp.code === 0) {
this.typeList = resp.data;
this.typeList = resp.data
this.pageForm.typeId = this.typeList[0].id
}
await this.pageData();
await this.pageData()
},
viewDesc(optionId, desc) {
this.desc = desc
this.descPopup = true
},
}
},
async created(){
async created() {
this.pageForm.projectId = GetQueryString("projectId")
await this.getAllType();
},
});
await this.getAllType()
}
})
</script>
<!--#
}
@@ -18,45 +18,31 @@ layout("/mobile/platform.html"){
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="惠民服务" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-search
v-model="pageForm.projectName"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入项目名称查询"
></van-search>
<van-nav-bar title="惠民服务" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-search v-model="pageForm.projectName" shape="round" maxlength="10" @search="doSearch" placeholder="请输入项目名称查询"></van-search>
<template>
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="mLoading"
@load="pageData">
<van-list
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="mLoading"
@load="pageData"
>
<template v-for="o in tableData">
<div class="list-card" style="background-color: #FFFFFF;border-radius: 6px;">
<div class="list-card" style="background-color: #ffffff; border-radius: 6px">
<van-card @click="showGoods(o)" class="content">
<template #thumb>
<img :src="CREATE_PREVIEW_URL(o.cover)"
@click="preview(o.cover,o.cover)"
class="van-image__img">
<img :src="CREATE_PREVIEW_URL(o.cover)" @click="preview(o.cover,o.cover)" class="van-image__img" />
</template>
<template #title>
<div class="van-ellipsis"
style="font-size: 15px;font-weight: bold;line-height: 30px;">
{{o.projectName}}
</div>
<div class="van-ellipsis" style="font-size: 15px; font-weight: bold; line-height: 30px">{{o.projectName}}</div>
</template>
<template #desc>
<div>
<template>
<div>
年度:{{o.year}}
</div>
<div style="flex: 1.5">
创建时间:
{{moment(o.createTime).format('YYYY/MM/DD HH:mm')}}
</div>
<div>年度:{{o.year}}</div>
<div style="flex: 1.5">创建时间: {{moment(o.createTime).format('YYYY/MM/DD HH:mm')}}</div>
</template>
</div>
</template>
@@ -65,26 +51,21 @@ layout("/mobile/platform.html"){
</template>
</van-list>
</template>
<van-empty
v-if="mLoading==false&&tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
pageForm:{},
pageForm: {}
}
},
methods: {
async pageData() {
this.mLoading = true
const resp = await $.post('/mobile/benefiting/pageData', this.pageForm)
const resp = await $.post("/mobile/benefiting/pageData", this.pageForm)
if (resp.code === 0) {
this.tableData = this.tableData.concat(resp.data.list)
if (this.tableData.length === resp.data.totalCount) {
@@ -95,14 +76,14 @@ layout("/mobile/platform.html"){
}
this.mLoading = false
},
async showGoods(o){
window.location.href='/mobile/benefiting/goods?projectId=' + o.id
async showGoods(o) {
window.location.href = "/mobile/benefiting/goods?projectId=" + o.id
}
},
created(){
this.pageData();
},
});
created() {
this.pageData()
}
})
</script>
<!--#
}
@@ -3,71 +3,71 @@ layout("/mobile/platform.html"){
#-->
<style>
.test{width:9em; overflow:hidden; white-space:nowrap;text-overflow: ellipsis;font-size: 10px;text-align: center;color: #a0a1a1
.test {
width: 9em;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-size: 10px;
text-align: center;
color: #a0a1a1;
}
.test:hover {
text-overflow: inherit;
overflow: visible;
}
.test:hover{text-overflow:inherit; overflow:visible;}
</style>
<div id="app" v-cloak>
<van-nav-bar title="生日祝福" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="生日祝福" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-search
v-model="pageForm.searchKeyWord"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入教职工姓名或者教职工编号进行查询"
>
</van-search>
v-model="pageForm.searchKeyWord"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入教职工姓名或者教职工编号进行查询"
></van-search>
<div style="display: flex">
<div style="width: calc(100% - 100px);background: rgb(255,255,255)">
<h4 style="margin-left: 5%;color: rgb(122,110,96)">一份祝福拉进同事的距离~</h4>
<h5 style="margin-left: 5%;color: rgb(122,110,96)">{{tableData.length}}同事即将生日</h5>
<div style="width: calc(100% - 100px); background: rgb(255, 255, 255)">
<h4 style="margin-left: 5%; color: rgb(122, 110, 96)">一份祝福拉进同事的距离~</h4>
<h5 style="margin-left: 5%; color: rgb(122, 110, 96)">{{tableData.length}}同事即将生日</h5>
</div>
<div style="width: 100px;max-width: 100px">
<van-image width="100px"
height="100px"
src="/assets/mobile/img/birthday/birthday1.png"
></van-image>
<div style="width: 100px; max-width: 100px">
<van-image width="100px" height="100px" src="/assets/mobile/img/birthday/birthday1.png"></van-image>
</div>
</div>
</div>
<div style="margin-top: 160px;margin-bottom: 50px">
<div style="margin-top: 160px; margin-bottom: 50px">
<div>
<van-checkbox-group v-model="result">
<van-grid :column-num="3" :border="false" style="background-color: white">
<van-grid-item
v-for="o in tableData"
:key="o.userId" style="padding: 5px;">
<van-grid-item v-for="o in tableData" :key="o.userId" style="padding: 5px">
<span style="font-size: 10px">{{o.birthday.substr(0,2)}}-{{o.birthday.substr(2,4)}}</span>
<div style="background-image: url('/assets/mobile/img/birthday/birthday2.png');
width: 100px;
height: 100px;
background-size: 100% 100%;
position: relative;
display: flex;
align-items: center;
justify-content: center;
">
<span style="font-size: 20px;font-weight: bold;font-family: cursive">{{o.username.substr(0,1)}}</span>
<div
style="
background-image: url(&quot;/assets/mobile/img/birthday/birthday2.png&quot;);
width: 100px;
height: 100px;
background-size: 100% 100%;
position: relative;
display: flex;
align-items: center;
justify-content: center;
"
>
<span style="font-size: 20px; font-weight: bold; font-family: cursive">{{o.username.substr(0,1)}}</span>
</div>
<span style="font-size: 10px">{{o.username}}</span>
<div class="test">
<span>{{o.unitName}}</span>
</div>
<!-- <span v-if="o.unitName.length>7" style="font-size: 10px;">{{o.unitName.substr(0,7)+"..."}}</span>-->
<!-- <span v-else style="font-size: 10px">{{o.unitName}}</span>-->
<van-checkbox
style="margin-left: 80px;margin-top: -35px"
icon-size="20px"
:name="o.userId" ref="checkboxes">
</van-checkbox>
<!-- <span v-if="o.unitName.length>7" style="font-size: 10px;">{{o.unitName.substr(0,7)+"..."}}</span>-->
<!-- <span v-else style="font-size: 10px">{{o.unitName}}</span>-->
<van-checkbox style="margin-left: 80px; margin-top: -35px" icon-size="20px" :name="o.userId" ref="checkboxes"></van-checkbox>
</van-grid-item>
</van-grid>
</van-checkbox-group>
@@ -75,22 +75,21 @@ layout("/mobile/platform.html"){
<div>
<van-tabbar route>
<van-tabbar-item replace @click="sendBlessings()" style="font-size: 16px;">送上祝福</van-tabbar-item>
<van-tabbar-item replace @click="sendBlessings()" style="font-size: 16px">送上祝福</van-tabbar-item>
<van-tabbar-item replace @click="showMine()" style="font-size: 16px">我收到的</van-tabbar-item>
</van-tabbar>
</div>
</div>
</div>
<script>
new Vue({
el: '#app',
el: "#app",
data() {
return {
tableData: [],
pageForm: {},
checked: true,
result: [],
result: []
}
},
methods: {
@@ -98,33 +97,31 @@ layout("/mobile/platform.html"){
this.onLoad()
},
async onLoad() {
const res = await $.post('/mobile/birthday/greeting/pageData', this.pageForm)
const res = await $.post("/mobile/birthday/greeting/pageData", this.pageForm)
if (res.code === 0) {
this.tableData = res.data
}
},
//送上祝福
sendBlessings() {
if(this.result.length===0){
this.$toast.fail("请选择教职工");
return;
if (this.result.length === 0) {
this.$toast.fail("请选择教职工")
return
}
localStorage.setItem("greetingResult",this.result);
window.location.href = '/mobile/birthday/greeting/greeting_list'
localStorage.setItem("greetingResult", this.result)
window.location.href = "/mobile/birthday/greeting/greeting_list"
},
toggle(index) {
this.$refs.checkboxes[index].toggle();
this.$refs.checkboxes[index].toggle()
},
showMine() {
window.location.href = '/mobile/birthday/greeting/greeting_info'
window.location.href = "/mobile/birthday/greeting/greeting_info"
}
},
created() {
this.onLoad();
},
components: {
this.onLoad()
},
components: {}
})
</script>
<!--#
@@ -21,79 +21,59 @@ layout("/mobile/platform.html"){
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="我收到的祝福" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="我收到的祝福" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-search
v-model="pageForm.username"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入教职工姓名进行查询"
>
</van-search>
<van-search v-model="pageForm.username" shape="round" maxlength="10" @search="doSearch" placeholder="请输入教职工姓名进行查询"></van-search>
</div>
<div style="margin-top: 70px">
<van-list v-model="mLoading" :finished="finished" :finished-text="giftInfo.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="mLoading" :finished="finished" :finished-text="giftInfo.length>0?'没有更多了':''" @load="onLoad">
<div v-for="o in giftInfo" :key="o.id" class="van-doc-card">
<div>
<div style="font-size: 15px;
font-weight: bold;
flex: 1;
margin-left: 15px;
overflow: hidden;
white-space: nowrap;">
<div style="font-size: 15px; font-weight: bold; flex: 1; margin-left: 15px; overflow: hidden; white-space: nowrap">
<span style="color: #3ea1ec">{{o.username}}</span>
<span style="color: #3ea1ec">|</span>
<span style="font-size: 10px;font-weight: normal;color: #a0a1a1">{{o.name}}</span>
<span style="font-size: 10px; font-weight: normal; color: #a0a1a1">{{o.name}}</span>
</div>
</div>
<div style="font-size: 10px">
<van-cell-group inset >
<van-cell-group inset>
<van-cell :border="false" title="赠送日期">{{o.giftTime}}</van-cell>
<van-cell :border="false" title="祝福语">
<span v-if="o.message.length==0">无</span>
<span v-if="o.message.length>0">{{o.message}}</span>
</van-cell>
<van-cell :border="false" title="生日贺卡" @click="showHk(o)"
v-if="o.isSend==1" is-link value="点击展示"></van-cell>
<van-cell :border="false" title="生日贺卡" @click="showHk(o)" v-if="o.isSend==1" is-link value="点击展示"></van-cell>
<van-cell :border="false" title="赠送礼物">
<van-image style="width: 50px;height: 50px" :src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id=' + o.files[0].id" @click="showGift(APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id=' + o.files[0].id,o.id)"></van-image>
<van-image
style="width: 50px; height: 50px"
:src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id=' + o.files[0].id"
@click="showGift(APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id=' + o.files[0].id,o.id)"
></van-image>
</van-cell>
</van-cell-group>
</div>
</div>
</van-list>
<van-empty
v-if="mLoading==false&&giftInfo.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&giftInfo.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</div>
<script>
new Vue({
el:'#app',
el: "#app",
mixins: [mobileMixins],
data(){
return{
data() {
return {
show: false,
images:'',
giftInfo:[],
images: "",
giftInfo: []
}
},
methods:{
doSearch(){
methods: {
doSearch() {
this.pageForm.pageNumber = 1
this.giftInfo = []
this.finished = false
@@ -101,11 +81,11 @@ layout("/mobile/platform.html"){
},
async onLoad() {
this.mLoading = true
const res = await $.post('/mobile/birthday/greeting/giftInfo', this.pageForm)
const res = await $.post("/mobile/birthday/greeting/giftInfo", this.pageForm)
this.mLoading = false
if (res.code === 0) {
res.data.list.forEach(v => {
if(!(typeof v.files =='object')){
res.data.list.forEach((v) => {
if (!(typeof v.files == "object")) {
v.files = JSON.parse(v.files)
}
})
@@ -117,16 +97,14 @@ layout("/mobile/platform.html"){
}
}
},
showGift(data){
showGift(data) {
vant.ImagePreview([data])
},
showHk(o){
window.location.href='/mobile/birthday/greeting/hk?id='+o.id
},
showHk(o) {
window.location.href = "/mobile/birthday/greeting/hk?id=" + o.id
}
},
created(){
}
created() {}
})
</script>
<!--#
@@ -3,7 +3,7 @@ layout("/mobile/platform.html"){
#-->
<style>
.sub{
.sub {
width: 100px;
height: 100px;
background-size: 100% 100%;
@@ -15,29 +15,31 @@ layout("/mobile/platform.html"){
</style>
<div id="app" style="background-color: white">
<van-nav-bar title="精选礼物" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="精选礼物" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div>
<span style="color: rgb(114,90,69);margin-left: 10px;font-size: 14px;font-weight: bold">正在为
<span v-for="o in tableData"> {{o.username}} </span>挑选礼物
<span style="color: rgb(114, 90, 69); margin-left: 10px; font-size: 14px; font-weight: bold">
正在为
<span v-for="o in tableData">{{o.username}}</span>
挑选礼物
</span>
</div>
<div>
<van-grid :column-num="6" :border="false">
<van-grid-item
v-for="o in tableData"
:key="o.userId" style="padding: 5px;">
<div style="background-color: rgb(203,200,222);
width: 50px;
height: 50px;
background-size: 100% 100%;
border-radius: 25px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
">
<van-grid-item v-for="o in tableData" :key="o.userId" style="padding: 5px">
<div
style="
background-color: rgb(203, 200, 222);
width: 50px;
height: 50px;
background-size: 100% 100%;
border-radius: 25px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
"
>
<span style="font-size: 20px">{{o.username.substr(0,1)}}</span>
</div>
<span style="font-size: 10px">{{o.username}}</span>
@@ -49,11 +51,12 @@ layout("/mobile/platform.html"){
<div><h3 style="margin-left: 10px">精选礼物</h3></div>
<div>
<van-grid :column-num="3" :border="false">
<van-grid-item
v-for="(o,index) in listGift"
:key="o.id" style="padding: 5px;">
<van-grid-item v-for="(o,index) in listGift" :key="o.id" style="padding: 5px">
<div class="sub">
<van-image :src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id=' + o.files[0].id" @click="sendGift(APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id=' + o.files[0].id,o.id)"></van-image>
<van-image
:src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id=' + o.files[0].id"
@click="sendGift(APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id=' + o.files[0].id,o.id)"
></van-image>
</div>
<span style="font-size: 10px">{{o.giftName}}</span>
</van-grid-item>
@@ -63,21 +66,21 @@ layout("/mobile/platform.html"){
<div>
<van-dialog v-model="show" title="送上礼物" show-cancel-button :before-close="beforeClose">
<div>
<img :src="images" style="display: flex;align-items: center;justify-content: center;height: 100px;margin: 0 auto"/>
<img :src="images" style="display: flex; align-items: center; justify-content: center; height: 100px; margin: 0 auto" />
</div>
<div style="margin-top: 10px;margin-bottom: 10px">
<div style="margin-top: 10px; margin-bottom: 10px">
<van-field
v-model="form.message"
rows="2"
autosize
label="祝福语"
type="textarea"
maxlength="100"
placeholder="请输入祝福语"
show-word-limit
v-model="form.message"
rows="2"
autosize
label="祝福语"
type="textarea"
maxlength="100"
placeholder="请输入祝福语"
show-word-limit
></van-field>
</div>
<div style="margin-top: 10px;margin-bottom: 10px">
<div style="margin-top: 10px; margin-bottom: 10px">
<van-row>
<van-col span="16">
<van-cell center title="是否发送贺卡">
@@ -93,80 +96,82 @@ layout("/mobile/platform.html"){
</div>
</van-dialog>
</div>
</div>
<script>
new Vue({
el:'#app',
data(){
return{
pageForm:{
greetingResult:localStorage.getItem("greetingResult"),
},
tableData:[],
listGift:[],
show: false,
images:'',
form:{
giftId:'',
message:'',
isSend:false,
},
}
},
methods:{
async loadList(){
const res = await $.post('/mobile/birthday/greeting/loadList',this.pageForm)
el: "#app",
data() {
return {
pageForm: {
greetingResult: localStorage.getItem("greetingResult")
},
tableData: [],
listGift: [],
show: false,
images: "",
form: {
giftId: "",
message: "",
isSend: false
}
}
},
methods: {
async loadList() {
const res = await $.post("/mobile/birthday/greeting/loadList", this.pageForm)
if (res.code === 0) {
this.tableData = res.data
}
},
async giftList(){
const res = await $.get('/mobile/birthday/greeting/giftList')
async giftList() {
const res = await $.get("/mobile/birthday/greeting/giftList")
if (res.code === 0) {
res.data.forEach(v => {
if(!(typeof v.files =='object')){
res.data.forEach((v) => {
if (!(typeof v.files == "object")) {
v.files = JSON.parse(v.files)
}
})
this.listGift = res.data
}
},
sendGift(data,id){
this.show=true;
this.images=data;
this.form.giftId=id;
this.form.greetingResult=this.pageForm.greetingResult;
sendGift(data, id) {
this.show = true
this.images = data
this.form.giftId = id
this.form.greetingResult = this.pageForm.greetingResult
},
beforeClose : async function (action, done) { // 点击事件 - 备注按钮提示框
if (action === 'confirm') { // 确认
const res = await $.post('/mobile/birthday/greeting/sendBlessing', this.form)
beforeClose: async function (action, done) {
// 点击事件 - 备注按钮提示框
if (action === "confirm") {
// 确认
const res = await $.post("/mobile/birthday/greeting/sendBlessing", this.form)
if (res.code === 0) {
done(); // 关闭提示框
done() // 关闭提示框
this.$toast.success("赠送成功")
} else {
done();
done()
this.$toast.fail("操作失败")
}
} else if (action === 'cancel') { // 取消
this.show = false;
this.images = '';
this.form = {};
done(); // 关闭提示框
} else if (action === "cancel") {
// 取消
this.show = false
this.images = ""
this.form = {}
done() // 关闭提示框
}
},
send(){
send() {
console.log(this.form.isSend)
},
showHk(){
window.location.href='/mobile/birthday/greeting/hk'
showHk() {
window.location.href = "/mobile/birthday/greeting/hk"
}
},
created(){
this.loadList();
this.giftList();
created() {
this.loadList()
this.giftList()
}
});
})
</script>
<!--#
}
@@ -5,13 +5,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="活动列表"
left-arrow
placeholder
fixed
@click-left="history.go(-1)"
></van-nav-bar>
<van-nav-bar title="活动列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
@@ -20,11 +14,7 @@ layout("/mobile/platform.html"){
</div>
<div style="margin: 60px auto">
<van-list
v-model="mLoading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="mLoading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<div v-for="o in tableData" class="list-card" @click="openView(o)">
<van-cell-group inset>
<van-cell title="主题" :border="false">{{o.hdname}}</van-cell>
@@ -35,12 +25,7 @@ layout("/mobile/platform.html"){
</van-cell-group>
</div>
</van-list>
<van-empty
v-if="mLoading==false&&tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<div>
@@ -49,20 +34,19 @@ layout("/mobile/platform.html"){
<van-tabbar-item icon="manager-o" replace url="/mobile/cahd/list">我的亲子作品</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
let vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
yearOption: [],
pageForm: {
year: '',
hdtype: 2,
year: "",
hdtype: 2
}
}
},
@@ -74,7 +58,7 @@ layout("/mobile/platform.html"){
},
async onLoad() {
this.mLoading = true
$.post('/mobile/cahd/apply/pageData', this.pageForm).then(res => {
$.post("/mobile/cahd/apply/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -87,27 +71,26 @@ layout("/mobile/platform.html"){
})
},
openView(o) {
const {hdid, hdjssj, hdkssj} = o
const { hdid, hdjssj, hdkssj } = o
if (moment().format("YYYY-MM-DD HH:mm:ss") < hdkssj) {
vant.Toast('报名暂未开始!')
vant.Toast("报名暂未开始!")
return
} else if (moment().format("YYYY-MM-DD HH:mm:ss") > hdjssj) {
vant.Toast('报名已结束!')
vant.Toast("报名已结束!")
return
}
window.location.href = '/childrenActivities?client=mobile&id=' + hdid
window.location.href = "/childrenActivities?client=mobile&id=" + hdid
}
},
async created() {
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({value: i, text: i + '年'},)
this.yearOption.unshift({ value: i, text: i + "年" })
}
this.$set(this.pageForm, "year", this.yearOption[0].value)
}
})
</script>
<!--#
}
#-->
@@ -13,7 +13,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="作品列表" left-arrow placeholder fixed @click-left="location.href='/mobile/index'"></van-nav-bar>
<van-nav-bar title="作品列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
@@ -1,23 +1,23 @@
<!--#
layout("/mobile/platform.html"){
#-->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/video/css/video-js.min.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/video/css/video-js.min.css" />
<script src="${base!}/assets/platform/plugins/video/js/video.min.js"></script>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="详细信息" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="详细信息" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<mobile-cahd-info ref="minfo"></mobile-cahd-info>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
data() {
return {}
},
components: {
'mobile-cahd-info': httpVueLoader('/components/mobile/cahd/info.vue?v=' + new Date().getTime()),
"mobile-cahd-info": httpVueLoader("/components/mobile/cahd/info.vue?v=" + new Date().getTime())
},
methods: {},
async created() {
@@ -31,7 +31,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
#-->
+12 -19
View File
@@ -3,7 +3,6 @@ layout("/mobile/platform.html"){
#-->
<style>
.container .van-button {
position: relative;
display: block;
@@ -20,7 +19,7 @@ layout("/mobile/platform.html"){
line-height: 1.41176471;
border-radius: 4px;
overflow: hidden;
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
background-color: #1867b0;
}
@@ -30,44 +29,38 @@ layout("/mobile/platform.html"){
height: calc(100vh - 46px);
flex-direction: column;
}
</style>
<div id="app" v-cloak>
<van-nav-bar title="代表证" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="代表证" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="container">
<van-button @click="showCard('jdh')" style="margin-bottom: 40px;">教代会代表证</van-button>
<van-button @click="showCard('jdh')" style="margin-bottom: 40px">教代会代表证</van-button>
<van-button @click="showCard('gdh')">工代会代表证</van-button>
</div>
</div>
<script>
new Vue({
el: '#app',
el: "#app",
data() {
return {
}
return {}
},
methods: {
async showCard(type) {
//先查看当前登录用户是不是代表
const resp = await $.post('/platform/card/isDb', {type: type})
if(resp.code !== 0) {
const resp = await $.post("/platform/card/isDb", { type: type })
if (resp.code !== 0) {
vant.Dialog.alert({
title: '温馨提示',
message: resp.msg,
title: "温馨提示",
message: resp.msg
})
return
}
//获取代表证
vant.ImagePreview(['/platform/card/showCard?type=' + type])
},
},
created() {
vant.ImagePreview(["/platform/card/showCard?type=" + type])
}
},
created() {}
})
</script>
<!--#
@@ -1,19 +1,16 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
</style>
<style></style>
<div id="app" v-cloak>
<van-nav-bar title="慰问申请信息" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="慰问申请信息" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div>
<condolence-info :id.sync="id"></condolence-info>
<div style="margin: 20px 20px 10px 20px">
<van-button :color="themeColor" block @click="doEdit" class="ml10 mr10"
v-if="state_id==2010||state_id==2020">撤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回
<van-button :color="themeColor" block @click="doEdit" class="ml10 mr10" v-if="state_id==2010||state_id==2020">
撤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回
</van-button>
</div>
</div>
@@ -21,7 +18,7 @@ layout("/mobile/platform.html"){
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -30,30 +27,29 @@ layout("/mobile/platform.html"){
}
},
components: {
'condolence-info': httpVueLoader('/components/condolence/mobile/common.vue?v=' + new Date().getTime()),
"condolence-info": httpVueLoader("/components/condolence/mobile/common.vue?v=" + new Date().getTime())
},
methods: {
doEdit() {
vant.Dialog.confirm({
title: '标题',
message: '确认要撤回吗?',
title: "标题",
message: "确认要撤回吗?"
})
.then(async () => {
const resp = await $.post("/platform/fw/condolence/ucr/doEdit", {id: this.id});
this.$toast.success('撤回成功');
const resp = await $.post("/platform/fw/condolence/ucr/doEdit", { id: this.id })
this.$toast.success("撤回成功")
setTimeout(() => {
history.back()
}, 1000)
})
.catch(() => {
// on cancel
});
})
}
},
async created() {
this.id = GetQueryString('id')
this.state_id = GetQueryString('state_id')
this.id = GetQueryString("id")
this.state_id = GetQueryString("state_id")
}
})
</script>
@@ -3,38 +3,25 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed
@click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu :active-color="themeColor">
<van-dropdown-item v-model="pageForm.year" @change="yearChange"
:options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange"
:options="auditList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.type" @change="yearChange"
:options="mCondolence.typeList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unionId" @change="yearChange"
:options="mCommon.unionList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange"
:options="mCommon.unitList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" @change="yearChange" :options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange" :options="auditList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.type" @change="yearChange" :options="mCondolence.typeList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unionId" @change="yearChange" :options="mCommon.unionList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange" :options="mCommon.unitList"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 70px auto 0">
<van-list v-model="mLoading" :finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="pageData">
<van-list v-model="mLoading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="pageData">
<div v-for="o in tableData" class="list-card" @click="openView(o)">
<van-cell-group inset>
<van-cell :border="false" title="被慰问人">
<span class="van-ellipsis" style="font-size: 16px;"
:style="{color:themeColor}">
{{o.be_username}}
</span>
<span class="van-ellipsis" style="font-size: 16px" :style="{color:themeColor}">{{o.be_username}}</span>
</van-cell>
<van-cell :border="false" title="申&ensp;请&ensp;人">{{o.sqr_username}}</van-cell>
<van-cell :border="false" title="所在单位">{{o.be_unitname}}</van-cell>
@@ -49,18 +36,13 @@ layout("/mobile/platform.html"){
</div>
</van-list>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image"
image="/none.svg"
description="暂无数据">
</van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -68,30 +50,30 @@ layout("/mobile/platform.html"){
unionList: [],
yearList: [],
auditList: [
{text: '未审核', value: false},
{text: '已审核', value: true},
{ text: "未审核", value: false },
{ text: "已审核", value: true }
],
handle: true,
pageForm: {
year: new Date().getFullYear(),
isAudit: false,
},
isAudit: false
}
}
},
methods: {
openView(o) {
window.location.href = '/mobile/condolence/audit/auditHtml?state_id=' + o.state_id + '&id=' + o.id
window.location.href = "/mobile/condolence/audit/auditHtml?state_id=" + o.state_id + "&id=" + o.id
},
yearChange() {
this.tableData = []
this.refreshing = true;
this.finished = false;
this.refreshing = true
this.finished = false
this.pageForm.pageNumber = 0
this.flushUnits()
},
pageData() {
this.mLoading = true
$.get(loc() + '/pageData', this.pageForm, (res) => {
$.get(loc() + "/pageData", this.pageForm, (res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -102,11 +84,10 @@ layout("/mobile/platform.html"){
}
})
this.mLoading = false
},
async flushUnits() {
//this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === "true") {
await mCommon.getUnitList(this.pageForm.unionId)
} else {
await mCommon.getUnitList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
@@ -115,7 +96,7 @@ layout("/mobile/platform.html"){
async init() {
let nowYear = new Date().getFullYear()
for (let i = nowYear; i >= nowYear - 9; i--) {
this.yearList.push({text: i, value: i})
this.yearList.push({ text: i, value: i })
}
await mCondolence.getType()
await mCommon.getUnionList()
@@ -133,12 +114,12 @@ layout("/mobile/platform.html"){
async created() {
this.init()
this.flushUnits()
if (GetQueryString("audit") === '1') {
if (GetQueryString("audit") === "1") {
this.pageForm.isAudit = true
}
}
})
window.addEventListener('pageshow', e => {
window.addEventListener("pageshow", (e) => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.init()
vue.yearChange()
@@ -146,7 +127,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
@@ -3,37 +3,34 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<condolence-info ref="info" :id.sync="id" title="校工会审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
校工会审核
</div>
<div class="van-sidebar-item van-sidebar-item--select">校工会审核</div>
</div>
<van-form>
<van-field readonly left-icon="contact"
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
<van-field
readonly
left-icon="contact"
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
></van-field>
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o"
readonly></van-field>
<van-field v-model="formData.time" label="审核时间" left-icon="clock-o" readonly></van-field>
<van-field v-model="formData.opinion"
left-icon="chat-o"
rows="1"
required
:rules="[{ required:true, message: '请输入审核意见' }]"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
<van-field
v-model="formData.opinion"
left-icon="chat-o"
rows="1"
required
:rules="[{ required:true, message: '请输入审核意见' }]"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
></van-field>
<van-field label="签字" required style="flex-flow: column">
@@ -45,88 +42,76 @@ layout("/mobile/platform.html"){
</template>
</van-field>
<van-row gutter="20" style="margin-top: 30px;padding: 0 25px">
<van-row gutter="20" style="margin-top: 30px; padding: 0 25px">
<van-col span="8">
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
</van-button>
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(2)">返回修改
</van-button>
<van-button :color="themeColor" block @click="doAudit(2)">返回修改</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(3)">通 过
</van-button>
<van-button :color="themeColor" block @click="doAudit(3)">通 过</van-button>
</van-col>
</van-row>
</van-form>
</template>
</condolence-info>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
handle: true,
id: "",
formData: {},
formData: {}
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'condolence-info': httpVueLoader('/components/condolence/mobile/common.vue?v=' + new Date().getTime()),
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue"),
"condolence-info": httpVueLoader("/components/condolence/mobile/common.vue?v=" + new Date().getTime())
},
methods: {
async doAudit(pass) {
if (!this.formData.opinion) {
this.$toast.fail('请填写审核意见');
this.$toast.fail("请填写审核意见")
return
}
this.$refs.signature.submitSign()
if (this.$refs.signature.checkNull()) {
vant.Toast('请签名!')
vant.Toast("请签名!")
return
}
await this.$refs.signature.updateSign()
this.formData.pass = pass
const resp = await $.post("/platform/fw/condolence/fr/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success('审核成功')
this.$toast.success("审核成功")
setTimeout(() => {
window.history.back()
}, 1000)
} else {
this.$toast.fail('审核失败');
this.$toast.fail("审核失败")
}
},
}
},
async created() {
this.id = GetQueryString("id")
const {data} = await $.get("/platform/fw/condolence/findOne", {id: this.id})
const { data } = await $.get("/platform/fw/condolence/findOne", { id: this.id })
this.formData = {
id: this.id,
username: "${@shiro.getPrincipalProperty('username')}",
time: moment().format('YYYY-MM-DD'),
time: moment().format("YYYY-MM-DD"),
opinion: null,
sign: "",
sign: ""
}
}
})
</script>
<!--#
}
#-->
@@ -3,7 +3,7 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<condolence-info ref="info" :id.sync="id" title="校工会主席审核" :handle="handle">
<template #handle>
@@ -3,7 +3,7 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<condolence-info ref="info" :id.sync="id" title="基层工会审核" :handle="handle">
<template #handle>
@@ -44,15 +44,12 @@ layout("/mobile/platform.html"){
.avatar .van-image__img {
border-radius: 10px;
}
.list-card {
margin: 10px 10px;
}
.list-card .van-cell {
border-radius: 10px;
padding: 18px 16px;
@@ -61,20 +58,11 @@ layout("/mobile/platform.html"){
.van-cell-group {
border-radius: 10px;
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="慈善捐款项目"
left-arrow
placeholder
fixed
@click-left="history.back()"
safe-area-inset-top
></van-nav-bar>
<van-nav-bar title="慈善捐款项目" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')" safe-area-inset-top></van-nav-bar>
<div style="margin: 20px auto 0 auto">
<van-list :finished="finished" :finished-text="isNullTypeCodeData.length>0?'没有更多了':''">
@@ -84,24 +72,19 @@ layout("/mobile/platform.html"){
<div class="list-item">
<div class="left-img">
<van-image
class="avatar"
fit="cover"
:src=" FILE_DOMAIN + '/fileStreamPreview?id=' + o.contributionFiles[0].id"
class="avatar"
fit="cover"
:src=" FILE_DOMAIN + '/fileStreamPreview?id=' + o.contributionFiles[0].id"
></van-image>
</div>
<div class="right-content">
<div class="r-title">{{o.contributionName}}</div>
<div class="van-ellipsis r-content">
{{removeHTMLTag(o.contributionIntroduce)}}
</div>
<div class="van-ellipsis r-content">{{removeHTMLTag(o.contributionIntroduce)}}</div>
<div>
<van-row type="flex" justify="space-between"
style="white-space: nowrap">
<van-row type="flex" justify="space-between" style="white-space: nowrap">
<van-col span="12">
已筹:
<sapn style="color: red">
{{o.totalMoney?o.totalMoney:0}}
</sapn>
<sapn style="color: red">{{o.totalMoney?o.totalMoney:0}}</sapn>
元
</van-col>
<van-col span="12" class="text-right">
@@ -111,10 +94,8 @@ layout("/mobile/platform.html"){
</van-col>
</van-row>
</div>
</div>
</div>
</van-cell>
</van-cell-group>
</div>
@@ -125,18 +106,17 @@ layout("/mobile/platform.html"){
<div class="list-item">
<div class="left-img">
<van-image
class="avatar"
fit="cover"
:src=" FILE_DOMAIN + '/fileStreamPreview?id=' + o.contributionTypeFiles[0].id"
class="avatar"
fit="cover"
:src=" FILE_DOMAIN + '/fileStreamPreview?id=' + o.contributionTypeFiles[0].id"
></van-image>
</div>
<div class="right-content">
<div class="r-title">{{o.typeName}}
<div class="r-title">
{{o.typeName}}
<van-tag type="danger" round>专题</van-tag>
</div>
<div class="van-ellipsis r-content">
{{removeHTMLTag(o.contributionTypeIntroduce)}}
</div>
<div class="van-ellipsis r-content">{{removeHTMLTag(o.contributionTypeIntroduce)}}</div>
<div>
<van-row type="flex" justify="space-between">
<van-col span="24">
@@ -146,25 +126,25 @@ layout("/mobile/platform.html"){
</van-col>
</van-row>
</div>
</div>
</div>
</van-cell>
</van-cell-group>
</div>
</van-list>
</div>
<van-empty v-if="mLoading==false&&isNullTypeCodeData.length==0&&contributionTypeData.length==0"
class="custom-image" image="/none.svg"
description="暂无数据">
</van-empty>
<van-empty
v-if="mLoading==false&&isNullTypeCodeData.length==0&&contributionTypeData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -175,30 +155,29 @@ layout("/mobile/platform.html"){
},
methods: {
openContribution(data) {
const time = moment().format('YYYY-MM-DD HH:mm:ss')
const time = moment().format("YYYY-MM-DD HH:mm:ss")
if (!data.sonNum) {
if (time < data.contributionStartTime) {
this.$toast(data.contributionStartTime + '开始捐款');
return;
this.$toast(data.contributionStartTime + "开始捐款")
return
}
if (time > data.contributionEndTime) {
this.$toast('捐款在' + data.contributionEndTime + '结束');
return;
this.$toast("捐款在" + data.contributionEndTime + "结束")
return
}
}
if (data.contributionTypeCode == null && data.sonNum == 0) {
window.location.href = '/mobile/contribution/view/contributionView?id=' + data.id
window.location.href = "/mobile/contribution/view/contributionView?id=" + data.id
} else if (data.sonNum > 0 && data.typeCode) {
window.location.href = '/mobile/contribution/son/sonList?typeCode=' + data.typeCode
window.location.href = "/mobile/contribution/son/sonList?typeCode=" + data.typeCode
} else {
this.$toast('暂无项目');
this.$toast("暂无项目")
return
}
},
async isNullTypeCodePageData() {
const {data} = await $.post("/mobile/contribution/isNullTypeCodePageData")
data.forEach(v => {
const { data } = await $.post("/mobile/contribution/isNullTypeCodePageData")
data.forEach((v) => {
v.sonNum = 0
v.contributionFiles = JSON.parse(v.contributionFiles)
})
@@ -206,8 +185,8 @@ layout("/mobile/platform.html"){
},
async pageData() {
await this.isNullTypeCodePageData()
const {data} = await $.get("/mobile/contribution/getContributionTypeData")
data.forEach(v => {
const { data } = await $.get("/mobile/contribution/getContributionTypeData")
data.forEach((v) => {
v.contributionTypeCode = v.typeCode
v.contributionTypeFiles = JSON.parse(v.contributionTypeFiles)
})
@@ -221,7 +200,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
#-->
@@ -19,7 +19,6 @@ layout("/mobile/platform.html"){
.typeName {
margin-left: 10px;
height: 70px;
}
.typeName .typeNameLabel {
@@ -39,29 +38,16 @@ layout("/mobile/platform.html"){
margin-bottom: 50px;
padding-bottom: 10px;
height: calc(100% - 250px);
background-color: #ffffff
background-color: #ffffff;
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="项目详情"
left-arrow
placeholder
fixed
@click-left="history.back()"
safe-area-inset-top
></van-nav-bar>
<van-nav-bar title="项目详情" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')" safe-area-inset-top></van-nav-bar>
<div>
<div style="background-color:#ffffff;">
<van-image
class="backdrop"
fit="cover"
:src=" FILE_DOMAIN + '/fileStreamPreview?id=' + viewData.contributionFiles[0].id"
></van-image>
<div style="background-color: #ffffff">
<van-image class="backdrop" fit="cover" :src=" FILE_DOMAIN + '/fileStreamPreview?id=' + viewData.contributionFiles[0].id"></van-image>
<div class="typeName">
<div class="typeNameLabel">{{viewData.contributionName}}</div>
<van-row>
@@ -77,29 +63,22 @@ layout("/mobile/platform.html"){
</div>
</div>
<div class="con-introduce">
<van-cell-group style=" border-top-left-radius: 30px; border-top-right-radius: 30px;">
<van-cell style=" border-top-left-radius: 30px; border-top-right-radius: 30px;">
<van-cell-group style="border-top-left-radius: 30px; border-top-right-radius: 30px">
<van-cell style="border-top-left-radius: 30px; border-top-right-radius: 30px">
<template #title>
<span class="custom-title">项目介绍</span>
<span v-if="viewData.contributionMode==='sdc'" style="color: red">(捐款方式为水滴筹将直接跳转放到相应页面)</span>
</template>
</van-cell>
</van-cell-group>
<div v-html="viewData.contributionIntroduce"
style="margin: 15px;white-space: pre-wrap;word-break: break-word;"></div>
<div v-html="viewData.contributionIntroduce" style="margin: 15px; white-space: pre-wrap; word-break: break-word"></div>
</div>
<div style="position: fixed;width: 100%;bottom: 0px;height: 60px">
<van-button type="info" class="bth" block round @click="doContribution"
v-if="viewData.isContributionEnable" :color="themeColor">我要捐款
</van-button>
<van-button type="info" class="bth" block round
v-if="!viewData.isContributionEnable">暂未开放
<div style="position: fixed; width: 100%; bottom: 0px; height: 60px">
<van-button type="info" class="bth" block round @click="doContribution" v-if="viewData.isContributionEnable" :color="themeColor">
我要捐款
</van-button>
<van-button type="info" class="bth" block round v-if="!viewData.isContributionEnable">暂未开放</van-button>
</div>
<!-- <van-row>
<van-col span="24">
@@ -110,10 +89,9 @@ layout("/mobile/platform.html"){
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -122,14 +100,14 @@ layout("/mobile/platform.html"){
},
methods: {
doContribution() {
if (this.viewData.contributionMode === 'sdc') {
if (this.viewData.contributionMode === "sdc") {
window.location.href = this.viewData.contributionUrl
} else {
window.location.href = '/mobile/contribution/doContribution?id=' + this.viewData.id
window.location.href = "/mobile/contribution/doContribution?id=" + this.viewData.id
}
},
async getContributionById(id) {
const {data} = await $.post("/mobile/contribution/getContributionById", {id: id})
const { data } = await $.post("/mobile/contribution/getContributionById", { id: id })
data.contributionFiles = JSON.parse(data.contributionFiles)
this.viewData = data
}
@@ -141,7 +119,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
@@ -28,63 +28,47 @@ layout("/mobile/platform.html"){
margin: 10px 10px;
border-radius: 20px;
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="我要捐款"
left-arrow
placeholder
fixed
@click-left="history.back()"
safe-area-inset-top
></van-nav-bar>
<van-nav-bar title="我要捐款" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')" safe-area-inset-top></van-nav-bar>
<van-form @submit="onSubmit">
<van-cell-group>
<van-row type="flex" gutter="20">
<van-col span="8" v-for="key in moneyData" @click="dateClick(key)"
style="text-align: center;border-radius: 20px;">
<van-col span="8" v-for="key in moneyData" @click="dateClick(key)" style="text-align: center; border-radius: 20px">
<van-tag :plain="activeDate!=key" size="large" type="primary">
<div style="position: absolute;left: 0;right: 0">{{key}}</div>
<div style="position: absolute; left: 0; right: 0">{{key}}</div>
</van-tag>
</van-col>
</van-row>
<div class="van-hairline--top">
<van-field v-model="formData.money" label="捐赠金额" type="number" input-align="right"
placeholder="请输入捐赠金额" @input="moneyInput">
<template #button>
元
</template>
<van-field
v-model="formData.money"
label="捐赠金额"
type="number"
input-align="right"
placeholder="请输入捐赠金额"
@input="moneyInput"
>
<template #button>元</template>
</van-field>
</div>
</van-cell-group>
<van-cell-group>
<van-field v-model="formData.username" label="真实姓名:" input-align="right" readonly>
</van-field>
<van-field v-model="formData.loginname" label="真实工号:" input-align="right" readonly>
</van-field>
<van-field v-model="formData.mobile" label="联系电话:" input-align="right"
placeholder="请输入手机号或电话号">
</van-field>
<van-field v-model="formData.username" label="真实姓名:" input-align="right" readonly></van-field>
<van-field v-model="formData.loginname" label="真实工号:" input-align="right" readonly></van-field>
<van-field v-model="formData.mobile" label="联系电话:" input-align="right" placeholder="请输入手机号或电话号"></van-field>
</van-cell-group>
<van-radio-group v-model="formData.payMode">
<van-cell-group>
<van-cell title="微信支付" clickable @click="formData.payMode = 'WeChat'"
icon="/assets/mobile/svg/wx.png">
<van-cell title="微信支付" clickable @click="formData.payMode = 'WeChat'" icon="/assets/mobile/svg/wx.png">
<template #right-icon>
<van-radio name="WeChat"></van-radio>
</template>
</van-cell>
<van-cell title="支付宝支付" clickable @click="formData.payMode = 'Alipay'"
icon="/assets/mobile/svg/zfb.png">
<van-cell title="支付宝支付" clickable @click="formData.payMode = 'Alipay'" icon="/assets/mobile/svg/zfb.png">
<template #right-icon>
<van-radio name="Alipay"></van-radio>
</template>
@@ -93,8 +77,7 @@ layout("/mobile/platform.html"){
</van-radio-group>
<van-cell-group>
<van-field name="files" label="捐款凭证" required style="flex-flow: column"
input-align="left">
<van-field name="files" label="捐款凭证" required style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">捐款凭证</div>
</template>
@@ -104,29 +87,23 @@ layout("/mobile/platform.html"){
</van-field>
</van-cell-group>
<div class="bth">
<van-row style="display: flex;padding-left: 15px;" type="flex" justify="space-between">
<van-col span="16" style="align-self:center;">合计:
<van-row style="display: flex; padding-left: 15px" type="flex" justify="space-between">
<van-col span="16" style="align-self: center">
合计:
<sapn style="color: red">{{formData.money?formData.money:0}}</sapn>
元
</van-col>
<van-col span="8" style="align-self:center;padding-right: 20px;">
<van-button plain type="info" style="float: right;border-radius: 15px;"
:color="themeColor">确认捐款
</van-button>
<van-col span="8" style="align-self: center; padding-right: 20px">
<van-button plain type="info" style="float: right; border-radius: 15px" :color="themeColor">确认捐款</van-button>
</van-col>
</van-row>
</div>
</van-form>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -137,7 +114,7 @@ layout("/mobile/platform.html"){
7000: 7000,
1952: 1952,
1975: 1975,
1987: 1987,
1987: 1987
},
formData: {}
}
@@ -146,42 +123,38 @@ layout("/mobile/platform.html"){
dateClick(key) {
this.activeDate = key
this.formData.money = key
},
moneyInput(val) {
this.$set(this.formData, "money", val)
},
async onSubmit() {
if (!this.formData.money) {
this.$toast.fail('捐赠金额不能为空');
this.$toast.fail("捐赠金额不能为空")
return
}
if (!this.formData.contributionFiles) {
this.$toast.fail('捐赠凭证不能为空');
this.$toast.fail("捐赠凭证不能为空")
return
}
const confirm = await vant.Dialog.confirm({
title: '请确认',
message: '确认要为' + this.formData.contributionName + '捐款吗?',
title: "请确认",
message: "确认要为" + this.formData.contributionName + "捐款吗?"
})
if (confirm === "confirm") {
const data = await $.post("/mobile/contribution/doContributionApply", {contributionApply: JSON.stringify(this.formData)})
const data = await $.post("/mobile/contribution/doContributionApply", { contributionApply: JSON.stringify(this.formData) })
if (data.code === 0) {
vant.Dialog.alert({
title: '提示',
message: '捐赠成功,已收到您为“' + this.formData.contributionName + '”捐赠的善款',
confirmButtonColor: '#1867b0'
title: "提示",
message: "捐赠成功,已收到您为“" + this.formData.contributionName + "”捐赠的善款",
confirmButtonColor: "#1867b0"
}).then(() => {
window.history.back()
});
})
}
}
},
async init(id) {
const {data} = await $.post("/mobile/contribution/getContributionById", {id: id})
const { data } = await $.post("/mobile/contribution/getContributionById", { id: id })
this.formData = {
contributionId: id,
username: "${@shiro.getPrincipalProperty('username')}",
@@ -189,20 +162,17 @@ layout("/mobile/platform.html"){
mobile: "${@shiro.getPrincipalProperty('mobile')}",
payMode: "WeChat",
money: null,
contributionName: data.contributionName,
contributionName: data.contributionName
}
}
},
created() {
const id = this.GetQueryString("id")
this.init(id)
}
})
</script>
<!--#
}
#-->
@@ -51,7 +51,6 @@ layout("/mobile/platform.html"){
.typeName {
margin-left: 10px;
height: 70px;
}
.typeName .typeNameLabel {
@@ -67,10 +66,8 @@ layout("/mobile/platform.html"){
.avatar .van-image__img {
border-radius: 10px;
}
.list-card .van-cell {
border-radius: 10px;
padding: 18px 16px;
@@ -84,30 +81,16 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="项目专题"
left-arrow
placeholder
fixed
@click-left="history.back()"
safe-area-inset-top
></van-nav-bar>
<van-nav-bar title="项目专题" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')" safe-area-inset-top></van-nav-bar>
<div style=" background-color:#ffffff;">
<van-image
class="backdrop"
fit="cover"
:src=" FILE_DOMAIN + '/fileStreamPreview?id=' + typeData.contributionTypeFiles[0].id"
></van-image>
<div style="background-color: #ffffff">
<van-image class="backdrop" fit="cover" :src=" FILE_DOMAIN + '/fileStreamPreview?id=' + typeData.contributionTypeFiles[0].id"></van-image>
<div class="typeName">
<div class="typeNameLabel">{{typeData.typeName}}
<div class="typeNameLabel">
{{typeData.typeName}}
<van-tag type="danger" round>专题</van-tag>
</div>
<div class="van-multi-ellipsis--l2 typeNameContent">
{{removeHTMLTag(typeData.contributionTypeIntroduce)}}
</div>
<div class="van-multi-ellipsis--l2 typeNameContent">{{removeHTMLTag(typeData.contributionTypeIntroduce)}}</div>
</div>
</div>
@@ -117,27 +100,21 @@ layout("/mobile/platform.html"){
<van-cell-group inset>
<van-cell :border="false">
<div class="list-item">
<div class="left-img">
<van-image
class="avatar"
fit="cover"
:src=" FILE_DOMAIN + '/fileStreamPreview?id=' + o.contributionFiles[0].id"
class="avatar"
fit="cover"
:src=" FILE_DOMAIN + '/fileStreamPreview?id=' + o.contributionFiles[0].id"
></van-image>
</div>
<div class="right-content">
<div class="r-title">{{o.contributionName}}</div>
<div class="van-ellipsis r-content">
{{removeHTMLTag(o.contributionIntroduce)}}
</div>
<div class="van-ellipsis r-content">{{removeHTMLTag(o.contributionIntroduce)}}</div>
<div>
<van-row type="flex" justify="space-between"
style="white-space: nowrap">
<van-row type="flex" justify="space-between" style="white-space: nowrap">
<van-col span="12">
已筹:
<sapn style="color: red">
{{o.totalMoney?o.totalMoney:0}}
</sapn>
<sapn style="color: red">{{o.totalMoney?o.totalMoney:0}}</sapn>
元
</van-col>
<van-col span="12" class="text-right">
@@ -147,52 +124,49 @@ layout("/mobile/platform.html"){
</van-col>
</van-row>
</div>
</div>
</div>
</van-cell>
</van-cell-group>
</div>
</van-list>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
sonData: [],
typeData: {},
typeData: {}
}
},
methods: {
openContribution(data) {
const time = moment().format('YYYY-MM-DD HH:mm:ss')
const time = moment().format("YYYY-MM-DD HH:mm:ss")
if (!data.sonNum) {
if (time < data.contributionStartTime) {
this.$toast(data.contributionStartTime + '开始捐款');
return;
this.$toast(data.contributionStartTime + "开始捐款")
return
}
if (time > data.contributionEndTime) {
this.$toast('捐款在' + data.contributionEndTime + '结束');
return;
this.$toast("捐款在" + data.contributionEndTime + "结束")
return
}
}
window.location.href = '/mobile/contribution/view/contributionView?id=' + data.id
window.location.href = "/mobile/contribution/view/contributionView?id=" + data.id
},
async pageData(typeCode) {
const {data} = await $.get("/mobile/contribution/son/pageData", {typeCode: typeCode})
data.forEach(v => {
const { data } = await $.get("/mobile/contribution/son/pageData", { typeCode: typeCode })
data.forEach((v) => {
v.contributionFiles = JSON.parse(v.contributionFiles)
})
this.sonData = data
},
async getTypeByCode(typeCode) {
const {data} = await $.get("/mobile/contribution/son/getTypeByCode", {typeCode: typeCode})
const { data } = await $.get("/mobile/contribution/son/getTypeByCode", { typeCode: typeCode })
this.typeData = data
}
},
@@ -204,7 +178,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
#-->
@@ -1,12 +1,10 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
</style>
<style></style>
<div id="app" v-cloak>
<van-nav-bar title="困难帮扶申请信息" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="困难帮扶申请信息" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div>
<difficulty-info :id.sync="id"></difficulty-info>
@@ -15,7 +13,7 @@ layout("/mobile/platform.html"){
<script src="/assets/platform/module/difficulty/common.js?v=1.0.0"></script>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -24,15 +22,15 @@ layout("/mobile/platform.html"){
}
},
components: {
'difficulty-info': httpVueLoader('/components/mobile/difficulty/info.vue?v=' + new Date().getTime()),
"difficulty-info": httpVueLoader("/components/mobile/difficulty/info.vue?v=" + new Date().getTime())
},
methods: {},
async created() {
this.id = GetQueryString('id')
this.state_id = GetQueryString('state_id')
this.id = GetQueryString("id")
this.state_id = GetQueryString("state_id")
}
})
</script>
<!--#
}
#-->
#-->
@@ -3,10 +3,10 @@ layout("/mobile/platform.html"){
#-->
<style>
.apply_btn {
animation: come .5s;
animation: come 0.5s;
position: fixed;
top: 20%;
right: 0
right: 0;
}
@keyframes come {
@@ -17,12 +17,11 @@ layout("/mobile/platform.html"){
right: 0px;
}
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="困难帮扶申请列表" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="困难帮扶申请列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
@@ -30,14 +29,11 @@ layout("/mobile/platform.html"){
</van-dropdown-menu>
</div>
<div style="margin: 60px auto 0 auto">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
@load="pageData">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="pageData">
<div v-for="o in tableData" class="list-card" @click="openInfo(o.id,o.zt)">
<van-cell-group inset>
<van-cell :border="false" title="受补助人">
<span class="van-ellipsis" style="font-size: 16px;" :style="{color:themeColor}">
{{o.sbzrname}}({{o.sbzrloginname}})
</span>
<span class="van-ellipsis" style="font-size: 16px" :style="{color:themeColor}">{{o.sbzrname}}({{o.sbzrloginname}})</span>
</van-cell>
<van-cell :border="false" title="申请时间">{{o.sqsj}}</van-cell>
<van-cell :border="false" title="所属单位">{{o.unitname}}</van-cell>
@@ -50,34 +46,30 @@ layout("/mobile/platform.html"){
</van-list>
</div>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg"
description="暂无数据">
</van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
visible: true,
typeOption: [
{value: null, text: '全部'}
],
typeOption: [{ value: null, text: "全部" }],
yearOption: [],
pageForm: {
year: '',
type: ''
year: "",
type: ""
}
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue")
},
methods: {
openInfo(id, state) {
window.location.href = '/mobile/difficulty/apply/apply_info?id=' + id
window.location.href = "/mobile/difficulty/apply/apply_info?id=" + id
/* if ([95,96, 100].includes(state)) {
window.location.href = '/mobile/difficulty/apply/index?id=' + id
}else{
@@ -92,19 +84,18 @@ layout("/mobile/platform.html"){
listenTouch() {
this.$nextTick(() => {
const app = document.querySelector("#app")
app.addEventListener('touchstart', () => {
app.addEventListener("touchstart", () => {
this.visible = false
})
app.addEventListener('touchend', () => {
app.addEventListener("touchend", () => {
this.visible = true
})
})
},
pageData() {
this.mLoading = true
setTimeout(async () => {
$.get('/platform/fw/difficulty/applylist/pageData', this.pageForm, (res) => {
$.get("/platform/fw/difficulty/applylist/pageData", this.pageForm, (res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -116,7 +107,7 @@ layout("/mobile/platform.html"){
})
this.mLoading = false
}, 600)
},
}
},
mounted() {
this.listenTouch()
@@ -124,7 +115,7 @@ layout("/mobile/platform.html"){
async created() {
this.mLoading = true
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({value: i, text: i + '年'},)
this.yearOption.unshift({ value: i, text: i + "年" })
}
this.$set(this.pageForm, "year", this.yearOption[0].value)
this.mLoading = false
@@ -133,4 +124,4 @@ layout("/mobile/platform.html"){
</script>
<!--#
}
#-->
#-->
@@ -3,36 +3,24 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="困难帮扶审核" left-arrow placeholder fixed
@click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="困难帮扶审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="pageForm.year" @change="yearChange"
:options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange"
:options="auditList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unionId" @change="yearChange"
:options="mCommon.unionList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange"
:options="mCommon.unitList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" @change="yearChange" :options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange" :options="auditList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unionId" @change="yearChange" :options="mCommon.unionList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange" :options="mCommon.unitList"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 70px auto 0">
<van-list v-model="loading" :finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="pageData">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="pageData">
<div v-for="o in tableData" class="list-card" @click="openView(o)">
<van-cell-group inset>
<van-cell :border="false" title="受助人">
<span class="van-ellipsis" style="font-size: 16px;"
:style="{color:themeColor}">
{{o.sbzrname}}({{o.sbzrloginname}})
</span>
<span class="van-ellipsis" style="font-size: 16px" :style="{color:themeColor}">{{o.sbzrname}}({{o.sbzrloginname}})</span>
</van-cell>
<van-cell :border="false" title="申&ensp;请&ensp;人">{{o.sqrname}}</van-cell>
<van-cell :border="false" title="所在工会">{{o.sqrunionname}}</van-cell>
@@ -46,18 +34,13 @@ layout("/mobile/platform.html"){
</div>
</van-list>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image"
image="/none.svg"
description="暂无数据">
</van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -65,19 +48,19 @@ layout("/mobile/platform.html"){
unionList: [],
yearList: [],
auditList: [
{text: '未审核', value: false},
{text: '已审核', value: true},
{ text: "未审核", value: false },
{ text: "已审核", value: true }
],
handle: true,
pageForm: {
year: new Date().getFullYear(),
isAudit: false,
},
isAudit: false
}
}
},
methods: {
openView(o) {
window.location.href = '/mobile/difficulty/audit/auditHtml?zt=' + o.zt + '&id=' + o.id
window.location.href = "/mobile/difficulty/audit/auditHtml?zt=" + o.zt + "&id=" + o.id
},
yearChange() {
this.pageForm.pageNumber = 1
@@ -89,7 +72,7 @@ layout("/mobile/platform.html"){
pageData() {
this.mLoading = true
setTimeout(async () => {
$.get(loc() + '/pageData', this.pageForm, (res) => {
$.get(loc() + "/pageData", this.pageForm, (res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -103,7 +86,7 @@ layout("/mobile/platform.html"){
}, 600)
},
async flushUnits() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true') {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === "true") {
await mCommon.getUnitList(this.pageForm.unionId)
} else {
await mCommon.getUnitList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
@@ -112,7 +95,7 @@ layout("/mobile/platform.html"){
async init() {
let nowYear = new Date().getFullYear()
for (let i = nowYear; i >= nowYear - 9; i--) {
this.yearList.push({text: i, value: i})
this.yearList.push({ text: i, value: i })
}
await mCondolence.getType()
await mCommon.getUnionList()
@@ -129,7 +112,7 @@ layout("/mobile/platform.html"){
this.flushUnits()
}
})
window.addEventListener('pageshow', e => {
window.addEventListener("pageshow", (e) => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.init()
vue.yearChange()
@@ -137,7 +120,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
#-->
@@ -3,35 +3,20 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="慰问审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<difficulty-info ref="info" :id.sync="id" title="校工会主席审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
校工会主席审核
</div>
<div class="van-sidebar-item van-sidebar-item--select">校工会主席审核</div>
</div>
<van-form>
<van-field readonly
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" name="username" label="审核人员"></van-field>
<van-field v-model="formData.auditTime" label="审核时间" readonly></van-field>
<van-field v-model="formData.xghbzje" label="初审金额"></van-field>
<van-field v-model="formData.opinion"
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
></van-field>
<van-field v-model="formData.opinion" rows="1" autosize label="审核意见" type="textarea" placeholder="请输入审核意见"></van-field>
<van-field label="签字" required style="flex-flow: column">
<template #label>
@@ -42,52 +27,42 @@ layout("/mobile/platform.html"){
</template>
</van-field>
<van-row gutter="20" style="margin-top: 30px;padding: 0 25px">
<van-row gutter="20" style="margin-top: 30px; padding: 0 25px">
<van-col span="8">
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝
</van-button>
<van-button :color="themeColor" plain block @click="doAudit(1)">拒 绝</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(3)">返回修改
</van-button>
<van-button :color="themeColor" block @click="doAudit(3)">返回修改</van-button>
</van-col>
<van-col span="8">
<van-button :color="themeColor" block @click="doAudit(2)">通 过
</van-button>
<van-button :color="themeColor" block @click="doAudit(2)">通 过</van-button>
</van-col>
</van-row>
</van-form>
</template>
</difficulty-info>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
handle: true,
id: "",
formData: {},
formData: {}
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'difficulty-info': httpVueLoader('/components/mobile/difficulty/info.vue?v=' + new Date().getTime()),
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue"),
"difficulty-info": httpVueLoader("/components/mobile/difficulty/info.vue?v=" + new Date().getTime())
},
methods: {
async doAudit(pass) {
if (!this.formData.opinion) {
this.$toast.fail('请填写审核意见');
this.$toast.fail("请填写审核意见")
return
}
this.$refs.signature.submitSign()
@@ -96,14 +71,14 @@ layout("/mobile/platform.html"){
this.formData.pass = pass
const resp = await $.post("/platform/fw/difficulty/schoolmanager/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success('审核成功');
this.$toast.success("审核成功")
setTimeout(() => {
history.back()
}, 1000)
} else {
this.$toast.fail('审核失败');
this.$toast.fail("审核失败")
}
},
}
},
async created() {
this.id = GetQueryString("id")
@@ -111,19 +86,16 @@ layout("/mobile/platform.html"){
this.formData = {
id: this.id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
auditTime: moment().format("YYYY-MM-DD"),
auditOpinion: null,
auditSign: "",
xghbzje: this.$refs.info.viewData.xghbzje
}
}, 300)
}
})
</script>
<!--#
}
#-->
@@ -3,7 +3,7 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="困难帮扶审核" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="困难帮扶审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<difficulty-info ref="info" :id.sync="id" title="基层工会审核" :handle="handle">
<template #handle>
@@ -46,16 +46,15 @@ layout("/mobile/platform.html"){
max-height: 200px;
}
.van-image__error, .van-image__loading {
.van-image__error,
.van-image__loading {
height: 200px;
position: relative;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="活动列表" left-arrow
@click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="活动列表" left-arrow @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
</van-sticky>
<van-sticky>
@@ -68,41 +67,45 @@ layout("/mobile/platform.html"){
</van-sticky>
<div style="margin-bottom: 20px">
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData">
<van-list
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData"
>
<div v-for="o in tableData" class="van-doc-card">
<div @click="welfareClick(o)">
<div>
<van-image :src="FILE_DOMAIN + '/fileStreamPreview?id=' + o.cover.id"
style="display: contents"
v-if="o.cover && o.cover.filepath"></van-image>
<van-image src=""
style="display: contents"
v-else></van-image>
<van-image
:src="FILE_DOMAIN + '/fileStreamPreview?id=' + o.cover.id"
style="display: contents"
v-if="o.cover && o.cover.filepath"
></van-image>
<van-image src="" style="display: contents" v-else></van-image>
</div>
<div>
<div class="van-ellipsis"
style="margin-top: 6px; font-size: 15px;font-weight: bold;flex: 1">
{{o.activityName}}
</div>
<div class="van-ellipsis" style="margin-top: 6px; font-size: 15px; font-weight: bold; flex: 1">{{o.activityName}}</div>
</div>
<div>
<div class="train-title"><span
style="color: grey">年&emsp;&emsp;度:</span>{{o.year}}
<div class="train-title">
<span style="color: grey">年&emsp;&emsp;度:</span>
{{o.year}}
</div>
<div class="train-title"><span style="color: grey">活动对象:</span>{{o.activityGroupName}}
<div class="train-title">
<span style="color: grey">活动对象:</span>
{{o.activityGroupName}}
</div>
<van-divider></van-divider>
</div>
<div class="train-title"><span style="color: grey">报名时间:</span>
{{moment(o.activitySignUpStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(o.activitySignUpEndTime).format('YYYY-MM-DD HH:mm')}}
<div class="train-title">
<span style="color: grey">报名时间:</span>
{{moment(o.activitySignUpStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' + moment(o.activitySignUpEndTime).format('YYYY-MM-DD
HH:mm')}}
</div>
<div style="margin-top: 6px"><span style="color: grey">活动时间:</span>
{{moment(o.activityStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(o.activityEndTime).format('YYYY-MM-DD HH:mm')}}
<div style="margin-top: 6px">
<span style="color: grey">活动时间:</span>
{{moment(o.activityStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' + moment(o.activityEndTime).format('YYYY-MM-DD HH:mm')}}
</div>
</div>
</div>
@@ -116,32 +119,38 @@ layout("/mobile/platform.html"){
<van-tabbar-item icon="manager-o" replace url="/platform/mobile/fellowshipActivity/fellowshipList?type=my">我的联谊</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
type: '',
type: ""
}
},
methods: {
async welfareClick(o) {
if (this.type === 'my') {
window.location.href = '/platform/mobile/fellowshipActivity/fellowshipInfo' +
'?activityId=' + o.id + '&endTime=' + o.activitySignUpEndTime + '&type=my' + '&startTime=' + o.activitySignUpStartTime
if (this.type === "my") {
window.location.href =
"/platform/mobile/fellowshipActivity/fellowshipInfo" +
"?activityId=" +
o.id +
"&endTime=" +
o.activitySignUpEndTime +
"&type=my" +
"&startTime=" +
o.activitySignUpStartTime
} else {
window.location.href = '/platform/mobile/fellowshipActivity/activityInfo?activityId=' + o.id + '&endTime=' + o.activitySignUpEndTime
window.location.href =
"/platform/mobile/fellowshipActivity/activityInfo?activityId=" + o.id + "&endTime=" + o.activitySignUpEndTime
}
},
async pageData() {
this.mLoading = true
const resp = await $.post('/platform/mobile/fellowshipActivity/pageData', this.pageForm)
const resp = await $.post("/platform/mobile/fellowshipActivity/pageData", this.pageForm)
if (resp.code === 0) {
if (resp.data.list.length === 0) {
this.tableData = []
@@ -156,7 +165,7 @@ layout("/mobile/platform.html"){
this.pageForm.pageNumber++
}
}
this.loading = false;
this.loading = false
this.mLoading = false
},
tabChange(val) {
@@ -169,23 +178,23 @@ layout("/mobile/platform.html"){
}
},
created() {
const urlParams = new URLSearchParams(window.location.search);
const param = urlParams.get('type');
this.tarBarActive = param === 'my' ? 1 : 0;
this.type = GetQueryString('type')
const urlParams = new URLSearchParams(window.location.search)
const param = urlParams.get("type")
this.tarBarActive = param === "my" ? 1 : 0
this.type = GetQueryString("type")
this.pageForm.type = this.type
this.startLoading()
this.pageForm.activityStatus = this.type === 'my' ? '3' : '1'
this.pageForm.activityStatus = this.type === "my" ? "3" : "1"
this.pageData()
this.closeLoading()
}
})
window.addEventListener('pageshow', e => {
window.addEventListener("pageshow", (e) => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.type = GetQueryString('type')
vue.type = GetQueryString("type")
vue.pageForm.type = this.type
vue.startLoading()
vue.pageForm.activityStatus = this.type === 'my' ? '3' : '1'
vue.pageForm.activityStatus = this.type === "my" ? "3" : "1"
vue.pageData()
vue.closeLoading()
}
@@ -25,13 +25,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="活动列表"
left-arrow
placeholder
fixed
@click-left="location.href='/mobile/index'"
></van-nav-bar>
<van-nav-bar title="活动列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
@@ -40,11 +34,7 @@ layout("/mobile/platform.html"){
</div>
<div style="margin: 60px auto 0 auto">
<van-list
v-model="mLoading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="mLoading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<div v-for="o in tableData" class="list-card" @click="openView(o)">
<van-cell-group inset>
<van-cell title="主&emsp;&emsp;题" :border="false">{{o.hdname}}</van-cell>
@@ -56,26 +46,20 @@ layout("/mobile/platform.html"){
</van-cell-group>
</div>
</van-list>
<van-empty
v-if="mLoading==false&&tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</div>
<script>
let vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
yearOption: [],
pageForm: {
year: '',
hdtype: 1,
year: "",
hdtype: 1
}
}
},
@@ -87,7 +71,7 @@ layout("/mobile/platform.html"){
},
async onLoad() {
this.mLoading = true
$.post('/platform/hd/checkinManage/data', this.pageForm).then(res => {
$.post("/platform/hd/checkinManage/data", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -100,27 +84,26 @@ layout("/mobile/platform.html"){
})
},
openView(o) {
const {hdid, hdjssj, hdkssj} = o
const { hdid, hdjssj, hdkssj } = o
if (moment().format("YYYY-MM-DD HH:mm:ss") < hdkssj) {
vant.Toast('活动暂未开始!')
vant.Toast("活动暂未开始!")
return
} else if (moment().format("YYYY-MM-DD HH:mm:ss") > hdjssj) {
vant.Toast('活动已结束!')
vant.Toast("活动已结束!")
return
}
window.location.href = '/mobile/checkin/info?client=mobile&id=' + hdid
window.location.href = "/mobile/checkin/info?client=mobile&id=" + hdid
}
},
async created() {
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({value: i, text: i + '年'},)
this.yearOption.unshift({ value: i, text: i + "年" })
}
this.$set(this.pageForm, "year", this.yearOption[0].value)
}
})
</script>
<!--#
}
#-->
#-->
@@ -77,12 +77,10 @@ layout("/mobile/platform.html"){
padding-left: 7px;
/*margin-top: 30px;*/
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="保险列表" left-arrow
@click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="保险列表" left-arrow @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
</van-sticky>
<van-sticky>
@@ -94,46 +92,67 @@ layout("/mobile/platform.html"){
</van-sticky>
<div>
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData">
<van-list
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData"
>
<div v-for="o in tableData" class="van-doc-card">
<div>
<div>
<div class="van-ellipsis"
style="margin-top: 6px; font-size: 15px;font-weight: bold;flex: 1">
{{o.name}}
</div>
<div class="van-ellipsis" style="margin-top: 6px; font-size: 15px; font-weight: bold; flex: 1">{{o.name}}</div>
</div>
<div>
<div class="train-title"><span
style="color: grey">年&emsp;&emsp;度:</span>{{moment(o.startTime).format('YYYY')}}
<div class="train-title">
<span style="color: grey">年&emsp;&emsp;度:</span>
{{moment(o.startTime).format('YYYY')}}
</div>
<div class="train-title"><span style="color: grey">登记范围:</span>{{o.activityGroupName}}
<div class="train-title">
<span style="color: grey">登记范围:</span>
{{o.activityGroupName}}
</div>
<van-divider></van-divider>
</div>
<div class="train-title"><span style="color: grey">登记时间:</span>
{{moment(o.stratTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(o.endTime).format('YYYY-MM-DD HH:mm')}}
<div class="train-title">
<span style="color: grey">登记时间:</span>
{{moment(o.stratTime).format('YYYY-MM-DD HH:mm') + ' ~ ' + moment(o.endTime).format('YYYY-MM-DD HH:mm')}}
</div>
<div style="display: flex; justify-content: flex-end; margin-top: 4px">
<div>
<van-button @click.stop="openView(o)" class="cus_button"
type="primary" size="small" color="#1867b0"
style="margin-right: 8px; width: auto;">详细信息
<van-button
@click.stop="openView(o)"
class="cus_button"
type="primary"
size="small"
color="#1867b0"
style="margin-right: 8px; width: auto"
>
详细信息
</van-button>
<van-button v-if="o.count === 0" @click.stop="needChoose(o)"
class="cus_button"
type="primary" size="small" color="#1867b0"
style="margin-right: 8px; width: auto;">我要选择
<van-button
v-if="o.count === 0"
@click.stop="needChoose(o)"
class="cus_button"
type="primary"
size="small"
color="#1867b0"
style="margin-right: 8px; width: auto"
>
我要选择
</van-button>
<van-button v-if="o.count > 0" @click.stop="cancelChoose(o)"
class="cus_button"
type="primary" size="small" color="#1867b0"
style="margin-right: 8px; width: auto;">取消选择
<van-button
v-if="o.count > 0"
@click.stop="cancelChoose(o)"
class="cus_button"
type="primary"
size="small"
color="#1867b0"
style="margin-right: 8px; width: auto"
>
取消选择
</van-button>
</div>
</div>
@@ -143,15 +162,8 @@ layout("/mobile/platform.html"){
<van-empty v-else description="暂无数据"></van-empty>
</div>
<van-popup v-model="infoShow" position="right"
:style="{ height: '100%', width: '100%', 'background-color': '#f6f7f9' }">
<van-nav-bar
title="详细信息"
left-arrow
placeholder
fixed
@click-left="infoShow = false">
</van-nav-bar>
<van-popup v-model="infoShow" position="right" :style="{ height: '100%', width: '100%', 'background-color': '#f6f7f9' }">
<van-nav-bar title="详细信息" left-arrow placeholder fixed @click-left="infoShow = false"></van-nav-bar>
<van-tabs v-model="active">
<van-tab v-if="viewData.moreInfo" title="通知内容">
<div class="pre_text" v-html="viewData.moreInfo"></div>
@@ -166,25 +178,24 @@ layout("/mobile/platform.html"){
<van-cell title="创建时间" :value="viewData.createTime"></van-cell>
<van-cell title="介绍链接">
<template #right-icon>
<span style="cursor: pointer; color: #236eb4"
@click="window.open(viewData.href.indexOf('http') !== -1 ? viewData.href : 'https://' + viewData.href)">{{viewData.href}}</span>
<span
style="cursor: pointer; color: #236eb4"
@click="window.open(viewData.href.indexOf('http') !== -1 ? viewData.href : 'https://' + viewData.href)"
>
{{viewData.href}}
</span>
</template>
</van-cell>
<van-cell title="支付二维码" is-link value="点击查看"
@click="showPic"></van-cell>
<van-cell title="支付二维码" is-link value="点击查看" @click="showPic"></van-cell>
</van-cell-group>
</van-tab>
</van-tabs>
</van-popup>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -193,13 +204,13 @@ layout("/mobile/platform.html"){
activityStatus: 1
},
infoShow: false,
viewData: {},
viewData: {}
}
},
methods: {
showPic() {
if (this.viewData.payCode && this.viewData.payCode.length > 0) {
const url = FILE_DOMAIN + '/fileStreamPreview?id=' + this.viewData.payCode[0].id
const url = FILE_DOMAIN + "/fileStreamPreview?id=" + this.viewData.payCode[0].id
vant.ImagePreview([url])
}
},
@@ -213,44 +224,46 @@ layout("/mobile/platform.html"){
},
cancelChoose(row) {
vant.Dialog.confirm({
title: '温馨提示',
message: '您确定要取消【' + row.name + '】吗?',
}).then(async () => {
const resp = await $.post('/mobile/insurance/manage/cancelChoose', {
id: row.id
})
vant.Toast(resp.msg)
if (resp.code === 0) {
this.doSearch()
}
}).catch(() => {
title: "温馨提示",
message: "您确定要取消【" + row.name + "】吗?"
})
.then(async () => {
const resp = await $.post("/mobile/insurance/manage/cancelChoose", {
id: row.id
})
vant.Toast(resp.msg)
if (resp.code === 0) {
this.doSearch()
}
})
.catch(() => {})
},
async needChoose(row) {
if (row.groupId != null) {
const isExist = await getScopeUser(row.groupId)
if (!isExist) {
vant.Dialog.alert({
title: '参加人员范围',
title: "参加人员范围",
message: row.activityGroupName,
confirmButtonColor: '#1867b0'
confirmButtonColor: "#1867b0"
})
return
}
}
vant.Dialog.confirm({
title: '温馨提示',
message: '您确定要选择【' + row.name + '】吗?',
}).then(async () => {
const resp = await $.post('/mobile/insurance/manage/needChoose', {
id: row.id
})
vant.Toast(resp.msg)
if (resp.code === 0) {
this.doSearch()
}
}).catch(() => {
title: "温馨提示",
message: "您确定要选择【" + row.name + "】吗?"
})
.then(async () => {
const resp = await $.post("/mobile/insurance/manage/needChoose", {
id: row.id
})
vant.Toast(resp.msg)
if (resp.code === 0) {
this.doSearch()
}
})
.catch(() => {})
},
tabChange() {
this.doSearch()
@@ -262,7 +275,7 @@ layout("/mobile/platform.html"){
},
async pageData() {
this.mLoading = true
const resp = await $.post('/mobile/insurance/manage/pageData', this.pageForm)
const resp = await $.post("/mobile/insurance/manage/pageData", this.pageForm)
if (resp.code === 0) {
if (resp.data.list.length === 0) {
this.tableData = []
@@ -277,21 +290,21 @@ layout("/mobile/platform.html"){
this.pageForm.pageNumber++
}
}
this.loading = false;
this.loading = false
this.mLoading = false
},
}
},
created() {
this.pageData()
}
})
window.onload = () => {
window.addEventListener('pageshow', e => {
window.addEventListener("pageshow", (e) => {
if (e.persisted) {
window.location.reload();
window.location.reload()
}
});
};
})
}
</script>
<!--#
}
@@ -3,7 +3,6 @@ layout("/mobile/platform.html"){
#-->
<style>
.info {
position: relative;
width: 88%;
@@ -36,7 +35,8 @@ layout("/mobile/platform.html"){
background-color: white;
}
.van-tab__pane, .van-tab__pane-wrapper {
.van-tab__pane,
.van-tab__pane-wrapper {
padding: 20px;
}
@@ -101,45 +101,28 @@ layout("/mobile/platform.html"){
img {
border-radius: 10px;
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="法律咨询预约"
left-arrow
placeholder
fixed
@click-left="window.history.back()">
</van-nav-bar>
<van-nav-bar title="法律咨询预约" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="info">
<div style="display: flex; align-items: center;">
<div style="display: flex; align-items: center">
<!--头像-->
<div class="avatar">
<van-image width="80"
:src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id='+doctorData.avatar"></van-image>
<van-image width="80" :src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id='+doctorData.avatar"></van-image>
</div>
<!--其他信息-->
<div class="other_info">
<div>
{{doctorData.username}}
</div>
<div>
{{doctorData.jobTitle}}
</div>
<div>{{doctorData.username}}</div>
<div>{{doctorData.jobTitle}}</div>
</div>
</div>
</div>
<van-tabs v-model="active" :style="'height: ' + (window.screen.height - 46 - 40 - 84 - 24 - 44) + 'px'">
<van-tab title="预约时段">
<van-list
v-model="mLoading"
:finished="finished"
:finished-text="timeData.length > 0 ? '没有更多了' : ''"
@load="getDataByDoctorId">
<van-list v-model="mLoading" :finished="finished" :finished-text="timeData.length > 0 ? '没有更多了' : ''" @load="getDataByDoctorId">
<div v-if="timeData.length > 0" class="time_info" v-for="item in timeData">
<div style="color: #1867b0">{{getFormatTime(item)}}</div>
<div>
@@ -148,11 +131,11 @@ layout("/mobile/platform.html"){
</div>
</van-list>
<van-empty
v-if="mLoading === false && timeData.length === 0"
class="custom-image"
image="/none.svg"
description="抱歉,此咨询师暂时没有进行排班哦">
</van-empty>
v-if="mLoading === false && timeData.length === 0"
class="custom-image"
image="/none.svg"
description="抱歉,此咨询师暂时没有进行排班哦"
></van-empty>
</van-tab>
<van-tab title="咨询师简介">
<div class="label">咨询师擅长</div>
@@ -163,68 +146,58 @@ layout("/mobile/platform.html"){
</van-tabs>
<van-popup v-model="show" class="apply_pop" position="right">
<van-nav-bar
title="预约信息"
left-arrow
placeholder
fixed
@click-left="show = false">
</van-nav-bar>
<van-nav-bar title="预约信息" left-arrow placeholder fixed @click-left="show = false"></van-nav-bar>
<van-form ref="addForm" :show-error-message="false" input-align="right">
<van-cell-group inset class="mt10">
<van-field readonly
:value="chooseData.startTime"
label="开始时间"></van-field>
<van-field readonly
:value="chooseData.endTime"
label="结束时间"></van-field>
<van-field readonly :value="chooseData.startTime" label="开始时间"></van-field>
<van-field readonly :value="chooseData.endTime" label="结束时间"></van-field>
</van-cell-group>
<van-cell-group inset class="mt10" v-if="chooseData.doctorUser">
<van-field readonly
:value="chooseData.username"
label="咨询师姓名"></van-field>
<van-field readonly
:value="chooseData.mobile"
label="咨询师电话"></van-field>
<van-field readonly :value="chooseData.username" label="咨询师姓名"></van-field>
<van-field readonly :value="chooseData.mobile" label="咨询师电话"></van-field>
</van-cell-group>
<van-cell-group inset class="mt10">
<van-field readonly
value="${@shiro.getPrincipalProperty('username')}"
label="预约人姓名"></van-field>
<van-field readonly
value="${@shiro.getPrincipalProperty('loginname')}"
label="预约人工号"></van-field>
<van-field readonly
value="${@shiro.getPrincipalProperty('unit').getName()}"
label="预约人单位"></van-field>
<van-field :rules="[{ required: true, message: '请填写手机号' }]"
required placeholder="请填写手机号"
type="tel"
v-model=chooseData.userMobile
label="预约人电话"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" label="预约人姓名"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('loginname')}" label="预约人工号"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('unit').getName()}" label="预约人单位"></van-field>
<van-field
:rules="[{ required: true, message: '请填写手机号' }]"
required
placeholder="请填写手机号"
type="tel"
v-model="chooseData.userMobile"
label="预约人电话"
></van-field>
</van-cell-group>
<van-cell-group inset class="mt10">
<div v-if="chooseData.askType">
<van-field v-model="appointmentAskTypeText" label="咨询方式" @click="appointmentAskTypeShow = true"
required :rules="[{ required: true, message: '请选择咨询方式' }]"
placeholder="请选择咨询方式"></van-field>
<van-field
v-model="appointmentAskTypeText"
label="咨询方式"
@click="appointmentAskTypeShow = true"
required
:rules="[{ required: true, message: '请选择咨询方式' }]"
placeholder="请选择咨询方式"
></van-field>
<van-popup v-model:show="appointmentAskTypeShow" position="bottom" round>
<van-picker show-toolbar :columns="askTypeArray" @confirm="askTypeConfirm"
@cancel="appointmentAskTypeShow = false">
</van-picker>
<van-picker
show-toolbar
:columns="askTypeArray"
@confirm="askTypeConfirm"
@cancel="appointmentAskTypeShow = false"
></van-picker>
</van-popup>
</div>
<van-field
v-model="appointmentUserNote"
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
v-model="appointmentUserNote"
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
></van-field>
</van-cell-group>
</van-form>
@@ -235,21 +208,20 @@ layout("/mobile/platform.html"){
</div>
<script>
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
var query = window.location.search.substring(1)
var vars = query.split("&")
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
var pair = vars[i].split("=")
if (pair[0] == variable) {
return pair[1];
return pair[1]
}
}
return '';
return ""
}
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -257,7 +229,7 @@ layout("/mobile/platform.html"){
askTypeList: [],
askTypeArray: [],
show: false,
doctorId: '',
doctorId: "",
doctorData: {},
active: 0,
timeData: [],
@@ -265,10 +237,10 @@ layout("/mobile/platform.html"){
chooseData: {
userMobile: null
},
appointmentUserNote: '',
appointmentAskTypeText: '',
appointmentAskTypeValue: '',
typeId: '',
appointmentUserNote: "",
appointmentAskTypeText: "",
appointmentAskTypeValue: "",
typeId: ""
}
},
methods: {
@@ -279,36 +251,36 @@ layout("/mobile/platform.html"){
},
async doSubmit() {
if (!this.chooseData.userMobile.trim()) {
this.$toast.fail("请填写手机号");
this.$toast.fail("请填写手机号")
return
}
if (!this.appointmentAskTypeValue) {
this.$toast.fail("请选择咨询方式");
this.$toast.fail("请选择咨询方式")
return
}
const valid = await vant.Dialog.confirm({
title: '提示',
message: '您确认提交吗?',
confirmButtonColor: '#1867b0'
title: "提示",
message: "您确认提交吗?",
confirmButtonColor: "#1867b0"
})
if (valid) {
this.$toast.loading('提交中...')
this.$toast.loading("提交中...")
const params = {
appointmentUserNote: this.appointmentUserNote,
appointmentAskTypeValue: this.appointmentAskTypeValue,
userMobile: this.chooseData.userMobile,
id: this.chooseData.id,
isAdd: true,
isAdd: true
}
const resp = await $.post('/mobile/legalAidPro/doApply', params)
const resp = await $.post("/mobile/legalAidPro/doApply", params)
if (resp.code === 0) {
vant.Dialog.alert({
title: '提示',
message: '您已预约成功!',
confirmButtonColor: '#1867b0'
title: "提示",
message: "您已预约成功!",
confirmButtonColor: "#1867b0"
}).then(() => {
location.replace('/mobile/legalAidPro/myApplyList')
});
location.replace("/mobile/legalAidPro/myApplyList")
})
} else if (resp.code === 1) {
this.$toast.error(resp.msg)
} else if (resp.code === 2) {
@@ -317,15 +289,15 @@ layout("/mobile/platform.html"){
}
},
apply(o) {
if (o.title !== '可预约') {
if (o.title !== "可预约") {
return
}
this.askTypeArray = []
if (o.askType) {
const array = JSON.parse(o.askType)
this.askTypeList.map(o => {
this.askTypeList.map((o) => {
if (array.includes(o.code)) {
this.askTypeArray.push({text: o.name, value: o.code})
this.askTypeArray.push({ text: o.name, value: o.code })
}
})
}
@@ -338,17 +310,17 @@ layout("/mobile/platform.html"){
this.show = true
},
getFormatTime(o) {
const simpleStartDate = moment(o.startTime).format('YYYY-MM-DD')
const simpleStartHour = moment(o.startTime).format('HH:mm')
const simpleEndHour = moment(o.endTime).format('HH:mm')
const simpleStartDate = moment(o.startTime).format("YYYY-MM-DD")
const simpleStartHour = moment(o.startTime).format("HH:mm")
const simpleEndHour = moment(o.endTime).format("HH:mm")
const dayNameOfWeek = this.dayNames[new Date(simpleStartDate).getDay()]
return simpleStartDate + ' ' + dayNameOfWeek + ' ' + simpleStartHour + '至' + simpleEndHour
return simpleStartDate + " " + dayNameOfWeek + " " + simpleStartHour + "至" + simpleEndHour
},
async pageData() {
this.pageForm.doctorId = this.doctorId
const resp = await $.post('/mobile/legalAidPro/pageData', this.pageForm)
const resp = await $.post("/mobile/legalAidPro/pageData", this.pageForm)
if (resp.code === 0) {
if (this.doctorId !== '') {
if (this.doctorId !== "") {
this.doctorData = resp.data[0]
} else {
this.tableData = resp.data
@@ -359,40 +331,40 @@ layout("/mobile/platform.html"){
this.mLoading = true
this.pageForm.id = this.doctorId
this.pageForm.typeId = this.typeId
const resp = await $.post('/mobile/legalAidPro/getDataByDoctorId', this.pageForm)
const resp = await $.post("/mobile/legalAidPro/getDataByDoctorId", this.pageForm)
if (resp.code === 0) {
const userId = "${@shiro.getPrincipalProperty('id')}"
const record = resp.data.list.find(v => v.appointmentUser === userId)
const record = resp.data.list.find((v) => v.appointmentUser === userId)
if (record) {
resp.data.list.forEach(v => {
resp.data.list.forEach((v) => {
if (new Date().getTime() > v.startTimeTs) {
v.className = 'gray'
v.title = '不可预约'
v.className = "gray"
v.title = "不可预约"
} else {
if (v.appointmentUser === userId) {
v.className = 'gray'
v.title = '我已预约'
v.className = "gray"
v.title = "我已预约"
} else {
v.className = 'gray'
v.title = '不可预约'
v.className = "gray"
v.title = "不可预约"
}
}
})
} else {
resp.data.list.forEach(v => {
resp.data.list.forEach((v) => {
if (new Date().getTime() > v.startTimeTs) {
v.className = 'gray'
v.title = '不可预约'
v.className = "gray"
v.title = "不可预约"
} else {
if (!v.appointmentUser) {
v.className = '#1867b0'
v.title = '可预约'
v.className = "#1867b0"
v.title = "可预约"
} else if (v.appointmentUser === userId) {
v.className = 'gray'
v.title = '我已预约'
v.className = "gray"
v.title = "我已预约"
} else {
v.className = 'gray'
v.title = '不可预约'
v.className = "gray"
v.title = "不可预约"
}
}
})
@@ -405,17 +377,17 @@ layout("/mobile/platform.html"){
}
}
this.mLoading = false
},
}
},
async created() {
this.doctorId = getQueryVariable('doctorId')
this.typeId = getQueryVariable('typeId')
this.doctorId = getQueryVariable("doctorId")
this.typeId = getQueryVariable("typeId")
this.askTypeList = await getDictOptions("psychology_asktype")
await this.pageData()
},
}
})
</script>
<!--#
}
#-->
#-->
@@ -11,23 +11,13 @@ layout("/mobile/platform.html"){
text-align: right;
color: #969799;
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="预约详细信息"
left-arrow
placeholder
fixed
@click-left="goBack()"
safe-area-inset-top
></van-nav-bar>
<van-nav-bar title="预约详细信息" left-arrow placeholder fixed @click-left="goBack()" safe-area-inset-top></van-nav-bar>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
预约时间段
</div>
<div class="van-sidebar-item van-sidebar-item--select">预约时间段</div>
</div>
<van-cell-group>
<van-cell title="开始时间">{{ viewData.startTime }}</van-cell>
@@ -35,9 +25,7 @@ layout("/mobile/platform.html"){
</van-cell-group>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
预约人信息
</div>
<div class="van-sidebar-item van-sidebar-item--select">预约人信息</div>
</div>
<van-cell-group>
<van-cell title="姓名">{{ viewData.appointmentUserName }}</van-cell>
@@ -45,22 +33,20 @@ layout("/mobile/platform.html"){
<van-cell title="单位">{{ viewData.appointmentUnitName }}</van-cell>
<van-cell title="电话">{{ viewData.appointmentMobile }}</van-cell>
<van-field
class="note-field"
v-model="viewData.appointmentUserNote"
readonly
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
class="note-field"
v-model="viewData.appointmentUserNote"
readonly
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
></van-field>
<!-- <van-cell title="备注">{{ viewData.appointmentUserNote }}</van-cell>-->
</van-cell-group>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
咨询师信息
</div>
<div class="van-sidebar-item van-sidebar-item--select">咨询师信息</div>
</div>
<van-cell-group>
<van-cell title="姓名">{{ viewData.doctorUserName || '暂无'}}</van-cell>
@@ -69,17 +55,13 @@ layout("/mobile/platform.html"){
<van-cell title="电话">{{ viewData.doctorMobile || '暂无'}}</van-cell>
<van-cell title="个人简介">{{ viewData.doctorIntroduce || '暂无'}}</van-cell>
</van-cell-group>
</div>
<script>
</script>
<script></script>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -88,7 +70,7 @@ layout("/mobile/platform.html"){
},
methods: {
goBack() {
window.history.back()
pjaxReplace("/mobile/index")
const id = this.GetQueryString("id")
window.localStorage.removeItem("psychology-info-" + id)
}
@@ -103,4 +85,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -3,7 +3,6 @@ layout("/mobile/platform.html"){
#-->
<style>
.info {
position: relative;
width: 88%;
@@ -40,27 +39,18 @@ layout("/mobile/platform.html"){
.van-dropdown-menu__item {
flex: auto;
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="法律咨询师列表"
left-arrow
placeholder
fixed
@click-left="window.history.back()">
</van-nav-bar>
<van-nav-bar title="法律咨询师列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-dropdown-menu>
<van-dropdown-item v-model="pageForm.typeId" :options="typeList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.typeId" :options="typeList" @change="doSearch"></van-dropdown-item>
</van-dropdown-menu>
<!--咨询师列表-->
<div class="info" @click="toApply(item)" v-for="item in tableData">
<div style="display: flex;">
<div style="display: flex">
<!--头像-->
<div class="avatar">
<van-image width="80" :src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.avatar"></van-image>
@@ -69,40 +59,41 @@ layout("/mobile/platform.html"){
<div class="other_info">
<div>
<span style="font-size: 20px">{{item.username}}&ensp;</span>
<span style="color: grey">{{item.sex}}&ensp;</span>&emsp;
<span style="color: grey">{{item.sex}}&ensp;</span>
&emsp;
</div>
<div>
<div>
<span style="color: grey">职称:</span>{{item.jobTitle}}
<span style="color: grey">职称:</span>
{{item.jobTitle}}
</div>
<div>
<span style="color: grey">单位:</span>{{item.unitName}}
<span style="color: grey">单位:</span>
{{item.unitName}}
</div>
<div class="desc">
<span style="color: grey">特长:</span>{{item.specialty}}
<span style="color: grey">特长:</span>
{{item.specialty}}
</div>
</div>
</div>
</div>
</div>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg"
description="暂无数据">
</van-empty>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
typeList: [
{text: '时间不限', value: 'no'},
{text: '本周', value: 'thisWeek'},
{text: '下周', value: 'nextWeek'},
],
{ text: "时间不限", value: "no" },
{ text: "本周", value: "thisWeek" },
{ text: "下周", value: "nextWeek" }
]
}
},
methods: {
@@ -111,22 +102,22 @@ layout("/mobile/platform.html"){
this.pageData()
},
async pageData() {
const resp = await $.post('/mobile/legalAidPro/pageData', this.pageForm)
const resp = await $.post("/mobile/legalAidPro/pageData", this.pageForm)
if (resp.code === 0) {
this.tableData = resp.data
}
},
toApply(o) {
location.href = '/mobile/legalAidPro/apply?doctorId=' + o.userid + '&typeId=' + this.pageForm.typeId
location.href = "/mobile/legalAidPro/apply?doctorId=" + o.userid + "&typeId=" + this.pageForm.typeId
}
},
async created() {
this.$set(this.pageForm, "typeId", this.typeList[0].value)
await this.pageData()
},
}
})
</script>
<!--#
}
#-->
#-->
@@ -4,7 +4,7 @@ layout("/mobile/platform.html"){
<style>
.list-card {
background: #FFFFFF;
background: #ffffff;
width: 92%;
margin: 0px auto 20px;
box-shadow: 0 2px 10px rgb(125 126 128 / 16%);
@@ -79,7 +79,7 @@ layout("/mobile/platform.html"){
}
.van-card-body {
padding: 0px 10px 0px 10px
padding: 0px 10px 0px 10px;
}
.van-doc-card > div:first-child {
@@ -114,29 +114,23 @@ layout("/mobile/platform.html"){
</style>
<div id="app" v-cloak>
<van-nav-bar
title="我的预约记录"
left-arrow
placeholder
fixed
@click-left="window.history.back()"
></van-nav-bar>
<van-nav-bar title="我的预约记录" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu>
<van-dropdown-item v-model="pageForm.year" :options="yearList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.stateId" :options="stateList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" :options="yearList" @change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.stateId" :options="stateList" @change="doSearch"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 60px auto 0 auto">
<van-list v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
:immediate-check="false"
@load="pageData">
<van-list
v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
:immediate-check="false"
@load="pageData"
>
<div v-for="o in tableData" class="list-card" @click="viewInfo(o)">
<div class="card-head">
法律咨询预约
@@ -152,35 +146,32 @@ layout("/mobile/platform.html"){
<van-cell :border="false" title="结束时间">{{o.endTime}}</van-cell>
</van-cell-group>
<div class="cancel-button">
<van-button v-if="moment().unix() < moment(o.startTime).unix()" style="margin-right: 4px"
@click.stop="update(o)" round size="small" color="#1867b0">修改
<van-button
v-if="moment().unix() < moment(o.startTime).unix()"
style="margin-right: 4px"
@click.stop="update(o)"
round
size="small"
color="#1867b0"
>
修改
</van-button>
<van-button v-if="moment().unix() < moment(o.startTime).unix()"
@click.stop="doCancel(o.id)" round size="small" color="#1867b0">取消
<van-button v-if="moment().unix() < moment(o.startTime).unix()" @click.stop="doCancel(o.id)" round size="small" color="#1867b0">
取消
</van-button>
</div>
</div>
</van-list>
</div>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg"
description="暂无数据">
</van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
<van-popup v-model="show" class="apply_pop" position="right">
<van-nav-bar
title="预约详细信息"
left-arrow
placeholder
fixed
@click-left="show = false"
safe-area-inset-top></van-nav-bar>
<van-nav-bar title="预约详细信息" left-arrow placeholder fixed @click-left="show = false" safe-area-inset-top></van-nav-bar>
<div class="van-doc-card" style="margin: 16px">
<div></div>
<div class="van-card-header">
预约时间段
</div>
<div class="van-card-header">预约时间段</div>
<div class="van-card-body">
<van-cell-group>
<van-cell title="开始时间">{{ viewData.startTime }}</van-cell>
@@ -191,9 +182,7 @@ layout("/mobile/platform.html"){
<div class="van-doc-card" style="margin: 16px">
<div></div>
<div class="van-card-header">
预约人信息
</div>
<div class="van-card-header">预约人信息</div>
<div class="van-card-body">
<van-cell-group>
<van-cell title="姓名">{{ viewData.appointmentUserName }}</van-cell>
@@ -208,9 +197,7 @@ layout("/mobile/platform.html"){
<div class="van-doc-card" style="margin: 16px">
<div></div>
<div class="van-card-header">
咨询师信息
</div>
<div class="van-card-header">咨询师信息</div>
<div class="van-card-body">
<van-cell-group>
<van-cell title="姓名">{{ viewData.doctorUserName || '暂无'}}</van-cell>
@@ -220,20 +207,17 @@ layout("/mobile/platform.html"){
<van-cell title="咨询方式">
<div v-if="!viewData.askType || getDoctorAskTypeName().length === 0">暂无</div>
<div v-else>
<div v-for="item in getDoctorAskTypeName()">
{{ item.name }}
</div>
<div v-for="item in getDoctorAskTypeName()">{{ item.name }}</div>
</div>
</van-cell>
<van-cell @click="doctorIntroduceShow = true" title="个人简介" is-link>
<div style="overflow: hidden; white-space: nowrap; text-overflow: ellipsis; word-break: break-word;">
<div style="overflow: hidden; white-space: nowrap; text-overflow: ellipsis; word-break: break-word">
{{ viewData.doctorIntroduce || '暂无'}}
</div>
</van-cell>
</van-cell-group>
</div>
</div>
</van-popup>
<van-popup v-model:show="doctorIntroduceShow" position="bottom" round style="padding: 20px; width: auto">
@@ -247,67 +231,55 @@ layout("/mobile/platform.html"){
</van-popup>
<van-popup v-model="infoShow" class="apply_pop" position="right">
<van-nav-bar
title="预约信息"
left-arrow
placeholder
fixed
@click-left="infoShow = false">
</van-nav-bar>
<van-nav-bar title="预约信息" left-arrow placeholder fixed @click-left="infoShow = false"></van-nav-bar>
<van-form ref="addForm" :show-error-message="false" input-align="right">
<van-cell-group inset class="mt10">
<van-field readonly
:value="chooseData.startTime"
label="开始时间"></van-field>
<van-field readonly
:value="chooseData.endTime"
label="结束时间"></van-field>
<van-field readonly :value="chooseData.startTime" label="开始时间"></van-field>
<van-field readonly :value="chooseData.endTime" label="结束时间"></van-field>
</van-cell-group>
<van-cell-group inset class="mt10" v-if="chooseData.doctorUser">
<van-field readonly
:value="chooseData.doctorUserName"
label="咨询师姓名"></van-field>
<van-field readonly
:value="chooseData.doctorMobile"
label="咨询师电话"></van-field>
<van-field readonly :value="chooseData.doctorUserName" label="咨询师姓名"></van-field>
<van-field readonly :value="chooseData.doctorMobile" label="咨询师电话"></van-field>
</van-cell-group>
<van-cell-group inset class="mt10">
<van-field readonly
value="${@shiro.getPrincipalProperty('username')}"
label="预约人姓名"></van-field>
<van-field readonly
value="${@shiro.getPrincipalProperty('loginname')}"
label="预约人工号"></van-field>
<van-field readonly
value="${@shiro.getPrincipalProperty('unit').getName()}"
label="预约人单位"></van-field>
<van-field :rules="[{ required: true, message: '请填写电话' }]"
required
type="tel"
v-model=chooseData.userMobile
label="预约人电话"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" label="预约人姓名"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('loginname')}" label="预约人工号"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('unit').getName()}" label="预约人单位"></van-field>
<van-field
:rules="[{ required: true, message: '请填写电话' }]"
required
type="tel"
v-model="chooseData.userMobile"
label="预约人电话"
></van-field>
</van-cell-group>
<van-cell-group inset class="mt10">
<div v-if="chooseData.askType">
<van-field v-model="appointmentAskTypeText" label="咨询方式" @click="appointmentAskTypeShow = true"
placeholder="请选择咨询方式"></van-field>
<van-field
v-model="appointmentAskTypeText"
label="咨询方式"
@click="appointmentAskTypeShow = true"
placeholder="请选择咨询方式"
></van-field>
<van-popup v-model:show="appointmentAskTypeShow" position="bottom" round>
<van-picker show-toolbar :columns="askTypeArray" @confirm="askTypeConfirm"
@cancel="appointmentAskTypeShow = false">
</van-picker>
<van-picker
show-toolbar
:columns="askTypeArray"
@confirm="askTypeConfirm"
@cancel="appointmentAskTypeShow = false"
></van-picker>
</van-popup>
</div>
<van-field
v-model="appointmentUserNote"
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
v-model="appointmentUserNote"
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
></van-field>
</van-cell-group>
</van-form>
@@ -319,27 +291,27 @@ layout("/mobile/platform.html"){
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
appointmentAskTypeText: '',
appointmentUserNote: '',
appointmentAskTypeText: "",
appointmentUserNote: "",
appointmentAskTypeShow: false,
appointmentAskTypeValue: '',
appointmentAskTypeValue: "",
askTypeArray: [],
chooseData: {},
infoShow: false,
doctorIntroduceShow: false,
stateList: [
{text: '全部预约状态', value: null},
{text: '预约中', value: 2100},
{text: '预约成功', value: 2300},
{text: '预约失败', value: 2200}
{ text: "全部预约状态", value: null },
{ text: "预约中", value: 2100 },
{ text: "预约成功", value: 2300 },
{ text: "预约失败", value: 2200 }
],
askTypeList: [],
show: false,
viewData: {},
viewData: {}
}
},
methods: {
@@ -347,15 +319,15 @@ layout("/mobile/platform.html"){
this.askTypeArray = []
if (o.askType) {
const array = JSON.parse(o.askType)
this.askTypeList.map(o => {
this.askTypeList.map((o) => {
if (array.includes(o.code)) {
this.askTypeArray.push({text: o.name, value: o.code})
this.askTypeArray.push({ text: o.name, value: o.code })
}
})
}
if (o.appointmentAskTypeValue) {
const type = this.askTypeList.find(x => x.code === o.appointmentAskTypeValue)
this.appointmentAskTypeText = type ? type.name : ''
const type = this.askTypeList.find((x) => x.code === o.appointmentAskTypeValue)
this.appointmentAskTypeText = type ? type.name : ""
}
this.chooseData = o
this.appointmentUserNote = o.appointmentUserNote
@@ -369,28 +341,28 @@ layout("/mobile/platform.html"){
},
async doSubmit() {
if (!this.chooseData.userMobile) {
this.$toast.fail("请输入手机号");
this.$toast.fail("请输入手机号")
return
}
const valid = await vant.Dialog.confirm({
title: '提示',
message: '您确认提交吗?',
confirmButtonColor: '#1867b0'
title: "提示",
message: "您确认提交吗?",
confirmButtonColor: "#1867b0"
})
if (valid) {
this.$toast.loading('提交中...')
this.$toast.loading("提交中...")
const params = {
appointmentUserNote: this.appointmentUserNote,
appointmentAskTypeValue: this.appointmentAskTypeValue,
userMobile: this.chooseData.userMobile,
id: this.chooseData.id,
isAdd: false,
isAdd: false
}
const resp = await $.post('/mobile/legalAidPro/doApply', params)
const resp = await $.post("/mobile/legalAidPro/doApply", params)
if (resp.code === 0) {
this.$toast.success('修改成功')
this.$toast.success("修改成功")
setTimeout(() => {
location.replace('/mobile/legalAidPro/myApplyList')
location.replace("/mobile/legalAidPro/myApplyList")
}, 1000)
} else if (resp.code === 1) {
this.$toast.error(resp.msg)
@@ -401,17 +373,17 @@ layout("/mobile/platform.html"){
},
getAskTypeName() {
if (this.viewData.appointmentAskTypeValue) {
const type = this.askTypeList.find(o => o.code === this.viewData.appointmentAskTypeValue + '')
return type ? type.name : '暂无'
const type = this.askTypeList.find((o) => o.code === this.viewData.appointmentAskTypeValue + "")
return type ? type.name : "暂无"
} else {
return '暂无'
return "暂无"
}
},
getDoctorAskTypeName() {
const askTypeArray = []
if (this.viewData.askType) {
const array = JSON.parse(this.viewData.askType)
this.askTypeList.map(o => {
this.askTypeList.map((o) => {
if (array.includes(o.code)) {
askTypeArray.push(o)
}
@@ -421,7 +393,7 @@ layout("/mobile/platform.html"){
},
async pageData() {
this.loading = true
const {data} = await $.get('/mobile/legalAidPro/MyPageData', this.pageForm)
const { data } = await $.get("/mobile/legalAidPro/MyPageData", this.pageForm)
setTimeout(() => {
this.tableData = this.tableData.concat(data.list)
if (this.tableData.length === data.totalCount) {
@@ -444,14 +416,14 @@ layout("/mobile/platform.html"){
},
async doCancel(id) {
const confirm = await vant.Dialog.confirm({
title: '提示',
message: '您确定取消此次预约吗?',
confirmButtonColor: '#1867b0'
title: "提示",
message: "您确定取消此次预约吗?",
confirmButtonColor: "#1867b0"
})
if (confirm === 'confirm') {
const resp = await $.post('/mobile/legalAidPro/doCancel', {id})
if (confirm === "confirm") {
const resp = await $.post("/mobile/legalAidPro/doCancel", { id })
if (resp.code === 0) {
vant.Toast.success('取消成功')
vant.Toast.success("取消成功")
this.doSearch()
}
}
@@ -468,4 +440,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -16,7 +16,7 @@ layout("/mobile/platform.html"){
.year {
font-size: 16px;
color: #3498db;
font-weight: bold
font-weight: bold;
}
h1 {
@@ -29,14 +29,7 @@ layout("/mobile/platform.html"){
</style>
<div id="app" v-cloak>
<van-nav-bar
@click-left="history.go(-1)"
fixed
left-arrow
placeholder
safe-area-inset-top
title="我的互助金申请"
></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder safe-area-inset-top title="我的互助金申请"></van-nav-bar>
<div>
<div class="card" v-for="item in tableData">
@@ -48,19 +41,16 @@ layout("/mobile/platform.html"){
</div>
</div>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {}
},
methods: {
},
methods: {},
created() {
this.pageData()
}
@@ -69,4 +59,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -3,7 +3,6 @@ layout("/mobile/platform.html"){
#-->
<style>
.van-index-bar__sidebar {
display: none;
}
@@ -159,48 +158,31 @@ layout("/mobile/platform.html"){
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<!--top栏-->
<van-nav-bar
@click-left="history.go(-1)"
fixed
left-arrow
placeholder
safe-area-inset-top
title="会议请假审核"
></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder safe-area-inset-top title="会议请假审核"></van-nav-bar>
<!--筛选框-->
<div class="search-fixed">
<van-search
@search="doSearch"
maxlength="10"
placeholder="请输入会议名称、会议地点进行查询"
shape="round"
v-model="pageForm.searchKeyword"
>
</van-search>
@search="doSearch"
maxlength="10"
placeholder="请输入会议名称、会议地点进行查询"
shape="round"
v-model="pageForm.searchKeyword"
></van-search>
<van-dropdown-menu>
<van-dropdown-item :options="meetingTimeList" @change="doSearch"
v-model="pageForm.meetingTime"></van-dropdown-item>
<van-dropdown-item :options="typeList" @change="doSearch"
v-model="pageForm.typeId"></van-dropdown-item>
<van-dropdown-item :options="meetingTimeList" @change="doSearch" v-model="pageForm.meetingTime"></van-dropdown-item>
<van-dropdown-item :options="typeList" @change="doSearch" v-model="pageForm.typeId"></van-dropdown-item>
</van-dropdown-menu>
</div>
<!--列表-->
<div style="margin-top: 116px">
<van-list
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''" :immediate-check="false"
@load="onLoad"
v-model="loading">
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" :immediate-check="false" @load="onLoad" v-model="loading">
<div class="van-doc-card" v-for="o in tableData">
<div @click="openView(o.id, o.modulename)">
<div style="display: flex; justify-content: space-between">
<div style="width: 70%">
<div class="van-ellipsis title">
@@ -209,9 +191,7 @@ layout("/mobile/platform.html"){
</div>
<div style="color: grey">{{o.location}}</div>
</div>
<div style="color: #1867b0;">
{{o.meetingtypename}}
</div>
<div style="color: #1867b0">{{o.meetingtypename}}</div>
</div>
<div style="margin-top: 10px">
@@ -221,12 +201,11 @@ layout("/mobile/platform.html"){
<!--<van-col span="12"><span style="color: grey">结束时间:</span></van-col>-->
</van-row>
<van-row>
<!--<van-col span="12">{{o.endtime}}</van-col>-->
</van-row>
</div>
<div style="display: flex; justify-content: space-between; margin-top: 8px;">
<div style="display: flex; justify-content: space-between; margin-top: 8px">
<div class="cus_overflow" style="line-height: 20px; width: 83%">
<span style="color: grey">会议描述:</span>
{{o.meetingdescription}}
@@ -238,25 +217,32 @@ layout("/mobile/platform.html"){
<div style="display: flex; justify-content: flex-end; margin-top: 4px">
<div>
<van-button @click.stop="getAuditList(o)" class="cus_button"
color="#1867b0" size="small" style="margin-right: 8px; width: auto;"
type="primary">已审{{o.audit}}
<van-button
@click.stop="getAuditList(o)"
class="cus_button"
color="#1867b0"
size="small"
style="margin-right: 8px; width: auto"
type="primary"
>
已审{{o.audit}}
</van-button>
<van-button @click.stop="openView(o.id, o.modulename)" class="cus_button"
color="#1867b0" size="small" style="margin-right: 8px; width: auto;"
type="primary">未审{{o.no_audit}}
<van-button
@click.stop="openView(o.id, o.modulename)"
class="cus_button"
color="#1867b0"
size="small"
style="margin-right: 8px; width: auto"
type="primary"
>
未审{{o.no_audit}}
</van-button>
</div>
</div>
</div>
</div>
</van-list>
<van-empty
class="custom-image"
description="暂无数据"
image="/none.svg"
v-if="mLoading==false&&tableData.length==0"
></van-empty>
<van-empty class="custom-image" description="暂无数据" image="/none.svg" v-if="mLoading==false&&tableData.length==0"></van-empty>
</div>
<!--弹出框-->
@@ -267,8 +253,7 @@ layout("/mobile/platform.html"){
<van-icon @click="popupShow = false" class="cus_icon" name="close" v-if="popupShow"></van-icon>
<!--审核人员-->
<van-action-sheet :title="queryType === 'notAudit' ? '请假人员列表' : '请假人员列表'" @close="popClose" class="userPopup"
v-model:show="userShow">
<van-action-sheet :title="queryType === 'notAudit' ? '请假人员列表' : '请假人员列表'" @close="popClose" class="userPopup" v-model:show="userShow">
<div class="content">
<div class="van-doc-card" v-for="(item, i) in userList">
<div style="display: flex; justify-content: space-between">
@@ -291,19 +276,23 @@ layout("/mobile/platform.html"){
</div>
<van-checkbox-group ref="checkboxGroup" v-if="item.users !== null" v-model="result">
<van-cell-group>
<van-cell
:key="obj.id"
@click="toggle(i, index)" class="cus_cell"
clickable
v-for="(obj, index) in item.users">
<van-cell :key="obj.id" @click="toggle(i, index)" class="cus_cell" clickable v-for="(obj, index) in item.users">
<span style="display: inline-block; width: 40px">{{obj.username}}</span>
<span style="display: inline-block; width: 20px">{{obj.sex}}</span>
<span style="display: inline-block; width: 60px">{{obj.loginname}}</span>
<span class="unit">{{obj.unitname}}</span>
<van-icon class="audit_icon" color="green" name="passed"
v-if="queryType === 'hasAudit' && obj.auditState === true"></van-icon>
<van-icon class="audit_icon" color="grey" name="close"
v-if="queryType === 'hasAudit' && obj.auditState === false"></van-icon>
<van-icon
class="audit_icon"
color="green"
name="passed"
v-if="queryType === 'hasAudit' && obj.auditState === true"
></van-icon>
<van-icon
class="audit_icon"
color="grey"
name="close"
v-if="queryType === 'hasAudit' && obj.auditState === false"
></van-icon>
<template #right-icon v-if="queryType === 'notAudit'">
<van-checkbox :name="obj.id" ref="checkboxes"></van-checkbox>
</template>
@@ -311,22 +300,15 @@ layout("/mobile/platform.html"){
</van-cell-group>
</van-checkbox-group>
<div style="margin-top: 4px; text-align: center" v-else>暂无请假人员</div>
</div>
<div style="display: flex; justify-content: space-evenly; position: fixed; bottom: 56px; width: 95%"
v-if="queryType === 'notAudit'">
<van-button @click="audit('many', 'reject')" color="#ff976a" size="small" style="height: 38px">驳回
</van-button>
<van-button @click="audit('many', 'pass')" color="#1867b0" size="small" style="height: 38px">通过
</van-button>
<div style="display: flex; justify-content: space-evenly; position: fixed; bottom: 56px; width: 95%" v-if="queryType === 'notAudit'">
<van-button @click="audit('many', 'reject')" color="#ff976a" size="small" style="height: 38px">驳回</van-button>
<van-button @click="audit('many', 'pass')" color="#1867b0" size="small" style="height: 38px">通过</van-button>
</div>
<div style="display: flex; justify-content: space-evenly; position: fixed; bottom: 10px; width: 95%"
v-if="queryType === 'notAudit'">
<van-button @click="audit('all', 'reject')" color="#ff976a" size="small" style="height: 38px">一键全部驳回
</van-button>
<van-button @click="audit('all', 'pass')" color="#1867b0" size="small" style="height: 38px">一键全部通过
</van-button>
<div style="display: flex; justify-content: space-evenly; position: fixed; bottom: 10px; width: 95%" v-if="queryType === 'notAudit'">
<van-button @click="audit('all', 'reject')" color="#ff976a" size="small" style="height: 38px">一键全部驳回</van-button>
<van-button @click="audit('all', 'pass')" color="#1867b0" size="small" style="height: 38px">一键全部通过</van-button>
</div>
</div>
</van-action-sheet>
@@ -334,16 +316,16 @@ layout("/mobile/platform.html"){
<!--审核弹框-->
<van-dialog @confirm="auditDo" show-cancel-button title="温馨提示" v-model:show="auditShow">
<div style="padding-top: 8px; text-align: center; font-size: 14px; color: #646566">{{str}}</div>
<van-divider style="margin: 12px 0 1px 0px;"></van-divider>
<van-divider style="margin: 12px 0 1px 0px"></van-divider>
<van-field
autosize
label="审核意见:"
maxlength="50"
placeholder="请输入审核意见"
rows="2"
show-word-limit
type="textarea"
v-model="reason"
autosize
label="审核意见:"
maxlength="50"
placeholder="请输入审核意见"
rows="2"
show-word-limit
type="textarea"
v-model="reason"
></van-field>
</van-dialog>
</div>
@@ -352,37 +334,41 @@ layout("/mobile/platform.html"){
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
const meetUtil = new meetingUtil()
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
desc: '',
list: ['a', 'b'],
desc: "",
list: ["a", "b"],
result: [],
reason: '',
reason: "",
auditShow: false,
popupShow: false,
userShow: false,
userList: [],
userClickList: [],
str: '',
type: '',
auditType: '',
queryType: '',
str: "",
type: "",
auditType: "",
queryType: "",
typeList: [],
meetingTimeList: [{text: '全部时间', value: null}, {text: '即将开始', value: 0}, {text: '已结束', value: 1}],
meetingTimeList: [
{ text: "全部时间", value: null },
{ text: "即将开始", value: 0 },
{ text: "已结束", value: 1 }
]
}
},
methods: {
async getAuditList(o) {
this.queryType = 'hasAudit'
const resp = await $.post('/mobile/meeting/audit/getLeaveUser', {
this.queryType = "hasAudit"
const resp = await $.post("/mobile/meeting/audit/getLeaveUser", {
meetingId: o.id,
auditType: 'hasAudit',
auditType: "hasAudit"
})
if (resp.code === 0) {
this.userList = resp.data
this.userList.forEach(item => {
this.userList.forEach((item) => {
if (item.users && item.users.length > 1) {
item.users.sort((a, b) => {
return b.auditState - a.auditState
@@ -393,10 +379,10 @@ layout("/mobile/platform.html"){
}
},
checkAll(i) {
this.$refs.checkboxGroup[i].children.forEach(item => item.toggle(true))
this.$refs.checkboxGroup[i].children.forEach((item) => item.toggle(true))
},
toggleAll(i) {
this.$refs.checkboxGroup[i].children.forEach(item => item.toggle())
this.$refs.checkboxGroup[i].children.forEach((item) => item.toggle())
},
toggle(i, index) {
if (i > 0) {
@@ -406,21 +392,21 @@ layout("/mobile/platform.html"){
}
index = length + index
}
this.$refs.checkboxes[index].toggle();
this.$refs.checkboxes[index].toggle()
},
async auditDo() {
let idList = this.result
if (this.type === 'all') {
this.userList.forEach(item => {
if (this.type === "all") {
this.userList.forEach((item) => {
if (item.users !== null && item.users !== undefined) {
idList = idList.concat(item.users.map(o => o.id))
idList = idList.concat(item.users.map((o) => o.id))
}
})
}
const resp = await $.post('/mobile/meeting/audit/audit', {
const resp = await $.post("/mobile/meeting/audit/audit", {
tpuIds: JSON.stringify(idList),
auditOpinion: this.reason,
isPass: this.auditType === 'pass'
isPass: this.auditType === "pass"
})
if (resp.code === 0) {
this.doSearch()
@@ -431,38 +417,38 @@ layout("/mobile/platform.html"){
audit(type, auditType) {
this.type = type
this.auditType = auditType
if (type === 'many' && this.result.length === 0) {
vant.Toast('请先选择人员')
if (type === "many" && this.result.length === 0) {
vant.Toast("请先选择人员")
return
}
this.str = type === 'many' ? '您选择了' + this.result.length + '个人,请确认您的选择' : '您确定要一键全部审核吗?'
this.reason = auditType === 'pass' ? '同意' : '拒绝'
this.str = type === "many" ? "您选择了" + this.result.length + "个人,请确认您的选择" : "您确定要一键全部审核吗?"
this.reason = auditType === "pass" ? "同意" : "拒绝"
this.auditShow = true
},
async openView(id, modulename) {
this.queryType = 'notAudit'
this.queryType = "notAudit"
this.userList = []
const resp = await $.post('/mobile/meeting/audit/getLeaveUser', {
const resp = await $.post("/mobile/meeting/audit/getLeaveUser", {
meetingId: id,
moduleName: modulename,
auditType: 'canAudit',
auditType: "canAudit"
})
if (resp.code === 0) {
this.userList = resp.data
this.userClickList = []
if (this.userList.length === 0) {
vant.Toast('暂无请假人员')
vant.Toast("暂无请假人员")
} else {
this.userShow = true
}
return
}
vant.Toast('系统错误,请联系管理员')
vant.Toast("系统错误,请联系管理员")
},
popClose() {
this.$nextTick(function () {
if (this.$refs.checkboxes !== undefined) {
this.$refs.checkboxes.forEach(item => item.toggle(false));
this.$refs.checkboxes.forEach((item) => item.toggle(false))
}
})
},
@@ -474,7 +460,7 @@ layout("/mobile/platform.html"){
},
async onLoad() {
this.loading = true
$.post('/mobile/meeting/audit/pageData', this.pageForm).then(res => {
$.post("/mobile/meeting/audit/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -485,11 +471,11 @@ layout("/mobile/platform.html"){
}
this.loading = false
})
},
}
},
async created() {
this.typeList = await meetUtil.getAllMeetingType()
this.typeList.unshift({text: '全部会议类型'})
this.typeList.unshift({ text: "全部会议类型" })
if (this.typeList && this.typeList.length > 0) {
this.$set(this.pageForm, "typeId", this.typeList[0].value)
}
@@ -501,4 +487,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -3,7 +3,6 @@ layout("/mobile/platform.html"){
#-->
<style>
.van-index-bar__sidebar {
display: none;
}
@@ -133,56 +132,36 @@ layout("/mobile/platform.html"){
right: 4px;
top: 28px;
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<!--top栏-->
<van-nav-bar
@click-left="history.go(-1)"
fixed
left-arrow
placeholder
safe-area-inset-top
title="我的会议"
></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder safe-area-inset-top title="我的会议"></van-nav-bar>
<!--筛选框-->
<div class="search-fixed">
<van-search
@search="doSearch"
maxlength="10"
placeholder="请输入会议名称、会议地点进行查询"
shape="round"
v-model="pageForm.searchKeyWord"
>
</van-search>
@search="doSearch"
maxlength="10"
placeholder="请输入会议名称、会议地点进行查询"
shape="round"
v-model="pageForm.searchKeyWord"
></van-search>
<van-dropdown-menu>
<van-dropdown-item :options="meetingList" @change="doSearch"
v-model="pageForm.tabNameIndex"></van-dropdown-item>
<van-dropdown-item :options="meetingTimeList" @change="doSearch"
v-model="pageForm.meetingTime"></van-dropdown-item>
<van-dropdown-item :options="typeList" @change="doSearch"
v-model="pageForm.typeId"></van-dropdown-item>
<van-dropdown-item :options="meetingList" @change="doSearch" v-model="pageForm.tabNameIndex"></van-dropdown-item>
<van-dropdown-item :options="meetingTimeList" @change="doSearch" v-model="pageForm.meetingTime"></van-dropdown-item>
<van-dropdown-item :options="typeList" @change="doSearch" v-model="pageForm.typeId"></van-dropdown-item>
</van-dropdown-menu>
</div>
<!--列表-->
<div style="margin-top: 116px">
<van-list
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''" :immediate-check="false"
@load="onLoad"
v-model="loading"
>
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" :immediate-check="false" @load="onLoad" v-model="loading">
<div class="van-doc-card" v-for="o in tableData">
<div @click="openView(o.id)">
<div style="display: flex; justify-content: space-between">
<div style="width: 74%">
<div class="van-ellipsis title">
@@ -190,9 +169,7 @@ layout("/mobile/platform.html"){
<span>{{o.meetingName}}</span>
</div>
</div>
<div style="color: #1867b0; white-space: nowrap;">
{{o.meetingTypeName}}
</div>
<div style="color: #1867b0; white-space: nowrap">{{o.meetingTypeName}}</div>
</div>
<div style="margin-top: 10px">
@@ -218,8 +195,7 @@ layout("/mobile/platform.html"){
<span style="color: grey">会议描述:</span>
{{o.meetingDescription}}
</div>
<span @click.stop="popupShow = true; clickRow = o"
class="showMore">查看更多</span>
<span @click.stop="popupShow = true; clickRow = o" class="showMore">查看更多</span>
</div>
<van-divider></van-divider>
@@ -236,28 +212,31 @@ layout("/mobile/platform.html"){
<van-button type="primary" v-if="o.isJoin !== false" size="small" color="#1867b0">我要签到</van-button>
<van-button v-if="o.isJoin === true" size="small" disabled color="grey">已签到</van-button>-->
<van-button
:disabled="moment().valueOf() > moment(o.leaveDeadline).valueOf() || o.isCanLeave === false"
@click="needLeave(o, false)"
color="#1867b0" size="small" style="margin-right: 8px"
type="primary">查看请假状态
:disabled="moment().valueOf() > moment(o.leaveDeadline).valueOf() || o.isCanLeave === false"
@click="needLeave(o, false)"
color="#1867b0"
size="small"
style="margin-right: 8px"
type="primary"
>
查看请假状态
</van-button>
<van-button
:disabled="moment().valueOf() > moment(o.leaveDeadline).valueOf() || o.isCanLeave === false"
@click="needLeave(o, true)"
color="#1867b0" size="small" style="margin-right: 8px"
type="primary">我要请假
:disabled="moment().valueOf() > moment(o.leaveDeadline).valueOf() || o.isCanLeave === false"
@click="needLeave(o, true)"
color="#1867b0"
size="small"
style="margin-right: 8px"
type="primary"
>
我要请假
</van-button>
</div>
</div>
</div>
</div>
</van-list>
<van-empty
class="custom-image"
description="暂无数据"
image="/none.svg"
v-if="mLoading==false&&tableData.length==0"
></van-empty>
<van-empty class="custom-image" description="暂无数据" image="/none.svg" v-if="mLoading==false&&tableData.length==0"></van-empty>
</div>
<!--弹出框-->
@@ -269,18 +248,20 @@ layout("/mobile/platform.html"){
<!--请假弹框-->
<van-action-sheet class="leave_pop" title="会议信息" v-model="leaveShow">
<div v-if="flag === true"
style="padding: 0px 0px 10px 0px; text-align: center; font-size: 14px; color: #646566">
请<span style="color: red">点击选择</span>请假时间段,填写请假原因
<div v-if="flag === true" style="padding: 0px 0px 10px 0px; text-align: center; font-size: 14px; color: #646566">
请
<span style="color: red">点击选择</span>
请假时间段,填写请假原因
</div>
<div class="content">
<div class="van-doc-card" v-for="(item, index) in timeList">
<div>
<div><span style="color: grey">会议名称:</span>{{item.timePeriodName}}</div>
<div>
<span style="color: grey">会议名称:</span>
{{item.timePeriodName}}
</div>
</div>
<div @click="leaveClick(item, index)"
style="display: flex; justify-content: space-between">
<div @click="leaveClick(item, index)" style="display: flex; justify-content: space-between">
<div>
<div>
<span style="color: grey">会议时间:</span>
@@ -290,43 +271,42 @@ layout("/mobile/platform.html"){
</div>
<div>
<div v-if="flag === true" class="border_div"></div>
<van-icon v-if="flag === true" :class="'checkDiv checkDiv' + index"
name="success" style="display: none;"></van-icon>
<span class="auditState"
v-if="item.isJoin === false">{{item.stateName}}</span>
<van-icon v-if="flag === true" :class="'checkDiv checkDiv' + index" name="success" style="display: none"></van-icon>
<span class="auditState" v-if="item.isJoin === false">{{item.stateName}}</span>
</div>
</div>
<div v-if="item.isJoin === false">
<div><span style="color: grey">审核状态:</span>{{item.stateName}}</div>
<div>
<span style="color: grey">审核状态:</span>
{{item.stateName}}
</div>
</div>
<div>
<span style="float: left; color: grey">请假原因:</span>
<van-field :disabled="item.isJoin === false" placeholder="请输入请假原因" rows="1"
style="font-size: 12px; padding: 0; width: 70%; line-height: 20px"
type="textarea" autosize
v-model="item.leaveReason"></van-field>
<van-field
:disabled="item.isJoin === false"
placeholder="请输入请假原因"
rows="1"
style="font-size: 12px; padding: 0; width: 70%; line-height: 20px"
type="textarea"
autosize
v-model="item.leaveReason"
></van-field>
</div>
<div v-if="flag === false && item.stateCode === clickRow.firstState && item.stateAuditType !== 1"
style="text-align: right">
<van-button @click.stop="cancelLeave(item)" border color="#1867b0" size="small">
取消请假
</van-button>
<div v-if="flag === false && item.stateCode === clickRow.firstState && item.stateAuditType !== 1" style="text-align: right">
<van-button @click.stop="cancelLeave(item)" border color="#1867b0" size="small">取消请假</van-button>
</div>
<div v-if="flag === false && item.stateAuditType === 1" style="text-align: right">
<van-button @click.stop="refreshApply(item)" border color="#1867b0"
size="small">重新申请
</van-button>
<van-button @click.stop="refreshApply(item)" border color="#1867b0" size="small">重新申请</van-button>
</div>
</div>
</div>
<div v-if="flag === true">
<div style="display: flex; justify-content: space-evenly; position: fixed; bottom: 20px; width: 100%">
<van-button @click="leaveShow = false" color="lightgrey" size="small"
style="width: 40%; border-radius: revert; height: 38px">取消
</van-button>
<van-button @click="leave" color="#1867b0" size="small"
style="width: 40%; border-radius: revert; height: 38px">确定
<van-button @click="leaveShow = false" color="lightgrey" size="small" style="width: 40%; border-radius: revert; height: 38px">
取消
</van-button>
<van-button @click="leave" color="#1867b0" size="small" style="width: 40%; border-radius: revert; height: 38px">确定</van-button>
</div>
</div>
</van-action-sheet>
@@ -336,87 +316,94 @@ layout("/mobile/platform.html"){
<!--# include("/platform/meeting/includeJs/meetingUtil.js"){} #-->
const meetUtil = new meetingUtil()
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
timeList: [],
checked: [],
checkboxRefs: [],
leaveReason: '',
leaveReason: "",
leaveShow: false,
popupShow: false,
tabNameIndex: 0,
clickRow: {},
meetingList: [{text: '全部', value: '0'}, {text: '我参与的', value: '1'}, {
text: '我请假的',
value: '2'
}],
meetingList: [
{ text: "全部", value: "0" },
{ text: "我参与的", value: "1" },
{
text: "我请假的",
value: "2"
}
],
typeList: [],
meetingTimeList: [{text: '全部时间', value: null}, {
text: '即将开始',
value: 0
}, {text: '已结束', value: 1}],
flag: true,
meetingTimeList: [
{ text: "全部时间", value: null },
{
text: "即将开始",
value: 0
},
{ text: "已结束", value: 1 }
],
flag: true
}
},
methods: {
refreshApply(o) {
vant.Dialog.confirm({
title: '温馨提示',
message: '您确定要重新申请吗?',
}).then(async () => {
await this.needLeave(this.clickRow, true)
this.timeList.forEach((re, index) => {
if (re.stateAuditType === 1) {
re.isJoin = null
re.stateCode = null
re.leaveReason = null
$('.checkDiv' + index).css('display', 'none')
this.checked = this.checked.filter(function (item, index) {
return item.id !== re.id
})
}
})
}).catch(() => {
title: "温馨提示",
message: "您确定要重新申请吗?"
})
.then(async () => {
await this.needLeave(this.clickRow, true)
this.timeList.forEach((re, index) => {
if (re.stateAuditType === 1) {
re.isJoin = null
re.stateCode = null
re.leaveReason = null
$(".checkDiv" + index).css("display", "none")
this.checked = this.checked.filter(function (item, index) {
return item.id !== re.id
})
}
})
})
.catch(() => {})
},
cancelLeave(o) {
vant.Dialog.confirm({
title: '温馨提示',
message: '您确定要取消请假吗?',
}).then(async () => {
const res = await $.post('/mobile/meeting/mine/cancelLeave', {id: o.id})
if (res.code === 0) {
vant.Toast('操作成功')
this.doSearch()
this.leaveShow = false
}
}).catch(() => {
title: "温馨提示",
message: "您确定要取消请假吗?"
})
.then(async () => {
const res = await $.post("/mobile/meeting/mine/cancelLeave", { id: o.id })
if (res.code === 0) {
vant.Toast("操作成功")
this.doSearch()
this.leaveShow = false
}
})
.catch(() => {})
},
leaveClick(item, index) {
if (item.isJoin === false) {
return
}
const isExist = this.checked.some(o => o.tpuId === item.tpuId)
const isExist = this.checked.some((o) => o.tpuId === item.tpuId)
if (!isExist) {
$('.checkDiv' + index).css('display', '')
$(".checkDiv" + index).css("display", "")
this.checked.push(item)
} else {
$('.checkDiv' + index).css('display', 'none')
this.checked = this.checked.filter(o => o.tpuId !== item.tpuId)
$(".checkDiv" + index).css("display", "none")
this.checked = this.checked.filter((o) => o.tpuId !== item.tpuId)
}
},
toggle(item, index) {
if (item.auditIdList === null) {
this.$refs.checkboxes[index].toggle();
this.$refs.checkboxes[index].toggle()
}
},
openView(id) {
},
openView(id) {},
doSearch() {
this.pageForm.pageNumber = 1
this.tableData = []
@@ -425,7 +412,7 @@ layout("/mobile/platform.html"){
},
async onLoad() {
this.loading = true
$.post('/mobile/meeting/mine/pageData', this.pageForm).then(res => {
$.post("/mobile/meeting/mine/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -441,16 +428,16 @@ layout("/mobile/platform.html"){
this.flag = flag
this.clickRow = o
if (moment().valueOf() > moment(o.leaveDeadline).valueOf() || o.isCanLeave === false) {
vant.Toast('抱歉,已过请假截止时间');
vant.Toast("抱歉,已过请假截止时间")
return
}
this.leaveReason = ''
this.leaveReason = ""
this.checked = []
const res = await $.post('/mobile/meeting/mine/findMyMeetPeriod', {meetingId: o.id})
const res = await $.post("/mobile/meeting/mine/findMyMeetPeriod", { meetingId: o.id })
if (res.code === 0) {
this.timeList = res.data
if (this.timeList.length === 0) {
vant.Toast('您暂无可请假的假时间段');
vant.Toast("您暂无可请假的假时间段")
return
}
@@ -459,64 +446,62 @@ layout("/mobile/platform.html"){
this.timeList.forEach((re, index) => {
if (re.isJoin === false) {
this.checked.push(re)
$('.checkDiv' + index).css('display', '')
$(".checkDiv" + index).css("display", "")
}
})
})
return
}
vant.Toast('系统错误,请联系管理员');
vant.Toast("系统错误,请联系管理员")
},
async leave() {
if (this.checked.length === 0) {
vant.Toast('请选择请假时间段');
vant.Toast("请选择请假时间段")
return
}
const array = this.timeList.find(o => o.stateCode === null || o.stateCode < this.clickRow.firstState)
const array = this.timeList.find((o) => o.stateCode === null || o.stateCode < this.clickRow.firstState)
if (array === undefined) {
vant.Toast('您的所有请假均已处于审核阶段');
vant.Toast("您的所有请假均已处于审核阶段")
return
}
const paramArray = []
let valid = false
this.checked.forEach(item => {
if (item.leaveReason === '' || item.leaveReason === undefined) {
vant.Toast('请填写请假原因');
this.checked.forEach((item) => {
if (item.leaveReason === "" || item.leaveReason === undefined) {
vant.Toast("请填写请假原因")
valid = true
return
}
if (!item.stateCode) {
paramArray.push(
{
id: item.tpuId,
meetingId: this.clickRow.id,
leaveReason: item.leaveReason
}
)
paramArray.push({
id: item.tpuId,
meetingId: this.clickRow.id,
leaveReason: item.leaveReason
})
}
})
if (paramArray.length === 0) {
vant.Toast('请选择请假时间段');
vant.Toast("请选择请假时间段")
return
}
if (valid) {
return
}
const resp = await $.post('/mobile/meeting/mine/askForLeave', {
const resp = await $.post("/mobile/meeting/mine/askForLeave", {
meetingId: this.clickRow.id,
data: JSON.stringify(paramArray)
})
if (resp.code === 0) {
vant.Toast('操作成功');
vant.Toast("操作成功")
this.doSearch()
this.leaveShow = false
}
$('.checkDiv').css('display', 'none')
$(".checkDiv").css("display", "none")
}
},
async created() {
this.typeList = await meetUtil.getAllMeetingType()
this.typeList.unshift({'text': '全部会议类型'})
this.typeList.unshift({ text: "全部会议类型" })
if (this.typeList && this.typeList.length > 0) {
this.$set(this.pageForm, "typeId", this.typeList[0].value)
}
@@ -529,4 +514,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -3,7 +3,6 @@ layout("/mobile/platform.html"){
#-->
<style>
.info {
position: relative;
width: 88%;
@@ -36,7 +35,8 @@ layout("/mobile/platform.html"){
background-color: white;
}
.van-tab__pane, .van-tab__pane-wrapper {
.van-tab__pane,
.van-tab__pane-wrapper {
padding: 20px;
}
@@ -101,45 +101,28 @@ layout("/mobile/platform.html"){
img {
border-radius: 10px;
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="心理咨询预约"
left-arrow
placeholder
fixed
@click-left="window.history.back()">
</van-nav-bar>
<van-nav-bar title="心理咨询预约" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="info">
<div style="display: flex; align-items: center;">
<div style="display: flex; align-items: center">
<!--头像-->
<div class="avatar">
<van-image width="80"
:src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id='+doctorData.avatar"></van-image>
<van-image width="80" :src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id='+doctorData.avatar"></van-image>
</div>
<!--其他信息-->
<div class="other_info">
<div>
{{doctorData.username}}
</div>
<div>
{{doctorData.jobTitle}}
</div>
<div>{{doctorData.username}}</div>
<div>{{doctorData.jobTitle}}</div>
</div>
</div>
</div>
<van-tabs v-model="active" :style="'height: ' + (window.screen.height - 46 - 40 - 84 - 24 - 44) + 'px'">
<van-tab title="预约时段">
<van-list
v-model="mLoading"
:finished="finished"
:finished-text="timeData.length > 0 ? '没有更多了' : ''"
@load="getDataByDoctorId">
<van-list v-model="mLoading" :finished="finished" :finished-text="timeData.length > 0 ? '没有更多了' : ''" @load="getDataByDoctorId">
<div v-if="timeData.length > 0" class="time_info" v-for="item in timeData">
<div style="color: #1867b0">{{getFormatTime(item)}}</div>
<div>
@@ -148,11 +131,11 @@ layout("/mobile/platform.html"){
</div>
</van-list>
<van-empty
v-if="mLoading === false && timeData.length === 0"
class="custom-image"
image="/none.svg"
description="抱歉,此咨询师暂时没有进行排班哦">
</van-empty>
v-if="mLoading === false && timeData.length === 0"
class="custom-image"
image="/none.svg"
description="抱歉,此咨询师暂时没有进行排班哦"
></van-empty>
</van-tab>
<van-tab title="咨询师简介">
<div class="label">咨询师擅长</div>
@@ -163,68 +146,58 @@ layout("/mobile/platform.html"){
</van-tabs>
<van-popup v-model="show" class="apply_pop" position="right">
<van-nav-bar
title="预约信息"
left-arrow
placeholder
fixed
@click-left="show = false">
</van-nav-bar>
<van-nav-bar title="预约信息" left-arrow placeholder fixed @click-left="show = false"></van-nav-bar>
<van-form ref="addForm" :show-error-message="false" input-align="right">
<van-cell-group inset class="mt10">
<van-field readonly
:value="chooseData.startTime"
label="开始时间"></van-field>
<van-field readonly
:value="chooseData.endTime"
label="结束时间"></van-field>
<van-field readonly :value="chooseData.startTime" label="开始时间"></van-field>
<van-field readonly :value="chooseData.endTime" label="结束时间"></van-field>
</van-cell-group>
<van-cell-group inset class="mt10" v-if="chooseData.doctorUser">
<van-field readonly
:value="chooseData.username"
label="咨询师姓名"></van-field>
<van-field readonly
:value="chooseData.mobile"
label="咨询师电话"></van-field>
<van-field readonly :value="chooseData.username" label="咨询师姓名"></van-field>
<van-field readonly :value="chooseData.mobile" label="咨询师电话"></van-field>
</van-cell-group>
<van-cell-group inset class="mt10">
<van-field readonly
value="${@shiro.getPrincipalProperty('username')}"
label="预约人姓名"></van-field>
<van-field readonly
value="${@shiro.getPrincipalProperty('loginname')}"
label="预约人工号"></van-field>
<van-field readonly
value="${@shiro.getPrincipalProperty('unit').getName()}"
label="预约人单位"></van-field>
<van-field :rules="[{ required: true, message: '请填写手机号' }]"
required placeholder="请填写手机号"
type="tel"
v-model=chooseData.userMobile
label="预约人电话"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" label="预约人姓名"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('loginname')}" label="预约人工号"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('unit').getName()}" label="预约人单位"></van-field>
<van-field
:rules="[{ required: true, message: '请填写手机号' }]"
required
placeholder="请填写手机号"
type="tel"
v-model="chooseData.userMobile"
label="预约人电话"
></van-field>
</van-cell-group>
<van-cell-group inset class="mt10">
<div v-if="chooseData.askType">
<van-field v-model="appointmentAskTypeText" label="咨询方式" @click="appointmentAskTypeShow = true"
required :rules="[{ required: true, message: '请选择咨询方式' }]"
placeholder="请选择咨询方式"></van-field>
<van-field
v-model="appointmentAskTypeText"
label="咨询方式"
@click="appointmentAskTypeShow = true"
required
:rules="[{ required: true, message: '请选择咨询方式' }]"
placeholder="请选择咨询方式"
></van-field>
<van-popup v-model:show="appointmentAskTypeShow" position="bottom" round>
<van-picker show-toolbar :columns="askTypeArray" @confirm="askTypeConfirm"
@cancel="appointmentAskTypeShow = false">
</van-picker>
<van-picker
show-toolbar
:columns="askTypeArray"
@confirm="askTypeConfirm"
@cancel="appointmentAskTypeShow = false"
></van-picker>
</van-popup>
</div>
<van-field
v-model="appointmentUserNote"
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
v-model="appointmentUserNote"
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
></van-field>
</van-cell-group>
</van-form>
@@ -235,21 +208,20 @@ layout("/mobile/platform.html"){
</div>
<script>
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
var query = window.location.search.substring(1)
var vars = query.split("&")
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
var pair = vars[i].split("=")
if (pair[0] == variable) {
return pair[1];
return pair[1]
}
}
return '';
return ""
}
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -257,7 +229,7 @@ layout("/mobile/platform.html"){
askTypeList: [],
askTypeArray: [],
show: false,
doctorId: '',
doctorId: "",
doctorData: {},
active: 0,
timeData: [],
@@ -265,10 +237,10 @@ layout("/mobile/platform.html"){
chooseData: {
userMobile: null
},
appointmentUserNote: '',
appointmentAskTypeText: '',
appointmentAskTypeValue: '',
typeId: '',
appointmentUserNote: "",
appointmentAskTypeText: "",
appointmentAskTypeValue: "",
typeId: ""
}
},
methods: {
@@ -279,36 +251,36 @@ layout("/mobile/platform.html"){
},
async doSubmit() {
if (!this.chooseData.userMobile.trim()) {
this.$toast.fail("请填写手机号");
this.$toast.fail("请填写手机号")
return
}
if (!this.appointmentAskTypeValue) {
this.$toast.fail("请选择咨询方式");
this.$toast.fail("请选择咨询方式")
return
}
const valid = await vant.Dialog.confirm({
title: '提示',
message: '您确认提交吗?',
confirmButtonColor: '#1867b0'
title: "提示",
message: "您确认提交吗?",
confirmButtonColor: "#1867b0"
})
if (valid) {
this.$toast.loading('提交中...')
this.$toast.loading("提交中...")
const params = {
appointmentUserNote: this.appointmentUserNote,
appointmentAskTypeValue: this.appointmentAskTypeValue,
userMobile: this.chooseData.userMobile,
id: this.chooseData.id,
isAdd: true,
isAdd: true
}
const resp = await $.post('/mobile/psychologyPro/doApply', params)
const resp = await $.post("/mobile/psychologyPro/doApply", params)
if (resp.code === 0) {
vant.Dialog.alert({
title: '提示',
message: '您已预约成功!',
confirmButtonColor: '#1867b0'
title: "提示",
message: "您已预约成功!",
confirmButtonColor: "#1867b0"
}).then(() => {
location.replace('/mobile/psychologyPro/myApplyList')
});
location.replace("/mobile/psychologyPro/myApplyList")
})
} else if (resp.code === 1) {
this.$toast.error(resp.msg)
} else if (resp.code === 2) {
@@ -317,15 +289,15 @@ layout("/mobile/platform.html"){
}
},
apply(o) {
if (o.title !== '可预约') {
if (o.title !== "可预约") {
return
}
this.askTypeArray = []
if (o.askType) {
const array = JSON.parse(o.askType)
this.askTypeList.map(o => {
this.askTypeList.map((o) => {
if (array.includes(o.code)) {
this.askTypeArray.push({text: o.name, value: o.code})
this.askTypeArray.push({ text: o.name, value: o.code })
}
})
}
@@ -338,17 +310,17 @@ layout("/mobile/platform.html"){
this.show = true
},
getFormatTime(o) {
const simpleStartDate = moment(o.startTime).format('YYYY-MM-DD')
const simpleStartHour = moment(o.startTime).format('HH:mm')
const simpleEndHour = moment(o.endTime).format('HH:mm')
const simpleStartDate = moment(o.startTime).format("YYYY-MM-DD")
const simpleStartHour = moment(o.startTime).format("HH:mm")
const simpleEndHour = moment(o.endTime).format("HH:mm")
const dayNameOfWeek = this.dayNames[new Date(simpleStartDate).getDay()]
return simpleStartDate + ' ' + dayNameOfWeek + ' ' + simpleStartHour + '至' + simpleEndHour
return simpleStartDate + " " + dayNameOfWeek + " " + simpleStartHour + "至" + simpleEndHour
},
async pageData() {
this.pageForm.doctorId = this.doctorId
const resp = await $.post('/mobile/psychologyPro/pageData', this.pageForm)
const resp = await $.post("/mobile/psychologyPro/pageData", this.pageForm)
if (resp.code === 0) {
if (this.doctorId !== '') {
if (this.doctorId !== "") {
this.doctorData = resp.data[0]
} else {
this.tableData = resp.data
@@ -359,40 +331,40 @@ layout("/mobile/platform.html"){
this.mLoading = true
this.pageForm.id = this.doctorId
this.pageForm.typeId = this.typeId
const resp = await $.post('/mobile/psychologyPro/getDataByDoctorId', this.pageForm)
const resp = await $.post("/mobile/psychologyPro/getDataByDoctorId", this.pageForm)
if (resp.code === 0) {
const userId = "${@shiro.getPrincipalProperty('id')}"
const record = resp.data.list.find(v => v.appointmentUser === userId)
const record = resp.data.list.find((v) => v.appointmentUser === userId)
if (record) {
resp.data.list.forEach(v => {
resp.data.list.forEach((v) => {
if (new Date().getTime() > v.startTimeTs) {
v.className = 'gray'
v.title = '不可预约'
v.className = "gray"
v.title = "不可预约"
} else {
if (v.appointmentUser === userId) {
v.className = 'gray'
v.title = '我已预约'
v.className = "gray"
v.title = "我已预约"
} else {
v.className = 'gray'
v.title = '不可预约'
v.className = "gray"
v.title = "不可预约"
}
}
})
} else {
resp.data.list.forEach(v => {
resp.data.list.forEach((v) => {
if (new Date().getTime() > v.startTimeTs) {
v.className = 'gray'
v.title = '不可预约'
v.className = "gray"
v.title = "不可预约"
} else {
if (!v.appointmentUser) {
v.className = '#1867b0'
v.title = '可预约'
v.className = "#1867b0"
v.title = "可预约"
} else if (v.appointmentUser === userId) {
v.className = 'gray'
v.title = '我已预约'
v.className = "gray"
v.title = "我已预约"
} else {
v.className = 'gray'
v.title = '不可预约'
v.className = "gray"
v.title = "不可预约"
}
}
})
@@ -405,17 +377,17 @@ layout("/mobile/platform.html"){
}
}
this.mLoading = false
},
}
},
async created() {
this.doctorId = getQueryVariable('doctorId')
this.typeId = getQueryVariable('typeId')
this.doctorId = getQueryVariable("doctorId")
this.typeId = getQueryVariable("typeId")
this.askTypeList = await getDictOptions("psychology_asktype")
await this.pageData()
},
}
})
</script>
<!--#
}
#-->
#-->
@@ -3,7 +3,6 @@ layout("/mobile/platform.html"){
#-->
<style>
.info {
position: relative;
width: 88%;
@@ -40,27 +39,18 @@ layout("/mobile/platform.html"){
.van-dropdown-menu__item {
flex: auto;
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="心理咨询师列表"
left-arrow
placeholder
fixed
@click-left="window.history.back()">
</van-nav-bar>
<van-nav-bar title="心理咨询师列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-dropdown-menu>
<van-dropdown-item v-model="pageForm.typeId" :options="typeList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.typeId" :options="typeList" @change="doSearch"></van-dropdown-item>
</van-dropdown-menu>
<!--咨询师列表-->
<div class="info" @click="toApply(item)" v-for="item in tableData" style="margin-bottom: 20px">
<div style="display: flex;">
<div style="display: flex">
<!--头像-->
<div class="avatar">
<van-image width="80" :src="APP_DOMAIN+FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.avatar"></van-image>
@@ -69,27 +59,28 @@ layout("/mobile/platform.html"){
<div class="other_info">
<div>
<span style="font-size: 20px">{{item.username}}&ensp;</span>
<span style="color: grey">{{item.sex}}&ensp;</span>&emsp;
<span style="color: grey">{{item.sex}}&ensp;</span>
&emsp;
</div>
<div>
<div>
<span style="color: grey">职称:</span>{{item.jobTitle}}
<span style="color: grey">职称:</span>
{{item.jobTitle}}
</div>
<div>
<span style="color: grey">单位:</span>{{item.unitName}}
<span style="color: grey">单位:</span>
{{item.unitName}}
</div>
<div class="desc">
<span style="color: grey">特长:</span>{{item.specialty}}
<span style="color: grey">特长:</span>
{{item.specialty}}
</div>
</div>
</div>
</div>
</div>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg"
description="暂无数据">
</van-empty>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
<div>
<van-tabbar v-model="tarBarActive">
@@ -97,21 +88,20 @@ layout("/mobile/platform.html"){
<van-tabbar-item icon="manager-o" replace url="/mobile/psychologyPro/myApplyList">我的预约</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
typeList: [
{text: '时间不限', value: 'no'},
{text: '本周', value: 'thisWeek'},
{text: '下周', value: 'nextWeek'},
],
{ text: "时间不限", value: "no" },
{ text: "本周", value: "thisWeek" },
{ text: "下周", value: "nextWeek" }
]
}
},
methods: {
@@ -120,19 +110,19 @@ layout("/mobile/platform.html"){
this.pageData()
},
async pageData() {
const resp = await $.post('/mobile/psychologyPro/pageData', this.pageForm)
const resp = await $.post("/mobile/psychologyPro/pageData", this.pageForm)
if (resp.code === 0) {
this.tableData = resp.data
}
},
toApply(o) {
location.href = '/mobile/psychologyPro/apply?doctorId=' + o.userid + '&typeId=' + this.pageForm.typeId
location.href = "/mobile/psychologyPro/apply?doctorId=" + o.userid + "&typeId=" + this.pageForm.typeId
}
},
async created() {
this.$set(this.pageForm, "typeId", this.typeList[0].value)
await this.pageData()
},
}
})
</script>
@@ -4,7 +4,7 @@ layout("/mobile/platform.html"){
<style>
.list-card {
background: #FFFFFF;
background: #ffffff;
width: 92%;
margin: 0px auto 20px;
box-shadow: 0 2px 10px rgb(125 126 128 / 16%);
@@ -79,7 +79,7 @@ layout("/mobile/platform.html"){
}
.van-card-body {
padding: 0px 10px 0px 10px
padding: 0px 10px 0px 10px;
}
.van-doc-card > div:first-child {
@@ -114,29 +114,23 @@ layout("/mobile/platform.html"){
</style>
<div id="app" v-cloak>
<van-nav-bar
title="我的预约记录"
left-arrow
placeholder
fixed
@click-left="window.history.back()"
></van-nav-bar>
<van-nav-bar title="我的预约记录" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu>
<van-dropdown-item v-model="pageForm.year" :options="yearList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.stateId" :options="stateList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" :options="yearList" @change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.stateId" :options="stateList" @change="doSearch"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 60px auto 0 auto">
<van-list v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
:immediate-check="false"
@load="pageData">
<van-list
v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
:immediate-check="false"
@load="pageData"
>
<div v-for="o in tableData" class="list-card" @click="viewInfo(o)">
<div class="card-head">
心理咨询预约
@@ -152,35 +146,32 @@ layout("/mobile/platform.html"){
<van-cell :border="false" title="结束时间">{{o.endTime}}</van-cell>
</van-cell-group>
<div class="cancel-button">
<van-button v-if="moment().unix() < moment(o.startTime).unix()" style="margin-right: 4px"
@click.stop="update(o)" round size="small" color="#1867b0">修改
<van-button
v-if="moment().unix() < moment(o.startTime).unix()"
style="margin-right: 4px"
@click.stop="update(o)"
round
size="small"
color="#1867b0"
>
修改
</van-button>
<van-button v-if="moment().unix() < moment(o.startTime).unix()"
@click.stop="doCancel(o.id)" round size="small" color="#1867b0">取消
<van-button v-if="moment().unix() < moment(o.startTime).unix()" @click.stop="doCancel(o.id)" round size="small" color="#1867b0">
取消
</van-button>
</div>
</div>
</van-list>
</div>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg"
description="暂无数据">
</van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
<van-popup v-model="show" class="apply_pop" position="right">
<van-nav-bar
title="预约详细信息"
left-arrow
placeholder
fixed
@click-left="show = false"
safe-area-inset-top></van-nav-bar>
<van-nav-bar title="预约详细信息" left-arrow placeholder fixed @click-left="show = false" safe-area-inset-top></van-nav-bar>
<div class="van-doc-card" style="margin: 16px">
<div></div>
<div class="van-card-header">
预约时间段
</div>
<div class="van-card-header">预约时间段</div>
<div class="van-card-body">
<van-cell-group>
<van-cell title="开始时间">{{ viewData.startTime }}</van-cell>
@@ -191,9 +182,7 @@ layout("/mobile/platform.html"){
<div class="van-doc-card" style="margin: 16px">
<div></div>
<div class="van-card-header">
预约人信息
</div>
<div class="van-card-header">预约人信息</div>
<div class="van-card-body">
<van-cell-group>
<van-cell title="姓名">{{ viewData.appointmentUserName }}</van-cell>
@@ -208,9 +197,7 @@ layout("/mobile/platform.html"){
<div class="van-doc-card" style="margin: 16px">
<div></div>
<div class="van-card-header">
咨询师信息
</div>
<div class="van-card-header">咨询师信息</div>
<div class="van-card-body">
<van-cell-group>
<van-cell title="姓名">{{ viewData.doctorUserName || '暂无'}}</van-cell>
@@ -220,20 +207,17 @@ layout("/mobile/platform.html"){
<van-cell title="咨询方式">
<div v-if="!viewData.askType || getDoctorAskTypeName().length === 0">暂无</div>
<div v-else>
<div v-for="item in getDoctorAskTypeName()">
{{ item.name }}
</div>
<div v-for="item in getDoctorAskTypeName()">{{ item.name }}</div>
</div>
</van-cell>
<van-cell @click="doctorIntroduceShow = true" title="个人简介" is-link>
<div style="overflow: hidden; white-space: nowrap; text-overflow: ellipsis; word-break: break-word;">
<div style="overflow: hidden; white-space: nowrap; text-overflow: ellipsis; word-break: break-word">
{{ viewData.doctorIntroduce || '暂无'}}
</div>
</van-cell>
</van-cell-group>
</div>
</div>
</van-popup>
<van-popup v-model:show="doctorIntroduceShow" position="bottom" round style="padding: 20px; width: auto">
@@ -247,67 +231,55 @@ layout("/mobile/platform.html"){
</van-popup>
<van-popup v-model="infoShow" class="apply_pop" position="right">
<van-nav-bar
title="预约信息"
left-arrow
placeholder
fixed
@click-left="infoShow = false">
</van-nav-bar>
<van-nav-bar title="预约信息" left-arrow placeholder fixed @click-left="infoShow = false"></van-nav-bar>
<van-form ref="addForm" :show-error-message="false" input-align="right">
<van-cell-group inset class="mt10">
<van-field readonly
:value="chooseData.startTime"
label="开始时间"></van-field>
<van-field readonly
:value="chooseData.endTime"
label="结束时间"></van-field>
<van-field readonly :value="chooseData.startTime" label="开始时间"></van-field>
<van-field readonly :value="chooseData.endTime" label="结束时间"></van-field>
</van-cell-group>
<van-cell-group inset class="mt10" v-if="chooseData.doctorUser">
<van-field readonly
:value="chooseData.doctorUserName"
label="咨询师姓名"></van-field>
<van-field readonly
:value="chooseData.doctorMobile"
label="咨询师电话"></van-field>
<van-field readonly :value="chooseData.doctorUserName" label="咨询师姓名"></van-field>
<van-field readonly :value="chooseData.doctorMobile" label="咨询师电话"></van-field>
</van-cell-group>
<van-cell-group inset class="mt10">
<van-field readonly
value="${@shiro.getPrincipalProperty('username')}"
label="预约人姓名"></van-field>
<van-field readonly
value="${@shiro.getPrincipalProperty('loginname')}"
label="预约人工号"></van-field>
<van-field readonly
value="${@shiro.getPrincipalProperty('unit').getName()}"
label="预约人单位"></van-field>
<van-field :rules="[{ required: true, message: '请填写电话' }]"
required
type="tel"
v-model=chooseData.userMobile
label="预约人电话"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" label="预约人姓名"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('loginname')}" label="预约人工号"></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('unit').getName()}" label="预约人单位"></van-field>
<van-field
:rules="[{ required: true, message: '请填写电话' }]"
required
type="tel"
v-model="chooseData.userMobile"
label="预约人电话"
></van-field>
</van-cell-group>
<van-cell-group inset class="mt10">
<div v-if="chooseData.askType">
<van-field v-model="appointmentAskTypeText" label="咨询方式" @click="appointmentAskTypeShow = true"
placeholder="请选择咨询方式"></van-field>
<van-field
v-model="appointmentAskTypeText"
label="咨询方式"
@click="appointmentAskTypeShow = true"
placeholder="请选择咨询方式"
></van-field>
<van-popup v-model:show="appointmentAskTypeShow" position="bottom" round>
<van-picker show-toolbar :columns="askTypeArray" @confirm="askTypeConfirm"
@cancel="appointmentAskTypeShow = false">
</van-picker>
<van-picker
show-toolbar
:columns="askTypeArray"
@confirm="askTypeConfirm"
@cancel="appointmentAskTypeShow = false"
></van-picker>
</van-popup>
</div>
<van-field
v-model="appointmentUserNote"
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
v-model="appointmentUserNote"
rows="3"
autosize
label="预约备注"
type="textarea"
placeholder="您可以输入预约备注"
></van-field>
</van-cell-group>
</van-form>
@@ -326,28 +298,28 @@ layout("/mobile/platform.html"){
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
tarBarActive: 1,
appointmentAskTypeText: '',
appointmentUserNote: '',
appointmentAskTypeText: "",
appointmentUserNote: "",
appointmentAskTypeShow: false,
appointmentAskTypeValue: '',
appointmentAskTypeValue: "",
askTypeArray: [],
chooseData: {},
infoShow: false,
doctorIntroduceShow: false,
stateList: [
{text: '全部预约状态', value: null},
{text: '预约中', value: 2100},
{text: '预约成功', value: 2300},
{text: '预约失败', value: 2200}
{ text: "全部预约状态", value: null },
{ text: "预约中", value: 2100 },
{ text: "预约成功", value: 2300 },
{ text: "预约失败", value: 2200 }
],
askTypeList: [],
show: false,
viewData: {},
viewData: {}
}
},
methods: {
@@ -355,15 +327,15 @@ layout("/mobile/platform.html"){
this.askTypeArray = []
if (o.askType) {
const array = JSON.parse(o.askType)
this.askTypeList.map(o => {
this.askTypeList.map((o) => {
if (array.includes(o.code)) {
this.askTypeArray.push({text: o.name, value: o.code})
this.askTypeArray.push({ text: o.name, value: o.code })
}
})
}
if (o.appointmentAskTypeValue) {
const type = this.askTypeList.find(x => x.code === o.appointmentAskTypeValue)
this.appointmentAskTypeText = type ? type.name : ''
const type = this.askTypeList.find((x) => x.code === o.appointmentAskTypeValue)
this.appointmentAskTypeText = type ? type.name : ""
}
this.chooseData = o
this.appointmentUserNote = o.appointmentUserNote
@@ -377,28 +349,28 @@ layout("/mobile/platform.html"){
},
async doSubmit() {
if (!this.chooseData.userMobile) {
this.$toast.fail("请输入手机号");
this.$toast.fail("请输入手机号")
return
}
const valid = await vant.Dialog.confirm({
title: '提示',
message: '您确认提交吗?',
confirmButtonColor: '#1867b0'
title: "提示",
message: "您确认提交吗?",
confirmButtonColor: "#1867b0"
})
if (valid) {
this.$toast.loading('提交中...')
this.$toast.loading("提交中...")
const params = {
appointmentUserNote: this.appointmentUserNote,
appointmentAskTypeValue: this.appointmentAskTypeValue,
userMobile: this.chooseData.userMobile,
id: this.chooseData.id,
isAdd: false,
isAdd: false
}
const resp = await $.post('/mobile/psychologyPro/doApply', params)
const resp = await $.post("/mobile/psychologyPro/doApply", params)
if (resp.code === 0) {
this.$toast.success('修改成功')
this.$toast.success("修改成功")
setTimeout(() => {
location.replace('/mobile/psychologyPro/myApplyList')
location.replace("/mobile/psychologyPro/myApplyList")
}, 1000)
} else if (resp.code === 1) {
this.$toast.error(resp.msg)
@@ -409,17 +381,17 @@ layout("/mobile/platform.html"){
},
getAskTypeName() {
if (this.viewData.appointmentAskTypeValue) {
const type = this.askTypeList.find(o => o.code === this.viewData.appointmentAskTypeValue + '')
return type ? type.name : '暂无'
const type = this.askTypeList.find((o) => o.code === this.viewData.appointmentAskTypeValue + "")
return type ? type.name : "暂无"
} else {
return '暂无'
return "暂无"
}
},
getDoctorAskTypeName() {
const askTypeArray = []
if (this.viewData.askType) {
const array = JSON.parse(this.viewData.askType)
this.askTypeList.map(o => {
this.askTypeList.map((o) => {
if (array.includes(o.code)) {
askTypeArray.push(o)
}
@@ -429,7 +401,7 @@ layout("/mobile/platform.html"){
},
async pageData() {
this.loading = true
const {data} = await $.get('/mobile/psychologyPro/MyPageData', this.pageForm)
const { data } = await $.get("/mobile/psychologyPro/MyPageData", this.pageForm)
setTimeout(() => {
this.tableData = this.tableData.concat(data.list)
if (this.tableData.length === data.totalCount) {
@@ -452,14 +424,14 @@ layout("/mobile/platform.html"){
},
async doCancel(id) {
const confirm = await vant.Dialog.confirm({
title: '提示',
message: '您确定取消此次预约吗?',
confirmButtonColor: '#1867b0'
title: "提示",
message: "您确定取消此次预约吗?",
confirmButtonColor: "#1867b0"
})
if (confirm === 'confirm') {
const resp = await $.post('/mobile/psychologyPro/doCancel', {id})
if (confirm === "confirm") {
const resp = await $.post("/mobile/psychologyPro/doCancel", { id })
if (resp.code === 0) {
vant.Toast.success('取消成功')
vant.Toast.success("取消成功")
this.doSearch()
}
}
@@ -100,77 +100,66 @@ layout("/mobile/platform.html"){
padding: 10px;
font-size: 14px;
}
</style>
<div id="app" v-cloak>
<div class="root">
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="知识竞答" left-arrow placeholder fixed
@click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="知识竞答" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<template v-if="!mLoading">
<div v-if="finishAnswer">
{{finishAnswer}}
<van-empty description="您已经答完该问卷">
<div>
<!-- <van-button type="info" @click="viewScore">查看成绩</van-button>-->
<!-- <van-button type="info" @click="viewScore">查看成绩</van-button>-->
<van-button type="info" @click="viewAnswerSheet">查看答卷</van-button>
<!-- <van-button type="info" @click="answerAgain">再答一次</van-button>-->
<!-- <van-button type="info" @click="answerAgain">再答一次</van-button>-->
</div>
</van-empty>
</div>
<div v-else class="page-survey" style="touch-action: manipulation;min-height: 100vh;">
<div v-else class="page-survey" style="touch-action: manipulation; min-height: 100vh">
<div class="survey-container">
<div class="survey-head">
<div class="title">
{{questionData.qtitle}}
</div>
<div class="desc">
{{titleMsg}}
</div>
<div class="title">{{questionData.qtitle}}</div>
<div class="desc">{{titleMsg}}</div>
</div>
<div class="question-list">
<section v-for="(issue,issueIdx) in issueList" :key="issue.iid" class="question"
:id="'issue'+issue.iid">
<section v-for="(issue,issueIdx) in issueList" :key="issue.iid" class="question" :id="'issue'+issue.iid">
<div class="question-head">
<div class="question-tags">
<template v-if="issue.itx===1">
<van-tag :type="issue.iisdx?'primary':'warning'">{{issue.iisdx?'单选':'多选'}}
</van-tag>
<van-tag :type="issue.iisdx?'primary':'warning'">{{issue.iisdx?'单选':'多选'}}</van-tag>
</template>
<!-- <van-tag v-if="issue.fraction" type="primary">{{issue.fraction}}分</van-tag>-->
<!-- <van-tag v-if="issue.fraction" type="primary">{{issue.fraction}}分</van-tag>-->
</div>
<h2 class="question-title">
<span class="question-seq">
<b>
{{issueIdx+1}}
</b>
</span>
<span class="question-seq">
<b>{{issueIdx+1}}</b>
</span>
<div class="text" v-html="issue.iname"></div>
</h2>
</div>
<div class="question-body">
<van-checkbox-group v-model="issue.userSelect" :ref="'checkboxGroup'+issue.iid">
<van-cell-group>
<van-cell
v-for="(item,index) in issue.wors"
clickable
:key="item"
:title="item.wtxt"
@click="toggle(issue,item.wid)"
v-for="(item,index) in issue.wors"
clickable
:key="item"
:title="item.wtxt"
@click="toggle(issue,item.wid)"
>
<template #icon>
<van-checkbox :name="item.wid" :ref="'checkboxes'+item.wid"
:shape="issue.iisdx?'round':'square'"></van-checkbox>
<van-checkbox
:name="item.wid"
:ref="'checkboxes'+item.wid"
:shape="issue.iisdx?'round':'square'"
></van-checkbox>
</template>
</van-cell>
</van-cell-group>
</van-checkbox-group>
</div>
</section>
</div>
@@ -178,18 +167,16 @@ layout("/mobile/platform.html"){
<van-button type="info" block @click="save()">保存</van-button>
<van-button type="info" block @click="submit()">提交</van-button>
</div>
</div>
</div>
</template>
</div>
</div>
<script>
const BASE_URL = '/mobile/question/h5ctgu'
const BASE_URL = "/mobile/question/h5ctgu"
const vue = new Vue({
el: '#app',
el: "#app",
data() {
return {
questionData: {
@@ -206,116 +193,115 @@ layout("/mobile/platform.html"){
return this.questionData.issues
},
titleMsg() {
const radios = this.issueList.filter(v => v.itx === 1 && v.iisdx)
const checkBoxes = this.issueList.filter(v => v.itx === 1 && !v.iisdx)
const radios = this.issueList.filter((v) => v.itx === 1 && v.iisdx)
const checkBoxes = this.issueList.filter((v) => v.itx === 1 && !v.iisdx)
const radioScore = radios && radios.length > 0 ? radios[0].fraction : 0
const checkBoxesScore = checkBoxes && checkBoxes.length > 0 ? checkBoxes[0].fraction : 0
const radioScoreSum = radios.map(v => v.fraction ? v.fraction : 0).reduce((a, b) => a + b, 0)
const checkBoxesScoreSum = checkBoxes.map(v => v.fraction ? v.fraction : 0).reduce((a, b) => a + b, 0)
const radioScoreSum = radios.map((v) => (v.fraction ? v.fraction : 0)).reduce((a, b) => a + b, 0)
const checkBoxesScoreSum = checkBoxes.map((v) => (v.fraction ? v.fraction : 0)).reduce((a, b) => a + b, 0)
const sumScore = radioScoreSum + checkBoxesScoreSum
let radiosText = ''
let checkBoxesText = ''
let radiosText = ""
let checkBoxesText = ""
if (radios && radios.length > 0) {
radiosText = "单选题" + radios.length + "题,每题" + radioScore + "分,合计" + radioScoreSum + "分;"
}
if (checkBoxes && checkBoxes.length > 0) {
checkBoxesText = "多选题" + checkBoxes.length + "题,每题" + checkBoxesScore + "分,合计" + checkBoxesScoreSum + "分;总分" + sumScore + "分。"
checkBoxesText =
"多选题" + checkBoxes.length + "题,每题" + checkBoxesScore + "分,合计" + checkBoxesScoreSum + "分;总分" + sumScore + "分。"
}
return "说明:" + radiosText + checkBoxesText
},
fullScore() {
return this.issueList.map(v => v.fraction ? v.fraction : 0).reduce((a, b) => a + b)
return this.issueList.map((v) => (v.fraction ? v.fraction : 0)).reduce((a, b) => a + b)
},
radioNum() {
return this.issueList.filter(v => v.idx === 1 && v.iisdx).map(v => v.fraction ? v.fraction : 0).reduce((a, b) => a + b)
return this.issueList
.filter((v) => v.idx === 1 && v.iisdx)
.map((v) => (v.fraction ? v.fraction : 0))
.reduce((a, b) => a + b)
},
checkBoxNum() {
}
checkBoxNum() {}
},
methods: {
async getQuestionData() {
const resp = await $.get(BASE_URL + '/questionInfo/' + this.id)
const resp = await $.get(BASE_URL + "/questionInfo/" + this.id)
this.questionData = resp.data
this.questionData.issues.forEach(i => {
this.questionData.issues.forEach((i) => {
// i.userSelect = null
})
},
toggle(issue, worId) {
//单选
if (issue.iisdx) {
vue.$refs['checkboxGroup' + issue.iid][0].toggleAll(false)
vue.$refs["checkboxGroup" + issue.iid][0].toggleAll(false)
} else {
}
console.log(issue.userSelect)
this.$refs['checkboxes' + worId][0].toggle()
this.$refs["checkboxes" + worId][0].toggle()
setTimeout(() => {
console.log(issue.userSelect)
})
},
save() {
this.$modal.confirm('保存后下次可继续做答,您确定要保存吗?').then(async () => {
const replies = this.questionData.issues.map(v => {
this.$modal.confirm("保存后下次可继续做答,您确定要保存吗?").then(async () => {
const replies = this.questionData.issues.map((v) => {
return {
qid: v.iid,
issueId: v.iid,
userSelect: v.userSelect,
userSelect: v.userSelect
}
})
const {code} = await $.post(BASE_URL + '/saveAnswer', {
const { code } = await $.post(BASE_URL + "/saveAnswer", {
replies: JSON.stringify(replies),
questionId: this.questionData.qid,
isSave: true
})
this.$modal.closeLoading()
if (code === 0) {
this.$modal.msg('保存成功')
this.$modal.msg("保存成功")
} else {
this.$modal.msg('保存失败')
this.$modal.msg("保存失败")
}
})
},
submit() {
const iids = this.questionData.issues.filter(v => !v.userSelect).map(v => v.iid)
const iids = this.questionData.issues.filter((v) => !v.userSelect).map((v) => v.iid)
if (iids.length > 0) {
vant.Toast('您还有' + iids.length + '题未作答,请答完后再提交!')
document.getElementById('issue' + iids[0]).scrollIntoView({behavior: 'smooth', block: 'center','inline':'start'});
vant.Toast("您还有" + iids.length + "题未作答,请答完后再提交!")
document.getElementById("issue" + iids[0]).scrollIntoView({ behavior: "smooth", block: "center", inline: "start" })
return
}
const msg = '一旦提交不可修改,您确定要提交吗?'
const msg = "一旦提交不可修改,您确定要提交吗?"
this.$modal.confirm(msg).then(async () => {
const replies = this.questionData.issues.map(v => {
const replies = this.questionData.issues.map((v) => {
return {
qid: v.iid,
issueId: v.iid,
userSelect: v.userSelect,
userSelect: v.userSelect
}
})
const {code} = await $.post(BASE_URL + '/saveAnswer', {
const { code } = await $.post(BASE_URL + "/saveAnswer", {
replies: JSON.stringify(replies),
questionId: this.questionData.qid,
isSave: false
})
this.$modal.closeLoading()
if (code === 0) {
this.$modal.msg('提交成功')
this.$modal.msg("提交成功")
await this.checkUserFinishAnswer()
if (this.finishAnswer) {
//查看分数
@@ -326,18 +312,17 @@ layout("/mobile/platform.html"){
},
//获取回答信息
async getReply() {
const resp = await $.get(BASE_URL + '/answerInfo/' + this.id)
const resp = await $.get(BASE_URL + "/answerInfo/" + this.id)
this.replyInfo = resp.data
},
//用户是否全部答完提交
async checkUserFinishAnswer() {
this.mLoading = true
const resp = await $.get(BASE_URL + '/checkUserFinishAnswer', {questionId: this.id})
const resp = await $.get(BASE_URL + "/checkUserFinishAnswer", { questionId: this.id })
setTimeout(async () => {
this.mLoading = false
this.finishAnswer = resp.data
if (resp.data) {
} else {
await this.getReply()
await this.assignmentAnswer()
@@ -347,9 +332,9 @@ layout("/mobile/platform.html"){
//答案赋值
assignmentAnswer() {
this.questionData.issues.forEach(issue => {
const rwids = this.replyInfo.filter(v => v.issueId === issue.iid).map(v => v.rwid)
rwids.forEach(rwid => {
this.questionData.issues.forEach((issue) => {
const rwids = this.replyInfo.filter((v) => v.issueId === issue.iid).map((v) => v.rwid)
rwids.forEach((rwid) => {
this.toggle(issue, rwid)
})
})
@@ -358,21 +343,20 @@ layout("/mobile/platform.html"){
answerAgain() {
this.finishAnswer = false
setTimeout(() => {
this.questionData.issues.forEach(issue => {
issue.wors.forEach(wor => {
this.$refs['checkboxes' + wor.wid][0].toggle(false)
this.questionData.issues.forEach((issue) => {
issue.wors.forEach((wor) => {
this.$refs["checkboxes" + wor.wid][0].toggle(false)
})
})
}, 0)
},
viewScore() {
window.location.href = BASE_URL + '/score?id=' + this.id
window.location.href = BASE_URL + "/score?id=" + this.id
},
viewAnswerSheet(){
window.location.href = BASE_URL + '/answerSheet?id=' + this.id
viewAnswerSheet() {
window.location.href = BASE_URL + "/answerSheet?id=" + this.id
}
},
async created() {
this.id = GetQueryString("id")
@@ -383,17 +367,15 @@ layout("/mobile/platform.html"){
}
})
window.addEventListener('pageshow', async e => {
window.addEventListener("pageshow", async (e) => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.id = GetQueryString("id")
await vue.getQuestionData()
await vue.checkUserFinishAnswer()
}
})
</script>
<!--#
}
#-->
#-->
@@ -54,7 +54,7 @@ layout("/mobile/platform.html"){
}
.middle-subject-topic {
background-color: #FFFFFF;
background-color: #ffffff;
margin-bottom: 1rem;
padding: 10px;
border-radius: 10px;
@@ -94,11 +94,10 @@ layout("/mobile/platform.html"){
line-height: 40px;
outline: none;
padding: 0 15px;
transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
width: 100%;
}
.middle-subject-topic-submit .u-btn {
width: 60%;
}
@@ -109,7 +108,7 @@ layout("/mobile/platform.html"){
right: 0;
height: 40px;
z-index: 999;
background-color: #FFF;
background-color: #fff;
box-shadow: 0 0 20px rgb(230, 230, 230);
border-radius: 20px 0 0 20px;
}
@@ -119,7 +118,7 @@ layout("/mobile/platform.html"){
width: 40px;
box-shadow: 0 0 10px #1678ff;
border-radius: 20px 0 0 20px;
background-color: #FFF;
background-color: #fff;
display: flex;
justify-content: center;
align-items: center;
@@ -133,7 +132,7 @@ layout("/mobile/platform.html"){
align-items: center;
box-shadow: 0 0 10px #1678ff;
border-radius: 20px 0 0 20px;
background-color: #FFF;
background-color: #fff;
}
.middle-subject-info-footer {
@@ -142,7 +141,7 @@ layout("/mobile/platform.html"){
left: 0;
right: 0;
max-height: 64px;
background-color: #FFF;
background-color: #fff;
box-shadow: 0 0 20px rgb(230, 230, 230);
z-index: 999;
padding: 10px 20px;
@@ -186,13 +185,11 @@ layout("/mobile/platform.html"){
.wsmPopup {
padding: 10px;
}
</style>
<div id="app" v-cloak>
<div class="middle-subject">
<van-nav-bar title="在线调查" left-arrow
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="在线调查" left-arrow @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="middle-subject-info">
<div class="middle-subject-info-scroll">
@@ -213,17 +210,19 @@ layout("/mobile/platform.html"){
<span>多选</span>
</div>
<div style="margin-bottom: 10px">
<span v-if="issue.iisbd" style="color: red;">*</span>
<span v-if="issue.iisbd" style="color: red">*</span>
<span class="middle-subject-topic-title">
{{ issueIndex + 1 }}.
{{ removeHTMLTag(issue.iname) }}
<span v-if="issue.iminselect">(最少选择:{{issue.iminselect}})</span>
<span v-if="issue.imaxselect">(最多选择:{{issue.imaxselect}})</span>
<div v-if="issue.its" class="middle-subject-topic-desc"
style="margin-left: 17px;font-size: 12px;font-weight: 500;">
{{ issue.its }}
</div>
</span>
{{ issueIndex + 1 }}. {{ removeHTMLTag(issue.iname) }}
<span v-if="issue.iminselect">(最少选择:{{issue.iminselect}})</span>
<span v-if="issue.imaxselect">(最多选择:{{issue.imaxselect}})</span>
<div
v-if="issue.its"
class="middle-subject-topic-desc"
style="margin-left: 17px; font-size: 12px; font-weight: 500"
>
{{ issue.its }}
</div>
</span>
</div>
<!-- 选择题 -->
@@ -231,16 +230,15 @@ layout("/mobile/platform.html"){
<!-- 单选题 -->
<van-radio-group v-if="issue.iisdx" v-model="issue.rwid" :disabled="replyFinish">
<div v-for="(wor,worIndex) in issue.wors" :key="wor.wid">
<van-radio :ref="wor.wid" :name="wor.wid">
{{ letterList[worIndex] }}.&ensp;{{ wor.wtxt }}
</van-radio>
<van-radio :ref="wor.wid" :name="wor.wid">{{ letterList[worIndex] }}.&ensp;{{ wor.wtxt }}</van-radio>
<div class="middle-subject-topic-desc">
<van-row gutter="16">
<van-col span="8" v-if="wor.wimg">
<image style="height: 80px;width: 80px"
:src="'/file_server/fileStreamPreview?id='+wor.wimg"
mode="aspectFit">
</image>
<image
style="height: 80px; width: 80px"
:src="'/file_server/fileStreamPreview?id='+wor.wimg"
mode="aspectFit"
></image>
</van-col>
<van-col span="16" v-if="wor.wsm">
<div class="wsm" v-html="wor.wsm" @click="openWsm(wor.wsm)"></div>
@@ -251,9 +249,12 @@ layout("/mobile/platform.html"){
</van-radio-group>
<!-- 多选题 -->
<van-checkbox-group v-else-if="!issue.iisdx" v-model="issue.rwid"
:disabled="replyFinish"
:max="issue.imaxselect ? issue.imaxselect:0">
<van-checkbox-group
v-else-if="!issue.iisdx"
v-model="issue.rwid"
:disabled="replyFinish"
:max="issue.imaxselect ? issue.imaxselect:0"
>
<div v-for="(wor,worIndex) in issue.wors" :key="worIndex">
<van-checkbox :ref="wor.wid" :name="wor.wid" shape="square">
{{ letterList[worIndex] }}.&ensp;{{ wor.wtxt }}
@@ -261,10 +262,11 @@ layout("/mobile/platform.html"){
<div class="middle-subject-topic-desc">
<van-row gutter="16">
<van-col span="8" v-if="wor.wimg">
<image style="height: 80px;width: 80px"
:src="'/file_server/fileStreamPreview?id='+wor.wimg"
mode="aspectFit">
</image>
<image
style="height: 80px; width: 80px"
:src="'/file_server/fileStreamPreview?id='+wor.wimg"
mode="aspectFit"
></image>
</van-col>
<van-col span="16" v-if="wor.wsm">
<div class="wsm" v-html=" wor.wsm" @click="openWsm(wor.wsm)"></div>
@@ -277,11 +279,17 @@ layout("/mobile/platform.html"){
<!-- 填空题 -->
<template v-if="issue.itx===2">
<van-field v-model="issue.rval" type="text" border
class="itx_field"
cursor-spacing="100"
:show-confirmbar="false"
:disabled="replyFinish" :auto-height="true" maxlength="2000"></van-field>
<van-field
v-model="issue.rval"
type="text"
border
class="itx_field"
cursor-spacing="100"
:show-confirmbar="false"
:disabled="replyFinish"
:auto-height="true"
maxlength="2000"
></van-field>
</template>
</div>
</div>
@@ -290,13 +298,8 @@ layout("/mobile/platform.html"){
<div class="middle-subject-info-footer">
<div class="middle-subject-info-footer-save">
<van-button size="medium" type="primary" @click="saveAnswer"
:disabled="replyFinish">保存
</van-button>
<van-button size="medium" type="info" :disabled="replyFinish"
@click="submitAnswer">
提交
</van-button>
<van-button size="medium" type="primary" @click="saveAnswer" :disabled="replyFinish">保存</van-button>
<van-button size="medium" type="info" :disabled="replyFinish" @click="submitAnswer">提交</van-button>
</div>
</div>
</div>
@@ -309,7 +312,7 @@ layout("/mobile/platform.html"){
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -324,12 +327,12 @@ layout("/mobile/platform.html"){
computed: {
letterList() {
const alphabet = Array.from(new Array(26), (ele, index) => {
return String.fromCharCode(65 + index);
return String.fromCharCode(65 + index)
})
return alphabet
},
replyFinish() {
return this.replyInfo.some(v => !v.save)
return this.replyInfo.some((v) => !v.save)
}
},
methods: {
@@ -339,75 +342,73 @@ layout("/mobile/platform.html"){
},
async getQuestionData() {
const resp = await $.get('/mobile/question/h5/questionInfo/' + this.id)
const resp = await $.get("/mobile/question/h5/questionInfo/" + this.id)
this.questionData = resp.data
this.issueList = this.questionData && this.questionData.issues
},
saveAnswer() {
const formData = this.formatFormData()
formData.forEach(v => v.save = true)
this.$modal.loading('保存中')
$.post('/mobile/question/h5/saveAnswer', {repliesArray: JSON.stringify(formData)}).then(res => {
formData.forEach((v) => (v.save = true))
this.$modal.loading("保存中")
$.post("/mobile/question/h5/saveAnswer", { repliesArray: JSON.stringify(formData) }).then((res) => {
this.$modal.closeLoading()
if (res.code === 0) {
this.$modal.msg('保存成功')
this.$modal.msg("保存成功")
this.getReply()
} else {
this.$modal.msg('保存失败')
this.$modal.msg("保存失败")
}
})
},
submitAnswer() {
const formData = this.formatFormData()
formData.forEach(v => v.save = false)
this.$modal.confirm('您确定要提交吗?提交后不能修改!').then(() => {
this.$modal.loading('提交中')
$.post('/mobile/question/h5/saveAnswer', {repliesArray: JSON.stringify(formData)}).then(res => {
formData.forEach((v) => (v.save = false))
this.$modal.confirm("您确定要提交吗?提交后不能修改!").then(() => {
this.$modal.loading("提交中")
$.post("/mobile/question/h5/saveAnswer", { repliesArray: JSON.stringify(formData) }).then((res) => {
this.$modal.closeLoading()
if (res.code === 0) {
this.$modal.msg('提交成功')
this.$modal.msg("提交成功")
this.getReply()
} else {
this.$modal.msg('提交失败')
this.$modal.msg("提交失败")
}
})
})
},
validAnswer() {
},
validAnswer() {},
//格式化提交数据
formatFormData() {
const formData = []
this.issueList.forEach(v => {
this.issueList.forEach((v) => {
if (v.itx === 1 && v.iisdx) {
//单选
if (v.rwid) {
formData.push({
"rwid": v.rwid,
"qid": this.questionData.qid,
"issueId": v.iid
rwid: v.rwid,
qid: this.questionData.qid,
issueId: v.iid
})
}
} else if (v.itx === 1 && !v.iisdx) {
//多选
if (v.rwid) {
v.rwid.forEach(r => {
v.rwid.forEach((r) => {
formData.push({
"rwid": r,
"qid": this.questionData.qid,
"issueId": v.iid
rwid: r,
qid: this.questionData.qid,
issueId: v.iid
})
})
}
} else if (v.itx === 2) {
if (v.rval) {
formData.push({
"rval": v.rval,
"qid": this.questionData.qid,
"issueId": v.iid
rval: v.rval,
qid: this.questionData.qid,
issueId: v.iid
})
}
}
@@ -416,36 +417,36 @@ layout("/mobile/platform.html"){
},
//获取回答信息并赋值
async getReply() {
const resp = await $.get('/mobile/question/h5/answerInfo/' + this.id)
const resp = await $.get("/mobile/question/h5/answerInfo/" + this.id)
this.replyInfo = resp.data
this.issueList.forEach((issue, issueIndex) => {
if (issue.itx === 1 && issue.iisdx) {
//单选
const rw = this.replyInfo.find(answer => answer.issueId === issue.iid)
this.$set(this.issueList[issueIndex], 'rwid', rw ? rw.rwid : null)
const rw = this.replyInfo.find((answer) => answer.issueId === issue.iid)
this.$set(this.issueList[issueIndex], "rwid", rw ? rw.rwid : null)
} else if (issue.itx === 1 && !issue.iisdx) {
//多选
const rws = this.replyInfo.filter(answer => answer.issueId === issue.iid).map(v => v.rwid)
this.$set(this.issueList[issueIndex], 'rwid', rws ? rws : [])
const rws = this.replyInfo.filter((answer) => answer.issueId === issue.iid).map((v) => v.rwid)
this.$set(this.issueList[issueIndex], "rwid", rws ? rws : [])
} else if (issue.itx === 2) {
//填空题
const rw = this.replyInfo.find(answer => answer.issueId === issue.iid)
this.$set(this.issueList[issueIndex], 'rval', rw ? rw.rval : null)
const rw = this.replyInfo.find((answer) => answer.issueId === issue.iid)
this.$set(this.issueList[issueIndex], "rval", rw ? rw.rval : null)
}
})
},
defaultChecked() {
const itx = this.issueList[0]['itx']
const iisdx = this.issueList[0]['iisdx']
const itx = this.issueList[0]["itx"]
const iisdx = this.issueList[0]["iisdx"]
//判断用户是否选过 并且是选择题才可以
if (this.replyInfo.length === 0 && itx === 1) {
if (iisdx) {
const defaultOption = this.issueList[0]['wors'].find(v => v.wismr === true)
this.$set(this.issueList[0], 'rwid', defaultOption ? defaultOption.rwid : null)
const defaultOption = this.issueList[0]["wors"].find((v) => v.wismr === true)
this.$set(this.issueList[0], "rwid", defaultOption ? defaultOption.rwid : null)
} else {
const defaultOptionIds = this.issueList[0]['wors'].filter(v => v.wismr === true).map(v => v.wid)
this.$set(this.issueList[0], 'rwid', defaultOptionIds ? defaultOptionIds : [])
const defaultOptionIds = this.issueList[0]["wors"].filter((v) => v.wismr === true).map((v) => v.wid)
this.$set(this.issueList[0], "rwid", defaultOptionIds ? defaultOptionIds : [])
}
}
}
@@ -455,7 +456,7 @@ layout("/mobile/platform.html"){
await this.getQuestionData()
await this.getReply()
// await this.defaultChecked()
},
}
})
</script>
@@ -8,7 +8,7 @@ layout("/mobile/platform.html"){
.cell-card {
padding: 20px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
width: 90%;
margin: 20px auto;
border-radius: 20px;
@@ -19,34 +19,25 @@ layout("/mobile/platform.html"){
text-overflow: ellipsis;
overflow: hidden;
}
</style>
<div id="app" v-cloak>
<van-nav-bar title="问卷调查" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="问卷调查" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div>
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
<van-list v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<van-cell v-for="item in tableData" class="cell-card" @click="openView(item.qid)">
<div class="text-overflow" style="font-weight: bold">{{item.qtitle}}</div>
<div style="font-size: 12px" v-html="item.qsm"></div>
</van-cell>
</van-list>
</van-pull-refresh>
<van-empty
v-if="tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</div>
<script>
new Vue({
el: '#app',
el: "#app",
data() {
return {
list: [],
@@ -59,8 +50,8 @@ layout("/mobile/platform.html"){
totalCount: 0
},
tableData: [],
appid: 'wx9fd2b07ea126f9f6',
redirect_uri: location.protocol + "//" + location.host,
appid: "wx9fd2b07ea126f9f6",
redirect_uri: location.protocol + "//" + location.host
}
},
methods: {
@@ -75,11 +66,10 @@ layout("/mobile/platform.html"){
setTimeout(() => {
this.refreshing = false
}, 1000)
},
async onLoad() {
this.loading = true
$.post('/mobile/question/list/pageData', this.pageForm).then(res => {
$.post("/mobile/question/list/pageData", this.pageForm).then((res) => {
this.loading = false
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
@@ -92,14 +82,12 @@ layout("/mobile/platform.html"){
})
},
openView(id) {
window.location.href = this.redirect_uri + '/platform/zgfw/mobile/questionnaire?qid=' + id
window.location.href = this.redirect_uri + "/platform/zgfw/mobile/questionnaire?qid=" + id
}
},
created() {
}
created() {}
})
</script>
<!--#
}
#-->
#-->
@@ -44,7 +44,6 @@ layout("/mobile/platform.html"){
overflow: hidden;
background-color: #fff;
position: relative;
}
.quizzes-item-info {
@@ -86,14 +85,13 @@ layout("/mobile/platform.html"){
width: 100%;
background: transparent;
}
.winPopup img{
.winPopup img {
transform: translateY(-50%);
position: absolute;
top: 50%;
}
.winPopup .van-popup__close-icon{
.winPopup .van-popup__close-icon {
}
.iconDiv {
@@ -107,19 +105,17 @@ layout("/mobile/platform.html"){
width: 100%;
}
.win_tag{
.win_tag {
position: relative;
top: 16px;
left: 5px;
}
</style>
<div id="app" v-cloak>
<div class="container">
<van-sticky>
<van-nav-bar title="列表" left-arrow
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="列表" left-arrow @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
</van-sticky>
<van-tabs v-model="queryForm.status" @change="doSearch">
@@ -133,24 +129,27 @@ layout("/mobile/platform.html"){
<div class="quizzes-item-v">
<div class="quizzes-item-info">
<div class="quizzes-item-info-icon">
<image src="/assets/mobile/svg/question/quizzes2.svg"/>
<image src="/assets/mobile/svg/question/quizzes2.svg" />
</div>
<div class="quizzes-item-info-v">
<div class="quizzes-item-info-title">{{ item.qtitle }}</div>
<div class="quizzes-item-info-right">
<span class="quizzes-item-info-tip">创建时间:</span>
<span class="quizzes-item-info-text">
{{ moment(item.createTime).format('YYYY年MM月DD日') }}
</span>
<span class="quizzes-item-info-text">{{ moment(item.createTime).format('YYYY年MM月DD日') }}</span>
</div>
<div class="quizzes-item-info-right" v-if="item.qlx!==4">
<span class="quizzes-item-info-tip">题目数量:</span>
<span class="quizzes-item-info-text">
{{item.ctMode === 1 ? item.topicTotal : item.ctNum }}
</span>
<span class="quizzes-item-info-text" style="position: absolute;right: 0" >
<van-tag @click.stop="showWinInfo(item)" type="primary" class="win_tag" v-if="item.qlx===2 && item.isRaffle && moment(item.startTime).diff(moment(new Date().getTime()),'days') < 0">获奖信息</van-tag>
<!-- v-if="moment(item.startTime).diff(moment(new Date().getTime()),'days') < 0"-->
<span class="quizzes-item-info-text">{{item.ctMode === 1 ? item.topicTotal : item.ctNum }}</span>
<span class="quizzes-item-info-text" style="position: absolute; right: 0">
<van-tag
@click.stop="showWinInfo(item)"
type="primary"
class="win_tag"
v-if="item.qlx===2 && item.isRaffle && moment(item.startTime).diff(moment(new Date().getTime()),'days') < 0"
>
获奖信息
</van-tag>
<!-- v-if="moment(item.startTime).diff(moment(new Date().getTime()),'days') < 0"-->
</span>
</div>
</div>
@@ -159,18 +158,19 @@ layout("/mobile/platform.html"){
</div>
</div>
<van-empty v-if="finished && !tableData.length" text="暂无问卷" icon-size="320"
src="/static/img/notData.svg">
</van-empty>
<van-empty v-if="finished && !tableData.length" text="暂无问卷" icon-size="320" src="/static/img/notData.svg"></van-empty>
</div>
<van-popup v-model="winPopupShow" class="winPopup"
:style="{ height: '100%' }"
>
<div style="display: flex;align-items: center">
<img v-if="isWin" width="100%" height="60%" src="/assets/mobile/img/question/win.png"/>
<!-- <img v-if="!isWin" width="100%" height="50%" src="/assets/mobile/img/question/noWin1.png"/>-->
<img v-if="!isWin" width="100%" height="50%" src="https://img1.baidu.com/it/u=3192248910,26901819&fm=253&fmt=auto&app=138&f=JPEG?w=403&h=500"/>
<van-popup v-model="winPopupShow" class="winPopup" :style="{ height: '100%' }">
<div style="display: flex; align-items: center">
<img v-if="isWin" width="100%" height="60%" src="/assets/mobile/img/question/win.png" />
<!-- <img v-if="!isWin" width="100%" height="50%" src="/assets/mobile/img/question/noWin1.png"/>-->
<img
v-if="!isWin"
width="100%"
height="50%"
src="https://img1.baidu.com/it/u=3192248910,26901819&fm=253&fmt=auto&app=138&f=JPEG?w=403&h=500"
/>
</div>
<div class="iconDiv">
<div v-if="isWin" style="font-size: 14px;!important;">恭喜您中奖了,本次活动中奖机会只有一次喔!</div>
@@ -182,19 +182,19 @@ layout("/mobile/platform.html"){
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
questionStatus: '1',
questionStatus: "1",
scrollTop: 0,
statusBarHeight: 0,
pageLoading: false,
queryForm: {
status: '1'
status: "1"
},
winPopupShow:false,
isWin:false
winPopupShow: false,
isWin: false
}
},
created() {
@@ -202,10 +202,10 @@ layout("/mobile/platform.html"){
this.doSearch()
},
methods: {
async showWinInfo({qid}) {
const {data} = await $.post('/mobile/question/h5/winInfo', {questionId: qid})
async showWinInfo({ qid }) {
const { data } = await $.post("/mobile/question/h5/winInfo", { questionId: qid })
const userId = "${@shiro.getPrincipalProperty('id')}"
const user = data.find(o => o.id === userId)
const user = data.find((o) => o.id === userId)
this.isWin = user !== undefined
this.winList = data
console.log(this.isWin)
@@ -221,7 +221,7 @@ layout("/mobile/platform.html"){
this.$modal.loading()
this.tableLoading = true
$.post('/mobile/question/h5/pageData', {...this.pageForm, ...this.queryForm}).then(res => {
$.post("/mobile/question/h5/pageData", { ...this.pageForm, ...this.queryForm }).then((res) => {
this.tableData = this.tableData.concat(res.data.list)
this.pageForm.totalCount = res.data.totalCount
if (this.tableData.length === this.pageForm.totalCount) {
@@ -233,7 +233,6 @@ layout("/mobile/platform.html"){
this.$modal.closeLoading()
})
// $.post('/activity/question/h5/pageData', this.pageForm, {
// params: this.queryForm
// }).then(res => {
@@ -254,56 +253,55 @@ layout("/mobile/platform.html"){
},
tabChange(index) {
this.page.current = index;
this.page.current = index
// this.refresh();
},
lower(e) {
if (!this.finished) this.loadData();
if (!this.finished) this.loadData()
},
async hasPermissionByIssue(groupId) {
const resp = await this.$http.get('/platform/question/applets/list/hasPermission', {
params: {groupId: groupId}
const resp = await this.$http.get("/platform/question/applets/list/hasPermission", {
params: { groupId: groupId }
})
return resp
},
async openAnswer(item) {
const {qid, qlx, qflag, activityUserScopeId} = item
const { qid, qlx, qflag, activityUserScopeId } = item
if (qflag !== 2) {
this.$modal.msg('该问卷未发布')
this.$modal.msg("该问卷未发布")
return
}
const now = new Date().getTime()
if (now < item.startTime || now > item.endTime) {
this.$modal.msg('不在开启时间内')
this.$modal.msg("不在开启时间内")
return
}
if (activityUserScopeId) {
const resp = await $.get('/mobile/question/h5/checkPermission/' + activityUserScopeId)
const resp = await $.get("/mobile/question/h5/checkPermission/" + activityUserScopeId)
if (!resp.data) {
this.$modal.msg('您无权限参加')
this.$modal.msg("您无权限参加")
return
}
}
if (qlx === 1) {
//调查
location.href = '/mobile/question/h5/poll/index?id=' + qid
location.href = "/mobile/question/h5/poll/index?id=" + qid
} else if (qlx === 2) {
//答题
location.href = '/mobile/question/h5/answer/index_ctgu?id=' + qid
location.href = "/mobile/question/h5/answer/index_ctgu?id=" + qid
} else if (qlx === 3) {
//购物
location.href = '/mobile/question/h5/shop/index?id=' + qid
location.href = "/mobile/question/h5/shop/index?id=" + qid
} else if (qlx === 4) {
//蛋糕卡
location.href = '/mobile/question/h5/cake/index?id=' + qid
location.href = "/mobile/question/h5/cake/index?id=" + qid
}
// if (qlx === 4) {
// if (item.startTime > new Date().getTime() || item.endTime < new Date().getTime()) {
// uni.showToast({
@@ -338,10 +336,10 @@ layout("/mobile/platform.html"){
// });
// }
}
},
}
})
</script>
<!--#
}
#-->
#-->
@@ -54,7 +54,7 @@ layout("/mobile/platform.html"){
}
.middle-subject-topic {
background-color: #FFFFFF;
background-color: #ffffff;
margin-bottom: 1rem;
padding: 20px;
border-radius: 10px;
@@ -94,11 +94,10 @@ layout("/mobile/platform.html"){
line-height: 40px;
outline: none;
padding: 0 15px;
transition: border-color .2s cubic-bezier(.645, .045, .355, 1);
transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
width: 100%;
}
.middle-subject-topic-submit .u-btn {
width: 60%;
}
@@ -109,7 +108,7 @@ layout("/mobile/platform.html"){
right: 0;
height: 40px;
z-index: 999;
background-color: #FFF;
background-color: #fff;
box-shadow: 0 0 20px rgb(230, 230, 230);
border-radius: 20px 0 0 20px;
}
@@ -119,7 +118,7 @@ layout("/mobile/platform.html"){
width: 40px;
box-shadow: 0 0 10px #1678ff;
border-radius: 20px 0 0 20px;
background-color: #FFF;
background-color: #fff;
display: flex;
justify-content: center;
align-items: center;
@@ -133,7 +132,7 @@ layout("/mobile/platform.html"){
align-items: center;
box-shadow: 0 0 10px #1678ff;
border-radius: 20px 0 0 20px;
background-color: #FFF;
background-color: #fff;
}
.middle-subject-info-footer {
@@ -142,7 +141,7 @@ layout("/mobile/platform.html"){
left: 0;
right: 0;
max-height: 64px;
background-color: #FFF;
background-color: #fff;
box-shadow: 0 0 20px rgb(230, 230, 230);
z-index: 999;
padding: 10px 20px;
@@ -170,8 +169,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<div class="middle-subject">
<van-nav-bar title="在线调查" left-arrow
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="在线调查" left-arrow @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="middle-subject-info">
<div class="middle-subject-info-scroll">
@@ -192,17 +190,18 @@ layout("/mobile/platform.html"){
<span>多选</span>
</div>
<div style="margin-bottom: 10px">
<span v-if="issue.iisbd" style="color: red;">*</span>
<span v-if="issue.iisbd" style="color: red">*</span>
<span class="middle-subject-topic-title">
{{ issueIndex + 1 }}.
{{ removeHTMLTag(issue.iname) }}
<span v-if="issue.iminselect">(最少选择:{{issue.iminselect}})</span>
<span v-if="issue.imaxselect">(最多选择:{{issue.imaxselect}})</span>
<div v-if="issue.its" class="middle-subject-topic-desc"
v-html="issue.its"
style="margin-left: 17px;font-size: 12px;font-weight: 500;">
</div>
</span>
{{ issueIndex + 1 }}. {{ removeHTMLTag(issue.iname) }}
<span v-if="issue.iminselect">(最少选择:{{issue.iminselect}})</span>
<span v-if="issue.imaxselect">(最多选择:{{issue.imaxselect}})</span>
<div
v-if="issue.its"
class="middle-subject-topic-desc"
v-html="issue.its"
style="margin-left: 17px; font-size: 12px; font-weight: 500"
></div>
</span>
</div>
<!-- 选择题 -->
@@ -210,28 +209,25 @@ layout("/mobile/platform.html"){
<!-- 单选题 -->
<van-radio-group v-if="issue.iisdx" v-model="issue.rwid" :disabled="replyFinish">
<div v-for="(wor,worIndex) in issue.wors" :key="wor.wid">
<van-radio :ref="wor.wid" :name="wor.wid">
{{ letterList[worIndex] }}.&ensp;{{ wor.wtxt }}
</van-radio>
<van-radio :ref="wor.wid" :name="wor.wid">{{ letterList[worIndex] }}.&ensp;{{ wor.wtxt }}</van-radio>
<div class="middle-subject-topic-desc">
<van-row gutter="16">
<van-col span="8" v-if="wor.wimg">
<image style="height: 80px;width: 80px" :src="wor.wimg"
mode="aspectFit">
</image>
</van-col>
<van-col span="16" v-if="wor.wsm">
{{ wor.wsm }}
<image style="height: 80px; width: 80px" :src="wor.wimg" mode="aspectFit"></image>
</van-col>
<van-col span="16" v-if="wor.wsm">{{ wor.wsm }}</van-col>
</van-row>
</div>
</div>
</van-radio-group>
<!-- 多选题 -->
<van-checkbox-group v-else-if="!issue.iisdx" v-model="issue.rwid"
:disabled="replyFinish"
:max="issue.imaxselect ? issue.imaxselect:0">
<van-checkbox-group
v-else-if="!issue.iisdx"
v-model="issue.rwid"
:disabled="replyFinish"
:max="issue.imaxselect ? issue.imaxselect:0"
>
<div v-for="(wor,worIndex) in issue.wors" :key="worIndex">
<van-checkbox :ref="wor.wid" :name="wor.wid" shape="square">
{{ letterList[worIndex] }}.&ensp;{{ wor.wtxt }}
@@ -239,13 +235,9 @@ layout("/mobile/platform.html"){
<div class="middle-subject-topic-desc">
<van-row gutter="16">
<van-col span="8" v-if="wor.wimg">
<image style="height: 80px;width: 80px" :src="wor.wimg"
mode="aspectFit">
</image>
</van-col>
<van-col span="16" v-if="wor.wsm">
{{ wor.wsm }}
<image style="height: 80px; width: 80px" :src="wor.wimg" mode="aspectFit"></image>
</van-col>
<van-col span="16" v-if="wor.wsm">{{ wor.wsm }}</van-col>
</van-row>
</div>
</div>
@@ -254,11 +246,17 @@ layout("/mobile/platform.html"){
<!-- 填空题 -->
<template v-if="issue.itx===2">
<van-field v-model="issue.rval" type="text" border
class="itx_field"
cursor-spacing="100"
:show-confirmbar="false"
:disabled="replyFinish" :auto-height="true" maxlength="2000"/>
<van-field
v-model="issue.rval"
type="text"
border
class="itx_field"
cursor-spacing="100"
:show-confirmbar="false"
:disabled="replyFinish"
:auto-height="true"
maxlength="2000"
/>
</template>
</div>
</div>
@@ -267,13 +265,8 @@ layout("/mobile/platform.html"){
<div class="middle-subject-info-footer">
<div class="middle-subject-info-footer-save">
<van-button size="medium" type="primary" @click="saveAnswer"
:disabled="replyFinish">保存
</van-button>
<van-button size="medium" type="info" :disabled="replyFinish"
@click="submitAnswer">
提交
</van-button>
<van-button size="medium" type="primary" @click="saveAnswer" :disabled="replyFinish">保存</van-button>
<van-button size="medium" type="info" :disabled="replyFinish" @click="submitAnswer">提交</van-button>
</div>
</div>
</div>
@@ -282,7 +275,7 @@ layout("/mobile/platform.html"){
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -295,87 +288,85 @@ layout("/mobile/platform.html"){
computed: {
letterList() {
const alphabet = Array.from(new Array(26), (ele, index) => {
return String.fromCharCode(65 + index);
return String.fromCharCode(65 + index)
})
return alphabet
},
replyFinish() {
return this.replyInfo.some(v => !v.save)
return this.replyInfo.some((v) => !v.save)
}
},
methods: {
async getQuestionData() {
const resp = await $.get('/mobile/question/h5/questionInfo/' + this.id)
const resp = await $.get("/mobile/question/h5/questionInfo/" + this.id)
this.questionData = resp.data
this.issueList = this.questionData && this.questionData.issues
},
saveAnswer() {
const formData = this.formatFormData()
formData.forEach(v => v.save = true)
this.$modal.loading('保存中')
$.post('/mobile/question/h5/saveAnswer', {repliesArray: JSON.stringify(formData)}).then(res => {
formData.forEach((v) => (v.save = true))
this.$modal.loading("保存中")
$.post("/mobile/question/h5/saveAnswer", { repliesArray: JSON.stringify(formData) }).then((res) => {
this.$modal.closeLoading()
if (res.code === 0) {
this.$modal.msg('保存成功')
this.$modal.msg("保存成功")
this.getReply()
} else {
this.$modal.msg('保存失败')
this.$modal.msg("保存失败")
}
})
},
submitAnswer() {
const v1 = this.issueList.some(v => v.itx === 1 && v.iisbd && v.rwid == null)
const v1 = this.issueList.some((v) => v.itx === 1 && v.iisbd && v.rwid == null)
if (v1) {
this.$modal.msg('请选择后再提交')
this.$modal.msg("请选择后再提交")
return
}
const v2 = this.issueList.some(v => v.itx === 2 && v.iisbd && (v.rval == null || v.rval === ''))
const v2 = this.issueList.some((v) => v.itx === 2 && v.iisbd && (v.rval == null || v.rval === ""))
if (v2) {
this.$modal.msg('请填写后再提交')
this.$modal.msg("请填写后再提交")
return
}
const formData = this.formatFormData()
formData.forEach(v => v.save = false)
this.$modal.confirm('您确定要提交吗?提交后不能修改!').then(() => {
this.$modal.loading('提交中')
$.post('/mobile/question/h5/saveAnswer', {repliesArray: JSON.stringify(formData)}).then(res => {
formData.forEach((v) => (v.save = false))
this.$modal.confirm("您确定要提交吗?提交后不能修改!").then(() => {
this.$modal.loading("提交中")
$.post("/mobile/question/h5/saveAnswer", { repliesArray: JSON.stringify(formData) }).then((res) => {
this.$modal.closeLoading()
if (res.code === 0) {
this.$modal.msg('提交成功')
this.$modal.msg("提交成功")
this.getReply()
} else {
this.$modal.msg('提交失败')
this.$modal.msg("提交失败")
}
})
})
},
validAnswer() {
},
validAnswer() {},
//格式化提交数据
formatFormData() {
const formData = []
this.issueList.forEach(v => {
this.issueList.forEach((v) => {
if (v.itx === 1 && v.iisdx) {
//单选
if (v.rwid) {
formData.push({
"rwid": v.rwid,
"qid": this.questionData.qid,
"issueId": v.iid
rwid: v.rwid,
qid: this.questionData.qid,
issueId: v.iid
})
}
} else if (v.itx === 1 && !v.iisdx) {
//多选
if (v.rwid) {
v.rwid.forEach(r => {
v.rwid.forEach((r) => {
formData.push({
"rwid": r,
"qid": this.questionData.qid,
"issueId": v.iid
rwid: r,
qid: this.questionData.qid,
issueId: v.iid
})
})
}
@@ -383,10 +374,10 @@ layout("/mobile/platform.html"){
if (v.rval) {
debugger
formData.push({
"rwid": v.wors[0].wid,
"rval": v.rval,
"qid": this.questionData.qid,
"issueId": v.iid
rwid: v.wors[0].wid,
rval: v.rval,
qid: this.questionData.qid,
issueId: v.iid
})
}
}
@@ -395,21 +386,21 @@ layout("/mobile/platform.html"){
},
//获取回答信息并赋值
async getReply() {
const resp = await $.get('/mobile/question/h5/answerInfo/' + this.id)
const resp = await $.get("/mobile/question/h5/answerInfo/" + this.id)
this.replyInfo = resp.data
this.issueList.forEach((issue, issueIndex) => {
if (issue.itx === 1 && issue.iisdx) {
//单选
const rw = this.replyInfo.find(answer => answer.issueId === issue.iid)
this.$set(this.issueList[issueIndex], 'rwid', rw ? rw.rwid : null)
const rw = this.replyInfo.find((answer) => answer.issueId === issue.iid)
this.$set(this.issueList[issueIndex], "rwid", rw ? rw.rwid : null)
} else if (issue.itx === 1 && !issue.iisdx) {
//多选
const rws = this.replyInfo.filter(answer => answer.issueId === issue.iid).map(v => v.rwid)
this.$set(this.issueList[issueIndex], 'rwid', rws ? rws : [])
const rws = this.replyInfo.filter((answer) => answer.issueId === issue.iid).map((v) => v.rwid)
this.$set(this.issueList[issueIndex], "rwid", rws ? rws : [])
} else if (issue.itx === 2) {
//填空题
const rw = this.replyInfo.find(answer => answer.issueId === issue.iid)
this.$set(this.issueList[issueIndex], 'rval', rw ? rw.rval : null)
const rw = this.replyInfo.find((answer) => answer.issueId === issue.iid)
this.$set(this.issueList[issueIndex], "rval", rw ? rw.rval : null)
}
})
}
@@ -418,7 +409,7 @@ layout("/mobile/platform.html"){
this.id = GetQueryString("id")
await this.getQuestionData()
await this.getReply()
},
}
})
</script>
@@ -13,7 +13,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="我的登记" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="我的登记" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div style="margin: 20px auto 0">
<van-list v-model="mLoading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
@@ -1,12 +1,10 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
</style>
<style></style>
<div id="app" v-cloak>
<van-nav-bar title="登记信息" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="登记信息" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div>
<rxdj-mobile-info :dj_id="dj_id" title="登记信息"></rxdj-mobile-info>
@@ -15,24 +13,20 @@ layout("/mobile/platform.html"){
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
dj_id: GetQueryString('dj_id'),
dj_id: GetQueryString("dj_id")
}
},
components: {
'rxdj-mobile-info': httpVueLoader('/components/zgfw/rxdj/mobileRxdj.vue?v=' + new Date().getTime()),
"rxdj-mobile-info": httpVueLoader("/components/zgfw/rxdj/mobileRxdj.vue?v=" + new Date().getTime())
},
methods: {
},
async created() {
}
methods: {},
async created() {}
})
</script>
<!--#
}
#-->
#-->
@@ -5,27 +5,18 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="登记列表"
left-arrow
placeholder
fixed
@click-left="history.back()"
></van-nav-bar>
<van-nav-bar title="登记列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div style="margin: 20px auto 0">
<van-list
v-model="mLoading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="mLoading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<div v-for="o in tableData" class="list-card" @click="openView(o)">
<van-cell-group inset>
<van-cell :border="false" title="年度">{{o.bmyear}}</van-cell>
<van-cell title="登记类型" :border="false">
<div style="display: flex;align-items: center">
<span :style="{color:themeColor}" style="font-size: 16px"
class="van-ellipsis">{{o.bmlx=='1'?'幼升小':o.bmlx=='2'?'小学':'初升高'}}</span>
<div style="display: flex; align-items: center">
<span :style="{color:themeColor}" style="font-size: 16px" class="van-ellipsis">
{{o.bmlx=='1'?'幼升小':o.bmlx=='2'?'小学':'初升高'}}
</span>
</div>
</van-cell>
@@ -34,12 +25,7 @@ layout("/mobile/platform.html"){
</van-cell-group>
</div>
</van-list>
<van-empty
v-if="mLoading==false&&tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<div>
@@ -48,12 +34,11 @@ layout("/mobile/platform.html"){
<van-tabbar-item icon="manager-o" replace url="/platform/zgfw/mobile/rxdj/apply">我的</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
let vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -63,7 +48,7 @@ layout("/mobile/platform.html"){
methods: {
async onLoad() {
this.mLoading = true
$.post('/mobile/rxdj/apply/pageData', this.pageForm).then(res => {
$.post("/mobile/rxdj/apply/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -76,30 +61,29 @@ layout("/mobile/platform.html"){
})
},
async openView(o) {
const {bmlx, bmyear, bmkssj, bmjssj} = o
const { bmlx, bmyear, bmkssj, bmjssj } = o
const isExist = await getScopeUser(o.activityGroupId)
if (!isExist) {
vant.Dialog.alert({
title: '温馨提示',
title: "温馨提示",
message: "您不在报名范围中",
confirmButtonColor: '#1867b0'
confirmButtonColor: "#1867b0"
})
return
}
if (moment().format("YYYY-MM-DD") < bmkssj) {
vant.Toast('报名暂未开始!')
vant.Toast("报名暂未开始!")
return
} else if (moment().format("YYYY-MM-DD") > bmjssj) {
vant.Toast('报名已结束!')
vant.Toast("报名已结束!")
return
}
window.location.href = '/platform/zgfw/mobile/rxdj/psms?client=mobile&dj_djlx=' + bmlx
window.location.href = "/platform/zgfw/mobile/rxdj/psms?client=mobile&dj_djlx=" + bmlx
}
},
async created() {
}
async created() {}
})
window.addEventListener('pageshow', e => {
window.addEventListener("pageshow", (e) => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.tableData = []
vue.onLoad()
@@ -107,7 +91,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
@@ -5,7 +5,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="我的审核" left-arrow placeholder fixed @click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="我的审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="RGB(8,23,118)">
<van-dropdown-item v-model="pageForm.year" @change="yearChange" :options="yearList"></van-dropdown-item>
@@ -3,113 +3,95 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar @click-left="history.back()" title="校工会审核" fixed placeholder left-arrow></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" title="校工会审核" fixed placeholder left-arrow></van-nav-bar>
<rxdj-mobile-info :dj_id="dj_id" title="校工会审核" :handle="handle">
<template #handle>
<div class="handle">
<van-form>
<van-field
readonly
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" name="username" label="审核人员"></van-field>
<van-field v-model="formData.auditTime" label="审核时间" readonly></van-field>
<van-field v-model="formData.dj_xghshyj"
required
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
<van-field
v-model="formData.dj_xghshyj"
required
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
></van-field>
</van-form>
<div style="display: flex;justify-content: space-around;padding: 5px 0 20px 0;">
<van-button type="danger" plain style="flex: 1;margin: 0 10px 0 10px"
@click="doHandle(5215)">拒绝
</van-button>
<van-button color="RGB(8,23,118)" plain style="flex: 1;margin: 0 10px 0 10px"
@click="doHandle(5218)">
退回
</van-button>
<van-button color="RGB(8,23,118)" style="flex: 1;margin: 0 10px 0 10px"
@click="doHandle(5300)">通过
</van-button>
<div style="display: flex; justify-content: space-around; padding: 5px 0 20px 0">
<van-button type="danger" plain style="flex: 1; margin: 0 10px 0 10px" @click="doHandle(5215)">拒绝</van-button>
<van-button color="RGB(8,23,118)" plain style="flex: 1; margin: 0 10px 0 10px" @click="doHandle(5218)">退回</van-button>
<van-button color="RGB(8,23,118)" style="flex: 1; margin: 0 10px 0 10px" @click="doHandle(5300)">通过</van-button>
</div>
</div>
</template>
</rxdj-mobile-info>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
data() {
return {
formData: {},
dj_id: GetQueryString('dj_id'),
handle: true,
dj_id: GetQueryString("dj_id"),
handle: true
}
},
components: {
'rxdj-mobile-info': httpVueLoader('/components/zgfw/rxdj/mobileRxdj.vue?v=' + new Date().getTime()),
"rxdj-mobile-info": httpVueLoader("/components/zgfw/rxdj/mobileRxdj.vue?v=" + new Date().getTime())
},
methods: {
async doHandle(s) {
this.formData.dj_sqzt = s
if (this.formData.dj_xghshyj == "") {
vant.Toast('请填写审核意见');
vant.Toast("请填写审核意见")
return
}
vant.Dialog.confirm({
title: '标题',
message: '您确定要提交吗?',
}).then(async () => {
const loading = this.$toast({
duration: 0,
message: '提交中...',
forbidClick: true,
loadingType: 'spinner',
type: 'loading',
overlay: true
});
const res = await $.post('/platform/zgfw/rxdj/sh/doxghSh', this.formData)
if (res.code === 0) {
window.setTimeout(() => {
loading.type = 'success'
loading.message = '提交成功'
window.history.back()
}, 500)
}
}).catch(() => {
});
title: "标题",
message: "您确定要提交吗?"
})
.then(async () => {
const loading = this.$toast({
duration: 0,
message: "提交中...",
forbidClick: true,
loadingType: "spinner",
type: "loading",
overlay: true
})
const res = await $.post("/platform/zgfw/rxdj/sh/doxghSh", this.formData)
if (res.code === 0) {
window.setTimeout(() => {
loading.type = "success"
loading.message = "提交成功"
window.history.back()
}, 500)
}
})
.catch(() => {})
}
},
async created() {
this.formData = {
dj_id: this.dj_id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
dj_xghshyj: '',
auditTime: moment().format("YYYY-MM-DD"),
dj_xghshyj: ""
}
const {data} = await $.get("/platform/zgfw/mobile/rxdj/audit/GetRxdjDjSqzt", {dj_id: this.dj_id})
const { data } = await $.get("/platform/zgfw/mobile/rxdj/audit/GetRxdjDjSqzt", { dj_id: this.dj_id })
this.handle = data === 5200
},
mounted() {
}
mounted() {}
})
</script>
<!--#
}
#-->
#-->
@@ -3,7 +3,7 @@ layout("/mobile/platform.html"){
#-->
<div id="app" v-cloak>
<van-nav-bar title="基层工会审核" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="基层工会审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<rxdj-mobile-info :dj_id="dj_id" title="基层工会审核" :handle="handle">
<template #handle>
<div class="handle">
@@ -163,64 +163,44 @@ layout("/mobile/platform.html"){
</style>
<div id="app" v-cloak>
<van-nav-bar
title="申请账号审核"
left-arrow
placeholder
fixed
@click-left="history.go(-1)"
safe-area-inset-top
></van-nav-bar>
<van-nav-bar title="申请账号审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')" safe-area-inset-top></van-nav-bar>
<div class="search-fixed">
<van-search
v-model="pageForm.searchKeyword"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入供应商名称、申请人进行查询"
>
</van-search>
v-model="pageForm.searchKeyword"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入供应商名称、申请人进行查询"
></van-search>
<van-dropdown-menu>
<van-dropdown-item :title="pageForm.time" ref="item">
<van-cell center title="查询全部">
<template #right-icon>
<van-switch v-model="pageForm.timeSwitch" size="24"
active-color="#246fb4"></van-switch>
<van-switch v-model="pageForm.timeSwitch" size="24" active-color="#246fb4"></van-switch>
</template>
</van-cell>
<van-datetime-picker v-show="pageForm.timeSwitch === false"
v-model="time" cancel-button-text=" " confirm-button-text=" "
type="year-month"
title="选择年月"
:formatter="timeFormatter"
<van-datetime-picker
v-show="pageForm.timeSwitch === false"
v-model="time"
cancel-button-text=" "
confirm-button-text=" "
type="year-month"
title="选择年月"
:formatter="timeFormatter"
></van-datetime-picker>
<div style="padding: 5px 16px;margin-top: 6px">
<van-button type="danger" color="#246fb4" block round @click="onConfirm"
style="height: 36px">
确认
</van-button>
<div style="padding: 5px 16px; margin-top: 6px">
<van-button type="danger" color="#246fb4" block round @click="onConfirm" style="height: 36px">确认</van-button>
</div>
</van-dropdown-item>
<van-dropdown-item v-model="pageForm.auditState" :options="stateOption"
@change="doSearch">
</van-dropdown-item>
<van-dropdown-item v-model="pageForm.auditState" :options="stateOption" @change="doSearch"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin-top: 116px">
<van-list
v-model="loading"
:finished="finished" :immediate-check="false"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="loading" :finished="finished" :immediate-check="false" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<div class="van-doc-card" v-for="o in tableData">
<div>
<div style="display: flex; justify-content: space-between">
<div style="width: 74%">
<div class="van-ellipsis title">
@@ -267,8 +247,7 @@ layout("/mobile/platform.html"){
<van-row>
<van-col span="24">
<span style="color: grey">审核状态:</span>
<span v-if="o.auditState===1"
style="color: #e6a23c">待审核</span>
<span v-if="o.auditState===1" style="color: #e6a23c">待审核</span>
<span v-if="o.auditState==3" style="color: #67c23a">审核通过</span>
<span v-if="o.auditState==2" style="color: #f56c6c">审核不通过</span>
</van-col>
@@ -289,58 +268,57 @@ layout("/mobile/platform.html"){
<div style="display: flex; justify-content: flex-end; margin-top: 4px">
<div v-if="o.auditState === 1">
<van-button @click.stop="openSubmit(o)" class="cus_button"
type="primary" size="small" color="#1867b0"
style="margin-right: 8px; width: auto;">审&emsp;&emsp;核
<van-button
@click.stop="openSubmit(o)"
class="cus_button"
type="primary"
size="small"
color="#1867b0"
style="margin-right: 8px; width: auto"
>
审&emsp;&emsp;核
</van-button>
</div>
<div>
<van-button @click.stop="doDelete(o)" class="cus_button"
type="danger" size="small"
style="margin-right: 8px; width: auto;">删&emsp;&emsp;除
<van-button
@click.stop="doDelete(o)"
class="cus_button"
type="danger"
size="small"
style="margin-right: 8px; width: auto"
>
删&emsp;&emsp;除
</van-button>
</div>
</div>
</div>
</div>
</van-list>
<van-empty
v-if="mLoading==false&&tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-dialog v-model="optionShow" title="审核意见" show-cancel-button @confirm="doSubmit">
<van-cell center title="是否审核通过:">
<template #right-icon>
<van-switch v-model="info.checked" size="24" active-color="#07c160"
inactive-color="#ee0a24"></van-switch>
<van-switch v-model="info.checked" size="24" active-color="#07c160" inactive-color="#ee0a24"></van-switch>
</template>
</van-cell>
<van-field
v-model="info.auditOpinion"
rows="4"
label="审核意见:"
autosize
type="textarea"
maxlength="30"
placeholder="请输入审核意见"
show-word-limit
v-model="info.auditOpinion"
rows="4"
label="审核意见:"
autosize
type="textarea"
maxlength="30"
placeholder="请输入审核意见"
show-word-limit
></van-field>
</van-dialog>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -349,43 +327,40 @@ layout("/mobile/platform.html"){
auditState: 1
},
stateOption: [
{text: '未审核', value: 1},
{text: '审核未通过', value: 2},
{text: '审核通过', value: 3},
{ text: "未审核", value: 1 },
{ text: "审核未通过", value: 2 },
{ text: "审核通过", value: 3 }
],
time: new Date(),
show: false,
timeList: [],
info: {},
info: {}
}
},
methods: {
doDelete(o) {
vant.Dialog.confirm({
title: '温馨提示',
message: '确认要删除吗?',
title: "温馨提示",
message: "确认要删除吗?"
})
.then(async () => {
const resp = await $.post(loc() + "/doDelete", {id: o.id})
const resp = await $.post(loc() + "/doDelete", { id: o.id })
if (resp.code === 0) {
vant.Toast.success('删除成功');
vant.Toast.success("删除成功")
this.doSearch()
} else {
vant.Toast.fail('删除失败');
vant.Toast.fail("删除失败")
}
})
.catch(() => {
});
.catch(() => {})
},
async doSubmit() {
const resp = await $.post(loc() + "/doSubmit", this.info)
if (resp.code === 0) {
vant.Toast.success('审核成功');
vant.Toast.success("审核成功")
this.doSearch()
} else {
vant.Toast.fail('审核失败');
vant.Toast.fail("审核失败")
}
},
openSubmit(o) {
@@ -395,29 +370,31 @@ layout("/mobile/platform.html"){
},
onConfirm() {
if (this.pageForm.timeSwitch === true) {
this.timeList = [{text: '全部', value: '全部'}]
this.timeList = [{ text: "全部", value: "全部" }]
} else {
this.timeList = [{
text: moment(this.time).format('YYYY-MM'),
value: moment(this.time).format('YYYY-MM')
}]
this.timeList = [
{
text: moment(this.time).format("YYYY-MM"),
value: moment(this.time).format("YYYY-MM")
}
]
}
this.$set(this.pageForm, "time", this.timeList[0].value)
this.$refs.item.toggle()
this.doSearch()
},
timeFormatter(type, val) {
if (type === 'year') {
return val + `年`;
if (type === "year") {
return val + `年`
}
if (type === 'month') {
return val + `月`;
if (type === "month") {
return val + `月`
}
return val;
return val
},
async onLoad() {
this.loading = true
$.post(loc() + '/pageData', this.pageForm).then(res => {
$.post(loc() + "/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -428,10 +405,10 @@ layout("/mobile/platform.html"){
}
this.loading = false
})
},
}
},
async created() {
this.timeList = [{text: '全部', value: '全部'}]
this.timeList = [{ text: "全部", value: "全部" }]
this.$set(this.pageForm, "time", this.timeList[0].value)
this.$set(this.pageForm, "timeSwitch", true)
this.onLoad()
@@ -439,7 +416,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
@@ -6,53 +6,40 @@ layout("/mobile/platform.html"){
<script src="${base!}/assets/platform/js/jr-qrcode.js"></script>
<div id="app" v-cloak>
<van-nav-bar
title="申请二维码"
left-arrow
placeholder
fixed
@click-left="history.go(-1)"
safe-area-inset-top
></van-nav-bar>
<van-nav-bar title="申请二维码" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')" safe-area-inset-top></van-nav-bar>
<div style="width: 100%;position: fixed;top: 50%;transform: translateY(-50%);">
<div id="qrcode" style="width: 70%;left: 0;right: 0;margin: auto"></div>
<div style="width: 100%; position: fixed; top: 50%; transform: translateY(-50%)">
<div id="qrcode" style="width: 70%; left: 0; right: 0; margin: auto"></div>
<van-cell class="mt10">
<template #icon>
<van-icon class="van-cell__left-icon" name="clock" color="red"></van-icon>
</template>
<template #title>
<div style="font-weight: bold;font-size: 15px">二维码有效期截止时间</div>
<div style="font-weight: bold; font-size: 15px">二维码有效期截止时间</div>
</template>
</van-cell>
<van-cell title="二维码有效期截止时间" is-link :value="dateTimeValue"
@click="openDateTime"></van-cell>
<van-cell title="二维码有效期截止时间" is-link :value="dateTimeValue" @click="openDateTime"></van-cell>
</div>
<van-popup v-model="dateTimeShow" position="bottom" :style="{ height: '50%' }">
<van-datetime-picker
class="mt10"
v-model="currentDate"
type="datehour"
title="选择完整时间"
:min-date="minDate"
:max-date="maxDate"
@cancel="dateTimeShow = false"
@confirm="confirm"
:formatter="formatter"
class="mt10"
v-model="currentDate"
type="datehour"
title="选择完整时间"
:min-date="minDate"
:max-date="maxDate"
@cancel="dateTimeShow = false"
@confirm="confirm"
:formatter="formatter"
></van-datetime-picker>
</van-popup>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -60,30 +47,30 @@ layout("/mobile/platform.html"){
maxDate: new Date(2025, 10, 1),
currentDate: new Date(new Date().getTime() + 60 * 60 * 1000),
dateTimeShow: false,
dateTime: '',
dateTimeValue: moment(new Date(new Date().getTime() + 60 * 60 * 1000)).format('YYYY-MM-DD HH')
dateTime: "",
dateTimeValue: moment(new Date(new Date().getTime() + 60 * 60 * 1000)).format("YYYY-MM-DD HH")
}
},
methods: {
formatter(type, val) {
if (type === 'year') {
return val + '年';
if (type === "year") {
return val + "年"
}
if (type === 'month') {
return val + '月';
if (type === "month") {
return val + "月"
}
if (type === 'day') {
return val + '日';
if (type === "day") {
return val + "日"
}
if (type === 'hour') {
return val + '时';
if (type === "hour") {
return val + "时"
}
return val;
return val
},
confirm(val) {
this.initQrcode();
this.initQrcode()
this.dateTimeShow = false
this.dateTimeValue = moment(val).format('YYYY-MM-DD HH')
this.dateTimeValue = moment(val).format("YYYY-MM-DD HH")
},
openDateTime() {
this.dateTimeShow = true
@@ -91,23 +78,23 @@ layout("/mobile/platform.html"){
initQrcode() {
this.$nextTick(() => {
$("#qrcode").html("")
$("#qrcode").qrcode({ //设置css
$("#qrcode").qrcode({
//设置css
render: "canvas", //二维码的生成方式
width: $("#qrcode").width(), //生成二维码的宽度
height: $("#qrcode").width(), //生成二维码的高度
text: APP_DOMAIN + "/mobile/self/applyUser?currentDate=" + this.currentDate.valueOf(),
correctLevel: 3 //容错级别,默认为2,最高为3,为了让用户扫码最快,容错级别应当设为最低
});
})
})
}
},
async created() {
this.initQrcode();
this.initQrcode()
}
})
</script>
<!--#
}
#-->
+11 -28
View File
@@ -7,35 +7,21 @@ layout("/mobile/platform.html"){
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="提案详情"
left-arrow
placeholder
fixed
@click-left="history.back()"
></van-nav-bar>
<van-nav-bar title="提案详情" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div style="padding-top: 20px">
<van-collapse v-model="activeNames">
<van-collapse-item title="提案基本信息" name="1">
<van-cell title="提案名称">
<div>
{{tableData.proposalName}}
</div>
<div>{{tableData.proposalName}}</div>
</van-cell>
<van-cell title="提案人">
<div>
{{tableData.createUserName}}
</div>
<div>{{tableData.createUserName}}</div>
</van-cell>
<van-cell title="所在部门">
<div>
{{tableData.unionName}}
</div>
<div>{{tableData.unionName}}</div>
</van-cell>
<van-cell title="提案类型">
<div>
{{tableData.typeName}}
</div>
<div>{{tableData.typeName}}</div>
</van-cell>
<van-cell title="立案结果">
<span>{{tableData.resultName ? tableData.resultName : '暂无'}}</span>
@@ -44,8 +30,7 @@ layout("/mobile/platform.html"){
<div>
<span v-if="!tableData.seconded">暂无</span>
<span v-else v-for="(item,index) in tableData.seconded">
{{ item.username }}
{{ index + 1 === tableData.seconded.length ? '' : '、' }}
{{ item.username }} {{ index + 1 === tableData.seconded.length ? '' : '、' }}
</span>
</div>
</van-cell>
@@ -63,24 +48,22 @@ layout("/mobile/platform.html"){
</van-collapse-item>
</van-collapse>
</div>
</div>
<script>
new Vue({
el: '#app',
el: "#app",
data() {
return {
ayActiveNames: [],
jyActiveNames: [],
activeNames: ['1'],
activeNames: ["1"],
tableData: {}
}
},
methods: {
checkParams() {
if (GetQueryString('id') === '') {
vant.Toast.fail('参数不合法');
if (GetQueryString("id") === "") {
vant.Toast.fail("参数不合法")
return false
}
return true
@@ -88,7 +71,7 @@ layout("/mobile/platform.html"){
},
created() {
if (this.checkParams()) {
$.post('/platform/mobile/proposal/compose/findOne', {id: GetQueryString('id')}).then(res => {
$.post("/platform/mobile/proposal/compose/findOne", { id: GetQueryString("id") }).then((res) => {
if (res.code === 0) {
this.tableData = res.data
}
+60 -101
View File
@@ -8,7 +8,7 @@ layout("/mobile/platform.html"){
.cell-card {
padding: 20px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
width: 90%;
margin: 20px auto;
border-radius: 20px;
@@ -24,67 +24,47 @@ layout("/mobile/platform.html"){
width: 50%;
text-align: center;
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="提案列表"
left-arrow
placeholder
fixed
@click-left="location.href='/mobile/index'"
></van-nav-bar>
<van-nav-bar title="提案列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-search
v-model="pageForm.searchKeyWord"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入提案名称或者提案编号进行查询"
>
</van-search>
v-model="pageForm.searchKeyWord"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入提案名称或者提案编号进行查询"
></van-search>
<van-dropdown-menu>
<van-dropdown-item v-model="pageForm.sessionId" :options="sessionList" @change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.delegationId" :options="delegationList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.proposalTypeId" :options="proposalTypeList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.proposalResultCode" :options="resultList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.delegationId" :options="delegationList" @change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.proposalTypeId" :options="proposalTypeList" @change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.proposalResultCode" :options="resultList" @change="doSearch"></van-dropdown-item>
</van-dropdown-menu>
<van-tabs v-model="active" @click="onClickActive">
<van-tab title="未审核">
<div>
<van-list
v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad"
>
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<van-cell v-for="o in tableData" class="cell-card" @click="openView(o.id,o.secondedId)">
<div style="display: flex">
<div style="width: 75%">
<div class="text-overflow" style="font-weight: bold;color: #409EFF">
{{o.proposalName}}
</div>
<div class="text-overflow" style="font-weight: bold; color: #409eff">{{o.proposalName}}</div>
<div style="font-size: 12px">编号:{{o.proposalCode}}</div>
<div style="font-size: 12px">附议人:{{o.secondedUserName}}</div>
<div style="font-size: 12px">教代会届次:{{o.meetingName}}</div>
<div style="font-size: 12px">代表团:{{o.delegationName}}</div>
</div>
<div style="width: 25%;display: flex;align-items: center;">
<div style="width: 25%; display: flex; align-items: center">
<span :style="'color:'+o.stateColor">{{ o.stateName }}</span>
</div>
</div>
<van-divider></van-divider>
<div style="display: flex;font-size: 12px">
<div style="display: flex; font-size: 12px">
<div style="width: 38%">
<div style="color: gray">教代会届次</div>
<div class="text-overflow ">{{o.meetingName}}</div>
<div class="text-overflow">{{o.meetingName}}</div>
</div>
<div style="width: 38%">
<div style="color: gray">提案类型</div>
@@ -97,42 +77,30 @@ layout("/mobile/platform.html"){
</div>
</van-cell>
</van-list>
<van-empty
v-if="tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</van-tab>
<van-tab title="已审核">
<div>
<van-list
v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad"
>
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<van-cell v-for="o in tableData" class="cell-card" @click="openView(o.id,o.secondedId)">
<div style="display: flex">
<div style="width: 75%">
<div class="text-overflow" style="font-weight: bold;color: #409EFF">
{{o.proposalName}}
</div>
<div class="text-overflow" style="font-weight: bold; color: #409eff">{{o.proposalName}}</div>
<div style="font-size: 12px">编号:{{o.proposalCode}}</div>
<div style="font-size: 12px">附议人:{{o.secondedUserName}}</div>
<div style="font-size: 12px">教代会届次:{{o.meetingName}}</div>
<div style="font-size: 12px">代表团:{{o.delegationName}}</div>
</div>
<div style="width: 25%;display: flex;align-items: center;">
<div style="width: 25%; display: flex; align-items: center">
<span :style="'color:'+o.stateColor">{{ o.stateName }}</span>
</div>
</div>
<van-divider></van-divider>
<div style="display: flex;font-size: 12px">
<div style="display: flex; font-size: 12px">
<div style="width: 38%">
<div style="color: gray">教代会届次</div>
<div class="text-overflow ">{{o.meetingName}}</div>
<div class="text-overflow">{{o.meetingName}}</div>
</div>
<div style="width: 38%">
<div style="color: gray">提案类型</div>
@@ -145,22 +113,15 @@ layout("/mobile/platform.html"){
</div>
</van-cell>
</van-list>
<van-empty
v-if="tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</van-tab>
</van-tabs>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -169,7 +130,7 @@ layout("/mobile/platform.html"){
isAudit: false
},
list: [],
state: '0',
state: "0",
loading: false,
finished: false,
refreshing: false,
@@ -178,8 +139,9 @@ layout("/mobile/platform.html"){
proposalTypeList: [],
resultList: [],
isAuditList: [
{"text": "未审核", "value": false},
{"text": "已审核", "value": true}]
{ text: "未审核", value: false },
{ text: "已审核", value: true }
]
}
},
methods: {
@@ -194,20 +156,18 @@ layout("/mobile/platform.html"){
setTimeout(() => {
this.refreshing = false
}, 1000)
},
doSearch() {
this.onLoad()
},
onClickActive(name) {
this.$set(this.pageForm, "isAudit", name)
this.onLoad()
},
async onLoad() {
this.tableData = []
this.loading = true
$.post('/platform/mobile/proposal/seconded/pageData', this.pageForm).then(res => {
$.post("/platform/mobile/proposal/seconded/pageData", this.pageForm).then((res) => {
this.loading = false
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
@@ -221,46 +181,47 @@ layout("/mobile/platform.html"){
})
},
doAudit(flag, row) {
const {id, secondedId} = row
let res = flag === true ? '通过' : '拒绝'
const { id, secondedId } = row
let res = flag === true ? "通过" : "拒绝"
vant.Dialog.confirm({
title: '提示',
message: '您确定' + res + '吗?',
}).then(() => {
$.post('/platform/proposal/transact/seconded/doAudit', {
secondedId: secondedId,
proposalId: id,
flag: flag
}).then(res => {
if (res.code === 0) {
this.pageForm = {
pageNumber: 1,
pageSize: 5,
totalCount: 0
}
this.tableData = []
this.onLoad()
vant.Toast.success('提交成功!')
}
})
}).catch(() => {
title: "提示",
message: "您确定" + res + "吗?"
})
.then(() => {
$.post("/platform/proposal/transact/seconded/doAudit", {
secondedId: secondedId,
proposalId: id,
flag: flag
}).then((res) => {
if (res.code === 0) {
this.pageForm = {
pageNumber: 1,
pageSize: 5,
totalCount: 0
}
this.tableData = []
this.onLoad()
vant.Toast.success("提交成功!")
}
})
})
.catch(() => {})
},
openView(id, secondedId) {
// window.location.href = '/platform/mobile/proposal/compose/detail?id=' + id
window.location.href = '/platform/mobile/proposal/seconded/view?biz_key=' + secondedId + '&proposal_id=' + id + '&mobile=' + true
window.location.href = "/platform/mobile/proposal/seconded/view?biz_key=" + secondedId + "&proposal_id=" + id + "&mobile=" + true
}
},
async created() {
this.sessionList = await mProposal.getAllSession()
const a = await getProposalType()
if (a) {
a.forEach(v => {
this.proposalTypeList.push({"text": v.typeName, "value": v.id})
a.forEach((v) => {
this.proposalTypeList.push({ text: v.typeName, value: v.id })
})
this.proposalTypeList.unshift({"text": "所有类型", "value": null})
this.proposalTypeList.unshift({ text: "所有类型", value: null })
this.$set(this.pageForm, "proposalTypeId", this.proposalTypeList[0].value)
}
if (this.sessionList && this.sessionList.length > 0) {
@@ -269,19 +230,17 @@ layout("/mobile/platform.html"){
if (this.delegationList) {
this.$set(this.pageForm, "delegationId", this.delegationList[0].value)
}
}
const aa = await getDictOptions("proposal_result")
console.log(aa)
if (a) {
aa.forEach(v => {
this.resultList.push({"text": v.name, "value": v.code})
aa.forEach((v) => {
this.resultList.push({ text: v.name, value: v.code })
})
this.resultList.unshift({"text": "所有结果", "value": null})
this.resultList.unshift({ text: "所有结果", value: null })
this.$set(this.pageForm, "proposalResultCode", this.resultList[0].value)
}
},
}
})
</script>
+49 -58
View File
@@ -8,7 +8,7 @@ layout("/mobile/platform.html"){
.cell-card {
padding: 20px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
width: 90%;
margin: 20px auto;
border-radius: 20px;
@@ -19,42 +19,40 @@ layout("/mobile/platform.html"){
text-overflow: ellipsis;
overflow: hidden;
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="个人提案"
left-arrow
placeholder
fixed
@click-left="history.back()"
></van-nav-bar>
<van-nav-bar title="个人提案" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div>
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
<van-list
v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<van-cell v-for="o in tableData" class="cell-card">
<div style="width: 100%;display: flex;flex-direction:row">
<div class="text-overflow" style="font-weight: bold;color: #409EFF;width: calc(100% - 50px)"
@click="openView(o.id)">
<div style="width: 100%; display: flex; flex-direction: row">
<div class="text-overflow" style="font-weight: bold; color: #409eff; width: calc(100% - 50px)" @click="openView(o.id)">
{{o.proposalName}}
</div>
<div v-if="o.stateCode==100&&!config.isAutoSubmit" @click="doSubmit(o)"
style="width: 50px;display: flex;flex-direction:column;align-items: center;justify-content: center;font-size: 20px;color: #409EFF">
<van-icon name="share"/>
<div
v-if="o.stateCode==100&&!config.isAutoSubmit"
@click="doSubmit(o)"
style="
width: 50px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 20px;
color: #409eff;
"
>
<van-icon name="share" />
<div style="font-size: 8px">提交</div>
</div>
</div>
<div style="font-size: 12px">编号:{{o.proposalCode}}</div>
<van-divider></van-divider>
<div style="display: flex;font-size: 12px">
<div style="display: flex; font-size: 12px">
<div style="width: 38%">
<div style="color: gray">教代会届次</div>
<div class="text-overflow">{{o.meetingName}}</div>
@@ -71,18 +69,13 @@ layout("/mobile/platform.html"){
</van-cell>
</van-list>
</van-pull-refresh>
<van-empty
v-if="tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</div>
<script>
new Vue({
el: '#app',
el: "#app",
data() {
return {
list: [],
@@ -101,33 +94,32 @@ layout("/mobile/platform.html"){
methods: {
async doSubmit(row) {
vant.Dialog.confirm({
title: '提示',
message: '是否提交提案?',
title: "提示",
message: "是否提交提案?"
}).then(async () => {
const toast = vant.Toast.loading({
duration: 0,
forbidClick: true,
message: "正在提交..."
})
const { code, msg } = await $.post("/platform/proposal/transact/compose/doSubmit", {
id: row.id,
mannerCode: row.mannerCode
})
if (code === 0) {
toast.icon = "success"
toast.message = "提交成功"
await this.onRefresh()
} else {
toast.icon = "fail"
toast.message = msg
}
setTimeout(() => {
vant.Toast.clear()
}, 500)
})
.then(async () => {
const toast = vant.Toast.loading({
duration: 0,
forbidClick: true,
message: '正在提交...',
});
const {code, msg} = await $.post('/platform/proposal/transact/compose/doSubmit', {
id: row.id,
mannerCode: row.mannerCode
})
if (code === 0) {
toast.icon = 'success'
toast.message = '提交成功'
await this.onRefresh()
} else {
toast.icon = 'fail'
toast.message = msg
}
setTimeout(() => {
vant.Toast.clear();
}, 500)
});
},
async onRefresh() {
this.tableData = []
@@ -140,11 +132,10 @@ layout("/mobile/platform.html"){
setTimeout(() => {
this.refreshing = false
}, 1000)
},
async onLoad() {
this.loading = true
$.post('/platform/mobile/proposal/compose/pageData', this.pageForm).then(res => {
$.post("/platform/mobile/proposal/compose/pageData", this.pageForm).then((res) => {
this.loading = false
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
@@ -157,7 +148,7 @@ layout("/mobile/platform.html"){
})
},
openView(id) {
window.location.href = '/platform/mobile/proposal/compose/detail?id=' + id
window.location.href = "/platform/mobile/proposal/compose/detail?id=" + id
}
},
async created() {
+44 -82
View File
@@ -8,7 +8,7 @@ layout("/mobile/platform.html"){
.cell-card {
padding: 20px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
width: 90%;
margin: 20px auto;
border-radius: 20px;
@@ -21,62 +21,44 @@ layout("/mobile/platform.html"){
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="团长审议"
left-arrow
placeholder
fixed
@click-left="location.href='/mobile/index'"
></van-nav-bar>
<van-nav-bar title="团长审议" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-search
v-model="pageForm.searchKeyWord"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入提案名称或者提案编号进行查询"
>
</van-search>
v-model="pageForm.searchKeyWord"
shape="round"
maxlength="10"
@search="doSearch"
placeholder="请输入提案名称或者提案编号进行查询"
></van-search>
<van-dropdown-menu>
<van-dropdown-item v-model="pageForm.sessionId" :options="sessionList" @change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.delegationId" :options="delegationList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.proposalTypeId" :options="proposalTypeList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.proposalResultCode" :options="resultList"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.delegationId" :options="delegationList" @change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.proposalTypeId" :options="proposalTypeList" @change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.proposalResultCode" :options="resultList" @change="doSearch"></van-dropdown-item>
</van-dropdown-menu>
<van-tabs v-model="active" @click="onClickActive">
<van-tab title="未审核">
<div>
<van-list
v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<van-cell v-for="o in tableData" class="cell-card" @click="openView(o.id)">
<div style="display: flex">
<div style="width: 75%">
<div class="text-overflow" style="font-weight: bold;color: #409EFF">
{{o.proposalName}}
</div>
<div class="text-overflow" style="font-weight: bold; color: #409eff">{{o.proposalName}}</div>
<div style="font-size: 12px">编号:{{o.proposalCode}}</div>
<div style="font-size: 12px">附议人:{{o.secondedUserName}}</div>
<div style="font-size: 12px">教代会届次:{{o.meetingName}}</div>
<div style="font-size: 12px">代表团:{{o.delegationName}}</div>
</div>
<div style="width: 25%;display: flex;align-items: center;">
<div style="width: 25%; display: flex; align-items: center">
<span :style="'color:'+o.stateColor">{{ o.stateName }}</span>
</div>
</div>
<van-divider></van-divider>
<div style="display: flex;font-size: 12px">
<div style="display: flex; font-size: 12px">
<div style="width: 38%">
<div style="color: gray">教代会届次</div>
<div class="text-overflow ">{{o.meetingName}}</div>
<div class="text-overflow">{{o.meetingName}}</div>
</div>
<div style="width: 38%">
<div style="color: gray">提案类型</div>
@@ -89,42 +71,30 @@ layout("/mobile/platform.html"){
</div>
</van-cell>
</van-list>
<van-empty
v-if="tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</van-tab>
<van-tab title="已审核">
<div>
<van-list
v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad"
>
<van-list v-model="loading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<van-cell v-for="o in tableData" class="cell-card" @click="openView(o.id)">
<div style="display: flex">
<div style="width: 75%">
<div class="text-overflow" style="font-weight: bold;color: #409EFF">
{{o.proposalName}}
</div>
<div class="text-overflow" style="font-weight: bold; color: #409eff">{{o.proposalName}}</div>
<div style="font-size: 12px">编号:{{o.proposalCode}}</div>
<div style="font-size: 12px">附议人:{{o.secondedUserName}}</div>
<div style="font-size: 12px">教代会届次:{{o.meetingName}}</div>
<div style="font-size: 12px">代表团:{{o.delegationName}}</div>
</div>
<div style="width: 25%;display: flex;align-items: center;">
<div style="width: 25%; display: flex; align-items: center">
<span :style="'color:'+o.stateColor">{{ o.stateName }}</span>
</div>
</div>
<van-divider></van-divider>
<div style="display: flex;font-size: 12px">
<div style="display: flex; font-size: 12px">
<div style="width: 38%">
<div style="color: gray">教代会届次</div>
<div class="text-overflow ">{{o.meetingName}}</div>
<div class="text-overflow">{{o.meetingName}}</div>
</div>
<div style="width: 38%">
<div style="color: gray">提案类型</div>
@@ -137,17 +107,11 @@ layout("/mobile/platform.html"){
</div>
</van-cell>
</van-list>
<van-empty
v-if="tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
</van-tab>
</van-tabs>
<!-- <div>
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
<van-list
@@ -257,7 +221,7 @@ layout("/mobile/platform.html"){
<script>
let vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -266,7 +230,7 @@ layout("/mobile/platform.html"){
isAudit: false
},
list: [],
state: '0',
state: "0",
loading: false,
finished: false,
refreshing: false,
@@ -275,8 +239,9 @@ layout("/mobile/platform.html"){
proposalTypeList: [],
resultList: [],
isAuditList: [
{"text": "未审核", "value": false},
{"text": "已审核", "value": true}]
{ text: "未审核", value: false },
{ text: "已审核", value: true }
]
}
},
methods: {
@@ -291,20 +256,18 @@ layout("/mobile/platform.html"){
setTimeout(() => {
this.refreshing = false
}, 1000)
},
doSearch() {
this.onLoad()
},
onClickActive(name) {
this.$set(this.pageForm, "isAudit", name)
this.onLoad()
},
async onLoad() {
this.tableData = []
this.loading = true
$.post('/platform/mobile/proposal/delegation/pageData', this.pageForm).then(res => {
$.post("/platform/mobile/proposal/delegation/pageData", this.pageForm).then((res) => {
this.loading = false
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
@@ -321,19 +284,19 @@ layout("/mobile/platform.html"){
proposalId: id,
username: "${@shiro.getPrincipalProperty('username')}",
loginName: "${@shiro.getPrincipalProperty('loginname')}",
auditTime: moment().format('YYYY-MM-DD'),
opinion: '',
sign: '',
auditTime: moment().format("YYYY-MM-DD"),
opinion: "",
sign: ""
}
this.state = '0'
this.state = "0"
this.show = true
},
validateForm(action, done) {
done(false)
},
async doHandle() {
this.$refs['handleForm'].validate().then(valid => {
$.post('/platform/proposal/transact/audit/doAudit', {
this.$refs["handleForm"].validate().then((valid) => {
$.post("/platform/proposal/transact/audit/doAudit", {
audit: JSON.stringify(this.formData),
flag: this.state === 0
}).then((res) => {
@@ -347,26 +310,26 @@ layout("/mobile/platform.html"){
}
this.tableData = []
this.onLoad()
vant.Toast.success('审核成功!')
vant.Toast.success("审核成功!")
} else {
vant.Toast.error('审核失败!')
vant.Toast.error("审核失败!")
}
})
})
},
openView(id) {
// window.location.href = '/platform/mobile/proposal/compose/detail?id=' + id
window.location.href = '/platform/mobile/proposal/delegation/view?biz_key=' + id + '&proposal_id=' + id + '&mobile=' + true
window.location.href = "/platform/mobile/proposal/delegation/view?biz_key=" + id + "&proposal_id=" + id + "&mobile=" + true
}
},
async created() {
this.sessionList = await mProposal.getAllSession()
const a = await getProposalType()
if (a) {
a.forEach(v => {
this.proposalTypeList.push({"text": v.typeName, "value": v.id})
a.forEach((v) => {
this.proposalTypeList.push({ text: v.typeName, value: v.id })
})
this.proposalTypeList.unshift({"text": "所有类型", "value": null})
this.proposalTypeList.unshift({ text: "所有类型", value: null })
this.$set(this.pageForm, "proposalTypeId", this.proposalTypeList[0].value)
}
if (this.sessionList && this.sessionList.length > 0) {
@@ -375,14 +338,13 @@ layout("/mobile/platform.html"){
if (this.delegationList) {
this.$set(this.pageForm, "delegationId", this.delegationList[0].value)
}
}
const aa = await getDictOptions("proposal_result")
if (a) {
aa.forEach(v => {
this.resultList.push({"text": v.name, "value": v.code})
aa.forEach((v) => {
this.resultList.push({ text: v.name, value: v.code })
})
this.resultList.unshift({"text": "所有结果", "value": null})
this.resultList.unshift({ text: "所有结果", value: null })
this.$set(this.pageForm, "proposalResultCode", this.resultList[0].value)
}
}
@@ -198,7 +198,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="职工疗休养-酒店介绍"></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder title="职工疗休养-酒店介绍"></van-nav-bar>
</van-sticky>
<!--线路详情-->
@@ -2,7 +2,6 @@
layout("/mobile/platform.html"){
#-->
<style>
.van-doc-card {
margin: 10px;
padding: 12px 12px 12px 12px;
@@ -30,13 +29,11 @@ layout("/mobile/platform.html"){
white-space: break-spaces;
padding-left: 7px;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="职工疗休养"></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder title="职工疗休养"></van-nav-bar>
</van-sticky>
<!--顶部轮播图-->
@@ -60,30 +57,27 @@ layout("/mobile/platform.html"){
</div>
<!--疗休养描述-->
<div class="van-doc-card" style="margin-top: 20px;margin-bottom: 60px">
<div class="van-doc-card" style="margin-top: 20px; margin-bottom: 60px">
<van-image width="190" height="43" src="/assets/mobile/img/therapyRecuperation/title.png"></van-image>
<div class="pre_text" v-html="configData.notice"></div>
</div>
<div>
<van-tabbar v-model="tarBarActive">
<van-tabbar-item icon="home-o" replace url="/platform/mobile/theRapyRecuperation/index">疗休养报名
</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/platform/mobile/theRapyRecuperation/myRecuperation">我的疗休养
</van-tabbar-item>
<van-tabbar-item icon="home-o" replace url="/platform/mobile/theRapyRecuperation/index">疗休养报名</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/platform/mobile/theRapyRecuperation/myRecuperation">我的疗休养</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
chooseButton: [],
configData: {},
tarBarActive: 0,
tarBarActive: 0
}
},
methods: {
@@ -91,23 +85,23 @@ layout("/mobile/platform.html"){
const isExist = await getScopeUser(this.configData.activityGroupId)
if (!isExist) {
vant.Dialog.alert({
title: '温馨提示',
message: '您不在疗休养报名范围中',
confirmButtonColor: '#1867b0'
title: "温馨提示",
message: "您不在疗休养报名范围中",
confirmButtonColor: "#1867b0"
})
return
}
localStorage.setItem("clickIndex", JSON.stringify({clickIndex: index}))
location.href = '/platform/mobile/theRapyRecuperation/mobileLineListPage'
localStorage.setItem("clickIndex", JSON.stringify({ clickIndex: index }))
location.href = "/platform/mobile/theRapyRecuperation/mobileLineListPage"
},
async getConfigData() {
const resp = await $.get('/platform/theRapyRecuperation/TheRapyConfig/findOne')
const resp = await $.get("/platform/theRapyRecuperation/TheRapyConfig/findOne")
this.configData = resp.data
},
}
},
async created() {
this.chooseButton = await getEnumOptions('TheRapyRecuperationType')
this.chooseButton = this.chooseButton.filter(o => o.value !== 2 && o.value !== 3)
this.chooseButton = await getEnumOptions("TheRapyRecuperationType")
this.chooseButton = this.chooseButton.filter((o) => o.value !== 2 && o.value !== 3)
await this.getConfigData()
}
})
@@ -2,7 +2,6 @@
layout("/mobile/platform.html"){
#-->
<style>
.container img {
background-size: contain;
width: 100%;
@@ -41,7 +40,8 @@ layout("/mobile/platform.html"){
padding-top: 60px;
}
.van-skeleton__row, .van-skeleton__title {
.van-skeleton__row,
.van-skeleton__title {
height: 30px;
}
@@ -106,7 +106,7 @@ layout("/mobile/platform.html"){
}
.van-card-body {
padding: 0px 10px 0px 10px
padding: 0px 10px 0px 10px;
}
.van-doc-card > div:first-child {
@@ -194,13 +194,11 @@ layout("/mobile/platform.html"){
.van-image-preview img {
background-color: white;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar @click-left="history.go(-1)" fixed left-arrow placeholder title="职工疗休养-线路介绍"></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder title="职工疗休养-线路介绍"></van-nav-bar>
</van-sticky>
<!--线路详情-->
@@ -208,9 +206,7 @@ layout("/mobile/platform.html"){
<div class="container">
<div class="header">
<div class="title">
<van-tag size="large" color="#1867b0" style="color: white;position: relative; top: -2px">
{{lineData.lotName}}
</van-tag>
<van-tag size="large" color="#1867b0" style="color: white; position: relative; top: -2px">{{lineData.lotName}}</van-tag>
{{lineData.lineName}}
</div>
<div style="margin-top: 10px">
@@ -220,18 +216,17 @@ layout("/mobile/platform.html"){
</div>
<div>
<span>当前报名:</span>
{{lineData.signUpUserNum + lineData.signUpUserFamilyNum + '(家属' + lineData.signUpUserFamilyNum +
'人)'}}
{{lineData.signUpUserNum + lineData.signUpUserFamilyNum + '(家属' + lineData.signUpUserFamilyNum + '人)'}}
</div>
<div>
<span>报名时间:</span>
{{moment(lineData.signUpStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(lineData.signUpEndTime).format('YYYY-MM-DD HH:mm')}}
{{moment(lineData.signUpStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' + moment(lineData.signUpEndTime).format('YYYY-MM-DD
HH:mm')}}
</div>
<div>
<span>出行时间:</span>
{{moment(lineData.playStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(lineData.playEndTime).format('YYYY-MM-DD HH:mm')}}
{{moment(lineData.playStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' + moment(lineData.playEndTime).format('YYYY-MM-DD
HH:mm')}}
</div>
<div>
<span>旅&ensp;行&ensp;社:</span>
@@ -255,44 +250,44 @@ layout("/mobile/platform.html"){
</van-skeleton>
<!--置顶图标-->
<image v-if="btnFlag" @click="backTop" src="/assets/mobile/svg/therapyRecuperation/top.svg"
class="top_icon"></image>
<image v-if="btnFlag" @click="backTop" src="/assets/mobile/svg/therapyRecuperation/top.svg" class="top_icon"></image>
<!--底部报名按钮-->
<div class="footer" v-if="fromUrlByMy != 'edit'">
<template v-if="lineData.isNormal==0&&lineData.isNormalFalse>0">
<van-button @click="join"
class="join">我要报名
</van-button>
<van-button @click="join" class="join">我要报名</van-button>
</template>
<template v-else>
<van-button v-if="moment().unix() <= moment(lineData.signUpEndTime).unix()" @click="join"
class="join">我要报名
</van-button>
<van-button v-if="moment().unix() <= moment(lineData.signUpEndTime).unix()" @click="join" class="join">我要报名</van-button>
<van-button v-if="moment().unix() > moment(lineData.signUpEndTime).unix()" class="join">报名结束</van-button>
</template>
</div>
<!--报名弹出框-->
<van-popup v-model:show="joinPopup" position="right" class="joinPopup">
<van-nav-bar @click-left="joinPopup = false" fixed left-arrow placeholder title="疗休养报名"></van-nav-bar>
<div class="join_content">
<van-form @submit="joinSubmit">
<!--基础信息-->
<div class="van-doc-card" style="margin-bottom: 16px">
<div></div>
<div class="van-card-header">
基础信息
</div>
<div class="van-card-header">基础信息</div>
<div class="van-card-body">
<van-field label="姓名" readonly v-model="formData.userName"></van-field>
<van-field label="工号" readonly v-model="formData.loginName"></van-field>
<van-field label="身份证号" name="idCard" :rules="[{ required: true }]"
placeholder="请填写身份证号" v-model="formData.idCard"></van-field>
<van-field label="手机号" name="mobile" :rules="[{ required: true }]"
placeholder="请填写手机号" v-model="formData.mobile"></van-field>
<van-field
label="身份证号"
name="idCard"
:rules="[{ required: true }]"
placeholder="请填写身份证号"
v-model="formData.idCard"
></van-field>
<van-field
label="手机号"
name="mobile"
:rules="[{ required: true }]"
placeholder="请填写手机号"
v-model="formData.mobile"
></van-field>
<van-field label="所属工会" readonly v-model="formData.unionName"></van-field>
<van-field label="报名线路" readonly v-model="formData.lineName"></van-field>
</div>
@@ -301,19 +296,35 @@ layout("/mobile/platform.html"){
<!--床位信息-->
<div class="van-doc-card" style="margin-bottom: 16px">
<div></div>
<div class="van-card-header">
床位信息
</div>
<div class="van-card-header">床位信息</div>
<div class="van-card-body">
<van-field @click="self = true; roomVisible = true" readonly is-link label="房间" name="bedType"
placeholder="请选择房间" v-model="formData.bedInfo.bedType"
:rules="[{ required: true }]"></van-field>
<van-field v-if="formData.bedInfo.bedType == '标准间'" @click="self = true; bedVisible = true"
readonly is-link label="床位"
name="bedNum" placeholder="请选择床位" v-model="formData.bedInfo.bedNum"
:rules="[{ required: true }]"></van-field>
<van-field v-if="formData.bedInfo.bedType == '标准间'" :rules="[{ validator, message: '请选择是否拼房' }]"
label="是否拼房" name="validator">
<van-field
@click="self = true; roomVisible = true"
readonly
is-link
label="房间"
name="bedType"
placeholder="请选择房间"
v-model="formData.bedInfo.bedType"
:rules="[{ required: true }]"
></van-field>
<van-field
v-if="formData.bedInfo.bedType == '标准间'"
@click="self = true; bedVisible = true"
readonly
is-link
label="床位"
name="bedNum"
placeholder="请选择床位"
v-model="formData.bedInfo.bedNum"
:rules="[{ required: true }]"
></van-field>
<van-field
v-if="formData.bedInfo.bedType == '标准间'"
:rules="[{ validator, message: '请选择是否拼房' }]"
label="是否拼房"
name="validator"
>
<template #input>
<van-radio-group direction="horizontal" v-model="formData.bedInfo.isSleepTogether">
<van-radio :name="true" shape="square">是</van-radio>
@@ -321,19 +332,22 @@ layout("/mobile/platform.html"){
</van-radio-group>
</template>
</van-field>
<van-field v-if="formData.bedInfo.bedType == '标准间' && formData.bedInfo.isSleepTogether == true"
label="意向拼房人" name="otherSleepUser" placeholder="多个拼房人请用,隔开"
v-model="formData.bedInfo.otherSleepUser"
:rules="[{ required: true }]"></van-field>
<van-field
v-if="formData.bedInfo.bedType == '标准间' && formData.bedInfo.isSleepTogether == true"
label="意向拼房人"
name="otherSleepUser"
placeholder="多个拼房人请用,隔开"
v-model="formData.bedInfo.otherSleepUser"
:rules="[{ required: true }]"
></van-field>
</div>
</div>
<!--随行人信息-->
<div class="van-doc-card" style="margin-bottom: 16px">
<div></div>
<div class="van-card-header"
style="display: flex; justify-content: space-between; align-items: center">
<span style="float:left;">随行人信息</span>
<div class="van-card-header" style="display: flex; justify-content: space-between; align-items: center">
<span style="float: left">随行人信息</span>
<div>
<van-tag @click="delCompanion" size="large" type="primary" color="lightgrey">删除随行人</van-tag>
<van-tag @click="addCompanion" size="large" type="primary" color="#1867b0">添加随行人</van-tag>
@@ -342,11 +356,22 @@ layout("/mobile/platform.html"){
<div v-if="formData.companionList.length > 0" class="van-card-body">
<van-tabs v-model="active" type="card" color="#0e78c5" animated>
<van-tab v-for="item, index in formData.companionList" :title="'随行人' + (index + 1)">
<van-field label="姓名" name="userName" placeholder="请填写姓名" v-model="item.userName"
:rules="[{ required: true }]"></van-field>
<van-field
label="姓名"
name="userName"
placeholder="请填写姓名"
v-model="item.userName"
:rules="[{ required: true }]"
></van-field>
<!--<van-field label="工号" name="loginName" placeholder="若没有工号,请忽略此项" v-model="item.loginName"></van-field>-->
<van-field label="年龄" name="age" placeholder="请填写年龄" v-model="item.age"
type="digit" :rules="[{ required: true }]"></van-field>
<van-field
label="年龄"
name="age"
placeholder="请填写年龄"
v-model="item.age"
type="digit"
:rules="[{ required: true }]"
></van-field>
<van-field :rules="[{ required: true, message: '请选择性别' }]" label="性别" name="validator">
<template #input>
<van-radio-group direction="horizontal" v-model="item.sex">
@@ -355,28 +380,60 @@ layout("/mobile/platform.html"){
</van-radio-group>
</template>
</van-field>
<van-field label="身份证号" name="idCard" placeholder="请填写身份证号"
:rules="[{ required: true }]" type="digit"
v-model="item.idCard"></van-field>
<van-field label="手机号" name="mobile" placeholder="请填写手机号"
:rules="[{ required: true }]" type="digit"
v-model="item.mobile"></van-field>
<van-field @click="companionVisible = true" readonly is-link label="与本人关系"
name="relation"
placeholder="随行人与本人关系" v-model="item.relation"
:rules="[{ required: true }]"></van-field>
<van-field
label="身份证号"
name="idCard"
placeholder="请填写身份证号"
:rules="[{ required: true }]"
type="digit"
v-model="item.idCard"
></van-field>
<van-field
label="手机号"
name="mobile"
placeholder="请填写手机号"
:rules="[{ required: true }]"
type="digit"
v-model="item.mobile"
></van-field>
<van-field
@click="companionVisible = true"
readonly
is-link
label="与本人关系"
name="relation"
placeholder="随行人与本人关系"
v-model="item.relation"
:rules="[{ required: true }]"
></van-field>
<van-field @click="self = false; roomVisible = true" readonly is-link label="房间"
name="bedType" placeholder="请选择房间"
v-model="item.bedInfo.bedType"></van-field>
<div style="font-size: 12px; color:orangered; padding-left: 16px; padding-bottom: 4px">
<van-field
@click="self = false; roomVisible = true"
readonly
is-link
label="房间"
name="bedType"
placeholder="请选择房间"
v-model="item.bedInfo.bedType"
></van-field>
<div style="font-size: 12px; color: orangered; padding-left: 16px; padding-bottom: 4px">
提醒:如果跟报名人员同一房间,无须选择!
</div>
<van-field v-if="item.bedInfo.bedType == '标准间'" @click="self = false; bedVisible = true"
readonly is-link label="床位"
name="bedNum" placeholder="请选择床位" v-model="item.bedInfo.bedNum"></van-field>
<van-field v-if="item.bedInfo.bedType == '标准间'"
:rules="[{ validator, message: '请选择是否拼房' }]" label="是否拼房">
<van-field
v-if="item.bedInfo.bedType == '标准间'"
@click="self = false; bedVisible = true"
readonly
is-link
label="床位"
name="bedNum"
placeholder="请选择床位"
v-model="item.bedInfo.bedNum"
></van-field>
<van-field
v-if="item.bedInfo.bedType == '标准间'"
:rules="[{ validator, message: '请选择是否拼房' }]"
label="是否拼房"
>
<template #input>
<van-radio-group direction="horizontal" v-model="item.bedInfo.isSleepTogether">
<van-radio :name="true" shape="square">是</van-radio>
@@ -384,83 +441,72 @@ layout("/mobile/platform.html"){
</van-radio-group>
</template>
</van-field>
<van-field v-if="item.bedInfo.bedType == '标准间' && item.bedInfo.isSleepTogether == true"
label="意向拼房人" name="otherSleepUser" placeholder="多个拼房人请用,隔开"
v-model="item.bedInfo.otherSleepUser"></van-field>
<van-field
v-if="item.bedInfo.bedType == '标准间' && item.bedInfo.isSleepTogether == true"
label="意向拼房人"
name="otherSleepUser"
placeholder="多个拼房人请用,隔开"
v-model="item.bedInfo.otherSleepUser"
></van-field>
</van-tab>
</van-tabs>
</div>
<div v-if="formData.companionList.length == 0" class="companionList_empty_text">
<span>
如有随行人出行,请添加随行人
</span>
<span>如有随行人出行,请添加随行人</span>
</div>
</div>
<div class="submitButton">
<van-button class="join join_submit">提交报名</van-button>
</div>
</van-form>
</div>
</van-popup>
<!--房间类型弹出框-->
<van-popup position="bottom" round v-model="roomVisible">
<van-picker
title="入住房间" show-toolbar
:columns="roomColumns"
@confirm="roomConfirm"
@cancel="roomCancel">
</van-picker>
<van-picker title="入住房间" show-toolbar :columns="roomColumns" @confirm="roomConfirm" @cancel="roomCancel"></van-picker>
</van-popup>
<!--床位弹出框-->
<van-popup position="bottom" round v-model="bedVisible">
<van-picker
title="床位" show-toolbar
:columns="bedColumns"
@confirm="bedConfirm"
@cancel="bedVisible = false">
</van-picker>
<van-picker title="床位" show-toolbar :columns="bedColumns" @confirm="bedConfirm" @cancel="bedVisible = false"></van-picker>
</van-popup>
<!--随行人关系弹出框-->
<van-popup position="bottom" round v-model="companionVisible">
<van-picker
title="与本人关系" show-toolbar
:columns="companionColumns"
@confirm="(value, index) => {formData.companionList[active].relation = value; companionVisible = false}"
@cancel="companionVisible = false">
</van-picker>
title="与本人关系"
show-toolbar
:columns="companionColumns"
@confirm="(value, index) => {formData.companionList[active].relation = value; companionVisible = false}"
@cancel="companionVisible = false"
></van-picker>
</van-popup>
</div>
<script>
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return decodeURI(r[2]);
return null;
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")
var r = window.location.search.substr(1).match(reg)
if (r != null) return decodeURI(r[2])
return null
}
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
active: 0,
roomColumns: ['大床房', '标准间'],
bedColumns: ['1', '2'],
companionColumns: ['亲属', '朋友'],
roomColumns: ["大床房", "标准间"],
bedColumns: ["1", "2"],
companionColumns: ["亲属", "朋友"],
bedVisible: false,
roomVisible: false,
companionVisible: false,
joinPopup: false,
skeLoading: true,
id: '',
id: "",
lineData: {},
formData: {
userName: "${@shiro.getPrincipalProperty('username')}",
@@ -468,25 +514,25 @@ layout("/mobile/platform.html"){
unionName: "${@shiro.getPrincipalProperty('union').getUnionname()}",
idCard: "",
mobile: "${@shiro.getPrincipalProperty('mobile')}",
lineName: '',
takePartInLineId: '',
takePartInUnionId: '',
lineName: "",
takePartInLineId: "",
takePartInUnionId: "",
companionList: [],
bedInfo: {},
bedInfo: {}
},
self: true,
btnFlag: false,
index: 0,
scrollTop: 0,
fromUrlByMy: '',
enrollId: '',
configData: {},
fromUrlByMy: "",
enrollId: "",
configData: {}
}
},
methods: {
roomCancel() {
if (!this.self) {
this.formData.companionList[this.active].bedInfo.bedType = ''
this.formData.companionList[this.active].bedInfo.bedType = ""
}
this.roomVisible = false
},
@@ -514,66 +560,68 @@ layout("/mobile/platform.html"){
duration: 0,
forbidClick: true,
overlay: true,
message: '努力提交中',
message: "努力提交中"
})
const cloneData = clone(this.formData)
cloneData.companionList.forEach((item, index) => {
if (item.userName === '') {
if (item.userName === "") {
cloneData.companionList.splice(index, 1)
}
})
const resp = await $.post('/platform/theRapyRecuperation/line/enroll/doSignUpForLine', {
enroll: JSON.stringify(cloneData),
const resp = await $.post("/platform/theRapyRecuperation/line/enroll/doSignUpForLine", {
enroll: JSON.stringify(cloneData)
})
setTimeout(() => {
if (resp.code === 0) {
toast.message = '提交成功'
toast.type = 'success'
toast.message = "提交成功"
toast.type = "success"
} else {
toast.message = resp.msg
toast.type = 'fail'
toast.type = "fail"
}
setTimeout(() => {
toast.clear()
}, 500)
if (resp.code === 0) {
location.href = '/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.index
location.href = "/platform/mobile/theRapyRecuperation/myRecuperation?index=" + this.index
}
}, 1000)
},
addCompanion() {
this.formData.companionList.push({userName: '', loginName: '', sex: '', relation: '', bedInfo: {}})
this.formData.companionList.push({ userName: "", loginName: "", sex: "", relation: "", bedInfo: {} })
},
delCompanion() {
this.formData.companionList.splice(this.active, 1)
},
async join() {
const re = await $.post('/platform/theRapyRecuperation/line/enroll/validSignUpInfo', {
const re = await $.post("/platform/theRapyRecuperation/line/enroll/validSignUpInfo", {
enroll: JSON.stringify({
id: this.enrollId,
isNormal: this.lineData.isNormal,
takePartInLineId: this.lineData.usId,
takePartInUnionId: this.takePartInUnionId
}),
})
})
if (re.code !== 0) {
if(re.msg === '您今年已报名,如要继续报名请进入我的疗休养,取消已选择') {
if (re.msg === "您今年已报名,如要继续报名请进入我的疗休养,取消已选择") {
vant.Dialog.confirm({
title: '温馨提示',
title: "温馨提示",
message: re.msg,
confirmButtonText: '跳转页面',
}).then(() => {
location.href = '/platform/mobile/theRapyRecuperation/myRecuperation?index=' + this.index
}).catch(() => {});
confirmButtonText: "跳转页面"
})
.then(() => {
location.href = "/platform/mobile/theRapyRecuperation/myRecuperation?index=" + this.index
})
.catch(() => {})
} else {
vant.Dialog.alert({
title: '温馨提示',
message: re.msg,
title: "温馨提示",
message: re.msg
}).then(() => {})
}
return
}
if (this.fromUrlByMy !== 'editDo') {
if (this.fromUrlByMy !== "editDo") {
this.formData = {
userName: "${@shiro.getPrincipalProperty('username')}",
loginName: "${@shiro.getPrincipalProperty('loginname')}",
@@ -584,14 +632,14 @@ layout("/mobile/platform.html"){
takePartInLineId: this.lineData.usId,
takePartInUnionId: this.takePartInUnionId,
companionList: [],
bedInfo: {},
bedInfo: {}
}
this.$set(this.formData.bedInfo, 'bedType', '大床房')
this.$set(this.formData.bedInfo, "bedType", "大床房")
}
this.joinPopup = true
},
async getData() {
const res = await $.get('/platform/theRapyRecuperation/line/enroll/selectLineAllInfo', {
const res = await $.get("/platform/theRapyRecuperation/line/enroll/selectLineAllInfo", {
usId: this.id,
usUnionId: this.takePartInUnionId
})
@@ -617,18 +665,18 @@ layout("/mobile/platform.html"){
scrollToTop() {
const that = this
that.scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
that.btnFlag = that.scrollTop > 100;
that.btnFlag = that.scrollTop > 100
},
//修改时查询报名信息,进行回显
async findSignUpInfoById() {
const res = await $.post('/platform/theRapyRecuperation/line/enroll/findSignUpInfoById/' + this.enrollId)
const res = await $.post("/platform/theRapyRecuperation/line/enroll/findSignUpInfoById/" + this.enrollId)
if (res.code === 0) {
this.formData = res.data
if (this.formData.bedInfo === null) {
this.formData.bedInfo = {}
}
if (this.formData.companionList) {
this.formData.companionList.forEach(item => {
this.formData.companionList.forEach((item) => {
if (item.bedInfo === null) {
item.bedInfo = {}
}
@@ -638,35 +686,35 @@ layout("/mobile/platform.html"){
}
},
async getConfigData() {
const resp = await $.get('/platform/theRapyRecuperation/TheRapyConfig/findOne')
const resp = await $.get("/platform/theRapyRecuperation/TheRapyConfig/findOne")
this.configData = resp.data
},
}
},
async created() {
this.id = getQueryString('id') ? getQueryString('id') : ''
this.index = getQueryString('index') ? getQueryString('index') : ''
this.id = getQueryString("id") ? getQueryString("id") : ""
this.index = getQueryString("index") ? getQueryString("index") : ""
await this.getConfigData()
//编辑传出来的参数
this.fromUrlByMy = getQueryString('fromUrlByMy') ? getQueryString('fromUrlByMy') : ''
this.enrollId = getQueryString('enrollId') ? getQueryString('enrollId') : ''
this.takePartInUnionId = getQueryString('takePartInUnionId') ? getQueryString('takePartInUnionId') : ''
this.fromUrlByMy = getQueryString("fromUrlByMy") ? getQueryString("fromUrlByMy") : ""
this.enrollId = getQueryString("enrollId") ? getQueryString("enrollId") : ""
this.takePartInUnionId = getQueryString("takePartInUnionId") ? getQueryString("takePartInUnionId") : ""
if (this.enrollId) {
await this.findSignUpInfoById()
}
this.getData()
},
mounted() {
window.addEventListener('scroll', this.scrollToTop)
document.addEventListener('click', function (event) {
window.addEventListener("scroll", this.scrollToTop)
document.addEventListener("click", function (event) {
// 打印被点击的元素标签名和 class
if (event.target.tagName === 'IMG' && event.target.className !== 'top_icon') {
if (event.target.tagName === "IMG" && event.target.className !== "top_icon") {
vant.ImagePreview([event.target.src])
}
})
},
destroyed() {
window.removeEventListener('scroll', this.scrollToTop)
},
window.removeEventListener("scroll", this.scrollToTop)
}
})
</script>
@@ -126,7 +126,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="疗休养线路"></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder title="疗休养线路"></van-nav-bar>
</van-sticky>
<van-dropdown-menu>
@@ -176,7 +176,7 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar @click-left="history.back()" fixed left-arrow placeholder title="我的疗休养"></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" fixed left-arrow placeholder title="我的疗休养"></van-nav-bar>
</van-sticky>
<van-dropdown-menu>
@@ -47,7 +47,8 @@ layout("/mobile/platform.html"){
max-height: 200px;
}
.van-image__error, .van-image__loading {
.van-image__error,
.van-image__loading {
height: 200px;
position: relative;
}
@@ -63,64 +64,78 @@ layout("/mobile/platform.html"){
right: -8px;
padding: 1px 7px;
transform: rotate(17deg);
}
</style>
<div id="app" v-cloak>
<van-nav-bar title="活动列表" left-arrow placeholder fixed
@click-left="location.replace('/mobile/index')"></van-nav-bar>
<van-nav-bar title="活动列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="pageForm.year" :options="yearList"
@change="formChange"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.activityStatus" :options="activityStatusList"
@change="formChange"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" :options="yearList" @change="formChange"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.activityStatus" :options="activityStatusList" @change="formChange"></van-dropdown-item>
</van-dropdown-menu>
</div>
<!-- <van-sticky>-->
<!-- <van-nav-bar title="活动列表" left-arrow-->
<!-- @click-left="location.replace('/mobile/index')"></van-nav-bar>-->
<!-- </van-sticky>-->
<!-- <van-sticky>-->
<!-- <van-nav-bar title="活动列表" left-arrow-->
<!-- @click-left="location.replace('/mobile/index')"></van-nav-bar>-->
<!-- </van-sticky>-->
<!-- <van-sticky>-->
<!-- <van-tabs v-model="pageForm.activityStatus" @change="tabChange">-->
<!-- <van-tab title="全部" name="0"></van-tab>-->
<!-- <van-tab v-if="type !== 'my'" title="进行中" name="1"></van-tab>-->
<!-- <van-tab v-if="type === 'my'" title="进行中" name="3"></van-tab>-->
<!-- <van-tab title="已结束" name="2"></van-tab>-->
<!-- </van-tabs>-->
<!-- </van-sticky>-->
<!-- <van-sticky>-->
<!-- <van-tabs v-model="pageForm.activityStatus" @change="tabChange">-->
<!-- <van-tab title="全部" name="0"></van-tab>-->
<!-- <van-tab v-if="type !== 'my'" title="进行中" name="1"></van-tab>-->
<!-- <van-tab v-if="type === 'my'" title="进行中" name="3"></van-tab>-->
<!-- <van-tab title="已结束" name="2"></van-tab>-->
<!-- </van-tabs>-->
<!-- </van-sticky>-->
<div style="margin: 60px auto 80px auto">
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData">
<van-list
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData"
>
<div v-for="o in tableData" class="van-doc-card">
<!-- <div class="tag" v-if="moment(o.activitySignUpStartTime).unix() > moment().unix()">即将开始</div>-->
<!-- <div class="tag" v-if="moment(o.activitySignUpStartTime).unix() > moment().unix()">即将开始</div>-->
<div>
<div class="tag" style="background-color: #bc62c5" v-if="o.isDisabled">活动未开启</div>
<div class="tag" v-else-if="!o.isDisabled && moment(o.activitySignUpStartTime).valueOf() > moment().valueOf()">未开始报名</div>
<div class="tag" v-else-if="!o.isDisabled &&moment(o.activitySignUpEndTime).valueOf() > moment().valueOf() && moment().valueOf() > moment(o.activitySignUpStartTime).valueOf()">报名中</div>
<div class="tag" style="background-color: #f14646" v-else-if="!o.isDisabled &&moment(o.activityEndTime).valueOf() < moment().valueOf() && moment().valueOf() < moment(o.activityStartTime).valueOf()">报名结束</div>
<div class="tag" v-else-if="!o.isDisabled &&moment(o.activityStartTime).valueOf() < moment().valueOf() && moment().valueOf() < moment(o.activityEndTime).valueOf()">活动进行中</div>
<div class="tag" style="background-color: #f14646" v-else-if="!o.isDisabled &&moment().valueOf() > moment(o.activityEndTime).valueOf()">活动结束</div>
<div
class="tag"
v-else-if="!o.isDisabled &&moment(o.activitySignUpEndTime).valueOf() > moment().valueOf() && moment().valueOf() > moment(o.activitySignUpStartTime).valueOf()"
>
报名中
</div>
<div
class="tag"
style="background-color: #f14646"
v-else-if="!o.isDisabled &&moment(o.activityEndTime).valueOf() < moment().valueOf() && moment().valueOf() < moment(o.activityStartTime).valueOf()"
>
报名结束
</div>
<div
class="tag"
v-else-if="!o.isDisabled &&moment(o.activityStartTime).valueOf() < moment().valueOf() && moment().valueOf() < moment(o.activityEndTime).valueOf()"
>
活动进行中
</div>
<div
class="tag"
style="background-color: #f14646"
v-else-if="!o.isDisabled &&moment().valueOf() > moment(o.activityEndTime).valueOf()"
>
活动结束
</div>
</div>
<div @click="welfareClick(o)">
<div>
<van-image :src="CREATE_PREVIEW_URL(o.cover.id)"
style="display: contents"
v-if="o.cover && o.cover.filepath"></van-image>
<van-image src=""
style="display: contents"
v-else></van-image>
<van-image :src="CREATE_PREVIEW_URL(o.cover.id)" style="display: contents" v-if="o.cover && o.cover.filepath"></van-image>
<van-image src="" style="display: contents" v-else></van-image>
</div>
<div>
<div class="van-ellipsis" style="margin-top: 6px; font-size: 15px;font-weight: bold;flex: 1">
{{o.activityName}}
</div>
<div class="van-ellipsis" style="margin-top: 6px; font-size: 15px; font-weight: bold; flex: 1">{{o.activityName}}</div>
</div>
<div>
<div class="train-title">
@@ -135,44 +150,45 @@ layout("/mobile/platform.html"){
</div>
<div class="train-title">
<span style="color: grey">报名时间:</span>
<span>{{moment(o.activitySignUpStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(o.activitySignUpEndTime).format('YYYY-MM-DD HH:mm')}}</span>
<span>
{{moment(o.activitySignUpStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(o.activitySignUpEndTime).format('YYYY-MM-DD HH:mm')}}
</span>
</div>
<div style="margin-top: 6px">
<span style="color: grey">活动时间:</span>
<span>{{moment(o.activityStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' +
moment(o.activityEndTime).format('YYYY-MM-DD HH:mm')}}</span>
<span>
{{moment(o.activityStartTime).format('YYYY-MM-DD HH:mm') + ' ~ ' + moment(o.activityEndTime).format('YYYY-MM-DD HH:mm')}}
</span>
</div>
</div>
</div>
</van-list>
<van-empty v-else description="暂无数据"></van-empty>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
type: '',
type: "",
pageForm: {
year: '',
year: "",
activityStatus: null
},
activityLevelList: [],
activityStatusList: [
{text: '全部', value: 1},
{ text: "全部", value: 1 },
// {text: '未开启', value: 5},
{text: '未开始', value: 6},
{text: '报名中', value: 2},
{text: '进行中', value: 3},
{text: '已结束', value: 4}
{ text: "未开始", value: 6 },
{ text: "报名中", value: 2 },
{ text: "进行中", value: 3 },
{ text: "已结束", value: 4 }
]
}
},
@@ -183,24 +199,32 @@ layout("/mobile/platform.html"){
this.pageData()
},
async welfareClick(o) {
if (o.isDisabled){
this.$toast('活动未开启')
return;
if (o.isDisabled) {
this.$toast("活动未开启")
return
}
if (moment(o.applyStartTime).valueOf() > moment().valueOf()) {
this.$toast('活动未开始报名')
return;
this.$toast("活动未开始报名")
return
}
if (this.type === 'my') {
window.location.href = '/platform/mobile/trainSignUpActivity/trainInfo' +
'?activityId=' + o.id + '&endTime=' + o.activitySignUpEndTime + '&type=my' + '&startTime=' + o.activitySignUpStartTime
if (this.type === "my") {
window.location.href =
"/platform/mobile/trainSignUpActivity/trainInfo" +
"?activityId=" +
o.id +
"&endTime=" +
o.activitySignUpEndTime +
"&type=my" +
"&startTime=" +
o.activitySignUpStartTime
} else {
window.location.href = '/platform/mobile/trainSignUpActivity/activityInfo?activityId=' + o.id + '&endTime=' + o.activitySignUpEndTime
window.location.href =
"/platform/mobile/trainSignUpActivity/activityInfo?activityId=" + o.id + "&endTime=" + o.activitySignUpEndTime
}
},
async pageData() {
this.mLoading = true
const resp = await $.post('/platform/mobile/trainSignUpActivity/pageData', this.pageForm)
const resp = await $.post("/platform/mobile/trainSignUpActivity/pageData", this.pageForm)
if (resp.code === 0) {
if (resp.data.list.length === 0) {
this.tableData = []
@@ -215,7 +239,7 @@ layout("/mobile/platform.html"){
this.pageForm.pageNumber++
}
}
this.loading = false;
this.loading = false
this.mLoading = false
},
tabChange(val) {
@@ -226,14 +250,14 @@ layout("/mobile/platform.html"){
this.pageData()
this.closeLoading()
},
async init(){
async init() {
this.$set(this.pageForm, "activityStatus", 1)
this.$set(this.pageForm, "year", new Date().getFullYear())
}
},
async created() {
await this.init()
this.type = GetQueryString('type')
this.type = GetQueryString("type")
this.pageForm.type = this.type
this.startLoading()
// this.pageForm.activityStatus = this.type === 'my' ? '3' : '1'
@@ -3,9 +3,8 @@ layout("/mobile/platform.html"){
#-->
<style>
#app {
background: #FFFFFF;
background: #ffffff;
}
.topTitle {
@@ -26,61 +25,42 @@ layout("/mobile/platform.html"){
line-height: 30px;
}
.newest-video, .nav-button {
.newest-video,
.nav-button {
padding: 0 20px;
}
</style>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="视频资料"
left-arrow
placeholder
fixed
@click-left="window.history.back()"
></van-nav-bar>
<van-nav-bar title="视频资料" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="newest-video">
<h4>{{typeName}}</h4>
</div>
<div class="nav-button">
<van-button type="info" :plain="pageForm.searchType !== 'new'" size="small" @click="searchTypeClick('new')">
最新视频
</van-button>
<van-button type="info" :plain="pageForm.searchType !== 'most'" size="small" @click="searchTypeClick('most')">
播放最多
</van-button>
<van-button type="info" :plain="pageForm.searchType !== null" size="small" @click="searchTypeClick(null)">全部
</van-button>
<van-button type="info" :plain="pageForm.searchType !== 'new'" size="small" @click="searchTypeClick('new')">最新视频</van-button>
<van-button type="info" :plain="pageForm.searchType !== 'most'" size="small" @click="searchTypeClick('most')">播放最多</van-button>
<van-button type="info" :plain="pageForm.searchType !== null" size="small" @click="searchTypeClick(null)">全部</van-button>
</div>
<van-divider></van-divider>
<div style="margin: 20px auto 0 auto;position: relative">
<van-list v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
:immediate-check="false"
@load="pageData">
<div style="margin: 20px auto 0 auto; position: relative">
<van-list
v-model="loading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
:immediate-check="false"
@load="pageData"
>
<div v-for="o in tableData" class="list-card" @click="goVideoPage(o)">
<div style="display: flex;padding-bottom: 10px" class="van-hairline--bottom">
<van-image
style="margin-right: 10px"
width="90"
height="90"
:src="FILE_DOMAIN+'/fileStreamPreview?id='+o.cover"
></van-image>
<div style="display: flex; padding-bottom: 10px" class="van-hairline--bottom">
<van-image style="margin-right: 10px" width="90" height="90" :src="FILE_DOMAIN+'/fileStreamPreview?id='+o.cover"></van-image>
<div class="list-item">
<div style="font-size: 14px">{{o.title}}</div>
<div class="van-ellipsis" style="color: darkgray;font-size: 13px">
{{removeHTMLTag(o.description)}}
</div>
<div class="van-ellipsis" style="color: darkgray; font-size: 13px">{{removeHTMLTag(o.description)}}</div>
<div>
<van-tag plain type="primary">{{o.videoCount}}个视频</van-tag>
</div>
@@ -90,19 +70,14 @@ layout("/mobile/platform.html"){
</van-list>
</div>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg"
description="暂无数据">
</van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<script>
<!--#include("/platform/trainEdu/include/include.js"){}#-->
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -116,7 +91,7 @@ layout("/mobile/platform.html"){
methods: {
async pageData() {
this.mLoading = true
const {data} = await $.get('/mobile/trainEducation/getAlbumList', this.pageForm)
const { data } = await $.get("/mobile/trainEducation/getAlbumList", this.pageForm)
setTimeout(() => {
this.tableData = this.tableData.concat(data.list)
if (this.tableData.length === data.totalCount) {
@@ -140,16 +115,16 @@ layout("/mobile/platform.html"){
this.pageData()
},
goVideoPage(item) {
window.location.href = '/mobile/trainEducation/videoPage?id=' + item.id
window.location.href = "/mobile/trainEducation/videoPage?id=" + item.id
}
},
async created() {
this.videoTypeList = await getVideoType()
const typeId = this.GetQueryString("id")
const type = this.videoTypeList.find(v => parseInt(v.id) === parseInt(typeId))
const type = this.videoTypeList.find((v) => parseInt(v.id) === parseInt(typeId))
this.typeName = type.typeName
if (typeId) {
this.$set(this.pageForm, 'typeId', typeId)
this.$set(this.pageForm, "typeId", typeId)
await this.pageData()
}
}
@@ -158,4 +133,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -23,91 +23,73 @@ layout("/mobile/platform.html"){
height: 30px;
line-height: 30px;
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title="培训教育"
left-arrow
placeholder
fixed
@click-left="history.back()"
></van-nav-bar>
<van-nav-bar title="培训教育" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-swiper>
<van-swiper-item>
<van-image
fit="contain"
:src="topImg" alt="">
</van-image>
<van-image fit="contain" :src="topImg" alt=""></van-image>
</van-swiper-item>
</van-swiper>
<van-grid :column-num="3" :border="false">
<van-grid-item v-for="item in videoTypeList"
:url="'/mobile/trainEducation/AlbumList?id=' + item.id"
:key="item.id"
:icon="FILE_DOMAIN+'/fileStreamPreview?id='+item.icon"
:text="item.typeName"></van-grid-item>
<van-grid-item
v-for="item in videoTypeList"
:url="'/mobile/trainEducation/AlbumList?id=' + item.id"
:key="item.id"
:icon="FILE_DOMAIN+'/fileStreamPreview?id='+item.icon"
:text="item.typeName"
></van-grid-item>
</van-grid>
<div style="height: 5px;background-color: #f6f7f9"></div>
<div style="height: 5px; background-color: #f6f7f9"></div>
<div class="newest-video">
<h4>最新视频</h4>
</div>
<div v-for="o in tableData" class="list-card" @click="goVideoPage(o)">
<div style="display: flex;padding-bottom: 10px" class="van-hairline--bottom">
<van-image
style="margin-right: 10px"
width="90"
height="90"
:src="FILE_DOMAIN+'/fileStreamPreview?id='+o.cover"
></van-image>
<div style="display: flex; padding-bottom: 10px" class="van-hairline--bottom">
<van-image style="margin-right: 10px" width="90" height="90" :src="FILE_DOMAIN+'/fileStreamPreview?id='+o.cover"></van-image>
<div class="list-item">
<div style="font-size: 14px">{{o.title}}</div>
<div class="van-ellipsis" style="color: darkgray;font-size: 13px">
{{removeHTMLTag(o.description)}}
</div>
<div class="van-ellipsis" style="color: darkgray; font-size: 13px">{{removeHTMLTag(o.description)}}</div>
<div>
<van-tag plain type="primary">{{o.videoCount}}个视频</van-tag>
</div>
</div>
</div>
</div>
</div>
<script>
<!--#include("/platform/trainEdu/include/include.js"){}#-->
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
videoTypeList: [],
topImg: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fbpic.588ku.com%2Fback_pic%2F05%2F55%2F78%2F725b1593ced0c43.jpg&refer=http%3A%2F%2Fbpic.588ku.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1642838257&t=cce87815db1b5e740bce9dc9357c7eaa'
topImg: "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fbpic.588ku.com%2Fback_pic%2F05%2F55%2F78%2F725b1593ced0c43.jpg&refer=http%3A%2F%2Fbpic.588ku.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1642838257&t=cce87815db1b5e740bce9dc9357c7eaa"
}
},
methods: {
goVideoPage(item) {
window.location.href = '/mobile/trainEducation/videoPage?id=' + item.id
window.location.href = "/mobile/trainEducation/videoPage?id=" + item.id
},
async getNewVideo() {
this.tableData = []
const {data} = await $.get('/mobile/trainEducation/getNewestVideo')
const { data } = await $.get("/mobile/trainEducation/getNewestVideo")
this.tableData.push(data)
}
},
async created() {
const videoTypeList = await getVideoType()
if (videoTypeList.length > 0) {
videoTypeList.map(v => {
videoTypeList.map((v) => {
if (v.files) {
v.icon = JSON.parse(v.files)[0].id
}
@@ -121,4 +103,4 @@ layout("/mobile/platform.html"){
<!--#
}
#-->
#-->
@@ -3,7 +3,7 @@ layout("/mobile/platform.html"){
#-->
<script src="https://cdn-go.cn/cdn/vod-js-sdk-v6/latest/vod-js-sdk-v6.js"></script>
<link href="https://web.sdk.qcloud.com/player/tcplayer/release/v4.3.0/tcplayer.min.css" rel="stylesheet"/>
<link href="https://web.sdk.qcloud.com/player/tcplayer/release/v4.3.0/tcplayer.min.css" rel="stylesheet" />
<!--如果需要在 Chrome 和 Firefox 等现代浏览器中通过 H5 播放 HLS 格式的视频,需要在 tcplayer.vx.x.x.min.js 之前引入 hls.min.x.xx.xm.js。-->
<script src="https://web.sdk.qcloud.com/player/tcplayer/release/v4.3.0/libs/hls.min.0.13.2m.js"></script>
<!--播放器脚本文件-->
@@ -11,7 +11,7 @@ layout("/mobile/platform.html"){
<style>
#app {
background: #FFFFFF;
background: #ffffff;
}
.video-container {
@@ -57,41 +57,24 @@ layout("/mobile/platform.html"){
word-wrap: break-word;
word-break: break-all;
}
</style>
<div id="app" v-cloak>
<van-nav-bar
title=""
left-arrow
placeholder
fixed
@click-left="window.history.back()"
></van-nav-bar>
<van-nav-bar title="" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="video-container">
<video v-if="isPlay" id="player-container-id" preload="auto" playsinline
webkit-playsinline>
</video>
<van-image
v-else
style="width: 100%;height: 100%"
:src="FILE_DOMAIN+'/fileStreamPreview?id='+albumInfo.cover"
></van-image>
<video v-if="isPlay" id="player-container-id" preload="auto" playsinline webkit-playsinline></video>
<van-image v-else style="width: 100%; height: 100%" :src="FILE_DOMAIN+'/fileStreamPreview?id='+albumInfo.cover"></van-image>
</div>
<van-tabs v-model="tabIndex" sticky>
<van-tab title="介绍">
<div style="height: 5px;background-color: #f6f7f9"></div>
<div style="height: 5px; background-color: #f6f7f9"></div>
<div style="padding: 16px">
{{albumInfo.title}}
</div>
<div style="padding: 16px">{{albumInfo.title}}</div>
<div style="height: 5px;background-color: #f6f7f9"></div>
<div style="height: 5px; background-color: #f6f7f9"></div>
<van-cell class="descriptionCell">
<template #title>
@@ -101,29 +84,20 @@ layout("/mobile/platform.html"){
<div class="album-description" v-html="albumInfo.description"></div>
</template>
</van-cell>
</van-tab>
<van-tab title="目录">
<div style="height: 5px;background-color: #f6f7f9"></div>
<div style="height: 5px; background-color: #f6f7f9"></div>
<van-cell-group class="video-list">
<van-cell v-for="(o,i) in videoList" @click="playVideo(o)">
<template #title>
<van-tag plain type="primary" style="margin-right: 10px">视频</van-tag>
<span style="margin-right: 10px">
{{i+1}}.
</span>
<span>
{{o.title}}
</span>
</template>
<template #label>
{{getWatchStatus(o)}}
<span style="margin-right: 10px">{{i+1}}.</span>
<span>{{o.title}}</span>
</template>
<template #label>{{getWatchStatus(o)}}</template>
<template>
<span v-if="o.id === currentVideo.id">
播放中
</span>
<span v-if="o.id === currentVideo.id">播放中</span>
</template>
</van-cell>
</van-cell-group>
@@ -137,15 +111,13 @@ layout("/mobile/platform.html"){
<!-- </van-cell>-->
<!-- </van-tab>-->
</van-tabs>
</div>
<script>
let player = null
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -160,17 +132,15 @@ layout("/mobile/platform.html"){
watchRecordList: [],
lastTime: 0,
isPlay: false
}
},
methods: {
async getVideoInfo() {
const {data} = await $.get('/mobile/trainEducation/getVideoList', {albumId: this.albumId})
const { data } = await $.get("/mobile/trainEducation/getVideoList", { albumId: this.albumId })
this.videoList = data
},
async getAlbumInfo() {
const {data} = await $.get('/mobile/trainEducation/getAlbumInfo', {id: this.albumId})
const { data } = await $.get("/mobile/trainEducation/getAlbumInfo", { id: this.albumId })
this.albumInfo = data
},
//播放视频
@@ -178,19 +148,18 @@ layout("/mobile/platform.html"){
this.isPlay = true
this.currentVideo = o
this.$nextTick(()=>{
this.$nextTick(() => {
if (!player) {
player = TCPlayer('player-container-id', {})
player = TCPlayer("player-container-id", {})
}
player.src(o.mediaUrl)
})
// await this.addWatchRecord()
await this.getMyWatchRecord()
//接着上次继续看
const v = this.watchRecordList.find(v => v.videoId === o.id)
const v = this.watchRecordList.find((v) => v.videoId === o.id)
if (v) {
this.lastTime = v.watchDuration
setTimeout(() => {
@@ -211,14 +180,14 @@ layout("/mobile/platform.html"){
//快进 快退
playSeeked() {
player.on('seeked', () => {
player.on("seeked", () => {
this.lastTime = player.currentTime()
this.addWatchRecord()
})
},
playTimeUpdate() {
this.lastTime = player.currentTime()
player.on('timeupdate', () => {
player.on("timeupdate", () => {
const nowTime = player.currentTime()
if (nowTime - this.lastTime > 5) {
this.lastTime = nowTime
@@ -227,16 +196,16 @@ layout("/mobile/platform.html"){
})
},
playPause() {
player.on('pause', () => {
player.on("pause", () => {
this.addWatchRecord()
})
},
playEnd() {
player.on('ended', () => {
player.on("ended", () => {
this.addWatchRecord()
this.getMyWatchRecord()
const currentIndex = this.videoList.findIndex(v => v.id === this.currentVideo.id)
const currentIndex = this.videoList.findIndex((v) => v.id === this.currentVideo.id)
const nextVideo = this.videoList[currentIndex + 1]
if (nextVideo) {
this.playVideo(nextVideo)
@@ -254,12 +223,12 @@ layout("/mobile/platform.html"){
currentTime: parseInt(player.currentTime()),
albumId: this.currentVideo.albumId
}
await $.post('/mobile/trainEducation/addWatchRecord', params)
await $.post("/mobile/trainEducation/addWatchRecord", params)
},
//监听页面关闭 隐藏
watchPage() {
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'hidden') {
document.addEventListener("visibilitychange", () => {
if (document.visibilityState === "hidden") {
if (player && this.currentVideo) {
this.addWatchRecord()
}
@@ -267,18 +236,18 @@ layout("/mobile/platform.html"){
})
},
async getMyWatchRecord() {
const {data} = await $.get('/mobile/trainEducation/getMyWatchRecord')
const { data } = await $.get("/mobile/trainEducation/getMyWatchRecord")
this.watchRecordList = data
},
getWatchStatus(video) {
const v = this.watchRecordList.find(v => v.videoId === video.id)
const v = this.watchRecordList.find((v) => v.videoId === video.id)
if (!v) {
return '学习进度:还未开始学习'
return "学习进度:还未开始学习"
}
if (v.videoId === this.currentVideo.id) {
return '学习进度:正在学习中'
return "学习进度:正在学习中"
}
const percentage = (parseInt((v.watchDuration / (video.fileDuration - 1)).toFixed(2) * 100)) + "%"
const percentage = parseInt((v.watchDuration / (video.fileDuration - 1)).toFixed(2) * 100) + "%"
return "学习进度:" + percentage
}
},
@@ -291,7 +260,6 @@ layout("/mobile/platform.html"){
this.getVideoInfo()
this.getMyWatchRecord()
}
}
})
</script>
@@ -27,7 +27,7 @@ layout("/mobile/platform.html"){
}
</style>
<div id="app">
<van-nav-bar title="民主测评列表" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="民主测评列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
@@ -26,7 +26,7 @@ layout("/mobile/platform.html"){
}
.van-collapse-item .van-cell__title :before {
content: '';
content: "";
display: inline-block;
height: 15px;
background-color: #0e5996;
@@ -56,13 +56,11 @@ layout("/mobile/platform.html"){
.van-button {
height: 40px;
margin: 6px 20px
margin: 6px 20px;
}
</style>
<div id="app">
<van-nav-bar title="民主测评" left-arrow placeholder fixed
@click-left="history.back()"></van-nav-bar>
<van-nav-bar title="民主测评" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div>
<van-form ref="addForm" :show-error-message="false" style="margin-bottom: 60px">
@@ -74,55 +72,57 @@ layout("/mobile/platform.html"){
<!-- v-for测评指标 -->
<div v-for="item in o.bzs" style="margin-top: 10px" class="content_div">
<div>
<div style="font-size: 15px;color: black">
{{item.contentNumber}}、{{item.inspection}}
</div>
<div style="font-size: 15px; color: black">{{item.contentNumber}}、{{item.inspection}}</div>
<van-row>
<div style="font-size: 15px;text-align: right;margin-right: 30px;margin-bottom:-4px">标准分:{{item.score}}</div>
<div style="font-size: 15px; text-align: right; margin-right: 30px; margin-bottom: -4px">
标准分:{{item.score}}
</div>
</van-row>
<van-field
v-model="item.resultScore"
name="测评分"
label="测评分"
type="digit"
required
:readonly="isReadOnly"
placeholder="请填写测评分"
@change="changeScore(item)"
:rules="[{ required: true, message: '请填写测评分' }]"
v-model="item.resultScore"
name="测评分"
label="测评分"
type="digit"
required
:readonly="isReadOnly"
placeholder="请填写测评分"
@change="changeScore(item)"
:rules="[{ required: true, message: '请填写测评分' }]"
></van-field>
<van-field v-if="item.isEvidence"
v-model="item.options"
name="意见或建议"
label="意见或建议"
placeholder="请填写意见或建议"
:readonly="isReadOnly"
<van-field
v-if="item.isEvidence"
v-model="item.options"
name="意见或建议"
label="意见或建议"
placeholder="请填写意见或建议"
:readonly="isReadOnly"
></van-field>
</div>
</div>
</van-collapse-item>
</div>
</div>
<div v-if="commentatorData.scoringMode==2">
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="president" :options="presidentList"
@change="presidentChange"></van-dropdown-item>
<van-dropdown-item v-model="president" :options="presidentList" @change="presidentChange"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div v-for="o in commentatorData.nrs" style="margin: 60px auto 0 auto">
<div v-for="item in o.bzs">
<div class="van-doc-card">
<div style="font-size: 15px;color: black">{{item.contentNumber}}、{{item.inspection}}
</div>
<van-field name="radio" label="满意度" style="padding: 12px 2px;margin: 5px">
<div style="font-size: 15px; color: black">{{item.contentNumber}}、{{item.inspection}}</div>
<van-field name="radio" label="满意度" style="padding: 12px 2px; margin: 5px">
<template #input>
<van-radio-group style="margin-left: -20px" v-model="item.resultScore" :disabled="isReadOnly" direction="horizontal">
<van-radio-group
style="margin-left: -20px"
v-model="item.resultScore"
:disabled="isReadOnly"
direction="horizontal"
>
<van-radio name="满意">满意</van-radio>
<van-radio name="基本满意">基本满意</van-radio>
<van-radio name="不满意">不满意</van-radio>
@@ -134,23 +134,21 @@ layout("/mobile/platform.html"){
</div>
<div class="van-doc-card">
<van-field
v-model="presidentOpinions"
:readonly="isReadOnly"
rows="2"
type="textarea"
autosize
show-word-limit
name="意见或建议"
label="意见或建议"
maxlength="200"
placeholder="请填写意见或建议"
v-model="presidentOpinions"
:readonly="isReadOnly"
rows="2"
type="textarea"
autosize
show-word-limit
name="意见或建议"
label="意见或建议"
maxlength="200"
placeholder="请填写意见或建议"
></van-field>
</div>
</div>
</van-collapse>
</van-form>
</div>
<div>
@@ -159,183 +157,181 @@ layout("/mobile/platform.html"){
<van-button id="buttonSub" :disabled="isShowSubmit" round block type="info" @click="onSubmit">提交</van-button>
</van-tabbar>
</div>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
data() {
return {
id: "",
activeNames: '',
activeNames: "",
commentatorData: {},
reviewResult: null,
presidentOpinions: '',
presidentOpinions: "",
bzList: [],
president: '',
president: "",
presidentList: [],
userList:[],
userList: [],
isShowSubmit: false,
isReadOnly:false,
isReadOnly: false
}
},
methods: {
async getCommentById() {
const resp = await $.get('/mobile/unioncomment/appraisal/getById', {id: this.id})
const resp = await $.get("/mobile/unioncomment/appraisal/getById", { id: this.id })
if (resp.code === 0) {
this.commentatorData = resp.data
if (this.commentatorData.assessmentMode === 2) {
this.commentatorData.nrs.forEach(v => {
v.bzs.forEach(o => {
o.resultScore = '满意'
this.commentatorData.nrs.forEach((v) => {
v.bzs.forEach((o) => {
o.resultScore = "满意"
})
})
await this.getPresidents();
await this.getPresidents()
}
this.activeNames = this.commentatorData.nrs[0].id
}
},
async assignment() {
const self = this;
this.bzList = [];
this.commentatorData.nrs.forEach(v => {
v.bzs.forEach(o => {
const self = this
this.bzList = []
this.commentatorData.nrs.forEach((v) => {
v.bzs.forEach((o) => {
self.bzList.push(o)
})
})
},
async onSubmit() {
this.$refs['addForm'].validate().then(async () => {
this.$refs["addForm"].validate().then(async () => {
await this.$dialog.confirm({
title: '确定要提交该测评结果吗?',
message: '提交后不可修改,请仔细检查后提交'
title: "确定要提交该测评结果吗?",
message: "提交后不可修改,请仔细检查后提交"
})
await this.assignment();
await this.assignment()
let evaluatedPersonName=null;
let evaluatedPersonType=null;
let evaluatedPersonName = null
let evaluatedPersonType = null
if (this.commentatorData.assessmentMode === 1) {
let score = 0;
this.bzList.forEach(v => {
let score = 0
this.bzList.forEach((v) => {
score += Number(v.resultScore)
})
if (score >= Number(80)) {
this.reviewResult = '满意'
this.reviewResult = "满意"
} else if (score >= Number(60) && score <= Number(79)) {
this.reviewResult = '基本满意'
this.reviewResult = "基本满意"
} else {
this.reviewResult = '不满意'
this.reviewResult = "不满意"
}
} else if (this.commentatorData.assessmentMode === 2) {
const result = this.bzList.filter(v => v.resultScore === '满意' || v.resultScore === '基本满意')
const result = this.bzList.filter((v) => v.resultScore === "满意" || v.resultScore === "基本满意")
if (result.length >= 8) {
this.reviewResult = '满意'
this.reviewResult = "满意"
} else if (result.length >= 6 && result.length <= 7) {
this.reviewResult = '基本满意'
this.reviewResult = "基本满意"
} else {
this.reviewResult = '不满意'
this.reviewResult = "不满意"
}
const user = this.userList.find(v=> v.id === this.president)
const user = this.userList.find((v) => v.id === this.president)
evaluatedPersonName = user.username
evaluatedPersonType = user.evaluatedPersonType
}
const resp = await $.post('/mobile/unioncomment/appraisal/doSubmit', {
const resp = await $.post("/mobile/unioncomment/appraisal/doSubmit", {
data: JSON.stringify(this.bzList),
id: this.id,
reviewResult: this.reviewResult,
evaluatedPersonId: this.president,
evaluatedPersonName:evaluatedPersonName,
evaluatedPersonType:evaluatedPersonType,
evaluatedPersonName: evaluatedPersonName,
evaluatedPersonType: evaluatedPersonType,
presidentOpinions: this.presidentOpinions
})
if (resp.code === 0) {
await this.getCommentById();
window.location.href = '/mobile/unioncomment/appraisal/mine'
await this.getCommentById()
window.location.href = "/mobile/unioncomment/appraisal/mine"
}
})
},
async showAssess() {
this.$refs['addForm'].validate().then(async () => {
let score = 0;
await this.assignment();
this.$refs["addForm"].validate().then(async () => {
let score = 0
await this.assignment()
if (this.commentatorData.assessmentMode === 1) {
this.bzList.forEach(v => {
this.bzList.forEach((v) => {
score += Number(v.resultScore)
})
if (score >= Number(80)) {
this.reviewResult = '满意'
this.reviewResult = "满意"
} else if (score >= Number(60) && score <= Number(79)) {
this.reviewResult = '基本满意'
this.reviewResult = "基本满意"
} else {
this.reviewResult = '不满意'
this.reviewResult = "不满意"
}
console.log(score)
console.log(this.reviewResult)
vant.Dialog.alert({
title: '测评结果',
message: '您的测评分数为【' + score + "】分,测评结果为【" + this.reviewResult + "】",
confirmButtonColor: '#1867b0'
title: "测评结果",
message: "您的测评分数为【" + score + "】分,测评结果为【" + this.reviewResult + "】",
confirmButtonColor: "#1867b0"
})
} else if (this.commentatorData.assessmentMode === 2) {
const result = this.bzList.filter(v => v.resultScore === '满意' || v.resultScore === '基本满意')
const result = this.bzList.filter((v) => v.resultScore === "满意" || v.resultScore === "基本满意")
if (result.length >= 8) {
this.reviewResult = '满意'
this.reviewResult = "满意"
} else if (result.length >= 6 && result.length <= 7) {
this.reviewResult = '基本满意'
this.reviewResult = "基本满意"
} else {
this.reviewResult = '不满意'
this.reviewResult = "不满意"
}
console.log(result)
console.log(this.reviewResult)
vant.Dialog.alert({
title: '测评结果',
message: '您的满意或基本满意个数为【' + result.length + "】个,测评结果为【" + this.reviewResult + "】",
confirmButtonColor: '#1867b0'
title: "测评结果",
message: "您的满意或基本满意个数为【" + result.length + "】个,测评结果为【" + this.reviewResult + "】",
confirmButtonColor: "#1867b0"
})
}
})
},
changeScore(item) {
if (Number(item.score) < Number(item.resultScore)) {
item.resultScore = null;
vant.Toast('测评分不能超过标准分!')
item.resultScore = null
vant.Toast("测评分不能超过标准分!")
}
},
async getPresidents() {
const resp = await $.get('/mobile/unioncomment/appraisal/getPresidents')
const resp = await $.get("/mobile/unioncomment/appraisal/getPresidents")
if (resp.code === 0) {
this.userList = resp.data
this.userList.forEach(v => {
this.presidentList.push({value: v.id, text: v.presidents})
this.userList.forEach((v) => {
this.presidentList.push({ value: v.id, text: v.presidents })
})
}
this.president = this.presidentList[0].value
await this.presidentChange();
await this.presidentChange()
},
async presidentChange() {
const resp = await $.get('/mobile/unioncomment/appraisal/isAssess', {
const resp = await $.get("/mobile/unioncomment/appraisal/isAssess", {
id: this.id,
evaluatedPersonId: this.president,
evaluatedPersonId: this.president
})
if (resp.data > 0) {
vant.Dialog.alert({
title: '提示',
message: '您已经评测过该主席(副主席),请在【我的评测】中查看结果,或更换主席(副主席)进行测评',
confirmButtonColor: '#1867b0'
title: "提示",
message: "您已经评测过该主席(副主席),请在【我的评测】中查看结果,或更换主席(副主席)进行测评",
confirmButtonColor: "#1867b0"
})
this.isShowSubmit = true;
this.isShowSubmit = true
this.isReadOnly = true
}
},
}
},
async created() {
this.id = GetQueryString('id')
await this.getCommentById();
this.id = GetQueryString("id")
await this.getCommentById()
}
});
})
</script>
<!--#
}
@@ -46,7 +46,7 @@ layout("/mobile/platform.html"){
}
</style>
<div id="app">
<van-nav-bar title="我的测评" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="我的测评" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
@@ -10,7 +10,7 @@ layout("/mobile/platform.html"){
position: relative;
}
.welfare_card .cover .van-image{
.welfare_card .cover .van-image {
width: 100%;
height: 150px;
}
@@ -22,10 +22,10 @@ layout("/mobile/platform.html"){
.welfare_card .name {
margin-top: 10px;
display: flex;
align-items: center
align-items: center;
}
.welfare_card .footer{
.welfare_card .footer {
margin-top: 10px;
display: flex;
align-items: center;
@@ -47,10 +47,8 @@ layout("/mobile/platform.html"){
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="福利列表" left-arrow
@click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="福利列表" left-arrow @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
</van-sticky>
<van-sticky>
@@ -61,48 +59,70 @@ layout("/mobile/platform.html"){
</van-sticky>
<template v-if="vLoading && !vLoading.value">
<van-list :finished="finished" :finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData">
<van-list
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
v-if="tableData && tableData.length>0"
v-model="loading"
@load="pageData"
>
<template v-for="item in tableData" :key="item.id">
<div class="welfare_card" @click="welfareClick(item)">
<div class="cover">
<van-image v-if="item.cover" :src="FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.cover"></van-image>
<van-image v-else src="/assets/mobile/svg/welfare/welfareHome.svg" fit="contain"></van-image>
</div>
<div class="name">
<svg t="1715150952924" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="4175" width="20" height="20">
<path d="M513.2288 510.72m-450.816 0a450.816 450.816 0 1 0 901.632 0 450.816 450.816 0 1 0-901.632 0Z"
fill="#FFE1E9" p-id="4176"></path>
<path d="M777.8304 321.6896h-198.4512l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.712 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v238.7456c0 45.1072 36.608 81.7152 81.7152 81.7152h301.2096c45.1072 0 81.7152-36.608 81.7152-81.7152V476.3136h27.2384c19.712 0 35.6352-15.9744 35.6352-35.6352V357.376a35.6864 35.6864 0 0 0-35.6864-35.6864z m-230.2464 342.0672c0 16.1792-13.1072 29.2864-29.2864 29.2864s-29.2864-13.1072-29.2864-29.2864v-97.7408c0-16.1792 13.1072-29.2864 29.2864-29.2864s29.2864 13.1072 29.2864 29.2864v97.7408z"
fill="#FF3369" p-id="4177"></path>
<path d="M776.6016 321.6896h-197.2224l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v238.7456c0 45.1072 36.608 81.7152 81.7152 81.7152H432.64c146.6368-31.8976 265.9328-136.7552 318.0032-274.7392v-45.7216h14.4896a442.2656 442.2656 0 0 0 11.4688-154.5728z m-229.0176 342.0672c0 16.1792-13.1072 29.2864-29.2864 29.2864-16.1792 0-29.2864-13.1072-29.2864-29.2864v-97.7408c0-16.1792 13.1072-29.2864 29.2864-29.2864 16.1792 0 29.2864 13.1072 29.2864 29.2864v97.7408z"
fill="#FF4D7C" p-id="4178"></path>
<path d="M579.3792 321.6896l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v169.0624c76.6464-11.8272 146.688-43.52 204.9024-89.4976a29.27616 29.27616 0 0 1 22.1696-18.5856c62.8224-56.6784 109.2096-131.1744 131.1744-215.552h-64.8704z"
fill="#FF5F89" p-id="4179"></path>
<path d="M488.3456 275.3024L436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 14.4384 8.6016 26.8288 20.8896 32.4096 103.68-33.7408 190.464-105.0112 244.3264-197.7344z"
fill="#FF7196" p-id="4180"></path>
<svg
t="1715150952924"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="4175"
width="20"
height="20"
>
<path
d="M513.2288 510.72m-450.816 0a450.816 450.816 0 1 0 901.632 0 450.816 450.816 0 1 0-901.632 0Z"
fill="#FFE1E9"
p-id="4176"
></path>
<path
d="M777.8304 321.6896h-198.4512l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.712 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v238.7456c0 45.1072 36.608 81.7152 81.7152 81.7152h301.2096c45.1072 0 81.7152-36.608 81.7152-81.7152V476.3136h27.2384c19.712 0 35.6352-15.9744 35.6352-35.6352V357.376a35.6864 35.6864 0 0 0-35.6864-35.6864z m-230.2464 342.0672c0 16.1792-13.1072 29.2864-29.2864 29.2864s-29.2864-13.1072-29.2864-29.2864v-97.7408c0-16.1792 13.1072-29.2864 29.2864-29.2864s29.2864 13.1072 29.2864 29.2864v97.7408z"
fill="#FF3369"
p-id="4177"
></path>
<path
d="M776.6016 321.6896h-197.2224l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v238.7456c0 45.1072 36.608 81.7152 81.7152 81.7152H432.64c146.6368-31.8976 265.9328-136.7552 318.0032-274.7392v-45.7216h14.4896a442.2656 442.2656 0 0 0 11.4688-154.5728z m-229.0176 342.0672c0 16.1792-13.1072 29.2864-29.2864 29.2864-16.1792 0-29.2864-13.1072-29.2864-29.2864v-97.7408c0-16.1792 13.1072-29.2864 29.2864-29.2864 16.1792 0 29.2864 13.1072 29.2864 29.2864v97.7408z"
fill="#FF4D7C"
p-id="4178"
></path>
<path
d="M579.3792 321.6896l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v169.0624c76.6464-11.8272 146.688-43.52 204.9024-89.4976a29.27616 29.27616 0 0 1 22.1696-18.5856c62.8224-56.6784 109.2096-131.1744 131.1744-215.552h-64.8704z"
fill="#FF5F89"
p-id="4179"
></path>
<path
d="M488.3456 275.3024L436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 14.4384 8.6016 26.8288 20.8896 32.4096 103.68-33.7408 190.464-105.0112 244.3264-197.7344z"
fill="#FF7196"
p-id="4180"
></path>
</svg>
{{item.name}}
</div>
<div class="footer">
<div class="time">
{{moment(item.choiceTimeStart).format('YYYY/MM/DD HH:mm')}}
~
{{moment(item.choiceTimeEnd).format('YYYY/MM/DD HH:mm')}}
{{moment(item.choiceTimeStart).format('YYYY/MM/DD HH:mm')}} ~ {{moment(item.choiceTimeEnd).format('YYYY/MM/DD HH:mm')}}
</div>
<div class="status">
<span v-if="item.isSelect" style="color: green">已选择</span>
<span v-else style="color:red;">未选择</span>
<span v-else style="color: red">未选择</span>
</div>
</div>
</div>
</template>
</van-list>
<van-empty v-else description="暂无数据"></van-empty>
</template>
@@ -118,58 +138,44 @@ layout("/mobile/platform.html"){
<!--#include("/mobile/welfare/include/mixins.js"){}#-->
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins, welfareMixins],
data() {
return {
tabName: 'ing',
tabName: "ing",
tarBarActive: 0
}
},
methods: {
async welfareClick(o) {
const {
id,
provideMode,
flexible,
provideTimeEnd,
provideTimeStart,
choiceTimeEnd,
choiceTimeStart
} = o
const { id, provideMode, flexible, provideTimeEnd, provideTimeStart, choiceTimeEnd, choiceTimeStart } = o
/* const resp = await $.get('/mobile/welfare/mine/isReceive', {projectId: id})
const isReceive = resp.data*/
if (this.tabName === 'ing') {
if (this.tabName === "ing") {
if (flexible) {
if (moment().valueOf() < moment(provideTimeEnd).valueOf() &&
moment().valueOf() > moment(provideTimeStart).valueOf()) {
if (moment().valueOf() < moment(provideTimeEnd).valueOf() && moment().valueOf() > moment(provideTimeStart).valueOf()) {
if (moment().valueOf() > moment(choiceTimeEnd).valueOf()) {
if (!o.isSelect) {
vant.Dialog.alert({
title: '提醒',
message: '您在规定时间内没有选择,无法领取!',
}).then(() => {
});
title: "提醒",
message: "您在规定时间内没有选择,无法领取!"
}).then(() => {})
return
}
}
}
location.href = '/mobile/welfare/list/receive?projectId=' + id
location.href = "/mobile/welfare/list/receive?projectId=" + id
} else {
location.href = '/mobile/welfare/list/receive_success?projectId=' + id + '&provideMode=' + provideMode
location.href = "/mobile/welfare/list/receive_success?projectId=" + id + "&provideMode=" + provideMode
}
} else if (this.tabName === 'end') {
location.href = '/mobile/welfare/list/receive?projectId=' + id + "&type=view"
} else if (this.tabName === "end") {
location.href = "/mobile/welfare/list/receive?projectId=" + id + "&type=view"
}
},
async pageData() {
this.mLoading = true
const resp = await $.post('/mobile/welfare/list/pageData', this.pageForm)
const resp = await $.post("/mobile/welfare/list/pageData", this.pageForm)
if (resp.code === 0) {
if (resp.data.list.length === 0) {
this.tableData = []
@@ -184,7 +190,7 @@ layout("/mobile/platform.html"){
this.pageForm.pageNumber++
}
}
this.loading = false;
this.loading = false
this.mLoading = false
},
tabChange(val) {
@@ -198,22 +204,20 @@ layout("/mobile/platform.html"){
init() {
this.startLoading()
this.tarBarActive = Number(GetQueryString("tarBarActive"))
this.pageForm.tabName = 'ing'
this.pageForm.tabName = "ing"
this.pageData()
this.closeLoading()
}
},
created() {
this.init()
},
}
})
window.addEventListener('pageshow', e => {
window.addEventListener("pageshow", (e) => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.onRefresh()
}
})
</script>
<!--#
@@ -13,37 +13,34 @@ layout("/mobile/platform.html"){
width: 160px;
height: 40px;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="地址管理" left-arrow
@click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="地址管理" left-arrow @click-left="back"></van-nav-bar>
</van-sticky>
<div v-if="vLoading && !vLoading.value">
<van-address-list
v-if="addressList && addressList.length>0 "
v-model="chosenAddressId"
:list="addressList"
default-tag-text="默认"
@add="onAdd"
@edit="onEdit"
v-if="addressList && addressList.length>0 "
v-model="chosenAddressId"
:list="addressList"
default-tag-text="默认"
@add="onAdd"
@edit="onEdit"
></van-address-list>
<van-empty v-else description="暂无地址">
<van-button round type="danger" class="bottom-button" @click="onAdd">新增地址</van-button>
</van-empty>
</div>
</div>
<script>
<!--#include("/mobile/welfare/include/mixins.js"){}#-->
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins, welfareMixins],
data() {
return {
@@ -51,11 +48,18 @@ layout("/mobile/platform.html"){
}
},
methods: {
back() {
if (this.projectId) {
pjaxReplace("/mobile/welfare/list/receive?projectId=" + this.projectId)
} else {
pjaxReplace("/mobile/index")
}
},
onAdd() {
location.replace('/mobile/welfare/mine/addressEdit')
pjaxReplace("/mobile/welfare/mine/addressEdit")
},
onEdit(item, index) {
location.replace('/mobile/welfare/mine/addressEdit?id=' + item.id)
pjaxReplace("/mobile/welfare/mine/addressEdit?id=" + item.id)
}
},
async created() {
@@ -49,75 +49,78 @@ layout("/mobile/platform.html"){
top: unset !important;
transform: unset !important;
}
</style>
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar @click-left="history.go(-1)" left-arrow
title="我的福利"></van-nav-bar>
<van-nav-bar @click-left="pjaxReplace('/mobile/index')" left-arrow title="我的福利"></van-nav-bar>
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item :options="yearOption" @change="yearChange"
v-model="pageForm.year"></van-dropdown-item>
<van-dropdown-item :options="yearOption" @change="yearChange" v-model="pageForm.year"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<template v-if="vLoading && !vLoading.value">
<van-list
:finished="finished"
@load="pageData"
finished-text="没有更多了"
v-if="tableData.length>=0"
v-model="loading">
<van-list :finished="finished" @load="pageData" finished-text="没有更多了" v-if="tableData.length>=0" v-model="loading">
<template v-for="item in tableData">
<div style="padding: 10px;margin:10px 10px 0 10px;position: relative;background: #FFFFFF;border-radius: 10px">
<div style="font-weight: bold;display: flex;align-items: center">
<svg class="icon" height="20" p-id="4175" t="1715150952924"
version="1.1" viewBox="0 0 1024 1024" width="20"
xmlns="http://www.w3.org/2000/svg">
<path d="M513.2288 510.72m-450.816 0a450.816 450.816 0 1 0 901.632 0 450.816 450.816 0 1 0-901.632 0Z"
fill="#FFE1E9" p-id="4176"></path>
<path d="M777.8304 321.6896h-198.4512l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.712 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v238.7456c0 45.1072 36.608 81.7152 81.7152 81.7152h301.2096c45.1072 0 81.7152-36.608 81.7152-81.7152V476.3136h27.2384c19.712 0 35.6352-15.9744 35.6352-35.6352V357.376a35.6864 35.6864 0 0 0-35.6864-35.6864z m-230.2464 342.0672c0 16.1792-13.1072 29.2864-29.2864 29.2864s-29.2864-13.1072-29.2864-29.2864v-97.7408c0-16.1792 13.1072-29.2864 29.2864-29.2864s29.2864 13.1072 29.2864 29.2864v97.7408z"
fill="#FF3369" p-id="4177"></path>
<path d="M776.6016 321.6896h-197.2224l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v238.7456c0 45.1072 36.608 81.7152 81.7152 81.7152H432.64c146.6368-31.8976 265.9328-136.7552 318.0032-274.7392v-45.7216h14.4896a442.2656 442.2656 0 0 0 11.4688-154.5728z m-229.0176 342.0672c0 16.1792-13.1072 29.2864-29.2864 29.2864-16.1792 0-29.2864-13.1072-29.2864-29.2864v-97.7408c0-16.1792 13.1072-29.2864 29.2864-29.2864 16.1792 0 29.2864 13.1072 29.2864 29.2864v97.7408z"
fill="#FF4D7C" p-id="4178"></path>
<path d="M579.3792 321.6896l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v169.0624c76.6464-11.8272 146.688-43.52 204.9024-89.4976a29.27616 29.27616 0 0 1 22.1696-18.5856c62.8224-56.6784 109.2096-131.1744 131.1744-215.552h-64.8704z"
fill="#FF5F89" p-id="4179"></path>
<path d="M488.3456 275.3024L436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 14.4384 8.6016 26.8288 20.8896 32.4096 103.68-33.7408 190.464-105.0112 244.3264-197.7344z"
fill="#FF7196" p-id="4180"></path>
<div style="padding: 10px; margin: 10px 10px 0 10px; position: relative; background: #ffffff; border-radius: 10px">
<div style="font-weight: bold; display: flex; align-items: center">
<svg
class="icon"
height="20"
p-id="4175"
t="1715150952924"
version="1.1"
viewBox="0 0 1024 1024"
width="20"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M513.2288 510.72m-450.816 0a450.816 450.816 0 1 0 901.632 0 450.816 450.816 0 1 0-901.632 0Z"
fill="#FFE1E9"
p-id="4176"
></path>
<path
d="M777.8304 321.6896h-198.4512l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.712 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v238.7456c0 45.1072 36.608 81.7152 81.7152 81.7152h301.2096c45.1072 0 81.7152-36.608 81.7152-81.7152V476.3136h27.2384c19.712 0 35.6352-15.9744 35.6352-35.6352V357.376a35.6864 35.6864 0 0 0-35.6864-35.6864z m-230.2464 342.0672c0 16.1792-13.1072 29.2864-29.2864 29.2864s-29.2864-13.1072-29.2864-29.2864v-97.7408c0-16.1792 13.1072-29.2864 29.2864-29.2864s29.2864 13.1072 29.2864 29.2864v97.7408z"
fill="#FF3369"
p-id="4177"
></path>
<path
d="M776.6016 321.6896h-197.2224l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v238.7456c0 45.1072 36.608 81.7152 81.7152 81.7152H432.64c146.6368-31.8976 265.9328-136.7552 318.0032-274.7392v-45.7216h14.4896a442.2656 442.2656 0 0 0 11.4688-154.5728z m-229.0176 342.0672c0 16.1792-13.1072 29.2864-29.2864 29.2864-16.1792 0-29.2864-13.1072-29.2864-29.2864v-97.7408c0-16.1792 13.1072-29.2864 29.2864-29.2864 16.1792 0 29.2864 13.1072 29.2864 29.2864v97.7408z"
fill="#FF4D7C"
p-id="4178"
></path>
<path
d="M579.3792 321.6896l62.6176-60.7744a29.2864 29.2864 0 0 0 0.6144-41.4208 29.2864 29.2864 0 0 0-41.4208-0.6144L514.4576 303.104 436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 19.712 15.9744 35.6352 35.6352 35.6352h27.2384v169.0624c76.6464-11.8272 146.688-43.52 204.9024-89.4976a29.27616 29.27616 0 0 1 22.1696-18.5856c62.8224-56.6784 109.2096-131.1744 131.1744-215.552h-64.8704z"
fill="#FF5F89"
p-id="4179"
></path>
<path
d="M488.3456 275.3024L436.3264 219.8528a29.28128 29.28128 0 0 0-41.3696-1.3312 29.2352 29.2352 0 0 0-1.28 41.3696L451.584 321.6896H258.7648c-19.6608 0-35.6352 15.9744-35.6352 35.6352v83.3024c0 14.4384 8.6016 26.8288 20.8896 32.4096 103.68-33.7408 190.464-105.0112 244.3264-197.7344z"
fill="#FF7196"
p-id="4180"
></path>
</svg>
{{item.name}}
</div>
<van-card>
<template #thumb>
<img :src="FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.cover" alt=""
style="width: 88px;height: 88px"
v-if="item.cover">
<img src="/assets/mobile/svg/welfare/welfareHome.svg"
style="width: 88px;height: 88px"
v-else/>
<img :src="FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.cover" alt="" style="width: 88px; height: 88px" v-if="item.cover" />
<img src="/assets/mobile/svg/welfare/welfareHome.svg" style="width: 88px; height: 88px" v-else />
</template>
<div slot="tags" style="margin-top: 5px;padding-left: 30px;"
v-if="item.gifts">
<div :key="item.name" class="van-card__bottom"
v-for="gift in item.gifts">
<div class="van-card__price">
{{gift.name}}
</div>
<div slot="tags" style="margin-top: 5px; padding-left: 30px" v-if="item.gifts">
<div :key="item.name" class="van-card__bottom" v-for="gift in item.gifts">
<div class="van-card__price">{{gift.name}}</div>
<div class="van-card__num">x{{gift.num}}</div>
</div>
</div>
<div slot="footer" style="margin-top: 10px;">
<van-button @click="openEvaluate(item)" plain round size="small">评价商品
</van-button>
<!-- <van-button @click="openExpress(item)" plain round size="small"-->
<!-- v-if="item.provideMode==3">-->
<!-- 物流信息-->
<!-- </van-button>-->
<van-button @click="openView(item)" plain round size="small">查看详情
</van-button>
<div slot="footer" style="margin-top: 10px">
<van-button @click="openEvaluate(item)" plain round size="small">评价商品</van-button>
<!-- <van-button @click="openExpress(item)" plain round size="small"-->
<!-- v-if="item.provideMode==3">-->
<!-- 物流信息-->
<!-- </van-button>-->
<van-button @click="openView(item)" plain round size="small">查看详情</van-button>
</div>
</van-card>
</div>
@@ -134,18 +137,17 @@ layout("/mobile/platform.html"){
<van-action-sheet title="查看详情" v-model="descPopup">
<div class="van-cell-group--inset">
<van-cell>
<van-icon class="van-cell__left-icon" color="red" name="location"
slot="icon"></van-icon>
<div slot="title" style="font-weight: bold;font-size: 15px">已选福利</div>
<van-icon class="van-cell__left-icon" color="red" name="location" slot="icon"></van-icon>
<div slot="title" style="font-weight: bold; font-size: 15px">已选福利</div>
</van-cell>
<van-cell style="padding: 0">
<van-card
:key="item.id"
:num="item.selectNum"
:thumb="FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.imgUrl"
:title="item.optionName"
style="border-radius: 8px;background: #FFFFFF"
v-for="item in selectedOptions"
:key="item.id"
:num="item.selectNum"
:thumb="FILE_STREAM_PREVIEW_ADDRESS+'?id='+item.imgUrl"
:title="item.optionName"
style="border-radius: 8px; background: #ffffff"
v-for="item in selectedOptions"
>
<template #desc>
<div>{{item.supplier}}</div>
@@ -158,47 +160,40 @@ layout("/mobile/platform.html"){
<!--邮寄到家 填写收货地址-->
<div class="van-cell-group--inset" v-if="provideMode===3">
<van-cell>
<van-icon class="van-cell__left-icon" color="red" name="location"
slot="icon"></van-icon>
<div slot="title" style="font-weight: bold;font-size: 15px">收货地址</div>
</van-cell>
<van-cell :value="receiveAddress" class="address-cell">
<van-icon class="van-cell__left-icon" color="red" name="location" slot="icon"></van-icon>
<div slot="title" style="font-weight: bold; font-size: 15px">收货地址</div>
</van-cell>
<van-cell :value="receiveAddress" class="address-cell"></van-cell>
</div>
<!--电子签字-->
<div class="van-cell-group--inset" v-if="signMode===2">
<van-cell>
<template #title>
<div style="font-weight: bold;font-size: 15px">电子签名</div>
<div style="font-weight: bold; font-size: 15px">电子签名</div>
</template>
</van-cell>
<van-cell title="">
<template #label>
<van-image :src="'/signature/getSignData?path=' + userSign"
style="width: 100%;height: 150px;border: 1px dashed"></van-image>
<van-image :src="'/signature/getSignData?path=' + userSign" style="width: 100%; height: 150px; border: 1px dashed"></van-image>
</template>
</van-cell>
</div>
</van-action-sheet>
<!--评价-->
<van-popup :style="{ height: '60%',background:'#f9f9f9','padding-top':'30px'}"
closeable
position="bottom"
round
safe-area-inset-bottom
v-model="evaluatePopup">
<van-popup
:style="{ height: '60%',background:'#f9f9f9','padding-top':'30px'}"
closeable
position="bottom"
round
safe-area-inset-bottom
v-model="evaluatePopup"
>
<div style="margin-top: 20px">
<van-radio-group v-model="evaluateFormData.optionId">
<van-cell-group>
<van-cell
:key="item.selectOptionId"
@click="optionIdClick(item.selectOptionId)"
clickable v-for="item in selectedOptions">
<van-cell :key="item.selectOptionId" @click="optionIdClick(item.selectOptionId)" clickable v-for="item in selectedOptions">
<template #title>
{{item.optionName}}
<span style="color: red" v-if="!item.isPj">未评价</span>
@@ -211,55 +206,55 @@ layout("/mobile/platform.html"){
</van-radio-group>
</div>
<div class="evaluateForm">
<div style="text-align: center; margin: 20px 0; font-size: 20px; color: #f18d8d; font-weight: bold">您的评价让我们做的更好</div>
<div style="text-align: center;margin: 20px 0;font-size: 20px;color: #f18d8d;font-weight: bold;">
您的评价让我们做的更好
</div>
<div style="display: flex;justify-content: center;flex-direction: column;align-items: center">
<div style="text-align: center;font-size: 13px;color: rgb(139 134 134)">为本次福利打分
</div>
<div style="display: flex; justify-content: center; flex-direction: column; align-items: center">
<div style="text-align: center; font-size: 13px; color: rgb(139 134 134)">为本次福利打分</div>
<van-rate
:gutter="10"
:readonly="evaluateFormData.id"
:size="40"
color="#ffd21e"
v-model="evaluateFormData.evaluateScore"
void-color="#eee"
void-icon="star"
:gutter="10"
:readonly="evaluateFormData.id"
:size="40"
color="#ffd21e"
v-model="evaluateFormData.evaluateScore"
void-color="#eee"
void-icon="star"
></van-rate>
</div>
<van-field
:readonly="evaluateFormData.id"
autosize
class="evaluateTextField"
label="评价"
label-width="0"
maxlength="100"
placeholder="请输入评价"
rows="5"
type="textarea"
v-model="evaluateFormData.evaluateText"
:readonly="evaluateFormData.id"
autosize
class="evaluateTextField"
label="评价"
label-width="0"
maxlength="100"
placeholder="请输入评价"
rows="5"
type="textarea"
v-model="evaluateFormData.evaluateText"
>
<div slot="label"></div>
</van-field>
</div>
<div style="padding: 10px 16px">
<van-button @click="doSubmitEvaluate"
block
type="primary"
v-if="!evaluateFormData.id">提交
</van-button>
<van-button @click="doSubmitEvaluate" block type="primary" v-if="!evaluateFormData.id">提交</van-button>
<div style="display: flex;align-items: center;color: #52c41a;justify-content: center;font-size: 20px"
v-else>
<svg class="icon" height="32" p-id="2914" t="1715150529722"
version="1.1" viewBox="0 0 1024 1024" width="32"
xmlns="http://www.w3.org/2000/svg">
<path d="M596.48 113.024a142.848 142.848 0 0 0-169.024 0l-49.472 36.288a62.848 62.848 0 0 1-27.648 11.52l-60.8 9.28a142.848 142.848 0 0 0-119.424 119.488l-9.344 60.8a62.848 62.848 0 0 1-11.52 27.648l-36.224 49.472a142.848 142.848 0 0 0 0 169.088l36.288 49.472a62.336 62.336 0 0 1 11.456 27.648l9.344 60.672a142.848 142.848 0 0 0 119.488 119.488l60.672 9.344a62.656 62.656 0 0 1 27.648 11.52l49.472 36.224a142.848 142.848 0 0 0 169.088 0l49.472-36.288a62.4 62.4 0 0 1 27.648-11.52l60.672-9.28a142.912 142.912 0 0 0 119.552-119.552l9.344-60.672a62.656 62.656 0 0 1 11.52-27.648l36.224-49.472a142.848 142.848 0 0 0 0-169.088l-36.288-49.472a62.848 62.848 0 0 1-11.456-27.648l-9.28-60.8a142.848 142.848 0 0 0-119.488-119.424l-60.672-9.344a62.912 62.912 0 0 1-27.648-11.52l-49.536-36.224zM474.88 177.472a62.72 62.72 0 0 1 74.368 0l49.472 36.288c18.56 13.632 40.128 22.528 62.976 26.048l60.544 9.28a62.848 62.848 0 0 1 52.672 52.672l9.28 60.608c3.52 22.784 12.416 44.352 26.048 62.976l36.288 49.408a62.72 62.72 0 0 1 0 74.368l-36.288 49.472c-13.632 18.56-22.592 40.192-26.048 62.976l-9.28 60.608a62.848 62.848 0 0 1-52.672 52.608l-60.608 9.28a142.784 142.784 0 0 0-62.976 26.112l-49.408 36.224a62.72 62.72 0 0 1-74.368 0l-49.472-36.224a142.784 142.784 0 0 0-62.976-26.112l-60.544-9.28a62.784 62.784 0 0 1-52.672-52.608l-9.28-60.672a142.848 142.848 0 0 0-26.112-62.912l-36.224-49.472a62.848 62.848 0 0 1 0-74.368l36.224-49.472a142.72 142.72 0 0 0 26.112-62.912l9.28-60.608a62.848 62.848 0 0 1 52.672-52.672l60.608-9.28c22.784-3.456 44.352-12.416 62.912-26.048l49.472-36.288z m212.096 269.44A40 40 0 0 0 630.4 390.4L458.688 562.112 393.6 497.088a40 40 0 0 0-56.576 56.512l93.376 93.312a40 40 0 0 0 56.512 0l200-200z"
fill="#52C41A" p-id="2915"></path>
<div style="display: flex; align-items: center; color: #52c41a; justify-content: center; font-size: 20px" v-else>
<svg
class="icon"
height="32"
p-id="2914"
t="1715150529722"
version="1.1"
viewBox="0 0 1024 1024"
width="32"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M596.48 113.024a142.848 142.848 0 0 0-169.024 0l-49.472 36.288a62.848 62.848 0 0 1-27.648 11.52l-60.8 9.28a142.848 142.848 0 0 0-119.424 119.488l-9.344 60.8a62.848 62.848 0 0 1-11.52 27.648l-36.224 49.472a142.848 142.848 0 0 0 0 169.088l36.288 49.472a62.336 62.336 0 0 1 11.456 27.648l9.344 60.672a142.848 142.848 0 0 0 119.488 119.488l60.672 9.344a62.656 62.656 0 0 1 27.648 11.52l49.472 36.224a142.848 142.848 0 0 0 169.088 0l49.472-36.288a62.4 62.4 0 0 1 27.648-11.52l60.672-9.28a142.912 142.912 0 0 0 119.552-119.552l9.344-60.672a62.656 62.656 0 0 1 11.52-27.648l36.224-49.472a142.848 142.848 0 0 0 0-169.088l-36.288-49.472a62.848 62.848 0 0 1-11.456-27.648l-9.28-60.8a142.848 142.848 0 0 0-119.488-119.424l-60.672-9.344a62.912 62.912 0 0 1-27.648-11.52l-49.536-36.224zM474.88 177.472a62.72 62.72 0 0 1 74.368 0l49.472 36.288c18.56 13.632 40.128 22.528 62.976 26.048l60.544 9.28a62.848 62.848 0 0 1 52.672 52.672l9.28 60.608c3.52 22.784 12.416 44.352 26.048 62.976l36.288 49.408a62.72 62.72 0 0 1 0 74.368l-36.288 49.472c-13.632 18.56-22.592 40.192-26.048 62.976l-9.28 60.608a62.848 62.848 0 0 1-52.672 52.608l-60.608 9.28a142.784 142.784 0 0 0-62.976 26.112l-49.408 36.224a62.72 62.72 0 0 1-74.368 0l-49.472-36.224a142.784 142.784 0 0 0-62.976-26.112l-60.544-9.28a62.784 62.784 0 0 1-52.672-52.608l-9.28-60.672a142.848 142.848 0 0 0-26.112-62.912l-36.224-49.472a62.848 62.848 0 0 1 0-74.368l36.224-49.472a142.72 142.72 0 0 0 26.112-62.912l9.28-60.608a62.848 62.848 0 0 1 52.672-52.672l60.608-9.28c22.784-3.456 44.352-12.416 62.912-26.048l49.472-36.288z m212.096 269.44A40 40 0 0 0 630.4 390.4L458.688 562.112 393.6 497.088a40 40 0 0 0-56.576 56.512l93.376 93.312a40 40 0 0 0 56.512 0l200-200z"
fill="#52C41A"
p-id="2915"
></path>
</svg>
评价完成
</div>
@@ -267,25 +262,24 @@ layout("/mobile/platform.html"){
</van-popup>
<!--快递单号-->
<van-popup :style="{ height: '80%', background:'#f9f9f9','padding-top':'30px'}"
closeable
position="bottom"
round
safe-area-inset-bottom
v-model="expressPopup">
<van-popup
:style="{ height: '80%', background:'#f9f9f9','padding-top':'30px'}"
closeable
position="bottom"
round
safe-area-inset-bottom
v-model="expressPopup"
>
<div class="van-cell-group--inset">
<van-cell>
<van-icon class="van-cell__left-icon" color="red" name="location"
slot="icon"></van-icon>
<div slot="title" style="font-weight: bold;font-size: 15px">物流信息</div>
<van-icon class="van-cell__left-icon" color="red" name="location" slot="icon"></van-icon>
<div slot="title" style="font-weight: bold; font-size: 15px">物流信息</div>
</van-cell>
<van-cell :value="logisticsTrace.courierNumber" class="address-cell"
title="快递单号"></van-cell>
<van-cell :value="logisticsTrace.courierNumber" class="address-cell" title="快递单号"></van-cell>
<van-cell class="logistics_cell" title="物流跟踪">
<van-steps :active="0"
direction="vertical">
<van-steps :active="0" direction="vertical">
<van-step v-for="(item, index) in logisticsTrace.logisticsTraceDetailList">
<h3> {{item.desc}}</h3>
<h3>{{item.desc}}</h3>
<p>{{moment(item.time).format('YYYY-MM-DD HH:mm:ss')}}</p>
</van-step>
</van-steps>
@@ -294,36 +288,27 @@ layout("/mobile/platform.html"){
</van-popup>
<!--快递物流信息-->
<van-action-sheet class="courierNumberSheet"
title=快递物流信息
v-model="courierNumberShow">
<van-action-sheet class="courierNumberSheet" title="快递物流信息" v-model="courierNumberShow">
<div style="padding: 16px 16px 16px">
<div v-for="(v,k) in optionCourierNumberInfo">
<van-cell :title="k">
<div slot="title" style="font-weight: bold">
{{k}}
</div>
<div slot="title" style="font-weight: bold">{{k}}</div>
</van-cell>
<van-collapse accordion v-model="activeName">
<van-collapse-item :key="item.courierNumber" :name="item.courierNumber"
:title="item.courierNumber" v-for="item in v">
<van-collapse-item :key="item.courierNumber" :name="item.courierNumber" :title="item.courierNumber" v-for="item in v">
<template>
<van-cell :value="item.courierNumber" class="address-cell"
title="快递单号">
<div>
{{item.courierNumber || '暂无'}}
</div>
<van-cell :value="item.courierNumber" class="address-cell" title="快递单号">
<div>{{item.courierNumber || '暂无'}}</div>
</van-cell>
<van-cell class="logistics_cell" title="物流跟踪">
<van-steps :active="0"
direction="vertical"
v-if="item.logisticsTrace && item.logisticsTrace.logisticsTraceDetailList">
<van-step
v-for="(timeline, timelineIndex) in item.logisticsTrace.logisticsTraceDetailList">
<h3> {{timeline.desc}}</h3>
<p>{{moment(timeline.time)
.format('YYYY-MM-DD HH:mm:ss')}}</p>
<van-steps
:active="0"
direction="vertical"
v-if="item.logisticsTrace && item.logisticsTrace.logisticsTraceDetailList"
>
<van-step v-for="(timeline, timelineIndex) in item.logisticsTrace.logisticsTraceDetailList">
<h3>{{timeline.desc}}</h3>
<p>{{moment(timeline.time) .format('YYYY-MM-DD HH:mm:ss')}}</p>
</van-step>
</van-steps>
<van-empty v-else></van-empty>
@@ -333,22 +318,19 @@ layout("/mobile/platform.html"){
</template>
</van-collapse-item>
</van-collapse>
</div>
</div>
</van-action-sheet>
</div>
<script>
<!--#include("/mobile/welfare/include/mixins.js"){}#-->
const vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins, welfareMixins],
data() {
return {
pageDataUrl: '/platform/welfare/mine/pageData',
pageDataUrl: "/platform/welfare/mine/pageData",
fullWelfareList: [],
welfareList: [],
@@ -378,7 +360,6 @@ layout("/mobile/platform.html"){
activeName: null,
optionCourierNumberInfo: []
}
},
@@ -394,27 +375,27 @@ layout("/mobile/platform.html"){
return this.selectedOptions[0].userSign
}
return null
},
}
},
methods: {
optionIdClick(selectOptionId) {
this.$set(this.evaluateFormData, 'optionId', selectOptionId)
this.finOneWelfareEvaluate(this.evaluateFormData.projectId, selectOptionId);
this.$set(this.evaluateFormData, "optionId", selectOptionId)
this.finOneWelfareEvaluate(this.evaluateFormData.projectId, selectOptionId)
},
async getUserSelection(projectId) {
const resp = await $.get('/platform/welfare/mine/getUserSelection', {projectId})
const resp = await $.get("/platform/welfare/mine/getUserSelection", { projectId })
return resp
},
//查看选择详情
async openView(item) {
const {projectId, provideMode, signMode} = item
const { projectId, provideMode, signMode } = item
this.provideMode = provideMode
this.signMode = signMode
const {code, data, msg} = await this.getUserSelection(projectId)
const { code, data, msg } = await this.getUserSelection(projectId)
if (code === 0) {
if (data.length === 0) {
this.$modal.msg('您还没有选择福利,请先到职工福利->福利列表下选择')
this.$modal.msg("您还没有选择福利,请先到职工福利->福利列表下选择")
return
}
this.descPopup = true
@@ -437,11 +418,7 @@ layout("/mobile/platform.html"){
this.evaluatePopup = true
},
async finOneWelfareEvaluate(projectId, optionId) {
const {
data,
code,
msg
} = await $.post("/platform/welfare/mine/finOneWelfareEvaluate", {
const { data, code, msg } = await $.post("/platform/welfare/mine/finOneWelfareEvaluate", {
projectId: projectId,
optionId: optionId
})
@@ -465,11 +442,7 @@ layout("/mobile/platform.html"){
this.$modal.msg("请为本次福利评分")
return
}
const {
code,
data,
msg
} = await $.post('/platform/welfare/mine/doEvaluate', this.evaluateFormData)
const { code, data, msg } = await $.post("/platform/welfare/mine/doEvaluate", this.evaluateFormData)
if (code === 0) {
this.$modal.msgSuccess("评价成功")
this.evaluatePopup = false
@@ -488,11 +461,11 @@ layout("/mobile/platform.html"){
break
}
case 1: {
this.welfareList = this.fullWelfareList.filter(v => v.isReceive || [1].includes(v.provideMode))
this.welfareList = this.fullWelfareList.filter((v) => v.isReceive || [1].includes(v.provideMode))
break
}
case 2: {
this.welfareList = this.fullWelfareList.filter(v => !v.isReceive)
this.welfareList = this.fullWelfareList.filter((v) => !v.isReceive)
break
}
}
@@ -500,31 +473,27 @@ layout("/mobile/platform.html"){
//获取物流信息
async getExpressInfo(row) {
const resp = await $.get('/platform/welfare/mine/getExpressInfo', {courierNumber: row.courierNumber})
const resp = await $.get("/platform/welfare/mine/getExpressInfo", { courierNumber: row.courierNumber })
if (resp.code === 0) {
resp.data.courierNumber = row.courierNumber
resp.data.logisticsTraceDetailList.sort((a, b) => {
return b.time - a.time;
return b.time - a.time
})
this.logisticsTrace = resp.data
} else {
this.$message.error(resp.msg);
this.$message.error(resp.msg)
}
},
//打开物流
async openExpress(item) {
const {
code,
data,
msg
} = await $.get('/platform/welfare/common/courierNumberInfo', {
const { code, data, msg } = await $.get("/platform/welfare/common/courierNumberInfo", {
welfareId: item.projectId,
userId: item.userId
})
if (code === 0) {
if (data == null || data.length === 0) {
this.$modal.msg('您还没有选择福利套餐')
this.$modal.msg("您还没有选择福利套餐")
return
}
this.optionCourierNumberInfo = data
@@ -534,18 +503,17 @@ layout("/mobile/platform.html"){
} else {
this.$modal.msgError(msg)
}
},
yearChange(val) {
this.pageForm.year = val
this.onRefresh()
},
}
},
created() {
this.startLoading()
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({value: i, text: i + '年'},)
this.yearOption.unshift({ value: i, text: i + "年" })
}
this.$set(this.pageForm, "year", this.yearOption[0].value)
this.closeLoading()
@@ -5,27 +5,16 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="活动列表"
left-arrow
placeholder
fixed
@click-left="history.go(-1)"
></van-nav-bar>
<van-nav-bar title="活动列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="pageForm.year" :options="yearOption"
@change="yearChange"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" :options="yearOption" @change="yearChange"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 60px auto">
<van-list
v-model="mLoading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="mLoading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<div v-for="o in tableData" class="list-card" @click="openView(o)">
<van-cell-group inset>
<van-cell title="主题" :border="false">{{o.hdname}}</van-cell>
@@ -37,12 +26,7 @@ layout("/mobile/platform.html"){
</van-cell-group>
</div>
</van-list>
<van-empty
v-if="mLoading==false&&tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<div>
@@ -51,20 +35,19 @@ layout("/mobile/platform.html"){
<van-tabbar-item icon="manager-o" replace url="/mobile/wmhd/list">我的教工作品</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
let vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
yearOption: [],
pageForm: {
year: '',
hdtype: 1,
year: "",
hdtype: 1
}
}
},
@@ -77,7 +60,7 @@ layout("/mobile/platform.html"){
},
async onLoad() {
this.mLoading = true
$.post('/mobile/wmhd/apply/pageData', this.pageForm).then(res => {
$.post("/mobile/wmhd/apply/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -90,31 +73,30 @@ layout("/mobile/platform.html"){
})
},
openView(o) {
const {hdid, hdjssj, hdkssj, hdflag} = o
const { hdid, hdjssj, hdkssj, hdflag } = o
if (!hdflag) {
vant.Toast('活动暂未开启!')
return;
vant.Toast("活动暂未开启!")
return
}
if (moment().format("YYYY-MM-DD HH:mm:ss") < hdkssj) {
vant.Toast('报名暂未开始!')
vant.Toast("报名暂未开始!")
return
} else if (moment().format("YYYY-MM-DD HH:mm:ss") > hdjssj) {
vant.Toast('报名已结束!')
vant.Toast("报名已结束!")
return
}
window.location.href = '/platform/staffActivities?client=mobile&id=' + hdid
window.location.href = "/platform/staffActivities?client=mobile&id=" + hdid
}
},
async created() {
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({value: i, text: i + '年'},)
this.yearOption.unshift({ value: i, text: i + "年" })
}
this.$set(this.pageForm, "year", this.yearOption[0].value)
}
})
</script>
<!--#
}
#-->
@@ -5,35 +5,23 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="我的审核"
left-arrow
placeholder
fixed
@click-left="history.go(-1)"
></van-nav-bar>
<van-nav-bar title="我的审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="RGB(8,23,118)">
<van-dropdown-item v-model="pageForm.year" @change="yearChange"
:options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange"
:options="auditList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unionId" @change="yearChange"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H10')}"
:options="mCommon.unionList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange"
:options="mCommon.unitList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" @change="yearChange" :options="yearList"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.isAudit" @change="yearChange" :options="auditList"></van-dropdown-item>
<van-dropdown-item
v-model="pageForm.unionId"
@change="yearChange"
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('SchoolUnionMemberAdmin')||@shiro.hasRole('H10')}"
:options="mCommon.unionList"
></van-dropdown-item>
<van-dropdown-item v-model="pageForm.unitId" @change="yearChange" :options="mCommon.unitList"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 70px auto 0">
<van-list
v-model="mLoading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="mLoading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<div v-for="o in tableData" class="list-card" @click="openView(o)">
<van-cell-group inset>
<van-cell :border="false" title="姓名">{{o.username}}</van-cell>
@@ -41,8 +29,7 @@ layout("/mobile/platform.html"){
<van-cell :border="false" title="单位">{{o.dwname}}</van-cell>
<van-cell :border="false" title="工会">{{o.ghname}}</van-cell>
<van-cell :border="false" title="活动类别">{{o.hdlbname}}</van-cell>
<van-cell :border="false" title="作品类别" v-if="o.zplbname">{{o.zplbname}}
</van-cell>
<van-cell :border="false" title="作品类别" v-if="o.zplbname">{{o.zplbname}}</van-cell>
<van-cell :border="false" title="上传时间">{{o.hdsbsj}}</van-cell>
<van-cell :border="false" title="审核状态">
<span :style="'color:'+o.stateColor">{{o.stateName}}</span>
@@ -50,47 +37,39 @@ layout("/mobile/platform.html"){
</van-cell-group>
</div>
</van-list>
<van-empty
v-if="mLoading==false&&tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-popup v-model="viewShow" position="right"
:style="{ height: '100%',width:'100%' }">
<van-nav-bar title="详细信息" left-arrow placeholder fixed
@click-left="viewShow=false"></van-nav-bar>
<van-popup v-model="viewShow" position="right" :style="{ height: '100%',width:'100%' }">
<van-nav-bar title="详细信息" left-arrow placeholder fixed @click-left="viewShow=false"></van-nav-bar>
<mobile-wmhd-info ref="minfo"></mobile-wmhd-info>
</van-popup>
</div>
<script>
let vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
viewShow: false,
pageForm: {
year: new Date().getFullYear(),
isAudit: false,
isAudit: false
},
unitList: [],
unionList: [],
yearList: [],
auditList: [
{text: '未审核', value: false},
{text: '已审核', value: true},
],
{ text: "未审核", value: false },
{ text: "已审核", value: true }
]
}
},
components: {
'mobile-wmhd-info': httpVueLoader('/components/mobile/wmhd/info.vue?v=' + new Date().getTime()),
"mobile-wmhd-info": httpVueLoader("/components/mobile/wmhd/info.vue?v=" + new Date().getTime())
},
methods: {
yearChange() {
@@ -102,7 +81,7 @@ layout("/mobile/platform.html"){
},
async onLoad() {
this.mLoading = true
$.post('/mobile/wmhd/audit/pageData', this.pageForm).then(res => {
$.post("/mobile/wmhd/audit/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -115,8 +94,7 @@ layout("/mobile/platform.html"){
})
},
openView(o) {
if (o.auditState === '4000' || o.auditState === '4200') {
if (o.auditState === "4000" || o.auditState === "4200") {
window.location.href = "/mobile/wmhd/audit/auditHtml?id=" + o.id + "&auditState=" + o.auditState
} else {
this.viewShow = true
@@ -126,15 +104,19 @@ layout("/mobile/platform.html"){
}
},
async flushUnits() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('wyh03')||@shiro.hasRole('wyh02')||@shiro.hasRole('SchoolUnionMemberAdmin')}" === 'true') {
if (
"${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('wyh03')||@shiro.hasRole('wyh02')||@shiro.hasRole('SchoolUnionMemberAdmin')}" ===
"true"
) {
await mCommon.getUnitList(this.pageForm.unionId)
} else {
await mCommon.getUnitList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
}
}, async init() {
},
async init() {
let nowYear = new Date().getFullYear()
for (let i = nowYear; i >= nowYear - 9; i--) {
this.yearList.push({text: i, value: i})
this.yearList.push({ text: i, value: i })
}
await mCommon.getUnionList()
@@ -151,7 +133,7 @@ layout("/mobile/platform.html"){
this.init()
}
})
window.addEventListener('pageshow', e => {
window.addEventListener("pageshow", (e) => {
if (e.persisted || (window.performance && window.performance.navigation.type === 2)) {
vue.flushUnits()
vue.init()
@@ -159,7 +141,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
#-->
@@ -1,37 +1,30 @@
<!--#
layout("/mobile/platform.html"){
#-->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/video/css/video-js.min.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/video/css/video-js.min.css" />
<script src="${base!}/assets/platform/plugins/video/js/video.min.js"></script>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="校工会审核" left-arrow placeholder fixed
@click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="校工会审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<mobile-wmhd-info ref="minfo" :id.sync="id" title="校工会审核" :handle="handle">
<template #handle>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">校工会审核
</div>
<div class="van-sidebar-item van-sidebar-item--select">校工会审核</div>
</div>
<van-form>
<van-field
readonly
value="${@shiro.getPrincipalProperty('username')}"
name="username"
label="审核人员"
></van-field>
<van-field readonly value="${@shiro.getPrincipalProperty('username')}" name="username" label="审核人员"></van-field>
<van-field v-model="formData.auditTime" label="审核时间" readonly></van-field>
<van-field v-model="formData.auditOpinion"
required
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
<van-field
v-model="formData.auditOpinion"
required
rows="1"
autosize
label="审核意见"
type="textarea"
placeholder="请输入审核意见"
></van-field>
<van-field label="签字" required style="flex-flow: column">
@@ -39,51 +32,45 @@ layout("/mobile/platform.html"){
<div class="mb10">签&emsp;&emsp;字</div>
</template>
<template #input>
<mobile-sign ref="signature"
:my_sign.sync="formData.auditSign"></mobile-sign>
<mobile-sign ref="signature" :my_sign.sync="formData.auditSign"></mobile-sign>
</template>
</van-field>
<van-row gutter="20" style="margin-top: 30px;padding: 0 25px">
<van-row gutter="20" style="margin-top: 30px; padding: 0 25px">
<van-col span="8">
<van-button block @click="doAudit(1)">拒 绝
</van-button>
<van-button block @click="doAudit(1)">拒 绝</van-button>
</van-col>
<van-col span="8">
<van-button block @click="doAudit(2)" type="warning">返回修改
</van-button>
<van-button block @click="doAudit(2)" type="warning">返回修改</van-button>
</van-col>
<van-col span="8">
<van-button block @click="doAudit(3)" type="info">通 过
</van-button>
<van-button block @click="doAudit(3)" type="info">通 过</van-button>
</van-col>
</van-row>
</van-form>
</template>
</mobile-wmhd-info>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
data() {
return {
formData: {},
id: GetQueryString('id'),
handle: true,
id: GetQueryString("id"),
handle: true
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
'mobile-wmhd-info': httpVueLoader('/components/mobile/wmhd/info.vue?v=' + new Date().getTime()),
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue"),
"mobile-wmhd-info": httpVueLoader("/components/mobile/wmhd/info.vue?v=" + new Date().getTime())
},
methods: {
async doAudit(pass) {
if (!this.formData.auditOpinion) {
this.$toast.fail('请填写审核意见');
this.$toast.fail("请填写审核意见")
return
}
this.$refs.signature.submitSign()
@@ -91,14 +78,14 @@ layout("/mobile/platform.html"){
this.formData.pass = pass
const resp = await $.post("/platform/hd/wmhd/school/audit/doReview", this.formData)
if (resp.code === 0) {
this.$toast.success('审核成功');
this.$toast.success("审核成功")
setTimeout(() => {
window.history.go(-1)
}, 1000)
} else {
this.$toast.fail('审核失败');
this.$toast.fail("审核失败")
}
},
}
},
async created() {
this.mLoading = true
@@ -109,7 +96,7 @@ layout("/mobile/platform.html"){
this.formData = {
id: id,
username: "${@shiro.getPrincipalProperty('username')}",
auditTime: moment().format('YYYY-MM-DD'),
auditTime: moment().format("YYYY-MM-DD"),
auditOpinion: "通过",
auditSign: ""
}
@@ -118,7 +105,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
#-->
@@ -5,7 +5,7 @@ layout("/mobile/platform.html"){
<script src="${base!}/assets/platform/plugins/video/js/video.min.js"></script>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="基层工会审核" left-arrow placeholder fixed @click-left="history.go(-1)"></van-nav-bar>
<van-nav-bar title="基层工会审核" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<mobile-wmhd-info ref="minfo" :id.sync="id" title="基层工会审核" :handle="handle">
<template #handle>
@@ -14,42 +14,32 @@ layout("/mobile/platform.html"){
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar
title="作品列表"
left-arrow
placeholder
fixed
@click-left="history.go(-1)"
></van-nav-bar>
<van-nav-bar title="作品列表" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<div class="search-fixed">
<van-dropdown-menu active-color="#1989fa">
<van-dropdown-item v-model="pageForm.year" :options="yearOption"
@change="yearChange"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.year" :options="yearOption" @change="yearChange"></van-dropdown-item>
</van-dropdown-menu>
</div>
<div style="margin: 60px auto">
<van-notice-bar mode="closeable">左滑可删除作品。</van-notice-bar>
<van-list
v-model="mLoading"
:finished="finished"
:finished-text="tableData.length>0?'没有更多了':''"
@load="onLoad">
<van-list v-model="mLoading" :finished="finished" :finished-text="tableData.length>0?'没有更多了':''" @load="onLoad">
<div v-for="o in tableData" class="list-card" @click.stop="openView(o)">
<van-swipe-cell :disabled="o.auditstate!=='3999'">
<van-cell-group inset>
<image class="register-icon" src="/assets/mobile/svg/wmhd/bianji.svg"
@click.stop="openEdit(o.id,o.hdid)"
v-if="o.auditstate==='3999'||o.auditstate==='4100'||o.auditstate==='4250'"></image>
<image
class="register-icon"
src="/assets/mobile/svg/wmhd/bianji.svg"
@click.stop="openEdit(o.id,o.hdid)"
v-if="o.auditstate==='3999'||o.auditstate==='4100'||o.auditstate==='4250'"
></image>
<van-cell :border="false" title="姓名">{{o.sbrname}}</van-cell>
<van-cell :border="false" title="工号">{{o.loginname}}</van-cell>
<van-cell :border="false" title="单位">{{o.dwname}}</van-cell>
<van-cell :border="false" title="工会">{{o.ghname}}</van-cell>
<van-cell :border="false" title="活动类别">{{o.hdlbname}}</van-cell>
<van-cell :border="false" title="作品类别" v-if="o.zplbname">{{o.zplbname}}
</van-cell>
<van-cell :border="false" title="作品类别" v-if="o.zplbname">{{o.zplbname}}</van-cell>
<!-- <van-cell :border="false" title="主题">{{o.hdsbzpzt}}</van-cell>-->
<van-cell :border="false" title="上传时间">{{o.hdsbsj}}</van-cell>
<van-cell :border="false" title="审核状态">
@@ -57,27 +47,16 @@ layout("/mobile/platform.html"){
</van-cell>
</van-cell-group>
<template #right>
<van-button square text="删除" type="danger" @click="doDelete(o.id)"
style="height: 100%;"></van-button>
<van-button square text="删除" type="danger" @click="doDelete(o.id)" style="height: 100%"></van-button>
</template>
</van-swipe-cell>
</div>
</van-list>
<van-empty
v-if="mLoading==false&&tableData.length==0"
class="custom-image"
image="/none.svg"
description="暂无数据"
></van-empty>
<van-empty v-if="mLoading==false&&tableData.length==0" class="custom-image" image="/none.svg" description="暂无数据"></van-empty>
</div>
<van-popup v-model="viewShow" position="right"
:style="{ height: '100%',width:'100%' }">
<van-nav-bar title="详细信息" left-arrow placeholder fixed
@click-left="viewShow=false"></van-nav-bar>
<van-popup v-model="viewShow" position="right" :style="{ height: '100%',width:'100%' }">
<van-nav-bar title="详细信息" left-arrow placeholder fixed @click-left="viewShow=false"></van-nav-bar>
<mobile-wmhd-info ref="minfo"></mobile-wmhd-info>
</van-popup>
@@ -88,12 +67,11 @@ layout("/mobile/platform.html"){
<van-tabbar-item icon="manager-o" replace url="/mobile/wmhd/list">我的教工作品</van-tabbar-item>
</van-tabbar>
</div>
</div>
<script>
let vue = new Vue({
el: '#app',
el: "#app",
mixins: [mobileMixins],
data() {
return {
@@ -101,28 +79,28 @@ layout("/mobile/platform.html"){
tarBarActive: 1,
yearOption: [],
pageForm: {
year: '',
hdtype: 1,
year: "",
hdtype: 1
}
}
},
components: {
'mobile-wmhd-info': httpVueLoader('/components/mobile/wmhd/info.vue?v=' + new Date().getTime()),
"mobile-wmhd-info": httpVueLoader("/components/mobile/wmhd/info.vue?v=" + new Date().getTime())
},
methods: {
openEdit(id, hdid) {
window.location.href = '/platform/staffActivities?client=mobile&id=' + hdid + '&zpid=' + id
window.location.href = "/platform/staffActivities?client=mobile&id=" + hdid + "&zpid=" + id
},
async doDelete(id) {
const confirm = await vant.Dialog.confirm({
title: '提示',
message: '确定要删除此次作品吗?',
title: "提示",
message: "确定要删除此次作品吗?"
})
if (confirm === 'confirm') {
const data = await $.post("/platform/hd/wmhd/dodelete", {id: id})
if (confirm === "confirm") {
const data = await $.post("/platform/hd/wmhd/dodelete", { id: id })
if (data.code == 0) {
await this.yearChange()
vant.Toast.success('删除成功');
vant.Toast.success("删除成功")
}
}
},
@@ -134,7 +112,7 @@ layout("/mobile/platform.html"){
},
async onLoad() {
this.mLoading = true
$.post('/platform/hd/jzghd/sczp/pageData', this.pageForm).then(res => {
$.post("/platform/hd/jzghd/sczp/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = this.tableData.concat(res.data.list)
if (this.tableData.length === res.data.totalCount) {
@@ -155,14 +133,13 @@ layout("/mobile/platform.html"){
},
async created() {
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearOption.unshift({value: i, text: i + '年'},)
this.yearOption.unshift({ value: i, text: i + "年" })
}
this.$set(this.pageForm, "year", this.yearOption[0].value)
}
})
</script>
<!--#
}
#-->
@@ -1,23 +1,23 @@
<!--#
layout("/mobile/platform.html"){
#-->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/video/css/video-js.min.css">
<link rel="stylesheet" href="${base!}/assets/platform/plugins/video/css/video-js.min.css" />
<script src="${base!}/assets/platform/plugins/video/js/video.min.js"></script>
<div id="app" v-cloak>
<m-page-loading v-if="mLoading"></m-page-loading>
<van-nav-bar title="详细信息" left-arrow placeholder fixed @click-left="history.back()"></van-nav-bar>
<van-nav-bar title="详细信息" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<mobile-wmhd-info ref="minfo"></mobile-wmhd-info>
</div>
<script>
const vue = new Vue({
el: '#app',
el: "#app",
data() {
return {}
},
components: {
'mobile-wmhd-info': httpVueLoader('/components/mobile/wmhd/info.vue?v=' + new Date().getTime()),
"mobile-wmhd-info": httpVueLoader("/components/mobile/wmhd/info.vue?v=" + new Date().getTime())
},
methods: {},
async created() {
@@ -31,7 +31,6 @@ layout("/mobile/platform.html"){
})
</script>
<!--#
}
#-->
#-->