This commit is contained in:
peihaoyu 2020-09-17 20:03:25 +08:00
parent 0b5dd0ee26
commit 8fcd4ac8c4
64 changed files with 19759 additions and 9 deletions

Binary file not shown.

Binary file not shown.

BIN
HSLink-app/components/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,115 @@
<template>
<!-- jx-imgText-edit -->
<view class="jx-imgText-edit">
<view class="content">
<block v-for="(item,index) in editData" :key="index">
<textarea class="textarea_com" :placeholder="editData.length == 1 ? placeText : ''"
:maxlength="maxlength" :auto-height="true"
:data-index="index"
v-if="item.type=='textarea'"
value="" v-model="item.value">
</textarea>
<view class="view_com" v-else-if="item.type=='img'" >
<image class="img_com" :src="item.value" mode="widthFix"/>
<view class="mask" :style="{opacity:'0.5'}"></view>
<image class="del" src="@/static/shanchu.png" mode="widthFix" @click="delImg(index)"/>
</view>
</block>
</view>
</view>
</template>
<script>
export default {
props: {
maxlength: {
type: Number,
default: -1
},
placeText:{
//
type: String,
default: '写点什么吧...'
},
editData: {
type: Array,
default () {
return [];
}
},
},
data() {
return {
};
},
methods: {
//
submit () {
return this.editData;
},
//
delImg (index) {
uni.showModal({
title: '提示',
content: '确定要删除该图片吗? ',
success: (res) => {
if (res.confirm) {
console.log('用户点击确定');
this.$emit("delImg",index);
}
}
});
},
}
}
</script>
<style lang="less" scoped>
page{
background: #fff;
}
.jx-imgText-edit {
width: 100%;
padding: 0 30rpx 0rpx 30rpx;
box-sizing: border-box;
padding-top: 10rpx;
background: #fff;
.content {
.textarea_com {
// padding:20rpx 0;
width: 100%;
font-size: 32upx;
background: #fff;
line-height: 1.5;
min-height: 64rpx!important;
}
.view_com {
width: 100%;
position: relative;
.img_com {
width: 100%;
}
.mask {
background: rgba(0,0,0,0.5);
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
.del {
width: 60upx;
height: 60upx;
position: absolute;
bottom: 30upx;
right: 20upx;
}
}
}
}
</style>

View File

@ -0,0 +1,37 @@
# Prompt
## 说明
一个可以输入内容并返回的prompt组件, 支持一个默认slot放入中间.
## 用法
**父组件**
template中
```html
<prompt :visible.sync="promptVisible" :placeholder="输入店号" :defaultValue="123" @confirm="clickPromptConfirm" mainColor="#e74a39">
<!-- 这里放入slot内容-->
</prompt>
```
```js
import Prompt from '@/components/prompt/index.vue'
export default {
data() {
return {
// 控制弹框输入框显示
promptVisible: false,
}
},
methods: {
/**
* 点击弹出输入框确定
*/
clickPromptConfirm(val) {
console.log(val)
},
}
}
```

View File

@ -0,0 +1,157 @@
<template>
<view class="prompt-box" v-if="visible" @touchmove="true">
<view class="prompt">
<view class="prompt-top">
<text class="prompt-title">{{title}}</text>
<input v-if="!isMutipleLine" class="prompt-input" :style="inputStyle" type="text" :placeholder="placeholder" v-model="value">
<textarea v-else class="prompt-input" :style="inputStyle" type="text" :placeholder="placeholder" v-model="value"></textarea>
</view>
<slot></slot>
<view class="prompt-buttons">
<button class="prompt-cancle" :style="'color:' + mainColor" @click="close">取消</button>
<button class="prompt-confirm" :style="'background:' + mainColor" @click="confirm">确定</button>
</view>
</view>
</view>
</template>
<script>
export default {
props: {
visible: {
type: Boolean,
default: false,
required: true,
},
title: {
type: String,
default: '提示',
},
placeholder: {
type: String,
default: '请输入内容',
},
mainColor: {
type: String,
default: '#e74a39',
},
defaultValue: {
type: String,
default: '',
},
inputStyle: {
type: String,
default: '',
},
// textarea
isMutipleLine: {
type: Boolean,
default: false,
}
},
data() {
return {
value: '',
}
},
watch: {
visible(val) {
if(val) {
this.value = this.defaultValue
}
}
},
mounted() {
this.value = this.defaultValue === 'true' ? '' : this.defaultValue
},
methods: {
close() {
this.$emit('update:visible', false)
},
confirm() {
this.$emit('confirm', this.value)
this.value = ''
},
}
}
</script>
<style scoped>
view,
button,
input {
box-sizing: border-box;
}
.prompt-box {
position: fixed;
left: 0;
top: 0;
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100vh;
background: rgba(0, 0, 0, .2);
transition: opacity .2s linear;
}
.prompt {
position: relative;
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
width: 600upx;
min-height: 300upx;
background: white;
border-radius: 20upx;
overflow: hidden;
}
.prompt-top {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
}
.prompt-title {
margin: 20upx 0;
color: #333;
}
.prompt-input {
width: 520upx;
min-height: 72upx;
padding: 8upx 16upx;
border: 2upx solid #ddd;
border-radius: 8upx;
font-size: 28upx;
text-align: left;
}
.prompt-buttons {
display: flex;
width: 100%;
box-shadow: 0 0 2upx 2upx #eee;
}
.prompt-buttons button:after {
border-radius: 0;
}
button {
width: 50%;
background: white;
border-radius: 0;
}
.prompt-cancle {
background: white;
}
.prompt-confirm {
color: white;
}
</style>

View File

@ -0,0 +1,155 @@
<template>
<view class="page">
<view class="cu-item height">
<view class="action">
<text class="text-black">文章名称</text>
</view>
</view>
<view class="cu-item title">
<textarea placeholder="请输入文章名称"
v-model="noticeInfo.title"
maxlength=50
></textarea>
</view>
<view class="cu-item height">
<view class="action">
<text class="text-black">文章标签</text>
</view>
</view>
<view class="cu-item label">
<textarea placeholder="请输入文章标签"
v-model="noticeInfo.label"
maxlength=4
></textarea>
</view>
<view class="cu-item">
<view class="action">
<text class="text-black">文章内容</text>
</view>
</view>
<view class="cu-item content">
<textarea placeholder="请输入文章内容"
v-model="noticeInfo.content"
auto-height="true"
maxlength=2000
></textarea>
</view>
<view class="button">
<button type="default" @tap="preservation">保存</button>
</view>
</view>
</template>
<script>
import request from '@/util/request.js';
export default {
components: {
},
data() {
let noticeInfo = uni.getStorageSync('notice');
noticeInfo.fabulous = true;
noticeInfo.messageFabulous = true;
return {
//
noticeInfo: noticeInfo,
}
},
onLoad() {
},
/**
* 删除
* @param {Object} e
*/
onNavigationBarButtonTap(e) {
let _this = this;
uni.showModal({
title: '删除',
content: '确认删除这篇文章?',
success(res) {
if (res.confirm) {
request.post('/hs/deleteOne',{
id: _this.noticeInfo.id
}).then(res => {
console.log("删除这篇文章",res);
if (res.data === 1) {
uni.showToast({
icon: 'loading',
title: '删除成功'
});
setTimeout(() => {
uni.navigateBack({
delta: 1
})
},1000)
}
},err=>{
console.log("err",err);
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
mounted() {
},
methods: {
/**
* 保存
*/
preservation() {
request.post('/hs/updateOneContent',{
id: this.noticeInfo.id,
label: this.noticeInfo.label,
title: this.noticeInfo.title,
content: this.noticeInfo.content
}).then(res => {
console.log("保存文章",res);
if (res.data === 1) {
uni.showToast({
icon: 'loading',
title: '保存成功'
});
setTimeout(() => {
uni.navigateBack({
delta: 1
})
},1000)
}
},err=>{
console.log("err",err);
})
}
}
}
</script>
<style scoped>
.button{
padding: 40rpx 100rpx;
}
.cu-item{
padding: 20rpx;
}
.title{
padding-top: 0;
}
.title textarea, .label textarea, .content textarea{
background-color: #F1F1F1;
padding: 20rpx;
width: 100%;
border-radius: 10rpx;
}
.title textarea{
height: 128rpx;
font-weight: bold;
}
.label textarea{
height: 80rpx;
}
.content textarea{
text-indent: 40rpx;
}
</style>

View File

@ -0,0 +1,146 @@
<template>
<view class="pages">
<view class="cu-chat" id="chart-page">
<view class="cu-item" :class="isMy(item,'self')" v-for="(item,index) in letterList" :key="index">
<view class="header-photo cu-avatar radius" v-if="item.send_id !== userInfo.user_id">
{{messageInfo.userInfo.real_name.slice(0,1)}}
</view>
<view class="main">
<view class="content shadow" :class="isMy(item,'bg-green')">
<text>{{item.content}}</text>
</view>
</view>
<view class="header-photo cu-avatar radius" v-if="item.send_id === userInfo.user_id">
{{messageInfo.userInfo.real_name.slice(0,1)}}
</view>
<view class="date">{{item.letter_create_time}}</view>
</view>
</view>
<view class="cu-bar foot input" :style="[{bottom:InputBottom+'px'}]">
<view class="action">
<text class="cuIcon-sound text-grey"></text>
</view>
<input class="solid-bottom" :adjust-position="false" :focus="false" maxlength="300" cursor-spacing="10"
@focus="InputFocus" @blur="InputBlur" v-model="messageContent"></input>
<view class="action">
<text class="cuIcon-emojifill text-grey"></text>
</view>
<button class="cu-btn bg-green shadow" @tap="sendMessage">发送</button>
</view>
</view>
</template>
<script>
import request from '@/util/request.js';
import $ from '@/static/js/jquery-1.12.2.js';
export default {
data() {
return {
messageInfo: uni.getStorageSync("messageInfo"),
userInfo: uni.getStorageSync('userInfo'),
InputBottom: 0,
//
messageContent: '',
//
letterList: []
}
},
onShow() {
this.updateRead();
this.getTwoLetterApp();
},
onLoad() {
uni.setNavigationBarTitle({
title: this.messageInfo.userInfo.real_name
});
},
watch: {
letterList() {
console.log("messageList change");
this.$nextTick(() => {
uni.pageScrollTo({scrollTop: 99999, duration: 0});
})
}
},
methods: {
/**
* 获取两个人的私信
*/
getTwoLetterApp() {
request.post('/hs/getTwoLetterApp',{
userId: uni.getStorageSync("userInfo").user_id,
otherId: this.messageInfo.userInfo.user_id,
}).then(res => {
console.log("获取两个人的私信",res);
if (res.data !== null) {
this.letterList = res.data;
} else {
}
},err=>{
console.log("err",err);
})
},
/**
* 发送消息
*/
sendMessage() {
request.post('/hs/sendLetter',{
sendId: uni.getStorageSync("userInfo").user_id,
receiveId: this.messageInfo.userInfo.user_id,
content: this.messageContent
}).then(res => {
console.log("发送消息",res);
if (res.data === 1) {
this.getTwoLetterApp();
this.messageContent = '';
}
},err=>{
console.log("err",err);
})
},
/**
* 改为已读
*/
updateRead() {
request.post('/hs/updateReadApp',{
userId: uni.getStorageSync("userInfo").user_id,
otherId: this.messageInfo.userInfo.user_id
}).then(res => {
console.log("改为已读",res);
},err=>{
console.log("err",err);
})
},
/**
* 判断是否是发送人
* @param {Object} item
*/
isMy(item,classText) {
return item.send_id === uni.getStorageSync("userInfo").user_id ? classText : ''
},
InputFocus(e) {
this.InputBottom = e.detail.height
},
InputBlur(e) {
this.InputBottom = 0
}
}
}
</script>
<style scoped>
.header-photo{
text-align: center;
background-color: #1296DB;
color: #FFFFFF;
font-size: 40rpx;
font-weight: bold;
}
.cu-chat{
margin-bottom: 100rpx;
}
</style>

View File

@ -0,0 +1,137 @@
<template>
<view class="content">
<m-search
:show="false"
placeholder="搜索"
button="none"
backgroundColor="#efecec"
v-model="searchStr"
></m-search>
<view class="noData" v-if="noData === true">
<noData :custom="true"><view class="title" @tap="update()">暂无数据,点击重新加载</view></noData>
</view>
<view class="list cu-card article dynamic" v-else-if="noData === false">
<view class="cu-item" style="padding:0" v-for="(item,index) in noticeListQuery" :key="index">
<view class="cu-list menu solid-bottom" @click="goToDetails(item)">
<view class="cu-item arrow" style="min-height: 90rpx;padding-top: 10rpx;">
<view class="action">
<view class="action">
<view class='cu-tag radius bg-orange light margin-right-xs' v-if="item.type === '校园通知'">{{item.type}}</view>
<view class='cu-tag radius bg-blue light margin-right-xs' v-if="item.type === '家长意见'">{{item.type}}</view>
<view class='cu-tag radius bg-green light margin-right-xs' v-if="item.type === '学生想法'">{{item.type}}</view>
<text class="text-black text-lg">{{item.title}}</text>
</view>
</view>
</view>
</view>
<view class="text-content" style="margin:10rpx 0 0 0;">
<text class="text-gray">文章标签</text>
<text class="">{{item.label}}</text>
</view>
<view class="text-content" style="margin:10rpx 0 0 0;">
<text class="text-gray">发表人</text>
<text class="">{{item.real_name}}</text>
</view>
<view class="text-content" style="margin:10rpx 0 0 0;">
<text class="text-gray">发表时间</text>
<text class="">{{item.release_time}}</text>
</view>
<view class="cu-item flex flex-direction bg-white solid-top">
<button class="cu-btn bg-white text-orange lg" style="color:#1296DB;font-weight: 400;"
@click.stop="edit(item)">
编辑
</button>
</view>
</view>
</view>
</view>
</template>
<script>
import request from '@/util/request.js';
import mSearch from '@/components/mehaotian-search/mehaotian-search.vue';
import noData from '@/components/noData/noData.vue';
import { sortBy } from '@/static/js/public.js';
export default {
components: {
mSearch,
noData
},
data() {
return {
//
noData: false,
//
searchStr: '',
//
noticeList: [],
};
},
computed: {
//
noticeListQuery(){
return this.noticeList.filter(notice => {
return notice.title.indexOf(this.searchStr) != -1 || notice.type.indexOf(this.searchStr) != -1
|| notice.real_name.indexOf(this.searchStr) != -1
})
}
},
onLoad() {
},
onShow() {
this.getAllData();
},
methods: {
/**
* 编辑页面
* @param {Object} item
*/
edit(item) {
uni.setStorageSync("notice",item);
uni.navigateTo({
url: `/pages/notice-edit/notice-edit?noticeId=${item.id}`
})
},
/**
* 跳转详情页面
* @param {Object} item
*/
goToDetails(item) {
uni.setStorageSync("notice",item);
uni.navigateTo({
url: '/pages/tabbar/homepage/data-details'
})
},
/**
* 获取我的文章
*/
getAllData() {
request.post('/hs/getListByAttribute',{
text: '',
releaseId: uni.getStorageSync("userInfo").user_id
}).then(res=>{
console.log("我的文章",res);
this.noticeList = res.data;
this.noData = this.noticeList.length === 0 ? true : false;
},err=>{
console.log("err",err);
})
}
}
};
</script>
<style scoped>
.content {
min-height: 85vh;
}
.text-gray{
display: inline-block;
width: 4rem;
}
.cu-card>.cu-item{
margin: 20rpx!important;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

11022
HSLink-app/static/js/jquery-1.12.2.js vendored Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<script>
var __UniViewStartTime__ = Date.now();
document.addEventListener('DOMContentLoaded', function() {
document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
})
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title>View</title>
<link rel="stylesheet" href="view.css" />
</head>
<body>
<div id="app"></div>
<script src="__uniappes6.js"></script>
<script src="view.umd.min.js"></script>
<script src="app-view.js"></script>
</body>
</html>

View File

@ -0,0 +1,8 @@
var isReady=false;var onReadyCallbacks=[];
var isServiceReady=false;var onServiceReadyCallbacks=[];
var __uniConfig = {"pages":["pages/login/login","pages/tabbar/homepage/homepage","pages/tabbar/homepage/data-details","pages/tabbar/follow/follow","pages/tabbar/release/release","pages/tabbar/message/message","pages/tabbar/my/my","pages/release-detial/release-release/release-release","pages/release-detial/release-video/release-video","pages/release-detial/release-qa/release-qa"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"uni-app","navigationBarBackgroundColor":"#F8F8F8","backgroundColor":"#F8F8F8"},"tabBar":{"borderStyle":"black","backgroundColor":"#333","color":"#FFFFFF","selectedColor":"#f33e54","list":[{"pagePath":"pages/tabbar/homepage/homepage","iconPath":"static/img/tabbar/home.png","selectedIconPath":"static/img/tabbar/homeactive.png","text":"首页"},{"pagePath":"pages/tabbar/follow/follow","iconPath":"static/img/tabbar/guanzhu.png","selectedIconPath":"static/img/tabbar/guanzhuactive.png","text":"关注"},{"pagePath":"pages/tabbar/release/release","iconPath":"static/img/tabbar/add.png","selectedIconPath":"static/img/tabbar/addactive.png"},{"pagePath":"pages/tabbar/message/message","iconPath":"static/img/tabbar/news.png","selectedIconPath":"static/img/tabbar/newsactive.png","text":"消息"},{"pagePath":"pages/tabbar/my/my","iconPath":"static/img/tabbar/me.png","selectedIconPath":"static/img/tabbar/meactive.png","text":"我"}]},"nvueCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"peinikanxue","compilerVersion":"2.8.8","entryPagePath":"pages/login/login","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
var __uniRoutes = [{"path":"/pages/login/login","meta":{"isQuit":true},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"登录","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}},{"path":"/pages/tabbar/homepage/homepage","meta":{"isQuit":true,"isTabBar":true},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"首页","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}},{"path":"/pages/tabbar/homepage/data-details","meta":{},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"文章内容","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}},{"path":"/pages/tabbar/follow/follow","meta":{"isQuit":true,"isTabBar":true},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"关注","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}},{"path":"/pages/tabbar/release/release","meta":{"isQuit":true,"isTabBar":true},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"发布","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}},{"path":"/pages/tabbar/message/message","meta":{"isQuit":true,"isTabBar":true},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"消息","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}},{"path":"/pages/tabbar/my/my","meta":{"isQuit":true,"isTabBar":true},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"我","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}},{"path":"/pages/release-detial/release-release/release-release","meta":{},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"发图文","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}},{"path":"/pages/release-detial/release-video/release-video","meta":{},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"发视频","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}},{"path":"/pages/release-detial/release-qa/release-qa","meta":{},"window":{"enablePullDownRefresh":true,"navigationBarTitleText":"提问","navigationBarBackgroundColor":"#333","navigationBarTextStyle":"white"}}];
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});

View File

@ -0,0 +1,153 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ function webpackJsonpCallback(data) {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/ var executeModules = data[2];
/******/
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ }
/******/
/******/ // add entry modules from loaded chunk to deferred list
/******/ deferredModules.push.apply(deferredModules, executeModules || []);
/******/
/******/ // run deferred modules when all chunks ready
/******/ return checkDeferredModules();
/******/ };
/******/ function checkDeferredModules() {
/******/ var result;
/******/ for(var i = 0; i < deferredModules.length; i++) {
/******/ var deferredModule = deferredModules[i];
/******/ var fulfilled = true;
/******/ for(var j = 1; j < deferredModule.length; j++) {
/******/ var depId = deferredModule[j];
/******/ if(installedChunks[depId] !== 0) fulfilled = false;
/******/ }
/******/ if(fulfilled) {
/******/ deferredModules.splice(i--, 1);
/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
/******/ }
/******/ }
/******/ return result;
/******/ }
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ "app-config": 0
/******/ };
/******/
/******/ var deferredModules = [];
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ var jsonpArray = this["webpackJsonp"] = this["webpackJsonp"] || [];
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ jsonpArray.push = webpackJsonpCallback;
/******/ jsonpArray = jsonpArray.slice();
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ // run deferred modules from other chunks
/******/ checkDeferredModules();
/******/ })
/************************************************************************/
/******/ ([]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__7C9492E","name":"peinikanxue","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"usingComponents":true,"compilerVersion":3,"distribute":{"google":{"permissions":["\u003cuses-permission android:name\u003d\"android.permission.CHANGE_NETWORK_STATE\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.READ_CONTACTS\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.VIBRATE\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.READ_LOGS\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.ACCESS_WIFI_STATE\"/\u003e","\u003cuses-feature android:name\u003d\"android.hardware.camera.autofocus\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.WRITE_CONTACTS\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.ACCESS_NETWORK_STATE\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.CAMERA\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.RECORD_AUDIO\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.GET_ACCOUNTS\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.MODIFY_AUDIO_SETTINGS\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.READ_PHONE_STATE\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.CHANGE_WIFI_STATE\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.WAKE_LOCK\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.CALL_PHONE\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.FLASHLIGHT\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.ACCESS_COARSE_LOCATION\"/\u003e","\u003cuses-feature android:name\u003d\"android.hardware.camera\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.ACCESS_FINE_LOCATION\"/\u003e","\u003cuses-permission android:name\u003d\"android.permission.WRITE_SETTINGS\"/\u003e"]},"apple":{},"plugins":{"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"allowsInlineMediaPlayback":true,"safearea":{"background":"#333","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"2.8.8","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"borderStyle":"rgba(0,0,0,0.4)","backgroundColor":"#333","color":"#FFFFFF","selectedColor":"#f33e54","list":[{"pagePath":"pages/tabbar/homepage/homepage","iconPath":"static/img/tabbar/home.png","selectedIconPath":"static/img/tabbar/homeactive.png","text":"首页"},{"pagePath":"pages/tabbar/follow/follow","iconPath":"static/img/tabbar/guanzhu.png","selectedIconPath":"static/img/tabbar/guanzhuactive.png","text":"关注"},{"pagePath":"pages/tabbar/release/release","iconPath":"static/img/tabbar/add.png","selectedIconPath":"static/img/tabbar/addactive.png"},{"pagePath":"pages/tabbar/message/message","iconPath":"static/img/tabbar/news.png","selectedIconPath":"static/img/tabbar/newsactive.png","text":"消息"},{"pagePath":"pages/tabbar/my/my","iconPath":"static/img/tabbar/me.png","selectedIconPath":"static/img/tabbar/meactive.png","text":"我"}],"height":"50px"},"launch_path":"__uniappview.html","arguments":"{\"pathName\":\"pages/login/login\",\"query\":\"\"}"}}

View File

@ -0,0 +1,125 @@
.login {
height: auto;
width: auto;
display: flex;
flex-direction: row;
justify-content:center;
/* margin-top: 128upx; */
}
.content {
height: auto;
width: auto;
display: flex;
flex-direction: column;
justify-content:center;
/* margin-top: 128upx; */
}
/* 头部 logo */
.header {
/* width:400upx;
height:200upx; */
/* box-shadow:0upx 0upx 60upx 0upx rgba(0,0,0,0.1); */
border-radius:50%;
/* background-color: #000000;
*/ margin-top: 30upx;
/* margin-bottom: 30upx; */
margin-left: auto;
margin-right: auto;
}
.header image{
width:200upx;
height:200upx;
border-radius:50%;
text-align:center;
}
.title{
text-align:center;
/* margin-bottom: 70upx; */
font-weight:900;
font-size: 18px;
}
/* 主体 */
.main {
display: flex;
flex-direction: column;
padding-left: 90upx;
padding-right: 90upx;
}
.tips {
color: #999999;
font-size: 28upx;
margin-top: 64upx;
margin-left: 48upx;
/* margin-bottom:30px; */
}
/* 其他登录方式 */
.other_login{
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
margin-top: 256upx;
text-align: center;
}
.login_icon{
border: none;
font-size: 128upx;
margin: 0 64upx 0 64upx;
color: rgba(0,0,0,0.7)
}
.wechat_color{
color: #83DC42;
}
.weibo_color{
color: #F9221D;
}
.github_color{
color: #24292E;
}
/* 底部 */
.footer{
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
font-size: 28upx;
margin-top: 64upx;
color: rgba(0,0,0,0.7);
text-align: center;
height: 40upx;
line-height: 40upx;
}
.footer text{
font-size: 24upx;
margin-left: 15upx;
margin-right: 15upx;
}
/*
2019-10-28 ljl 登录输入框样式
*/
.ljl_title{
background: #f3f3f3;
font-size:10px;
text-indent: 10px;
padding-top:5px;
color:#cccdd1;
height: 100upx;
border-radius: 30upx;
width: 90%;
margin: auto;
}
.main-list,.ljl_top{
margin-top: -24upx !important;
}
.ljl_tt{
margin-top: 25upx;
border-bottom: 1upx solid #cdcdcd;
}

View File

@ -0,0 +1,75 @@
.uni-list-item__content-title{
/* padding-bottom: 20rpx; */
/* border-bottom: 1rpx solid #F6F6F6; */
font-size: 30rpx!important;
}
.uni-list-item__content-note{
font-size: 30rpx!important;
}
.uni-list-item__container:after{
background-color: rgba(0,0,0,0)!important;
}
.uni-btn-icon{
color: #FFFFFF!important;
}
uni-page-body .content{
padding: 0!important;
}
uni-page-body .content .list{
background-color: #F1F1F1!important;
padding-top: 1rpx;
}
uni-page-body .content .list .one{
margin: 20rpx;
border-radius: 10rpx;
}
.uni-list-item{
padding: 20rpx!important;
margin: 20rpx!important;
background: #FFFFFF!important;
border-radius: 10rpx;
}
.uni-list{
background-color: #F1F1F1!important;
}
.content-top{
margin-top: 10rpx;
}
.green-button{
background-color: #1D9081!important;
color: #FFFFFF;
}
.uni-radio-input-checked{
background-color: rgb(113,217,177)!important;
border-color: rgb(113,217,177)!important;
}
.uni-checkbox-input{
border-color: rgb(165, 165, 165)!important;
}
uni-checkbox.checked .uni-checkbox-input{
background-color: rgb(113,217,177)!important;
border-color: rgb(113,217,177)!important;
}
.search{
z-index: 999;
padding: 20rpx 20rpx 68rpx 20rpx!important;
border-bottom: 0!important; }
.search .content{
padding-bottom: 0;
position: fixed;
z-index: 999;
width: 96%!important;
}
.uni-picker-container .uni-picker-action.uni-picker-action-confirm{
color: #1D9081;
}
.cu-list .cu-item .text-black{
position: absolute;
display: inline-block;
width: 450rpx!important;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

View File

@ -0,0 +1,322 @@
/* 公共样式表css */
html,body {
background-color: red;
color: #333;
margin: 0;
height: 100%;
font-family: "Myriad Set Pro","Helvetica Neue",Helvetica,Arial,Verdana,sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
font-weight: normal;
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
a {
text-decoration: none;
color: #000;
}
a, label, button, input, select {
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
img {
border: 0;
}
body {
background: #f4f4f4;
color: #666;
}
html, body, div, dl, dt, dd, ol, ul, li, h1, h2, h3, h4, h5, h6, p, blockquote, pre, button, fieldset, form, input, legend, textarea, th, td {
margin: 0;
padding: 0;
}
a {
text-decoration: none;
color: #08acee;
}
button {
outline: 0;
}
img {
border: 0;
}
button,input,optgroup,select,textarea {
margin: 0;
font: inherit;
color: inherit;
outline: none;
}
li {
list-style: none;
}
a {
color: #666;
}
.clearfix::after {
clear: both;
content: ".";
display: block;
height: 0;
visibility: hidden;
}
.clearfix {
}
/* 必要布局样式css */
.aui-flexView {
width: 100%;
height: 100%;
margin: 0 auto;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
}
.aui-scrollView {
width: 100%;
height: 100%;
-webkit-box-flex: 1;
-webkit-flex: 1;
-ms-flex: 1;
flex: 1;
overflow-y: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
position: relative;
/* margin-top: -44px; */
}
.aui-navBar {
height: 44px;
position: relative;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
z-index: 1002;
background: #ffffff;
}
.aui-navBar:after {
content: '';
position: absolute;
z-index: 2;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
border-bottom: 1px solid #ffffff;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
}
.aui-navBar-item {
height: 44px;
min-width: 25%;
-webkit-box-flex: 0;
-webkit-flex: 0 0 25%;
-ms-flex: 0 0 25%;
flex: 0 0 25%;
padding: 0 0.9rem;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
font-size: 0.7rem;
white-space: nowrap;
overflow: hidden;
color: #a0a0a0;
position: relative;
}
.aui-navBar-item:first-child {
-webkit-box-ordinal-group: 2;
-webkit-order: 1;
-ms-flex-order: 1;
order: 1;
margin-right: -25%;
font-size: 0.9rem;
font-weight: bold;
}
.aui-navBar-item:last-child {
-webkit-box-ordinal-group: 4;
-webkit-order: 3;
-ms-flex-order: 3;
order: 3;
-webkit-box-pack: end;
-webkit-justify-content: flex-end;
-ms-flex-pack: end;
justify-content: flex-end;
}
.aui-center {
-webkit-box-ordinal-group: 3;
-webkit-order: 2;
-ms-flex-order: 2;
order: 2;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
height: 44px;
width: 50%;
margin-left: 25%;
}
.aui-center-title {
text-align: center;
width: 100%;
white-space: nowrap;
overflow: hidden;
display: block;
text-overflow: ellipsis;
font-size: 0.95rem;
color: #3c3c3c;
}
.icon {
width: 20px;
height: 20px;
display: block;
border: none;
float: left;
background-size: 20px;
background-repeat: no-repeat;
}
.icon-return {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACh0lEQVRoQ+3ZMW8TMRQH8PcOsTBQISExVCIRCwgWFvZ+hZYBpIrEcTYkBsTGlI2VDamL3YEBpWJoR1BJaOlXYEzyDYp0bMRGRjnJoDuWs/1e3EbKeHf55b33vzsb4YJ98IJ54RKce8XZV1gIcQ8AviDiD2vtC631pzZFYQ2WUt611p4CwM0VcqqU2soSXIN1ztdKqTfZgRuw75RSz9tg3bHsWjomlh04NpYVOAWWDbjf7z8oimLipbH7bUopJdvO7L/Hk8+wwyLiCSLe8H6cww4BwGYFTo0lbWkKLBmYCksCrsNaa99rrZ/FmFnS0GrCdrvd3mg0MqEDqu58yVKaAzZZSwshHgLAsX/rcW2csrJVtaNXeIWdIuL16qJU2OgVrsMCwEGn03mSamaThVYTtizLp+PxeJkioJKFFldslJbmjA0O5o4NCm7AHpZluUM5s1FCSwjxCAA++7ceADiczWaPJ5PJL6qAihJaUspdY8w+Il7xLsASG6SlhRA/EfGa91BxNJ/Pd7hVNtiT1mAwOAeADXdCa637Hi0Wi3zBUsptY8wHRLzqwIh/nlbzbWmna0roLEOrmo11QQd9W1oHdFDwOrR3cLCH/uuFn0uQRQE7dMPKJHl6RwNzRUcF/w9N9VIRHVyhazbLDihWP5KAHbphOzQ5OhmYCzopmAM6OZgaTQL20FMAuOUtHESfaTLwCn3HWnuWEk0KpkCTg1OjWYArtDHmKyJu+jMdeh+KDdghh8NhZ7lcfvPRoXcaWYFToNmBY6NZgj20m+nb3pr3W631yzY7GWzBDtXr9TaLojjz0N+VUvezBXvoPQBw0Fda649Zg9vg6o5l3dKhse58l+AY/yqnc/4GvNDoTFOq8FwAAAAASUVORK5CYII=");
}
.icon-sys {
background-image: url("data:image/png;base64,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");
margin-right: 10px;
}
.icon-fre {
background-image: url("data:image/png;base64,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");
}
.aui-news-box {
margin-top: 8px;
background: #fff;
}
.aui-news-item {
padding: 15px;
position: relative;
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-webkit-align-items: center;
align-items: center;
}
.aui-news-item-hd {
margin-right: .8em;
width: 55px;
height: 55px;
line-height: 55px;
text-align: center;
background: #fff;
border-radius: 15px;
}
.aui-news-item-hd img {
width: 100%;
max-height: 100%;
vertical-align: top
}
.aui-news-item-bd {
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
min-width: 0;
}
.aui-news-item-bd h4 {
font-weight: 400;
font-size: 16px;
width: auto;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-wrap: normal;
word-wrap: break-word;
word-break: break-all;
padding-bottom: 10px;
color: #333;
}
.aui-news-item-bd p {
color: #848689;
font-size: 13px;
line-height: 1.2;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
}
.aui-news-item:before {
content: '';
position: absolute;
z-index: 2;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
border-bottom: 1px solid #d8d8d8;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
-webkit-transform-origin: 0 100%;
transform-origin: 0 100%;
left: 20px;
}
.aui-news-item-fr {
text-align: right;
font-size: 13px;
color: #8c8c8c;
margin-top: -25px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -0,0 +1,157 @@
@font-face {font-family: "iconfont";
src:
url('./static/iconfont.ttf') format('truetype')
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-search:before {
content: "\e614";
}
.icon-haoyou:before {
content: "\e62e";
}
.icon-play:before {
content: "\e630";
}
.icon-stop:before {
content: "\e635";
}
.icon-address:before {
content: "\e62c";
}
.icon-more:before {
content: "\e840";
}
.icon-addre:before {
content: "\e700";
}
.icon-right:before {
content: "\e61c";
}
.icon-message:before {
content: "\e671";
}
.icon-history:before {
content: "\e8bd";
}
.icon-left:before {
content: "\e602";
}
.icon-share:before {
content: "\e694";
}
.icon-yanzhengma:before {
content: "\e7a1";
}
.icon-zhiwei:before {
content: "\e63e";
}
.icon-shoucang2:before {
content: "\e605";
}
.icon-time:before {
content: "\e600";
}
.icon-fatie:before {
content: "\e629";
}
.icon-CombinedShape:before {
content: "\e638";
}
.icon-fenxiang:before {
content: "\e667";
}
.icon-E607:before {
content: "\e647";
}
.icon-guangchang:before {
content: "\e601";
}
.icon-vnums:before {
content: "\e615";
}
.icon-set:before {
content: "\eb40";
}
.icon-tongxunlu:before {
content: "\e604";
}
.icon-xuexijilu:before {
content: "\e6a3";
}
.icon-daoshi:before {
content: "\e6d7";
}
.icon-aixin:before {
content: "\e83f";
}
.icon-aixin1:before {
content: "\e85c";
}
.icon-collect:before {
content: "\e603";
}
.icon-xuanze:before {
content: "\e60b";
}
.icon-shoujihao:before {
content: "\e67d";
}
.icon-xuanze1:before {
content: "\e6cb";
}
.icon-shuaxin:before {
content: "\e87e";
}
.icon-shezhi:before {
content: "\e611";
}
.icon-down-copy:before {
content: "\e85d";
}
.icon-up-copy:before {
content: "\e85e";
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,64 @@
/* 一些公共方法 */
import request from '@/util/request.js';
//获取当前时间
const getNowDate = function() {
const myDate = new Date();
let year = myDate.getFullYear();
let month = myDate.getMonth()+1 < 10 ? '0'+(myDate.getMonth()+1) : myDate.getMonth()+1;
let date = myDate.getDate() < 10 ? '0'+myDate.getDate() : myDate.getDate();
return year+"-"+month+"-"+date
};
export { getNowDate }
//格式化时间方法
const dateFormat = function (fmt, date) {
let ret;
const opt = {
"Y+": date.getFullYear().toString(), // 年
"m+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"M+": date.getMinutes().toString(), // 分
"S+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
};
};
return fmt;
};
export { dateFormat }
//排序方法
const sortBy = function(attr,rev){
//第二个参数没有传递 默认升序排列
if(rev === undefined){
rev = 1;
}else{
rev = (rev) ? 1 : -1;
}
return function(a,b){
a = a[attr];
b = b[attr];
if(a < b){
return rev * -1;
}
if(a > b){
return rev * 1;
}
return 0;
}
};
export { sortBy }
//获取专业列表
const getMajorList = function() {
let majorList = request.get('/rest/v2/services/saftyedutrain_AppOnlineQAService/getMajor')
return majorList;
};
export { getMajorList }

View File

@ -0,0 +1,62 @@
/**
* 打开设置页面
* @param {String} setting 设置页面标识
* 参考Android原生android.provider.Settings类中定义的常量
*/
function openSetting(setting) {
try {
var os = plus.os.name;
if ('Android' == os) {
var main = plus.android.runtimeMainActivity();
var intent = plus.android.newObject('android.content.Intent', setting);
main.startActivity(intent);
} else {
//unsupport, nothing to do.
}
} catch (e) {
console.error('error @openSettings!!');
}
}
function openAppSetting() {
try {
var os = plus.os.name;
if ('Android' == os) {
var main = plus.android.runtimeMainActivity();
var intent = plus.android.newObject('android.content.Intent', 'android.settings.APPLICATION_DETAILS_SETTINGS');
var uri = plus.android.invoke('android.net.Uri', 'fromParts', 'package', main.getPackageName(), null);
plus.android.invoke(intent, 'setData', uri);
main.startActivity(intent);
} else {
//unsupport, nothing to do.
}
} catch (e) {
console.error('error @openAppSetting!!');
}
}
module.exports = {
SETTINGS: 'android.settings.SETTINGS',
APN_SETTINGS: 'android.settings.APN_SETTINGS',
LOCATION_SOURCE_SETTINGS: 'android.settings.LOCATION_SOURCE_SETTINGS',
USER_SETTINGS: 'android.settings.USER_SETTINGS',
WIRELESS_SETTINGS: 'android.settings.WIRELESS_SETTINGS',
SECURITY_SETTINGS: 'android.settings.SECURITY_SETTINGS',
PRIVACY_SETTINGS: 'android.settings.PRIVACY_SETTINGS',
WIFI_SETTINGS: 'android.settings.WIFI_SETTINGS',
WIFI_IP_SETTINGS: 'android.settings.WIFI_IP_SETTINGS',
BLUETOOTH_SETTINGS: 'android.settings.BLUETOOTH_SETTINGS',
CAST_SETTINGS: 'android.settings.CAST_SETTINGS',
DATE_SETTINGS: 'android.settings.DATE_SETTINGS',
SOUND_SETTINGS: 'android.settings.SOUND_SETTINGS',
DISPLAY_SETTINGS: 'android.settings.DISPLAY_SETTINGS',
LOCALE_SETTINGS: 'android.settings.LOCALE_SETTINGS',
VOICE_INPUT_SETTINGS: 'android.settings.VOICE_INPUT_SETTINGS',
INPUT_METHOD_SETTINGS: 'android.settings.INPUT_METHOD_SETTINGS',
MANAGE_APPLICATIONS_SETTINGS: 'android.settings.MANAGE_APPLICATIONS_SETTINGS',
DEVICE_INFO_SETTINGS: 'android.settings.DEVICE_INFO_SETTINGS',
NOTIFICATION_SETTINGS: 'android.settings.NOTIFICATION_SETTINGS',
open: openSetting,
openAppSetting: openAppSetting
}

View File

@ -0,0 +1 @@
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).uni=n()}(this,(function(){"use strict";try{var e={};Object.defineProperty(e,"passive",{get:function(){!0}}),window.addEventListener("test-passive",null,e)}catch(e){}var n=Object.prototype.hasOwnProperty;function t(e,t){return n.call(e,t)}var i=[],a=function(e,n){var t={options:{timestamp:+new Date},name:e,arg:n};if(window.__dcloud_weex_postMessage||window.__dcloud_weex_){if("postMessage"===e){var a={data:[n]};return window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessage(a):window.__dcloud_weex_.postMessage(JSON.stringify(a))}var o={type:"WEB_INVOKE_APPSERVICE",args:{data:t,webviewIds:i}};window.__dcloud_weex_postMessage?window.__dcloud_weex_postMessageToService(o):window.__dcloud_weex_.postMessageToService(JSON.stringify(o))}if(!window.plus)return window.parent.postMessage({type:"WEB_INVOKE_APPSERVICE",data:t,pageId:""},"*");if(0===i.length){var r=plus.webview.currentWebview();if(!r)throw new Error("plus.webview.currentWebview() is undefined");var d=r.parent(),s="";s=d?d.id:r.id,i.push(s)}if(plus.webview.getWebviewById("__uniapp__service"))plus.webview.postMessageToUniNView({type:"WEB_INVOKE_APPSERVICE",args:{data:t,webviewIds:i}},"__uniapp__service");else{var w=JSON.stringify(t);plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat("WEB_INVOKE_APPSERVICE",'",').concat(w,",").concat(JSON.stringify(i),");"))}},o={navigateTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("navigateTo",{url:encodeURI(n)})},navigateBack:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delta;a("navigateBack",{delta:parseInt(n)||1})},switchTab:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("switchTab",{url:encodeURI(n)})},reLaunch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("reLaunch",{url:encodeURI(n)})},redirectTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;a("redirectTo",{url:encodeURI(n)})},getEnv:function(e){window.plus?e({plus:!0}):e({h5:!0})},postMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a("postMessage",e.data||{})}},r=/uni-app/i.test(navigator.userAgent),d=/Html5Plus/i.test(navigator.userAgent),s=/complete|loaded|interactive/;var w=window.my&&navigator.userAgent.indexOf("AlipayClient")>-1;var u=window.swan&&window.swan.webView&&/swan/i.test(navigator.userAgent);var c=window.qq&&window.qq.miniProgram&&/QQ/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var g=window.tt&&window.tt.miniProgram&&/toutiaomicroapp/i.test(navigator.userAgent);var v=window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var p=window.qa&&/quickapp/i.test(navigator.userAgent);for(var l,_=function(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))},f=[function(e){if(r||d)return window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&s.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),o},function(e){if(v)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.wx.miniProgram},function(e){if(c)return window.QQJSBridge&&window.QQJSBridge.invoke?setTimeout(e,0):document.addEventListener("QQJSBridgeReady",e),window.qq.miniProgram},function(e){if(w){document.addEventListener("DOMContentLoaded",e);var n=window.my;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(u)return document.addEventListener("DOMContentLoaded",e),window.swan.webView},function(e){if(g)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(p){window.QaJSBridge&&window.QaJSBridge.invoke?setTimeout(e,0):document.addEventListener("QaJSBridgeReady",e);var n=window.qa;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){return document.addEventListener("DOMContentLoaded",e),o}],m=0;m<f.length&&!(l=f[m](_));m++);l||(l={});var E="undefined"!=typeof uni?uni:{};if(!E.navigateTo)for(var b in l)t(l,b)&&(E[b]=l[b]);return E.webView=l,E}));

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -173,6 +173,34 @@ public class HSController {
return result; return result;
} }
/**app获取个人私信*/
@RequestMapping(value = "/getPersonalPrivateLetterApp", method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public Map<String,Object> getPersonalPrivateLetterApp(@RequestBody Map<String,Object> param) {
Map<String,Object> result = hsService.getPersonalPrivateLetterApp(param);
return result;
}
/**app获取两个人的私信*/
@RequestMapping(value = "/getTwoLetterApp", method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public Map<String,Object> getTwoLetterApp(@RequestBody Map<String,Object> param) {
Map<String,Object> result = hsService.getTwoLetterApp(param);
return result;
}
/**
* 私信改为已读
* @param param
* @return
*/
@RequestMapping(value = "/updateReadApp", method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public Map<String,Object> updateReadApp(@RequestBody Map<String,Object> param) {
Map<String,Object> result = hsService.updateReadApp(param);
return result;
}
/**阅读私信*/ /**阅读私信*/
@RequestMapping(value = "/readPrivateLetter", method = {RequestMethod.POST,RequestMethod.GET}) @RequestMapping(value = "/readPrivateLetter", method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody @ResponseBody

View File

@ -40,7 +40,7 @@ public interface HSLinkMapper {
Map<String,Object> getOneContent(Map<String,Object> param); Map<String,Object> getOneContent(Map<String,Object> param);
/** /**
* 获取一条数据具体内容 * 获取一条数据具体内容留言
*/ */
List<Map<String,Object>> getOneLeaveMessage(Map<String,Object> param); List<Map<String,Object>> getOneLeaveMessage(Map<String,Object> param);
@ -169,4 +169,25 @@ public interface HSLinkMapper {
* @return * @return
*/ */
List<Map<String,Object>> getRotationPhotoList(); List<Map<String,Object>> getRotationPhotoList();
/**
* 获取私信其他人信息
* @param param
* @return
*/
List<Map<String,Object>> getLetterOtherInfo(Map<String,Object> param);
/**
* 获取两个人交流的私信
* @param param
* @return
*/
List<Map<String,Object>> getCommunicationLetter(Map<String,Object> param);
/**
* 私信改为已读
* @param param
* @return
*/
int updateReadApp(Map<String, Object> param);
} }

View File

@ -156,14 +156,14 @@
<!--新增留言--> <!--新增留言-->
<insert id="addMessage" parameterType="map"> <insert id="addMessage" parameterType="map">
insert into hs_leave_message(id,notice_id,messager_id,content,create_time) VALUES (uuid(),#{noticeId},#{userId},#{content},#{createTime}) insert into hs_leave_message(id,notice_id,messager_id,content,create_time) VALUES (uuid(),#{noticeId},#{userId},#{content},now())
</insert> </insert>
<!--新增一篇文章--> <!--新增一篇文章-->
<insert id="addArticle" parameterType="map"> <insert id="addArticle" parameterType="map">
insert into hs_notice (id,label,title,content,release_id,release_time,type) insert into hs_notice (id,label,title,content,release_id,release_time,type)
values values
(uuid(),#{label},#{title},#{content},#{release_id},#{release_time},#{type}) (uuid(),#{label},#{title},#{content},#{release_id},now(),#{type})
</insert> </insert>
<!--新增一条班级通知--> <!--新增一条班级通知-->
@ -213,12 +213,12 @@
<!--新增班级公告--> <!--新增班级公告-->
<insert id="addBulletin" parameterType="map"> <insert id="addBulletin" parameterType="map">
insert into hs_class_bulletin (id,class_id,class_name,title,content,release_time) VALUES (uuid(),#{classId},#{className},#{title},#{content},#{releaseTime}) insert into hs_class_bulletin (id,class_id,class_name,title,content,release_time) VALUES (uuid(),#{classId},#{className},#{title},#{content},now())
</insert> </insert>
<!--修改班级公告--> <!--修改班级公告-->
<update id="updateBulletin" parameterType="map"> <update id="updateBulletin" parameterType="map">
update hs_class_bulletin set class_id = #{classId},class_name=#{className},title=#{title},content=#{content},release_time=#{releaseTime} where id = #{id} update hs_class_bulletin set class_id = #{classId},class_name=#{className},title=#{title},content=#{content},release_time=now() where id = #{id}
</update> </update>
<!--修改密码--> <!--修改密码-->
@ -228,7 +228,8 @@
<!--修改一条数据具体内容--> <!--修改一条数据具体内容-->
<update id="updateOneContent" parameterType="map"> <update id="updateOneContent" parameterType="map">
update hs_notice set label = #{label},title = #{title},content = #{content} where id = #{id} update hs_notice set label = #{label},title = #{title},content = #{content}, release_time = now() where id =
#{id}
</update> </update>
<!--删除一条数据--> <!--删除一条数据-->
@ -273,7 +274,7 @@
<!--发送私信--> <!--发送私信-->
<insert id="sendLetter" parameterType="map"> <insert id="sendLetter" parameterType="map">
insert into hs_private_letter (id,send_id,receive_id,content,letter_create_time) values insert into hs_private_letter (id,send_id,receive_id,content,letter_create_time) values
(uuid(),#{sendId},#{receiveId},#{content},#{time}) (uuid(),#{sendId},#{receiveId},#{content},now())
</insert> </insert>
<!--删除一条私信--> <!--删除一条私信-->
@ -281,6 +282,14 @@
update hs_private_letter set receive_status = "0" where id = #{id} update hs_private_letter set receive_status = "0" where id = #{id}
</update> </update>
<!--私信改为已读-->
<update id="updateReadApp" parameterType="map">
UPDATE hs_private_letter
SET already_read = '1'
WHERE
send_id = #{otherId} and receive_id = #{userId}
</update>
<!--删除一条已读私信--> <!--删除一条已读私信-->
<delete id="deleteSentLetter" parameterType="map"> <delete id="deleteSentLetter" parameterType="map">
update hs_private_letter set send_status = "0" where id = #{id} update hs_private_letter set send_status = "0" where id = #{id}
@ -345,4 +354,38 @@
ORDER BY i.create_time ORDER BY i.create_time
</select> </select>
<!--获取私信其他人信息-->
<select id="getLetterOtherInfo" resultType="map" parameterType="map">
select * from hs_user where user_id in (SELECT
DISTINCT
receive_id id
FROM
hs_private_letter
WHERE
send_id = #{userId}
OR receive_id = #{userId} )
or user_id in
(SELECT
DISTINCT
send_id id
FROM
hs_private_letter
WHERE
send_id = #{userId}
OR receive_id = #{userId} )
</select>
<!--获取两个人交流的私信-->
<select id="getCommunicationLetter" resultType="map" parameterType="map">
SELECT
*
FROM
hs_private_letter
WHERE
( send_id = #{userId} AND receive_id = #{otherId} )
OR ( receive_id = #{userId} AND send_id = #{otherId} )
ORDER BY
letter_create_time
</select>
</mapper> </mapper>

View File

@ -94,7 +94,7 @@ public interface HSService {
Map<String,Object> getPersonalInfo(Map<String,Object> param); Map<String,Object> getPersonalInfo(Map<String,Object> param);
/** /**
* 获取个人 * 获取个人
*/ */
Map<String,Object> getPersonalPrivateLetter(Map<String,Object> param); Map<String,Object> getPersonalPrivateLetter(Map<String,Object> param);
@ -138,4 +138,21 @@ public interface HSService {
* @return * @return
*/ */
Map<String, Object> getRotationPhotoList(); Map<String, Object> getRotationPhotoList();
/**
* 获取个人私信
*/
Map<String, Object> getPersonalPrivateLetterApp(Map<String, Object> param);
/**
* 获取两个人的私信
*/
Map<String, Object> getTwoLetterApp(Map<String, Object> param);
/**
* 私信改为已读
* @param param
* @return
*/
Map<String, Object> updateReadApp(Map<String, Object> param);
} }

View File

@ -8,6 +8,7 @@ import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
@ -465,6 +466,54 @@ public class HSServiceImpl implements HSService {
return result; return result;
} }
/**
* 获取个人私信
* @param param
* @return
*/
@Override
@Transactional
public Map<String, Object> getPersonalPrivateLetterApp(Map<String, Object> param) {
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> resultList = new ArrayList<>();
List<Map<String, Object>> list = hsLinkMapper.getLetterOtherInfo(param);
for (Map<String, Object> item : list) {
Map<String, Object> res = new HashMap<>();
res.put("userInfo",item);
param.put("otherId",item.get("user_id"));
List<Map<String, Object>> letterList = hsLinkMapper.getCommunicationLetter(param);
res.put("letterList",letterList);
resultList.add(res);
}
result.put("data",resultList);
result.put("success",true);
return result;
}
@Override
public Map<String, Object> getTwoLetterApp(Map<String, Object> param) {
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> res = hsLinkMapper.getCommunicationLetter(param);
result.put("data",res);
result.put("success",true);
return result;
}
@Override
public Map<String, Object> updateReadApp(Map<String, Object> param) {
Map<String, Object> result = new HashMap<>();
int res = 0;
try {
res = hsLinkMapper.updateReadApp(param);
} catch (Exception e) {
e.printStackTrace();
res = 0;
}
result.put("data",res);
result.put("success",true);
return result;
}
/** /**
* 返回参数 * 返回参数
* @param flag * @param flag

View File

@ -228,7 +228,6 @@
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
debugger
this.$ajax.post("/hs/deleteLetter",{id:id,type:type},r=>{ this.$ajax.post("/hs/deleteLetter",{id:id,type:type},r=>{
if (r === 1) { if (r === 1) {
let userInfo = JSON.parse(sessionStorage.getItem("userInfo")); let userInfo = JSON.parse(sessionStorage.getItem("userInfo"));