LGX 11 months ago
parent 1746ef60f1
commit d67fafe978
  1. 16
      .hbuilderx/launch.json
  2. 28
      App.vue
  3. 28
      androidPrivacy.json
  4. 124
      api/index.js
  5. 1618
      api/qrcode.js
  6. 51
      api/request.js
  7. 20
      index.html
  8. 26
      main.js
  9. 72
      manifest.json
  10. 6
      package-lock.json
  11. 253
      pages.json
  12. 234
      pages/achievement/achievement.vue
  13. 280
      pages/album/album.vue
  14. 22
      pages/album/detail/detail.vue
  15. 210
      pages/backlog/index.vue
  16. 408
      pages/index/add.vue
  17. 378
      pages/index/competition/competition.vue
  18. 329
      pages/index/create.vue
  19. 124
      pages/index/detail.vue
  20. 555
      pages/index/index.vue
  21. 127
      pages/index/operation.vue
  22. 210
      pages/index/print.vue
  23. 130
      pages/login/forget.vue
  24. 182
      pages/login/index.vue
  25. 275
      pages/login/register.vue
  26. 123
      pages/login/setPass.vue
  27. 190
      pages/record/record.vue
  28. 335
      pages/setup/index.vue
  29. 246
      pages/user/clubs/add/add.vue
  30. 386
      pages/user/clubs/clubs.vue
  31. 185
      pages/user/clubs/detail/detail.vue
  32. 302
      pages/user/index.vue
  33. 87
      pages/user/notice/detail/detail.vue
  34. 73
      pages/user/notice/notice.vue
  35. 197
      pages/user/personal.vue
  36. 132
      pages/user/update/update.vue
  37. BIN
      static/0@2x.png
  38. BIN
      static/1.png
  39. BIN
      static/1@22x.png
  40. BIN
      static/1@2x.png
  41. BIN
      static/2.png
  42. BIN
      static/2@22x.png
  43. BIN
      static/2@2x.png
  44. BIN
      static/3.png
  45. BIN
      static/3@2x.png
  46. BIN
      static/4@2x.png
  47. BIN
      static/5@2x.png
  48. BIN
      static/6@2x.png
  49. BIN
      static/7@2x.png
  50. BIN
      static/8@2x.png
  51. BIN
      static/bg (1).png
  52. BIN
      static/bg (2).png
  53. BIN
      static/bg (3).png
  54. BIN
      static/bg (4).png
  55. BIN
      static/bg1@2x.png
  56. BIN
      static/chengji1.png
  57. BIN
      static/chengji2.png
  58. BIN
      static/dayin@2x.png
  59. BIN
      static/dingwei.png
  60. BIN
      static/dizhi.png
  61. BIN
      static/huifang.png
  62. BIN
      static/icon-home-01.png
  63. BIN
      static/icon-home-02.png
  64. BIN
      static/icon-home-03.png
  65. BIN
      static/icon-home-04.png
  66. BIN
      static/icon-home-05.png
  67. BIN
      static/icon-home-06.png
  68. BIN
      static/icon-tab-01-on.png
  69. BIN
      static/icon-tab-01.png
  70. BIN
      static/icon-tab-02-on.png
  71. BIN
      static/icon-tab-02.png
  72. BIN
      static/icon-tab-03-on.png
  73. BIN
      static/icon-tab-03.png
  74. BIN
      static/icon-tab-04-on.png
  75. BIN
      static/icon-tab-04.png
  76. BIN
      static/icon-tab-05-on.png
  77. BIN
      static/icon-tab-05.png
  78. BIN
      static/jia@2x.png
  79. BIN
      static/jiantou@2x.png
  80. BIN
      static/jiantoushang@2x.png
  81. BIN
      static/jiantouxia@2x.png
  82. BIN
      static/jiantouyou@2x.png
  83. BIN
      static/jilu1.png
  84. BIN
      static/jilu2.png
  85. BIN
      static/logo@2x.png
  86. BIN
      static/rili@2x.png
  87. BIN
      static/saoyisao@2x.png
  88. BIN
      static/shouye1.png
  89. BIN
      static/shouye2.png
  90. BIN
      static/sousuo@2x.png
  91. BIN
      static/tianjia.png
  92. BIN
      static/wode1.png
  93. BIN
      static/wode2.png
  94. BIN
      static/xiangce1.png
  95. BIN
      static/xiangce2.png
  96. BIN
      static/zhibo1.png
  97. BIN
      static/人群.png
  98. BIN
      static/俱乐部.png
  99. BIN
      static/切换.png
  100. BIN
      static/地址.png
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,16 @@
{ // launch.json configurations app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtypelocalremote, localremote
"version": "0.0",
"configurations": [{
"default" :
{
"launchtype" : "local"
},
"mp-weixin" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
]
}

@ -0,0 +1,28 @@
<script>
export default {
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
<style lang="scss">
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
@import "@/uni_modules/uview-ui/index.scss";
/*每个页面公共css */
page{
background-color: #F4E0E3 !important;
}
.oppo-box{
width: 100vw !important;
height: 100vh !important;
overflow-x: hidden !important;
overflow-y: auto !important;
}
</style>

@ -0,0 +1,28 @@
{
"version" : "1",
"prompt" : "template",
"title" : "用户协议与隐私政策",
"message" : "\t <br/>
<a href=\"pages/columnGoods/static/yhxy.html\">《用户协议》</a>与 <a href=\"pages/columnGoods/static/yszc.html\">《隐私政策》</a>了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。",
"buttonAccept" : "同意并接受",
"buttonRefuse" : "暂不同意",
"second" : {
"title" : "确认提示",
"message" : "进入应用前,你需先同意<a href=\"pages/columnGoods/static/yhxy.html\">《用户协议》</a>与<a href=\"pages/columnGoods/static/yszc.html\">《隐私政策》</a>,否则将退出应用。",
"buttonAccept" : "同意并继续",
"buttonRefuse" : "退出应用"
},
"styles" : {
"backgroundColor" : "#fff",
"borderRadius" : "5px",
"title" : {
"color" : "#000"
},
"buttonAccept" : {
"color" : "#fff"
},
"buttonRefuse" : {
"color" : "#ccc"
}
}
}

@ -0,0 +1,124 @@
import { request } from './request'
const api = {
//新增幼崽接口
api_squirrel_addNewSquirrel(data) {
return request({
url: 'api_squirrel/addNewSquirrel',
method: 'post',
data
})
},
//查询小鼠接口
api_squirrel_detail(data) {
return request({
url: 'api_squirrel/getInfos',
method: 'post',
data
})
},
//编辑小鼠接口
api_squirrel_edit(data) {
return request({
url: 'api_squirrel/edit',
method: 'post',
data
})
},
//新增小鼠接口
api_squirrel_add(data) {
return request({
url: 'api_squirrel/add',
method: 'post',
data
})
},
//获取父亲母亲接口
api_squirrel_getparents(data) {
return request({
url: 'api_squirrel/getparents',
method: 'post',
data
})
},
//根据笼位获取鼠信息列表接口
api_squirrel_list(data) {
return request({
url: 'api_squirrel/list',
method: 'post',
data
})
},
//获取负责人接口
api_cage_getUser(data) {
return request({
url: 'api_cage/getUser',
method: 'post',
data
})
},
//获取笼位类型
api_cage_getCagetype(data) {
return request({
url: 'api_cage/getCagetype',
method: 'post',
data
})
},
//获取品系接口
api_basicinfo_strains(data) {
return request({
url: 'api_basicinfo/strains',
method: 'post',
data
})
},
//获取实验室接口
api_basicinfo_group(data) {
return request({
url: 'api_basicinfo/group',
method: 'post',
data
})
},
//获取基因接口
api_basicinfo_gene(data) {
return request({
url: 'api_basicinfo/gene',
method: 'post',
data
})
},
//添加笼位接口
api_cage_add(data) {
return request({
url: 'api_cage/add',
method: 'post',
data
})
},
//获取笼位接口
api_cage_list(data) {
return request({
url: 'api_cage/list',
method: 'post',
data
})
},
//用户登录
api_login(data) {
return request({
url: 'api_login',
method: 'post',
data
})
},
//用户注册
api_login_register(data) {
return request({
url: 'api_login/register',
method: 'post',
data
})
}
}
export default api

File diff suppressed because it is too large Load Diff

@ -0,0 +1,51 @@
import Vue from 'vue'
let baseUrl = 'http://cage.njrenzhou.com/';
//https://console-docs.apipost.cn/preview/077df998e6b8e954/a3d90a650bdbe292
Vue.prototype.$baseUrl = baseUrl;
export function request(prams) {
return new Promise((resolve, reject) => {
let url;
url = baseUrl + prams.url;
uni.request({
url: url,
data: prams.data,
method: prams.method,
header: {
"userToken": uni.getStorageSync('token')
},
success: (res) => {
if (res.data.errorcode == 200 || res.data.errorcode == 500){
resolve(res.data);
}else if(res.data.errorcode == 402){
uni.showModal({
title: "温馨提示",
content: "当前账号已过期,是否重新登录",
confirmColor: "#05754D",
success(res) {
uni.removeStorageSync("userInfo")
uni.removeStorageSync("token")
uni.navigateTo({
url: "/pages/login/index"
})
}
})
} else {
reject(res.data);
uni.showToast({
icon: "none",
title: res.data.msg,
duration: 3000
});
}
},
fail: (err) => {
reject(err);
},
complete: () => {
//console.log('请求完成')
}
});
})
}

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<script>
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></title>
<!--preload-links-->
<!--app-context-->
</head>
<body>
<div id="app"><!--app-html--></div>
<script type="module" src="/main.js"></script>
</body>
</html>

@ -0,0 +1,26 @@
import App from './App'
// #ifndef VUE3
import Vue from 'vue'
Vue.config.productionTip = false
import uView from 'uni_modules/uview-ui'
Vue.use(uView)
import api from '@/api/index.js'
Vue.prototype.$api = api
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
// #endif
// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
// #endif

@ -0,0 +1,72 @@
{
"name" : "cangshu",
"appid" : "__UNI__AB800E0",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
/* 5+App */
"app-plus" : {
"usingComponents" : true,
"nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3,
"splashscreen" : {
"alwaysShowBeforeRender" : true,
"waiting" : true,
"autoclose" : true,
"delay" : 0
},
/* */
"modules" : {},
/* */
"distribute" : {
/* android */
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},
/* ios */
"ios" : {},
/* SDK */
"sdkConfigs" : {}
}
},
/* */
"quickapp" : {},
/* */
"mp-weixin" : {
"appid" : "",
"setting" : {
"urlCheck" : false
},
"usingComponents" : true
},
"mp-alipay" : {
"usingComponents" : true
},
"mp-baidu" : {
"usingComponents" : true
},
"mp-toutiao" : {
"usingComponents" : true
},
"uniStatistics" : {
"enable" : false
},
"vueVersion" : "2"
}

6
package-lock.json generated

@ -0,0 +1,6 @@
{
"name": "cangshu_app",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}

@ -0,0 +1,253 @@
{
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path" : "pages/login/index",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "pages/index/index",
"style": {
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "pages/record/record",
"style": {
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "pages/achievement/achievement",
"style": {
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "pages/index/create",
"style": {
"navigationBarTitleText": "新建笼位"
}
},
{
"path": "pages/backlog/index",
"style": {
"navigationBarTitleText": "待办"
}
},
{
"path": "pages/setup/index",
"style": {
"navigationBarTitleText": "设置"
}
},
{
"path": "pages/user/index",
"style": {
"navigationBarTitleText": "我",
"navigationStyle": "custom"
}
}
,{
"path" : "pages/index/detail",
"style" :
{
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}
,{
"path" : "pages/index/add",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/index/operation",
"style" :
{
"navigationBarTitleText": "操作",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/index/print",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/login/register",
"style" :
{
"navigationBarTitleText": "注册",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/login/forget",
"style" :
{
"navigationBarTitleText": "找回密码",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/login/setPass",
"style" :
{
"navigationBarTitleText": "找回密码",
"enablePullDownRefresh": false
}
}
,{
"path" : "pages/user/personal",
"style" :
{
"navigationBarTitleText": "个人信息",
"enablePullDownRefresh": false
}
},
{
"path" : "pages/album/album",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false,
"navigationStyle": "custom"
}
},
{
"path" : "pages/user/notice/notice",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false,
"navigationStyle": "custom"
}
},
{
"path" : "pages/user/notice/detail/detail",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false,
"navigationStyle": "custom"
}
},
{
"path" : "pages/user/clubs/clubs",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false,
"navigationStyle": "custom"
}
},
{
"path" : "pages/user/clubs/detail/detail",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false,
"navigationStyle": "custom"
}
},
{
"path" : "pages/user/clubs/add/add",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false,
"navigationStyle": "custom"
}
},
{
"path" : "pages/index/competition/competition",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/user/update/update",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false
}
},
{
"path" : "pages/album/detail/detail",
"style" :
{
"navigationBarTitleText" : "",
"enablePullDownRefresh" : false
}
}
],
"tabBar": {
"color": "#666666",
"selectedColor": "#CA151F",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [{
"pagePath": "pages/index/index",
"iconPath": "static/shouye2.png",
"selectedIconPath": "static/shouye1.png",
"text": "首页"
}, {
"pagePath": "pages/record/record",
"iconPath": "static/jilu2.png",
"selectedIconPath": "static/jilu1.png",
"text": "记录"
},
{
"pagePath": "pages/achievement/achievement",
"iconPath": "static/chengji2.png",
"selectedIconPath": "static/chengji1.png",
"text": "成绩"
},
{
"pagePath": "pages/album/album",
"iconPath": "static/xiangce2.png",
"selectedIconPath": "static/xiangce1.png",
"text": "相册"
}, {
"pagePath": "pages/user/index",
"iconPath": "static/wode2.png",
"selectedIconPath": "static/wode1.png",
"text": "我的"
}]
},
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#dcdcdc",
"backgroundColor": "#dcdcdc"
},
"uniIdRouter": {}
}

