Commit 4cd1aee33d3c96067bfba3405cf00f4fccf3cae2

Authored by 史婷婷
1 parent 1372cc49

feat: 首页+tabs

@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 checkLogin() { 23 checkLogin() {
24 24
25 if (!getToken()) { 25 if (!getToken()) {
26 - this.$tab.reLaunch('/pages/login/login') 26 + this.$tab.reLaunch('/pages/login')
27 } 27 }
28 } 28 }
29 } 29 }
@@ -31,5 +31,5 @@ @@ -31,5 +31,5 @@
31 </script> 31 </script>
32 32
33 <style lang="scss"> 33 <style lang="scss">
34 - @import '@/static/scss/index.scss' 34 + @import '@/static/scss/index.scss';
35 </style> 35 </style>
1 { 1 {
2 "pages": [{ 2 "pages": [{
3 - "path": "pages/login/login", 3 + "path": "pages/login",
4 "style": { 4 "style": {
5 "navigationBarTitleText": "登录", 5 "navigationBarTitleText": "登录",
6 "navigationStyle": "custom" 6 "navigationStyle": "custom"
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 "navigationBarTitleText": "注册" 11 "navigationBarTitleText": "注册"
12 } 12 }
13 }, { 13 }, {
14 - "path": "pages/index/index", 14 + "path": "pages/index",
15 "style": { 15 "style": {
16 "navigationBarTitleText": "首页", 16 "navigationBarTitleText": "首页",
17 "navigationStyle": "custom" 17 "navigationStyle": "custom"
@@ -209,7 +209,7 @@ @@ -209,7 +209,7 @@
209 "selectedColor": "#3D48A3", 209 "selectedColor": "#3D48A3",
210 "borderStyle": "white", 210 "borderStyle": "white",
211 "list": [{ 211 "list": [{
212 - "pagePath": "pages/index/index", 212 + "pagePath": "pages/index",
213 "iconPath": "static/images/tabbar/home.png", 213 "iconPath": "static/images/tabbar/home.png",
214 "selectedIconPath": "static/images/tabbar/home_act.png", 214 "selectedIconPath": "static/images/tabbar/home_act.png",
215 "text": "首页" 215 "text": "首页"
  1 +<template>
  2 + <view class="home-page">
  3 + <!-- 自定义头部 -->
  4 + <view class="custom-header">
  5 + <view class="header-left">
  6 + <view class="bell-wrap">
  7 + <image class="icon" src="/static/images/index/bell.png" mode="widthFix" />
  8 + <view class="badge">8</view>
  9 + </view>
  10 + </view>
  11 + <view class="header-title">首页</view>
  12 + <view class="header-right" />
  13 + </view>
  14 +
  15 + <!-- 顶部统计卡片 -->
  16 + <view class="stats-row">
  17 + <view class="stat-card">
  18 + <image class="card-bg" src="/static/images/index/card_wait.png" mode="aspectFill" />
  19 + <view class="card-content">
  20 + <text class="card-title">待审批的</text>
  21 + <text class="card-num">24</text>
  22 + </view>
  23 + </view>
  24 + <view class="stat-card">
  25 + <image class="card-bg" src="/static/images/index/card_launch.png" mode="aspectFill" />
  26 + <view class="card-content">
  27 + <text class="card-title">我发起的</text>
  28 + <text class="card-num">87</text>
  29 + </view>
  30 + </view>
  31 + </view>
  32 + <!-- 分组入口 -->
  33 + <view class="section" v-for="(it, index) in sectionList" :key="index">
  34 + <text class="section-title">{{ it.title }}</text>
  35 + <view class="grid">
  36 + <view class="grid-item" v-for="(g, idx) in it.items" :key="idx" @click="navigateTo(g.link)">
  37 + <image class="grid-icon" :src="g.icon" />
  38 + <text class="grid-text omit1">{{ g.text }}</text>
  39 + </view>
  40 + </view>
  41 + </view>
  42 + </view>
  43 +</template>
  44 +
  45 +<script>
  46 + export default {
  47 + data() {
  48 + return {
  49 + sectionList: [
  50 + {
  51 + title: '客户开发管理',
  52 + items: [
  53 + {
  54 + text: '开发管理',
  55 + icon: '/static/images/index/dev_manage.png',
  56 + link: '/pages/dev_manage/index'
  57 + }
  58 + ]
  59 + },
  60 + {
  61 + title: '客户资信管理',
  62 + items: [
  63 + {
  64 + text: '资信管理',
  65 + icon: '/static/images/index/credit_manage.png',
  66 + link: '/pages/credit_manage/index'
  67 + }
  68 + ]
  69 + },
  70 + {
  71 + title: '合同管理',
  72 + items: [
  73 + {
  74 + text: '框架合同',
  75 + icon: '/static/images/index/contract_framework.png',
  76 + link: '/pages/contract_framework/index'
  77 + },
  78 + {
  79 + text: '经销标准合同',
  80 + icon: '/static/images/index/contract_retail.png',
  81 + link: '/pages/contract_retail/index'
  82 + },
  83 + {
  84 + text: '经销库存合同',
  85 + icon: '/static/images/index/contract_stock.png',
  86 + link: '/pages/contract_stock/index'
  87 + },
  88 + {
  89 + text: '经销未规划合同',
  90 + icon: '/static/images/index/contract_unplan.png',
  91 + link: '/pages/contract_unplan/index'
  92 + },
  93 + {
  94 + text: '加工标准合同',
  95 + icon: '/static/images/index/contract_process.png',
  96 + link: '/pages/contract_process/index'
  97 + },
  98 + {
  99 + text: '外贸标准合同',
  100 + icon: '/static/images/index/contract_foreign_std.png',
  101 + link: '/pages/contract_foreign_std/index'
  102 + },
  103 + {
  104 + text: '外贸库存合同',
  105 + icon: '/static/images/index/contract_foreign_stock.png',
  106 + link: '/pages/contract_foreign_stock/index'
  107 + },
  108 + {
  109 + text: '外贸未规划合同',
  110 + icon: '/static/images/index/contract_foreign_unplan.png',
  111 + link: '/pages/contract_foreign_unplan/index'
  112 + },
  113 + ],
  114 + }
  115 + ]
  116 + }
  117 + },
  118 + methods: {
  119 + // 普通页面
  120 + navigateTo(link) {
  121 + if (!link || link === '#') {
  122 + return;
  123 + }
  124 + // 规范化路径,确保以斜杠开头
  125 + const url = link.startsWith('/') ? link : `/${link}`;
  126 +
  127 + // 普通页面使用 navigateTo
  128 + uni.navigateTo({
  129 + url,
  130 + fail: () => {
  131 + uni.showToast({ title: '页面暂未开放', icon: 'none' });
  132 + }
  133 + });
  134 + }
  135 + }
  136 + }
  137 +</script>
  138 +
  139 +<style scoped lang="scss">
  140 + page {
  141 + background-color: #fff;
  142 + }
  143 +
  144 + .home-page {
  145 + padding: 0 32rpx 32rpx;
  146 + padding-top: 96rpx;
  147 + }
  148 +
  149 + /* 自定义头部 */
  150 + .custom-header {
  151 + height: 96rpx;
  152 + display: flex;
  153 + align-items: center;
  154 + justify-content: space-between;
  155 + position: fixed;
  156 + top: 0;
  157 + left: 0;
  158 + right: 0;
  159 + z-index: 1000;
  160 + background-color: #fff;
  161 + padding: 0 32rpx;
  162 +
  163 + .header-left {
  164 + display: flex;
  165 + align-items: center;
  166 + }
  167 +
  168 + .header-title {
  169 + font-size: 36rpx;
  170 + font-weight: 600;
  171 + color: rgba(0, 0, 0, 0.9);
  172 + }
  173 +
  174 + .icon {
  175 + width: 48rpx;
  176 + height: 48rpx;
  177 + }
  178 +
  179 + .bell-wrap {
  180 + position: relative;
  181 + }
  182 +
  183 + .header-right {
  184 + width: 48rpx;
  185 + }
  186 +
  187 + .badge {
  188 + position: absolute;
  189 + top: -8rpx;
  190 + right: -8rpx;
  191 + background-color: #ff3b30;
  192 + color: #fff;
  193 + font-size: 20rpx;
  194 + height: 32rpx;
  195 + min-width: 32rpx;
  196 + padding: 0 8rpx;
  197 + border-radius: 16rpx;
  198 + display: flex;
  199 + align-items: center;
  200 + justify-content: center;
  201 + }
  202 + }
  203 +
  204 +
  205 + /* 统计卡片 */
  206 + .stats-row {
  207 + display: flex;
  208 + gap: 26rpx;
  209 + padding-top: 20rpx;
  210 +
  211 + .stat-card {
  212 + flex: 1;
  213 + height: 168rpx;
  214 + position: relative;
  215 + overflow: hidden;
  216 + border-radius: 16rpx;
  217 + }
  218 +
  219 + .card-bg {
  220 + position: absolute;
  221 + left: 0;
  222 + top: 0;
  223 + width: 100%;
  224 + height: 100%;
  225 + }
  226 +
  227 + .card-content {
  228 + position: absolute;
  229 + left: 32rpx;
  230 + top: 36rpx;
  231 + display: flex;
  232 + flex-direction: column;
  233 + gap: 12rpx;
  234 + }
  235 +
  236 + .card-title {
  237 + color: rgba(0, 0, 0, 0.9);
  238 + font-size: 32rpx;
  239 + line-height: 44rpx;
  240 + }
  241 +
  242 + .card-num {
  243 + color: rgba(0,0,0,0.4);
  244 + font-size: 32rpx;
  245 + font-weight: 600;
  246 + line-height: 44rpx;
  247 + }
  248 + }
  249 +
  250 +
  251 + /* 分组入口 */
  252 + .section {
  253 + margin-top: 32rpx;
  254 + .section-title {
  255 + font-size: 32rpx;
  256 + font-weight: 600;
  257 + color: rgba(0, 0, 0, 0.9);
  258 + line-height: 44rpx;
  259 + }
  260 +
  261 + .grid {
  262 + margin-top: 28rpx;
  263 + display: grid;
  264 + grid-template-columns: repeat(4, 1fr);
  265 + gap: 32rpx;
  266 + }
  267 +
  268 + .grid-item {
  269 + display: flex;
  270 + flex-direction: column;
  271 + align-items: center;
  272 + }
  273 +
  274 + .grid-icon {
  275 + width: 96rpx;
  276 + height: 96rpx;
  277 + border-radius: 24rpx;
  278 + }
  279 +
  280 + .grid-text {
  281 + margin-top: 16rpx;
  282 + font-size: 24rpx;
  283 + color: rgba(0,0,0,0.6);
  284 + text-align: center;
  285 + }
  286 +
  287 + }
  288 +
  289 +
  290 +</style>
1 -<template>  
2 - <view class="mine-container">  
3 - <!-- 轮播图 -->  
4 - <uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">  
5 - <swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">  
6 - <swiper-item v-for="(item, index) in data" :key="index">  
7 - <view class="swiper-item" @click="clickBannerItem(item)">  
8 - <image :src="item.image" mode="aspectFill" :draggable="false" />  
9 - </view>  
10 - </swiper-item>  
11 - </swiper>  
12 - </uni-swiper-dot>  
13 - <view class="content-section">  
14 - <view class="mine-actions grid col-4 text-center">  
15 - <view class="action-item" @click="handleBarClick(1)">  
16 - <view class=" cuIcon-message text-pink icon"></view>  
17 - <text class="text">消息通知</text>  
18 - </view>  
19 - <view class="action-item" @click="handleBarClick(2)">  
20 - <view class=" cuIcon-edit text-blue icon"></view>  
21 - <text class="text">任务审批</text>  
22 - </view>  
23 - <view class="action-item" @click="handleBarClick(3)">  
24 - <view class=" cuIcon-warn text-mauve icon"></view>  
25 - <text class="text">库存预警</text>  
26 - </view>  
27 - <view class="action-item" @click="handleBarClick(4)">  
28 - <view class="cuIcon-question text-green icon"></view>  
29 - <text class="text">问题反馈</text>  
30 - </view>  
31 - </view>  
32 - </view>  
33 -  
34 - <!-- <uni-section class="uni-section" title="" type="line" padding> -->  
35 - <view class="uni-section">  
36 - <uni-grid :column="4" :highlight="true" @change="change">  
37 - <uni-grid-item>  
38 - <view class="grid-item-box" style="background-color: #fff;">  
39 - <text class="text">¥{{formData.today.order.totalAmount}}</text>  
40 - <text class="text">今日订单 {{formData.today.order.totalNum}}</text>  
41 - </view>  
42 - </uni-grid-item>  
43 - <uni-grid-item>  
44 - <view class="grid-item-box" style="background-color: #fff;">  
45 - <text class="text">¥{{formData.today.returned.totalAmount}}</text>  
46 - <text class="text">今日退单 {{formData.today.returned.totalNum}}</text>  
47 - </view>  
48 - </uni-grid-item>  
49 - <uni-grid-item>  
50 - <view class="grid-item-box" style="background-color: #fff;">  
51 - <text class="text">¥{{formData.sameMonth.order.totalAmount}}</text>  
52 - <text class="text">本月订单 {{formData.sameMonth.order.totalNum}}</text>  
53 - </view>  
54 - </uni-grid-item>  
55 - <uni-grid-item>  
56 - <view class="grid-item-box" style="background-color: #fff;">  
57 - <text class="text">¥{{formData.sameMonth.returned.totalAmount}}</text>  
58 - <text class="text">本月退单 {{formData.sameMonth.returned.totalNum}}</text>  
59 - </view>  
60 - </uni-grid-item>  
61 - </uni-grid>  
62 - </view>  
63 - <!-- </uni-section> -->  
64 - <!-- <view ref="echartContainer"></view>  
65 - -->  
66 - <view ref="echartContainer" id="echartContainer" style="width: 100%; height: 300px;"></view>  
67 - </view>  
68 -  
69 -</template>  
70 -  
71 -<script>  
72 - import storage from '@/utils/storage'  
73 - import {  
74 - orderChart  
75 - } from '@/api/dashboard/analysis'  
76 -  
77 - import * as echarts from 'echarts';  
78 -  
79 - export default {  
80 - data() {  
81 - return {  
82 - current: 0,  
83 - swiperDotIndex: 0,  
84 - data: [{  
85 - image: 'http://xy.wecando21cn.com/static/images/banner/banner01.jpg'  
86 - },  
87 - {  
88 - image: 'http://xy.wecando21cn.com/static/images/banner/banner02.jpg'  
89 - },  
90 - {  
91 - image: 'http://xy.wecando21cn.com/static/images/banner/banner03.jpg'  
92 - }  
93 - ],  
94 - chartInstance: null,  
95 - loading: false,  
96 - formData: {  
97 - today: {  
98 - order: {  
99 - totalAmount: '0',  
100 - totalNum: '0',  
101 - charts: [],  
102 - },  
103 - returned: {  
104 - totalAmount: '0',  
105 - totalNum: '0',  
106 - charts: [],  
107 - },  
108 - },  
109 - sameMonth: {  
110 - order: {  
111 - totalAmount: '0',  
112 - totalNum: '0',  
113 - charts: [],  
114 - },  
115 - returned: {  
116 - totalAmount: '0',  
117 - totalNum: '0',  
118 - charts: [],  
119 - },  
120 - },  
121 - },  
122 - }  
123 - },  
124 -  
125 - mounted() {  
126 - this.loadData();  
127 -  
128 - },  
129 -  
130 - methods: {  
131 - clickBannerItem(item) {  
132 - console.info(item)  
133 - },  
134 - changeSwiper(e) {  
135 - this.current = e.detail.current  
136 - },  
137 -  
138 - handleToInfo() {  
139 - // this.$tab.navigateTo('/pages/mine/info/index')  
140 - this.$tab.redirectTo('/pages/mine/info/index')  
141 - },  
142 -  
143 - loadData() {  
144 - orderChart()  
145 - .then((res) => {  
146 - this.formData = res.data;  
147 - this.initChart();  
148 - });  
149 - },  
150 -  
151 -  
152 -  
153 - async initChart() {  
154 - // 等待 canvas 元素渲染完成(对于 H5 环境可能需要)  
155 - await this.$nextTick();  
156 -  
157 - // 获取 canvas 元素  
158 - const chartDom = document.getElementById('echartContainer');  
159 - // const chartDom = this.$refs.echartContainer; //这种写法无效,暂时找不到原因  
160 -  
161 - // 初始化 ECharts 实例  
162 - this.chartInstance = echarts.init(chartDom);  
163 -  
164 - // 设置图表配置项  
165 - const option = {  
166 - title: {  
167 - text: '',  
168 - },  
169 - tooltip: {},  
170 - legend: {  
171 - data: [],  
172 - },  
173 - xAxis: {  
174 - data: [],  
175 - },  
176 - yAxis: {},  
177 - series: [],  
178 - };  
179 -  
180 - if (this.formData) {  
181 - option.legend.data.push("今天订单");  
182 - option.legend.data.push("今日退单");  
183 - option.legend.data.push("本月订单");  
184 - option.legend.data.push("本月退单");  
185 -  
186 - this.initSeriesData(this.formData.today.order.charts, "今天订单", option);  
187 - this.initSeriesData(this.formData.today.returned.charts, "今日退单", option);  
188 - this.initSeriesData(this.formData.sameMonth.order.charts, "本月订单", option);  
189 - this.initSeriesData(this.formData.sameMonth.returned.charts, "本月退单", option);  
190 - }  
191 -  
192 - this.chartInstance.setOption(option);  
193 -  
194 - },  
195 -  
196 - initSeriesData(charts, name, option) {  
197 -  
198 - let seriedata = [];  
199 - let xAxisData = [];  
200 - let seriesdataUnitData = {  
201 - name: name,  
202 - type: 'line'  
203 - };  
204 - for (let item of charts) {  
205 - seriedata.push(item.totalAmount)  
206 - xAxisData.push(item.createDate);  
207 - }  
208 - this.$set(option.xAxis, "data", xAxisData);  
209 - this.$set(seriesdataUnitData, "data", seriedata);  
210 - option.series.push(seriesdataUnitData);  
211 - },  
212 -  
213 - beforeDestroy() {  
214 - // 销毁图表实例以避免内存泄漏  
215 - if (this.chartInstance) {  
216 - this.chartInstance.dispose();  
217 - this.chartInstance = null;  
218 - }  
219 - },  
220 -  
221 - handleBarClick(type) {  
222 - //type: 1、消息通知 2、审批任务 3、库存预警 4、问题反馈  
223 - if (type == 1) {  
224 - //跳转到消息通知页  
225 - this.$tab.navigateTo('/pages/notice/index')  
226 - } else {  
227 - uni.showToast({  
228 - title: '持续开放中......',  
229 - icon: 'none',  
230 - })  
231 - }  
232 -  
233 - },  
234 - },  
235 - }  
236 -</script>  
237 -  
238 -<style lang="scss">  
239 - .image {  
240 - width: 25px;  
241 - height: 25px;  
242 - }  
243 -  
244 - .text {  
245 - font-size: 14px;  
246 - margin-top: 5px;  
247 - }  
248 -  
249 - .grid-dynamic-box {  
250 - margin-bottom: 15px;  
251 - }  
252 -  
253 - .grid-item-box {  
254 - flex: 1;  
255 - // position: relative;  
256 - /* #ifndef APP-NVUE */  
257 - display: flex;  
258 - /* #endif */  
259 - flex-direction: column;  
260 - align-items: center;  
261 - justify-content: center;  
262 - padding: 15px 0;  
263 - }  
264 -  
265 - .grid-item-box-row {  
266 - flex: 1;  
267 - // position: relative;  
268 - /* #ifndef APP-NVUE */  
269 - display: flex;  
270 - /* #endif */  
271 - flex-direction: row;  
272 - align-items: center;  
273 - justify-content: center;  
274 - padding: 15px 0;  
275 - }  
276 -  
277 - .grid-dot {  
278 - position: absolute;  
279 - top: 5px;  
280 - right: 15px;  
281 - }  
282 -  
283 - .swiper {  
284 - height: 420px;  
285 - }  
286 -  
287 - /* #ifdef H5 */  
288 - @media screen and (min-width: 768px) and (max-width: 1425px) {  
289 - .swiper {  
290 - height: 630px;  
291 - }  
292 - }  
293 -  
294 - @media screen and (min-width: 1425px) {  
295 - .swiper {  
296 - height: 830px;  
297 - }  
298 - }  
299 -  
300 - /* #endif */  
301 -  
302 - .title {  
303 - font-size: 16rpx;  
304 - color: #8f8f94;  
305 - }  
306 -  
307 - /*以下为轮播图样式*/  
308 - .uni-margin-wrap {  
309 - width: 690rpx;  
310 - width: 100%;  
311 - ;  
312 - }  
313 -  
314 - .swiper {  
315 - height: 300rpx;  
316 - }  
317 -  
318 - .swiper-box {  
319 - height: 150px;  
320 - }  
321 -  
322 - .swiper-item {  
323 - /* #ifndef APP-NVUE */  
324 - display: flex;  
325 - /* #endif */  
326 - flex-direction: column;  
327 - justify-content: center;  
328 - align-items: center;  
329 - color: #fff;  
330 - height: 300rpx;  
331 - line-height: 300rpx;  
332 - }  
333 -  
334 - @media screen and (min-width: 500px) {  
335 - .uni-swiper-dot-box {  
336 - width: 400px;  
337 - /* #ifndef APP-NVUE */  
338 - margin: 0 auto;  
339 - /* #endif */  
340 - margin-top: 8px;  
341 - }  
342 -  
343 - .image {  
344 - width: 100%;  
345 - }  
346 - }  
347 -  
348 - .mine-container {  
349 - width: 100%;  
350 - height: 100%;  
351 -  
352 -  
353 - .header-section {  
354 - padding: 15px 15px 45px 15px;  
355 - background-color: #3c96f3;  
356 - color: white;  
357 -  
358 - .login-tip {  
359 - font-size: 18px;  
360 - margin-left: 10px;  
361 - }  
362 -  
363 - .cu-avatar {  
364 - border: 2px solid #eaeaea;  
365 -  
366 - .icon {  
367 - font-size: 40px;  
368 - }  
369 - }  
370 -  
371 - .user-info {  
372 - margin-left: 15px;  
373 -  
374 - .u_title {  
375 - font-size: 14px;  
376 - line-height: 30px;  
377 - }  
378 - }  
379 - }  
380 -  
381 - .content-section {  
382 - position: relative;  
383 - top: -30px;  
384 -  
385 -  
386 - .mine-actions {  
387 - margin: 15px 15px;  
388 - padding: 20px 0px;  
389 - border-radius: 8px;  
390 - background-color: #ffffff;  
391 -  
392 - .action-item {  
393 - .icon {  
394 - font-size: 28px;  
395 - }  
396 -  
397 - .text {  
398 - display: block;  
399 - font-size: 13px;  
400 - margin: 8px 0px;  
401 - }  
402 - }  
403 - }  
404 - }  
405 -  
406 - .uni-section {  
407 - position: relative;  
408 - top: -30px;  
409 - }  
410 - }  
411 -</style>  
pages/login.vue renamed from pages/login/login.vue
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 <view class="login-page"> 2 <view class="login-page">
3 <!-- 自定义头部 --> 3 <!-- 自定义头部 -->
4 <view class="header"> 4 <view class="header">
5 - <image class="header-bg" src="./header_bg.png" /> 5 + <image class="header-bg" src="/static/images/login/header_bg.png" />
6 <view class="header-content"> 6 <view class="header-content">
7 <image class="header-logo" src="/static/logo201.png" mode="widthFix" /> 7 <image class="header-logo" src="/static/logo201.png" mode="widthFix" />
8 <text class="header-title">欢迎登录楚江销售系统</text> 8 <text class="header-title">欢迎登录楚江销售系统</text>
@@ -115,7 +115,7 @@ @@ -115,7 +115,7 @@
115 }, 115 },
116 // 登录成功后,处理函数 116 // 登录成功后,处理函数
117 loginSuccess(result) { 117 loginSuccess(result) {
118 - this.$tab.reLaunch('/pages/index/index') 118 + this.$tab.reLaunch('/pages/index')
119 } 119 }
120 } 120 }
121 } 121 }
@@ -118,7 +118,7 @@ @@ -118,7 +118,7 @@
118 this.$tab.navigateTo('/pages/mine/setting/index') 118 this.$tab.navigateTo('/pages/mine/setting/index')
119 }, 119 },
120 handleToLogin() { 120 handleToLogin() {
121 - this.$tab.reLaunch('/pages/login/login') 121 + this.$tab.reLaunch('/pages/login')
122 }, 122 },
123 handleToAvatar() { 123 handleToAvatar() {
124 this.$tab.navigateTo('/pages/mine/avatar/index') 124 this.$tab.navigateTo('/pages/mine/avatar/index')
@@ -126,7 +126,7 @@ @@ -126,7 +126,7 @@
126 handleLogout() { 126 handleLogout() {
127 this.$modal.confirm('确定注销并退出系统吗?').then(() => { 127 this.$modal.confirm('确定注销并退出系统吗?').then(() => {
128 this.$store.dispatch('LogOut').then(() => { 128 this.$store.dispatch('LogOut').then(() => {
129 - this.$tab.reLaunch('/pages/index/index') 129 + this.$tab.reLaunch('/pages/index')
130 }) 130 })
131 }) 131 })
132 }, 132 },
@@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
50 handleLogout() { 50 handleLogout() {
51 this.$modal.confirm('确定注销并退出系统吗?').then(() => { 51 this.$modal.confirm('确定注销并退出系统吗?').then(() => {
52 this.$store.dispatch('LogOut').then(() => { 52 this.$store.dispatch('LogOut').then(() => {
53 - this.$tab.reLaunch('/pages/index/index') 53 + this.$tab.reLaunch('/pages/index')
54 }) 54 })
55 }) 55 })
56 } 56 }
@@ -59,7 +59,7 @@ @@ -59,7 +59,7 @@
59 methods: { 59 methods: {
60 // 用户登录 60 // 用户登录
61 handleUserLogin() { 61 handleUserLogin() {
62 - this.$tab.navigateTo(`/pages/login/login`) 62 + this.$tab.navigateTo(`/pages/login`)
63 }, 63 },
64 // 获取图形验证码 64 // 获取图形验证码
65 getCode() { 65 getCode() {
@@ -97,7 +97,7 @@ @@ -97,7 +97,7 @@
97 content: "恭喜你,您的账号 " + this.registerForm.username + " 注册成功!", 97 content: "恭喜你,您的账号 " + this.registerForm.username + " 注册成功!",
98 success: function (res) { 98 success: function (res) {
99 if (res.confirm) { 99 if (res.confirm) {
100 - uni.redirectTo({ url: `/pages/login/login` }); 100 + uni.redirectTo({ url: `/pages/login` });
101 } 101 }
102 } 102 }
103 }) 103 })
@@ -111,7 +111,7 @@ @@ -111,7 +111,7 @@
111 registerSuccess(result) { 111 registerSuccess(result) {
112 // 设置用户信息 112 // 设置用户信息
113 this.$store.dispatch('GetInfo').then(res => { 113 this.$store.dispatch('GetInfo').then(res => {
114 - this.$tab.reLaunch('/pages/index/index') 114 + this.$tab.reLaunch('/pages/index')
115 }) 115 })
116 } 116 }
117 } 117 }
1 import { getToken } from '@/utils/auth' 1 import { getToken } from '@/utils/auth'
2 2
3 // 登录页面 3 // 登录页面
4 -const loginPage = "/pages/login/login" 4 +const loginPage = "/pages/login"
5 5
6 // 页面白名单 6 // 页面白名单
7 const whiteList = [ 7 const whiteList = [
8 - '/pages/login/login', '/pages/register', '/pages/common/webview/index' 8 + '/pages/login', '/pages/register', '/pages/common/webview/index'
9 ] 9 ]
10 10
11 // 检查地址白名单 11 // 检查地址白名单
static/images/login/header_bg.png renamed from pages/login/header_bg.png

234 KB

@@ -88,3 +88,82 @@ @@ -88,3 +88,82 @@
88 } 88 }
89 } 89 }
90 } 90 }
  91 +
  92 +
  93 +// 一行省略
  94 +.omit1 {
  95 + word-break: break-all;
  96 + text-overflow: ellipsis;
  97 + display: -webkit-box;
  98 + -webkit-box-orient: vertical;
  99 + -webkit-line-clamp: 1;
  100 + overflow: hidden;
  101 + overflow-wrap:break-word;
  102 + word-break: break-all;
  103 +}
  104 +
  105 +// 两行省略
  106 +.omit2 {
  107 + word-break: break-all;
  108 + text-overflow: ellipsis;
  109 + display: -webkit-box;
  110 + -webkit-box-orient: vertical;
  111 + -webkit-line-clamp: 2;
  112 + overflow: hidden;
  113 + overflow-wrap:break-word;
  114 + word-break: break-all;
  115 +}
  116 +
  117 +// 三行省略
  118 +.omit3 {
  119 + overflow: hidden;
  120 + text-overflow: ellipsis;
  121 + display: -webkit-box;
  122 + -webkit-line-clamp: 3;
  123 + -webkit-box-orient: vertical;
  124 + overflow-wrap:break-word;
  125 + word-break: break-all;
  126 +}
  127 +//四行省略
  128 +.omit4 {
  129 + overflow: hidden;
  130 + text-overflow: ellipsis;
  131 + display: -webkit-box;
  132 + -webkit-line-clamp: 4;
  133 + -webkit-box-orient: vertical;
  134 + overflow-wrap:break-word;
  135 + word-break: break-all;
  136 +}
  137 +
  138 +//五行省略
  139 +.omit5 {
  140 + overflow: hidden;
  141 + text-overflow: ellipsis;
  142 + display: -webkit-box;
  143 + -webkit-line-clamp: 5;
  144 + -webkit-box-orient: vertical;
  145 + overflow-wrap:break-word;
  146 + word-break: break-all;
  147 +}
  148 +
  149 +// 六行省略
  150 +.omit6 {
  151 + overflow: hidden;
  152 + text-overflow: ellipsis;
  153 + display: -webkit-box;
  154 + -webkit-line-clamp: 6;
  155 + -webkit-box-orient: vertical;
  156 + overflow-wrap:break-word;
  157 + word-break: break-all;
  158 +}
  159 +
  160 +// 十五行省略
  161 +.omit15 {
  162 + overflow: hidden;
  163 + text-overflow: ellipsis;
  164 + display: -webkit-box;
  165 + -webkit-line-clamp: 15;
  166 + -webkit-box-orient: vertical;
  167 + overflow-wrap:break-word;
  168 + word-break: break-all;
  169 +}
@@ -56,7 +56,7 @@ config.responseType = 'blob'; @@ -56,7 +56,7 @@ config.responseType = 'blob';
56 showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => { 56 showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => {
57 if (res.confirm) { 57 if (res.confirm) {
58 store.dispatch('LogOut').then(res => { 58 store.dispatch('LogOut').then(res => {
59 - uni.reLaunch({ url: '/pages/login/login' }) 59 + uni.reLaunch({ url: '/pages/login' })
60 }) 60 })
61 } 61 }
62 }) 62 })
@@ -38,7 +38,7 @@ const upload = config => { @@ -38,7 +38,7 @@ const upload = config => {
38 showConfirm("登录状态已过期,您可以继续留在该页面,或者重新登录?").then(res => { 38 showConfirm("登录状态已过期,您可以继续留在该页面,或者重新登录?").then(res => {
39 if (res.confirm) { 39 if (res.confirm) {
40 store.dispatch('LogOut').then(res => { 40 store.dispatch('LogOut').then(res => {
41 - uni.reLaunch({ url: '/pages/login/login/login' }) 41 + uni.reLaunch({ url: '/pages/login' })
42 }) 42 })
43 } 43 }
44 }) 44 })