0
点赞
收藏
分享

微信扫一扫

2022/1/21-2022/2/5

进击的包籽 2022-02-07 阅读 40

2022/1/21
通过列表的find方法获取指定用户的上班列表

业务逻辑说来不过增删改查,add,remove,list等,get,post,delete都是可以照着模仿的。

像 : @click =" show = true " show=true就是一个表达式, 相当于 @click=“f(n)” f(n)就是
show=true。 举个例子,设置添加按钮,触发时弹出弹窗,弹窗的显示就是靠show=true.

v-自定义指令,比如v-only-admin,虽然是一个属性,但是它是一个方法,当方法里面有设置
样式 style.display="none"的时候,这个指令就有了权限。

2022/1/22
user.info 获取用户信息
const getShangbanDate = async()=>{
const res = await user.info();
result(res)
.success((data) => {
console.log(data);
})
};

2022/1/24
时间格式转化为时间戳 Date.parse(new Date())
时间戳转换为时间格式 假设时间戳为a,那么就new Date(a)

const getShangbanData = async () =>{
const res = await user.info();
result(res)
.success(({ data }) => {
account.value = data.account;
});
if(!getSign()||(new Date(flagTime.value).getDate()!=new Date().getDate())){
//这里有个bug,第二天了就应该重新新增一条并且显示新增的那条才对
const res1 = await usersign.add(account.value);
result(res1)
.success(({ data }) => {
allTime.value = data;
shangbanDate.value= Date.parse(allTime.value.shangbanDate);
flagTime.value = shangbanDate.value;
shangbanDate.value = formatTimestamp(shangbanDate.value);
setSign(shangbanDate.value);

    });
}
else{

message.error("已经签到,切勿重复签到!");
}


};
const getXiabanData = async () =>{

const res = await user.info();
result(res)
.success(({ data }) => {
account.value = data.account;
});
console.log(account.value);
const res1 = await usersign.update(account.value);

result(res1)
.success(({ data }) => {
allTime.value = data;
xiabanDate.value= Date.parse(allTime.value.xiabanDate) ;
xiabanDate.value = formatTimestamp(xiabanDate.value);

});
};

2022/1/25
做进一步的优化,让上下班签到的接口一致
const getXiabanData = async () =>{

    const res = await user.info();
result(res)
.success(({ data }) => {
account.value = data.account;
});
console.log(account.value);
const res1 = await usersign.add(account.value,"xiaban");

result(res1)
.success(({ data }) => {
allTime.value = data;
xiabanDate.value= Date.parse(allTime.value.xiabanDate) ;
xiabanDate.value = formatTimestamp(xiabanDate.value);

});
};

if(!getSign()||(new Date(flagSTime.value).getDate()!=new Date().getDate())||
!getxiaSign()||(new Date(flagXTime.value).getDate()!=new Date().getDate()))

space-between 内部div的内部会换行是因为出现了块,所以需要设置“迟到”样式为display:inline-block,否则就会换行。
例子:


<a-button
@click=“getSignData(‘1’)”
type=“primary”
>
上班签到

      </div>
      
      <div>
      
       {{formatTimestamp(shangbanDate)}} 
       <h6 style="display:inline-block">迟到</h6> 
      </div>
    </space-between>

2022/1/26
const getSignData = async (flag) =>{
sign.value = Number(getSign());
xiasign.value = Number(getxiaSign());
console.log(new Date(xiasign.value).getDate()!=new Date().getDate());
if(
new Date(sign.value).getDate()!=new Date().getDate()||
new Date(xiasign.value).getDate()!=new Date().getDate()){
console.log(1);
//这里有个bug,第二天了就应该重新新增一条并且显示新增的那条才对
const res = await user.info();
result(res)
.success(({ data }) => {
account.value = data.account;
});
const res1 = await usersign.add(account.value,flag);

                 result(res1)
.success(({ data }) => {
allTime.value = data;
if(flag=="xiaban"){
xiabanDate.value= Date.parse(allTime.value.xiabanDate) ;


setxiaSign(xiabanDate.value);
}
else{
shangbanDate.value= Date.parse(allTime.value.shangbanDate);


setSign(shangbanDate.value);
}




});
}
else if(new Date(sign.value).getDate()==new Date().getDate()){
//如果不是第二天,就是更新当天的签到情况

}
else{

message.error("已经签到,切勿重复签到!");
}


};

前端写判断条件是为了减少向后端发起请求,后端是负责业务。

建议localstorage存储的数据应该存储在vuex里,这样数据才会响应式变化。

关于之前通过store.state获取userinfo,一直获取不到,是因为是userInfo,而不是userinfo,
i没有大写。下次遇到这种情况就先打印store.state看一下有值吗。然后再取里面的值。

bug:findUser更新的时间应该是最新一条,更新错了,希望能倒序找。

.find(query)
.sort({
_id: -1,
})
.skip((page - 1) * size)
.limit(size)
.exec();
query是对象。 比如({user})。而不是(user).
通过这种方法得到的是数组。

举个例子:const findUser = await UserSign.find({user,}).sort({_id:-1,}).limit(1).exec();
console.log(new Date(Date.parse(findUser[0].shangbanDate)).getDate());
如果是findUser.shangbanDate是获取不到值的。

先保留:
const getSignData = async (flag) =>{
sign.value = Number(getSign());
xiasign.value = Number(getxiaSign());
//这里有个bug,第二天了就应该重新新增一条并且显示新增的那条才对
//页面需要刷新页面才会及时更新数据
//每点击一次后台就会添加数据,而不是更新数据
account.value = store.state.userInfo.account;
const res1 = await usersign.add(account.value,flag);
result(res1)
.success(({ data }) => {
allTime.value = data;
if(flag==“xiaban”){
xiabanDate.value= Date.parse(allTime.value.xiabanDate) ;
setxiaSign(xiabanDate.value);
}
else{
shangbanDate.value= Date.parse(allTime.value.shangbanDate);
setSign(shangbanDate.value);
}
shangbanDate.value = localStorage.getItem("_ss");
xiabanDate.value=localStorage.getItem("_xx");
console.log(shangbanDate.value);

    });





};

想让页面一开始就有显示值的方法是在return处就进行赋值。
想实现这个功能,其实是不用存到localstorage里的。

2022/1/27
删除了迟到的样式:

迟到

应该是只有对象才能被解构

关于axios.get 方法。发现它的传参写法跟post的传参写法是一样的,但是因为存的方式不同,
所以获取的方式不同。
在router中.post的参数通过ctx.request.body获取,而get的参数通过ctx.params获取。

因为curPage是局部变量,所以setPage里面用了getList函数,这样getList函数就可以获取setPage的curpage的值,这也正是利用了闭包原理。

遇到了一个onMounted函数的bug问题,首先写在onMounted函数里的函数就相当于一个自动执行的函数,发生于刷新页面之时。onMounted是一个钩子函数,是一定会执行的。

函数有两种执行方式,一种通过钩子函数,某个时间自动触发执行。一种是事件触发,通过
按钮执行。

上下班签到:
上班八点后签到就算迟到,
下班后六点后签到就算上班一天辛苦了,八点签到就算加班一天。

用户算是完成签到页面了,现在要完成用户的个人资料编辑。
页面显示用户信息,然后用户可以进行个人信息修改。
(个人设置一是可以修改密码,二是可以修改个人信息。)


bug:商品的编辑功能:有一个curEditGood的,其中有的写成了curEditgood,大小写不同,需要改成一致。

发现了ref声明和reactive声明还有一个区别,就是对象。
如果是ref的话,就是变量.value.属性。
如果是reactive的话,就是变量.属性。

2022/1/28
猜测:ctx.params约是前端网页route.params, (const route = useRoute();)也就是get,
get也就是router.push r e c o r d . i d : r o u t e r . p u s h ( ‘ / g o o d s / {record._id} : router.push(`/goods/ record.id:router.push(/goods/{record._id}`)

2022/1/29
用户个人信息包括,用户姓名,用户电话,用户地址(选择器),所在部门,入职时间。(入职时间和离职时间不可以修改)

用户登录成功的时候自动生成用户的入职时间。

用户可以申请离职,管理员可以查看申请离职的用户并删除记录。批准即等于删除。

2022/2/5
选择器 select 一个schema 两个表 关联 界面显示用到子表名字 取值用关联的那个 父,子共值。(就是那个good.classify)
但并不是所有的选择器都是这样的,只是说 有这种情况,有这种对应方案。

举报

相关推荐

0 条评论