@ -0,0 +1,234 @@
<template>
<view>
<view class="top">
成绩
</view>
<image style="width: 100%;height: 282rpx" src="@/static/bg (2).png"></image>
<view class="home-search">
<view class="box">
<image class="search" @click="get_api_cage_list(1)" src="@/static/sousuo@2x.png"></image>
<input type="search" placeholder="搜索赛站名称" v-model="keyword" />
<image class="arrow" @click="get_api_cage_list(1)" src="@/static/jiantou@2x.png"></image>
</view>
</view>
<view class="content3" style="margin-top: 20upx;" v-for="(item,idex) in 4">
<view class="content31">
<image class="img31" src="../../static/bg (1).png" mode=""></image>
</view>
<view class="content32" style="margin-top: 20upx;margin-right: 20upx;" >
<text>炽能体育公开赛 邯郸站炽能体 育公开赛 邯郸站</text>
<view class="text31">
比赛日期2024年04月13日
</view>
<view class="text31">
截止日期2024-04-03 23:59:59
</view>
<view class="icon32" style="margin-top: 20upx;margin-right: 20upx;">
<view class="text32">
<image class="img32" src="../../static/人群.png" mode=""></image>1231
</view>
<!-- <image class="img32" src="../../static/bg (1).png" mode=""></image> -->
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
keyword:''
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.top {
position: absolute;
top: 117upx;
left: 25upx;
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #FFFFFF;
}
.content3{
width: 702rpx;
height: 236rpx;
background: #FFFFFF;
border-radius: 20rpx;
margin: 0 auto;
display: flex;
.content31{
.img31{
margin: 30upx;
width: 220rpx;
height: 180rpx;
border-radius: 10rpx;
}
}
}
.icon32{
display: flex;
justify-content:space-between;
}
.text31{
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #AAAAAA;
line-height: 40rpx;
}
.text32{
// width: 100rpx;
// height: 38rpx;
// background: #FF8D2B;
border-radius: 5rpx;
}
.img32{
width: 40rpx;
height: 40rpx;
// background: #CA151F;
border-radius: 50%;
}
.home {
&-add{
pointer-events: none;
width: 100%;
height: calc(100vh - env(safe-area-inset-bottom) - 50px);
position: fixed;
left: 0;
top: 0;
z-index: 99;
.movableView{
pointer-events: auto;
width: 112rpx;
height: 112rpx;
image{
width: 100%;
height: 100%;
}
}
}
&-navbar{
image{
width: 45rpx;
height: 45rpx;
margin-left: 38rpx;
}
}
&-filter{
width: 100%;
background-color: #efefef;
display: flex;
align-items: center;
.item{
line-height: 85rpx;
width: 20%;
text-align: center;
color: #241b17;
font-size: 30rpx;
&-on{
background-color: #009944;
color: #ffffff;
}
}
}
&-search{
width: 100%;
// background-color: #efefef;
// padding: 15rpx 40rpx;
// border: 1px solid #cacaca;
box-sizing: border-box;
.box{
position: absolute;
top: 162rpx;
left:35rpx ;
display: flex;
align-items: center;
height: 85rpx;
width: 90%;
box-sizing: border-box;
padding: 0 25rpx;
text-align: center;
background-color:#fff;
border-radius: 35rpx;
.search{
width: 40rpx;
height: 40rpx;
}
input{
flex: 1;
color: #241b17;
font-size: 30rpx;
text-align: left;
margin-left: 25rpx;
}
.arrow{
width: 19rpx;
height: 33rpx;
}
}
}
&-list{
overflow: hidden;
padding: 0 0 40rpx;
display: flex;
flex-wrap: wrap;
.item{
width: 134rpx;
margin-top: 40rpx;
overflow: hidden;
margin-left: 40rpx;
.box{
width: 134rpx;
height: 134rpx;
background: url(@/static/icon-home-01.png) center top no-repeat;
background-size: 100% auto;
position: relative;
box-shadow: 0 8rpx 15rpx #999;
border-radius: 0 0 18rpx 18rpx;
overflow: hidden;
.title{
text-align: center;
font-size: 22rpx;
line-height: 50rpx;
color: #040909;
}
.desc{
margin-top: 12rpx;
text-align: center;
font-size: 22rpx;
line-height: 50rpx;
color: #040909;
}
image{
width: 124rpx;
height: 10rpx;
background: url(@/static/icon-home-01.png) center top no-repeat;
background-size: 100% auto;
position: absolute;
left: 50%;
margin-left: -62rpx;
bottom: 0;
z-index: 2;
}
}
.sort{
text-align: center;
padding: 10rpx 0 0;
font-size: 27rpx;
color: #040909;
}
}
}
}
</style>

@ -0,0 +1,280 @@
<template>
<view class="oppo-box">
<view class="top">
相册
</view>
<image style="width: 100%;height: 282rpx" src="@/static/bg (2).png"></image>
<view class="home-search" >
<view class="box"style="margin-top: 20rpx;">
<image class="search" @click="get_api_cage_list(1)" src="@/static/sousuo@2x.png"></image>
<input type="search" placeholder="搜索赛站名称" v-model="keyword" />
<image class="arrow" @click="get_api_cage_list(1)" src="@/static/jiantou@2x.png"></image>
</view>
</view>
<view class="content3" style="margin-top: 20upx;" v-for="(item,idex) in 4">
<view class="content31">
<image class="img31" src="../../static/bg (1).png" mode="scaleToFill"></image>
<view class="border" style="width: 90%;height: 10rpx;margin: 0 auto;margin-top: -20rpx;border-radius: 30rpx;"></view>
<view class="textbuttom">
炽能体育公开赛 邯郸站炽能体育公开赛 邯郸站
</view>
<view class="textbuttom1">
比赛日期2024-04-13~05-02
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
keyword: ''
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.top {
position: absolute;
top: 117upx;
left: 25upx;
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #FFFFFF;
}
.content3 {
width: 702rpx;
height: 376rpx;
// background: #FFFFFF;
border-radius: 20rpx;
margin: 0 auto;
display: flex;
.content31 {
position: relative;
.border{
border-bottom: 10rpx solid #CA151F;
}
.img31 {
width: 702rpx;
height: 375rpx;
margin: 5upx;
border-radius: 10rpx;
}
.textbuttom {
// margin-top: -200px;
position: absolute;
top: 289rpx;
left: 20px;
width: 603rpx;
height: 28rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #FFFFFF;
line-height: 36rpx;
}
.textbuttom1{
position: absolute;
top: 319rpx;
left: 20px;
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #FFFFFF;
opacity: 0.7;
}
}
}
.icon32 {
display: flex;
justify-content: space-between;
}
.text31 {
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #AAAAAA;
line-height: 40rpx;
}
.text32 {
// width: 100rpx;
// height: 38rpx;
// background: #FF8D2B;
border-radius: 5rpx;
}
.img32 {
width: 40rpx;
height: 40rpx;
// background: #CA151F;
border-radius: 50%;
}
.home {
&-add {
pointer-events: none;
width: 100%;
height: calc(100vh - env(safe-area-inset-bottom) - 50px);
position: fixed;
left: 0;
top: 0;
z-index: 99;
.movableView {
pointer-events: auto;
width: 112rpx;
height: 112rpx;
image {
width: 100%;
height: 100%;
}
}
}
&-navbar {
image {
width: 45rpx;
height: 45rpx;
margin-left: 38rpx;
}
}
&-filter {
width: 100%;
background-color: #efefef;
display: flex;
align-items: center;
.item {
line-height: 85rpx;
width: 20%;
text-align: center;
color: #241b17;
font-size: 30rpx;
&-on {
background-color: #009944;
color: #ffffff;
}
}
}
&-search {
width: 100%;
// background-color: #efefef;
// padding: 15rpx 40rpx;
// border: 1px solid #cacaca;
box-sizing: border-box;
.box {
position: absolute;
top: 162rpx;
left: 35rpx;
display: flex;
align-items: center;
height: 85rpx;
width: 90%;
box-sizing: border-box;
padding: 0 25rpx;
text-align: center;
background-color: #fff;
border-radius: 35rpx;
.search {
width: 40rpx;
height: 40rpx;
}
input {
flex: 1;
color: #241b17;
font-size: 30rpx;
text-align: left;
margin-left: 25rpx;
}
.arrow {
width: 19rpx;
height: 33rpx;
}
}
}
&-list {
overflow: hidden;
padding: 0 0 40rpx;
display: flex;
flex-wrap: wrap;
.item {
width: 134rpx;
margin-top: 40rpx;
overflow: hidden;
margin-left: 40rpx;
.box {
width: 134rpx;
height: 134rpx;
background: url(@/static/icon-home-01.png) center top no-repeat;
background-size: 100% auto;
position: relative;
box-shadow: 0 8rpx 15rpx #999;
border-radius: 0 0 18rpx 18rpx;
overflow: hidden;
.title {
text-align: center;
font-size: 22rpx;
line-height: 50rpx;
color: #040909;
}
.desc {
margin-top: 12rpx;
text-align: center;
font-size: 22rpx;
line-height: 50rpx;
color: #040909;
}
image {
width: 124rpx;
height: 10rpx;
background: url(@/static/icon-home-01.png) center top no-repeat;
background-size: 100% auto;
position: absolute;
left: 50%;
margin-left: -62rpx;
bottom: 0;
z-index: 2;
}
}
.sort {
text-align: center;
padding: 10rpx 0 0;
font-size: 27rpx;
color: #040909;
}
}
}
}
</style>

@ -0,0 +1,22 @@
<template>
<view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>

@ -0,0 +1,210 @@
<template>
<view class="add">
111
</view>
</template>
<script>
export default {
data() {
return {
tabIndex: 1,
cagetypeList: [],
cagetypeIndex: -1,
strainsList: [],
strainsIndex: -1,
groupList: [],
groupIndex: -1,
userList: [],
userIndex: -1,
info: {},
};
},
onReady() {
},
methods: {
bindDateChange(e){
this.cagetypeIndex = e.detail.value
this.info.type = e.detail.value
},
bindDateChange1(e){
this.strainsIndex = e.detail.value
this.info.strains = this.strainsList[e.detail.value].title
},
bindDateChange2(e){
this.groupIndex = e.detail.value
this.info.group = this.groupList[e.detail.value].title
},
bindDateChange3(e){
this.userIndex = e.detail.value
this.info.user_id = this.userList[e.detail.value].id
},
openPage() {
uni.switchTab({
url: "/pages/index/index"
})
},
tabItem(e){
this.tabIndex = e;
},
async get_api_cage_getCagetype() {
const { errorcode, data } = await this.$api.api_cage_getCagetype({});
if(errorcode == 200){
this.cagetypeList = data;
}
},
async get_api_basicinfo_strains() {
const { errorcode, data } = await this.$api.api_basicinfo_strains({});
if(errorcode == 200){
this.strainsList = data;
}
},
async get_api_basicinfo_group() {
const { errorcode, data } = await this.$api.api_basicinfo_group({});
if(errorcode == 200){
this.groupList = data;
}
},
async get_api_cage_getUser() {
const { errorcode, data } = await this.$api.api_cage_getUser({uid: uni.getStorageSync("userInfo").uid});
if(errorcode == 200){
this.userList = data;
}
},
}
}
</script>
<style lang="scss" scoped>
.add{
padding-bottom: calc(env(safe-area-inset-bottom)+140rpx);
overflow: hidden;
&-bd{
padding: 0 35rpx;
overflow: hidden;
.item{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.l{
width: 150rpx;
font-size: 28rpx;
color: #000;
}
.r{
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
.li{
width: 60rpx;
height: 60rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 12rpx;
.y{
width: 50rpx;
height: 50rpx;
border-radius: 50%;
}
&:nth-child(1){
.y{
background-color: #8fc31f;
}
}
&:nth-child(2){
.y{
background-color: #ea5514;
}
}
&:nth-child(3){
.y{
background-color: #e4007f;
}
}
&:nth-child(4){
.y{
background-color: #00913a;
}
}
&:nth-child(5){
.y{
background-color: #c9a063;
}
}
&:nth-child(6){
.y{
background-color: #727171;
}
}
&-1{
border: 1px solid #8fc31f;
}
&-2{
border: 1px solid #ea5514;
}
&-3{
border: 1px solid #e4007f;
}
&-4{
border: 1px solid #00913a;
}
&-5{
border: 1px solid #c9a063;
}
&-6{
border: 1px solid #727171;
}
}
input,picker{
flex: 1;
font-size: 28rpx;
color: #000;
height: 50rpx;
line-height: 50rpx;
text-align: right;
}
.arrow{
width: 32rpx;
height: 19rpx;
margin-left: 20rpx;
vertical-align: middle;
}
.date{
width: 45rpx;
height: 45rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
position: fixed;
left: 0;
bottom: 0;
z-index: 22;
padding-bottom: calc(env(safe-area-inset-bottom));
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,408 @@
<template>
<view class="add">
<view class="add-bd">
<view class="item" v-if="info.id">
<view class="l">编号</view>
<view class="r">
<input type="text" v-model="info.number" />
</view>
</view>
<view class="item" v-if="type == 3 || type == 4">
<view class="l">数量</view>
<view class="r">
<input type="number" v-model="info.count" />
</view>
</view>
<view class="item" v-else>
<view class="l">性别</view>
<view class="r">
<picker mode="selector" :range="sexList" :value="sexIndex" @change="bindDateChange">
{{sexIndex>= 0?sexList[sexIndex]:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">生日</view>
<view class="r">
<picker mode="date" :value="info.birthday" :end="endDate" @change="bindDateChange1">
{{info.birthday?info.birthday:""}}
<image class="date" src="@/static/rili@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">父亲</view>
<view class="r">
<picker mode="selector" :range="fatherList" :value="fatherIndex" @change="bindDateChange4" range-key="number">
{{fatherIndex >=0 ? fatherList[fatherIndex].number:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">母亲</view>
<view class="r">
<picker mode="selector" :range="motherList" :value="motherIndex" @change="bindDateChange5" range-key="number">
{{motherIndex >=0 ? motherList[motherIndex].number:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">品系</view>
<view class="r">
<picker mode="selector" :range="strainsList" :value="strainsIndex" @change="bindDateChange2" range-key="title">
{{strainsIndex >= 0?strainsList[strainsIndex].title:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">基因</view>
<view class="r">
<picker mode="selector" :range="geneList" :value="geneIndex" @change="bindDateChange3" range-key="title">
{{geneIndex >=0 ? geneList[geneIndex].title:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item" v-if="type == 1 || type == 2">
<view class="l">毛色</view>
<view class="r">
<input type="text" v-model="info.hair_color" />
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</view>
</view>
<view class="item">
<view class="l">备注</view>
<view class="r">
<input type="text" v-model="info.remark" />
</view>
</view>
</view>
<view class="add-fd">
<view class="btn" @click="toCreate">完成</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
type: 4,
endDate: new Date().getFullYear()+"-"+((new Date().getMonth()+1)>10?new Date().getMonth()+1:"0"+(new Date().getMonth()+1))+"-"+((new Date().getDate())>10?new Date().getDate():"0"+(new Date().getDate())),
sexIndex: -1,
sexList: ['公','母'],
strainsList: [],
strainsIndex: -1,
geneList: [],
geneIndex: -1,
fatherList: [],
fatherIndex: -1,
motherList: [],
motherIndex: -1,
info: {},
id: "",
cid: "",
};
},
onLoad(o) {
this.cid = o.cid;
this.type = o.type;
this.id = o.id;
uni.setNavigationBarTitle({
title: o.type == 1?"新增小鼠":o.type == 2?"编辑小鼠":o.type == 3?"添加新生小鼠":"编辑新生小鼠"
})
if(this.cid){
this.get_api_squirrel_detail();
}
this.get_api_basicinfo_gene();
this.get_api_basicinfo_strains();
this.get_api_squirrel_getparents();
},
methods: {
async toCreate() {
if(this.type == 1 || this.type == 2){
if(this.sexIndex == -1){
uni.showToast({
title: "请选择性别",
icon: "none"
})
return ;
}
}else{
if(!this.info.count){
uni.showToast({
title: "数量不能为空",
icon: "none"
})
return ;
}
}
if(!this.info.birthday){
uni.showToast({
title: "请选择生日",
icon: "none"
})
return ;
}
if(this.fatherIndex == -1){
uni.showToast({
title: "请选择父亲",
icon: "none"
})
return ;
}
if(this.motherIndex == -1){
uni.showToast({
title: "请选择母亲",
icon: "none"
})
return ;
}
if(this.strainsIndex == -1){
uni.showToast({
title: "请选择品系",
icon: "none"
})
return ;
}
if(this.geneIndex == -1){
uni.showToast({
title: "请选择基因",
icon: "none"
})
return ;
}
if(this.type != 3){
if(!this.info.hair_color){
uni.showToast({
title: "请输入毛色",
icon: "none"
})
return ;
}
}
const { errorcode, message } = this.type == 1? await this.$api.api_squirrel_add({
sex: this.info.sex,
birthday: this.info.birthday,
strains_id: this.info.strains_id,
father: this.info.father,
mother: this.info.mother,
gene: this.info.gene,
hair_color: this.info.hair_color,
cage: this.id,
remark: this.info.remark?this.info.remark:'',
type: this.type,
uid: uni.getStorageSync("userInfo").uid,
}): this.type == 2? await this.$api.api_squirrel_edit({
id: this.info.id,
sex: this.info.sex,
birthday: this.info.birthday,
strains_id: this.info.strains_id,
father: this.info.father,
mother: this.info.mother,
gene: this.info.gene,
hair_color: this.info.hair_color,
cage: this.id,
remark: this.info.remark?this.info.remark:'',
uid: uni.getStorageSync("userInfo").uid,
}): await this.$api.api_squirrel_addNewSquirrel({
count: this.info.count,
birthday: this.info.birthday,
strains: this.info.strains_id,
father: this.info.father,
mother: this.info.mother,
gene: this.info.gene,
cage: this.id,
remark: this.info.remark?this.info.remark:'',
uid: uni.getStorageSync("userInfo").uid,
})
if( errorcode == 200 ){
uni.showToast({
title: this.type == 1?"新增成功":'修改成功'
})
setTimeout(()=>{
uni.navigateBack({
delta: 1
})
},2000)
}else{
uni.showToast({
icon: "none",
title: message
})
}
},
async get_api_squirrel_detail() {
const { errorcode, data } = await this.$api.api_squirrel_detail({id: this.cid});
if(errorcode == 200){
this.info = data
this.info.strains_id = data.strains
this.sexIndex = data.sex
this.info.sex = data.sex == 0?"公":"母"
}
},
async get_api_squirrel_getparents() {
const { errorcode, data } = await this.$api.api_squirrel_getparents({sex: ""});
if(errorcode == 200){
if(data && data.length> 0){
this.fatherList = data.filter(a=>a.sex == 1)
this.motherList = data.filter(a=>a.sex == 2)
if(this.type == 0){
let fatherIndex = 0, motherIndex = 0, father = this.info.father, mother = this.info.mother;
if(this.fatherList && this.fatherList.length >0){
this.fatherList.map((a,idx)=>{
if(a.number == father){
fatherIndex = idx
}
})
}
if(this.motherList && this.motherList.length >0){
this.motherList.map((a,idx)=>{
if(a.number == mother){
motherIndex = idx
}
})
}
this.fatherIndex= fatherIndex;
this.motherIndex = motherIndex
}
}
}
},
async get_api_basicinfo_strains() {
const { errorcode, data } = await this.$api.api_basicinfo_strains({});
if(errorcode == 200){
this.strainsList = data;
if(this.type == 0){
let strainsIndex = 0,strains = this.info.strains;
if(this.strainsList && this.strainsList.length >0){
this.strainsList.map((a,idx)=>{
if(a.title == strains){
strainsIndex = idx
}
})
this.strainsIndex = strainsIndex
}
}
}
},
async get_api_basicinfo_gene() {
const { errorcode, data } = await this.$api.api_basicinfo_gene({});
if(errorcode == 200){
this.geneList = data;
if(this.type == 0){
let geneIndex = 0,gene = this.info.gene;
if(this.geneList && this.geneList.length >0){
this.geneList.map((a,idx)=>{
if(a.title == gene){
geneIndex = idx
}
})
this.geneIndex = geneIndex
}
}
}
},
bindDateChange(e){
this.sexIndex = e.detail.value;
this.info.sex = Number(e.detail.value)+1
},
bindDateChange1(e){
this.info.birthday = e.detail.value
this.$forceUpdate();
},
bindDateChange2(e){
this.strainsIndex = e.detail.value
this.info.strains_id = this.strainsList[e.detail.value].title
},
bindDateChange3(e){
this.geneIndex = e.detail.value
this.info.gene = this.geneList[e.detail.value].title
},
bindDateChange4(e){
this.fatherIndex = e.detail.value
this.info.father = this.fatherList[e.detail.value].number
},
bindDateChange5(e){
this.motherIndex = e.detail.value
this.info.mother = this.motherList[e.detail.value].number
},
}
}
</script>
<style lang="scss" scoped>
.add{
padding-bottom: calc(env(safe-area-inset-bottom)+140rpx);
overflow: hidden;
&-bd{
padding: 0 35rpx;
overflow: hidden;
.item{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.l{
width: 100rpx;
font-size: 28rpx;
color: #000;
}
.r{
flex: 1;
display: flex;
align-items: center;
input,picker{
flex: 1;
font-size: 28rpx;
color: #000;
height: 50rpx;
line-height: 50rpx;
text-align: right;
}
.arrow{
width: 32rpx;
height: 19rpx;
margin-left: 20rpx;
vertical-align: middle;
}
.date{
width: 45rpx;
height: 45rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
position: fixed;
left: 0;
bottom: 0;
z-index: 22;
padding-bottom: constant(safe-area-inset-bottom); /* 兼容 iOS < 11.2 */
padding-bottom: env(safe-area-inset-bottom); /* 兼容 iOS >= 11.2 */
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,378 @@
<template>
<view class="oppo-box">
<image style="width: 100%; height: 247rpx;" src="@/static/bg (2).png"></image>
<view class="custom-navigation-bar">
<view class="left-button" @click="handleBack">
<uni-icons type="left" color="#fff" size="30"></uni-icons>
</view>
<view class="title">
{{ title }}
</view>
</view>
<view class="martop">
<uni-row>
<uni-col :span="12" :offset="1">
<text class="dangqian"> 当前运动员李大辉</text>
</uni-col>
<uni-col :span="8" :offset="2">
<button class="yd">切换运动员 <image src="../../../static/切换.png" mode=""
style="width:22rpx;height: 20rpx;margin-left: 10rpx;"></image> </button>
</uni-col>
</uni-row>
</view>
<view class="top1">
<uni-row>
<image src="../../../static/bg (1).png" mode="" class="image1"></image>
</uni-row>
<uni-row>
<uni-col :span="18" :offset="1">
报名截止日期2024-03-22 23:23:21
</uni-col>
<uni-col :span="5">
<text class="bm">报名中</text>
</uni-col>
</uni-row>
</view>
<view class="top2">
<view class="uni-padding-wrap uni-common-mt">
<uni-segmented-control :current="current" :values="items" :style-type="styleType"
:active-color="activeColor" @clickItem="onClickItem" />
</view>
<view class="border"></view>
<view class="content">
<view v-if="current === 0">
<uni-row>
<uni-col :span="12">
<text class="xqt">炽热公开赛炽热公开赛</text>
</uni-col>
<uni-col :span="3" :offset="7"><text style="color: red;"> 导航</text></uni-col>
<uni-col :span="2">
<image src="../../../static/dingwei.png" mode="" style="width: 40rpx;height: 40rpx;">
</image>
</uni-col>
</uni-row>
<uni-row>
<uni-col :span="2">
<image src="../../../static/dingwei.png" mode="" style="width: 40rpx;height: 40rpx;">
</image>
</uni-col>
<uni-col :span="22">
<text class="textleft">比赛时间</text><text class="textr">2024年04月06日</text>
</uni-col>
</uni-row>
<uni-row>
<uni-col :span="2">
<image src="../../../static/dingwei.png" mode="" style="width: 40rpx;height: 40rpx;">
</image>
</uni-col>
<uni-col :span="22">
<text class="textleft">比赛地址</text><text class="textr">某某某奥体中心</text>
</uni-col>
</uni-row>
<uni-row>
<uni-col :span="2">
<image src="../../../static/dingwei.png" mode="" style="width: 40rpx;height: 40rpx;">
</image>
</uni-col>
<uni-col :span="22">
<text class="textleft">比赛项目</text><text class="textr">60 160 260</text>
</uni-col>
</uni-row>
</view>
<view v-if="current === 1"><text class="content-text">选项卡2的内容</text></view>
<view v-if="current === 2"><text class="content-text">选项卡3的内容</text></view>
</view>
</view>
<uni-row>
<image src="../../../static/bg (1).png" mode="" class="image12"></image>
</uni-row>
<!-- ************** -->
<view class="top3">
<view class="uni-padding-wrap uni-common-mt">
<uni-segmented-control :current="current1" :values="items1" :style-type="styleType"
:active-color="activeColor" @clickItem="onClickItem" />
</view>
<view class="border"></view>
<view class="content">
<view v-if="current === 0">
<uni-row v-for="(item,index) in 5">
<uni-col :span="8">
<view class="leftcolor"></view> 公开男子
</uni-col>
<uni-col :span="12" :offset="4">
2019-01-01日后出生者
</uni-col>
</uni-row>
</view>
<view v-if="current === 1"><text class="content-text">选项卡2的内容</text></view>
<view v-if="current === 2"><text class="content-text">选项卡3的内容</text></view>
</view>
</view>
<!-- ************ -->
<view class="goods-carts">
<uni-goods-nav :options="options" :fill="true" :button-group="buttonGroup" @click="onClick"
@buttonClick="buttonClick" />
</view>
</view>
</template>
<script>
export default {
data() {
return {
options: [{
icon: 'home',
text: '首页'
}, {
icon: 'redo',
text: '分享',
// info: 2,
infoBackgroundColor: '#007aff',
infoColor: "#f5f5f5"
}, {
icon: 'chat',
text: '客服',
// info: 2
}],
buttonGroup: [{
text: '我要报名',
backgroundColor: '#CA151F',
color: '#fff'
},
],
title: '赛事详情',
items: ['详情', '俱乐部', '赛程', '成绩', '排行'],
items1: ['111', '222', '333', '444', '555', '666', '777'],
styles: [{
value: 'button',
text: '按钮',
checked: true
},
{
value: 'text',
text: '文字'
}
],
colors: ['#007aff', '#4cd964', '#dd524d'],
current: 0,
current1: 0,
colorIndex: 0,
activeColor: '#aa0000',
styleType: 'text'
}
},
methods: {
onClickItem(e) {
if (this.current !== e.currentIndex) {
this.current = e.currentIndex
}
},
detail() {
uni.navigateTo({
url: "/pages/user/notice/detail/detail"
})
},
handleBack() {
uni.navigateBack({
delta: 2
})
// console.log(1344444);
// uni.switchTab({
// url: "/pages/user/index"
// })
},
toPage() {
console.log(1111232)
uni.navigateTo({
url: "/pages/user/index"
})
},
}
}
</script>
<style lang="scss" scoped>
.goods-carts{
margin-top: 20rpx;
}
.leftcolor {
display: inline-block;
width: 12rpx;
height: 28rpx;
background: #0065B2;
border-radius: 6rpx;
margin-right: 20rpx;
}
.rowb {
border-bottom: 1px solid #EAEAEA
}
.image12 {
width: 750rpx;
height: 344rpx;
margin-top: 25rpx;
}
.textr {
font-family: PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #333333;
}
.textleft {
font-family: PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #999999;
}
.xqt {
font-family: PingFang SC;
font-weight: 500;
font-size: 34rpx;
color: #333333;
line-height: 60rpx;
}
.content {
padding: 20rpx;
// margin-bottom: 120rpx;
}
.border {
border-bottom: 1px solid #E5E5E5;
}
.border1 {
border-bottom: 1px solid red;
}
.top3 {
width: 750rpx;
background: #FFFFFF;
border-radius: 20rpx;
margin-top: 25rpx;
line-height: 50rpx;
}
.top2 {
width: 750rpx;
height: 358rpx;
background: #FFFFFF;
border-radius: 20rpx;
margin-top: 25rpx;
}
.bm {
padding: 10rpx;
background: #FF8D2C;
border-radius: 10rpx;
}
.image1 {
margin: 25rpx;
width: 702rpx;
height: 390rpx;
background: #D7DCE2;
border-radius: 20rpx;
}
.top1 {
margin-top: 20rpx;
width: 750rpx;
height: 564rpx;
background: #FFFFFF;
border-radius: 0rpx 0rpx 20rpx 20rpx;
}
.martop {
margin-top: 20px;
}
.yd {
height: 46rpx;
background: #CA151F;
border-radius: 10rpx;
line-height: 46rpx;
color: #FFFFFF;
}
.dangqian {
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #CA151F;
}
.oppo-box {
width: 100vw !important;
height: 100vh !important;
overflow-x: hidden !important;
overflow-y: auto !important;
}
.text-color {
color: #CA151F;
}
.btntext {
font-family: PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #CA151F;
line-height: 40rpx;
}
.shijiantext {
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #AAAAAA;
line-height: 60rpx;
}
.toptext {
font-family: PingFang SC;
font-weight: bold;
font-size: 30rpx;
color: #333333;
line-height: 40rpx;
}
.paddingrow {
padding: 20rpx;
}
.boxcon {
width: 702rpx;
height: 158rpx;
background: #FFFFFF;
border-radius: 20rpx;
}
.custom-navigation-bar {
display: flex;
align-items: center;
justify-content: space-between;
height: 220rpx;
/* #ifdef MP-WEIXIN */
margin-top: -230rpx;
/* #endif */
}
.left-button,
.right-button {
padding: 0 12px;
}
.title {
flex: 1;
// text-align: center;
color: #fff;
font-size: 18px;
font-weight: bold;
}
</style>

@ -0,0 +1,329 @@
<template>
<view class="add">
<view class="add-bd">
<view class="item">
<view class="l">笼位类型</view>
<view class="r">
<picker mode="selector" :range="cagetypeList" :value="cagetypeIndex" @change="bindDateChange" range-key="title">
{{cagetypeIndex >= 0?cagetypeList[cagetypeIndex].title:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">笼位号</view>
<view class="r">
<input type="text" disabled v-model="num" />
</view>
</view>
<view class="item">
<view class="l">品系</view>
<view class="r">
<picker mode="selector" :range="strainsList" :value="strainsIndex" @change="bindDateChange1" range-key="title">
{{strainsIndex >= 0?strainsList[strainsIndex].title:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">笼位颜色</view>
<view class="r">
<view class="li" v-for="index in 6" :class="tabIndex == (index)?'li-'+(index):''"
@click="tabItem(index)"><view class="y"></view></view>
</view>
</view>
<view class="item">
<view class="l">实验室</view>
<view class="r">
<picker mode="selector" :range="groupList" :value="groupIndex" @change="bindDateChange2" range-key="title">
{{groupIndex>= 0?groupList[groupIndex].title:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">负责人</view>
<view class="r">
<picker mode="selector" :range="userList" :value="userIndex" @change="bindDateChange3" range-key="realname">
{{userIndex >= 0 ?userList[userIndex].realname:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
</view>
<view class="add-fd">
<view class="btn" @click="toCreate">完成并生成二维</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
tabIndex: 1,
cagetypeList: [],
cagetypeIndex: -1,
strainsList: [],
strainsIndex: -1,
groupList: [],
groupIndex: -1,
userList: [],
userIndex: -1,
info: {},
num: 0,
};
},
onLoad(o) {
this.get_api_cage_list();
this.get_api_cage_getUser();
this.get_api_basicinfo_group();
this.get_api_basicinfo_strains();
this.get_api_cage_getCagetype();
},
methods: {
bindDateChange(e){
this.cagetypeIndex = e.detail.value
this.info.type = Number(e.detail.value)+1
},
bindDateChange1(e){
this.strainsIndex = e.detail.value
this.info.strains = this.strainsList[e.detail.value].title
},
bindDateChange2(e){
this.groupIndex = e.detail.value
this.info.group = this.groupList[e.detail.value].title
},
bindDateChange3(e){
this.userIndex = e.detail.value
this.info.user_id = this.userList[e.detail.value].id
},
async toCreate() {
if(this.cagetypeIndex == -1){
uni.showToast({
title: "请选择笼位类型",
icon: "none"
})
return ;
}
if(this.strainsIndex == -1){
uni.showToast({
title: "请选择品系",
icon: "none"
})
return ;
}
if(this.groupIndex == -1){
uni.showToast({
title: "请选择实验室",
icon: "none"
})
return ;
}
if(this.userIndex == -1){
uni.showToast({
title: "请选择负责人",
icon: "none"
})
return ;
}
const { errorcode, message } = await this.$api.api_cage_add({
type: this.info.type,
user_id: this.info.user_id,
strains: this.info.strains,
color: this.info.color?this.info.color:'#8fc31f',
group: this.info.group,
uid: uni.getStorageSync("userInfo").uid,
})
if( errorcode == 200 ){
uni.showToast({
title: "添加成功"
})
setTimeout(()=>{
uni.switchTab({
url: "/pages/index/index"
})
},2000)
}else{
uni.showToast({
icon: "none",
title: message
})
}
},
tabItem(i){
this.tabIndex = i;
this.info.color = (i==1?'#8fc31f':i==2?'#ea5514':i==3?'#e4007f':i==4?'#00913a':i==5?'#c9a063':'#727171')
},
async get_api_cage_list() {
const { errorcode, data, message } = await this.$api.api_cage_list({
uid: uni.getStorageSync("userInfo").uid,
order: "",
keyword: "",
page: 1
})
if(errorcode == 200){
this.num = data.count+1;
}
},
async get_api_cage_getCagetype() {
const { errorcode, data } = await this.$api.api_cage_getCagetype({});
if(errorcode == 200){
this.cagetypeList = data;
}
},
async get_api_basicinfo_strains() {
const { errorcode, data } = await this.$api.api_basicinfo_strains({});
if(errorcode == 200){
this.strainsList = data;
}
},
async get_api_basicinfo_group() {
const { errorcode, data } = await this.$api.api_basicinfo_group({});
if(errorcode == 200){
this.groupList = data;
}
},
async get_api_cage_getUser() {
const { errorcode, data } = await this.$api.api_cage_getUser({uid: uni.getStorageSync("userInfo").uid});
if(errorcode == 200){
this.userList = data;
}
},
}
}
</script>
<style lang="scss" scoped>
.add{
padding-bottom: calc(env(safe-area-inset-bottom)+140rpx);
overflow: hidden;
&-bd{
padding: 0 35rpx;
overflow: hidden;
.item{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.l{
width: 150rpx;
font-size: 28rpx;
color: #000;
}
.r{
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
.li{
width: 60rpx;
height: 60rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 12rpx;
.y{
width: 50rpx;
height: 50rpx;
border-radius: 50%;
}
&:nth-child(1){
.y{
background-color: #8fc31f;
}
}
&:nth-child(2){
.y{
background-color: #ea5514;
}
}
&:nth-child(3){
.y{
background-color: #e4007f;
}
}
&:nth-child(4){
.y{
background-color: #00913a;
}
}
&:nth-child(5){
.y{
background-color: #c9a063;
}
}
&:nth-child(6){
.y{
background-color: #727171;
}
}
&-1{
border: 1px solid #8fc31f;
}
&-2{
border: 1px solid #ea5514;
}
&-3{
border: 1px solid #e4007f;
}
&-4{
border: 1px solid #00913a;
}
&-5{
border: 1px solid #c9a063;
}
&-6{
border: 1px solid #727171;
}
}
input,picker{
flex: 1;
font-size: 28rpx;
color: #000;
height: 50rpx;
line-height: 50rpx;
text-align: right;
}
.arrow{
width: 32rpx;
height: 19rpx;
margin-left: 20rpx;
vertical-align: middle;
}
.date{
width: 45rpx;
height: 45rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
position: fixed;
left: 0;
bottom: 0;
z-index: 22;
padding-bottom: calc(env(safe-area-inset-bottom));
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,124 @@
<template>
<view class="oppo-box">
<image style="width: 100%; height: 247rpx;" src="@/static/bg (2).png"></image>
<view class="custom-navigation-bar">
<view class="left-button" @click="handleBack">
<uni-icons type="left" color="#fff" size="30"></uni-icons>
</view>
<view class="title">
{{ title }}
</view>
</view>
<view class="boxcon" v-for="(item,index) in 10" style="margin: 20rpx;padding: 20rpx;" >
<!-- <uni-list-chat title="炽能体育公开赛 邯郸站 炽能体育公开赛 邯郸..." clickable @click="detail()" avatar="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png"
note="2020-02-02 20:20" :time="index==1?'取消提醒':index>2?'查看回放':'开播提醒'"></uni-list-chat> -->
<uni-row class="paddingrow">
<uni-col :span="6">
<image style="width: 180rpx; height:130rpx;" src="@/static/bg (2).png"></image>
</uni-col>
<uni-col :span="12" :offset="1">
<uni-row class="toptext">炽能体育公开赛 邯郸站 炽能体育公开赛 邯郸...</uni-row>
<uni-row class="shijiantext">2024-04-13 08:22:20</uni-row>
</uni-col>
<uni-col class="btntext" :span="4" :offset="1">
<text class="text-color">开播提醒</text>
</uni-col>
</uni-row>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: '比赛回放'
}
},
methods: {
detail(){
uni.navigateTo({
url: "/pages/user/notice/detail/detail"
})
},
handleBack() {
uni.navigateBack({ delta: 2 })
// console.log(1344444);
// uni.switchTab({
// url: "/pages/user/index"
// })
},
toPage() {
console.log(1111232)
uni.navigateTo({
url: "/pages/user/index"
})
},
}
}
</script>
<style lang="scss" scoped>
.oppo-box {
width: 100vw !important;
height: 100vh !important;
overflow-x: hidden !important;
overflow-y: auto !important;
}
.text-color{
color: #CA151F;
}
.btntext{
font-family: PingFang SC;
font-weight: 500;
font-size: 26rpx;
color: #CA151F;
line-height: 40rpx;
}
.shijiantext{
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #AAAAAA;
line-height: 60rpx;
}
.toptext{
font-family: PingFang SC;
font-weight: bold;
font-size: 30rpx;
color: #333333;
line-height: 40rpx;
}
.paddingrow{
padding: 20rpx;
}
.boxcon{
width: 702rpx;
height: 158rpx;
background: #FFFFFF;
border-radius: 20rpx;
}
.custom-navigation-bar {
display: flex;
align-items: center;
justify-content: space-between;
height:220rpx;
/* #ifdef MP-WEIXIN */
margin-top: -230rpx;
/* #endif */
}
.left-button,
.right-button {
padding: 0 12px;
}
.title {
flex: 1;
// text-align: center;
color: #fff;
font-size: 18px;
font-weight: bold;
}
</style>

@ -0,0 +1,555 @@
<template>
<view class="oppo-box">
<image style="width: 100%;" src="@/static/bg (1).png"></image>
<view class="top">
弹射者|震东风华田径巡回赛
</view>
<view class="top1">
弹射者|震东风华田径巡回赛
</view>
<view class="content">
<view class="contenttext">
<image class="imgw" src="@/static/规程 (1).png"></image>
<view style="margin-top: -80upx;margin-left: 100upx;font-size: 30upx;">规程</view>
</view>
<view class="contenttext">
<image class="imgw" src="@/static/俱乐部.png"></image>
<view style="margin-top: -80upx;margin-left: 100upx;font-size: 30upx;">俱乐部</view>
</view>
<view class="contenttext">
<image class="imgw" src="@/static/消息.png"></image>
<view style="margin-top: -80upx;margin-left: 100upx;font-size: 30upx;">消息</view>
</view>
</view>
<view class="content1">
<view class="content11">
<view class="l"><image class="imgw12" src="@/static/huifang.png"></image><text style="padding:20upx;" >比赛回放</text> </view>
<view class="r">
<text style="line-height: 65upx;" @click="huifang">查看回放</text><image class="imgw13" src="@/static/jiantouyou@2x.png"></image>
</view>
</view>
<view class="content12">
<image class="imgw14" src="../../static/zhibo1.png" mode=""></image>
<text style="font-size: 28rpx;">炽能体育公开赛 邯郸站视频号 </text>
<view class="kaibo">
开播提醒
</view>
<view class="shijian">今天下午13:07直播</view>
</view>
<view class="content12">
<image class="imgw14" src="../../static/zhibo1.png" mode=""></image>
<text style="font-size: 28rpx;">炽能体育公开赛 邯郸站视频号 </text>
<view class="zhibo">
直播中
</view>
<view class="shijian">正在直播</view>
</view>
</view>
<view class="content3" style="margin-top: 20upx;" v-for="(item,idex) in 4" @click="competition">
<view class="content31">
<image class="img31" src="../../static/bg (1).png" mode=""></image>
</view>
<view class="content32" style="margin-top: 20upx;margin-right: 20upx;" >
<text>炽能体育公开赛 邯郸站炽能体 育公开赛 邯郸站</text>
<view class="text31">
比赛日期2024年04月13日
</view>
<view class="text31">
截止日期2024-04-03 23:59:59
</view>
<view class="icon32" style="margin-top: 20upx;margin-right: 20upx;">
<view class="text32">
报名中
</view>
<image class="img32" src="../../static/dingwei.png" mode=""></image>
</view>
</view>
</view>
<view class="content4">
<view class="text4">炽能体育 巡回赛</view>
<view class="contenttext">
<image class="imgw4" src="@/static/规程 (1).png"></image>
<view style="margin-top: -60upx;margin-left: 80upx;font-size: 30upx;">视频号</view>
</view>
<view class="contenttext">
<image class="imgw4" src="@/static/规程 (1).png"></image>
<view style="margin-top: -60upx;margin-left: 80upx;font-size: 30upx;">公众号</view>
</view>
<view class="contenttext">
<image class="imgw4" src="@/static/规程 (1).png"></image>
<view style="margin-top: -60upx;margin-left: 80upx;font-size: 30upx;">客服</view>
</view>
</view>
</view>
</template>
<script>
const systemInfo = uni.getSystemInfoSync();
export default {
data() {
return {
addWidth: systemInfo.screenWidth - 70,
addHeight: systemInfo.screenHeight - 150,
keyword: "",
list: [],
tabIndex: 0,
page: 1,
count: 1,
statusBarHeight: 0,
bgColor: '#dcdcdc'
}
},
onLoad() {
this.statusBarHeight = systemInfo.statusBarHeight
},
onShow() {
// this.get_api_cage_list(1);
},
onReachBottom() {
if (this.list.length <= this.count) {
this.page++;
this.get_api_cage_list();
}
},
methods: {
huifang(){
uni.navigateTo({
url: "/pages/index/detail"
})
},
competition(){
uni.navigateTo({
url: "/pages/index/competition/competition"
})
},
async get_api_cage_list(type) {
uni.showLoading({
title: "加载中"
})
if (type == 1) {
this.page = 1;
this.list = [];
this.keyword = ""
}
const {
errorcode,
data,
message
} = await this.$api.api_cage_list({
uid: uni.getStorageSync("userInfo").uid,
order: this.tabIndex == 0 ? 'strains' : this.tabIndex == 1 ? 'id' : this.tabIndex == 2 ?
'gene' : this.tabIndex == 3 ? 'type' : 'created',
keyword: this.keyword,
page: this.page
})
if (errorcode == 200) {
setTimeout(() => {
uni.hideLoading()
this.list = this.arrayUnique([...this.list, ...data.data], 'id');
this.count = data.count
}, 200)
} else {
uni.showToast({
title: message,
icon: "none"
})
}
},
//
arrayUnique(arr, name) {
var hash = {};
return arr.reduce(function(item, next) {
hash[next[name]] ?
"" :
(hash[next[name]] = true && item.push(next));
return item;
}, []);
},
tabItem(i) {
this.tabIndex = i;
this.get_api_cage_list(1);
},
toPage(i, o) {
if (i == 1) {
uni.navigateTo({
url: "/pages/index/detail?id=" + o.id + '&type=' + o.type + '&number=' + o.number
})
} else if (i == 2) {
uni.navigateTo({
url: "/pages/index/create"
})
} else {
uni.scanCode({
success() {
}
})
}
}
}
}
</script>
<style lang="scss" scoped>
.imgw4{
width: 74upx;
height: 74upx;
}
.content4{
margin-top: 20upx;
width: 750rpx;
height: 110rpx;
background: #FFFFFF;
display: flex;
justify-content:center;
.text4{
margin-top: 20upx;
margin-left: 20upx;
width: 183rpx;
height: 59rpx;
font-family: AliHYAiHei;
font-weight: 400;
font-size: 26rpx;
color: #333333;
line-height: 34rpx;
}
}
.content3{
width: 702rpx;
height: 236rpx;
background: #FFFFFF;
border-radius: 20rpx;
margin: 0 auto;
display: flex;
.content31{
.img31{
margin: 30upx;
width: 220rpx;
height: 180rpx;
border-radius: 10rpx;
}
}
}
.icon32{
display: flex;
justify-content:space-between;
}
.text31{
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #AAAAAA;
line-height: 40rpx;
}
.text32{
// width: 100rpx;
// height: 38rpx;
background: #FF8D2B;
border-radius: 5rpx;
}
.img32{
width: 40rpx;
height: 40rpx;
background: #CA151F;
border-radius: 50%;
}
.shijian{
margin-left: 30upx;
width: 207rpx;
height: 23rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #A8ABB3;
line-height: 60rpx;
}
.zhibo{
float: right;
width: 100rpx;
height: 46rpx;
background: #CA151F;
border-radius: 0rpx 10rpx 0rpx 20rpx;
}
.kaibo{
float: right;
width: 140rpx;
height: 46rpx;
background: #FF8D2B;
border-radius: 0rpx 10rpx 0rpx 20rpx;
}
.content1{
margin: 24rpx auto;
width: 702rpx;
height: 366rpx;
background: #FFFFFF;
border-radius: 20rpx;
.content11{
display: flex;
justify-content:space-between;
.imgw12{
width: 32upx;
height: 32upx;
margin-top: 20upx;
margin-left: 26upx;
margin-right: 6upx;
}
.imgw13{
width: 24upx;
height: 24upx;
margin-top: 16upx;
margin-right: 26upx;
}
}
.content12{
margin: 24upx auto;
width: 662rpx;
height: 106rpx;
background: #F9F9F9;
border-radius: 10rpx;
padding: 10upx;
.imgw14{
width: 21upx;
height: 24upx;
}
}
}
.imgw1{
width: 32upx;
height: 32upx;
}
.imgw {
width: 90upx;
height: 90upx;
border: 1px dashed #333333;
}
.contenttext {
width: 33.33%;
height: 100%;
justify-content: center;
margin-top: 20upx;
margin-left: 30upx;
}
.content {
display: flex;
margin: 24rpx auto;
width: 702rpx;
height: 130rpx;
background: #FFFFFF;
border-radius: 20rpx;
}
.top {
position: absolute;
top: 117upx;
left: 25upx;
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #FFFFFF;
}
.top1 {
position: absolute;
top: 304upx;
left: 83upx;
font-family: PingFang SC;
font-weight: 500;
font-size: 50rpx;
color: #FFFFFF;
}
.home {
&-add {
pointer-events: none;
width: 100%;
height: calc(100vh - env(safe-area-inset-bottom) - 50px);
position: fixed;
left: 0;
top: 0;
z-index: 99;
.movableView {
pointer-events: auto;
width: 112rpx;
height: 112rpx;
image {
width: 100%;
height: 100%;
}
}
}
&-navbar {
image {
width: 45rpx;
height: 45rpx;
margin-left: 38rpx;
}
}
&-filter {
width: 100%;
background-color: #efefef;
display: flex;
align-items: center;
.item {
line-height: 85rpx;
width: 20%;
text-align: center;
color: #241b17;
font-size: 30rpx;
&-on {
background-color: #009944;
color: #ffffff;
}
}
}
&-search {
width: 100%;
background-color: #efefef;
padding: 15rpx 40rpx;
border: 1px solid #cacaca;
box-sizing: border-box;
.box {
display: flex;
align-items: center;
height: 85rpx;
width: 100%;
box-sizing: border-box;
padding: 0 25rpx;
text-align: center;
background-color: #ffffff;
border-radius: 10rpx;
.search {
width: 40rpx;
height: 40rpx;
}
input {
flex: 1;
color: #241b17;
font-size: 30rpx;
text-align: left;
margin-left: 25rpx;
}
.arrow {
width: 19rpx;
height: 33rpx;
}
}
}
&-list {
overflow: hidden;
padding: 0 0 40rpx;
display: flex;
flex-wrap: wrap;
.item {
width: 134rpx;
margin-top: 40rpx;
overflow: hidden;
margin-left: 40rpx;
.box {
width: 134rpx;
height: 134rpx;
background: url(@/static/icon-home-01.png) center top no-repeat;
background-size: 100% auto;
position: relative;
box-shadow: 0 8rpx 15rpx #999;
border-radius: 0 0 18rpx 18rpx;
overflow: hidden;
.title {
text-align: center;
font-size: 22rpx;
line-height: 50rpx;
color: #040909;
}
.desc {
margin-top: 12rpx;
text-align: center;
font-size: 22rpx;
line-height: 50rpx;
color: #040909;
}
image {
width: 124rpx;
height: 10rpx;
background: url(@/static/icon-home-01.png) center top no-repeat;
background-size: 100% auto;
position: absolute;
left: 50%;
margin-left: -62rpx;
bottom: 0;
z-index: 2;
}
}
.sort {
text-align: center;
padding: 10rpx 0 0;
font-size: 27rpx;
color: #040909;
}
&-1 {
.box {
background: url(@/static/icon-home-01.png) center top no-repeat;
background-size: 100% auto;
}
}
&-2 {
.box {
background: url(@/static/icon-home-02.png) center top no-repeat;
background-size: 100% auto;
}
}
&-3 {
.box {
background: url(@/static/icon-home-03.png) center top no-repeat;
background-size: 100% auto;
}
}
&-4 {
.box {
background: url(@/static/icon-home-04.png) center top no-repeat;
background-size: 100% auto;
}
}
&-5 {
.box {
background: url(@/static/icon-home-05.png) center top no-repeat;
background-size: 100% auto;
}
}
&-6 {
.box {
background: url(@/static/icon-home-06.png) center top no-repeat;
background-size: 100% auto;
}
}
}
}
}
</style>

@ -0,0 +1,127 @@
<template>
<view class="add">
<view class="add-bd">
<view class="item">
<view class="l">剪尾日期</view>
<view class="m">
<image src="@/static/rili@2x.png"></image>
</view>
<view class="r">
显示标识提醒<view style="margin-left: 20rpx;"><u-switch v-model="value1" activeColor="#036eb8"></u-switch></view>
</view>
</view>
<view class="item">
<view class="l">实验日期</view>
<view class="m">
<image src="@/static/rili@2x.png"></image>
</view>
<view class="r">
显示标识提醒<view style="margin-left: 20rpx;"><u-switch v-model="value1" activeColor="#036eb8"></u-switch></view>
</view>
</view>
<view class="item">
<view class="l">处死日期</view>
<view class="m">
<image src="@/static/rili@2x.png"></image>
</view>
<view class="r">
显示标识提醒<view style="margin-left: 20rpx;"><u-switch v-model="value1" activeColor="#036eb8"></u-switch></view>
</view>
</view>
<view class="item">
<view class="l">删除日期</view>
<view class="m">
<image src="@/static/rili@2x.png"></image>
</view>
<view class="r">
显示标识提醒<view style="margin-left: 20rpx;"><u-switch v-model="value1" activeColor="#036eb8"></u-switch></view>
</view>
</view>
</view>
<view class="add-fd">
<view class="btn">完成</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
value1: true,
info: {},
};
},
methods: {
tabItem(e){
this.tabIndex = e;
},
}
}
</script>
<style lang="scss" scoped>
.add{
padding-bottom: calc(env(safe-area-inset-bottom)+140rpx);
overflow: hidden;
&-bd{
padding: 0 35rpx;
overflow: hidden;
.item{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.l{
width: 150rpx;
font-size: 28rpx;
color: #000;
}
.m{
width: 150rpx;
text-align: center;
image{
width: 45rpx;
height: 45rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
.r{
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
font-size: 28rpx;
color: #000;
switch{
margin-left: 20rpx;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
position: fixed;
left: 0;
bottom: 0;
z-index: 22;
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,210 @@
<template>
<view class="add">
<view class="add-hd">
<view class="a">
<view class="h1">繁殖笼002</view>
<view class="text">实验室张三</view>
<view class="text">负责人李小</view>
</view>
<view class="b">
<image src="@/static/1@2x.png"></image>
</view>
</view>
<view class="add-bd">
<view class="a">
<view class="th">
<view class="item">编号</view>
<view class="item">性别</view>
<view class="item">生日</view>
<view class="item">品系</view>
<view class="item">备注</view>
</view>
<view class="tr">
<view class="item">ABC01</view>
<view class="item"></view>
<view class="item">2023.01.28</view>
<view class="item">ABCDEF</view>
<view class="item"></view>
</view>
<view class="tr">
<view class="item">ABC01</view>
<view class="item"></view>
<view class="item">2023.01.28</view>
<view class="item">ABCDEF</view>
<view class="item">喂药</view>
</view>
</view>
<view class="b">
<view class="th">
<view class="item">数量</view>
<view class="item">性别</view>
<view class="item">父亲</view>
<view class="item">母亲</view>
<view class="item">品系</view>
</view>
<view class="tr">
<view class="item">23</view>
<view class="item">2023.01.28</view>
<view class="item">ABC01</view>
<view class="item">ABC02</view>
<view class="item">ABCDEF</view>
</view>
</view>
</view>
<view class="add-fd">
<view class="btn">打印</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
id: "",
type: 1,
slist: [],
youzailishi: [],
};
},
onLoad(o) {
this.id = o.id
this.type = o.type;
this.get_api_squirrel_list();
},
methods: {
async get_api_squirrel_list() {
const { errorcode, data } = await this.$api.api_squirrel_list({
cage_id: this.id,
type: this.type,
uid: uni.getStorageSync("userInfo").uid
})
if(errorcode == 200){
this.slist = data.slist
this.isShow = data.slist.length == 0?true:false
this.youzailishi = data.youzailishi
}
},
}
}
</script>
<style lang="scss" scoped>
.add{
padding-bottom: calc(env(safe-area-inset-bottom)+140rpx);
overflow: hidden;
&-hd{
padding: 0 35rpx;
overflow: hidden;
display: flex;
align-items: center;
justify-content: space-between;
.a{
flex: 1;
padding: 40rpx 0 20rpx;
.h1{
font-size: 40rpx;
color: #000;
}
.text{
line-height: 50rpx;
font-size: 26rpx;
color: #000;
}
}
.b{
width: 150rpx;
height: 150rpx;
image{
width: 100%;
height: 100%;
}
}
}
&-bd{
padding: 0 35rpx;
overflow: hidden;
.a{
border-top: 1px solid #c0c2c2;
overflow: hidden;
.th{
display: flex;
align-items: center;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.item{
width: 20%;
font-size: 28rpx;
color: #000;
text-align: center;
}
}
.tr{
display: flex;
align-items: center;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
font-size: 28rpx;
color: #000;
border-bottom: 1px solid #c0c2c2;
.item{
width: 20%;
font-size: 28rpx;
color: #000;
text-align: center;
}
}
}
.b{
border-top: 1px solid #c0c2c2;
overflow: hidden;
.th{
display: flex;
align-items: center;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.item{
width: 20%;
font-size: 28rpx;
color: #000;
text-align: center;
}
}
.tr{
display: flex;
align-items: center;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
font-size: 28rpx;
color: #000;
border-bottom: 1px solid #c0c2c2;
.item{
width: 20%;
font-size: 28rpx;
color: #000;
text-align: center;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
position: fixed;
left: 0;
bottom: 0;
z-index: 22;
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,130 @@
<template>
<view class="add">
<view class="add-bd">
<view class="item">
<view class="l">请输入账号</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">输入手机号</view>
<view class="r">
<input type="number" v-model="info.father" />
<view class="btn">发送验证码</view>
</view>
</view>
<view class="item">
<view class="l">输入验证码</view>
<view class="r">
<input type="number" v-model="info.father" />
</view>
</view>
</view>
<view class="add-fd">
<view class="btn" @click="toPage()">完成</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
tabIndex: 1,
rangeIndex: -1,
range: ['公','母'],
range1: ['黄色','蓝色'],
info: {},
};
},
methods: {
tabItem(e){
this.tabIndex = e;
},
toPage() {
uni.navigateTo({
url: "/pages/login/setPass"
})
},
}
}
</script>
<style lang="scss" scoped>
.add{
padding-bottom: calc(env(safe-area-inset-bottom)+140rpx);
overflow: hidden;
&-bd{
padding: 0 35rpx;
overflow: hidden;
.item{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.l{
width: 200rpx;
font-size: 28rpx;
color: #000;
}
.r{
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
.btn{
width: 210rpx;
line-height: 60rpx;
font-size: 30rpx;
color: #000;
margin: 0 auto;
background-color: #f8b62d;
border-radius: 8rpx;
text-align: center;
margin-left: 20rpx;
}
input,picker{
flex: 1;
font-size: 28rpx;
color: #000;
height: 50rpx;
line-height: 50rpx;
text-align: left;
}
.arrow{
width: 32rpx;
height: 19rpx;
margin-left: 20rpx;
vertical-align: middle;
}
.date{
width: 45rpx;
height: 45rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
margin-top: 150rpx;
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,182 @@
<template>
<view class="login">
<image src="@/static/bg (4).png" class="logimg"></image>
<view class="custom-navigation-bar">
<view class="left-button" @click="handleBack">
<uni-icons type="left" color="#fff" size="30"></uni-icons>
</view>
<view class="title">
{{ title }}
</view>
</view>
<view class="logtext">弹射者|震东风华田径巡回赛</view>
<view class="btn" @click="toLogin">点击授权登录</view>
<view class="btn1" @click="toLogin">返回</view>
</view>
</template>
<script>
export default {
data() {
return {
title:'授权登录',
isClick: false,
Username: "",
Password: "",
Type: 1
};
},
onLoad() {
if (uni.getStorageSync("loginInfo")) {
this.isClick = true;
console.log(uni.getStorageSync("loginInfo"))
this.Username = uni.getStorageSync("loginInfo").Username;
this.Password = uni.getStorageSync("loginInfo").Password;
this.Type = uni.getStorageSync("loginInfo").Type;
} else {
this.isClick = false;
}
},
methods: {
handleBack(){},
toToggle() {
this.isClick = !this.isClick;
},
toLogin() {
console.log(1233);
uni.switchTab({
url: "/pages/index/index"
})
// if (!this.Username) {
// uni.showToast({
// title: "",
// icon: "none"
// })
// return;
// }
// if (!this.Password) {
// uni.showToast({
// title: "",
// icon: "none"
// })
// return;
// }
// const {
// errorcode,
// data,
// message
// } = await this.$api.api_login({
// Username: this.Username,
// Password: this.Password,
// Type: this.Type,
// });
// if (errorcode == 200) {
// if (this.isClick) {
// uni.setStorageSync("loginInfo", {
// Username: this.Username,
// Password: this.Password,
// Type: this.Type,
// })
// }
// uni.setStorageSync("userInfo", data)
// uni.showToast({
// title: ""
// })
// setTimeout(() => {
// uni.reLaunch({
// url: "/pages/index/index"
// })
// }, 2000)
// } else {
// uni.showToast({
// title: message,
// icon: "none",
// })
// }
},
openPage(index) {
if (index == 1) {
uni.navigateTo({
url: "/pages/login/register"
})
} else if (index == 2) {
uni.navigateTo({
url: "/pages/login/forget"
})
}
},
tabItem(index) {
this.Type = index
}
}
}
</script>
<style lang="scss" scoped>
.custom-navigation-bar {
display: flex;
align-items: center;
justify-content: space-between;
height: 220rpx;
/* #ifdef MP-WEIXIN */
margin-top: -230rpx;
/* #endif */
position: absolute;
top: 264rpx;
}
.left-button,
.right-button {
padding: 0 12px;
}
.title {
flex: 1;
// text-align: center;
color: #fff;
font-size: 18px;
font-weight: bold;
}
.login {
min-height: 100vh;
background-color: #dcdcdc;
.logimg{
width: 100%;
height: 99vh;
}
.logtext{
position: absolute;
top: 30%;
left: 10%;
font-family: DFZongYiGB Std;
font-weight: normal;
font-size: 48rpx;
color: #FFFFFF;
}
.btn{
text-align: center;
width: 660rpx;
height: 98rpx;
background: #FFFFFF;
border-radius: 49rpx;
position: absolute;
bottom: 20%;
left: 6%;
line-height: 98rpx;
}
.btn1{
text-align: center;
width: 661rpx;
height: 99rpx;
background: rgba(255,255,255,0);
border-radius: 49rpx;
border: 1px solid #FFFFFF;
position: absolute;
bottom: 10%;
left: 6%;
line-height: 98rpx;
color: #fff;
}
}
</style>

@ -0,0 +1,275 @@
<template>
<view class="add">
<view class="add-bd">
<view class="item">
<view class="l">用户名</view>
<view class="r">
<input type="text" v-model="info.username" />
</view>
</view>
<view class="item">
<view class="l">密码</view>
<view class="r">
<input type="password" class="box" placeholder="数字加字母" v-model="info.password" />
</view>
</view>
<view class="item">
<view class="l">再次输入密码</view>
<view class="r">
<input type="password" class="box" v-model="info.tpassword" />
</view>
</view>
<view class="item">
<view class="l">注册人员类型</view>
<view class="r">
<picker mode="selector" :range="range" :value="rangeIndex" @change="bindDateChange">
{{rangeIndex>= 0?range[rangeIndex]:"请选择"}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">真实姓名</view>
<view class="r">
<input type="text" v-model="info.realname" />
</view>
</view>
<view class="item">
<view class="l">院系</view>
<view class="r">
<input type="text" v-model="info.faculties" />
</view>
</view>
<view class="item">
<view class="l">专业</view>
<view class="r">
<input type="text" v-model="info.specialized" />
</view>
</view>
<view class="item">
<view class="l">课题组</view>
<view class="r">
<input type="text" v-model="info.group" />
</view>
</view>
<view class="item">
<view class="l">导师</view>
<view class="r">
<input type="text" v-model="info.teacher" />
</view>
</view>
</view>
<view class="add-fd">
<view class="btn" @click="toReg">注册</view>
</view>
<u-popup :show="show" mode="center" :round="10" :close-on-click-overlay="false" @close="close">
<view class="popup">
<view class="title">注册申请已完成等待管理员确认</view>
<view class="btn" @click="toPage()">确定</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
rangeIndex: -1,
range: ['课题组人员','课题组PI','动物中心管理员'],
info: {}
};
},
methods: {
close() {
this.show = false
},
bindDateChange(e){
this.rangeIndex = e.detail.value;
this.info.type = Number(e.detail.value)+1
},
async toReg() {
if(!this.info.username){
uni.showToast({
title: "用户名不能为空!",
icon: "none"
})
return ;
}
if(!this.info.password){
uni.showToast({
title: "密码不能为空!",
icon: "none"
})
return ;
}
if(!this.info.tpassword){
uni.showToast({
title: "再次密码不能为空!",
icon: "none"
})
return ;
}
if(this.info.password != this.info.tpassword){
uni.showToast({
title: "密码不一致!",
icon: "none"
})
return ;
}
if(this.rangeIndex == -1){
uni.showToast({
title: "请输入注册人员类型",
icon: "none"
})
return ;
}
if(!this.info.faculties){
uni.showToast({
title: "真实姓名不能为空!",
icon: "none"
})
return ;
}
if(!this.info.realname){
uni.showToast({
title: "院系不能为空!",
icon: "none"
})
return ;
}
if(!this.info.specialized){
uni.showToast({
title: "专业不能为空!",
icon: "none"
})
return ;
}
if(!this.info.group){
uni.showToast({
title: "课题组不能为空!",
icon: "none"
})
return ;
}
if(!this.info.teacher){
uni.showToast({
title: "导师不能为空!",
icon: "none"
})
return ;
}
const {errorcode, data, message} = await this.$api.api_login_register(this.info);
if( errorcode == 200 ){
this.show = true
}else{
uni.showToast({
title: message,
icon: "none",
})
}
},
toPage(){
uni.navigateBack({
delta: 1
})
},
}
}
</script>
<style lang="scss" scoped>
.add{
padding-bottom: calc(env(safe-area-inset-bottom)+140rpx);
overflow: hidden;
.popup{
width: 670rpx;
height: 380rpx;
text-align: center;
padding: 110rpx 0 30rpx 0;
box-sizing: border-box;
.title{
font-size: 32rpx;
color: #000;
text-align: center;
}
.btn{
width: 210rpx;
line-height: 90rpx;
font-size: 30rpx;
color: #000;
margin: 0 auto;
background-color: #f8b62d;
border-radius: 8rpx;
margin-top: 80rpx;
}
}
&-bd{
padding: 0 35rpx;
overflow: hidden;
.item{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.l{
font-size: 28rpx;
color: #000;
}
.r{
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
input,picker{
flex: 1;
font-size: 28rpx;
color: #000;
height: 50rpx;
line-height: 50rpx;
text-align: right;
}
.arrow{
width: 32rpx;
height: 19rpx;
margin-left: 20rpx;
vertical-align: middle;
}
.date{
width: 45rpx;
height: 45rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
position: fixed;
left: 0;
bottom: 0;
z-index: 22;
padding-bottom: calc(env(safe-area-inset-bottom));
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,123 @@
<template>
<view class="add">
<view class="add-bd">
<view class="item">
<view class="l">请输入新密码</view>
<view class="r">
<input type="password" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">再次请输入新密码</view>
<view class="r">
<input type="password" v-model="info.father" />
</view>
</view>
</view>
<view class="add-fd">
<view class="btn" @click="toPage">完成</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
tabIndex: 1,
rangeIndex: -1,
range: ['公','母'],
range1: ['黄色','蓝色'],
info: {},
};
},
methods: {
toPage() {
uni.navigateBack({
delta: 2
})
},
tabItem(e){
this.tabIndex = e;
},
}
}
</script>
<style lang="scss" scoped>
.add{
padding-bottom: calc(env(safe-area-inset-bottom)+140rpx);
overflow: hidden;
&-bd{
padding: 0 35rpx;
overflow: hidden;
.item{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.l{
width: 260rpx;
font-size: 28rpx;
color: #000;
}
.r{
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
.btn{
width: 210rpx;
line-height: 60rpx;
font-size: 30rpx;
color: #000;
margin: 0 auto;
background-color: #f8b62d;
border-radius: 8rpx;
text-align: center;
margin-left: 20rpx;
}
input,picker{
flex: 1;
font-size: 28rpx;
color: #000;
height: 50rpx;
line-height: 50rpx;
text-align: left;
}
.arrow{
width: 32rpx;
height: 19rpx;
margin-left: 20rpx;
vertical-align: middle;
}
.date{
width: 45rpx;
height: 45rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
margin-top: 150rpx;
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,190 @@
<template>
<view class="oppo-box">
<view class="top">
记录
</view>
<image style="width: 100%;height: 206rpx;" src="@/static/bg (2).png"></image>
<view class="content" v-for="(item,index) in 2">
<image style="width: 447upx;height: 110rpx;margin-left:123upx;margin-top: -50upx;" src="@/static/彩带.png"></image>
<view class="imgtext">
200
</view>
<view class="imgtext1">
王美美排第58名
</view>
<view class="userimg">
<image class="userimg1" src="@/static/bg (2).png"></image>
<image class="userimg1" style="margin-left: 54upx;margin-top: 25upx;" src="@/static/bg (2).png"></image>
<image class="userimg1" style="margin-left: 54upx;" src="@/static/bg (2).png"></image>
</view>
<view class="textname">
<view class="taexnaem1" style="margin-left: -10upx;">王二</view>
<view class="taexnaem1" style="margin-left: 80upx;margin-top: -70upx;">李大花</view>
<view class="taexnaem1" style="margin-left: 80upx;">张三</view>
</view>
<view class="textchengji">
<view class="taexnaem1" style="margin-left: upx;">6.79</view>
<view class="taexnaem1" style="margin-left: 80upx;margin-top: -40upx;">6.78</view>
<view class="taexnaem1" style="margin-left: 80upx;">6.81</view>
</view>
<view class="textshijian">
<view class="taexnaem1" style="margin-left: upx;">2023-04-30</view>
<view class="taexnaem1" style="margin-left: 80upx;margin-top: -40upx;">2023-04-30</view>
<view class="taexnaem1" style="margin-left: 40upx;">2023-04-30</view>
</view>
<image style="width: 680upx;height:242rpx;margin-left:10upx;margin-top: -30upx;" src="@/static/奖台.png"></image>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.top {
position: absolute;
top: 117upx;
left: 25upx;
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #FFFFFF;
}
.textshijian{
display: flex;
justify-content: center;
.taexnaem1{
text-align: center;
width: 180rpx;
height: 54rpx;
color: #999999;
// opacity: 0.1;
}
}
.textchengji{
display: flex;
justify-content: center;
.taexnaem1{
text-align: center;
width: 150rpx;
height: 54rpx;
color: #333333;
// opacity: 0.1;
}
}
.textname{
display: flex;
justify-content: center;
.taexnaem1{
margin-top: -30upx;
text-align: center;
width: 150rpx;
height: 54rpx;
background: #060A11 ;
border-radius: 22rpx;
opacity: 0.3;
color: #fff;
// opacity: 0.1;
}
}
.userimg{
display: flex;
justify-content:center;
.userimg1{
width: 160rpx;
height: 160rpx;
background: #FFF7EA;
border-radius: 50%;
border: 4px solid #FFBD4B;
margin-top: 70upx;
}
.userimgtext{
text-align: center;
width: 150rpx;
height: 54rpx;
color: #FFF;
background: #060A11;
border-radius: 22rpx;
opacity: 0.5;
position: absolute;
top:620upx;
left:9%;
}
.userimgtexter{
text-align: center;
width: 150rpx;
height: 54rpx;
color: #FFF;
background: #060A11;
border-radius: 22rpx;
opacity: 0.5;
position: absolute;
top:580upx;
left: 40%;
}
.userimgtextsan{
text-align: center;
width: 150rpx;
height: 54rpx;
color: #FFF;
background: #060A11;
border-radius: 22rpx;
opacity: 0.5;
position: absolute;
top:620upx;
left:70%;
}
.userimgtext1{
width: 103rpx;
height: 23rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: black;
}
.userimgtext2{
margin-top: 20upx;
width: 131rpx;
height: 17rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 22rpx;
color: #999999;
}
}
.content{
margin: 0 auto;
width: 702rpx;
height: 747rpx;
background: #FFFFFF;
border-radius: 20rpx;
margin-top:77upx;
.imgtext{
position: relative;
top:-90upx;
left:42%;
font-size: 32rpx;
color: #FFFFFF;
}
.imgtext1{
width: 256rpx;
height: 31rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #333333;
margin: 0 auto;
}
}
</style>

@ -0,0 +1,335 @@
<template>
<view class="add">
<view class="add-filter">
<view class="item" :class="tabIndex == 0?'item-on':''" @click="tabItem(0)">笼位</view>
<view class="item" :class="tabIndex == 1?'item-on':''" @click="tabItem(1)"></view>
<view class="item" :class="tabIndex == 2?'item-on':''" @click="tabItem(2)">Excel导出</view>
</view>
<view class="add-bd" v-if="tabIndex == 0">
<view class="item">
<view class="l">每列笼位数显示数量</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">每笼最多放成年鼠数量</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">每笼最多放幼崽数量</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">有幼崽的鼠笼最多放成年鼠数量</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">分笼提醒<image class="date" src="@/static/3@2x.png"></image></view>
<view class="r">
<u-switch v-model="info.id" activeColor="#036eb8"></u-switch>
</view>
</view>
<view class="item">
<view class="l">超期分笼提醒<image class="date" src="@/static/4@2x.png"></image></view>
<view class="r">
<u-switch v-model="info.id" activeColor="#036eb8"></u-switch>
</view>
</view>
<view class="item">
<view class="l">超载提醒<image class="date" src="@/static/5@2x.png"></image></view>
<view class="r">
<u-switch v-model="info.id" activeColor="#036eb8"></u-switch>
</view>
</view>
<view class="item">
<view class="l">小鼠打架提醒<image class="date" src="@/static/6@2x.png"></image></view>
<view class="r">
<u-switch v-model="info.id" activeColor="#036eb8"></u-switch>
</view>
</view>
</view>
<view class="add-bd" v-if="tabIndex == 1">
<view class="item">
<view class="l">断奶时间</view>
<view class="r">
<input type="text" class="box" v-model="info.day" />
</view>
</view>
<view class="item">
<view class="l">断奶后护理时间</view>
<view class="r">
<input type="text" class="box" v-model="info.day" />
</view>
</view>
<view class="item">
<view class="l">雄鼠性成熟时间</view>
<view class="r">
<input type="text" class="box" v-model="info.day" />
</view>
</view>
<view class="item">
<view class="l">雌鼠性成熟时间</view>
<view class="r">
<input type="text" class="box" v-model="info.day" />
</view>
</view>
<view class="item">
<view class="l">不育鼠时间</view>
<view class="r">
<input type="text" class="box" v-model="info.moth" />
</view>
</view>
<view class="item">
<view class="l">给药后持续</view>
<view class="r">
<input type="text" class="box" v-model="info.day" />天显示给药标识
</view>
</view>
<view class="item">
<view class="l">记住</view>
<view class="r">
<input type="text" class="box" v-model="info.moth" />个近期给药的颜色
</view>
</view>
<view class="item">
<view class="l">繁衍标识<image class="date" src="@/static/0@2x.png"></image></view>
<view class="r">
<u-switch v-model="info.id" activeColor="#036eb8"></u-switch>
</view>
</view>
<view class="item">
<view class="l">见栓标识<image class="date" src="@/static/2@2x.png"></image></view>
<view class="r">
<u-switch v-model="info.id" activeColor="#036eb8"></u-switch>
</view>
</view>
</view>
<view class="add-bd1" v-if="tabIndex == 2">
<view class="items" v-for="i in 2" :key="i">
<view class="a">现存鼠</view>
<view class="b">
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>编号
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>性别
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>出生
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>品系
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>基因
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>笼号
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>描述
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>毛色
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>分笼
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>配繁
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>体重
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>见栓
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>给药
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>父亲
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>母亲
</view>
<view class="l">
<image v-if="currentIndex == 1" src="/static/8@2x.png"></image>
<image v-else src="/static/7@2x.png"></image>备注
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
currentIndex: 1,
tabIndex: 0,
rangeIndex: -1,
range: ['公','母'],
range1: ['黄色','蓝色'],
info: {
moth: 2,
day: 5
},
};
},
methods: {
tabItem(e){
this.tabIndex = e;
},
}
}
</script>
<style lang="scss" scoped>
.add{
overflow: hidden;
&-filter{
width: 100%;
background-color: #efefef;
display: flex;
align-items: center;
.item{
line-height: 85rpx;
flex: 1;
text-align: center;
color: #241b17;
font-size: 30rpx;
&-on{
background-color: #009944;
color: #ffffff;
}
}
}
&-bd1{
.items{
.a{
width: 100%;
line-height: 60rpx;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
padding: 0 40rpx;
box-sizing: border-box;
}
.b{
width: 100%;
font-size: 32rpx;
color: #000;
padding: 0 40rpx;
box-sizing: border-box;
display: flex;
flex-wrap: wrap;
.l{
width: 25%;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
image{
width: 40rpx;
height: 40rpx;
margin-right: 10rpx;
}
}
}
}
}
&-bd{
padding: 0 35rpx;
overflow: hidden;
.item{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.l{
min-width: 100rpx;
font-size: 28rpx;
color: #000;
.date{
width: 40rpx;
height: 40rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
.r{
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
input,picker{
flex: 1;
font-size: 28rpx;
color: #000;
height: 50rpx;
line-height: 50rpx;
text-align: right;
}
.box{
text-align: center;
}
.arrow{
width: 32rpx;
height: 19rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
position: fixed;
left: 0;
bottom: 0;
z-index: 22;
// padding-bottom: constant(safe-area-inset-bottom); /* iOS < 11.2 */
// padding-bottom: env(safe-area-inset-bottom); /* iOS >= 11.2 */
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,246 @@
<template>
<view class="oppo-box">
<image style="width: 100%; height: 247rpx;" src="@/static/bg (2).png"></image>
<view class="custom-navigation-bar">
<view class="left-button" @click="handleBack">
<uni-icons type="left" color="#fff" size="30"></uni-icons>
</view>
<view class="title">
{{ title }}
</view>
</view>
<view class="formbox">
<uni-section title="俱乐部LOGO(400px*400px)" type="line" class="linered">
<view class="border"></view>
<uni-file-picker v-model="formData.name" fileMediatype="image" mode="grid" @success="success"
@fail="fail" />
</uni-section>
</view>
<view class="formbox1">
<uni-forms ref="form" :modelValue="formData" :rules="rules" label-width="200rpx">
<uni-forms-item label="俱乐部名称" required name="name">
<input class="input" v-model="formData.name" type="text" placeholder="请输入" />
</uni-forms-item>
<uni-forms-item label="联系人" required name="email">
<input class="input" v-model="formData.email" type="text" placeholder="请输入邮箱"
@input="binddata('email',$event.detail.value)" />
</uni-forms-item>
<uni-forms-item label="联系电话" required name="email">
<input class="input" v-model="formData.email" type="text" placeholder="请输入邮箱"
@input="binddata('email',$event.detail.value)" />
</uni-forms-item>
</uni-forms>
</view>
<view class="formbox2">
<uni-row>
<uni-col :span="12">
<text style="color: red;">*</text> 俱乐部管理员
</uni-col>
<uni-col :span="4" :offset="8">
<text style="color: red;">添加</text>
</uni-col>
</uni-row>
<view class="border" style="margin-top: 20rpx;"></view>
<uni-forms ref="form" :modelValue="formData" :rules="rules" label-width="250rpx">
<uni-forms-item label="俱乐部所在城市" required name="name">
<uni-data-select v-model="value" :localdata="range"></uni-data-select>
</uni-forms-item>
<uni-forms-item label="俱乐部地址" required name="email">
<input class="input" v-model="formData.email" type="text" placeholder="请输入邮箱"
@input="binddata('email',$event.detail.value)" />
</uni-forms-item>
<uni-forms-item label="地址定位" required name="name">
<uni-data-select v-model="value" :localdata="range"></uni-data-select>
</uni-forms-item>
</uni-forms>
</view>
<view class="formbox3">
<uni-forms ref="form" :modelValue="formData" :rules="rules" label-width="250rpx">
<uni-forms-item label="俱乐部地址" required name="email">
<input class="input" v-model="formData.email" type="text" placeholder="请输入邮箱"
@input="binddata('email',$event.detail.value)" />
</uni-forms-item>
</uni-forms\>
</view>
<view class="formbox" style="margin-top: 20rpx;">
<uni-section title="营业执照(盖章后上传)" type="line" class="linered">
<view class="border"></view>
<uni-file-picker v-model="formData.name" fileMediatype="image" mode="grid" @success="success"
@fail="fail" />
</uni-section>
</view>
<view class="formbox" style="margin-top: 20rpx;">
<uni-section title="俱乐部授权书(下载盖章后拍照上传)" type="line" class="linered"> <text class="dow">下载附件</text>
<view class="border"></view>
<uni-file-picker v-model="formData.name" fileMediatype="image" mode="grid" @success="success"
@fail="fail" />
</uni-section>
</view>
<view class="formbox">
<uni-section title="俱乐部门店图片(400px*400px)" type="line" class="linered">
<view class="border"></view>
<uni-file-picker v-model="formData.name" fileMediatype="image" mode="grid" @success="success"
@fail="fail" />
</uni-section>
</view>
<view class="formbox">
<uni-section title="俱乐部简介" type="line" class="linered">
<view class="border"></view>
<textarea name="" id="" cols="30" rows="10" placeholder="请输入"></textarea>
</uni-section>
</view>
<view class="">
<button class="subbtn">确认提交</button>
</view>
</view>
</template>
<script>
export default {
data() {
return {
value: '',
range: [{
value: 0,
text: "篮球"
},
{
value: 1,
text: "足球"
},
{
value: 2,
text: "游泳"
},
],
title: '创建俱乐部',
//
formData: {
name: [],
email: 'dcloud@email.com'
},
rules: {
// name
name: {
rules: [{
required: true,
errorMessage: '请输入姓名',
}]
},
// email
email: {
rules: [{
format: 'email',
errorMessage: '请输入正确的邮箱地址',
}]
}
}
}
},
methods: {
detail() {
uni.navigateTo({
url: "/pages/user/notice/detail/detail"
})
},
handleBack() {
uni.navigateBack({
delta: 2
})
// console.log(1344444);
// uni.switchTab({
// url: "/pages/user/index"
// })
},
toPage() {
console.log(1111232)
uni.navigateTo({
url: "/pages/user/index"
})
},
}
}
</script>
<style lang="scss" scoped>
.oppo-box {
width: 100vw !important;
height: 100vh !important;
overflow-x: hidden !important;
overflow-y: auto !important;
}
.subbtn{
margin-top: 20rpx;
width: 662rpx;
height: 90rpx;
background: #CA151F;
border-radius: 45rpx;
}
.dow{
color: red;
position: relative;
left: 80%;
top: -60rpx;
}
.formbox3 {
width: 750rpx;
height: 107rpx;
background: #FFFFFF;
margin-top: 20rpx;
padding: 20rpx;
}
.formbox2 {
width: 730rpx;
height: 326rpx;
background: #FFFFFF;
margin-top: 20rpx;
padding: 20rpx;
}
.formbox1 {
width: 730rpx;
height: 326rpx;
background: #FFFFFF;
margin-top: 20rpx;
padding: 20rpx;
}
.border {
border: 1px solid #E6E6E6;
;
}
.margintop {
margin-top: -100px;
}
.formbox {
padding: 20rpx;
// margin: 20rpx;
background: #fff;
}
.custom-navigation-bar {
display: flex;
align-items: center;
justify-content: space-between;
height: 220rpx;
/* #ifdef MP-WEIXIN */
margin-top: -230rpx;
/* #endif */
}
.left-button,
.right-button {
padding: 0 12px;
}
.title {
flex: 1;
// text-align: center;
color: #fff;
font-size: 18px;
font-weight: bold;
}
</style>

@ -0,0 +1,386 @@
<template>
<view>
<image style="width: 100%; height: 1074rpx;" src="@/static/bg (3).png"></image>
<view class="custom-navigation-bar">
<view class="left-button" @click="handleBack">
<uni-icons type="left" color="#fff" size="30"></uni-icons>
</view>
<view class="title">
{{ title }}
</view>
</view>
<view style="margin-top: -30rpx;">
<uni-row class="demo-uni-row">
<!-- <uni-col :span="2">
城市请选择
</uni-col>
<uni-col :span="8">
</uni-col> -->
<uni-col :span="8">
<picker @change="bindPickerChange" :value="value" :range="array"
style="color: #fff;width:300rpx;margin-left: 30rpx;">
<view class="uni-input">{{array[value]?array[value]:'城市:请选择'}} <uni-icons type="down"
color="#fff" size="20"></uni-icons></view>
</picker>
</uni-col>
<uni-col :span="8" :offset="7">
<button class="but" @click="addjule">创建俱乐部</button>
</uni-col>
</uni-row>
<view class="tuxiang">
<view>
<image class="tuxiang1" src="@/static/bg (2).png"></image>
</view>
<view>
<image class="tuxiang2" src="@/static/bg (2).png"></image>
</view>
<view>
<image class="tuxiang3" src="@/static/bg (2).png"></image>
</view>
</view>
</view>
<view class="text">
<view class="text1">青岛吴霖田径俱 乐部有限公司</view>
<view class="text1">青岛吴霖田径俱 乐部有限公司</view>
<view class="text1">青岛吴霖田径俱 乐部有限公司</view>
</view>
<view class="text2">
<view class="text12">南京市</view>
<view class="text12">南京市</view>
<view class="text12">南京市</view>
</view>
<view class="text3">
<view class="text13">988</view>
<view class="text132">988</view>
<view class="text133">988</view>
</view>
<view class="text4">
<view class="text14">积分</view>
<view class="text142">积分</view>
<view class="text143">积分</view>
</view>
<view class="borderbottom" style="margin-bottom: 20rpx;"></view>
<uni-row class="demo-uni-row">
<uni-col :span="8" :offset="1">
俱乐部名称1
</uni-col>
<uni-col :span="4" :offset="7">
城市
</uni-col>
<uni-col :span="4">
<text> 积分 </text>
<image src="../../../static/问号.png" mode="" class="imagejifn" @click="jifendetail"></image>
</uni-col>
</uni-row>
<uni-popup ref="popup" type="bottom" background-color="#fff" border-radius="10px 10px 0 0">
<view class="guize">
<view class="guizetop">积分规则</view>
<view class="guizetext" v-for="(item,index) in 8">
团队成员每报名1项加5分
</view>
</view>
</uni-popup>
<view style="margin-top: 20rpx;">
<uni-table border stripe emptyText="暂无更多数据">
<uni-tr v-for="(item, index) in tableData" :key="index" @rowClick='adds(index)'>
<uni-td>{{ item.date }}</uni-td>
<uni-td>
<view class="name">{{ item.name }}</view>
</uni-td>
<uni-td align="center">{{ item.address }}</uni-td>
</uni-tr>
</uni-table>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: '俱乐部排行',
value: '',
range: [{
value: 0,
text: "篮球"
},
{
value: 1,
text: "足球"
},
{
value: 2,
text: "游泳"
},
],
array: ['中国', '美国', '巴西', '日本'],
tableData: [{
date: 111,
name: 222,
address: 333
}, {
date: 111,
name: 222,
address: 333
}],
}
},
methods: {
addjule(){
uni.navigateTo({
url: "/pages/user/clubs/add/add"
})
},
adds(index) {
uni.navigateTo({
url: "/pages/user/clubs/detail/detail"
})
},
jifendetail() {
this.$refs.popup.open('bottom')
},
bindPickerChange(e) {
this.value = e.detail.value
},
detail() {
uni.navigateTo({
url: "/pages/user/notice/detail/detail"
})
},
handleBack() {
// uni.navigateBack()
uni.switchTab({
url: "/pages/user/index"
})
},
toPage() {
console.log(1111232)
uni.navigateTo({
url: "/pages/user/index"
})
},
}
}
</script>
<style lang="scss" scoped>
.guize {
width: 750rpx;
height: 600rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 0rpx 0rpx;
.guizetop {
text-align: center;
font-family: Alibaba PuHuiTi;
font-weight: 400;
padding: 20rpx;
font-size: 30rpx;
color: #333333;
}
.guizetext {
padding: 10rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 28rpx;
color: #333333;
}
}
.imagejifn {
width: 31rpx;
height: 31rpx;
position: absolute;
top: 4rpx;
right: 32rpx;
}
.borderbottom {
height: 160rpx;
border-bottom: 1px dashed black;
}
.text2 {
display: flex;
justify-content: center;
.text12 {
text-align: center;
width: 30%;
height: 23rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #FFFFFF;
line-height: 36rpx;
opacity: 0.6;
margin-top: 20rpx;
}
}
.text4 {
display: flex;
justify-content: center;
.text14 {
text-align: center;
width: 30%;
height: 23rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 22rpx;
color: #CA151F;
line-height: 36rpx;
margin-top: -50rpx;
}
.text142 {
text-align: center;
width: 30%;
height: 23rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 22rpx;
color: #CA151F;
line-height: 36rpx;
margin-top: -170rpx;
}
.text143 {
text-align: center;
width: 30%;
height: 23rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 22rpx;
color: #CA151F;
line-height: 36rpx;
margin-top: 20rpx;
}
}
.text3 {
display: flex;
justify-content: center;
.text13 {
text-align: center;
width: 30%;
height: 23rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 36rpx;
color: #CA151F;
line-height: 36rpx;
margin-top: 235rpx;
}
.text132 {
text-align: center;
width: 30%;
height: 23rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 36rpx;
color: #CA151F;
line-height: 36rpx;
margin-top: 110rpx;
}
.text133 {
text-align: center;
width: 30%;
height: 23rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 36rpx;
color: #CA151F;
line-height: 36rpx;
margin-top: 310rpx;
}
}
.text {
display: flex;
justify-content: center;
.text1 {
width: 204rpx;
height: 63rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #FFFFFF;
line-height: 36rpx;
}
}
.tuxiang {
display: flex;
justify-content: center;
}
.tuxiang1 {
width: 112rpx;
height: 112rpx;
background: #FFE3E4;
margin-top: 44rpx;
border-radius: 50%;
border: 2px solid #CA151F;
}
.tuxiang2 {
width: 140rpx;
height: 140rpx;
margin-left: 48rpx;
background: #FFE3E4;
border-radius: 50%;
border: 2px solid #CA151F;
}
.tuxiang3 {
width: 112rpx;
height: 112rpx;
margin-top: 44rpx;
margin-left: 45rpx;
background: #FFE3E4;
border-radius: 50%;
border: 2px solid #CA151F;
}
.but {
background: #FFFFFF;
border-radius: 28rpx;
color: #CA151F;
}
.border {
border: 0px;
}
.custom-navigation-bar {
display: flex;
align-items: center;
justify-content: space-between;
height: 220rpx;
/* #ifdef MP-WEIXIN */
margin-top: -1060rpx;
/* #endif */
}
.left-button,
.right-button {
padding: 0 12px;
}
.title {
flex: 1;
// text-align: center;
color: #fff;
font-size: 18px;
font-weight: bold;
}
</style>

@ -0,0 +1,185 @@
<template>
<view>
<image style="width: 100%; height: 247rpx;" src="@/static/bg (2).png"></image>
<view class="custom-navigation-bar">
<view class="left-button" @click="handleBack">
<uni-icons type="left" color="#fff" size="30"></uni-icons>
</view>
<view class="title">
{{ title }}
</view>
</view>
<view class="boxjule">
<image class="imagejule" src="../../../../static/bg (1).png" mode="scaleToFill"></image>
<uni-row>
<uni-col :span="8" :offset="1" class="h1text">赛速体能俱乐部</uni-col>
<uni-col :span="6" :offset="9">积分<text style="color: red;">2980</text></uni-col>
</uni-row>
<view class="dizhi">
<uni-row>
<uni-col :span="18" :offset="1" class="h1text">
<image src="../../../../static/dizhi.png"
style="width:22rpx;height:24rpx; margin-right: 10rpx;"></image>
地址福山新城区金海创意中心8楼
</uni-col>
<uni-col :span="5">
<image src="../../../../static/电话.png" style="width:50rpx;height:50rpx;"></image>
<image src="../../../../static/地址.png" style="width:50rpx;height:50rpx;margin-left: 20rpx;">
</image>
</uni-col>
</uni-row>
</view>
<view class="neirong">
马拉松(Marathon)长跑是国际上非常普及的长跑比赛项目全程距离26英里385码
折合为42.195公里(也有说法为42.193公里)分全程马拉松(FuIMarathon)半程马拉松(HalfMarathon)和四分马拉松(Quarter
Marathon)三种
</view>
<view class="tableneirong">
<view class="tabletop">
<image src="../../../../static/1.png" style="width:50rpx;height:50rpx;"></image><text class="tabletext">1</text>
<image src="../../../../static/2.png" class="img2" ></image><text class="tabletext">2</text>
<image src="../../../../static/3.png" class="img2"></image><text class="tabletext">3</text>
</view>
<view class="">
<uni-table border stripe emptyText="暂无更多数据">
<uni-tr v-for="(item, index) in tableData" :key="index">
<uni-td>{{ item.date }}</uni-td>
<uni-td>
<view class="name">{{ item.name }}</view>
</uni-td>
<uni-td align="center">{{ item.address }}</uni-td>
</uni-tr>
</uni-table>
</view>
<button class="butbom">申请加入俱乐部</button>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: '俱乐部详情',
tableData: [{
date: 111,
name: 222,
address: 333
}, {
date: 111,
name: 222,
address: 333
}],
}
},
methods: {
detail() {
uni.navigateTo({
url: "/pages/user/notice/detail/detail"
})
},
handleBack() {
uni.navigateBack()
// console.log(1344444);
// uni.switchTab({
// url: "/pages/user/index"
// })
},
toPage() {
console.log(1111232)
uni.navigateTo({
url: "/pages/user/index"
})
},
}
}
</script>
<style lang="scss">
.butbom{
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 32rpx;
color: #FFFFFF;
margin-top: 40rpx;
width: 662rpx;
height: 90rpx;
background: #CA151F;
border-radius: 45rpx;
}
.tabletext{
position: relative;
top:-10rpx
}
.img2{
width:50rpx;height:50rpx;margin-left: 20rpx;
}
.tabletop{
padding: 20rpx;
}
.tableneirong{
width: 750rpx;
height: 802rpx;
background: #FFFFFF;
border-radius: 20rpx 20rpx 0rpx 0rpx;
}
.neirong {
width: 702rpx;
height: 268rpx;
background: #FAF5F6;
border-radius: 20rpx;
margin: 25rpx;
line-height: 50rpx;
}
.dizhi {
margin-top: 20upx;
}
.h1text {
font-family: Alibaba PuHuiTi;
font-weight: 400;
font-size: 36rpx;
color: #222222;
}
.boxjule {
width: 750rpx;
height: 862rpx;
background: #FFFFFF;
border-radius: 0rpx 0rpx 20rpx 20rpx;
}
.imagejule {
width: 702rpx;
height: 390rpx;
background: #D7DCE2;
border-radius: 20rpx;
margin: 25rpx;
}
.custom-navigation-bar {
display: flex;
align-items: center;
justify-content: space-between;
height: 220rpx;
/* #ifdef MP-WEIXIN */
margin-top: -230rpx;
/* #endif */
}
.left-button,
.right-button {
padding: 0 12px;
}
.title {
flex: 1;
// text-align: center;
color: #fff;
font-size: 18px;
font-weight: bold;
}
</style>

@ -0,0 +1,302 @@
<template>
<view>
<image style="width: 100%; height: 500rpx;" src="@/static/bg (1).png"></image>
<view class="top">
我的
</view>
<view class="top1">
<image class="tuxiang" src="../../static/bg (1).png" mode=""></image>
<view class="xinxi">
<view class="name">王美丽</view>
<image class="bianji" src="../../static/编辑.png" mode="" @click="updateuser"></image>
</view>
<view class="julexinxi">
最美竞赛俱乐部
</view>
<view >
<view class="upxinxi">
<image class="bianji" style="margin-left: 80rpx;" src="../../static/bg (1).png" mode=""></image>
<view class="name11">王美丽</view>
<image class="bianji" style="margin-left: 80rpx;" src="../../static/tianjia.png" mode=""></image>
<view class="adduser">添加运动员</view>
</view>
</view>
</view>
<view class="saicheng" style="margin-top: 200rpx;">
<view class="saichengtop">
<view>
我的赛程
</view>
<view>
<text style="line-height: 35upx;">查看回放</text><image class="imgw13" src="@/static/jiantouyou@2x.png"></image>
</view>
</view>
<view class="detail" v-for="(item,index) in list">
<view class="detail1" style="margin-top: 30rpx;">
<view class="biaoti">炽热体育巡回赛</view>
<view class="biaoti1">
<text class="text1">成绩</text>
<text class="text2">02:10.91</text>
</view>
</view>
<view class="detail2" style="margin-top: 30rpx;">
<button type="warn">查看详情</button>
</view>
</view>
<view class="" v-if="list.length==0">
<view class="tishi"> 您还没有报名任何赛事</view>
<view class=""> <button class="baomingbtn"> 去报名</button></view>
</view>
</view>
<view class="bottom">
<view class="bottom1">
<view class="">
<image class="imgbottom" src="@/static/报名记录.png"></image>
</view>
<view class="textbottom">报名记录</view>
</view>
<view class="bottom2">
<view class="">
<image class="imgbottom" src="@/static/我的主页.png"></image>
</view>
<view class="textbottom">我的主页</view>
</view>
<view class="bottom3" @click="clubs">
<view class="">
<image class="imgbottom" src="@/static/我的俱乐部.png"></image>
</view>
<view class="textbottom">俱乐部</view>
</view>
<view class="bottom4" @click="notice">
<view class="">
<image class="imgbottom" src="@/static/通知.png"></image>
</view>
<view class="textbottom" style="margin-left: 20rpx;">通知</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello',
list:[{},{}]
}
},
onLoad() {
},
methods: {
updateuser(){
uni.navigateTo({
url: "/pages/user/update/update"
})
},
notice(){
console.log(1111)
uni.navigateTo({
url: "/pages/user/notice/notice"
})
},
clubs(){
uni.navigateTo({
url: "/pages/user/clubs/clubs"
})
},
toPage(i) {
if (i == 1) {
uni.navigateTo({
url: "/pages/user/pseronal"
})
} else if (i == 4) {
uni.showModal({
title: "温馨提示",
content: "确定要退出吗?",
confirmColor: "#009944",
success(res) {
if (res.confirm) {
uni.showToast({
title: "退出成功"
})
setTimeout(() => {
uni.reLaunch({
url: "/pages/login/index"
})
}, 2000)
}
}
})
}
}
}
}
</script>
<style lang="scss" scoped>
.tishi{
width: 298rpx;
height: 29rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #666666;
margin: 0 auto;
margin-top: 50rpx;
}
.baomingbtn{
margin-top: 50rpx;
width: 200rpx;
height: 70rpx;
background: #CA151F;
border-radius: 35rpx;
}
.bottom{
margin: 0 auto;
margin-top: 50rpx;
width: 702rpx;
height: 182rpx;
background: #FFFFFF;
border-radius: 20rpx;
display: flex;
justify-content: center;
.imgbottom{
margin-top: 20rpx;
margin-right: 40rpx;
width: 110rpx;
height: 110rpx;
}
.textbuttom{
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #333333;
}
}
.detail{
padding: 20rpx;
width: 642rpx;
// height: 138rpx;
background: #F5F5F5;
border-radius: 10rpx;
margin: 0 auto;
margin-top: 10px;
display: flex;
justify-content: space-between;
.biaoti{
width: 214rpx;
height: 29rpx;
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #333333;
}
.biaoti1{
margin-top: 20rpx;
.text1{
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #999999;
}
.text2{
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #CA151F;
}
}
}
.imgw13{
margin-left: 15rpx;
border: 1px dashed black;
padding: 5rpx;
width: 24rpx;
height: 24rpx;
}
.saicheng{
width: 702rpx;
// height: 414rpx;
background: #fff;
margin: 0 auto;
padding-bottom: 40rpx;
}
.saichengtop{
padding: 20rpx;
display: flex;
justify-content:space-between;
}
.upxinxi {
display: flex;
justify-content: center;
.bianji {
margin-top: 45rpx;
width: 90rpx;
height: 90rpx;
}
.name11{
margin-top: 150rpx;
margin-left: -100rpx;
}
.adduser{
margin-top: 150rpx;
margin-left: -100rpx;
}
}
.top {
position: absolute;
top: 117upx;
left: 25upx;
font-family: PingFang SC;
font-weight: 500;
font-size: 30rpx;
color: #FFFFFF;
}
.top1 {
position: absolute;
top: 184upx;
left: 315upx;
.tuxiang {
width: 120rpx;
height: 120rpx;
background: #FFFFFF;
border-radius: 50%;
}
.xinxi {
display: flex;
.bianji {
margin-left: 20rpx;
width: 44rpx;
height: 44rpx;
}
.name {
color: #fff;
}
}
.julexinxi {
color: #fff;
}
.upxinxi {
position: absolute;
top: 254upx;
left: -290upx;
width: 702rpx;
height: 220rpx;
background: #FFFFFF;
border-radius: 20rpx;
}
}
</style>

@ -0,0 +1,87 @@
<template>
<view>
<image style="width: 100%; height: 247rpx;" src="@/static/bg (2).png"></image>
<view class="custom-navigation-bar">
<view class="left-button" @click="handleBack">
<uni-icons type="left" color="#fff" size="30"></uni-icons>
</view>
<view class="title">
{{ title }}
</view>
</view>
<view class="box">
<view class="">
消息通知标题
</view>
<view class="shijiam">
2024-03-27
</view>
<view class="">
尊敬的参赛选手您好! 这边看到您注册了账号,但是还没有进行报名成功,请尽快报名缴费 参赛信息如有不清楚的地方可以咨询小程序客
尊敬的参赛选手您好! 这边看到您注册了账号,但是还没有进行报名成功,请尽快报名缴费 参赛信息如有不清楚的地方可以咨询小程序客
尊敬的参赛选手您好! 这边看到您注册了账号,但是还没有进行报名成功,请尽快报名缴费 参赛信息如有不清楚的地方可以咨询小程序客
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: '消息详情'
}
},
methods: {
handleBack() {
uni.navigateBack()
},
toPage() {
console.log(1111232)
uni.navigateTo({
url: "/pages/user/index"
})
},
}
}
</script>
<style lang="scss" scoped>
.box{
width: 702rpx;
background: #fff;
margin: 0 auto;
line-height: 40rpx;
margin-top: 20rpx;
padding: 20rpx;
.shijiam{
font-family: PingFang SC;
font-weight: 500;
font-size: 24rpx;
color: #999999;
}
}
.custom-navigation-bar {
display: flex;
align-items: center;
justify-content: space-between;
height: 220rpx;
/* #ifdef MP-WEIXIN */
margin-top: -230rpx;
/* #endif */
}
.left-button,
.right-button {
padding: 0 12px;
}
.title {
flex: 1;
// text-align: center;
color: #fff;
font-size: 18px;
font-weight: bold;
}
</style>

@ -0,0 +1,73 @@
<template>
<view>
<image style="width: 100%; height: 247rpx;" src="@/static/bg (2).png"></image>
<view class="custom-navigation-bar">
<view class="left-button" @click="handleBack">
<uni-icons type="left" color="#fff" size="30"></uni-icons>
</view>
<view class="title">
{{ title }}
</view>
</view>
<view class="" v-for="(item,index) in 10" style="margin: 20rpx;" >
<uni-list-chat title="uni-app" clickable @click="detail()" avatar="https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/unicloudlogo.png"
note="您收到一条新的消息" time="2020-02-02 20:20" badge-positon="left" badge-text="dot"></uni-list-chat>
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: '通知'
}
},
methods: {
detail(){
uni.navigateTo({
url: "/pages/user/notice/detail/detail"
})
},
handleBack() {
uni.navigateBack({ delta: 2 })
// console.log(1344444);
// uni.switchTab({
// url: "/pages/user/index"
// })
},
toPage() {
console.log(1111232)
uni.navigateTo({
url: "/pages/user/index"
})
},
}
}
</script>
<style lang="scss">
.custom-navigation-bar {
display: flex;
align-items: center;
justify-content: space-between;
height:220rpx;
/* #ifdef MP-WEIXIN */
margin-top: -230rpx;
/* #endif */
}
.left-button,
.right-button {
padding: 0 12px;
}
.title {
flex: 1;
// text-align: center;
color: #fff;
font-size: 18px;
font-weight: bold;
}
</style>

@ -0,0 +1,197 @@
<template>
<view class="add">
<view class="add-bd">
<view class="item">
<view class="l">用户名</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">密码</view>
<view class="r">
<input type="password" placeholder="数字加字母" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">再次输入密码</view>
<view class="r">
<input type="password" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">注册人员类型</view>
<view class="r">
<picker mode="selector" :range="range1" :value="info.sex" @change="bindDateChange">
{{info.color?info.color:""}}
<image class="arrow" src="@/static/jiantouxia@2x.png"></image>
</picker>
</view>
</view>
<view class="item">
<view class="l">真实姓名</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">院系</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">专业</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">课题组</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
<view class="item">
<view class="l">导师</view>
<view class="r">
<input type="text" v-model="info.father" />
</view>
</view>
</view>
<view class="add-fd">
<view class="btn" @click="toReg">修改</view>
</view>
<u-popup :show="show" mode="center" :round="10" :close-on-click-overlay="false" @close="close">
<view class="popup">
<view class="title">提交成功</view>
<view class="btn" @click="toPage()">确定</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
tabIndex: 1,
rangeIndex: -1,
range: ['公','母'],
range1: ['黄色','蓝色'],
info: {},
};
},
methods: {
close() {
this.show = false
},
tabItem(e){
this.tabIndex = e;
},
toReg() {
this.show = true
},
toPage(){
uni.navigateBack({
delta: 1
})
},
}
}
</script>
<style lang="scss" scoped>
.add{
padding-bottom: calc(env(safe-area-inset-bottom)+140rpx);
overflow: hidden;
.popup{
width: 670rpx;
height: 380rpx;
text-align: center;
padding: 110rpx 0 30rpx 0;
box-sizing: border-box;
.title{
font-size: 32rpx;
color: #000;
text-align: center;
}
.btn{
width: 210rpx;
line-height: 90rpx;
font-size: 30rpx;
color: #000;
margin: 0 auto;
background-color: #f8b62d;
border-radius: 8rpx;
margin-top: 80rpx;
}
}
&-bd{
padding: 0 35rpx;
overflow: hidden;
.item{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
padding: 40rpx 0;
border-bottom: 1px solid #c0c2c2;
.l{
font-size: 28rpx;
color: #000;
}
.r{
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
input,picker{
flex: 1;
font-size: 28rpx;
color: #000;
height: 50rpx;
line-height: 50rpx;
text-align: right;
}
.arrow{
width: 32rpx;
height: 19rpx;
margin-left: 20rpx;
vertical-align: middle;
}
.date{
width: 45rpx;
height: 45rpx;
margin-left: 20rpx;
vertical-align: middle;
}
}
}
}
&-fd{
width: 100%;
padding: 20rpx 35rpx;
box-sizing: border-box;
background-color: #f3f5f6;
position: fixed;
left: 0;
bottom: 0;
z-index: 22;
padding-bottom: calc(env(safe-area-inset-bottom));
.btn{
width: 100%;
line-height: 90rpx;
text-align: center;
background-color: #009944;
font-size: 32rpx;
color: #ffffff;
border-radius: 10rpx;
}
}
}
</style>

@ -0,0 +1,132 @@
<template>
<view>
<image style="width: 100%; height: 247rpx;" src="@/static/bg (2).png"></image>
<view class="custom-navigation-bar">
<view class="left-button" @click="handleBack">
<uni-icons type="left" color="#fff" size="30"></uni-icons>
</view>
<view class="title">
{{ title }}
</view>
</view>
<view class="form">
<uni-row>
<uni-col :span="12">
头像:
</uni-col>
<uni-col :span='6' :offset="6">
<uni-file-picker v-model="imageValue" fileMediatype="image" mode="grid" @success="success"
:image-styles="imageStyles" @fail="fail" />
</uni-col>
</uni-row>
<view style="border-bottom: 1px solid #999999;"></view>
<uni-row>
<uni-col :span="8">
昵称:
</uni-col>
<uni-col :span='6'>
<input class="uni-input" style="margin-top: 20px;" placeholder="请输入昵称"/>
</uni-col>
</uni-row>
</view>
<view class="subbtn">
确认
</view>
</view>
</template>
<script>
export default {
data() {
return {
title: '更新信息',
imageValue: [],
imageStyles: {
width: 64,
height: 64,
border: {
color: "#999999",
width: 1,
style: 'dashed',
radius: '2px'
}
},
}
},
methods: {
//
success(e) {
console.log('上传成功')
},
//
fail(e) {
console.log('上传失败:', e)
},
detail() {
uni.navigateTo({
url: "/pages/user/notice/detail/detail"
})
},
handleBack() {
uni.navigateBack({
delta: 2
})
// console.log(1344444);
// uni.switchTab({
// url: "/pages/user/index"
// })
},
toPage() {
console.log(1111232)
uni.navigateTo({
url: "/pages/user/index"
})
},
}
}
</script>
<style lang="scss">
.subbtn{
margin-top: 40rpx;
margin-left: 50rpx;
text-align: center;
line-height: 98rpx;
color: #fff;
width: 660rpx;
height: 98rpx;
background: #CA151F;
border-radius: 49rpx;
}
.form {
width: 700rpx;
height: 250rpx;
background: #FFFFFF;
line-height: 120rpx;
padding: 25rpx;
}
.custom-navigation-bar {
display: flex;
align-items: center;
justify-content: space-between;
height: 220rpx;
/* #ifdef MP-WEIXIN */
margin-top: -230rpx;
/* #endif */
}
.left-button,
.right-button {
padding: 0 12px;
}
.title {
flex: 1;
// text-align: center;
color: #fff;
font-size: 18px;
font-weight: bold;
}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save