yujialong 3 days ago
parent d2e07d8a6c
commit 63ad31bb3c
  1. 2
      README.md
  2. 4
      apis/modules/course.js
  3. 2
      apis/request.js
  4. 130
      components/filter-popup/components/mask.vue
  5. 510
      components/filter-popup/components/popup.vue
  6. 155
      components/filter-popup/detail.md
  7. 596
      components/filter-popup/filter-popup.vue
  8. 29
      components/realName/realName.vue
  9. 10
      config/product.js
  10. 4
      config/request.js
  11. 55
      course/courseDetail/courseDetail.vue
  12. 39
      libs/mtj-wx-sdk.config.js
  13. 1
      libs/mtj-wx-sdk.js
  14. 6
      libs/share.js
  15. 18
      libs/uma.js
  16. 13
      main.js
  17. 2
      manifest.json
  18. 2
      pages.json
  19. 9
      pages/achievement/achievement.vue
  20. 20
      pages/index/index.vue
  21. 2
      pages/person/person.vue
  22. 32
      static/iconfont/iconfont.css
  23. BIN
      static/iconfont/iconfont.ttf
  24. 103
      styles/common.scss
  25. 1
      uni.scss

@ -1 +1 @@
# 职站商城 # 慧教云舟小程序

@ -17,8 +17,8 @@ export const schoolCourse = data => {
return get('nakadai/nakadai/curriculum/schoolCourse', data) return get('nakadai/nakadai/curriculum/schoolCourse', data)
} }
export const queryChaptersAndSubsections = id => { export const queryChaptersAndSubsections = data => {
return get('nakadai/nakadai/curriculum/chapter/queryChaptersAndSubsections/' + id) return get('nakadai/nakadai/curriculum/chapter/queryChaptersAndSubsections', data)
} }
export const curriculumDetail = (cid, mallId) => { export const curriculumDetail = (cid, mallId) => {

@ -3,7 +3,7 @@ let logouted = 0
const request = options => { const request = options => {
const header = Object.assign({}, config.headers, { const header = Object.assign({}, config.headers, {
token: uni.getStorageSync('token') token: uni.getStorageSync('token') || ''
}) })
const otherUrl = ['queryPartnerAccount', 'getSessionKey', 'loginByOpenid', 'partnerAccountApplication', 'checkWorkNumOrAccount'] const otherUrl = ['queryPartnerAccount', 'getSessionKey', 'loginByOpenid', 'partnerAccountApplication', 'checkWorkNumOrAccount']
return new Promise((resolve, reject)=>{ return new Promise((resolve, reject)=>{

@ -1,130 +0,0 @@
<template>
<view
class="u-mask"
hover-stop-propagation
:style="[maskStyle, zoomStyle]"
@tap="click"
@touchmove.stop.prevent="() => {}"
:class="{
'u-mask-zoom': zoom,
'u-mask-show': show,
}"
>
<slot />
</view>
</template>
<script>
/**
* mask 遮罩
* @description 创建一个遮罩层用于强调特定的页面元素并阻止用户对遮罩下层的内容进行操作一般用于弹窗场景
* @tutorial https://www.uviewui.com/components/mask.html
* @property {Boolean} show 是否显示遮罩默认false
* @property {String Number} z-index z-index 层级默认1070
* @property {Object} custom-style 自定义样式对象见上方说明
* @property {String Number} duration 动画时长单位毫秒默认300
* @property {Boolean} zoom 是否使用scale对这招进行缩放默认true
* @property {Boolean} mask-click-able 遮罩是否可点击为false时点击不会发送click事件默认true
* @event {Function} click mask-click-able为true时点击遮罩发送此事件
* @example <u-mask :show="show" @click="show = false"></u-mask>
*/
export default {
name: "u-mask",
props: {
//
show: {
type: Boolean,
default: false,
},
// z-index
zIndex: {
type: [Number, String],
default: "",
},
//
customStyle: {
type: Object,
default() {
return {};
},
},
// 使使zoomscale
zoom: {
type: Boolean,
default: true,
},
// ms
duration: {
type: [Number, String],
default: 300,
},
//
maskClickAble: {
type: Boolean,
default: true,
},
},
data() {
return {
zoomStyle: {
transform: "",
},
scale: "scale(1.2, 1.2)",
};
},
watch: {
show(n) {
if (n && this.zoom) {
// scale1(1.2)
this.zoomStyle.transform = "scale(1, 1)";
} else if (!n && this.zoom) {
// scale1.2(1)
this.zoomStyle.transform = this.scale;
}
},
},
computed: {
maskStyle() {
let style = {};
style.backgroundColor = "rgba(0, 0, 0, 0.6)";
if (this.show)
style.zIndex = this.zIndex ? this.zIndex : this.$u.zIndex.mask;
else style.zIndex = -1;
style.transition = `all ${this.duration / 1000}s ease-in-out`;
//
if (Object.keys(this.customStyle).length)
style = {
...style,
...this.customStyle,
};
return style;
},
},
methods: {
click() {
if (!this.maskClickAble) return;
this.$emit("click");
},
},
};
</script>
<style lang="scss" scoped>
.u-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
opacity: 0;
transition: transform 0.3s;
}
.u-mask-show {
opacity: 1;
}
.u-mask-zoom {
transform: scale(1.2, 1.2);
}
</style>

@ -1,510 +0,0 @@
<template>
<view
v-if="visibleSync"
:style="[
customStyle,
{
zIndex: uZindex - 1,
},
]"
class="u-drawer"
hover-stop-propagation
>
<z-mask
:duration="duration"
:custom-style="maskCustomStyle"
:maskClickAble="maskCloseAble"
:z-index="uZindex - 2"
:show="showDrawer && mask"
@click="maskClick"
></z-mask>
<view
class="u-drawer-content"
@tap="modeCenterClose(mode)"
:class="[
safeAreaInsetBottom ? 'safe-area-inset-bottom' : '',
'u-drawer-' + mode,
showDrawer ? 'u-drawer-content-visible' : '',
zoom && mode == 'center' ? 'u-animation-zoom' : '',
]"
@transitionend="transitionend"
@touchmove.stop.prevent
@tap.stop.prevent
:style="[style]"
>
<view
class="u-mode-center-box"
@tap.stop.prevent
@touchmove.stop.prevent
v-if="mode == 'center'"
:style="[centerStyle]"
>
<u-icon
@click="close"
v-if="closeable"
class="u-close"
:class="['u-close--' + closeIconPos]"
:name="closeIcon"
:color="closeIconColor"
:size="closeIconSize"
></u-icon>
<scroll-view class="u-drawer__scroll-view" scroll-y="true">
<slot />
</scroll-view>
<slot name="fixedContent" />
</view>
<scroll-view class="u-drawer__scroll-view" scroll-y="true" v-else>
<slot />
</scroll-view>
<view @tap="close" class="u-close" :class="['u-close--' + closeIconPos]">
<u-icon
v-if="mode != 'center' && closeable"
:name="closeIcon"
:color="closeIconColor"
:size="closeIconSize"
></u-icon>
</view>
</view>
</view>
</template>
<script>
/**
* popup 弹窗
* @description 弹出层容器用于展示弹窗信息提示等内容支持上右和中部弹出组件只提供容器内部内容由用户自定义
* @tutorial https://www.uviewui.com/components/popup.html
* @property {String} mode 弹出方向默认left
* @property {Boolean} mask 是否显示遮罩默认true
* @property {Stringr | Number} length mode=left | 见官网说明默认auto
* @property {Boolean} zoom 是否开启缩放动画只在mode为center时有效默认true
* @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配默认false
* @property {Boolean} mask-close-able 点击遮罩是否可以关闭弹出层默认true
* @property {Object} custom-style 用户自定义样式
* @property {Stringr | Number} negative-top 中部弹出时往上偏移的值
* @property {Numberr | String} border-radius 弹窗圆角值默认0
* @property {Numberr | String} z-index 弹出内容的z-index值默认1075
* @property {Boolean} closeable 是否显示关闭图标默认false
* @property {String} close-icon 关闭图标的名称只能uView的内置图标
* @property {String} close-icon-pos 自定义关闭图标位置默认top-right
* @property {String} close-icon-color 关闭图标的颜色默认#909399
* @property {Number | String} close-icon-size 关闭图标的大小单位rpx默认30
* @event {Function} open 弹出层打开
* @event {Function} close 弹出层收起
* @example <u-popup v-model="show"><view>出淤泥而不染濯清涟而不妖</view></u-popup>
*/
import ZMask from "./mask.vue";
export default {
name: "popup",
components: {
ZMask,
},
props: {
/**
* 显示状态
*/
show: {
type: Boolean,
default: false,
},
/**
* 弹出方向left|right|top|bottom|center
*/
mode: {
type: String,
default: "left",
},
/**
* 是否显示遮罩
*/
mask: {
type: Boolean,
default: true,
},
// (mode=left|right)(mode=top|bottom)rpx"auto"
// "50%"
length: {
type: [Number, String],
default: "auto",
},
// mode=center
zoom: {
type: Boolean,
default: true,
},
// iPhoneX
safeAreaInsetBottom: {
type: Boolean,
default: false,
},
//
maskCloseAble: {
type: Boolean,
default: true,
},
//
customStyle: {
type: Object,
default() {
return {};
},
},
value: {
type: Boolean,
default: false,
},
// 使Pickerkeyboard
// v-modelprops
popup: {
type: Boolean,
default: true,
},
// rpx
borderRadius: {
type: [Number, String],
default: 0,
},
zIndex: {
type: [Number, String],
default: "10075",
},
//
closeable: {
type: Boolean,
default: false,
},
// uView
closeIcon: {
type: String,
default: "close",
},
// top-lefttop-rightbottom-leftbottom-right
closeIconPos: {
type: String,
default: "top-right",
},
//
closeIconColor: {
type: String,
default: "#909399",
},
// rpx
closeIconSize: {
type: [String, Number],
default: "30",
},
// rpx"auto"
// "50%"length
width: {
type: String,
default: "",
},
// rpx"auto"
// "50%"length
height: {
type: String,
default: "",
},
// margin-topmode=center
negativeTop: {
type: [String, Number],
default: 0,
},
//
maskCustomStyle: {
type: Object,
default() {
return {};
},
},
// ms
duration: {
type: [String, Number],
default: 250,
},
//
centerPupBg: {
type: String,
default: "#fff",
},
bgColor: {
type: String,
default: "#fff",
},
},
data() {
return {
visibleSync: false,
showDrawer: false,
timer: null,
closeFromInner: false, // value
};
},
computed: {
// mode(mode = left|right)(mode = top|bottom)
style() {
let style = {};
// translate
if (this.mode == "left" || this.mode == "right") {
style = {
width: this.width
? this.getUnitValue(this.width)
: this.getUnitValue(this.length),
height: "100%",
transform: `translate3D(${
this.mode == "left" ? "-100%" : "100%"
},0px,0px)`,
background: this.bgColor,
};
} else if (this.mode == "top" || this.mode == "bottom") {
style = {
width: "100%",
height: this.height
? this.getUnitValue(this.height)
: this.getUnitValue(this.length),
transform: `translate3D(0px,${
this.mode == "top" ? "-100%" : "100%"
},0px)`,
background: this.bgColor,
};
}
style.zIndex = this.uZindex;
// borderRadius
if (this.borderRadius) {
switch (this.mode) {
case "left":
style.borderRadius = `0 ${this.borderRadius}rpx ${this.borderRadius}rpx 0`;
break;
case "top":
style.borderRadius = `0 0 ${this.borderRadius}rpx ${this.borderRadius}rpx`;
break;
case "right":
style.borderRadius = `${this.borderRadius}rpx 0 0 ${this.borderRadius}rpx`;
break;
case "bottom":
style.borderRadius = `${this.borderRadius}rpx ${this.borderRadius}rpx 0 0`;
break;
default:
}
//
style.overflow = "hidden";
}
if (this.duration)
style.transition = `all ${this.duration / 1000}s linear`;
return style;
},
//
centerStyle() {
let style = {};
style.width = this.width
? this.getUnitValue(this.width)
: this.getUnitValue(this.length);
// auto
style.height = this.height ? this.getUnitValue(this.height) : "auto";
style.zIndex = this.uZindex;
// style.marginTop = `-${this.$u.addUnit(this.negativeTop)}`;
style.background = this.centerPupBg;
if (this.borderRadius) {
style.borderRadius = `${this.borderRadius}rpx`;
//
style.overflow = "hidden";
}
return style;
},
// z-index
uZindex() {
return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
},
},
watch: {
value(val) {
if (val) {
this.open();
} else if (!this.closeFromInner) {
this.close();
}
this.closeFromInner = false;
},
},
mounted() {
// valuetruepopup
this.value && this.open();
},
methods: {
//
transitionend(e) {
// console.log(e, "popup");
},
// rpx
getUnitValue(val) {
if (/(%|px|rpx|auto)$/.test(val)) return val;
else return val + "rpx";
},
//
maskClick() {
this.close();
},
close() {
// valuewatchvalueclose
// @close
this.closeFromInner = true;
this.change("showDrawer", "visibleSync", false);
},
// .u-drawer-content
// mode=center
modeCenterClose(mode) {
if (mode != "center" || !this.maskCloseAble) return;
this.close();
},
open() {
this.change("visibleSync", "showDrawer", true);
},
//
//
change(param1, param2, status) {
// this.popupfalsepickeractionsheetpopup
if (this.popup == true) {
this.$emit("input", status);
}
this[param1] = status;
if (status) {
// #ifdef H5 || MP
this.timer = setTimeout(() => {
this[param2] = status;
this.$emit(status ? "open" : "close");
}, 50);
// #endif
// #ifndef H5 || MP
this.$nextTick(() => {
this[param2] = status;
this.$emit(status ? "open" : "close");
});
// #endif
} else {
this.timer = setTimeout(() => {
this[param2] = status;
this.$emit(status ? "open" : "close");
}, this.duration);
}
},
},
};
</script>
<style scoped lang="scss">
@mixin vue-flex($direction: row) {
/* #ifndef APP-NVUE */
display: flex;
flex-direction: $direction;
/* #endif */
}
.u-drawer {
/* #ifndef APP-NVUE */
display: block;
/* #endif */
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: hidden;
}
.u-drawer-content {
/* #ifndef APP-NVUE */
display: block;
/* #endif */
position: absolute;
z-index: 1003;
transition: all 0.25s linear;
}
.u-drawer__scroll-view {
width: 100%;
height: 100%;
}
.u-drawer-left {
top: 0;
bottom: 0;
left: 0;
}
.u-drawer-right {
right: 0;
top: 0;
bottom: 0;
}
.u-drawer-top {
top: 0;
left: 0;
right: 0;
}
.u-drawer-bottom {
bottom: 0;
left: 0;
right: 0;
}
.u-drawer-center {
@include vue-flex;
flex-direction: column;
bottom: 0;
left: 0;
right: 0;
top: 0;
justify-content: center;
align-items: center;
opacity: 0;
z-index: 99999;
}
.u-mode-center-box {
min-width: 100rpx;
min-height: 100rpx;
/* #ifndef APP-NVUE */
display: block;
/* #endif */
position: relative;
}
.u-drawer-content-visible.u-drawer-center {
transform: scale(1);
opacity: 1;
}
.u-animation-zoom {
transform: scale(1.15);
}
.u-drawer-content-visible {
transform: translate3D(0px, 0px, 0px) !important;
}
.u-close {
position: absolute;
z-index: 3;
}
.u-close--top-left {
top: 30rpx;
left: 30rpx;
}
.u-close--top-right {
top: 30rpx;
right: 30rpx;
}
.u-close--bottom-left {
bottom: 30rpx;
left: 30rpx;
}
.u-close--bottom-right {
right: 30rpx;
bottom: 30rpx;
}
</style>

@ -1,155 +0,0 @@
## 导入即用 全端支持
### 有问题 + wx : zy597172583 标注来意 可评论 看到及时回复
1.使用方式
```javascript
<template>
<filter-popup :data="filterData" :form.sync="filterForm" v-model="popup.filter" title="全部筛选" height="1104rpx" @finsh="subFinsh"></filter-popup>
</template>
<script>
import FilterPopup from "@/components/filter-popup/filter-popup";
export default {
components: {
FilterPopup,
},
data() {
return {
//筛选表单数据
filterData: [
{
children: false,//是否有子项
title: "意向度",
key: "intention_type", //键名 接收对象名字
keyValue: "value", //获取的值是哪个
isRadio: true, //是否单选 否则多选
data: [
{
title: "一般意向",
id: 1,
value: 1,
},
{
title: "中意向度",
id: 2,
value: 2,
},
{
title: "高意向度",
id: 3,
value: 3,
},
],
},
{
children: false,//是否有子项
title: "手机号码",
key: "is_bind_phone", //键名 接收对象名字
keyValue: "value", //获取的值是哪个
isRadio: true, //是否单选 否则多选
data: [
{
title: "未绑定",
value: 0,
},
{
title: "已绑定",
value: 1,
},
],
},
{
children: false,//是否有子项
title: "企微好友",
key: "is_work_customer", //键名 接收对象名字
keyValue: "value", //获取的值是哪个
isRadio: true, //是否单选 否则多选
data: [
{
title: "未添加",
value: 0,
},
{
title: "已添加",
value: 1,
},
],
},
{
children: true,//是否有子项
isRadio: false, //是否单选
title: "标签内容",
key: "label", //键名 接收对象名字
keyValue: "id", //获取的值是哪个
data: [
{
title: "客户重要程度",
id: 22,
children: [
{
title: "一般意向2",
id: 32,
value: 1,
},
{
title: "一般意向3",
id: 12,
value: 1,
},
],
},
{
title: "客户重要程度2",
id: 122,
children: [
{
title: "一般意向2",
id: 43,
value: 1,
},
{
title: "一般意向3",
id: 23,
value: 1,
},
],
},
],
},
], //筛选数据
filterForm: {}, //选中的表单
};
},
}
```
2.组件props
| 参数名 | 类型 | 介绍 |
| ---------- | ------- | ------------------------------------------------- |
| form | Object | .sync双向绑定的表单值 , 可传入显示初始哪些被选中 |
| data | Array | 动态渲染选项的数据数组 |
| title | String | 标题 |
| height | String | 弹出层高度 单位 rpx px upx 百分比 vw等 |
| themeColor | String | 组件主体颜色 默认:\#0066ff |
| mask | Boolean | 是否显示弹出遮盖层 |
3.data 参数
| 参数名 | 类型 | 是否必填 | 介绍 |
| -------- | ------- | -------- | ------------------------------------------------------------ |
| children | Boolean | 是 | 是否有子项 |
| data | Array | 是 | 渲染出来的选项数据 |
| isRadio | Boolean | 是 | 是否单选 单个选项指定,单选还是多选 |
| title | String | 是 | 标签内容标题 |
| key | String | 是 | 接收对象名字 会作为@finsh返回对象的键名 |
| keyValue | String | 是 | 获取的值是哪个 自定义指定获取哪个键值 value还是id或者自己定义的 |
4.事件
| 事件名 | 返回参数 | 简介 |
| ------ | -------- | ----------------------------------------- |
| finsh | Object | 点击确定时触发 返回参数为选中值的对象数组 |
| close | 无 | 组件点击关闭时触发 |
![image-20210730095456900](https://yzhsaas-cdn.qietongvip.com/asd.png)

@ -1,596 +0,0 @@
<template>
<popup
:mask="mask"
border-radius="50"
v-model="acceptValue"
mode="bottom"
class="filter-popup"
:height="height"
@close="close"
:style="{ '--color': themeColor }"
:mask-custom-style="{ background: 'rgba(0, 0, 0, 0.7)' }"
>
<view class="top-title flex-row-sb" v-if="showTop">
<view class="popup-title flex-row-c-c">{{ title }}</view>
<text class="saasIcon flex-row-c-c" @click="close">&#xe60c;</text>
</view>
<scroll-view class="select-scroll" scroll-y :style="{ height: `calc( ${height} - 120rpx - 152rpx )` }">
<view class="select-main">
<view v-if="showCategory" class="select-item">
<view class="title">学科专业</view>
<view class="category-wrap">
<picker mode="multiSelector" v-model="category" @change="change" @columnchange="columnchange" :range="categories" range-key="title">
<view class="category">{{categoryName ? categoryName : '请选择'}}</view>
</picker>
<uni-icons v-if="categoryName" class="icon" type="closeempty" size="16" color="#333" @click.stop="delCatagory"></uni-icons>
</view>
</view>
<view class="select-item" v-for="(item, index) in data" :key="index">
<view class="title"> {{ item.title }} </view>
<view class="tag-list" v-if="!item.children">
<view
class="tag-item"
:class="[acceptForm[item.key].includes(item2.value) ? 'select-on' : '']"
v-for="(item2, index2) in item.data"
:key="index2"
@click="selectTagBuyValueOrId(item2, item.key, item.keyValue, item.isRadio)"
>
{{ item2.title }}
</view>
</view>
<!-- 有childer -->
<view class="select-childer" v-else v-for="item2 in item.data" :key="item2.id">
<view class="childer-title flex-row--c">{{ item2.title }}</view>
<view class="tag-list">
<view
class="tag-item"
:class="[acceptForm[item.key].includes(item3.id) ? 'select-on' : '']"
v-for="item3 in item2.children"
:key="item3.id"
@click="selectTagBuyValueOrId(item3, item.key, item.keyValue, item.isRadio)"
>
{{ item3.title }}
</view>
</view>
</view>
</view>
</view>
</scroll-view>
<view class="filter-button flex-row-c">
<view class="btn flex-row">
<view class="btn-1 flex-row-c-c" @click="reset">重置</view>
<view class="btn-2 flex-row-c-c" @click="finsh">完成</view>
</view>
</view>
</popup>
</template>
<script>
import { courseDiscipline, courseProfessionalClass, courseProfessional } from '@/apis/modules/product.js'
import Popup from './components/popup.vue';
export default {
components:{
Popup
},
name: "filter-popup",
props: {
//
form: {
type: Object,
default: () => {},
},
//
themeColor: {
type: String,
default: "#0066ff",
},
//
data: {
type: Array,
default: () => [],
},
//
title: {
type: String,
default: "请选择",
},
value: {
type: Boolean,
default: false,
},
mask: {
type: Boolean,
default: true,
},
height: {
type: String,
default: "600rpx",
},
//退
showTop: {
type: Boolean,
default: true,
},
//
showCategory: {
type: Boolean,
default: false,
},
},
computed: {
//
acceptForm: {
get() {
this.originForm = JSON.parse(JSON.stringify(this.form))
if (Object.keys(this.form).length) {
return this.form;
} else {
let obj = {};
this.data.forEach((item) => {
obj[item.key] = [];
});
return obj;
}
},
set(nval) {
// console.log("set Form :>> ", nval);
this.$emit("update:form", nval);
},
},
acceptValue: {
get() {
return this.value;
},
set(nval) {
this.$emit("input", nval);
},
},
},
data() {
return {
originForm: {},
categoryName:'',
categoryId: '',
professionalCategoryId: '',
professionalId: '',
categories:[],
category: []
}
},
mounted() {
this.getDis()
},
methods: {
//value id
selectTagBuyValueOrId(item, key, keyValue, isRadio) {
//
if (isRadio) {
if (keyValue == "value") {
if (this.acceptForm[key].some((value) => value === item.value)) {
this.acceptForm[key] = this.acceptForm[key].filter((value) => value !== item.value);
return;
}
this.acceptForm[key] = [];
this.acceptForm[key].push(item.value);
} else {
if (this.acceptForm[key].some((id) => id === item.id)) {
this.acceptForm[key] = this.acceptForm[key].filter((id) => id !== item.id);
return;
}
this.acceptForm[key] = [];
this.acceptForm[key].push(item.id);
}
} else {
if (keyValue == "value") {
this.acceptForm[key].some((value) => value === item.value)
? (this.acceptForm[key] = this.acceptForm[key].filter((value) => value !== item.value))
: this.acceptForm[key].push(item.value);
} else {
this.acceptForm[key].some((id) => id === item.id)
? (this.acceptForm[key] = this.acceptForm[key].filter((id) => id !== item.id))
: this.acceptForm[key].push(item.id);
}
}
this.acceptForm = this.acceptForm;
},
//
async getDis() {
const { list } = await courseDiscipline()
list.map(e => {
e.id = e.disciplineId
e.title = e.disciplineName
})
this.categories.push(list)
const res = await courseProfessionalClass(1)
res.list.map(e => {
e.id = e.professionalClassId
e.title = e.professionalClassName
})
this.categories.push(res.list)
const res1 = await courseProfessional(1)
res1.list.map(e => {
e.id = e.professionalId
e.title = e.professionalName
})
this.categories.push(res1.list)
},
//
change(e) {
const i0 = e.detail.value[0]
const i1 = e.detail.value[1]
const i2 = e.detail.value[2]
const i1IsNumber = typeof i1 === 'number'
const i2IsNumber = typeof i2 === 'number'
const list = this.categories
this.categoryId = list[0][i0].id
this.categoryName = list[0][i0].title
this.professionalCategoryId = ''
this.professionalId = ''
if (i1IsNumber && list[1].length > 0) {
this.professionalCategoryId = list[1][i1].id
this.categoryName += '/' + list[1][i1].title
}
if (i2IsNumber && list[2].length > 0) {
this.professionalId = list[2][i2].id
this.categoryName += '/' + list[2][i2].title
}
},
//
async columnchange(e) {
const { column } = e.detail
if (column == 0) {
const { list } = await courseProfessionalClass(this.categories[0][e.detail.value].id)
list.map(e => {
e.id = e.professionalClassId
e.title = e.professionalClassName
})
this.categories[1] = list
this.categories[2] = []
this.$set(this.categories, 1, list)
console.log('inner',this.categories)
} else
if (column == 1) {
const { list } = await courseProfessional(this.categories[1][e.detail.value].id)
list.map(e => {
e.id = e.professionalId
e.title = e.professionalName
})
this.categories[2] = list
this.$set(this.categories, 2, list)
}
},
//
delCatagory() {
this.category = []
this.categoryName = ''
this.categoryId = ''
this.professionalCategoryId = ''
this.professionalId = ''
},
//
finsh() {
if (this.showCategory) {
this.acceptForm.categoryId = this.categoryId
this.acceptForm.professionalCategoryId = this.professionalCategoryId
this.acceptForm.professionalId = this.professionalId
this.acceptForm.categoryName = this.categoryName
}
this.$emit("finsh", this.acceptForm);
this.$emit("input", false);
},
close() {
this.$emit("input", false);
this.$emit("close");
},
//
reset() {
this.acceptForm = {}
this.categoryId = ''
this.professionalCategoryId = ''
this.professionalId = ''
this.categoryName = ''
this.$nextTick(() => {
this.$emit("finsh", this.acceptForm);
this.$emit("input", false);
})
},
},
};
</script>
<style lang="scss" scoped>
@font-face {
font-family: 'iconfont'; /* Project id 2729410 */
src: url('https://at.alicdn.com/t/font_2729410_3nhq3ibbcqg.woff2?t=1628330097695') format('woff2'),
url('https://at.alicdn.com/t/font_2729410_3nhq3ibbcqg.woff?t=1628330097695') format('woff'),
url('https://at.alicdn.com/t/font_2729410_3nhq3ibbcqg.ttf?t=1628330097695') format('truetype');
}
.saasIcon {
font-family: "iconfont" !important;
font-style: normal;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: 0.2px;
-moz-osx-font-smoothing: grayscale;
}
.filter-popup {
color: #000000;
.top-title {
font-weight: bold;
height: 90rpx;
margin-left: 70rpx;
font-size: 30rpx;
margin-top: 20rpx;
.popup-title {
height: 100%;
}
.saasIcon {
// width: 150rpx;
height: 100%;
padding-right: 70rpx;
}
}
.select-scroll {
}
.category-wrap {
display: flex;
align-items: center;
margin-top: 10rpx;
.icon {
margin-left: 10rpx;
}
}
.category {
font-size: 28rpx;
}
.select-main {
padding: 0 32rpx;
.select-item {
.title {
font-weight: bold;
font-size: 28rpx;
color: #000000;
padding-top: 30rpx;
}
.tag-list {
display: flex;
flex-wrap: wrap;
margin-left: -12rpx;
.tag-item {
margin-top: 20rpx;
padding: 10rpx 40rpx;
font-size: 26rpx;
background: #f5f5f5;
color: #484848;
border-radius: 36rpx;
margin-left: 12rpx;
&.select-on {
background: var(--color);
color: #fff;
}
}
}
}
.select-childer {
.childer-title {
color: #484848;
font-size: 28rpx;
border-bottom: 1px solid #f5f5f5;
height: 80rpx;
}
}
}
.filter-button {
width: 100%;
height: 152rpx;
background: #ffffff;
box-shadow: 0px -3px 12px rgba(0, 0, 0, 0.06);
position: fixed;
bottom: 0;
.btn {
border-radius: 100rpx;
margin-top: 26rpx;
width: 680rpx;
height: 80rpx;
color: #ffffff;
font-size: 28rpx;
overflow: hidden;
.btn-1 {
flex: 1;
background: linear-gradient(271deg, #2698fb 0%, #84c6ff 100%);
}
.btn-2 {
flex: 1;
background: linear-gradient(90deg, #0066ff 0%, #1371ff 100%);
}
}
}
// css
.flex-row {
display: flex;
}
.flex-row-c {
display: flex;
justify-content: center;
}
.flex-row--c {
display: flex;
align-items: center;
}
.flex-row-c-c {
display: flex;
justify-content: center;
align-items: center;
}
.flex-row-sb-c {
display: flex;
justify-content: space-between;
align-items: center;
}
.flex-row-sb-t {
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.flex-row-sb-b {
display: flex;
justify-content: space-between;
align-items: flex-end;
}
.flex-row-c-sb {
display: flex;
justify-content: center;
align-items: space-between;
}
.flex-row-sb {
display: flex;
justify-content: space-between;
}
.flex-row-l {
display: flex;
justify-content: flex-start;
}
.flex-row-l-c {
display: flex;
justify-content: flex-start;
align-items: center;
}
.flex-row-c-t {
display: flex;
justify-content: center;
align-items: flex-start;
}
.flex-row-r-c {
display: flex;
justify-content: flex-end;
align-items: center;
}
.flex-row-r {
display: flex;
justify-content: flex-end;
}
.flex-row--b {
display: flex;
align-items: flex-end;
}
.flex-col {
display: flex;
flex-direction: column;
}
.flex-col-c {
display: flex;
flex-direction: column;
justify-content: center;
}
.flex-col--c {
display: flex;
flex-direction: column;
align-items: center;
}
.flex-col-c-c {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.flex-col-sb-c {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
}
.flex-col-c-sb {
display: flex;
flex-direction: column;
justify-content: center;
align-items: space-between;
}
.flex-col-sb {
display: flex;
flex-direction: column;
justify-content: space-between;
}
.flex-col-t-c {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
}
.flex-col-c-l {
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start;
}
.flex-col-t {
display: flex;
flex-direction: column;
justify-content: flex-start;
}
.flex-col-b {
display: flex;
flex-direction: column;
justify-content: flex-end;
}
.flex-col-b-c {
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
}
.flex-col-c-l {
display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-end;
}
.flex-col--l {
display: flex;
flex-direction: column;
align-items: flex-start;
}
.flex-col--r {
display: flex;
flex-direction: column;
align-items: flex-end;
}
}
</style>

@ -1,7 +1,8 @@
<template> <template>
<uni-popup ref="alertDialog"> <uni-popup ref="alertDialog" :is-mask-click="false">
<view class="realname-wrap"> <view class="realname-wrap">
<uni-forms> <view class="realname-form">
<uni-forms class="">
<uni-forms-item label="真实姓名" required> <uni-forms-item label="真实姓名" required>
<uni-easyinput type="text" v-model.trim="realNameForm.userName" placeholder="请输入真实姓名" /> <uni-easyinput type="text" v-model.trim="realNameForm.userName" placeholder="请输入真实姓名" />
</uni-forms-item> </uni-forms-item>
@ -9,7 +10,8 @@
<uni-easyinput type="text" v-model.trim="realNameForm.workNumber" placeholder="请输入学号" /> <uni-easyinput type="text" v-model.trim="realNameForm.workNumber" placeholder="请输入学号" />
</uni-forms-item> </uni-forms-item>
</uni-forms> </uni-forms>
<button class="btn" type="primary" @click="realNameSubmit">确认</button> </view>
<view class="btn" @click="realNameSubmit">确认</view>
</view> </view>
</uni-popup> </uni-popup>
</template> </template>
@ -19,11 +21,14 @@
export default { export default {
data() { data() {
return { return {
src: uni.getSystemInfoSync().uniPlatform === 'mp-toutiao' ? 'https://occupationlab.com/images/dyQrcode.jpg' : 'https://occupationlab.com/images/customer.png' realNameForm: {
userName: '',
workNumber: '',
},
} }
}, },
onShow() { mounted() {
console.log(3333) console.log('realname:')
this.handleRealName() this.handleRealName()
}, },
methods: { methods: {
@ -41,7 +46,6 @@
userName: form.userName, userName: form.userName,
workNumber: form.workNumber workNumber: form.workNumber
}) })
}, },
} }
} }
@ -50,11 +54,18 @@
<style scoped lang="scss"> <style scoped lang="scss">
.realname-wrap { .realname-wrap {
width: 460rpx; width: 460rpx;
padding: 30rpx;
background-color: #fff; background-color: #fff;
border-radius: 20rpx; border-radius: 20rpx;
.realname-form {
padding: 30rpx 30rpx 0;
}
.btn { .btn {
line-height: 2.2; flex: 1;
padding: 22rpx 16rpx;
font-size: 24rpx;
color: #007EFF;
text-align: center;
border-top: 1px solid #eee;
} }
} }
</style> </style>

@ -1,10 +0,0 @@
/**
/**
* 产品 配置文件
* @author yujialong
*/
export default {
normalIcon: 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220609/png/1534733700683030528.png', // 通用图标
dataIcon: 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220627/png/1541256164447641600.png' // 数据图标
}

@ -5,9 +5,9 @@
*/ */
export default { export default {
baseURL: 'https://izhixinyun.com/', // baseURL: 'https://izhixinyun.com/',
// baseURL: 'http://192.168.31.51:9000/', // baseURL: 'http://192.168.31.51:9000/',
// baseURL: 'http://121.37.12.51/', baseURL: 'http://118.31.167.228/',
headers: { headers: {
'Content-Type': 'application/json;charset=UTF-8' 'Content-Type': 'application/json;charset=UTF-8'
}, },

@ -1,14 +1,16 @@
<template> <template>
<view class="wrap"> <view class="wrap">
<!-- <web-view class="wv" src="https://view.officeapps.live.com/op/view.aspx?src=https://huoran.oss-cn-shenzhen.aliyuncs.com/1732588133977.xlsx"></web-view> --> <!-- <web-view class="wv" src="https://view.officeapps.live.com/op/view.aspx?src=https://huoran.oss-cn-shenzhen.aliyuncs.com/1732588133977.xlsx"></web-view> -->
<view class="file-wrap">
<image v-if="!curRow.fileUrl && coverUrl" class="pic" :src="coverUrl" mode="widthFix"></image>
<template v-else>
<image v-if="curRow.isPic" class="pic" :src="curRow.fileUrl" mode="widthFix" @click="hidePlayList"></image>
<video v-else-if="curRow.isVideo" class="video" :key="curRow.fileUrl" width="100%" height="100%" autoplay controls :src="curRow.fileUrl" type="video/mp4" @click="hidePlayList" @fullscreenchange="fullScreenChange"></video>
<web-view v-else-if="curRow.isDoc" class="webview" :webview-styles="webviewStyles" :fullscreen="false" :src="curRow.fileUrl" @click="hidePlayList"></web-view>
<!-- <web-view v-else-if="curRow.isDoc" class="webview" :webview-styles="webviewStyles" :fullscreen="false" src="https://huoran.oss-cn-shenzhen.aliyuncs.com/1732589800544.xlsx"></web-view> -->
</template>
<view v-if="curRow.fileUrl" class="file-wrap"> <cover-view v-show="!playListVisible && curRow.fileUrl" class="select-epi">
<image v-if="curRow.isPic" class="pic" :src="curRow.fileUrl" mode="widthFix" @click="hidePlayList"></image>
<video v-else-if="curRow.isVideo" class="video" :key="curRow.fileUrl" width="100%" height="100%" autoplay controls :src="curRow.fileUrl" type="video/mp4" @click="hidePlayList" @fullscreenchange="fullScreenChange"></video>
<web-view v-else-if="curRow.isDoc" class="webview" :webview-styles="webviewStyles" :fullscreen="false" :src="curRow.fileUrl" @click="hidePlayList"></web-view>
<!-- <web-view v-else-if="curRow.isDoc" class="webview" :webview-styles="webviewStyles" :fullscreen="false" src="https://huoran.oss-cn-shenzhen.aliyuncs.com/1732589800544.xlsx"></web-view> -->
<cover-view v-show="!playListVisible" class="select-epi">
<cover-image class="icon" src="https://eduvessel.com/images/occupationlab/list.png" mode="widthFix" @click="showPlayList" /> <cover-image class="icon" src="https://eduvessel.com/images/occupationlab/list.png" mode="widthFix" @click="showPlayList" />
</cover-view> </cover-view>
@ -53,9 +55,9 @@
<view class="chapter" v-for="(item, i) in chapterList" :key="i"> <view class="chapter" v-for="(item, i) in chapterList" :key="i">
<view class="chapterName"> <view class="chapterName">
{{ item.name }} {{ item.name }}
<uni-icons class="arrow" type="bottom" color="#909090"></uni-icons> <uni-icons class="arrow" type="bottom" color="#909090" @click="toggleChapter(item)"></uni-icons>
</view> </view>
<view class="section" v-if="item.subsectionList.length"> <view :class="['section', {shrink: item.shrink}]" v-if="item.subsectionList.length">
<view v-for="(section, j) in item.subsectionList" :key="j"class="sectionName" :class="{ active: curRow.id === section.id }" @click="secClick(section, item)"> <view v-for="(section, j) in item.subsectionList" :key="j"class="sectionName" :class="{ active: curRow.id === section.id }" @click="secClick(section, item)">
<image v-if="section.fileType === 'pptx'" class="ext" src="https://izhixinyun.com/images/exts/ppt.png" alt=""> <image v-if="section.fileType === 'pptx'" class="ext" src="https://izhixinyun.com/images/exts/ppt.png" alt="">
<image v-else-if="section.fileType === 'mp4'" class="ext" src="https://izhixinyun.com/images/exts/video.png" alt=""> <image v-else-if="section.fileType === 'mp4'" class="ext" src="https://izhixinyun.com/images/exts/video.png" alt="">
@ -105,8 +107,6 @@
<script> <script>
import { queryChaptersAndSubsections, curriculumDetail, queryPracticeByStudent, queryAssessmentByStudent, getPlayAuth } from '@/apis/modules/course.js' import { queryChaptersAndSubsections, curriculumDetail, queryPracticeByStudent, queryAssessmentByStudent, getPlayAuth } from '@/apis/modules/course.js'
// import Aliplayer from 'aliyun-aliplayer';
// import 'aliyun-aliplayer/build/skins/default/aliplayer-min.css';
export default { export default {
data() { data() {
return { return {
@ -134,6 +134,7 @@
searchTimer: null, searchTimer: null,
keyword: '', keyword: '',
chapterList: [], chapterList: [],
coverUrl: '',
briefIntroduction: '', briefIntroduction: '',
practices: [], practices: [],
@ -213,13 +214,17 @@
const { options } = pages[pages.length - 1] const { options } = pages[pages.length - 1]
this.cid = options.cid this.cid = options.cid
this.mallId = options.mallId this.mallId = options.mallId
this.getInfo()
this.getChapter() this.getChapter()
}, },
methods: { methods: {
// //
async getChapter () { async getChapter () {
if (this.cid) { if (this.cid) {
const res = await queryChaptersAndSubsections(this.cid) const res = await queryChaptersAndSubsections({
keyword: this.keyword,
courseId: this.courseId,
})
this.chapterList = res.chapterList this.chapterList = res.chapterList
// if (this.chapterList.length && this.chapterList[0].subsectionList && this.chapterList[0].subsectionList.length && !this.commentId) { // if (this.chapterList.length && this.chapterList[0].subsectionList && this.chapterList[0].subsectionList.length && !this.commentId) {
// this.preview(this.chapterList[0].subsectionList[0], this.chapterList[0].name, 1); // this.preview(this.chapterList[0].subsectionList[0], this.chapterList[0].name, 1);
@ -230,6 +235,7 @@
async getInfo () { async getInfo () {
if (this.cid && this.mallId) { if (this.cid && this.mallId) {
const { data } = await curriculumDetail(this.cid, this.mallId) const { data } = await curriculumDetail(this.cid, this.mallId)
this.coverUrl = data.coverUrl
this.briefIntroduction = data.briefIntroduction this.briefIntroduction = data.briefIntroduction
} }
}, },
@ -274,10 +280,14 @@
// tab // tab
tabChange(id) { tabChange(id) {
this.curTab = id this.curTab = id
!id && !this.briefIntroduction && this.getInfo() // !id && !this.briefIntroduction && this.getInfo()
id === 2 && !this.practices.length && this.initPrac() id === 2 && !this.practices.length && this.initPrac()
id === 3 && !this.ass.length && this.initAss() id === 3 && !this.ass.length && this.initAss()
}, },
//
toggleChapter(item) {
this.$set(item, 'shrink', !item.shrink)
},
// //
toPrac(row) { toPrac(row) {
this.$util.to(`../practiceDetail/practiceDetail?cid=${this.cid}&projectId=${row.projectId || ''}&paperId=${row.paperId || ''}`) this.$util.to(`../practiceDetail/practiceDetail?cid=${this.cid}&projectId=${row.projectId || ''}&paperId=${row.paperId || ''}`)
@ -379,10 +389,6 @@
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.wv {
display: block;
height: 100vh !important;
}
.file-wrap { .file-wrap {
position: relative; position: relative;
.pic, .video { .pic, .video {
@ -391,9 +397,9 @@
} }
.webview { .webview {
display: block; display: block;
// height: 400rpx !important;
} }
.pic { .pic {
display: block;
object-fit: cover; object-fit: cover;
} }
@ -408,7 +414,6 @@
border-bottom-left-radius: 10px; border-bottom-left-radius: 10px;
.icon { .icon {
width: 20px; width: 20px;
// height: 20rpx;
} }
} }
} }
@ -515,20 +520,26 @@
.chapterName { .chapterName {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
font-size: 30rpx; font-size: 26rpx;
color: #333; color: #333;
} }
.arrow { .arrow {
font-size: 28rpx; font-size: 28rpx;
} }
.section { .section {
margin: 20rpx 0; height: auto;
transition: .5s;
overflow: hidden;
&.shrink {
height: 0;
// transform: scaleY(0);
}
} }
.sectionName { .sectionName {
display: flex; display: flex;
align-items: center; align-items: center;
margin: 30rpx 0; margin: 30rpx 0;
font-size: 26rpx; font-size: 24rpx;
color: #333; color: #333;
&.active { &.active {

@ -1,39 +0,0 @@
/**
* @file 百度移动统计配置文件
*/
module.exports = {
/**
* 从百度移动统计获取的AppKey
* @type {string}
*/
appKey: 'ce2fa79380',
/**
* 是否使用了插件
* @type {boolean}
*/
hasPlugin: false,
/**
* 是否获取当前的地理位置和速度信息
* @type {boolean}
*/
getLocation: false,
/**
* 是否获取组件滚动信息
* @type {boolean}
*/
getComponentScroll: false,
/**
* 是否开启了A/B 测试
* @type {boolean}
*/
hasABTest: false,
/**
* 是否开启热力图功能
* @type {boolean}
*/
hasHeatmap: false,
};

File diff suppressed because one or more lines are too long

@ -3,7 +3,7 @@ export default{
onShareAppMessage() { onShareAppMessage() {
// 设置转发的参数 // 设置转发的参数
return { return {
title: "职站商城", title: "慧教云舟",
// path: '', // path: '',
imageUrl: "", imageUrl: "",
success: function(res) { success: function(res) {
@ -19,7 +19,7 @@ export default{
// 分享到朋友圈 // 分享到朋友圈
onShareTimeline:function(res){ onShareTimeline:function(res){
return { return {
title: '职站商城', title: '慧教云舟',
// imageUrl:'/static/image/phone.png', // imageUrl:'/static/image/phone.png',
query:'' query:''
} }
@ -27,7 +27,7 @@ export default{
// 收藏 // 收藏
onAddToFavorites:function(res) { onAddToFavorites:function(res) {
return { return {
title: '职站商城', title: '慧教云舟',
// imageUrl:'/static/image/phone.png', // imageUrl:'/static/image/phone.png',
query: '', query: '',
} }

@ -1,18 +0,0 @@
import uma from 'umtrack-wx';
uma.init({
appKey: '64cc98d5a1a164591b62da3e', // 由友盟分配的APP_KEY
useOpenid: true,
// 使用Openid进行统计,此项为false时将使用友盟+uuid进行用户统计。
// 使用Openid来统计微信小程序的用户,会使统计的指标更为准确,对系统准确性要求高的应用推荐使用Openid
autoGetOpenid: true,
// 使用openid进行统计时,是否授权友盟自动获取Openid,
// 如若需要,请到友盟后台"设置管理-应用信息"(https://mp.umeng.com/setting/appset)中设置appId及secret
debug: true,// 是否打开调试模式
uploadUserInfo: true, // 自动上传用户信息,设为false取消上传,默认为false
enableVerify: true
});
uma.install = function(Vue) {
Vue.prototype.$uma = uma;
}
export default uma;

@ -3,27 +3,14 @@
import Vue from 'vue' import Vue from 'vue'
import App from './App' import App from './App'
import util from '@/libs/util' import util from '@/libs/util'
import uma from './libs/uma'
import share from './libs/share' import share from './libs/share'
import mtjWxSdk from './libs/mtj-wx-sdk'
Vue.config.productionTip = false Vue.config.productionTip = false
Vue.prototype.$util = util Vue.prototype.$util = util
Vue.use(uma)
Vue.mixin(share) Vue.mixin(share)
App.mpType = 'app' App.mpType = 'app'
// 权限控制
Vue.prototype.auth = function(text){
const auth = uni.getStorageSync('auth')
if (text && auth && auth.length) {
const isPermission = auth.includes(text)
return auth.includes(text)
}
// return true
}
const app = new Vue({ const app = new Vue({
...App, ...App,
share share

@ -1,5 +1,5 @@
{ {
"name" : "职站商城", "name" : "慧教云舟",
"appid" : "__UNI__2E89BA6", "appid" : "__UNI__2E89BA6",
"description" : "", "description" : "",
"versionName" : "1.0.0", "versionName" : "1.0.0",

@ -144,8 +144,6 @@
"selectedColor": "#007FFF", "selectedColor": "#007FFF",
"borderStyle": "white", "borderStyle": "white",
"backgroundColor": "#ffffff", "backgroundColor": "#ffffff",
"fontSize": "22px",
"iconWidth": "20px",
"list": [{ "list": [{
"pagePath": "pages/index/index", "pagePath": "pages/index/index",
"iconPath": "static/image/tab1.png", "iconPath": "static/image/tab1.png",

@ -38,7 +38,6 @@
<li v-for="(item, i) in tabs" :key="i" :class="{active: curTab === item.id}" @click="tabChange(item.id)">{{ item.name }}</li> <li v-for="(item, i) in tabs" :key="i" :class="{active: curTab === item.id}" @click="tabChange(item.id)">{{ item.name }}</li>
</ul> </ul>
<uni-data-picker class="picker-input" preload :clear-icon="false" :localdata="courses" v-model="mallId" @change="initList"></uni-data-picker> <uni-data-picker class="picker-input" preload :clear-icon="false" :localdata="courses" v-model="mallId" @change="initList"></uni-data-picker>
<!-- <uni-data-select class="select" v-model="mallId" :localdata="courses" @change="initList"></uni-data-select> -->
</view> </view>
<!-- 练习成绩 --> <!-- 练习成绩 -->
@ -251,7 +250,7 @@
.name { .name {
margin-top: 8rpx; margin-top: 8rpx;
color: #fff; color: #fff;
font-size: 28rpx; font-size: 26rpx;
} }
.val { .val {
@ -269,13 +268,13 @@
} }
} }
.c-name { .c-name {
font-size: 32rpx; font-size: 30rpx;
font-weight: 600; font-weight: 600;
color: #333; color: #333;
} }
.line { .line {
margin-top: 14rpx; margin-top: 14rpx;
font-size: 26rpx; font-size: 24rpx;
color: #828282; color: #828282;
} }
.btn { .btn {
@ -283,7 +282,7 @@
bottom: 20rpx; bottom: 20rpx;
right: 0; right: 0;
padding: 10rpx 30rpx; padding: 10rpx 30rpx;
font-size: 28rpx; font-size: 24rpx;
color: #fff; color: #fff;
background-color: #007EFF; background-color: #007EFF;
border-radius: 36rpx; border-radius: 36rpx;

@ -19,15 +19,15 @@
</ul> </ul>
<empty v-else /> <empty v-else />
<RealName /> <realName />
</view> </view>
</template> </template>
<script> <script>
import { schoolCourse, recentUse, getSchoolCourseAuthority } from '@/apis/modules/course.js' import { schoolCourse, recentUse, getSchoolCourseAuthority } from '@/apis/modules/course.js'
import RealName from '@/components/realName/realName.vue' // import RealName from '@/components/realName/realName.vue'
export default { export default {
components: { RealName }, // components: { RealName },
data() { data() {
return { return {
curTab: 0, curTab: 0,
@ -42,10 +42,6 @@
page: 1, page: 1,
pageSize: 10, pageSize: 10,
total: 0, total: 0,
realNameForm: {
userName: '',
workNumber: '',
},
} }
}, },
watch: { watch: {
@ -64,7 +60,7 @@
}, 1500) }, 1500)
}, },
onShow() { onShow() {
uni.setStorageSync('token', 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjM5NTc2LCJyblN0ciI6IlQ2WGY5Vm5XYUNPT0tIYXhSckFscG1jVUNlMXl6M2swIiwiYWNjb3VudElkIjozOTU3NiwidXNlcklkIjozOTU3NSwic2Nob29sSWQiOjI4NDYsInVzZXJOYW1lIjoiYWMiLCJwbGF0Zm9ybUlkIjoiMSJ9.0gR2C3CPMZx00m6K1oLnIKTtQwSbc8vRzNKridDrM3s') // uni.setStorageSync('token', 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOjM5NTc2LCJyblN0ciI6ImtOaUd2TVI4dlA5eldNZTFlbUFKSmoycWRHMENaU1Q5IiwiYWNjb3VudElkIjozOTU3NiwidXNlcklkIjozOTU3NSwic2Nob29sSWQiOjI4NDYsInVzZXJOYW1lIjoiYWMiLCJwbGF0Zm9ybUlkIjoiMSJ9.JRcmjfyBUik35mG8UxtGTsD0hFGdQfY63cQKQMajq3I')
this.getTab() this.getTab()
}, },
methods: { methods: {
@ -158,14 +154,14 @@
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
height: 76rpx; height: 64rpx;
margin: 10rpx 0 16rpx; margin: 10rpx 0;
font-size: 28rpx; font-size: 24rpx;
color: #333; color: #333;
} }
.entry { .entry {
font-size: 28rpx; font-size: 26rpx;
line-height: 1.9; line-height: 1.9;
color: #333; color: #333;
text-align: center; text-align: center;

@ -230,7 +230,7 @@
border-top: 1px solid #eee; border-top: 1px solid #eee;
.btn { .btn {
flex: 1; flex: 1;
padding: 16rpx; padding: 22rpx 16rpx;
font-size: 24rpx; font-size: 24rpx;
color: #007EFF; color: #007EFF;
&:first-child { &:first-child {

@ -1,32 +0,0 @@
@font-face {
font-family: "iconfont"; src: url('/static/iconfont/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-qrcode:before {
content: "\e7dd";
}
.icon-dingdan:before {
content: "\e601";
}
.icon-product:before {
content: "\e788";
}
.icon-edit:before {
content: "\e621";
}
.icon-filter:before {
content: "\e6b9";
}

Binary file not shown.

@ -1,9 +1,6 @@
button[type=primary] { button[type=primary] {
background-color: #007eff; background-color: #007eff;
} }
.bg-wh {
background-color: #fff;
}
page { page {
height: 100%; height: 100%;
background-color: #f5f5f5; background-color: #f5f5f5;
@ -24,21 +21,6 @@ ul {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
} }
.l-title {
display: flex;
align-items: center;
padding: 28rpx 0;
font-size: 28rpx;
color: #333;
&:before {
content: '';
width: 6rpx;
height: 28rpx;
margin-right: 12rpx;
vertical-align: middle;
background-color: #4876F9;
}
}
.p-title { .p-title {
display: flex; display: flex;
align-items: center; align-items: center;
@ -50,28 +32,6 @@ ul {
margin-right: 8rpx; margin-right: 8rpx;
} }
} }
@mixin sort {
margin: 0 20rpx 0 10rpx;
&:before {
content: '';
display: block;
margin-bottom: 5rpx;
border: 15rpx solid transparent;
border-bottom-color: #B9B9B9;
}
&:after {
content: '';
display: block;
border: 15rpx solid transparent;
border-top-color: #B9B9B9;
}
&.desc:before {
border-bottom-color: #007EFF;
}
&.asc:after {
border-top-color: #007EFF;
}
}
.filter { .filter {
display: flex; display: flex;
align-items: center; align-items: center;
@ -83,9 +43,6 @@ ul {
.uni-searchbar__box { .uni-searchbar__box {
height: 70rpx; height: 70rpx;
} }
.sort {
@include sort;
}
} }
.form-list { .form-list {
.line { .line {
@ -158,8 +115,20 @@ ul {
padding-left: 0; padding-left: 0;
} }
} }
.picker-date .uni-date-x--border { .picker-date {
border: 0; .uni-date-x--border {
border: 0;
}
.uni-date-x, .uni-date__x-input {
padding-left: 0;
}
uni-icons {
display: none;
}
.uni-date__x-input {
height: 1.4rem;
line-height: 1.4rem;
}
} }
.tab { .tab {
display: flex; display: flex;
@ -177,50 +146,6 @@ ul {
color: $uni-primary; color: $uni-primary;
border-bottom-color: $uni-primary; border-bottom-color: $uni-primary;
} }
.sort {
@include sort;
}
}
.popup-mask {
z-index: 9;
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
background-color: rgba(0, 0, 0, .5);
}
.popup {
z-index: 10;
position: fixed;
bottom: 0%;
width: 100%;
height: 90vh;
background-color: #fff;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
.top {
text-align: center;
line-height: 100rpx;
font-size: 28rpx;
color: #333;
border-bottom: 1px solid #f1f1f1;
}
.close {
position: absolute;
top: 30rpx;
right: 30rpx;
}
.list {
max-height: calc(90vh - 206rpx);
padding: 0 30rpx;
overflow: auto;
.item {
line-height: 80rpx;
font-size: 24rpx;
}
}
} }
.btn-wrap { .btn-wrap {
z-index: 10; z-index: 10;

@ -1,3 +1,2 @@
@import '@/uni_modules/uni-scss/variables.scss'; @import '@/uni_modules/uni-scss/variables.scss';
@import '@/styles/common.scss'; @import '@/styles/common.scss';
@import '@/static/iconfont/iconfont.css';
Loading…
Cancel
Save