Commit 091569d1 authored by wangxuelai's avatar wangxuelai

Merge remote-tracking branch 'origin/lvtz_clock' into wxl-user-optimize

parents 3e88d75f 78b1f940
{
"pages": [
"ucenter/index",
"business/pages/webview/index"
"business/pages/webview/index",
"business/pages/helpcenter/feedbacksubmit",
"business/pages/helpcenter/myfeedback",
"business/pages/helpcenter/index",
"business/pages/helpcenter/detail"
],
"subpackages": [
{
......@@ -120,7 +124,8 @@
"name": "businessdeskcenter",
"pages": [
"index",
"clocklist"
"clocklist",
"themetemplate"
]
},
{
......@@ -384,7 +389,9 @@
"info",
"accountsecurity",
"setting",
"pcwebsiteintroduction"
"pcwebsiteintroduction",
"newinfo",
"qxknow"
]
},
{
......
......@@ -3,6 +3,9 @@ text, view {
font-size: 28rpx;
/* line-height: 1; */
}
page{
position: relative;
}
.container {
box-sizing: border-box;
height: auto;
......@@ -381,4 +384,16 @@ button::after{
color: #9C9C9D;
padding: 75rpx 0;
text-align: center;
}
/* 页面标题下横线 */
.page_topline {
width: 750rpx;
height: 1px;
/* background: rgba(0, 0, 0, 0.1); */
box-shadow: 0 0 5rpx 4rpx rgba(0, 0, 0, 0.1);
position: fixed;
left: 0;
top: 0;
z-index: 1;
transform: scaleY(.5);
}
\ No newline at end of file
var app = getApp();
import { pointsGoodsGet } from "../../../service/business/points.js";
Page({
data: {
localImageRoot: "../../../images/",
imageRoot: app.globalData.imageRoot,
imageVersion: app.globalData.imageVersion,
templateList: [],
total: 0,
hasmore: true,
page: 1,
perPage: 10,
emptyPage: false,
listLoading: false,
sid: 0
},
onLoad: function(options) {
const { sid } = options;
this.setData({
sid: sid || 0
});
this.getTemplateList("init");
},
onShow: function() {},
onReachBottom: function() {
this.getTemplateList("up");
},
getTemplateList(type) {
if (!this.data.hasmore) {
return;
}
if (this.data.listLoading) {
return;
}
this.setData({
listLoading: true
});
pointsGoodsGet({
page: this.data.page,
perPage: this.data.perPage,
school_id: 449
})
.then(res => {
const { code, data } = res;
this.setData({
listLoading: false
});
if (code != 200) {
// 失败的处理
} else {
if (data.total) {
this.setData({
total: data.total
});
}
switch (type) {
case "init": //页面进来第一次加载
this.setData({
templateList: [data.list]
});
console.log(this.data.templateList);
if (
this.data.total > this.caculateArrLength(this.data.templateList)
) {
this.data.page = this.data.page + 1;
} else {
// 没有更多了
this.setData({
hasmore: false
});
}
break;
case "down": // 页面下拉刷新
this.setData(
{
templateList: [data.list]
},
() => {
if (
this.data.total >
this.caculateArrLength(this.data.templateList)
) {
this.data.page = this.data.page + 1;
} else {
// 没有更多了
this.setData({
hasmore: false
});
}
}
);
wx.stopPullDownRefresh();
break;
case "up": // 页面上拉刷新
let list = this.data.templateList;
this.setData(
{
[`templateList[${this.data.page - 1}]`]: data.list
},
() => {
if (
this.data.total >
this.caculateArrLength(this.data.templateList)
) {
this.data.page = this.data.page + 1;
} else {
// 没有更多了
this.setData({
hasmore: false
});
}
}
);
break;
default:
break;
}
if (this.caculateArrLength(this.data.templateList) == 0) {
this.setData({
emptyPage: true
});
} else {
this.setData({
emptyPage: false
});
}
}
})
.catch(e => {
this.setData({
listLoading: false
});
});
},
caculateArrLength(array) {
let _length = 0;
array.forEach(ele => {
_length = _length + ele.length;
});
return _length;
},
bindTemplateSelected(e) {
const { id } = e.currentTarget.dataset;
console.log(id);
wx.showModal({
title: "提示一下",
content: `选择的id是${id},然后没有然后`,
showCancel: false,
confirmColor: "#64B8F5"
});
},
createCustom() {
wx.showModal({
title: "提示",
content: `不知道跳哪去`,
showCancel: false,
confirmColor: "#64B8F5"
});
}
});
{
"navigationBarTitleText": "选择作业打卡模板",
"enablePullDownRefresh": false,
"usingComponents": {
"expiredTip": "../../../components/expiredTip",
"empty-content": "../../../components/emptycontent"
}
}
\ No newline at end of file
<wxs src="../../../filter/index.wxs" module="filter" />
<view class="container">
<view class="list clearfix" wx:if="{{!emptyPage}}">
<block wx:for="{{templateList}}" wx:for-item="bigitem" wx:key="bigindex" wx:for-index="bigindex">
<view class="item" wx:for="{{bigitem}}" wx:for-item="item" data-id="{{item.id}}" wx:key="index" bindtap="bindTemplateSelected">
<image class="item-cover" src="{{filter.imagify(item.cover)}}" mode="aspectFill"></image>
<view class="item-title">{{item.title}}</view>
</view>
</block>
</view>
<empty-content text="咋肥事咧,一个模板也没有~" emptyimg="" wx:if="{{emptyPage}}"></empty-content>
<view class="submitbtn-box">
<view class="submitbtn" bindtap="createCustom">创建自定义打卡</view>
</view>
</view>
\ No newline at end of file
page {
background: #F5F5F5;
}
.container {
min-height: 100vh;
padding-bottom: 150rpx;
}
.list {
padding: 18rpx;
}
.list .item {
width: 50%;
float: left;
padding: 18rpx;
}
.list .item .item-cover {
width: 100%;
height: 320rpx;
}
.list .item .item-title {
font-size: 26rpx;
color: #222;
line-height: 36rpx;
padding-top: 12rpx;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.submitbtn-box {
width: 100%;
background: #F5F5F7;
display: flex;
align-items: center;
justify-content: center;
position: fixed;
left: 0;
bottom: 0;
padding-bottom: env(safe-area-inset-bottom);
}
.submitbtn {
padding: 26rpx;
font-size: 28rpx;
color: #16B0FD;
}
// business/pages/helpcenter/detail.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
{
"navigationBarTitleText": "帮助详情",
"usingComponents": {
"expiredTip": "../../components/expiredTip"
}
}
\ No newline at end of file
<!--business/pages/helpcenter/detail.wxml-->
<text>business/pages/helpcenter/detail.wxml</text>
/* business/pages/helpcenter/detail.wxss */
\ No newline at end of file
import { wxChooseImage, wxUploadFile } from "../../../utilities/wxApi.js";
import { bOssAccess } from "../../../service/business/common.js";
import { getRandomFilename, imagify } from "../../../utilities/index.js";
import { postfeed } from '../../../service/business/feedback.js';
var app = getApp();
Page({
data: {
imageRoot: app.globalData.imageRoot,
imageVersion: app.globalData.imageVersion,
localImageRoot: "../../../images/",
sid: 0,
imgs: [],
content: "",
contact: "",
publishing: false
},
onLoad: function(options) {
const {sid} = options;
this.setData({
sid: sid
})
},
imgUpload(e) {
if (this.data.imgs.length >= 4) {
wx.showToast({
title: "最多上传4张图片",
icon: "none"
});
return;
}
let access = {};
let filename = "";
bOssAccess({
school_id: this.data.sid
})
.then(acc => {
access = acc.data;
return wxChooseImage({});
})
.then(res => {
const { tempFiles } = res;
filename = `${access.dir}${getRandomFilename(tempFiles[0].path)}`;
return wxUploadFile({
url: access.host,
formData: {
key: filename,
policy: access.policy,
OSSAccessKeyId: access.accessid,
signature: access.signature,
callback: access.callback,
success_action_status: "200"
},
filePath: tempFiles[0].path,
name: "file"
});
})
.then(res => {
const { data } = res;
if (data == '{"status":"ok"}') {
let imgs = this.data.imgs;
imgs.push(filename);
this.setData({
imgs: imgs
});
} else {
wx.hideLoading();
wx.showModal({
title: "提示",
content: "上传失败",
showCancel: false
});
}
})
.catch(err => {
wx.hideLoading();
});
},
contentInput(e) {
const { value } = e.detail;
this.setData({
content: value
});
},
contactInput(e) {
const { value } = e.detail;
this.setData({
contact: value
});
},
publish() {
let that = this;
if (this.data.content.trim() == "") {
wx.showToast({
title: "请输入您的问题和意见",
icon: "none"
});
return;
}
if (this.data.publishing) {
return;
}
wx.showLoading({
title: "提交中..."
});
this.data.publishing = true;
postfeed({
school_id: this.data.sid,
content: this.data.content,
img: JSON.stringify(this.data.imgs),
contact: this.data.contact
})
.then(res => {
const { code, data } = res;
if (code == 200) {
wx.showToast({
title: "提交成功"
});
wx.navigateBack({
delta: 1,
success: function() {
that.data.publishing = false;
wx.hideLoading();
}
});
} else {
this.data.publishing = false;
wx.hideLoading();
}
})
.catch(() => {
wx.hideLoading();
this.data.publishing = false;
wx.showToast({
title: "提交失败",
icon: "none"
});
});
},
delImg(e) {
const { index } = e.currentTarget.dataset;
const imgs = this.data.imgs;
imgs.splice(index, 1);
this.setData({
imgs: imgs
});
},
// 我的反馈
toByfeedback() {
wx.navigateTo({
url: `/business/pages/helpcenter/myfeedback?sid=${this.data.sid}`
})
}
});
{
"navigationBarTitleText": "建议反馈",
"usingComponents": {
"expiredTip": "../../components/expiredTip"
}
}
\ No newline at end of file
<wxs src="../../../filter/index.wxs" module="filter" />
<view class="page_topline"></view>
<view class="container">
<view class="section">
<view class="section-title">问题和意见</view>
<view class="form-itembox">
<textarea class="input-item form-remark" placeholder="请详细描述您的建议,我们将及时跟进解决。(建议添加相关问题截图或视频)。" maxlength="1000" value="{{content}}" auto-height bindinput="contentInput"></textarea>
</view>
<view class="picbox-wrap">
<view class="picbox">
<block wx:for="{{imgs}}" wx:key="index">
<view class="item">
<image class="item-img" src="{{filter.imagify(item)}}" mode="aspectFill" ></image>
<image class="icon-del" src="{{localImageRoot}}2b/helpcenter/icon_del.png?{{imageVersion}}" bindtap="delImg" data-index="{{index}}"></image>
</view>
</block>
<view class="item item-add" wx:if="{{imgs.length<4}}" bindtap="imgUpload">+
<!-- <image class="pic-add" src="{{imageRoot}}2b/helpcenter/pic_add.png?{{imageVersion}}"></image> -->
</view>
</view>
</view>
</view>
<view class="section section-contact">
<view class="section-title">联系方式</view>
<view class="form-itembox">
<input class="input-item" type="text" value="{{contact}}" placeholder="请留下您的手机号/微信号 (可选)"/>
</view>
</view>
<view class="submitbtn {{!content? 'submitbtn-disabled' : ''}}" bindtap="publish">提交</view>
<view class="btn-mine" bindtap="toByfeedback">我的反馈</view>
</view>
<expiredTip/>
\ No newline at end of file
.container {
padding-bottom: 100rpx;
}
.section {
border-top: 20rpx solid #f5f5f5;
padding: 24rpx 30rpx;
position: relative;
}
.section:first-of-type {
border-top: 0;
}
.section-contact::after{
content: '';
width: 690rpx;
height: 1px;
background: rgba(241,242,243,1);
position: absolute;
left: 50%;
bottom: 0;
transform: translateX(-50%);
}
.section .section-title {
font-size: 30rpx;
color: #666;
line-height: 42rpx;
padding-bottom: 34rpx;
}
.section .input-item {
line-height: 36rpx;
width: 100%;
}
.section .input-item.form-remark {
height: 196rpx;
min-height: 196rpx;
}
.picbox-wrap {
width: 100%;
padding-top: 18rpx;
}
.picbox {
display: flex;
flex-wrap: wrap;
}
.picbox .item {
width: 116rpx;
height: 116rpx;
margin-right: 50rpx;
position: relative;
display: flex;
align-items: center;
justify-content: center;
font-size: 60rpx;
color: #ccc;
font-weight: bold;
}
.picbox .item:last-of-type {
margin-right: 0;
}
.picbox .item .item-img {
width: 100%;
height: 100%;
}
.picbox .item.item-add {
border: 2rpx solid #ccc;
}
.picbox .item .icon-del {
width: 36rpx;
height: 36rpx;
position: absolute;
top: -18rpx;
right: -18rpx;
}
.picbox .item .pic-add {
width: 100%;
height: 100%;
}
.submitbtn {
margin: 130rpx auto 96rpx;
width: 630rpx;
height: 90rpx;
background: rgba(22,176,253,1);
font-size: 32rpx;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
border-radius: 49rpx;
box-shadow: 0 0 20rpx rgba(22, 176, 253, 0.8);
}
.submitbtn-disabled{
background: rgba(185,199,213,1);
box-shadow: none;
}
.btn-mine {
font-size: 28rpx;
color: #16b0fd;
text-align: center;
}
import { helpList } from "../../../service/common.js";
import { imagify } from "../../../utilities/index.js";
var app = getApp();
Page({
data: {
imageRoot: app.globalData.imageRoot,
imageVersion: app.globalData.imageVersion,
localImageRoot: "../../../images/",
sid: 0,
page: 1,
perPage: 10,
list: [],
tatol: "",
hasmore: true,
emptyPage: false,
listLoading: false,
curbanner: 0
},
onLoad: function(options) {
const { sid } = options;
this.setData({
sid
});
this.getlist("init");
},
onPullDownRefresh: function() {
this.setData({
hasmore: true,
page: 1
});
this.getlist("down");
},
onReachBottom: function() {
this.getlist("up");
},
getlist(type) {
if (!this.data.hasmore) {
return;
}
if (this.data.listLoading) {
return;
}
this.setData({
listLoading: true
});
helpList({
page: this.data.page,
perPage: this.data.perPage
})
.then(res => {
const { code, data } = res;
wx.hideLoading();
this.setData({
listLoading: false
});
if (code != 200) {
// 失败的处理
} else {
if (data.total) {
this.setData({
total: data.total
});
}
switch (type) {
case "init": //页面进来第一次加载
this.setData({
list: [data.list]
});
if (data.total > this.caculateArrLength(this.data.list)) {
let page = this.data.page + 1;
this.setData({
page
});
} else {
// 没有更多了
this.setData({
hasmore: false
});
}
console.log(this.data.list, "11");
break;
case "down": // 页面下拉刷新
this.setData({
list: [data.list]
});
if (data.total > this.caculateArrLength(this.data.list)) {
let page = this.data.page + 1;
this.setData({
page
});
} else {
// 没有更多了
this.setData({
hasmore: false
});
}
wx.stopPullDownRefresh();
break;
case "up": // 页面上拉刷新
this.setData({
[`list[${this.data.page - 1}]`]: data.list
});
if (this.data.total > this.caculateArrLength(this.data.list)) {
let page = this.data.page + 1;
this.setData({
page
});
} else {
// 没有更多了
this.setData({
hasmore: false
});
}
break;
default:
break;
}
if (this.caculateArrLength(this.data.list) == 0) {
this.setData({
emptyPage: true
});
} else {
this.setData({
emptyPage: false
});
}
}
})
.catch(e => {
this.setData({
listLoading: false
});
});
},
caculateArrLength(array) {
let _length = 0;
array.forEach(ele => {
_length = _length + ele.length;
});
return _length;
},
toHelpdetail(e){
const { id } = e.currentTarget.dataset;
wx.navigateTo({
url: `/business/pages/helpcenter/detail?sid=${this.data.sid}&id=${id}`
})
},
toPostFeedback() {
wx.navigateTo({
url: `/business/pages/helpcenter/feedbacksubmit?sid=${this.data.sid}`
})
}
});
{
"navigationBarTitleText": "帮助中心",
"usingComponents": {
"expiredTip": "../../components/expiredTip",
"empty-content": "../../components/emptycontent"
}
}
\ No newline at end of file
<wxs src="../../../filter/index.wxs" module="filter" />
<view class="page_topline"></view>
<view class="container">
<view class="swiperbox">
<swiper class="swiperbox" autoplay circular bindchange="bindSwiperchange">
<swiper-item class="swiperitembox" wx:for="5" wx:key="index" wx:for-item="item">
<image class="swiperimg"
src="https://dss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/home/img/qrcode/zbios_09b6296.png"
data-url="{{item}}"
bindtap="previewBanner"
mode="aspectFill"
>
</image>
</swiper-item>
</swiper>
<view class="swiperdots">
<view class="dot {{curbanner==index?'active':''}}" wx:for="5" wx:key="index"></view>
</view>
</view>
<view class="section">
<view class="section-title">常见问题</view>
<view class="list" wx:if="{{list.length>0}}">
<block wx:for="{{list}}" wx:for-item="bigitem" wx:key="bigindex" wx:for-index="bigindex">
<view class="list-item" wx:for="{{bigitem}}" wx:for-item="item" wx:key="index" data-id="{{item.id}}" bindtap="toHelpdetail">
<view class="item-title">{{item.title}}</view>
<image class="icon-arr" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
</block>
</view>
<view class="empty-content" wx:else>
<empty-content text="暂未添加" emptyimg="common/empty/empty_b_search.png" width="255" height="198"></empty-content>
</view>
</view>
<view class="footer-box">
<view class="btn btn-feedback" bindtap="toPostFeedback"><image class="icon" src="{{imageRoot}}2b/organizationalmgt/pc-icon.png?{{imageVersion}}"/>建议反馈</view>
<view class="btn btn-contact" bindtap=""><image class="icon" src="{{imageRoot}}2b/organizationalmgt/pc-icon.png?{{imageVersion}}"/>在线咨询</view>
</view>
</view>
\ No newline at end of file
page {
position: relative;
}
.container {
padding-bottom: 100rpx;
}
.swiperbox {
width: 100%;
height: 500rpx;
position: relative;
}
.swiperitembox {
width: 100%;
height: 500rpx;
}
.swiperimg {
width: 100%;
height: 500rpx;
display: block;
}
.swiperbox {
height: 500rpx;
}
.swiperdots {
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 20rpx;
display: flex;
align-items: center;
}
.swiperdots .dot {
width: 10rpx;
height: 10rpx;
margin: 0 4rpx;
border-radius: 50%;
background: #fff;
}
.swiperdots .dot.active {
width: 14rpx;
height: 14rpx;
background: #ff594d;
}
.section {
padding: 0 30rpx;
}
.section .section-title {
font-size: 36rpx;
color: rgba(34, 34, 34, 1);
line-height: 50rpx;
padding: 32rpx 0 20rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: bold;
}
.list {
}
.list .list-item {
position: relative;
display: flex;
padding: 18rpx 0;
}
.list .list-item::after {
content: "";
width: 100%;
height: 1px;
background: rgba(232, 232, 232, 1);
position: absolute;
left: 0;
bottom: 0;
}
.list .list-item .item-title {
font-size: 30rpx;
color: rgba(34, 34, 34, 1);
line-height: 42rpx;
max-width: 650rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.list .list-item .icon-arr {
width: 12rpx;
height: 24rpx;
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
}
.empty-content{
height: 500rpx;
position: relative;
}
.footer-box {
width: 100%;
position: fixed;
bottom: 0;
left: 0;
padding: 20rpx 80rpx;
display: flex;
align-items: center;
justify-content: space-between;
z-index: 2;
}
.footer-box .btn {
width: 244rpx;
height: 84rpx;
border-radius: 42rpx;
font-size: 32rpx;
display: flex;
align-items: center;
justify-content: center;
}
.footer-box .btn.btn-feedback {
background: #fff;
color: rgba(22, 176, 253, 1);
box-shadow: 0 1px 12rpx 0 rgba(22, 176, 253, 0.3),
0 1px 4rpx 0 rgba(73, 194, 255, 0.2);
}
.footer-box .btn.btn-contact {
background: rgba(22, 176, 253, 1);
color: #fff;
box-shadow: 0 1px 12rpx 0 rgba(22, 176, 253, 0.4);
}
.footer-box .btn .icon {
width: 50rpx;
height: 50rpx;
margin-right: 14rpx;
}
import { myfeed } from '../../../service/business/feedback.js';
import {
imagify,
} from '../../../utilities/index.js';
var app = getApp();
Page({
data: {
imageRoot: app.globalData.imageRoot,
imageVersion: app.globalData.imageVersion,
localImageRoot: "../../../images/",
sid: 0,
page: 1,
perPage: 10,
list: [],
tatol: '',
hasmore: true,
emptyPage: false,
listLoading: false
},
onLoad: function(options) {
const {sid} = options;
this.setData({
sid
})
this.getlist('init')
},
onPullDownRefresh: function () {
this.setData({
hasmore: true,
page: 1,
})
this.getlist('down')
},
onReachBottom: function () {
this.getlist('up')
},
getlist(type) {
if (!this.data.hasmore) {
return;
}
if (this.data.listLoading) {
return
}
this.setData({
listLoading: true
})
myfeed({
page: this.data.page,
perPage: this.data.perPage,
school_id: this.data.sid,
}).then((res) => {
const { code, data } = res;
wx.hideLoading();
this.setData({
listLoading: false
})
if (code != 200) { // 失败的处理
} else {
if (data.total) {
this.setData({
total: data.total
})
}
data.list.forEach(item=>
item.imgs = JSON.parse(item.img)
)
switch (type) {
case 'init': //页面进来第一次加载
this.setData({
list: [data.list]
})
if (data.total > this.caculateArrLength(this.data.list)) {
let page = this.data.page + 1;
this.setData({
page,
})
} else { // 没有更多了
this.setData({
hasmore: false
})
}
console.log(this.data.list,'11')
break;
case 'down': // 页面下拉刷新
this.setData({
list: [data.list]
})
if (data.total > this.caculateArrLength(this.data.list)) {
let page = this.data.page + 1;
this.setData({
page,
})
} else { // 没有更多了
this.setData({
hasmore: false
})
}
wx.stopPullDownRefresh();
break;
case 'up': // 页面上拉刷新
this.setData({
[`list[${this.data.page - 1}]`]: data.list
})
if (this.data.total > this.caculateArrLength(this.data.list)) {
let page = this.data.page + 1;
this.setData({
page,
})
} else { // 没有更多了
this.setData({
hasmore: false
})
}
break;
default:
break;
}
if (this.caculateArrLength(this.data.list) == 0) {
this.setData({
emptyPage: true
})
} else {
this.setData({
emptyPage: false,
})
}
}
}).catch((e) => {
this.setData({
listLoading: false
})
})
},
caculateArrLength(array) {
let _length = 0;
array.forEach(ele => {
_length = _length + ele.length;
})
return _length;
},
prevImg(e) {
const { imglist, src } = e.currentTarget.dataset;
let urls = imglist.map(ele => imagify(ele));
wx.previewImage({
urls: urls,
current: imagify(src)
})
}
});
{
"navigationBarTitleText": "我的反馈",
"usingComponents": {
"expiredTip": "../../../components/expiredTip",
"list-loading": "../../../components/listloading",
"empty-content": "../../../components/emptycontent"
}
}
\ No newline at end of file
<wxs src="../../../filter/index.wxs" module="filter" />
<view class="page_topline"></view>
<view class="container">
<view class="list" wx:if="{{list.length>0}}">
<block wx:for="{{list}}" wx:for-item="bigitem" wx:key="bigindex" wx:for-index="bigindex">
<view class="list-item" wx:for="{{bigitem}}" wx:for-item="item" wx:key="index">
<view class="qa-box q-box">
<view class="nickname-box">{{item.teacher.nickname}}</view>
<view class="time">{{filter.formatDateWithChinese(item.created_at)}}</view>
<view class="content-box">
<view class="text">{{item.content}} {{item.img.length}}</view>
<view class="imgbox" wx:if="{{item.imgs.length>0}}">
<view class="imgitem" wx:for="{{item.imgs}}" wx:key="imgidx" wx:for-index="imgidx" wx:for-item="imgitem" bindtap="prevImg" data-src="{{imgitem}}" data-imglist="{{item.imgs}}">
<image class="img" src="{{filter.imagify(imgitem)}}" mode="aspectFill" ></image>
</view>
</view>
</view>
</view>
<view class="qa-box a-box" wx:if="{{item.reply_content}}">
<view class="nickname-box">轻校回复:</view>
<view class="content-box">
<view class="text">{{item.reply_content}}</view>
</view>
</view>
</view>
</block>
</view>
<empty-content text="暂无反馈" emptyimg="common/empty/empty_b_search.png" width="255" height="198" wx:else></empty-content>
<list-loading loading="{{listLoading}}"></list-loading>
<view class="has-nomore" wx:if="{{!hasmore && page>1}}">没有更多了</view>
</view>
\ No newline at end of file
page {
background: #f6f5f8;
position: relative;
}
.container {
padding-bottom: 100rpx;
}
.list {
}
.list .list-item {
background: #fff;
margin-bottom: 20rpx;
padding: 0 30rpx;
}
.list .list-item:last-of-type {
margin-bottom: 0;
}
.list .list-item .qa-box {
padding: 24rpx 0;
}
.list .list-item .a-box {
border-top: 1px solid #f5f5f7;
}
.list .list-item .qa-box .nickname-box {
font-size: 30rpx;
color: #666;
line-height: 42rpx;
}
.list .list-item .qa-box .time {
font-size: 26rpx;
color: #999;
line-height: 36rpx;
padding: 8rpx 0 2rpx;
}
.list .list-item .qa-box .content-box {
padding-top: 14rpx;
}
.list .list-item .qa-box .content-box .text {
font-size: 26rpx;
color: #222;
line-height: 36rpx;
padding-bottom: 14rpx;
}
.imgbox {
display: flex;
align-items: center;
padding: 42rpx 0 8rpx;
}
.imgbox .imgitem {
width: 116rpx;
height: 116rpx;
margin-right: 50rpx;
}
.imgbox .imgitem:last-of-type {
margin-right: 0;
}
.list .list-item .qa-box .content-box .imgbox .imgitem .img {
width: 100%;
height: 116rpx;
}
.has-nomore {
font-size: 26rpx;
color: #9c9c9d;
padding: 75rpx 0;
text-align: center;
}
......@@ -216,5 +216,10 @@ Page({
source: this.data.options,
})
})
},
goHelpcenter() {
wx.navigateTo({
url: `/business/pages/helpcenter/index?sid=${this.data.sid}`
})
}
})
\ No newline at end of file
......@@ -53,6 +53,12 @@
</view>
<image class="right-icon" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
<view class="line" bindtap="goHelpcenter">
<view class="left">
<image class="icon" src="{{imageRoot}}2b/organizationalmgt/set-icon.png?{{imageVersion}}" />意见反馈
</view>
<image class="right-icon" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image>
</view>
</view>
<btabbar sid="{{sid}}" current="ucenter">
</btabbar>
......
import {
getCategory,
setSchoolInfo,
} from "../../../service/business/shopeditor.js";
import {
schoolDetailGet
} from "../../../service/business/common.js";
import {
wxAuthorize,
wxChooseLocation,
wxOpenSetting
} from "../../../utilities/wxApi.js";
import {
LocalStorage
} from "../../../utilities/index.js";
import permissionUtils from "../../../utilities/permission.js";
var app = getApp();
Page({
data: {
imageRoot: app.globalData.imageRoot,
localImageRoot: "../../../images/",
imageVersion: app.globalData.imageVersion,
sid: 0,
industrys: ["单校区", "连锁", "品牌总部"],
industryIndex: -1,
allSubject: ["书法", "美术", "舞蹈", "乐器", "艺术", "英语"], // 所有科目
allSubjectShow: true, // 所有科目选择框是否显示
selectedSubject: [], // 选中的学科
selectedSubjectStyle: {}, // 控制选中的学科样式
params: {
title: "", // 店铺名称
longitude: "",
latitude: "",
location_address: "",
address: "",
tel: "",
logo: "qingxiao/daka/images/2c/common/logologo.png",
type: -1,
category: "",
qr_code: ""
},
mobileArr: [""],
submitting: false,
callBackSchoolId: 0,
from: 0, // 页面来源 1登录页面 2注册页面 3 校区管理的校区列表编辑按钮 4 校区详情页面的编辑按钮
},
onLoad: function(options) {
const visitor = LocalStorage.getItem("visitor");
const { sid, from, school_id } = options;
let dakarole = LocalStorage.getItem("dakarole");
this.setData({
sid: sid || 0,
school_id: school_id || 0,
dakarole: dakarole,
from: from || 0
});
this.getCategory();
if (this.data.sid == 0) {
return;
}
wx.showLoading({
title: "数据加载中..."
});
schoolDetailGet({
id: this.data.sid,
school_id: this.data.sid
})
.then(res => {
wx.hideLoading();
if (res.code == 200) {
const { data } = res;
if (data) {
// 是编辑状态
const {
address,
created_at,
latitude,
location_address,
longitude,
title,
tel_phone,
logo,
type,
category,
qr_code
} = data;
let selectedArr = [];
let selectedSubjectStyle = {};
for (let i = 0; i < category.length; i++) {
// selectedArr.push(clock_category_address[i].category_id)
selectedSubjectStyle[category[i]] = true;
}
this.setData({
mobileArr: tel_phone ? JSON.parse(tel_phone) : [""],
selectedSubjectStyle: selectedSubjectStyle,
selectedSubject: category,
"params.title": title,
"params.longitude": longitude,
"params.latitude": latitude,
"params.address": address || "",
"params.location_address": location_address,
"params.addressname": "",
"params.logo": logo || "qingxiao/daka/images/2c/pclogin/logo.png",
"params.type": Number(type) - 1
});
} else {
// 是新建状态
}
}
})
.catch(() => {
wx.hideLoading();
});
},
onReady: function() {
// Do something when page ready.
},
onShow: function() {
},
//选择学科
selectSubject(event) {
const subject = event.currentTarget.dataset.activeItem;
let selectedSubject = this.data.selectedSubject;
let selectedSubjectStyle = this.data.selectedSubjectStyle;
let flag = true;
for (let i = 0; i < selectedSubject.length; i++) {
if (subject.id == selectedSubject[i]) {
selectedSubject.splice(i, 1);
selectedSubjectStyle[subject.id] = false;
flag = false;
}
}
if (flag) {
selectedSubject.push(subject.id);
selectedSubjectStyle[subject.id] = true;
}
this.setData({
selectedSubject,
selectedSubjectStyle
});
},
//获取所有学科
getCategory() {
getCategory()
.then(res => {
if (res.code == 200) {
// 成功的操作
this.setData({
allSubject: res.data.list
});
}
})
.catch(e => {});
},
titleInput(e) {
const { value } = e.detail;
this.setData({
"params.title": value
});
},
addressSelect() {
wxAuthorize("scope.userLocation")
.then(() => {
return wxChooseLocation();
})
.then(value => {
console.log(value, "value");
if (value.errMsg == "chooseLocation:ok") {
if (value.address == undefined || value.address == "undefined") {
wx.showModal({
title: "提示",
content: "地理位置获取失败,请重新获取",
showCancel: false
});
return;
}
this.setData({
"params.longitude": value.longitude,
"params.latitude": value.latitude,
"params.location_address": `${value.address}${value.name}`,
"params.address": `${value.address}${value.name}`,
"params.addressname": value.name
});
} else {
}
})
.catch(e => {
if (e && e.errMsg.indexOf("authorize:fail") != -1) {
wx.showModal({
title: "提示",
content: "点击确认前往设置页面开启使用我的地理位置",
confirmColor: "#66B8F4",
success(res) {
if (res.confirm) {
wxOpenSetting();
}
}
});
return;
}
});
},
addressInput(e) {
const { value } = e.detail;
this.setData({
"params.addressname": value
});
},
industrySelect(e) {
const { value } = e.detail;
const that = this;
that.setData({
"params.type": value
});
},
save(e) {
wx.redirectTo({
url: "/business/pages/organizationalmgt/qxknow"
});
return;
let saveParams = this.objValueTrim(this.data.params);
saveParams.type = Number(saveParams.type) + 1;
saveParams.category = this.data.selectedSubject.join(",");
if (!saveParams.logo) {
wx.showModal({
title: "提示",
content: "请上传机构LOGO",
showCancel: false,
confirmColor: "#66B8F4"
});
return;
}
if (!saveParams.title) {
wx.showModal({
title: "提示",
content: "机构名称不能为空",
showCancel: false,
confirmColor: "#66B8F4"
});
return;
}
if (saveParams.title.length > 30) {
wx.showModal({
title: "提示",
content: "机构名称不能超过30个字",
showCancel: false,
confirmColor: "#66B8F4"
});
return;
}
if (!saveParams.category) {
wx.showModal({
title: "提示",
content: "请选择机构类型",
showCancel: false,
confirmColor: "#66B8F4"
});
return;
}
if (!saveParams.longitude) {
wx.showModal({
title: "提示",
content: "请选择机构地址",
showCancel: false,
confirmColor: "#66B8F4"
});
return;
}
if (this.data.submitting) {
return;
}
this.setData({
submitting: true
});
wx.showLoading({
title: "保存中...",
mask: true
});
saveParams.sort = 0;
saveParams.id = this.data.sid;
saveParams.school_id =
this.data.sid != 0 ? this.data.sid : this.data.school_id;
setSchoolInfo(saveParams)
.then(res => {
this.setData({
submitting: false
});
wx.hideLoading();
if (res.code == 200) {
// 成功的操作
if (this.data.sid == 0) {
// 新增的操作
LocalStorage.setItem("dakarole", 1);
permissionUtils.myMenulistGet(res.data.id);
wx.reLaunch({
url: `/business/pages/classmgt/index?sid=${res.data.id}&newcreate=1`
});
} else {
wx.showToast({
title: "保存成功",
success() {
wx.navigateBack({
delta: 1 // 回退前 delta(默认为1) 页面
});
}
});
}
}
})
.catch(e => {
this.setData({
submitting: false
});
});
},
objValueTrim(obj) {
let newObj = {};
Object.keys(obj).forEach(key => {
newObj[key] = `${obj[key]}`.trim();
});
return newObj;
}
});
{
"navigationBarTitleText": "添加学校信息",
"usingComponents": {
"expiredTip": "../../components/expiredTip",
"permission-box":"../../components/permissionbox"
}
}
\ No newline at end of file
<wxs src="../../../filter/index.wxs" module="filter" />
<view class="container">
<permission-box cinfigid="{{sid==0 || dakarole==1? 0: 700}}">
<view slot="menubtn">
<view class="box">
<view class="line-item">
<view class="item-label">学校名称</view>
<view class="right">
<input type="text" placeholder-class="placeholderclass" class="iteminput" maxlength="30" value="{{params.title}}" bindinput="titleInput" placeholder="请输入学校名称"></input>
<!-- <image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image> -->
</view>
</view>
<view class="line-item">
<view class="item-label">联系电话</view>
<view class="right">
<input type="text" placeholder-class="placeholderclass" class="iteminput" maxlength="11" value="" bindinput="" placeholder="请输入学校联系电话"></input>
<!-- <image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image> -->
</view>
</view>
<view class="line-item">
<view class="item-label">地址</view>
<view class="right" bindtap="addressSelect">
<image class="icon-address" src="{{localImageRoot}}2b/organizationalmgt/icon_address.png?{{imageVersion}}"></image>
<view class="iteminput">{{params.location_address ? params.location_address : '请选择地址'}}</view>
<!-- <image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image> -->
</view>
</view>
<view class="line-item">
<view class="item-label">详细地址</view>
<view class="right">
<textarea class="iteminput" placeholder-class="placeholderclass" bindinput="addressInput" autoHeight="true" value="{{params.addressname}}" placeholder="所在街道,楼牌号等"></textarea>
<!-- <image class="arrowsmall" src="{{imageRoot}}2b/organizationalmgt/right.png?{{imageVersion}}"></image> -->
</view>
</view>
<view class="line-item line-item-subject">
<view class="item-label">学校类型<text>(可多选)</text></view>
<view class="right content-box">
<view class="item-box" wx:for="{{allSubject}}" wx:for-index="idx" wx:for-item="item" wx:key="idx" data-active-item="{{item}}" bindtap="selectSubject" >
<view class="{{selectedSubjectStyle[item.id]?'item-box-inner selectd-item-box-inner':'item-box-inner'}}">{{item.name}}
<image class="icon-select" src="{{localImageRoot}}2b/organizationalmgt/icon_select_active.png?{{imageVersion}}" wx:if="{{selectedSubjectStyle[item.id]}}"></image>
<image class="icon-select" src="{{localImageRoot}}2b/organizationalmgt/icon_select.png?{{imageVersion}}" wx:else></image>
</view>
</view>
</view>
</view>
</view>
<view class="submitbtn-box">
<view class="submitbtn" bindtap="save">创建作业打卡</view>
</view>
</view>
</permission-box>
</view>
<expiredTip/>
\ No newline at end of file
page {
background: #f7f7f9;
height: 100%;
}
.container {
padding-bottom: 100rpx;
border-top: 1px solid #eee;
}
.placeholderclass {
color: #939393;
font-size: 26rpx;
}
.box {
background: #fff;
padding: 0 24rpx;
}
.line-item {
display: flex;
align-items: center;
background: #fff;
position: relative;
padding: 35rpx 0;
}
.box .line-item::after {
content: "";
width: 726rpx;
height: 1px;
background: rgba(0, 0, 0, 0.05);
position: absolute;
bottom: 0;
left: 0;
}
.box .line-item:last-of-type::after {
display: none;
}
.line-item .item-label {
font-size: 26rpx;
color: #222;
min-width: 180rpx;
word-break: break-all;
}
.line-item .item-label text {
font-size: 24rpx;
color: #ccc;
padding-left: 10rpx;
}
.line-item .right {
display: flex;
align-items: center;
flex: 1;
}
.icon-address{
width: 24rpx;
height: 28rpx;
margin-right: 10rpx;
}
.line-item .right .iteminput {
width: 100%;
color: #939393;
font-size: 26rpx;
word-break: break-all
}
.line-item .right .arrowsmall {
width: 12rpx;
height: 20rpx;
margin-left: 20rpx;
}
.line-item-subject {
flex-direction: column;
align-items: flex-start;
padding: 46rpx 0 10rpx;
}
.content-box {
padding-top: 32rpx;
display: flex;
flex-wrap: wrap;
}
.content-box .item-box {
width: 25%;
text-align: center;
height: 66rpx;
line-height: 66rpx;
padding-right: 4%;
margin-bottom: 32rpx;
}
.content-box .item-box:nth-child(4n) {
padding-right: 0;
}
.content-box .item-box .item-box-inner {
background: #fff;
border: 1px solid #dadbdc;
border-radius: 4rpx;
width: 100%;
position: relative;
}
.selectd-item-box-inner {
border: 1px solid #16B0FD !important;
color: #16B0FD !important;
}
.item-box-inner .icon-select {
position: absolute;
left: -2rpx;
bottom: -2rpx;
width: 26rpx;
height: 26rpx;
}
.submitbtn-box {
width: 100%;
/* background: #fff; */
display: flex;
align-items: center;
justify-content: center;
padding: 36rpx 60rpx;
position: fixed;
left: 0;
bottom: 0;
}
.submitbtn {
width: 100%;
height: 90rpx;
background: #16B0FD;
font-size: 32rpx;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
border-radius: 49rpx;
box-shadow: 0 0 20rpx rgba(22,176,253,.8);
}
Page({
data: {
imgList: [
"https://cdn.img.shangjiadao.cn/qingxiao/bargain/images/case/gif1.gif",
"https://cdn.img.shangjiadao.cn/qingxiao/bargain/images/case/code.png",
"https://cdn.img.shangjiadao.cn/qingxiao/bargain/images/case/idea.png",
"https://cdn.img.shangjiadao.cn/qingxiao/bargain/images/case/gif2.gif",
"https://cdn.img.shangjiadao.cn/qingxiao/bargain/images/case/gif3.gif",
"https://cdn.img.shangjiadao.cn/qingxiao/bargain/images/case/pic_03.png"
]
},
onLoad: function(options) {},
onShow: function() {},
// 去创建
toCreate() {
wx.navigateTo({
url: `/business/pages/deskcenter/themetemplate`
});
},
// 跳过
bindJumpEvent () {
wx.showModal({
title: '提示',
content: '跳过',
showCancel: false,
confirmColor: '#16B0FD'
})
},
});
{
"navigationBarTitleText": "了解轻校",
"usingComponents": {}
}
\ No newline at end of file
<view class="container">
<view class="btn-jump" bindtap="bindJumpEvent">跳过</view>
<view class="desc-box">
<image class="desc-img" wx:for="{{imgList}}" wx:key="index" src="{{item}}" mode="widthFix"></image>
</view>
<view class="submitbtn-box">
<view class="submitbtn" bindtap="toCreate">创建作业打卡</view>
</view>
</view>
page {
background: #f1f2f3;
}
.container {
padding-bottom: 200rpx;
}
.btn-jump{
position: fixed;
top: 22rpx;
right: 32rpx;
font-size: 32rpx;
color: #fff;
text-shadow: 0 2rpx 2rpx rgba(0,0,0,0.2);
line-height: 40rpx;
}
.desc-box {
}
.desc-box .desc-img {
width: 100%;
display: block;
}
.submitbtn-box {
width: 100%;
background: #fff;
display: flex;
align-items: center;
justify-content: center;
padding: 36rpx 60rpx;
position: fixed;
left: 0;
bottom: 0;
}
.submitbtn {
width: 100%;
height: 90rpx;
background: #16B0FD;
font-size: 32rpx;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
border-radius: 49rpx;
box-shadow: 0 0 20rpx rgba(22,176,253,.8);
}
\ No newline at end of file
......@@ -16,6 +16,11 @@ const apis = {
behaviorLog: `${api}student/data/behavior`,
sharerLog: `${api}student/data/share`,
},
// 帮助中心
help: {
helpList: `${api}common/helps`,//帮助列表
helpDetail: `${api}common/help/show`,//帮助详情
},
customer: {
integral: {
myIntegral: `${api}student/integral/me`,
......@@ -475,7 +480,9 @@ const apis = {
detailGet: `${api}member/clock/record/show`
},
feedback: {
postfeed: `${api}consumer/clock/feedback/add`
// postfeed: `${api}consumer/clock/feedback/add`,//
postfeed: `${api}member/feedbacks`,//新增
myfeed: `${api}member/feedback/my`,//我的反馈
},
rankingList: {
totalList: `${api}consumer/clock/rank/total_index`,
......
export default {
imageRoot: 'https://cdn.img.shangjiadao.cn/qingxiao/daka/images/',
host: 'https://qxapi.qingxiao.online/daka',
host2: 'https://wx.m.shangjiadao.cn',
// host: 'https://qxapi.qingxiao.online/daka',
// host2: 'https://wx.m.shangjiadao.cn',
storageVersion: '5.0',
imageVersion: '20200117',
// host: 'https://clock.wp53.cn',
// host2: 'https://test.wp53.cn',
host: 'https://clock.wp53.cn',
host2: 'https://test.wp53.cn',
appId: 'wxc1246ea029394785',
miniProgram: {
clock: 'wxdeee20e52a1fd7ee'
......
......@@ -65,6 +65,23 @@ function formatDate2(date) {
var minute = mi < 10 ? '0' + mi : mi;
return y + '-' + month + '-' + day + ' ' + hour + ':' + minute;
}
function formatDateWithChinese(date) {
if (!date) {
return ''
};
var regexp = getRegExp('-', 'g');
var time = getDate(date.replace(regexp, '/'));
var y = time.getFullYear();
var m = time.getMonth() + 1;
var month = m < 10 ? '0' + m : m;
var d = time.getDate();
var day = d < 10 ? '0' + d : d;
var h = time.getHours();
var hour = h < 10 ? '0' + h : h;
var mi = time.getMinutes();
var minute = mi < 10 ? '0' + mi : mi;
return y + '年' + month + '月' + day + ' ' + hour + ':' + minute;
}
function formatDateRemoveYear (date) {
var time = getDate(date * 1000);
var y = time.getFullYear();
......@@ -700,6 +717,7 @@ module.exports = {
checkStudentSelect: checkStudentSelect,
formatDateToHourMinute: formatDateToHourMinute,
formatDate2: formatDate2,
formatDateWithChinese: formatDateWithChinese,
formatWebsiteBarrage: formatWebsiteBarrage,
mediaPng:mediaPng,
Mathceil:Mathceil,
......
......@@ -12,6 +12,16 @@ function postfeed (data) {
errorresolve: 1,
})
}
function myfeed (data) {
return wxRequest({
role: '2b',
url: apis.business.feedback.myfeed,
data,
method: 'GET',
errorresolve: 1,
})
}
export {
postfeed,
myfeed
}
\ No newline at end of file
......@@ -478,6 +478,23 @@ function courseGalleryCommentDelete(data) {
needToken: true,
})
}
function helpList(data) {
return wxRequest({
url: `${apis.help.helpList}`,
data,
method: 'GET',
errorresolve: 1,
})
}
function helpDetail(data) {
return wxRequest({
url: `${apis.help.helpDetail}`,
data,
method: 'GET',
errorresolve: 1,
})
}
export {
cOssAccess,
getCircleUserShow,
......@@ -526,5 +543,7 @@ export {
courseGalleryCommentsList,
courseGalleryCommentPost,
courseGalleryCommentDelete,
generateClassReviewPiiic
generateClassReviewPiiic,
helpList,
helpDetail
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment