This commit is contained in:
gyh 2024-04-01 15:54:27 +08:00
parent 9c3d9c7c83
commit 02580fc6ab
3792 changed files with 829443 additions and 0 deletions

30
.gitignore vendored Normal file
View File

@ -0,0 +1,30 @@
test.php
/backstage/uploadfiles/
/backstage/outputExcel/
/backstage/application/logs/
/backstage/application/logs/api/logs/
/backstage/application/backstage/logs/
/backstage/application/api/logs/
/m/img/
/m2/
/touch/*.ttf
/touch/*.eot
/touch/*.woff
/touch/*.svg
/touch2/
/show/run/
/show/wap/
/show/images/thumb/
/.idea
*.xls
*.xlsx
*.doc
*.docx
*.bat
web.config
android_yzf_update.php
*.apk
# 验证码图片
/backstage/captcha
.htaccess

201
add.php Normal file
View File

@ -0,0 +1,201 @@
<div class="modal-dialog modal-primary modal-lg">
<div class="modal-content">
<form id="submitForm">
<div class="modal-header">
<button aria-label="Close" data-dismiss="modal" class="close" type="button"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">添加菜谱类型</h4>
</div>
<div class="modal-body">
<div id="alert"></div>
<div class="row">
<div class="col-md-12">
<div class="box box-solid bg-teal-gradient">
<div class="box-header with-border">
<h3 class="box-title">菜谱信息录入</h3>
<div class="box-tools pull-right">
<button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div>
</div><!-- /.box-header -->
<div class="box-body">
<div class="row col-md-12">
<div class="box-body">
<div class="row margin-bottom">
<div class="col-md-12">
<div class="form-group">
<label class="control-label col-md-2">类型名称</label>
<div class="col-md-10">
<div class="col-md-12">
<input name="name" type="text" class="form-control" value="">
</div>
</div>
</div>
</div>
</div>
<div class="row margin-bottom">
<div class="col-md-12">
<div class="form-group">
<label class="control-label col-md-2">类型</label>
<div class="col-md-10">
<div class="col-md-12">
<select name="mealtype" class="form-control select2">
<option value="1">堂食</option>
<option value="2">外带</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="row margin-bottom">
<div class="col-md-12">
<div class="form-group">
<label class="control-label col-md-2">取餐开始时间</label>
<div class="col-md-10">
<div class="col-md-6">
<div class="input-group">
<input name="start_time" class="form-control form-date form-date-hour" value="00:00" readonly type="text">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row margin-bottom">
<div class="col-md-12">
<div class="form-group">
<label class="control-label col-md-2">取餐结束时间</label>
<div class="col-md-10">
<div class="col-md-3">
<select name="end_time_type" class="form-control">
<option value="1">当天</option>
<option value="2">第二天</option>
</select>
</div>
<div class="col-md-6">
<div class="input-group">
<input name="end_time" class="form-control form-date form-date-hour" value="23:00" readonly type="text">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row margin-bottom">
<div class="col-md-12">
<div class="form-group">
<?foreach($userTypeTimeList as $k => $v) {?>
<?
$endTimeType = 1;
$arr = explode(':',$v['user_end_time']);
if(intval($arr[0]) > 24){
$endTimeType = 2;
$arr = explode(':',$v['user_end_time']);
$hour = $arr[0];
$minute = $arr[1];
$hour = intval($hour) - 24;
$v['user_end_time'] = "{$hour}:{$minute}";
}
?>
<label class="control-label col-md-2"><?=$v['user_type_name']?>取餐时间限制</label>
<div class="col-md-10 no-margin form-group ">
<div class="col-md-3">
开始 <input name="start_time_<?=$v['id']?>" class="form-control form-date form-date-hour" readonly type="text" value="<?=$v['user_start_time']?>">
</div>
<div class="col-md-6">
结束
<select name="end_time_type_<?=$v['id']?>" class="form-control">
<option value="1" <?=($endTimeType==1)?"selected":""?>>当天</option>
<option value="2" <?=($endTimeType==2)?"selected":""?>>第二天</option>
</select>
<input name="end_time_<?=$v['id']?>" class="form-control form-date form-date-hour" readonly type="text" value="<?=$v['user_end_time']?>">
</div>
</div>
<?}?>
</div>
</div>
</div>
<div class="row margin-bottom">
<div class="col-md-12">
<div class="form-group">
<label class="control-label col-md-2">开放用户类型</label>
<div class="col-md-10 no-margin form-group ">
<?php foreach($userTypeList as $type):?>
<div class="col-md-3">
<input name="user_type_ids[]" type="checkbox" value="<?=$type['id']?>" checked> <?=$type['name']?>
</div>
<?php endforeach;?>
</div>
</div>
</div>
</div>
<div class="row margin-bottom">
<div class="col-md-12">
<div class="form-group">
<label class="control-label col-md-2">开放食堂</label>
<div class="col-md-10 no-margin form-group ">
<?php foreach($hallList as $hall):?>
<div class="col-md-3">
<input name="dining_hall_ids[]" type="checkbox" value="<?=$hall['id']?>" checked> <?=$hall['name']?>
</div>
<?php endforeach;?>
</div>
</div>
</div>
</div>
</div><!-- /.box-body -->
</div><!-- /.row -->
</div><!-- ./box-body -->
</div><!-- /.box -->
</div>
</div>
</div>
<div class="modal-footer">
<button data-dismiss="modal" class="btn btn-default" type="button">关闭</button>
<button id="submitBtn" type="submit" name="doSubmit" class="btn btn-primary">确认</button>
</div>
</form>
</div><!-- /.modal-content -->
</div>
<script>
$(function () {
$(".form-date-hour").datetimepicker({
language: "zh-CN",
weekStart: 1,
todayBtn: 1,
autoclose: 1,
todayHighlight: 1,
startView: 1,
minView: 0,
maxView: 1,
forceParse: 0,
format: 'hh:ii:00'
});
var submitForm = $('#submitForm');
var validator = submitForm.validate({
rules: {
name: {
required: true
},
start_time: {
required: true
},
end_time: {
required: true
}
},
submitHandler: function (form) {
cancelClick("submitBtn");
submitForm.ajaxSubmit({
url: "<?=site_url('meal/add')?>",
type: 'post',
success: function(data){
var data = JSON.parse(data);
$.zui.messager.show(data.msg);
if(data.success)getListByPage(1);
}
});
}
});
});
</script>

1
android/dist/css/app.4f3e354c.css vendored Normal file
View File

@ -0,0 +1 @@
body,html{width:100%;height:100%}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;height:100%}

View File

@ -0,0 +1 @@
table[data-v-01053884]{margin:0 auto;width:85%;font-size:2.8rem}.take-result-head[data-v-025465d3]{display:flex;position:relative;padding:0 4rem 1rem 4rem}.take-result-head .take-result-head-img[data-v-025465d3]{height:10rem}.take-result-head .take-result-head-img img[data-v-025465d3]{max-height:100%}.take-result-user-info[data-v-025465d3]{display:flex;align-items:flex-end;margin-left:2rem}.take-result-table table{width:100%}.pay-result[data-v-b5cfdd84]{display:flex}.pay-result-img[data-v-b5cfdd84]{height:100%;width:30rem}.pay-result-img img[data-v-b5cfdd84]{max-height:100%;max-width:100%}.pay-result-user-info[data-v-b5cfdd84]{margin:0 4rem}.outside-content[data-v-4791d6a4]{text-align:left;padding:0 5rem}.outside-index[data-v-4791d6a4]{font-size:2rem}.outside-pay[data-v-4791d6a4],.outside-take[data-v-4791d6a4]{text-align:center}.outside-title[data-v-4791d6a4]{font-size:3rem}.outside-title h2[data-v-4791d6a4]{margin:0}.outside-result-content[data-v-4791d6a4]{margin-top:1rem;font-size:2rem;height:34rem}

View File

@ -0,0 +1 @@
table[data-v-01053884]{margin:0 auto;width:85%;font-size:2.8rem}.wrapper[data-v-4b5daafa]{display:flex;align-items:center;justify-content:center;height:100%}.block[data-v-4b5daafa]{width:60rem;height:30rem;font-size:4rem;background-color:#fff}.dialog-center[data-v-4b5daafa]{background:#ccc}.dialog-center[data-v-4b5daafa],.wrapper[data-v-0d956876]{height:100%;display:flex;justify-content:center;align-items:center}.block[data-v-0d956876]{width:60rem;height:30rem;font-size:4rem;background-color:#fff}.dialog-center[data-v-0d956876]{height:100%;background:#ccc}.result-img[data-v-0d956876]{width:20rem;margin:1rem;height:94%;overflow:hidden}.result-img img[data-v-0d956876]{max-width:100%;max-height:85%}.dialog-title[data-v-0d956876]{text-align:left;padding-left:1rem;padding-top:.5rem;font-size:2rem}.result-content[data-v-0d956876]{display:flex;position:relative;color:#000;height:100%}.result-content .result-user-info[data-v-0d956876]{position:absolute;padding:3rem;font-size:2rem;text-align:left}.result-user-info p[data-v-0d956876]{padding:0;margin:0}.result-content-title[data-v-0d956876]{margin:3rem;font-size:4rem}.meal-pay-content[data-v-3d548ea4]{padding:1rem 5rem}.meal-pay-content .meal-pay-input[data-v-3d548ea4]{padding:0;display:flex;justify-content:space-between;height:5rem}.meal-pay-content .meal-pay-input input[data-v-3d548ea4]{width:78%;font-size:2rem;padding:1rem}.meal-pay-content .meal-pay-click[data-v-3d548ea4]{text-align:left}.meal-pay-content .meal-pay-click p[data-v-3d548ea4]{font-size:2rem}.meal-pay-content .meal-pay-click .meal-tag[data-v-3d548ea4]{display:inline-block;padding:1.5rem 1rem;margin:.5rem .5rem;font-size:2rem;width:7rem;text-align:center}.tabel-compontent[data-v-618df8b8]{position:relative}.tabel-compontent .tabel-res-message[data-v-618df8b8]{position:absolute;width:85%;height:100%;display:flex;align-items:center;justify-content:flex-end;color:red;font-size:4rem;font-weight:550;left:7.5%}.tabel-compontent .tabel-res-message span[data-v-618df8b8]{border:.5rem solid red;margin-right:1rem}.inside-notice-bar .van-notice-bar{font-size:25px}.inside-notice-bar .van-notice-bar .van-notice-bar__content{margin:5px}.notice-swipe{height:40px;line-height:40px}.title[data-v-ac3bed18]{display:flex;justify-content:space-between;align-items:center;padding:0 5rem}.title .titlte-content[data-v-ac3bed18]{display:flex;font-size:2.5rem}.title .title-btn .title-btn-all[data-v-ac3bed18]{margin:.5rem;border-radius:10px;height:4rem}.outside-take[data-v-ac3bed18]{font-size:3rem}.inside-table[data-v-ac3bed18]{padding:1rem 0}.inside-footer[data-v-ac3bed18]{padding:0 5rem;text-align:left;position:absolute;bottom:1rem;width:85%}.inside-footer h4[data-v-ac3bed18]{font-size:3rem;margin:.5rem 0}.wrapper-loading[data-v-ac3bed18]{height:100%}.wrapper-loading .van-loading[data-v-ac3bed18]{top:50%}.keypad_type[data-v-ac3bed18]{font-size:2rem}.keypad_type button[data-v-ac3bed18]{font-size:1.1rem}.consume_list[data-v-ac3bed18]{width:80%;height:60vh;overflow-y:scroll}.consume_list table[data-v-ac3bed18]{width:80%;margin-left:10%}.consume_list table thead th[data-v-ac3bed18]{font-size:1.8rem;text-align:center;margin-top:1.5rem;line-height:3rem}.consume_list table tr[data-v-ac3bed18]{line-height:3rem}.user_info_table[data-v-ac3bed18]{width:80%;height:60vh;margin:auto}.user_info_table table[data-v-ac3bed18]{width:60%;margin-left:25%}.user_info_table table tr[data-v-ac3bed18]{line-height:5rem}.user_info_table table td[data-v-ac3bed18]{font-size:2.5rem;text-align:center;font-weight:400}.title .title-btn .van-button--normal{font-size:2.5rem}.consume_list table tr{line-height:3rem}.consume_list table td{font-size:1.8rem;text-align:center;font-weight:400}

View File

@ -0,0 +1 @@
.home .home-button[data-v-526c0f6c]{margin:5px}

File diff suppressed because one or more lines are too long

BIN
android/dist/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

1
android/dist/index.html vendored Normal file
View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>size_5</title><link href="css/chunk-296cdd04.39f281fd.css" rel="prefetch"><link href="css/chunk-6a439183.699eaaff.css" rel="prefetch"><link href="css/chunk-a1d14294.98c7db21.css" rel="prefetch"><link href="js/chunk-296cdd04.5f1e0a4d.js" rel="prefetch"><link href="js/chunk-6a439183.b46ca093.js" rel="prefetch"><link href="js/chunk-a1d14294.e4571292.js" rel="prefetch"><link href="css/app.4f3e354c.css" rel="preload" as="style"><link href="css/chunk-vendors.3b0bce19.css" rel="preload" as="style"><link href="js/app.540645c1.js" rel="preload" as="script"><link href="js/chunk-vendors.5361a069.js" rel="preload" as="script"><link href="css/chunk-vendors.3b0bce19.css" rel="stylesheet"><link href="css/app.4f3e354c.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but size_5 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.5361a069.js"></script><script src="js/app.540645c1.js"></script></body></html>

2
android/dist/js/app.540645c1.js vendored Normal file

File diff suppressed because one or more lines are too long

1
android/dist/js/app.540645c1.js.map vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-296cdd04"],{"0117":function(t,e,s){"use strict";s("a530")},1543:function(t,e,s){"use strict";s("6c0b")},"5f58":function(t,e,s){},"6c0b":function(t,e,s){},"865c":function(t,e,s){},8830:function(t,e,s){"use strict";var n=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[s("table",{attrs:{border:"1",cellspacing:"0",cellpadding:"3"}},[t._m(0),s("tbody",t._l(t.userMealInfo,(function(e,n){return s("tr",{key:n},[s("td",[t._v(t._s(e.meal_name))]),s("td",[t._v(t._s(e.dish_name))]),s("td",[t._v(t._s(e.dish_price)+"元")]),s("td",[t._v(t._s(e.dish_amount))])])})),0)])])},a=[function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("thead",[s("tr",[s("th",[t._v("类型")]),s("th",[t._v("菜名")]),s("th",[t._v("价格")]),s("th",[t._v("份数")])])])}],c={props:{userMealInfo:{type:Array}}},i=c,r=(s("9c3a"),s("2877")),u=Object(r["a"])(i,n,a,!1,null,"01053884",null);e["a"]=u.exports},"9c3a":function(t,e,s){"use strict";s("5f58")},a530:function(t,e,s){},bed2:function(t,e,s){"use strict";s.r(e);var n=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"outside-content"},[t._m(0),s("div",{staticClass:"outside-index"},[t._m(1),t._m(2)])])},a=[function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"outside-title"},[s("h2",[t._v("XX饭堂 XX窗口")])])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"outside-pay"},[s("h2",[t._v("请刷卡\\刷脸\\刷付款码支付10元")])])},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"outside-take"},[s("h2",[t._v("请刷卡\\刷脸\\刷付款码取餐")])])}],c=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"take-result"},[t._m(0),s("div",{staticClass:"take-result-table"},[s("my-table")],1)])},i=[function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"take-result-head"},[s("div",{staticClass:"take-result-head-img"}),s("span",{staticClass:"take-result-user-info"},[t._v("XX年级李四")])])}],r=s("8830"),u={components:{myTable:r["a"]},data:function(){return{}}},l=u,o=(s("cac3"),s("1543"),s("2877")),_=Object(o["a"])(l,c,i,!1,null,"025465d3",null),d=_.exports,f=function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)},v=[function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"pay-result"},[s("div",{staticClass:"pay-result-img"}),s("div",{staticClass:"pay-result-user-info"},[s("p",[t._v("XX年级李四")]),s("h2",[t._v("支付10元成功")]),s("h2",[t._v("余额:10元")])])])}],h={data:function(){return{}}},m=h,p=(s("0117"),Object(o["a"])(m,f,v,!1,null,"b5cfdd84",null)),b=p.exports,C={components:{takeResult:d,payResult:b},data:function(){return{}},methods:{}},k=C,y=(s("e5d1"),Object(o["a"])(k,n,a,!1,null,"4791d6a4",null));e["default"]=y.exports},c33b:function(t,e,s){},cac3:function(t,e,s){"use strict";s("865c")},e5d1:function(t,e,s){"use strict";s("c33b")}}]);
//# sourceMappingURL=chunk-296cdd04.5f1e0a4d.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-a1d14294"],{4978:function(t,n,o){"use strict";o("a847")},a411:function(t,n,o){"use strict";o.r(n);var e=function(){var t=this,n=t.$createElement,o=t._self._c||n;return o("div",{staticClass:"home"},[o("router-link",{attrs:{to:"/inside?channel_id=1"}},[o("van-button",[t._v("Go to inside")])],1),o("router-link",{attrs:{to:"/outside"}},[o("van-button",[t._v("Go to outside")])],1)],1)},i=[],s={},a=s,u=(o("4978"),o("2877")),c=Object(u["a"])(a,e,i,!1,null,"526c0f6c",null);n["default"]=c.exports},a847:function(t,n,o){}}]);
//# sourceMappingURL=chunk-a1d14294.e4571292.js.map

View File

@ -0,0 +1 @@
{"version":3,"sources":["webpack:///./src/view/home/index.vue?d182","webpack:///./src/view/home/index.vue?cc32","webpack:///src/view/home/index.vue","webpack:///./src/view/home/index.vue?5bd3","webpack:///./src/view/home/index.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","staticRenderFns","component"],"mappings":"gHAAA,W,yCCAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,QAAQ,CAACF,EAAG,cAAc,CAACG,MAAM,CAAC,GAAK,yBAAyB,CAACH,EAAG,aAAa,CAACJ,EAAIQ,GAAG,mBAAmB,GAAGJ,EAAG,cAAc,CAACG,MAAM,CAAC,GAAK,aAAa,CAACH,EAAG,aAAa,CAACJ,EAAIQ,GAAG,oBAAoB,IAAI,IAC7TC,EAAkB,GCWtB,KCZ8V,I,wBCQ1VC,EAAY,eACd,EACAX,EACAU,GACA,EACA,KACA,WACA,MAIa,aAAAC,E","file":"js/chunk-a1d14294.e4571292.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=526c0f6c&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"home\"},[_c('router-link',{attrs:{\"to\":\"/inside?channel_id=1\"}},[_c('van-button',[_vm._v(\"Go to inside\")])],1),_c('router-link',{attrs:{\"to\":\"/outside\"}},[_c('van-button',[_vm._v(\"Go to outside\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"home\">\r\n <router-link to=\"/inside?channel_id=1\">\r\n <van-button>Go to inside</van-button>\r\n </router-link>\r\n <router-link to=\"/outside\">\r\n <van-button>Go to outside</van-button>\r\n </router-link>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {};\r\n</script>\r\n<style scoped>\r\n.home .home-button {\r\n margin: 5px;\r\n}\r\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=526c0f6c&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=526c0f6c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"526c0f6c\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,viewport-fit=cover,user-scalable=no"><link rel="icon" href="favicon.ico"><title>饭堂取餐机</title><link href="static/css/chunk-0f20ec37.8c6f8961.css" rel="prefetch"><link href="static/css/chunk-2af52825.dcb52ef6.css" rel="prefetch"><link href="static/css/chunk-494fc044.e81471d3.css" rel="prefetch"><link href="static/css/chunk-65274dfe.ad1b4d1d.css" rel="prefetch"><link href="static/css/chunk-f8a4d762.11f28699.css" rel="prefetch"><link href="static/js/chunk-0f20ec37.c7ee9180.js" rel="prefetch"><link href="static/js/chunk-0f7c9032.b1d1146c.js" rel="prefetch"><link href="static/js/chunk-2af52825.5fbf3abb.js" rel="prefetch"><link href="static/js/chunk-3d8d68e8.16bb50b3.js" rel="prefetch"><link href="static/js/chunk-494fc044.5535486b.js" rel="prefetch"><link href="static/js/chunk-65274dfe.2a095eb7.js" rel="prefetch"><link href="static/js/chunk-f8a4d762.778a8c09.js" rel="prefetch"><link href="static/css/chunk-vendors.045571ae.css" rel="preload" as="style"><link href="static/css/index.d570524b.css" rel="preload" as="style"><link href="static/js/chunk-vendors.b6559d98.js" rel="preload" as="script"><link href="static/js/index.3b5ace92.js" rel="preload" as="script"><link href="static/css/chunk-vendors.045571ae.css" rel="stylesheet"><link href="static/css/index.d570524b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but 饭堂取餐机 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.b6559d98.js"></script><script src="static/js/index.3b5ace92.js"></script></body></html>

View File

@ -0,0 +1,3 @@
<?php
$url = $_SERVER['QUERY_STRING'] . "&t=".time();
header("location: ./index.html?" . $url);

View File

@ -0,0 +1 @@
.van-empty{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:1.06667rem 0}.van-empty__image{width:5.33333rem;height:5.33333rem}.van-empty__image img{width:100%;height:100%}.van-empty__description{margin-top:.53333rem;padding:0 2rem;color:#969799;font-size:.46667rem;line-height:.66667rem}.van-empty__bottom{margin-top:.8rem}.card-bg[data-v-fa2d40f2]{background-color:#fbbf24;color:#fff}.bubble-bg[data-v-fa2d40f2]{background-image:url(../../static/img/bubble.c50b4336.png);-webkit-background-size:contain;background-size:contain}

View File

@ -0,0 +1 @@
.username{color:#3866de}table[data-v-fa8b194e]{background-color:#fff;border:.03333rem solid #dcdee0;-webkit-border-radius:.26667rem;border-radius:.26667rem;overflow:hidden;border-collapse:collapse;border-style:hidden;-webkit-box-shadow:0 0 0 .03333rem #dcdee0;box-shadow:0 0 0 .03333rem #dcdee0}td[data-v-fa8b194e],th[data-v-fa8b194e]{border:.03333rem solid #dcdee0}table tbody tr[data-v-fa8b194e]:nth-child(odd){background-color:#ebedf0}table tbody tr[data-v-fa8b194e]:nth-child(2n){background-color:#fff}.hasTake[data-v-fa8b194e]{color:#ee0a24;border-color:#ee0a24;-webkit-transform:rotate(-20deg);transform:rotate(-20deg)}.rest[data-v-fa8b194e]{font-size:1rem;margin-top:1rem}

View File

@ -0,0 +1 @@
.van-empty{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:1.06667rem 0}.van-empty__image{width:5.33333rem;height:5.33333rem}.van-empty__image img{width:100%;height:100%}.van-empty__description{margin-top:.53333rem;padding:0 2rem;color:#969799;font-size:.46667rem;line-height:.66667rem}.van-empty__bottom{margin-top:.8rem}table[data-v-226a6374]{background-color:#fff;border:.03333rem solid #dcdee0;-webkit-border-radius:.26667rem;border-radius:.26667rem;overflow:hidden;border-collapse:collapse;border-style:hidden;-webkit-box-shadow:0 0 0 .03333rem #dcdee0;box-shadow:0 0 0 .03333rem #dcdee0}td[data-v-226a6374],th[data-v-226a6374]{border:.03333rem solid #dcdee0}table tbody tr[data-v-226a6374]:nth-child(odd){background-color:#ebedf0}table tbody tr[data-v-226a6374]:nth-child(2n){background-color:#fff}.van-empty .van-empty__description{font-size:1rem!important}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.bg[data-v-751d7f7c]{background-color:#fde68a}.header-text[data-v-751d7f7c]{color:#323233}[data-v-751d7f7c] .van-tabbar-item{width:4.33333rem;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;font-size:1.33333rem;line-height:1.5}[data-v-751d7f7c] .van-hairline--top-bottom.van-tabbar.van-tabbar--unfit{height:auto}[data-v-751d7f7c] .van-tabbar-item--active{background-color:transparent}[data-v-751d7f7c] .van-tabbar-item--active .van-tabbar-item__text{margin:.13333rem .13333rem;width:100%;background-color:#fbbf24;padding:.06667rem .6rem;-webkit-border-radius:.26667rem;border-radius:.26667rem;display:block;text-align:center;color:#fff;font-weight:700}.app-bg{background-color:#f7f8fa}body,html{height:100%}@media screen and (max-width:2000px){html{font-size:40px!important}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,15 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-0f7c9032"],{"16ce":function(n,t,e){"use strict";e.d(t,"a",(function(){return u}));e("2909"),e("3835"),e("53ca"),e("b85c"),e("c7eb"),e("1da1"),e("d3b7"),e("caad"),e("2532"),e("99af"),e("ac1f"),e("841c"),e("c35a"),e("a9e3"),e("9129"),e("4160"),e("4de4"),e("159b"),e("c975"),e("a4d3"),e("8a79"),e("2ca0"),e("6062"),e("3ca3"),e("ddb0"),e("5d41"),e("d81d"),e("1276"),e("498a"),e("a623"),e("a434"),e("a630"),e("a15b"),e("466d"),e("fb6a"),e("accc"),e("7db0"),e("5319"),e("25f0"),e("9861"),e("b64b"),e("2b3d");var i=e("a026");i["default"],i["default"].util.warn;var a=e("7bbe");var r=a["i"]?window:void 0,c=a["i"]?window.document:void 0;a["i"]&&window.navigator;function o(){for(var n,t,e,c,o=arguments.length,u=new Array(o),d=0;d<o;d++)u[d]=arguments[d];if(Object(a["m"])(u[0])?(t=u[0],e=u[1],c=u[2],n=r):(n=u[0],t=u[1],e=u[2],c=u[3]),!n)return a["n"];var f=a["n"],b=Object(i["watch"])((function(){return Object(i["unref"])(n)}),(function(n){f(),n&&(n.addEventListener(t,e,c),f=function(){n.removeEventListener(t,e,c),f=a["n"]})}),{immediate:!0,flush:"post"}),v=function(){b(),f()};return Object(a["u"])(v),v}function u(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=n.document,e=void 0===t?c:t;if(!e)return Object(i["ref"])("visible");var a=Object(i["ref"])(e.visibilityState);return o(e,"visibilitychange",(function(){a.value=e.visibilityState})),a}
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */var d;(function(n){n["UP"]="UP",n["RIGHT"]="RIGHT",n["DOWN"]="DOWN",n["LEFT"]="LEFT",n["NONE"]="NONE"})(d||(d={}))},d257:function(n,t,e){"use strict";e.d(t,"a",(function(){return r}));var i=e("53ca");function a(n){if("string"!==typeof n)return!1;try{var t=JSON.parse(n);return!(!t||"object"!==Object(i["a"])(t))}catch(e){return console.log("$isJSON error<EFBFBD><EFBFBD>",e),!1}}function r(n){var t;return a(n)?(null===(t=JSON.parse(n))||void 0===t?void 0:t.content)||"":n}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,viewport-fit=cover,user-scalable=no"><link rel="icon" href="favicon.ico"><title>饭堂取餐机</title><link href="static/css/chunk-068f3910.64dece74.css" rel="prefetch"><link href="static/css/chunk-273c4f53.01c9c65d.css" rel="prefetch"><link href="static/css/chunk-6aa34c20.dfea8f7a.css" rel="prefetch"><link href="static/css/chunk-df300936.c86622dc.css" rel="prefetch"><link href="static/css/chunk-ecdc4d7c.5835d7af.css" rel="prefetch"><link href="static/js/chunk-068f3910.abc5001f.js" rel="prefetch"><link href="static/js/chunk-273c4f53.e809da83.js" rel="prefetch"><link href="static/js/chunk-6aa34c20.fbbeb099.js" rel="prefetch"><link href="static/js/chunk-df300936.d13bd359.js" rel="prefetch"><link href="static/js/chunk-ecdc4d7c.458897ef.js" rel="prefetch"><link href="static/css/chunk-vendors.d5a54fe2.css" rel="preload" as="style"><link href="static/css/index.37504493.css" rel="preload" as="style"><link href="static/js/chunk-vendors.b39c4f86.js" rel="preload" as="script"><link href="static/js/index.51547f74.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d5a54fe2.css" rel="stylesheet"><link href="static/css/index.37504493.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but 饭堂取餐机 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.b39c4f86.js"></script><script src="static/js/index.51547f74.js"></script></body></html>

View File

@ -0,0 +1,3 @@
<?php
$url = $_SERVER['QUERY_STRING'] . "&t=".time();
header("location: ../merge_pay/index.html?" . $url);

View File

@ -0,0 +1 @@
.username{color:#3866de}table[data-v-5721ceb2]{background-color:#fff;border:.03333rem solid #dcdee0;-webkit-border-radius:.26667rem;border-radius:.26667rem;overflow:hidden;border-collapse:collapse;border-style:hidden;-webkit-box-shadow:0 0 0 .03333rem #dcdee0;box-shadow:0 0 0 .03333rem #dcdee0}td[data-v-5721ceb2],th[data-v-5721ceb2]{border:.03333rem solid #dcdee0}table tbody tr[data-v-5721ceb2]:nth-child(odd){background-color:#ebedf0}table tbody tr[data-v-5721ceb2]:nth-child(2n){background-color:#fff}.hasTake[data-v-5721ceb2]{color:#ee0a24;border-color:#ee0a24;-webkit-transform:rotate(-20deg);transform:rotate(-20deg)}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.van-empty{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:1.06667rem 0}.van-empty__image{width:5.33333rem;height:5.33333rem}.van-empty__image img{width:100%;height:100%}.van-empty__description{margin-top:.53333rem;padding:0 2rem;color:#969799;font-size:.46667rem;line-height:.66667rem}.van-empty__bottom{margin-top:.8rem}.card-bg[data-v-0ec6a771]{background-color:#fbbf24;color:#fff}.bubble-bg[data-v-0ec6a771]{background-image:url(../../static/img/bubble.c50b4336.png);-webkit-background-size:contain;background-size:contain}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.van-empty{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:1.06667rem 0}.van-empty__image{width:5.33333rem;height:5.33333rem}.van-empty__image img{width:100%;height:100%}.van-empty__description{margin-top:.53333rem;padding:0 2rem;color:#969799;font-size:.46667rem;line-height:.66667rem}.van-empty__bottom{margin-top:.8rem}table[data-v-78ae77ac]{background-color:#fff;border:.03333rem solid #dcdee0;-webkit-border-radius:.26667rem;border-radius:.26667rem;overflow:hidden;border-collapse:collapse;border-style:hidden;-webkit-box-shadow:0 0 0 .03333rem #dcdee0;box-shadow:0 0 0 .03333rem #dcdee0}td[data-v-78ae77ac],th[data-v-78ae77ac]{border:.03333rem solid #dcdee0}table tbody tr[data-v-78ae77ac]:nth-child(odd){background-color:#ebedf0}table tbody tr[data-v-78ae77ac]:nth-child(2n){background-color:#fff}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.bg[data-v-7722712a]{background-color:#fde68a}.header-text[data-v-7722712a]{color:#323233}[data-v-7722712a] .van-tabbar-item{width:3.33333rem;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;font-size:.8rem;line-height:1.2}[data-v-7722712a] .van-hairline--top-bottom.van-tabbar.van-tabbar--unfit{height:auto}[data-v-7722712a] .van-tabbar-item--active{background-color:transparent}[data-v-7722712a] .van-tabbar-item--active .van-tabbar-item__text{margin:.13333rem .13333rem;width:100%;background-color:#fbbf24;padding:.2rem .6rem;-webkit-border-radius:.26667rem;border-radius:.26667rem;display:block;text-align:center;color:#fff;font-weight:700}.app-bg{background-color:#f7f8fa}body,html{height:100%}@media screen and (max-width:2000px){html{font-size:40px!important}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-068f3910"],{6184:function(e,t,a){},aa5e:function(e,t,a){"use strict";a.r(t);var n=function(){var e=this,t=e._self._c,a=e._self._setupProxy;return t("div",{staticClass:"w-full h-full"},[a.mealInfo.list.length?t("div",{ref:"scrollRef",staticClass:"h-full w-full overflow-auto"},e._l(a.mealInfo.list,(function(n){var s;return t("div",{staticClass:"px-2 pt-1.5 relative"},[0===n.take_status?t("div",{staticClass:"absolute left-0 right-0 top-0 flex flex-col items-center"},[t("div",{staticClass:"text-2xl border-8 border-solid p-1 opacity-30 hasTake rounded mt-14 font-bold"},[e._v("已取餐")])]):e._e(),t("div",{staticClass:"flex items-center mb-1.5"},[t(a.Tag,{staticClass:"text-xs px-1 py-0.5 rounded",attrs:{type:"primary"}},[e._v(e._s(n.meal_name))]),t("div",{staticClass:"username ml-1.5 font-bold text-sm"},[e._v(e._s(null===(s=a.mealInfo.user)||void 0===s?void 0:s.username))])],1),t("table",{staticClass:"table-fixed w-full text-sm mb-1.5"},[e._m(0,!0),t("tbody",e._l(n.order_detail,(function(a){return t("tr",[t("td",{staticClass:"py-0.5 px-2"},[e._v(" "+e._s(a.dish_name)+" ")]),t("td",{staticClass:"py-0.5 px-1"},[e._v(" "+e._s(a.dish_amount)+" ")]),t("td",{staticClass:"py-0.5 px-1"},[e._v("¥ "+e._s(a.dish_price))])])})),0)])])})),0):t("div",{staticClass:"w-full h-full justify-center items-center flex"},[t("div",{staticClass:"text-2xl"},[e._v("可刷脸/刷IC卡/取餐码")])])])},s=[function(){var e=this,t=e._self._c;e._self._setupProxy;return t("thead",[t("tr",[t("th",{staticClass:"w-8/12 text-left py-0.5 px-2"},[e._v("菜品")]),t("th",{staticClass:"w-1/12 text-left py-0.5 px-1"},[e._v("份数")]),t("th",{staticClass:"w-1/12 text-left py-0.5 px-1"},[e._v("价格")])])])}],l=(a("ac1f"),a("5319"),a("a026")),c=a("d399"),i=(a("e7e5"),a("a3e2")),o=(a("5f1a"),a("a01b")),r=a("e432"),u=a("79f6"),d=a("6815"),f=Object(l["defineComponent"])({__name:"index",setup:function(e){var t=Object(l["ref"])(),a=Object(d["b"])(),n=Object(o["a"])(),s=Object(l["ref"])({list:[],user:null}),f=Object(l["ref"])(!0),v=function(e){Object(u["b"])({dining_hall_id:n.canteenId,facecard:e}).then((function(e){1===e.status?e.data.take_code?m(e.data.take_code):c["a"].fail({message:"无法解析取餐码"}):c["a"].fail({message:e.message})}))},_=function(e){Object(u["c"])({dining_hall_id:n.canteenId,cardno:e}).then((function(e){1===e.status?e.data.take_code?m(e.data.take_code):c["a"].fail({message:"无法解析取餐码"}):c["a"].fail({message:e.message})}))},p=function(e){var t,a,n,s=null===(n=null===(a=null===(t=null===e||void 0===e?void 0:e.split("]"))||void 0===t?void 0:t[1])||void 0===a?void 0:a.split(","))||void 0===n?void 0:n[0];s?m(s):c["a"].fail({message:"无法解析取餐码"})},m=function(e){if(f.value)return!1;f.value=!0;var t=c["a"].loading({message:"正在查询取餐信息",duration:0});Object(u["i"])({channelid:n.channelId,dining_hall_id:n.canteenId,take_code:e}).then((function(e){1===e.status?s.value=e.data:c["a"].fail({message:e.message})}))["catch"]((function(e){c["a"].fail({message:e})})).then((function(){f.value=!1,t.clear()}))},b=function(e){if(console.log(e,r["a"][e]),e)switch(r["a"][e]){case"changeMenu":a.replace("/pay-meal");break;case"prev":t.value&&(t.value.scrollTop=t.value.scrollTop-200<=0?0:t.value.scrollTop-200);break;case"next":t.value&&(t.value.scrollTop=t.value.scrollTop+200);break}};return Object(l["onMounted"])((function(){var e={facegetcode:function(e){return v(e)},icgetcode:function(e){return _(e)},qrCode:function(e){return p(e)},keyDown:function(e){return b(e)}};window.Lqbrid=e})),{__sfc:!0,scrollRef:t,router:a,canteenStore:n,mealInfo:s,loading:f,getFaceCode:v,getIcCard:_,exchangeTakeFoodCodeByQrCode:p,onTakeMeal:m,onKeyDown:b,Tag:i["a"]}}}),v=f,_=(a("ce6d"),a("c026"),a("2877")),p=Object(_["a"])(v,n,s,!1,null,"5721ceb2",null);t["default"]=p.exports},c026:function(e,t,a){"use strict";a("6184")},ce6d:function(e,t,a){"use strict";a("f61f")},e432:function(e,t,a){"use strict";var n={7:"0",144:"0",8:"1",145:"1",9:"2",146:"2",10:"3",147:"3",11:"4",148:"4",12:"5",149:"5",13:"6",150:"6",14:"7",151:"7",15:"8",152:"8",16:"9",153:"9",131:".",158:".",155:"changeMenu",277:"changeMenu",92:"prev",156:"prev",93:"next",157:"next",66:"enter",67:"back"};t["a"]=n},f61f:function(e,t,a){}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1 @@
<!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,viewport-fit=cover,user-scalable=no"><link rel="icon" href="favicon.ico"><title>饭堂取餐机</title><link href="static/css/chunk-24e1c30c.c1d30de7.css" rel="prefetch"><link href="static/css/chunk-e0cacb40.77b5503c.css" rel="prefetch"><link href="static/js/chunk-24e1c30c.f350078b.js" rel="prefetch"><link href="static/js/chunk-2d0bcdf8.72197571.js" rel="prefetch"><link href="static/js/chunk-2d0ddfff.4b7d2c3a.js" rel="prefetch"><link href="static/js/chunk-e0cacb40.6c6a2b39.js" rel="prefetch"><link href="static/css/chunk-vendors.fc71ace7.css" rel="preload" as="style"><link href="static/css/index.79031139.css" rel="preload" as="style"><link href="static/js/chunk-vendors.6c5db617.js" rel="preload" as="script"><link href="static/js/index.c9f3ae8a.js" rel="preload" as="script"><link href="static/css/chunk-vendors.fc71ace7.css" rel="stylesheet"><link href="static/css/index.79031139.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but 饭堂取餐机 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.6c5db617.js"></script><script src="static/js/index.c9f3ae8a.js"></script></body></html>

View File

@ -0,0 +1 @@
.username{color:#3866de}table[data-v-3d3f5292]{background-color:#fff;border:.03333rem solid #dcdee0;-webkit-border-radius:.26667rem;border-radius:.26667rem;overflow:hidden;border-collapse:collapse;border-style:hidden;-webkit-box-shadow:0 0 0 .03333rem #dcdee0;box-shadow:0 0 0 .03333rem #dcdee0}td[data-v-3d3f5292],th[data-v-3d3f5292]{border:.03333rem solid #dcdee0}table tbody tr[data-v-3d3f5292]:nth-child(odd){background-color:#ebedf0}table tbody tr[data-v-3d3f5292]:nth-child(2n){background-color:#fff}.hasTake[data-v-3d3f5292]{color:#ee0a24;border-color:#ee0a24;-webkit-transform:rotate(-20deg);transform:rotate(-20deg)}.qrpay[data-v-3d3f5292]{width:90%;height:60%;margin-left:5%;margin-top:6%;padding:.5rem;text-align:center}.qrpay img[data-v-3d3f5292]{width:6.5rem;display:inline-block;vertical-align:top}.qrpay .user_info[data-v-3d3f5292]{display:inline-block;padding-left:2rem}.qrpay .user_info .pay_msg[data-v-3d3f5292]{font-size:1rem;font-weight:700}.qrpay .user_info .pay_username[data-v-3d3f5292],.qrpay .user_info .ye[data-v-3d3f5292]{font-size:1rem;text-align:left}

View File

@ -0,0 +1 @@
table[data-v-ea8a86ba]{background-color:#fff;border:.03333rem solid #dcdee0;-webkit-border-radius:.26667rem;border-radius:.26667rem;overflow:hidden;border-collapse:collapse;border-style:hidden;-webkit-box-shadow:0 0 0 .03333rem #dcdee0;box-shadow:0 0 0 .03333rem #dcdee0}td[data-v-ea8a86ba],th[data-v-ea8a86ba]{border:.03333rem solid #dcdee0}table tbody tr[data-v-ea8a86ba]:nth-child(odd){background-color:#ebedf0}table tbody tr[data-v-ea8a86ba]:nth-child(2n){background-color:#fff}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.bg[data-v-e51f4cdc]{background-color:#fde68a}.header-text[data-v-e51f4cdc]{color:#323233}[data-v-e51f4cdc] .van-tabbar-item{width:3.33333rem;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;font-size:.8rem;line-height:1.2}[data-v-e51f4cdc] .van-hairline--top-bottom.van-tabbar.van-tabbar--unfit{height:auto}[data-v-e51f4cdc] .van-tabbar-item--active{background-color:transparent}[data-v-e51f4cdc] .van-tabbar-item--active .van-tabbar-item__text{margin:.13333rem .13333rem;width:100%;background-color:#fbbf24;padding:.2rem .6rem;-webkit-border-radius:.26667rem;border-radius:.26667rem;display:block;text-align:center;color:#fff;font-weight:700}.app-bg[data-v-4e90b7af]{background-color:#f7f8fa}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.mt-14{margin-top:3.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-1\.5{margin-bottom:.375rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.flex{display:-webkit-box;display:flex}.table{display:table}.h-full{height:100%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-6\/12{width:50%}.w-8\/12{width:66.666667%}.w-full{width:100%}.flex-shrink-0{flex-shrink:0}.flex-shrink{flex-shrink:1}.flex-grow{-webkit-box-flex:1;flex-grow:1}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;-webkit-transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-12{--tw-rotate:-12deg}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.items-center{-webkit-box-align:center;align-items:center}.justify-center{-webkit-box-pack:center;justify-content:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded{-webkit-border-radius:.25rem;border-radius:.25rem}.border-8{border-width:.26667rem}.border{border-width:.03333rem}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}.p-1{padding:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.text-left{text-align:left}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-bold{font-weight:700}.text-red-400{--tw-text-opacity:1;color:rgba(248,113,113,var(--tw-text-opacity))}.opacity-30{opacity:.3}*,:after,:before{--tw-shadow:0 0 transparent;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}body,html{height:100%}@media screen and (max-width:2000px){html{font-size:40px!important}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0bcdf8"],{"2a1d":function(n,e,t){"use strict";t.r(e);var u=function(){var n=this,e=n._self._c;n._self._setupProxy;return e("div")},c=[],s=t("a026"),o=Object(s["defineComponent"])({__name:"index",setup:function(n){return{__sfc:!0}}}),i=o,r=t("2877"),a=Object(r["a"])(i,u,c,!1,null,null,null);e["default"]=a.exports}}]);
//# sourceMappingURL=chunk-2d0bcdf8.72197571.js.map

View File

@ -0,0 +1 @@
{"version":3,"sources":["webpack:///static/js/chunk-2d0bcdf8.90d6a2d2.js"],"names":["window","push","2a1d","module","__webpack_exports__","__webpack_require__","r","render","_vm","this","_c","_self","_setupProxy","staticRenderFns","vue_esm","Balancevue_type_script_setup_true_lang_ts_","Object","__name","setup","__props","__sfc","views_Balancevue_type_script_setup_true_lang_ts_","componentNormalizer","component"],"mappings":"CAACA,OAAO,gBAAkBA,OAAO,iBAAmB,IAAIC,KAAK,CAAC,CAAC,kBAAkB,CAE3EC,OACA,SAAUC,EAAQC,EAAqBC,GAE7C,aAEAA,EAAoBC,EAAEF,GAGtB,IAAIG,EAAS,WACX,IAAIC,EAAMC,KACRC,EAAKF,EAAIG,MAAMD,GACNF,EAAIG,MAAMC,YACrB,OAAOF,EAAG,QAERG,EAAkB,GAKlBC,EAAUT,EAAoB,QAIDU,EAA2DC,OAAOF,EAAQ,mBAA7B,CAAiD,CAC7HG,OAAQ,QACRC,MAAO,SAAeC,GACpB,MAAO,CACLC,OAAO,MAKqBC,EAAmD,EAEjFC,EAAsBjB,EAAoB,QAU1CkB,EAAYP,OAAOM,EAAoB,KAA3BN,CACdK,EACAd,EACAM,GACA,EACA,KACA,KACA,MAIyCT,EAAoB,WAAcmB,EAAiB","file":"static/js/chunk-2d0bcdf8.72197571.js","sourceRoot":""}

View File

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ddfff"],{"847d":function(n,e,t){"use strict";t.r(e);var u=function(){var n=this,e=n._self._c;n._self._setupProxy;return e("div",[n._v("请")])},c=[],o=t("a026"),f=Object(o["defineComponent"])({__name:"index",setup:function(n){var e=Object(o["ref"])("");return Object(o["onMounted"])((function(){})),{__sfc:!0,keys:e}}}),s=f,r=t("2877"),d=Object(r["a"])(s,u,c,!1,null,null,null);e["default"]=d.exports}}]);
//# sourceMappingURL=chunk-2d0ddfff.4b7d2c3a.js.map

View File

@ -0,0 +1 @@
{"version":3,"sources":["webpack:///static/js/chunk-2d0ddfff.52d81c9f.js"],"names":["window","push","847d","module","__webpack_exports__","__webpack_require__","r","render","_vm","this","_c","_self","_setupProxy","_v","staticRenderFns","vue_esm","PayMealvue_type_script_lang_ts_setup_true_","Object","__name","setup","__props","keys","__sfc","views_PayMealvue_type_script_lang_ts_setup_true_","componentNormalizer","component"],"mappings":"CAACA,OAAO,gBAAkBA,OAAO,iBAAmB,IAAIC,KAAK,CAAC,CAAC,kBAAkB,CAE3EC,OACA,SAAUC,EAAQC,EAAqBC,GAE7C,aAEAA,EAAoBC,EAAEF,GAGtB,IAAIG,EAAS,WACX,IAAIC,EAAMC,KACRC,EAAKF,EAAIG,MAAMD,GACNF,EAAIG,MAAMC,YACrB,OAAOF,EAAG,MAAO,CAACF,EAAIK,GAAG,QAEvBC,EAAkB,GAKlBC,EAAUV,EAAoB,QAKDW,EAA2DC,OAAOF,EAAQ,mBAA7B,CAAiD,CAC7HG,OAAQ,QACRC,MAAO,SAAeC,GACpB,IAAIC,EAAOJ,OAAOF,EAAQ,OAAfE,CAAuB,IAElC,OADAA,OAAOF,EAAQ,aAAfE,EAA6B,eACtB,CACLK,OAAO,EACPD,KAAMA,MAKsBE,EAAmD,EAEjFC,EAAsBnB,EAAoB,QAU1CoB,EAAYR,OAAOO,EAAoB,KAA3BP,CACdM,EACAhB,EACAO,GACA,EACA,KACA,KACA,MAIyCV,EAAoB,WAAcqB,EAAiB","file":"static/js/chunk-2d0ddfff.4b7d2c3a.js","sourceRoot":""}

View File

@ -0,0 +1,2 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-e0cacb40"],{6340:function(t,e,s){"use strict";s("75c6")},"75c6":function(t,e,s){},"7e23":function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t._self._c,s=t._self._setupProxy;return s.loading?t._e():e("div",{staticClass:"h-full overflow-auto px-2 pt-1.5"},[e("div",{staticClass:"mb-1.5"},[e(s.Tag,{staticClass:"text-xs px-1 py-0.5 rounded",attrs:{type:"primary"}},[t._v("取餐机累计金额"),e("strong",{staticClass:"ml-1"},[t._v("¥ "+t._s(s.billsInfo.all_consume_price||"--"))])])],1),e("table",{staticClass:"table-fixed w-full text-sm mb-1.5"},[t._m(0),e("tbody",t._l(s.billsInfo.consume_list,(function(s){return e("tr",[e("td",{staticClass:"py-1 px-2"},[t._v(t._s(s.record_datetime))]),e("td",{staticClass:"py-1 px-2"},[t._v(t._s(s.username))]),e("td",{staticClass:"py-1 px-2"},[t._v(t._s(s.consume_type))]),e("td",{staticClass:"py-1 px-2"},[t._v("¥ "+t._s(s.recharge_amount))])])})),0)])])},n=[function(){var t=this,e=t._self._c;t._self._setupProxy;return e("thead",[e("tr",[e("th",{staticClass:"w-6/12 text-left py-1 px-2"},[t._v("时间")]),e("th",{staticClass:"w-2/12 text-left py-1 px-2"},[t._v("用户")]),e("th",{staticClass:"w-2/12 text-left py-1 px-2"},[t._v("类型")]),e("th",{staticClass:"w-2/12 text-left py-1 px-2"},[t._v("金额")])])])}],l=s("a026"),c=(s("e17f"),s("d399")),i=(s("e7e5"),s("a3e2")),o=(s("5f1a"),s("a01b")),u=s("79f6"),_=Object(l["defineComponent"])({__name:"index",setup:function(t){var e=Object(l["ref"])({consume_list:void 0,all_consume_price:void 0}),s=Object(o["a"])(),a=Object(l["ref"])(!0),n=function(){a.value=!0;var t=c["a"].loading({message:"正在查询流水信息",duration:0});Object(u["a"])({channel_id:s.channelId}).then((function(t){1===t.status?e.value=t.data:c["a"].fail({message:"查询失败"})}))["catch"]((function(t){c["a"].fail({message:t})})).then((function(){a.value=!1,t.clear()}))};return Object(l["onMounted"])((function(){n()})),{__sfc:!0,billsInfo:e,canteenStore:s,loading:a,getBills:n,Tag:i["a"]}}}),r=_,f=(s("6340"),s("2877")),p=Object(f["a"])(r,a,n,!1,null,"ea8a86ba",null);e["default"]=p.exports}}]);
//# sourceMappingURL=chunk-e0cacb40.6c6a2b39.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

23
android/vue_ldbdev/.gitignore vendored Normal file
View File

@ -0,0 +1,23 @@
.DS_Store
node_modules
/android/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View File

@ -0,0 +1,24 @@
# size_5
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

View File

@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}

28693
android/vue_ldbdev/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
{
"name": "size_5",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.21.1",
"core-js": "^3.6.5",
"router": "^1.3.5",
"vant": "^2.11.3",
"vconsole": "^3.3.4",
"vue": "^2.6.11",
"vue-router": "^3.4.9"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"babel-eslint": "^10.1.0",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^6.2.2",
"node-sass": "^5.0.0",
"sass-loader": "^7.3.1",
"vue-template-compiler": "^2.6.11"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

View File

@ -0,0 +1,33 @@
<template>
<div id="app">
<router-view />
</div>
</template>
<script>
export default {
name: "App",
data() {
return {};
},
created() {},
methods: {},
};
</script>
<style>
body,
html {
width: 100%;
height: 100%;
}
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
height: 100%;
}
</style>

View File

@ -0,0 +1,87 @@
import request from '@/utils/request';
import { formHeaders } from '@/config/headers';
import qs from 'querystring';
// 获取所有饭堂信息
export function chkserver(ft_id) {
return request({
url: '/show/chkserver.php?act=info&custid=--' + ft_id,
headers: formHeaders,
method: 'GET',
});
}
// 现场消费
export function qrpay(params) {
const str = qs.stringify(params);
return request({
url: '/api/user/qrpay',
headers: formHeaders,
method: 'POST',
data: str,
});
}
// 取餐
export function take(params) {
const str = qs.stringify(params);
return request({
url: '/api/order/take',
headers: formHeaders,
method: 'POST',
data: str,
});
}
// face人脸获取take_code
export function facegetcode(params) {
const str = qs.stringify(params);
return request({
url: '/show/chkserver.php?act=facegetcode',
headers: formHeaders,
method: 'POST',
data: str,
});
}
// 根据Ic卡获取take_code
export function icgetcode(params) {
const str = qs.stringify(params);
return request({
url: '/show/chkserver.php?act=icgetcode',
headers: formHeaders,
method: 'POST',
data: str,
});
}
// https://ldbdc.fsecity.com/show/chkserver.php?act=icgetcode
export function getConsumeList(channel_id){
const str = qs.stringify({
channel_id:channel_id
})
return request({
url: '/show/chkserver.php?act=getConsumeList',
headers: formHeaders,
method: 'POST',
data: str,
});
}
export function icUserInfo(params){
const str = qs.stringify(params);
return request({
url: '/show/chkserver.php?act=icUserInfo',
headers: formHeaders,
method: 'POST',
data: str,
});
}
export function faceUserInfo(params){
const str = qs.stringify(params);
return request({
url: '/show/chkserver.php?act=faceUserInfo',
headers: formHeaders,
method: 'POST',
data: str,
});
}

View File

@ -0,0 +1,5 @@
import * as ftInfo from "./ftInfo"
export {
ftInfo
}

View File

@ -0,0 +1,5 @@
import * as ftInfo from "./ft-info"
export default {
...ftInfo
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -0,0 +1,91 @@
<template>
<van-overlay :show="show">
<div class="wrapper" @click.stop>
<div class="block">
<div class="dialog-center">
<span>{{ this.mssage }}</span>
</div>
</div>
</div>
</van-overlay>
</template>
<script>
// import { lqbrid } from "@/utils/app.js";
export default {
props: {
show: Boolean,
fee: String,
infoDetail: Object,
mssage: {
type: String,
},
},
data() {
return {
resultInfo: {},
// defalutMsg: "" + this.fee + "",
type: {
typeCode: "",
name: "",
},
};
},
created() {
//
// lqbrid.handleQrpay = this.handleQrpay;
},
methods: {
// handleQrpayApi(code, type) {
// const form = {
// fee: this.fee,
// ftid: this.infoDetail.ftTile.id,
// channelid: this.infoDetail.ftUnit.channel_id,
// code: code,
// type: type,
// };
// this.$api.ftInfo.qrpay(form).then((res) => {
// if (res && res.status == 1) {
// this.resultInfo = res.data;
// this.$emit("handleCloseAndOpen");
// //
// // delete lqbrid.handleQrpay;
// } else {
// this.defalutMsg = res.message;
// setTimeout(() => {
// this.defalutMsg = "" + this.fee + "";
// }, 3000);
// }
// });
// },
getResultInfo() {
return this.resultInfo;
},
},
};
</script>
<style scoped>
.wrapper {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
.block {
width: 60rem;
height: 30rem;
font-size: 4rem;
background-color: #fff;
}
.dialog-center {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: #cccccc;
}
</style>

View File

@ -0,0 +1,38 @@
<template>
<div>
<table border="1" cellspacing="0" cellpadding="3">
<thead>
<tr>
<th>类型</th>
<th>菜名</th>
<th>价格</th>
<th>份数</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, i) in userMealInfo" :key="i">
<td>{{ item.meal_name }}</td>
<td>{{ item.dish_name }}</td>
<td>{{ item.dish_price }}</td>
<td>{{ item.dish_amount }}</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
props: {
userMealInfo: {
type: Array,
},
},
};
</script>
<style scoped>
table {
margin: 0 auto;
width: 85%;
font-size: 2.8rem;
}
</style>

View File

@ -0,0 +1,27 @@
<template>
<div class="inside-notice-bar" style="font-size: 1px">
<van-notice-bar scrollable :text="paomaStr" />
</div>
</template>
<script>
export default {
props: {
paomaStr: {
type: String,
default: ""
}
}
};
</script>
<style>
.inside-notice-bar .van-notice-bar {
font-size: 25px;
}
.inside-notice-bar .van-notice-bar .van-notice-bar__content {
margin: 5px;
}
.notice-swipe {
height: 40px;
line-height: 40px;
}
</style>

View File

@ -0,0 +1,3 @@
export const formHeaders = { 'Content-type': 'application/x-www-form-urlencoded;charset=UTF-8' }
export const formDataHeaders = { 'Content-Type': 'multipart/form-data; charset=UTF-8', "X-Requested-With": "XMLHttpRequest" }
export const jsonHeaders = { 'Content-type': 'application/json;charset=UTF-8', 'Access-Control-Allow-Origin': '*' }

View File

@ -0,0 +1,17 @@
/**
* 全局配置文件
*/
export default {
title: '罗定中学饭堂',
//http的status默认放行不采用统一处理的
statusWhiteList: [],
// isRefreshing: false,
baseURL: '../../', // 基础URL
timeout: 60 * 1000,
//弹出的页面
// shareSessionWhiteList: ["allPool", "detail", "linkList", "orderVisual"],
// shareSystemWhiteList: ["orderVisual"],
// fileTypeLimit: ["gif", "jpg", "jpeg", "bmp", "png", "7z", "rar", "zip", "txt", "pdf", "doc", "ppt", "xls", "csv", "docx", "pptx", "xlsx", "chm", "mp4"],
// //上传的文件大小 100M
// fileSize: 100
};

View File

@ -0,0 +1,29 @@
import Vue from 'vue'
import App from './App.vue'
// 控制台
// import vConsole from 'vconsole'
// vant
import Vant from 'vant';
import { Notify } from 'vant';
import { Toast } from 'vant';
import 'vant/lib/index.css';
// router
import router from './router'
// api
import api from "./api"
// Vue.prototype.$vConsole = new vConsole();
Vue.use(Vant);
Vue.prototype.$api = api;
Vue.prototype.$notify = Notify;
Vue.prototype.$toast = Toast;
Vue.config.productionTip = false
new Vue({
el: '#app',
router,
render: h => h(App),
});

View File

@ -0,0 +1,18 @@
import Vue from 'vue';
import Router from 'vue-router'
Vue.use(Router);
const routes = [
{ path: '/', component: () => import("../view/home") },
{ path: '/inside', component: () => import("../view/inside") },
{ path: '/outside', component: () => import("../view/outside") }
]
const router = new Router({
routes
})
export default router;

View File

@ -0,0 +1,8 @@
const lqbrid = {
}
window.Lqbrid = lqbrid
if (window.Vue) { // 自动绑定
window.Vue.use(lqbrid)
}
export { lqbrid }

View File

@ -0,0 +1,37 @@
import axios from 'axios'
// import router from '@/router'
// import { Message } from 'element-ui'
import website from '@/config/website'
// import isPlainObject from 'lodash/isPlainObject'
export const isTest = process.env.NODE_ENV != "production"
export const baseURL = website.baseURL;
const axiosConfig = {
baseURL: isTest ? '/api' : baseURL,
// baseURL: 'http://192.168.137.1:9004',
timeout: website.timeout,
}
const service = axios.create(axiosConfig)
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
// HTTPRequest拦截器
service.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// //HTTPResponse拦截器
service.interceptors.response.use(
res => {
return res.data
}, (error) => {
return Promise.reject(new Error(error));
}
)
export default service

View File

@ -0,0 +1,19 @@
<template>
<div class="home">
<router-link to="/inside?channel_id=1">
<van-button>Go to inside</van-button>
</router-link>
<router-link to="/outside">
<van-button>Go to outside</van-button>
</router-link>
</div>
</template>
<script>
export default {};
</script>
<style scoped>
.home .home-button {
margin: 5px;
}
</style>

View File

@ -0,0 +1,820 @@
<template>
<div>
<div class="title">
<div class="keypad_type">
<!-- <span style="vertical-align: bottom;">当前键盘</span>-->
<!-- <van-button-->
<!-- :type="keypadType==1 ? 'info' : 'default'"-->
<!-- class="title-btn-all"-->
<!-- >自带键盘</van-button-->
<!-- >-->
<!-- <van-button :type="keypadType==2 ? 'info' : 'default'" class="title-btn-all"-->
<!-- >外置小键盘</van-button-->
<!-- >-->
</div>
<div class="title-btn">
<van-button
:type="hideTable==0 ? 'info' : 'default'"
class="title-btn-all"
>取餐</van-button
>
<van-button :type="hideTable==1 ? 'info' : 'default'" class="title-btn-all"
>消费</van-button
>
<van-button :type="hideTable==2 ? 'info' : 'default'" class="title-btn-all"
>消费记录</van-button
>
<van-button :type="hideTable==3 ? 'info' : 'default'" class="title-btn-all" v-if="btnNum==3"
>查看余额</van-button
>
</div>
</div>
<div class="title" v-show="hideTable!=2">
<div class="titlte-content" style="margin: auto">
<h2>{{ title.ftTile.name }} {{ title.ftUnit.channel_name }}</h2>
</div>
</div>
<!--取餐页面-->
<div v-if="isTake==0" class="outside-take">
<h2>{{ this.defaultMsg }}</h2>
</div>
<!--支付后的详情信息 消费输入框-->
<div v-else-if="isTake==1" class="inside-table">
<meal-controller
:hideTable="hideTable"
:userMealInfo="userMealInfo"
:isTake="isTake"
:infoDetail="title"
:takeStatus="takeStatus"
:companyId="companyId"
@handleInit="handleInit"
ref="mealController"
></meal-controller>
</div>
<div v-if="hideTable==0" class="inside-footer">
<h4 v-show="isTake">{{ userInfo.username }}</h4>
<notice-bar :paomaStr="paomaStr"></notice-bar>
</div>
<van-overlay :show="showLoading">
<div class="wrapper-loading">
<van-loading type="spinner" />
</div>
</van-overlay>
<!--消费记录-->
<div v-if="hideTable==2" class="outside-take">
<h4 style="margin: 1rem 0">今天共收入<span>{{ allConsumePrice }}</span></h4>
<div class="consume_list" ref="consume">
<table ref="consumeTable">
<thead>
<tr>
<th>姓名</th>
<th>金额</th>
<th>扣费时间</th>
<th style="width: 1rem">|</th>
<th>姓名</th>
<th>金额</th>
<th>扣费时间</th>
</tr>
</thead>
<tbody v-html="consumeListHtml">
</tbody>
</table>
</div>
</div>
<div v-if="hideTable==3" class="outside-take">
<h4 v-if="JSON.stringify(cardNoInfo)=='{}'">请刷卡查看余额</h4>
<div v-else>
<div class="user_info_table" ref="consume" style="margin: auto">
<table>
<tr>
<td>姓名</td>
<td>{{cardNoInfo.username}}</td>
</tr>
<tr v-if="cardNoInfo.cardNo != '' && cardNoInfo.cardNo != '-'">
<td>卡号</td>
<td>{{cardNoInfo.cardNo}}</td>
</tr>
<tr>
<td>余额</td>
<td style="color: green">{{cardNoInfo.ye}}</td>
</tr>
<tr>
<td colspan="2" style="text-align: center;font-size: 2rem;padding-top: 20px">{{cardNoCountdownSecond}} 秒后自动退出</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</template>
<script>
import mealController from "./meal-controller";
import noticeBar from "@/components/notice-bar/index.vue";
import { lqbrid } from "@/utils/app.js";
export default {
components: {
mealController,
noticeBar,
},
data() {
return {
hideTable: false,
isTake: false,
title: {
ftTile: {},
ftUnit: {},
},
ftAllList: [],
userMealInfo: [],
userInfo: {},
paomaStr: "",
currentFtInfo: {},
defaultMsg: "请刷卡/刷脸/刷付款码取餐",
faceCode: "",
icCode: "",
takeStatus: 0,
showLoading: false,
// keypadType: 1,
allConsumePrice: '-',
consumeList: [],
consumeListHtml: '',
timer: null,
scrollTop: 0,
cardNoInfo: {}, //
cardNoCountdownSecond: 10, //
yeTimer: null, //
uname: '', // UNIQUE_NAME
companyId: 0,
btnNum: 2, //
feeLog: '',
}
},
watch: {
faceCode: {
handler(val) {
if (val) {
if (this.hideTable==1) {
this.$refs.mealController.handleQrpayApi(val, "face", this.feeLog);
} else if(this.hideTable==0) {
this.getFaceTakeCode();
}else if(this.hideTable==3){
this.getFaceTakeCode();
}
}
},
},
icCode: {
handler(val) {
if (val) {
if (this.hideTable==1) {
this.$refs.mealController.handleQrpayApi(val, "ic", this.feeLog);
} else if(this.hideTable==0) {
this.getIcTakeCode();
} else if(this.hideTable == 3){
this.getIcTakeCode();
}
}
},
},
hideTable: {
handler(val){
let _this = this;
let channel_id = this.$route.query.channel_id;
if(val == 2){
if(_this.timer == null){
_this.getConsumeList(channel_id)
_this.timer = setInterval(function (){
_this.getConsumeList(channel_id)
}, 1500)
}
}else{
if(_this.timer != null){
_this.timer = clearInterval(_this.timer);
}
}
}
}
},
methods: {
//
getFaceTakeCode() {
if (!this.faceCode) {
return;
}
this.userMealInfo = [];
if(this.hideTable == 3) {
//
this.$api.ftInfo
.faceUserInfo({
facecard: this.faceCode,
})
.then((res) => {
this.cardNoCountdown();
if (res.status == 1) {
this.cardNoInfo = res.data.user;
} else {
this.isTake = false;
this.defaultMsg = res.message;
}
});
}else{
this.$api.ftInfo
.facegetcode({
dining_hall_id: this.title.ftTile.id,
facecard: this.faceCode,
})
.then((res) => {
if (res.status == 1) {
this.renderData(res.data);
} else {
this.isTake = false;
this.defaultMsg = res.message;
}
});
}
},
// FACEcode
facegetcode(code) {
try {
this.faceCode = "";
setTimeout(() => {
this.faceCode = code;
}, 0);
return code;
} catch (e) {
return e;
}
},
// ICcode
icgetcode(code) {
try {
this.icCode = "";
setTimeout(() => {
this.icCode = code;
}, 0);
return code;
} catch (e) {
return e;
}
},
// ic
getIcTakeCode() {
if (!this.icCode) {
return;
}
this.userMealInfo = [];
// 9999999991
if(this.hideTable == 3){
//
this.$api.ftInfo
.icUserInfo({
cardno: this.icCode,
})
.then((res) => {
this.cardNoCountdown();
if (res.status == 1) {
this.cardNoInfo = res.data.user;
} else {
this.isTake = false;
this.defaultMsg = res.message;
}
});
}else{
this.$api.ftInfo
.icgetcode({
dining_hall_id: this.title.ftTile.id,
cardno: this.icCode,
})
.then((res) => {
if (res.status == 1) {
this.renderData(res.data);
} else {
this.isTake = false;
this.defaultMsg = res.message;
}
});
}
},
cardNoCountdown(){
var _this = this;
//
clearInterval(this.yeTimer);
_this.cardNoCountdownSecond = 10;
this.yeTimer = setInterval(function (){
_this.cardNoCountdownSecond--;
if(_this.cardNoCountdownSecond == 0){
clearInterval(_this.yeTimer);
_this.cardNoInfo = {}
_this.cardNoCountdownSecond = 10;
}
}, 1000);
},
// code
qrCode(code) {
const getDCode = code.split("]")[1].split(",")[0];
try {
setTimeout(() => {
if (this.hideTable==1) {
this.$refs.mealController.handleQrpayApi(getDCode, "qr", this.feeLog);
} else if(this.hideTable==0) {
this.handleTake(getDCode);
}
}, 0);
return code;
} catch (e) {
return e;
}
},
// take_code
renderData(data) {
if (data.take_code.length > 0 || data.take_code != '') {
this.handleTake(data.take_code);
} else {
this.isTake = false;
this.defaultMsg = "当前暂无餐可取";
}
},
//
handleTake(code) {
this.takeStatus = 0;
this.$api.ftInfo
.take({
channelid: this.title.ftUnit.channel_id,
dining_hall_id: this.title.ftTile.id,
take_code: code,
})
.then((res) => {
if (res && res.status == 1) {
this.isTake = true;
//
this.paomaStr = this.resetPaomaLis(res.data.list);
this.userInfo = res.data.user;
} else {
this.isTake = false;
this.defaultMsg = res.message;
}
});
},
//
getFtInfo() {
// urlID
this.showLoading = true;
const id = this.$route.query.channel_id;
const ft_id = this.$route.query.ft_id;
this.$api.ftInfo
.chkserver(ft_id)
.then((res) => {
this.showLoading = false;
if (res && res.status == 1) {
this.companyId = res.data.company_id;
// if(this.companyId == 'dlsyzx'){
// this.btnNum = 3;
// }else{
this.btnNum = 2;
// }
//
const ftList = res.data.dining_hall_ids.find(
(item) => item.id == ft_id
);
if (!ftList) {
this.defaultMsg = "请设置正确的饭堂信息";
// console.log("");
//
lqbrid = {};
return;
}
this.title.ftTile = ftList;
//
this.ftAllList = ftList.channel_ids;
// ID
this.title.ftUnit = this.ftAllList.find(
(item) => item.channel_id == id
);
} else {
// console.log("");
}
})
.catch((e) => {
console.log(e);
this.showLoading = false;
});
},
//
resetPaomaLis(list) {
this.userMealInfo = [];
let allStr = "";
const dataMeal = [];
list.forEach((item) => {
let str = "";
let obj = {};
//
this.takeStatus = item.take_status;
item.rest_info.forEach((rest) => {
str += rest.dish_name + " 剩:" + rest.rest_num + "份 ";
});
item.order_detail.forEach((order) => {
obj = {
meal_name: item.meal_name,
dish_name: order.dish_name,
dish_price: order.dish_price,
dish_amount: order.dish_amount,
};
dataMeal.push(obj);
});
allStr += " " + item.meal_name + "" + str + " ";
});
this.userMealInfo = dataMeal;
return allStr;
},
//
keyDown(code) {
// alert(code)
//
// if(code == 154 || code == 133){
// this.keypadType = this.keypadType===1 ? 2 : 1;
// localStorage.setItem('keypadType', this.keypadType)
// }
// //
if(code == 155 || code == 277){
this.feeLog = '';
if(this.hideTable == this.btnNum){
this.hideTable = 0
}else{
this.hideTable = this.hideTable + 1;
}
localStorage.setItem('keypadType', this.hideTable)
this.isTake = this.hideTable;
}
//
// if(this.keypadType == 2) {
//
const arrNum = require("./json/keycode.json");
// const getNumIndex = arrNum.find((item) => {
// item.keyCode == code
// console.log(item)
// });
if(this.hideTable == 1){
arrNum.find((item) => {
const keyCodeArr = item.keyCode.split("|");
if(keyCodeArr.indexOf(code) != -1){
this.$refs.mealController.handleRef(item.value)
this.feeLog = this.feeLog.concat(item.value);
return;
}
});
}
if(this.hideTable == 2){
if(code == '156' || code == '92'){
if(this.scrollTop <=0){
return;
}
this.scrollTop -= 50;
//
// this.$refs.consume.scrollTo(0, this.scrollTop);
this.$refs.consume.scrollTop = this.scrollTop;
return;
}else if(code == '157' || code == '93'){
const h = this.$refs.consume.offsetHeight;
const offsetH = this.$refs.consumeTable.offsetHeight;
if(this.scrollTop >= (offsetH-h)){
return;
}
this.scrollTop += 50;
//
// this.$refs.consume.scrollTo(this.scrollTop, this.scrollTop);
this.$refs.consume.scrollTop = this.scrollTop;
return;
}
}
// if(_this.hideTable == 2){
// console.log(code)
// if(code == '156' || code == '92' || code == '109'){
// //
// console.log('')
// _this.$refs.consume.scrollTo(0,0);
// return;
// }else if(code == '157' || code == '93' || code == '107'){
// console.log('')
//
// //
// _this.$refs.consume.scrollTo(500,500);
// return;
// }
// }
// if (getNumIndex) {
// getNumIndex.value;
// this.hideTable
// ? this.$refs.mealController.handleRef(getNumIndex.value)
// : null;
// return;
// }
switch (code) {
// case "111":
// this.hideTable = !this.hideTable;
// this.isTake = this.hideTable;
// this.defaultMsg = "//";
// return "" + code + "";
// case "106":
// this.hideTable = !this.hideTable;
// this.isTake = this.hideTable;
// this.defaultMsg = "//";
// return "" + code + "";
case "92":
case "156":
this.feeLog = '';
this.hideTable ? this.$refs.mealController.handleForward() : null;
return "键位:" + code + "一键录入功能 上一个";
case "93":
case "157":
this.feeLog = '';
this.hideTable ? this.$refs.mealController.handleNext() : null;
return "键位:" + code + "一键录入功能 获取焦点 下一个";
case "66":
this.hideTable ? this.$refs.mealController.handleCofirm(this.feeLog) : null;
return "键位:" + code + "确认功能";
case "67":
this.hideTable ? this.$refs.mealController.hadnleInit() : null;
this.defaultMsg = "请刷卡/刷脸/刷付款码取餐";
// 0
this.feeLog = '';
return "键位:" + code + "数据初始化";
default:
return "键位:" + code + "调用成功";
}
// }else{
// //
// const arrNum = require("./json/keycode.json");
// try {
// const getNumIndex = arrNum.find((item) => item.keyCode == code);
// if (getNumIndex) {
// getNumIndex.value;
// this.hideTable
// ? this.$refs.mealController.handleRef(getNumIndex.value)
// : null;
// return;
// }
// switch (code) {
// // case "277":
// // this.hideTable = !this.hideTable;
// // this.isTake = this.hideTable;
// // this.defaultMsg = "//";
// // return "" + code + "";
// case "93":
// this.hideTable ? this.$refs.mealController.handleNext() : null;
// return "" + code + " ";
// case "92":
// this.hideTable ? this.$refs.mealController.handleForward() : null;
// return "" + code + " ";
// case "66":
// this.hideTable ? this.$refs.mealController.handleCofirm() : null;
// return "" + code + "";
// case "67":
// this.hideTable ? this.$refs.mealController.hadnleInit() : null;
// this.defaultMsg = "//";
// return "" + code + "";
// default:
// return "" + code + "";
// }
// } catch (e) {
// console.log(e);
//
// return e;
// }
// }
},
// meal-pay使
handleInit(){
this.feeLog = '';
},
//
handleQC() {
this.hideTable = !this.hideTable;
},
//
getConsumeList(channel_id){
this.$api.ftInfo
.getConsumeList(channel_id)
.then((res) => {
if (res.status == 1) {
this.consumeList.splice(0, 50);
this.allConsumePrice = res.data.all_consume_price+' 元';
this.consumeListHtml = '';
if(res.data.consume_list.length <= 0){
const list = [{
'username': '-',
'recharge_amount': '-',
'record_datetime_short': '-'},
{
'username': '-',
'recharge_amount': '-',
'record_datetime_short': '-',
}];
this.consumeList.push(...list);
}else{
this.consumeList.push(...res.data.consume_list);
}
for (let x in this.consumeList){
if(x%2==0){
this.consumeListHtml += '<tr>';
}
this.consumeListHtml+='<td>'+this.consumeList[x].username+'</td><td>'+this.consumeList[x].recharge_amount+'</td><td>'+this.consumeList[x].record_datetime_short+'</td>'
if(x%2==0){
this.consumeListHtml+='<td>|</td>';
}
if(x%2==1){
this.consumeListHtml+='</tr>';
}
}
} else {
this.$toast.fail('获取消费记录异常');
}
});
}
},
async created() {
// window.onkeydown = this.keyDown;
// init
const keypadType = localStorage.getItem('keypadType');
if(keypadType){
this.keypadType = keypadType;
}
await this.getFtInfo();
//
lqbrid.facegetcode = this.facegetcode;
lqbrid.icgetcode = this.icgetcode;
lqbrid.keyDown = this.keyDown;
lqbrid.qrCode = this.qrCode;
},
mounted(){
const _this = this;
document.onkeydown = function() {
let code = window.event.keyCode;
// console.log(code)
if(code == 111){
//
_this.keypadType = _this.keypadType==1 ? 2 : 1;
localStorage.setItem('keypadType', _this.keypadType)
}
if(code == 106){
// 0
_this.feeLog = '';
//
// _this.hideTable = !_this.hideTable;
// _this.isTake = _this.hideTable;
if(_this.hideTable == _this.btnNum){
_this.hideTable = 0
}else{
_this.hideTable = _this.hideTable + 1;
}
_this.isTake = _this.hideTable;
}
// if(_this.hideTable == 2){
// console.log(code)
// if(code == '156' || code == '92' || code == '109'){
// //
// console.log('')
// _this.$refs.consume.scrollTo(0,0);
// return;
// }else if(code == '157' || code == '93' || code == '107'){
// console.log('')
//
// //
// _this.$refs.consume.scrollTo(500,500);
// return;
// }
// }
};
}
};
</script>
<style scoped>
/* head */
.title {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 5rem;
}
.title .titlte-content {
display: flex;
font-size: 2.5rem;
}
.title .title-btn .title-btn-all {
margin: 0.5rem;
border-radius: 10px;
height: 4rem;
}
/* main */
.outside-take {
font-size: 3rem;
}
.inside-table {
padding: 1rem 0;
}
/* footer */
.inside-footer {
padding: 0 5rem;
text-align: left;
position: absolute;
bottom: 1rem;
width: 85%;
}
.inside-footer h4 {
font-size: 3rem;
margin: 0.5rem 0;
}
/* loadgin */
.wrapper-loading {
height: 100%;
}
.wrapper-loading .van-loading {
top: 50%;
}
.keypad_type{
font-size: 2rem;
}
.keypad_type button{
font-size: 1.1rem;
}
.consume_list{
width: 80%;
height: 60vh;
overflow-y: scroll;
}
.consume_list table{
width: 80%;
margin-left: 10%;
}
.consume_list table thead th{
font-size: 1.8rem;
text-align: center;
margin-top: 1.5rem;
line-height: 3rem;
}
.consume_list table tr{
line-height: 3rem;
}
.user_info_table{
width: 80%;
height: 60vh;
margin: auto;
}
.user_info_table table{
width: 60%;
margin-left: 25%;
}
.user_info_table table tr{
line-height: 5rem;
}
.user_info_table table td{
font-size: 2.5rem;
text-align: center;
font-weight: normal;
}
</style>
<style>
.title .title-btn .van-button--normal {
font-size: 2.5rem;
}
.consume_list table tr{
line-height: 3rem;
}
.consume_list table td{
font-size: 1.8rem;
text-align: center;
font-weight: normal;
}
</style>

View File

@ -0,0 +1,46 @@
[
{
"keyCode": "7|144",
"value": "0"
},
{
"keyCode": "8|145",
"value": "1"
},
{
"keyCode": "9|146",
"value": "2"
},
{
"keyCode": "10|147",
"value": "3"
},
{
"keyCode": "11|148",
"value": "4"
},
{
"keyCode": "12|149",
"value": "5"
},
{
"keyCode": "13|150",
"value": "6"
},
{
"keyCode": "14|151",
"value": "7"
},
{
"keyCode": "15|152",
"value": "8"
},
{
"keyCode": "16|153",
"value": "9"
},
{
"keyCode": "131|158",
"value": "."
}
]

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