Commit 807c4062 authored by yyh's avatar yyh

代码调整

parent d8d4dc6c
...@@ -10515,6 +10515,11 @@ ...@@ -10515,6 +10515,11 @@
"resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.3.0.tgz", "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.3.0.tgz",
"integrity": "sha1-ZltGMOoTRzFxOfzFy0laqz7F5RM=" "integrity": "sha1-ZltGMOoTRzFxOfzFy0laqz7F5RM="
}, },
"vuex-class": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/vuex-class/-/vuex-class-0.3.2.tgz",
"integrity": "sha512-m0w7/FMsNcwJgunJeM+wcNaHzK2KX1K1rw2WUQf7Q16ndXHo7pflRyOV/E8795JO/7fstyjH3EgqBI4h4n4qXQ=="
},
"watchpack": { "watchpack": {
"version": "1.6.1", "version": "1.6.1",
"resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.1.tgz", "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.1.tgz",
......
...@@ -18,7 +18,8 @@ ...@@ -18,7 +18,8 @@
"vue-clipboard2": "^0.3.1", "vue-clipboard2": "^0.3.1",
"vue-property-decorator": "^8.4.1", "vue-property-decorator": "^8.4.1",
"vue-router": "^3.1.6", "vue-router": "^3.1.6",
"vuex": "^3.1.3" "vuex": "^3.1.3",
"vuex-class": "^0.3.2"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "^4.3.0", "@vue/cli-plugin-babel": "^4.3.0",
......
import axios from '@/utils/http'; import axios from '@/utils/http';
const base = process.env.VUE_APP_SERVER + '/proof'; const base = process.env.VUE_APP_SERVER + '/proof';
const note: any = {
userName: '', // String 账号名
userIcon: '', // String 用户图标图片地址
evidenceName: '', // String 存证名称,ps:溯源时为父级商品名
stepName: '', // String 溯源时的存证名称,非溯源时为空
version: 1 , // Number 数据结构版本号,目前写死为 1
};
const proof = { const proof = {
list(page: number, params: any) { list(page: number, params: any) {
return axios.post(`${base}/list`, { return axios.post(`${base}/list`, {
...@@ -17,17 +24,27 @@ const proof = { ...@@ -17,17 +24,27 @@ const proof = {
}); });
}, },
add(name: string, detailInformation: any, params: any) { add(name: string, detailInformation: any, params: any) {
let userInfo = localStorage.getItem('userInfo');
userInfo = userInfo ? JSON.parse(userInfo) : {};
const userName = (userInfo as any ).user || '';
const userIcon = (userInfo as any ).icon || '';
return axios.post(`${base}/add`, { return axios.post(`${base}/add`, {
name, name,
detail_information: JSON.stringify(detailInformation), detail_information: JSON.stringify(detailInformation),
note: JSON.stringify({...note, evidenceName: name, userName , userIcon }),
...params, ...params,
}); });
}, },
update(id: number, name: string, detailInformation: any, params: any = {}) { update(id: number, name: string, detailInformation: any, params: any = {}) {
let userInfo = localStorage.getItem('userInfo');
userInfo = userInfo ? JSON.parse(userInfo) : {};
const userName = (userInfo as any ).user || '';
const userIcon = (userInfo as any ).icon || '';
return axios.put(`${base}/update`, { return axios.put(`${base}/update`, {
id, id,
name, name,
detail_information: JSON.stringify(detailInformation), detail_information: JSON.stringify(detailInformation),
note: JSON.stringify({...note, evidenceName: name, userName , userIcon }),
...params, ...params,
}); });
}, },
......
...@@ -65,7 +65,10 @@ export default class ProofItem extends Vue { ...@@ -65,7 +65,10 @@ export default class ProofItem extends Vue {
border-radius: 15px; border-radius: 15px;
color:#353535; color:#353535;
text-align: left; text-align: left;
font-size: 15px; font-size: 16px;
.status,.time{
font-size: 12px;
}
.time{ .time{
margin-left: 20px; margin-left: 20px;
} }
......
function timeFormat(timestamp: number): string { function timeFormat(dateRoTimestamp: any, fmt: string = 'yyyy/MM/dd hh:mm:ss'): string {
const date = new Date(timestamp * 1000); let date: any = {};
const Y = date.getFullYear() + '-'; if (typeof dateRoTimestamp === 'object' && dateRoTimestamp.constructor === Date) {
const M = date = dateRoTimestamp;
(date.getMonth() + 1 < 10 } else {
? '0' + (date.getMonth() + 1) date = new Date(dateRoTimestamp ? (parseInt(dateRoTimestamp) * 1000) : new Date().getTime());
: date.getMonth() + 1) + '-'; }
const D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() + '';
return Y + M + D; const o: any = {
'M+': date.getMonth() + 1, // 月份
'd+': date.getDate(), // 日
'h+': date.getHours(), // 小时
'm+': date.getMinutes(), // 分
's+': date.getSeconds(), // 秒
'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
'S': date.getMilliseconds(), // 毫秒
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
for (const k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ?
(o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
}
}
return fmt;
} }
export default { export default {
timeFormat, timeFormat,
......
...@@ -6,6 +6,13 @@ Vue.use(Vuex); ...@@ -6,6 +6,13 @@ Vue.use(Vuex);
export default new Vuex.Store({ export default new Vuex.Store({
state: { state: {
}, },
getters: {
userInfo(): any {
let userInfo = localStorage.getItem('userInfo');
userInfo = userInfo ? JSON.parse(userInfo) : {};
return (userInfo as any);
},
},
mutations: { mutations: {
}, },
actions: { actions: {
......
...@@ -6,6 +6,7 @@ import axios from 'axios'; ...@@ -6,6 +6,7 @@ import axios from 'axios';
import router from '../router'; import router from '../router';
import store from '../store/index'; import store from '../store/index';
import { Toast } from 'vant'; import { Toast } from 'vant';
import user from '@/api/user';
/** /**
* 提示函数 * 提示函数
* 禁止点击蒙层、显示一秒后关闭 * 禁止点击蒙层、显示一秒后关闭
...@@ -74,7 +75,9 @@ instance.interceptors.request.use( ...@@ -74,7 +75,9 @@ instance.interceptors.request.use(
// 后台根据携带的token判断用户的登录情况,并返回给我们对应的状态码 // 后台根据携带的token判断用户的登录情况,并返回给我们对应的状态码
// 而后我们可以在响应拦截器中,根据状态码进行一些统一的操作。 // 而后我们可以在响应拦截器中,根据状态码进行一些统一的操作。
// token && (config.headers.Authorization = token); // token && (config.headers.Authorization = token);
config.headers.Authorization = localStorage.getItem('token'); let userInfo = localStorage.getItem('userInfo');
userInfo = userInfo ? JSON.parse(userInfo) : {};
config.headers.Authorization = (userInfo as any ).token || '';
return config; return config;
}, },
(error: any) => Promise.reject(error)); (error: any) => Promise.reject(error));
......
<template> <template>
<div class="login"> <div class="login">
<van-form ref="loginForm" @submit="onSubmit"> <van-form ref="loginForm" @submit="onSubmit">
<img src="@/assets/logo.png" alt="">
<van-field <van-field
v-model="phone" v-model="phone"
:rules="[{ pattern: /1\d{10}/, message: '请输入正确的手机号' }]" :rules="[{ pattern: /1\d{10}/, message: '请输入正确的手机号' }]"
...@@ -21,7 +20,7 @@ ...@@ -21,7 +20,7 @@
<van-button @click="sendCode" plain size="small" color="#3F79FE" type="primary" native-type="button">{{btnStr}}</van-button> <van-button @click="sendCode" plain size="small" color="#3F79FE" type="primary" native-type="button">{{btnStr}}</van-button>
</template> </template>
</van-field> </van-field>
<van-button block color="#3F79FE" type="primary" native-type="submit">登录</van-button> <van-button block color="#3F79FE" type="primary" native-type="submit">注册/登录</van-button>
</van-form> </van-form>
</div> </div>
</template> </template>
...@@ -46,7 +45,7 @@ export default class Login extends Vue { ...@@ -46,7 +45,7 @@ export default class Login extends Vue {
phone: this.phone, phone: this.phone,
code: this.smsCode, code: this.smsCode,
}); });
localStorage.setItem('token', res.token); localStorage.setItem('userInfo', JSON.stringify(res));
this.$router.replace({path: '/home'}); this.$router.replace({path: '/home'});
} }
get btnStr() { get btnStr() {
...@@ -74,8 +73,11 @@ export default class Login extends Vue { ...@@ -74,8 +73,11 @@ export default class Login extends Vue {
<style scoped lang="scss"> <style scoped lang="scss">
.login{ .login{
display: flex; display: flex;
align-items: start; align-items: center;
justify-content: center;
flex-direction: column; flex-direction: column;
padding: 30px 30px; padding: 30px 30px;
min-height: 100vh;
box-sizing: border-box;
} }
</style> </style>
\ No newline at end of file
...@@ -181,7 +181,6 @@ export default class ProofList extends Vue { ...@@ -181,7 +181,6 @@ export default class ProofList extends Vue {
private async getList() { private async getList() {
const { chainStatus } = this; const { chainStatus } = this;
const params = { const params = {
page_size: 5,
status: Array.isArray(chainStatus) ? chainStatus : [ chainStatus ], status: Array.isArray(chainStatus) ? chainStatus : [ chainStatus ],
}; };
const res = await this.$api.proof.list(this.page++, params); const res = await this.$api.proof.list(this.page++, params);
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<van-list class="about" <van-list class="about"
v-model="loading" v-model="loading"
:finished="finished" :finished="finished"
finished-text="没有更多了" finished-text=""
@load="onLoad" @load="onLoad"
> >
<template-item <template-item
......
<template> <template>
<div class="user-index"> <div class="user-index">
<van-cell value="回收站" center is-link :to="{name:'RecycleList'}"> <header>
<van-image width="55" round height="55" :src="userInfo.icon"></van-image>
<p style="margin-left:30px;">{{userInfo.user}}</p>
</header>
<van-cell style="margin-top:40px;" value="回收站" center is-link :to="{name:'RecycleList'}">
<template #icon> <template #icon>
<common-svg name="huishouzhan" style="margin-right:10px;"></common-svg> <common-svg name="huishouzhan" style="margin-right:10px;"></common-svg>
</template> </template>
...@@ -10,7 +14,7 @@ ...@@ -10,7 +14,7 @@
<script lang="ts"> <script lang="ts">
import { Component, Prop, Vue } from 'vue-property-decorator'; import { Component, Prop, Vue } from 'vue-property-decorator';
import { Cell, Form, Field, CellGroup, Button, Image } from 'vant'; import { Cell, Form, Field, CellGroup, Button, Image } from 'vant';
import { Getter } from 'vuex-class';
@Component({ @Component({
components: { components: {
[Form.name]: Form, [Form.name]: Form,
...@@ -21,6 +25,7 @@ import { Cell, Form, Field, CellGroup, Button, Image } from 'vant'; ...@@ -21,6 +25,7 @@ import { Cell, Form, Field, CellGroup, Button, Image } from 'vant';
}, },
}) })
export default class Index extends Vue { export default class Index extends Vue {
@Getter('userInfo') private userInfo!: any;
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
...@@ -28,6 +33,9 @@ export default class Index extends Vue { ...@@ -28,6 +33,9 @@ export default class Index extends Vue {
display: flex; display: flex;
align-items: start; align-items: start;
flex-direction: column; flex-direction: column;
margin-top: 30px; padding: 30px;
header{
display: flex;
}
} }
</style> </style>
\ No newline at end of file
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<div v-for="item in list" :key="item.id" class="item"> <div v-for="item in list" :key="item.id" class="item">
<div style="color:#353535;font-size:16px;margin-bottom:9px;">{{item.name}}</div> <div style="color:#353535;font-size:16px;margin-bottom:9px;">{{item.name}}</div>
<div>删除理由 {{item.abandon_remark}}</div> <div>删除理由 {{item.abandon_remark}}</div>
<div>删除时间 {{item.update_time}}</div> <div>删除时间 {{item.update_time |timeFormat}}</div>
</div> </div>
</van-list> </van-list>
</div> </div>
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<script lang="ts"> <script lang="ts">
import { Component, Prop, Vue } from 'vue-property-decorator'; import { Component, Prop, Vue } from 'vue-property-decorator';
import { List, Popup, Button, Image, Picker, Grid, GridItem, Empty } from 'vant'; import { List, Popup, Button, Image, Picker, Grid, GridItem, Empty } from 'vant';
import {VALID} from '@/const/enum';
@Component({ @Component({
components: { components: {
[List.name]: List, [List.name]: List,
...@@ -32,7 +32,7 @@ export default class RecycleList extends Vue { ...@@ -32,7 +32,7 @@ export default class RecycleList extends Vue {
private finished: boolean = false; private finished: boolean = false;
private async getList() { private async getList() {
const params = { const params = {
is_valid: 1, // 1不可用 is_valid: VALID.UNUSABLE, // 1不可用
}; };
const res = await this.$api.proof.list(this.page++, params); const res = await this.$api.proof.list(this.page++, params);
this.total = res.total; this.total = res.total;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment