diff --git a/前端/miniprogram/pages/fridge/fridge.js b/前端/miniprogram/pages/fridge/fridge.js
new file mode 100644
index 0000000..24a1e6b
--- /dev/null
+++ b/前端/miniprogram/pages/fridge/fridge.js
@@ -0,0 +1,225 @@
+const app = getApp();
+Page({
+ data: {
+ userInfo: {},
+ shorter_nickname:null,
+ hasUserInfo: false,
+ multiArray_top:[['全部','蔬菜','豆/豆制品','肉禽蛋','水产海鲜','水果','乳品烘焙','粮油米面','调味品','酒水饮料','熟食卤味','速食冻品'],['新鲜优先','不新鲜优先']],
+ multiIndex_top:[0,0],
+ selected_kind:"全部",
+ fresh:"新鲜优先",
+ stock:null,
+ if_reverse:"column-reverse",
+ day_limit:3,
+ exists_outdated:false,
+ },
+
+ login(){
+ wx.login({
+ success: (res)=> {
+ if (res.code) {
+ this.setData({
+ code:res.code
+ })
+ } else {
+ console.log('登录失败!' + res.errMsg)
+ }
+ }
+ })
+ wx.showModal({
+ title: '一餐一食',
+ content: '请登录',
+ showCancel : false,
+ confirmText:"登录",
+ success: (res) =>{
+ wx.getUserProfile({
+ desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
+ success: (res) => {
+ app.globalData.userInfo = res.userInfo
+ this.setData( {
+ userInfo:res.userInfo,
+ hasUserInfo:true,
+ shorter_nickname:res.userInfo.nickName.substring(0,10),
+ } );
+ console.log(res.userInfo)
+
+ wx.cloud.callContainer({
+ "config": {
+ "env": "prod-2g058voqbea31ecb"
+ },
+ "path": "/general/nickname/",
+ "header": {
+ "X-WX-SERVICE": "django-5198",
+ 'content-type': 'application/x-www-form-urlencoded'
+ },
+ "method": "POST",
+ data: res.userInfo,
+ success(res){
+ console.log(res)
+ }
+ })
+ },
+ fail:(res)=>{
+ this.login()
+ }
+ })
+ }
+ })
+
+ },
+
+ get_food_stock(){
+ var that = this
+ wx.cloud.callContainer({
+ "config": {
+ "env": "prod-2g058voqbea31ecb"
+ },
+ "path": "fridge/food-stock/",
+ "header": {
+ "X-WX-SERVICE": "django-5198",
+ 'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
+ },
+ "method": "GET",
+ data:{day_limit:this.data.day_limit},
+ success(res){
+ let check = "\"outdated\": 1"
+ if(res.data.result.indexOf(check)>=0){
+ that.setData({
+ exists_outdated:true
+ })
+ }
+ let arr = app.parse_json(res)
+ that.setData({
+ stock:arr,
+ })
+ }
+ })
+ },
+
+ onLoad(){
+ this.login()
+ },
+ onShow(){
+ this.get_food_stock()
+ },
+ bindMultiPickerChange_top: function (e) {
+ console.log('picker发送选择改变,携带值为', e.detail.value)
+ this.setData({
+ selected_kind:this.data.multiArray_top[0][e.detail.value[0]],
+ fresh:this.data.multiArray_top[1][e.detail.value[1]]
+ })
+ if(e.detail.value[1]==1){
+ this.setData({
+ if_reverse:"column"
+ })
+ }
+ else{
+ this.setData({
+ if_reverse:"column-reverse"
+ })
+ }
+
+ },
+
+ bindMultiPickerColumnChange_top: function (e) {
+ console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
+ var data = {
+ multiArray_top: this.data.multiArray_top,
+ multiIndex_top: this.data.multiIndex_top
+ };
+ data.multiIndex_top[e.detail.column] = e.detail.value;
+
+ this.setData(data);
+ },
+
+ onTapNewMeal(){
+ wx.navigateTo({
+ url: '../choices/choices',
+ })
+ },
+
+ onTapSpecificItem(e){
+ var item = JSON.stringify(e.currentTarget.dataset.product)
+ console.log(e)
+ wx.navigateTo({
+ url: '../change_stock/change_stock?item='+item,
+ })
+ },
+
+ test_GET(){
+ wx.cloud.callContainer({
+ "config": {
+ "env": "prod-2g058voqbea31ecb"
+ },
+ "path": "test_get_post/",
+ "header": {
+ "X-WX-SERVICE": "django-5198",
+ "content-type": "application/json"
+ },
+ "method": "GET",
+ data: {type:'vegewswswsws'},
+ success(res){
+ console.log(res.data)
+ }
+ })
+ },
+
+ test_POST(){
+ wx.cloud.callContainer({
+ "config": {
+ "env": "prod-2g058voqbea31ecb"
+ },
+ "path": "test_get_post/",
+ "header": {
+ "X-WX-SERVICE": "django-5198",
+ 'content-type': 'application/x-www-form-urlencoded'
+ },
+ "method": "POST",
+ data: {name:'John',age:18,hobby:'golf'},
+ success(res){
+ console.log(res)
+ }
+ })
+ },
+
+ onTapNewFood(){
+ wx.navigateTo({
+ url: '../add_new_food/add_new_food',
+ })
+ },
+
+ stock_longpress(e){
+ var item = e.currentTarget.dataset.product
+
+ },
+ set_alarm_days(){
+ wx.showModal({
+ title: '需要提醒放置了多少天(含)以上的食物?',
+ showCancel : true,
+ confirmText:"确定",
+ cancelText:"取消",
+ editable:true,
+ placeholderText:"如:3,请输入阿拉伯数字",
+ success:(res)=>{
+ console.log(res)
+ if(res.confirm){
+ if(res.content&&!isNaN(Number(res.content))&&Number(res.content)>=1&&Number(res.content)%1==0){
+ this.setData({
+ day_limit:res.content,
+ })
+ this.get_food_stock()
+ }
+ else{
+ wx.showModal({
+ title: '错误',
+ content:"请输入正整数!",
+ showCancel : false,
+ confirmText:"确定",
+ })
+ }
+
+ }
+ }
+ })
+ }
+})
diff --git a/前端/miniprogram/pages/fridge/fridge.json b/前端/miniprogram/pages/fridge/fridge.json
new file mode 100644
index 0000000..6f5247b
--- /dev/null
+++ b/前端/miniprogram/pages/fridge/fridge.json
@@ -0,0 +1,3 @@
+{
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/前端/miniprogram/pages/fridge/fridge.wxml b/前端/miniprogram/pages/fridge/fridge.wxml
new file mode 100644
index 0000000..8498276
--- /dev/null
+++ b/前端/miniprogram/pages/fridge/fridge.wxml
@@ -0,0 +1,50 @@
+
+
+
+
+
+ {{shorter_nickname}}的冰箱
+
+
+
+
+ {{selected_kind}}
+ {{fresh}}
+ |
+
+
+
+
+
+
+注意:标红食材存放时间≥{{day_limit}}天
+
+
+
+
+
+
+ {{item.name}} {{item.amount}}{{item.unit}} {{item.date}}
+
+
+ {{item.name}} {{item.amount}}{{item.unit}} {{item.date}}
+
+
+
+
+
+
+
+
+
+添加食材
+
+
+ 开启新的一餐
+
+
+
+
+
+
+
diff --git a/前端/miniprogram/pages/fridge/fridge.wxss b/前端/miniprogram/pages/fridge/fridge.wxss
new file mode 100644
index 0000000..12fc821
--- /dev/null
+++ b/前端/miniprogram/pages/fridge/fridge.wxss
@@ -0,0 +1,317 @@
+/**fridge.wxss**/
+.add_icon{
+ position: fixed;
+ bottom:5px;
+ right: 5px;
+ background: rgb(255, 255, 255);
+ box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
+ border-radius: 25px;
+ padding-top: 15px;
+ padding-bottom: 15px;
+ text-align: justify;
+ font-size: 17px;
+ font-weight: 800;
+ z-index: 3;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+.selector{
+ position: relative;
+ z-index:1;
+ width: 75%;
+ color: rgba(0, 0, 0, 0.808);
+ font-size: 40rpx;
+ font-weight: bold;
+ padding-top: 2%;
+ margin-top: 25%;
+ padding-bottom: 10%;
+ background-color: rgba(253, 252, 252, 0.329);
+ box-shadow: 0px 0px 4px rgba(187, 135, 135, 0.25);
+ border-radius: 0px 40rpx 40rpx 0px;
+}
+
+.bottom_button{
+ position: fixed;
+ bottom: 0px;
+ text-align: center;
+ width: 100%;
+ padding-top: 5%;
+ padding-bottom: 5%;
+ z-index: 2;
+ margin: auto;
+ border-radius: 20px 20px 20px 20px;
+ font-weight:bold;
+ font-size: 20px;
+ background: rgba( 248, 138, 138, 0.3 );
+
+ backdrop-filter: blur( 20px );
+
+}
+
+.userinfo {
+ color: rgb(32, 30, 30);
+}
+
+.userinfo-avatar {
+ overflow: hidden;
+ width: 120rpx;
+ height: 120rpx;
+ left:78%;
+ top:60%;
+ border-radius: 100%;
+ border-style: solid;
+ border-width: 0px;
+ position: absolute;
+ box-shadow: 0px 0px 10px rgba(75, 71, 69, 0.247),inset 3px 3px 3px rgba(255, 255, 255, 0.15);
+ transition: transform 1s;
+}
+
+
+
+.usermotto {
+ margin-top: 0px;
+}
+
+.nickname{
+ width:75%;
+ position: absolute;
+ left:5%;
+ top:33%;
+ height: 40px;
+ font-weight:bold;
+ font-size: 30px;
+ line-height: 21px;
+ letter-spacing: 0px;
+}
+
+.FoodClassButton{
+
+ border-radius: 10px;
+ color: #ffffff;
+ padding-top: 50rpx;
+ padding-bottom: 50rpx;
+ font-weight:bold;
+ font-size: 20px;
+ width: 200rpx;
+ height: 100rpx;
+ margin-right: 30rpx;
+ text-align: center;
+ box-shadow: 0px 1px 4px rgba(26, 77, 160, 0.16),inset 3px 3px 3px rgba(255, 255, 255, 0.15);
+ background: rgba( 240, 10, 10, 0.55 );
+ border-radius: 10px;
+ border: 1px solid rgba( 255, 255, 255, 0.18 );
+
+}
+
+.FridgeProfieContainer{
+
+ padding-top: 5%;
+ z-index: 2;
+ margin: auto;
+ position: relative;
+ height: 300rpx;
+}
+
+.FoodClassButtonContainer{
+ margin-top: 30rpx;
+ z-index: 1;
+}
+
+Page{
+ background: white;
+}
+
+.DetailedFoodStockContainer{
+
+ width: 100%;
+ /*background: rgba(255, 208, 121, 0.329);*/
+ /*box-shadow: 3px 10px 40px rgba(26, 77, 160, 0.16),inset 0px 5px 0px rgba(187, 187, 187, 0.021);*/
+ border-radius: 54rpx;
+ background: rgba(255, 255, 255, 0.336);
+ box-shadow: 0 0px 32px 0 rgba(103, 104, 121, 0.37);
+ backdrop-filter: blur( 7px );
+ border: 1px solid rgba( 255, 255, 255, 0.18 );
+ z-index: 0;
+ margin-top: 2%;
+}
+
+
+.DetailedFoodStock{
+ width:80%;
+ height:10%;
+ margin: auto;
+ font-weight:bold;
+ font-size: 17px;
+ padding-left: 5%;
+ padding-right: 5%;
+ padding-top: 5%;
+ padding-bottom: 5%;
+ margin-bottom: 20rpx;
+ background: rgba( 255, 225, 225, 0.25 );
+ box-shadow: 0 0px 5px 0 rgba( 31, 38, 135, 0.37 );
+ border-radius: 10px;
+ transition:transform 0.2s;
+ -webkit-transition:transform 0.2s;
+ z-index: 1;
+ animation: show_up 1s;
+}
+.DetailedFoodStock_tap{
+ background: rgba(255, 255, 255, 0.25);
+ transform: scale(1.05,1.05);
+
+}
+
+
+
+.DetailedFoodStock_Important{
+ width:80%;
+ height:10%;
+ margin: auto;
+ font-weight:bold;
+ font-size: 17px;
+ padding-left: 5%;
+ padding-right: 5%;
+ padding-top: 5%;
+ padding-bottom: 5%;
+ margin-bottom: 20rpx;
+ background: rgba(190, 3, 3, 0.705);
+ box-shadow: 0 0px 5px 0 rgba( 31, 38, 135, 0.37 );
+ border-radius: 10px;
+ border: 1px solid rgba( 255, 255, 255, 0.18 );
+ z-index: 1;
+ color: white;
+ transition:transform 0.2s;
+ -webkit-transition:transform 0.2s;
+ animation: show_up 1s;
+
+}
+.DetailedFoodStock_Important_tap{
+ background: rgba(255, 0, 0, 0.5);
+ transform: scale(1.05,1.05);
+}
+
+
+@keyframes show_up{
+ 0%{opacity: 0;}
+ 100%{opacity: 1;}
+}
+.bg{
+ background:rgba(32, 30, 30, 0.747);
+ width:100%;
+ height: 100%;
+ position: fixed;
+ z-index: 4;
+ top: 0%;
+ backdrop-filter : blur(10rpx)
+}
+
+.deco1{
+ /* Rectangle 2 */
+ position: absolute;
+ width: 49.37px;
+ height: 321.5px;
+ top: -30rpx;
+ right:20rpx;
+ background: linear-gradient(rgba(245, 186, 173, 0.068)5%,rgba(231, 153, 139, 0.075) 50%);
+ transform: rotate(135deg);
+ border-radius: 20rpx;
+ z-index: -10;
+}
+
+.deco2{
+ /* Rectangle 2 */
+ position: absolute;
+ width: 49.37px;
+ height: 321.5px;
+ top: -30rpx;
+ right:250rpx;
+ background: linear-gradient(rgba(245, 186, 173, 0.075)5%,rgba(231, 153, 139, 0.075) 20%);
+ transform: rotate(135deg);
+ border-radius: 20rpx;
+ z-index: -10;
+}
+
+.addchange{
+ position: absolute;
+ margin-left:20%;
+ width: 60%;
+ margin-top: 0%;
+ /*background: rgba(255, 208, 121, 0.329);*/
+ /*box-shadow: 3px 10px 40px rgba(26, 77, 160, 0.16),inset 0px 5px 0px rgba(187, 187, 187, 0.021);*/
+ border-radius: 20rpx;
+ background: rgba(255, 255, 255, 0.75);
+ box-shadow: 0 8px 32px 0 rgba( 31, 38, 135, 0.37 );
+ backdrop-filter: blur( 7px );
+ border: 1px solid rgba( 255, 255, 255, 0.18 );
+ z-index: 5;
+ height: 35%;
+}
+
+.input_num{
+ position: fixed;
+ width: 38%;
+ margin-left: 10%;
+ margin-top: 4%;
+ height: 15%;
+ background-color: rgba(255, 255, 255, 0.473);
+ border-radius: 10rpx;
+}
+
+.input_unit{
+ position: fixed;
+ width: 38%;
+ margin-left: 52%;
+ margin-top: 4%;
+ height: 15%;
+ background-color: rgba(255, 255, 255, 0.473);
+ border-radius: 10rpx;
+}
+
+.alarm{
+ width:80%;
+ margin: auto;
+ font-weight:bold;
+ font-size: 17px;
+ padding-left: 5%;
+ padding-right: 5%;
+ padding-top: 1%;
+ padding-bottom: 1%;
+ margin-bottom: 20rpx;
+ margin-top: 3%;
+ background: rgba(255, 10, 10, 0.281);
+ box-shadow: 0 0px 3px 0 rgba(126, 44, 44, 0.432);
+ border-radius: 10px;
+ backdrop-filter: blur(20px);
+ z-index: 1;
+ color: white;
+ transition: transform 0.2s;
+}
+
+.add_icon_press{
+ background-color: rgba(255, 255, 255, 0.616);
+ transform: scale(1.01,1.01);
+
+}
+
+.bottom_button_press{
+ background: rgba(255, 0, 0, 0.055);
+}
+
+.userinfo-avatar-hover{
+ transform:scale(1.2,1.2)
+}
+
+.loading{
+ text-align: center;
+ width: 100%;
+ padding-top:40%;
+ z-index: 2;
+ margin: auto;
+ position: fixed;
+ font-weight:bold;
+ font-size: 20px;
+ background-color: rgba(0, 0, 0, 0.308);
+ color: white;
+ height: 100%;
+}
\ No newline at end of file