Ver código fonte

feat:“同步12.29”

soobin 1 ano atrás
pai
commit
fc1b42419a

+ 17 - 1
src/App.vue

@@ -10,6 +10,7 @@
         <component :is="Component" v-if="$route.meta.keepAlive" />
       </keep-alive>
     </router-view>
+    <nav-bar v-if="tabType"></nav-bar>
   </div>
 </template>
 
@@ -17,12 +18,17 @@
 import { reactive, toRefs } from "vue";
 import { useRouter } from "vue-router";
 import { getLocal } from "@/common/js/utils";
+import navBar from "@/components/NavBar";
+import { ref } from "vue";
+
+
 export default {
   setup() {
     const router = useRouter();
     const state = reactive({
       transitionName: "slide-left",
     });
+    const tabType = ref(true);
     router.beforeEach((to, from, next) => {
       const token = getLocal("token");
       // token为空跳转登陆页面
@@ -40,8 +46,18 @@ export default {
       next();
     });
 
-    return { ...toRefs(state) };
+    router.afterEach(()=>{
+      let currentRouteName = router.currentRoute.value.name;
+      if (currentRouteName === 'home' || currentRouteName === 'device' || currentRouteName === 'robotranking' || currentRouteName === 'user') {
+        tabType.value = true;
+      } else { 
+        tabType.value = false;
+      }
+    })
+
+    return { ...toRefs(state),tabType };
   },
+  components: { navBar }
 };
 </script>
 

BIN
src/assets/device/operIcon/materialMonitor.png


BIN
src/assets/device/operIcon/监控数据.png


+ 109 - 75
src/assets/language/en.json

@@ -17,7 +17,7 @@
     "paymentMethod": "Payment method",
     "allDevices": "All devices",
     "commodityType": "Commodity type",
-    "machineType": "Device type",
+    "machineType": "Machine type",
     "whole": "whole",
     "noPaymentRequired": "No payment required",
     "coin": "Coin",
@@ -36,7 +36,7 @@
     "orderStatus": "Order Status",
     "allSuboUsers": "All subordinate users",
     "companies": "Company platform",
-    "machines": "Device type",
+    "machines": "Machine type",
     "sz": "Sunzee",
     "sc": "Sevencloud",
     "MG": "Marshmallow",
@@ -47,7 +47,7 @@
   },
   "navBar": {
     "homePage": "Home",
-    "deviceInformation": "Device",
+    "deviceInformation": "Machine",
     "machineRanking": "Ranking",
     "personalCenter": "My Center"
   },
@@ -147,7 +147,7 @@
     "delTips": "Please select the data to be deleted first",
     "advertRule": {
       "sysTitle": "Advertising rules",
-      "total": "total",
+      "total": "Total ",
       "rules": "rules",
       "add": "add",
       "delete": "delete",
@@ -187,7 +187,7 @@
     "equipmentNoLabel": "Equipment No",
     "equipmentNoPlaceholder": "Please enter the equipment number",
     "equipmentNameLabel": "Equipment name",
-    "equipmentNamePlaceholder": "Please enter the device name",
+    "equipmentNamePlaceholder": "Please enter the Machine name",
     "alarmTime": "Alarm time",
     "to": "to",
     "startTime": "start time",
@@ -198,7 +198,7 @@
     "requestFailed": "Request failed, click to reload",
     "noMore": "No more",
     "common": "",
-    "recordsTotal": "records in total",
+    "recordsTotal": " Records",
     "search": "search",
     "affiliatedMerchants": "Affiliated merchants",
     "equipmentNo": "Equipment No",
@@ -234,20 +234,20 @@
     }
   },
   "device": {
-    "managementCenter": "Device Management Center",
-    "setAlarm": "set alarm",
-    "equipmentName": "Equipment name",
+    "managementCenter": "Machine Management Center",
+    "setAlarm": "Set alarm",
+    "equipmentName": "Machine name",
     "equipmentNameTips": "No name has been set",
-    "selectDevice": "Select Device",
+    "selectDevice": "Select Machine",
     "selectTime": "Select time",
     "selectTheNumberOfAlarmClockRepetitions": "Select the number of alarm clock repetitions",
     "everyDay": "Every day",
     "weekday": "Working days (Monday to Friday)",
     "weekend": "Weekend (Saturday to Sunday)",
     "custom": "custom",
-    "messageReceiver1": "Device alarm contact 1",
-    "messageReceiver2": "Device alarm contact 2",
-    "messageReceiver3": "Device alarm contact 3",
+    "messageReceiver1": "Machine alarm contact 1",
+    "messageReceiver2": "Machine alarm contact 2",
+    "messageReceiver3": "Machine alarm contact 3",
     "equipmentmessageReceiverPlaceholder": "Please enter email",
     "repetitionsLabel": "Repetitions",
     "repetitionsPlaceholder": "Please enter the number of repetitions",
@@ -255,8 +255,8 @@
     "alarmTypePlaceholder": "Please select the type of alarm clock",
     "alarmNameLabel": "Alarm name",
     "alarmNamePlaceholder": "Please enter the name of the alarm clock",
-    "effectiveImmediately": "Effective immediately",
-    "submitSettings": "Submit Settings",
+    "effectiveImmediately": "State",
+    "submitSettings": "Submit",
     "clickToSelectTheTime": "Click to select the time",
     "cancel": "cancel",
     "confirm": "confirm",
@@ -276,6 +276,7 @@
     "humidityParameterConfiguration": "Humidity parameter configuration",
     "submitUpdates": "Submit Updates",
     "modificationSucceeded": "Modification succeeded",
+    "noParameterData": "No parameter data is available !",
     "addDistributor": "Add Distributor",
     "equipmentNoLabel": "Equipment No",
     "equipmentNoPlaceholder": "Please enter the equipment number",
@@ -292,31 +293,31 @@
     "submitForApproval": "Submit for approval",
     "timeSwitch": "Time switch",
     "addAlarmClock": "Add alarm clock",
-    "modify": "modify",
+    "modify": "Edit",
     "furnHeadStatus": "Furnace head status",
-    "deviceStatus": "Device status",
+    "deviceStatus": "Machine status",
     "opened": "Opened",
     "closed": "Closed",
     "weekday2": "weekday",
     "weekend2": "weekend",
-    "monday": "Monday",
-    "tuesday": "Tuesday",
-    "wednesday": "Wednesday",
-    "thursday": "Thursday",
-    "friday": "Friday",
-    "saturday": "Saturday",
-    "sunday": "Sunday",
+    "monday": "Mon",
+    "tuesday": "Tue",
+    "wednesday": "Wed",
+    "thursday": "Thu",
+    "friday": "Fri",
+    "saturday": "Sat",
+    "sunday": "Sun",
     "deletionSucceeded": "Deletion succeeded",
-    "commonOperations": "Remote operating equipment",
+    "commonOperations": "Remote operation",
     "equipmentNo": "Equipment No",
     "restart": "Reset machine",
     "restartFurnaceHead": "Restart furnace head",
     "sleep": "sleep",
     "openCloseFurnaceHead": "Open/close furnace head",
     "openFurnHead": "Open furnace head",
-    "openDevice": "Open device",
+    "openDevice": "Open Machine",
     "closeFurnHead": "Close furnace head",
-    "closeDevice": "Close device",
+    "closeDevice": "Close Machine",
     "remoteDoorOpening": "Remote door opening",
     "remoteSugarMaking": "Remote sugar making",
     "remoteProduction": "Remote production",
@@ -333,7 +334,10 @@
     "pleaseConfirmAgainWhetherToOperate": "Please confirm again whether to operate",
     "IllThinkAboutItAgain": "Cancel",
     "restartSucceeded": "Restart succeeded",
-    "deleteDeviceSucceed": "Delete device successfully",
+    "deleteDeviceSucceed": "Delete Machine successfully",
+    "deleteDeviceFailed": "Delete Machine failed",
+    "enableMaterialSucceed": "Enable material successfully",
+    "enableMaterialFailed": "Enable material failed",
     "sleepSuccessfully": "Sleep successfully",
     "open": "open",
     "close": "close",
@@ -344,34 +348,34 @@
     "equipmentCodeLabel": "Equipment code",
     "equipmentCodePlaceholder": "Please enter the equipment code",
     "equipmentNameLabel": "Equipment name",
-    "equipmentNamePlaceholder": "Please enter the device name",
+    "equipmentNamePlaceholder": "Please enter the Machine name",
     "merchantNameLabel": "Merchant name",
     "merchantNamePlaceholder": "Please enter the merchant name",
     "equipmentTypeLabel": "Equipment type",
-    "equipmentTypePlaceholder": "Please select a device type",
+    "equipmentTypePlaceholder": "Please select a Machine type",
     "companyTypeLabel": "Company type",
     "companyTypePlaceholder": "Please select a companytype",
     "equipmentModelLabel": "Equipment model",
-    "equipmentModelPlaceholder": "Please select a device model",
+    "equipmentModelPlaceholder": "Please select a Machine model",
     "powerOnStatus": "Power on status",
     "pleaseSelectThePowerOnStatus": "Please select the power on status",
     "equipmentStatus": "Equipment Status",
-    "pleaseSelectTheDeviceStatus": "Please select the device status",
+    "pleaseSelectTheDeviceStatus": "Please select the Machine status",
     "emptyingConditions": "Clear condition",
     "clickSearch": "Click search",
-    "spunSugar": "棉花糖",
-    "popcorn": "popcorn",
+    "spunSugar": "Cotton candy",
+    "popcorn": "Pop corn",
     "sz": "Sunzee",
     "sc": "Sevencloud",
     "startUp": "Start up",
-    "shutdown": "shutdown",
-    "enable": "enable",
-    "deactivate": "deactivate",
-    "deviceInformation": "Device Information",
+    "shutdown": "Shut down",
+    "enable": "Enable",
+    "deactivate": "Deactivate",
+    "deviceInformation": "Machine Information",
     "essentialInformation": "Basic Information",
     "equipmentCode": "Equipment Code",
     "equipmentRemarksLabel": "Equipment Remarks",
-    "equipmentRemarksPlaceholder": "Please enter device notes",
+    "equipmentRemarksPlaceholder": "Please enter Machine notes",
     "affiliatedMerchant": "Business Owner",
     "affiliatedArea": "Affiliated Area",
     "machineType": "Machine Type",
@@ -388,7 +392,7 @@
     "onlinePayment": "Online Payment",
     "offlinePayment": "offline payment",
     "onlineAndOfflinePayment": "Online and offline payment",
-    "submitAndPushDeviceUpdates": "Submit and push device updates",
+    "submitAndPushDeviceUpdates": "Submit and push Machine updates",
     "clickToSelectPattern": "Click to select pattern",
     "pleaseSelectAPattern": "Please select a pattern",
     "clickToSelectTaste": "Click to choose flavor",
@@ -397,6 +401,7 @@
     "todaysSugarList": "Make a sugar list today",
     "submitToMakeSugar": "Submit",
     "viewResults": "View Results",
+    "notUploadData": "The machine did not upload data !",
     "dataOverview": "Data Overview",
     "search": "search",
     "totalNumberOfRuns": "Total number of runs",
@@ -406,8 +411,8 @@
     "sleeping": "sleeping zzZ",
     "notSleeping": "Not sleeping",
     "lastRefreshTime": "Recent refresh time",
-    "machineUniqueCode": "Device Code",
-    "furnaceHeadTemperature": "furnace head temperature",
+    "machineUniqueCode": "Machine Code",
+    "furnaceHeadTemperature": "Furnace head temperature",
     "stirringTemperature": "Stirring temperature",
     "cornGeneratorTemperature": "Corn generator temperature",
     "cupQuantity": "Cup quantity",
@@ -424,13 +429,14 @@
     "diyFlower": "DIY flower",
     "degree": "℃",
     "humidity": "%RH",
-    "volume": "volume",
+    "volume": "Volume",
     "alarmContent": "Alarm content",
-    "alarmClock": "Device alarm!",
+    "alarmContentNoData": "Machine is normal, no alarm.",
+    "alarmClock": "Machine alarm!",
     "eliminateAlarm": "Eliminate",
-    "editDevice": "Device details",
+    "editDevice": "Machine information",
     "seeMore": "See more",
-    "stow": "stow",
+    "stow": "Pack up",
     "successfullyEliminatedTheAlarm": "Successfully eliminated the alarm",
     "slideSliderToAdjustVolume": "Slide slider to adjust volume",
     "submitModification": "Submit Modification",
@@ -461,15 +467,16 @@
     "modifyPricePage": {
       "title": "Commodity price adjustment",
       "equipmentName": "Equipment name",
-      "total": "total",
-      "goods": "goods",
+      "total": "Total: ",
+      "goods": " goods",
       "batchModify": "Batch modification",
-      "modify": "modify",
+      "modify": "Edit",
       "submit": "Submit",
       "batchPrice": "Batch price",
       "batchPricePlace": "Please enter the batch price",
-      "modifySubmit": "Modification submission"
+      "modifySubmit": "Submit"
     },
+    "materialMonitor": "Material control",
     "customLogo": {
       "customLogo": "Custom Logo",
       "logoLabel": "modify logo",
@@ -478,7 +485,7 @@
       "registerButton": "Commit",
       "customLogoSucceed": "Custom logo success"
     },
-    "deleteDevice": "Delete Device",
+    "deleteDevice": "Delete Machine",
     "viewLogs": "View logs",
     "noPosition": "No positioning",
     "equipLocation": "Equipment location",
@@ -486,16 +493,19 @@
     "viewPositioning": "View positioning",
     "view": "view",
     "oneKeyFeed": "One key feeding",
-    "replenishment": "replenishment",
-    "whiteSugar": "whiteSugar",
-    "redSugar": "redSugar",
-    "yellowSugar": "yellowSugar",
-    "blueSugar": "blueSugar",
-    "stick": "stick",
-    "water": "water",
-    "wasteWater": "wasteWater",
+    "replenishment": "Replenishment",
+    "whiteSugar": "WhiteSugar",
+    "redSugar": "RedSugar",
+    "yellowSugar": "YellowSugar",
+    "blueSugar": "BlueSugar",
+    "stick": "Stick",
+    "water": "Water",
+    "wasteWater": "Waste water",
+    "sentSuccessfully": "Request sent successfully",
     "turnOffSleep": "Turn off Sleep",
     "turnOnSleep": "Turn on Sleep",
+    "materialMonitorOn": "Enabled",
+    "materialMonitorOff": "Closed",
     "communiChannel": "Communication channel",
     "tweets": "Tweets",
     "mq": "MQ",
@@ -506,7 +516,7 @@
     "sureUpdate": "Are you sure you want to update",
     "coupon": "coupon",
     "adRule": "Advertising rules",
-    "changePassword": "Changing device password",
+    "changePassword": "Changing Machine password",
     "editAdRule": {
       "title": "Edit Rule",
       "ruleName": "Rule Name",
@@ -519,7 +529,7 @@
       "equipmentName": "Equipment name"
     },
     "devicePasswordPage": {
-      "title": "Changing device password",
+      "title": "Changing Machine password",
       "equipmentName": "Equipment name",
       "deivcePwd": "Equipment password",
       "adminPassword": "Administrator password",
@@ -532,6 +542,16 @@
     "flowerType": "Flower type",
     "flowerTypePlace": "Please select the flower type"
   },
+  "alarmClockSet": {
+    "monday":"Mon",
+    "tuesday":"Tue",
+    "wednesday":"Wed",
+    "thursday":"Thu",
+    "friday":"Fri",
+    "saturday":"Sat",
+    "sunday":"Sun",
+    "checkedAll": "Pick All"
+  },
   "discountCode": {
     "discountCodeNoLabel": "Discount code No",
     "discountCodeNoPlaceholder": "Please enter the discount code number",
@@ -543,8 +563,8 @@
     "clickQuery": "Click Query",
     "selectFullTime": "Select date",
     "discountCode": "Discount code",
-    "total": "total",
-    "discountCodesInTotal": "Discount codes",
+    "total": "Total ",
+    "discountCodesInTotal": " Discount codes",
     "search": "search",
     "notUsed": "not used",
     "used": "Used",
@@ -563,6 +583,7 @@
     "pleaseEnterTheValidityPeriod": "Please enter the validity period",
     "Months": "Months",
     "noMoreThanMonths": "(no more than 3 months)",
+    "days": " days",
     "type": "type",
     "deductionRoll": "Deduction roll",
     "discount2": "Discount",
@@ -582,7 +603,7 @@
   },
   "distributionSet": {
     "distributionSettings": "Distribution Settings",
-    "total": "total",
+    "total": "Total",
     "leftTitle": "Distribution settings",
     "rightAdd": "Add equipment distributor",
     "equipName": "Equipment name",
@@ -615,7 +636,7 @@
     "numberOfOrders": "Order quantity",
     "salesAmount": "Sales amount",
     "commonTools": "Common tools",
-    "deviceManagement": "Device management",
+    "deviceManagement": "Machine management",
     "discountCode": "discountCode",
     "distributionSettings": "distributionSettings",
     "accountPermission": "accountPermission",
@@ -633,6 +654,15 @@
       "notification": "Notification",
       "nextTime": "See it next time",
       "roger": "Do not show again"
+    },
+    "week" : {
+      "mon": "Mon",
+      "tue": "Tue",
+      "wed": "Wed",
+      "thu": "Thu",
+      "fri": "Fri",
+      "sat": "Sat",
+      "sun": "Sun"
     }
   },
   "airwallex": {
@@ -745,7 +775,7 @@
   },
   "merchantManage": {
     "merchantManagement": "Merchant management",
-    "total": "total",
+    "total": "Total",
     "recordsInTotal": "Records",
     "search": "search",
     "telephone": "Telephone",
@@ -910,8 +940,8 @@
     "addRole": "Add Role",
     "pleaseSelectARole": "Please select a role",
     "pleaseSelectAPattern": "Please select a pattern",
-    "deviceManagement": "Device management",
-    "deviceView": "Device View",
+    "deviceManagement": "Machine management",
+    "deviceView": "Machine View",
     "distributionSettings": "Distribution Settings",
     "alarmHistory": "Alarm history",
     "advertisingManagement": "Advertising management",
@@ -939,8 +969,8 @@
     "successfullyModifiedRole": "Successfully modified role",
     "failedToModifyRole": "Failed to modify role",
     "rolePermissionSettings": "Role permission settings",
-    "total": "total",
-    "inTotal": "individual",
+    "total": "Total ",
+    "inTotal": " individual",
     "addTo": "addRole",
     "edit": "edit",
     "delete": "delete",
@@ -1048,8 +1078,8 @@
   },
   "taskMessage": {
     "equipmentInitializationApproval": "Equipment initialization approval",
-    "total": "total",
-    "recordsInTotal": "Records",
+    "total": "Total ",
+    "recordsInTotal": " Records",
     "search": "search",
     "affiliatedMerchants": "Affiliated merchants",
     "equipmentNo": "Equipment No",
@@ -1068,6 +1098,10 @@
     "contactPhoneNumber": "Contact phone number",
     "distributionApplicationApproval": "Distribution application approval",
     "equipmentName": "Equipment name",
+    "owner": "owner",
+    "platform": "platform",
+    "machineOwner": "Machine owner",
+    "platformAccount": "Sevencloud",
     "partners": "Partners",
     "proportion": "proportion",
     "fail": "Fail",
@@ -1250,12 +1284,12 @@
     "whole": "All",
     "sz": "Sunzee",
     "sc": "Sevencloud",
-    "machineType": "Device type",
-    "machineTypePlace": "Please select a device type",
+    "machineType": "Machine type",
+    "machineTypePlace": "Please select a Machine type",
     "MG": "Marshmallow",
     "POP": "Popcorn",
     "seleWeekDateRangeNotSeveDays": "The date range of the selected week cannot exceed 7 days!!!",
-    "rankMethod": "Ranking method"
+    "rankMethod": "Pattern"
   },
   "user": {
     "personalCenter": "Personal Center",

+ 36 - 4
src/assets/language/zh.json

@@ -273,6 +273,7 @@
     "humidityParameterConfiguration": "湿度参数配置",
     "submitUpdates": "提交更新",
     "modificationSucceeded": "修改成功",
+    "noParameterData": "暂无参数数据",
     "addDistributor": "添加分销人",
     "equipmentNoLabel": "设备编号",
     "equipmentNoPlaceholder": "请输入设备编号",
@@ -304,7 +305,7 @@
     "saturday": "周六",
     "sunday": "周日",
     "deletionSucceeded": "删除成功",
-    "commonOperations": "远程操作设备",
+    "commonOperations": "远程操作",
     "equipmentNo": "设备编号",
     "restart": "机器复位",
     "restartFurnaceHead": "重启炉头",
@@ -331,6 +332,9 @@
     "IllThinkAboutItAgain": "我再想想",
     "restartSucceeded": "重启成功",
     "deleteDeviceSucceed": "删除设备成功",
+    "deleteDeviceFailed": "删除设备失败",
+    "enableMaterialSucceed": "启用物料监控成功",
+    "enableMaterialFailed": "启用物料监控失败",
     "sleepSuccessfully": "睡眠成功",
     "open": "开启",
     "close": "关闭",
@@ -394,6 +398,7 @@
     "todaysMakeList": "今日制作列表",
     "submitToMakeSugar": "提交",
     "viewResults": "查看结果",
+    "notUploadData": "机器未上传数据",
     "dataOverview": "设备管理",
     "search": "搜索",
     "totalNumberOfRuns": "运行总数",
@@ -426,9 +431,10 @@
     "humidity": "%RH",
     "volume": "音量",
     "alarmContent": "报警内容",
+    "alarmContentNoData": "机器正常,无报警",
     "alarmClock": "设备报警!",
     "eliminateAlarm": "消除",
-    "editDevice": "设备详细信息",
+    "editDevice": "详细信息",
     "seeMore": "查看更多",
     "stow": "收起",
     "successfullyEliminatedTheAlarm": "消除报警成功",
@@ -513,6 +519,8 @@
     "sentSuccessfully": "发送请求成功",
     "turnOffSleep": "关闭睡眠",
     "turnOnSleep": "开启睡眠",
+    "materialMonitorOn": "物料监控已开启",
+    "materialMonitorOff": "物料监控已关闭",
     "communiChannel": "通信通道",
     "tweets": "个推",
     "mq": "MQ",
@@ -533,6 +541,16 @@
     "flowerType": "花型种类",
     "flowerTypePlace": "请选择花型种类"
   },
+  "alarmClockSet": {
+    "monday":"一",
+    "tuesday":"二",
+    "wednesday":"三",
+    "thursday":"四",
+    "friday":"五",
+    "saturday":"六",
+    "sunday":"日",
+    "checkedAll": "全选"
+  },
   "discountCode": {
     "discountCodeNoLabel": "优惠码编号",
     "discountCodeNoPlaceholder": "请输入优惠码编号",
@@ -564,6 +582,7 @@
     "pleaseEnterTheValidityPeriod": "请输入有效期",
     "Months": "个月",
     "noMoreThanMonths": "(不超过3个月)",
+    "days": "天",
     "type": "类型",
     "deductionRoll": "抵扣卷",
     "discount2": "打折",
@@ -634,6 +653,15 @@
       "notification": "通知",
       "nextTime": "下次再看",
       "roger": "不再显示"
+    },
+    "week" : {
+      "mon": "周一",
+      "tue": "周二",
+      "wed": "周三",
+      "thu": "周四",
+      "fri": "周五",
+      "sat": "周六",
+      "sun": "周日"
     }
   },
   "airwallex": {
@@ -695,8 +723,8 @@
     "bankAccountPlaceholder": "请输入银行账号,确保无误",
     "interBankNoLabel": "联行号",
     "interBankNoPlaceholder": "请输入联行号",
-    "businessLicenseNoLabel": "营业执照编号",
-    "businessLicenseNoPlaceholder": "请输入营业执照编号",
+    "businessLicenseNoLabel": "统一社会信用代码",
+    "businessLicenseNoPlaceholder": "请输入统一社会信用代码",
     "validityOfBusinessLicenseLabel": "营业执照有效期",
     "validityOfBusinessLicensePlaceholder": "请输入营业执照有效期",
     "settlementMethod": "结算方式",
@@ -1082,6 +1110,10 @@
     "contactPhoneNumber": "联系人手机号",
     "distributionApplicationApproval": "分销申请审批",
     "equipmentName": "设备名称",
+    "owner": "拥有者",
+    "platform": "平台",
+    "machineOwner": "机主",
+    "platformAccount": "七云",
     "partners": "合作商",
     "proportion": "比例",
     "fail": "不通过",

+ 8 - 51
src/components/NavBar.vue

@@ -1,6 +1,6 @@
 <template>
   <!-- 底部横条 -->
-  <div class="nav-bar van-hairline--top">
+  <!-- <div class="nav-bar van-hairline--top">
     <ul class="nav-list">
       <router-link class="nav-list-item active" to="home">
         <div class="nbicon">
@@ -31,7 +31,13 @@
         <span>{{$t('navBar.personalCenter')}}</span>
       </router-link>
     </ul>
-  </div>
+  </div> -->
+  <van-tabbar route active-color="#2d87c8" inactive-color="#404d74">
+    <van-tabbar-item replace to="/home" icon="wap-home">{{ $t('navBar.homePage') }}</van-tabbar-item>
+    <van-tabbar-item replace to="/device" icon="setting">{{ $t('navBar.deviceInformation')}}</van-tabbar-item>
+    <van-tabbar-item replace to="/robotranking" icon="label">{{ $t('navBar.machineRanking')}}</van-tabbar-item>
+    <van-tabbar-item replace to="/user" icon="contact">{{ $t('navBar.personalCenter') }}</van-tabbar-item>
+  </van-tabbar>
 </template>
 
 <script>
@@ -48,14 +54,8 @@ import userActiveUrl from "@/assets/navbarLogo/userActive.png";
 
 export default {
   setup() {
-    // const route = useRoute()
     const store = useStore();
     onMounted(() => {
-      // const token = getLocal('token')
-      // const path = route.path
-      // if (token && !['/home', '/category'].includes(path)) {
-      //   store.dispatch('updateCart')
-      // }
     });
     const count = computed(() => {
       return store.state.cartCount;
@@ -78,47 +78,4 @@ export default {
 
 <style lang="less" scoped >
 @import "../common/style/mixin";
-.nav-bar {
-  position: fixed;
-  left: 0;
-  bottom: 0;
-  width: 100%;
-  padding: 5px 0;
-  z-index: 1000;
-  background: #fff;
-  transform: translateZ(0);
-  -webkit-transform: translateZ(0);
-  .nav-list {
-    width: 100%;
-    .fj();
-    flex-direction: row;
-    padding: 0;
-    .navIconImage { width: 22px; height: 22px; }
-    .dailyImage { display: inline-block; }
-    .activeImage { display: none; }
-    .nav-list-item {
-      display: flex;
-      flex: 1;
-      flex-direction: column;
-      text-align: center;
-      color: #666;
-      &.router-link-active {
-        color: rgba(77,106,221,1);
-        .dailyImage { display: none; }
-        .activeImage { display: inline-block; }
-      }
-      i {
-        text-align: center;
-        font-size: 22px;
-      }
-      span {
-        font-size: 12px;
-      }
-      .van-icon-shopping-cart-o {
-        margin: 0 auto;
-        margin-bottom: 2px;
-      }
-    }
-  }
-}
 </style>

+ 3 - 1
src/main.js

@@ -4,7 +4,7 @@ import {
   AddressList, Field, CellGroup, Cell, SwipeCell, Icon, Stepper, Card, Checkbox, CheckboxGroup, Button, Swipe, SwipeItem,
   PullRefresh, List, Tab, Tabs, SubmitBar, Toast, Skeleton, RadioGroup, Radio, NoticeBar, ActionSheet, Cascader, Col, Row,
   Slider, DatePicker, Switch, Calendar, Picker, Uploader, Tag, DropdownMenu, DropdownItem, Notify, ConfigProvider, NavBar,
-  Area, Popover, Collapse, CollapseItem, PickerGroup, TimePicker, BackTop, Progress
+  Area, Popover, Collapse, CollapseItem, PickerGroup, TimePicker, BackTop, Progress, Tabbar, TabbarItem
 } from 'vant';
 import { Image as VanImage } from 'vant';
 import App from './App.vue'
@@ -88,6 +88,8 @@ app.use(ActionBarButton)
   .use(TimePicker)
   .use(BackTop)
   .use(Progress)
+  .use(Tabbar)
+  .use(TabbarItem)
 
 
 app.use(router)

+ 15 - 0
src/service/device/index.js

@@ -117,6 +117,11 @@ export function updateParameters(params) {
     return axios.post(`/SZWL-SERVER/tParameters/updateParameters`, params)
 }
 
+// 启用物料监控
+export function enableMaterial(params) {
+    return axios.post(`/SZWL-SERVER/tParameters/enableMaterial`, params)
+}
+
 // 分销人回显
 export function getProportion(params) {
     return axios.post(`/SZWL-SERVER/tProportion/getOne?${stringToUrl(params)}`)
@@ -190,4 +195,14 @@ export function updateDIYFlowerStatus(params) {
 // 修改DIY花型的形状或是否显示
 export function updateDIYProductShow(params) {
     return axios.post(`/SZWL-SERVER/tEquipment/updateDIYProductShow`, params);
+}
+
+// 日志上传
+export function uploadLog(params) {
+    return axios.get(`/SZWL-SERVER/tEquipment/uploadLog?${stringToUrl(params)}`);
+}
+
+// 查询日志
+export function queryLog(params) {
+    return axios.get(`/SZWL-SERVER/tEquipment/queryLog?${stringToUrl(params)}`);
 }

+ 17 - 14
src/styles/alarmClock/index.less

@@ -1,4 +1,4 @@
-.clockPage {
+.pageClock {
   background-color: rgba(255, 255, 255, 1);
   // position: relative;
   width: 100%;
@@ -72,7 +72,8 @@
 
     .section6 {
       width: 100%;
-      padding: 10px 15px;
+      padding: 10px 10px;
+      height: 100px;
 
       .TextGroup2 {
         width: 25%;
@@ -143,8 +144,9 @@
 
       .ImageText2 {
         height: 17px;
-        width: 10%;
-        margin: 9px 0 0 20px;
+        width: 15%;
+        // margin: 9px 0 0 5px;
+        margin-top: 5px;
 
         .group3 {
           width: 40px;
@@ -153,7 +155,7 @@
           .group4 {
             width: 13px;
             height: 14px;
-            background: url(https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPngb70cca70325ff31d341004d9ce7ebf2d5f692bbe3bf755d9d44b36aa78c21c77) top center no-repeat;
+            background: url('../../assets/delete.png') top center no-repeat;
             background-size: 100%;
             margin-top: 1px;
           }
@@ -178,17 +180,18 @@
       }
 
       .bd4 {
-        width: 10%;
+        width: 15%;
         height: 36px;
-        margin: 10px 0 0 15px;
+        // margin: 10px 0 0 15px;
 
         .outer1 {
-          width: 41px;
+          width: 40px;
           height: 17px;
+          margin-left: 5px;
 
           .main3 {
-            width: 15px;
-            height: 15px;
+            width: 12px;
+            height: 12px;
             background: url('../../assets/edit.png') top center no-repeat;
             background-size: 100%;
             margin-top: 1px;
@@ -391,11 +394,10 @@
     .ImageText1 {
       height: 18px;
       width: auto;
-      margin: 23px 0 0 15px;
+      margin: 15px 0 0 15px;
 
       .mod4 {
         width: 109px;
-        height: auto;
 
         .TextGroup1 {
           height: 13px;
@@ -404,10 +406,11 @@
 
           .info4 {
             width: auto;
-            height: 13px;
+            margin-top: 3px;
+            height: 14px;
             overflow-wrap: break-word;
             color: rgba(64, 77, 116, 1);
-            font-size: 13px;
+            font-size: 14px;
             text-align: left;
             white-space: nowrap;
             line-height: 13px;

+ 15 - 2
src/styles/device/index.less

@@ -288,7 +288,7 @@
               font-size: 14px;
               text-align: left;
               white-space: nowrap;
-              line-height: 13px;
+              line-height: 14px;
             }
 
             .clickable-link {
@@ -358,6 +358,19 @@
               // display: block;
             }
 
+            .info4 {
+              width: 60%;
+            }
+
+            .info5 {
+              overflow-wrap: break-word;
+              word-wrap: break-word;
+              color: rgba(64, 77, 116, 1);
+              font-size: 14px;
+              text-align: left;
+              max-width: 100%;
+            }
+
             .editDeviceBtnCon {
               // color: #2c87c8;
 
@@ -372,7 +385,7 @@
               .c-text-14 {
                 display: inline-block;
                 /* 将行内文本转为块级元素 */
-                padding: 5px 15px;
+                padding: 5px 8px;
                 /* 添加内边距 */
                 background-color: #df5e4c;
                 border-radius: 14px;

+ 19 - 10
src/styles/deviceSet/index.less

@@ -642,11 +642,20 @@
         }
     }
 
-        .input1 {
-            .van-field__body {
-                width: 80%;
-            }
+    .input1 {
+        .van-field__body {
+            width: 80%;
+        }
+
+
+        .van-field__control {
+            height: 38px;
+            line-height: 38px;
+            padding: 6px;
+            border-radius: 1px;
+            border: 1px solid #dddde8;
         }
+    }
 
     .van-button--primary {
         background-color: #2c87c8;
@@ -658,11 +667,11 @@
         border-color: #2c87c8;
     }
 
-        .van-tabs__line {
-             background-color: #2c87c8 !important;
-        }
+    .van-tabs__line {
+        background-color: #2c87c8 !important;
+    }
 
-        .van-cascader__option--selected {
-             color: #2c87c8;
-        }
+    .van-cascader__option--selected {
+        color: #2c87c8;
+    }
 }

+ 1 - 0
src/styles/home/index.less

@@ -125,6 +125,7 @@
             text-align: center;
             white-space: nowrap;
             line-height: 17px;
+            cursor: pointer;
           }
 
           .layer4 {

+ 0 - 1
src/styles/orderCenter/index.less

@@ -537,7 +537,6 @@
               white-space: nowrap;
               line-height: 12px;
               display: block;
-              margin-top: 40px;
             }
 
             .main11 {

+ 17 - 3
src/styles/user/index.less

@@ -104,18 +104,32 @@
             }
 
             .relationClass {
-                padding: 0;
+
+                .van-field__control {
+                    width: 60%;
+                    height: 38px;
+                    line-height: 38px;
+                    padding: 6px;
+                    border-radius: 2px;
+                    background: #fff;
+                    border: 1px solid #dddde8;
+                }
 
                 .van-field__button {
                     background-color: #2c87c8;
                     color: #fff;
-                    padding: 0 0.5em;
-                    margin-left: 10px;
+                    padding: 0 5px;
+                    margin-left: 15px;
+                    border-radius: 0.5em;
                 }
             }
         }
     }
 
+    .van-cell {
+        background: none;
+    }
+
     .lineBox {
         width: 100%;
         height: 15px;

+ 8 - 3
src/views/accountOperation/index.vue

@@ -9,7 +9,7 @@
           <div class="taskTitle">{{ $t('accountOperation.accountAuthority') }}</div>
         </div>
       </div>
-      <div class="taskListRow flex-col" @click="pushPageList('/distributionSet')">
+      <div v-if="user.ifForeign != '1'" class="taskListRow flex-col" @click="pushPageList('/distributionSet')">
         <div class="taskIcon retailIcon"></div>
         <div class="taskRight">
           <div class="taskTitle">{{ $t('accountOperation.distributionSettings') }}</div>
@@ -47,19 +47,24 @@
 import { onMounted } from 'vue';
 import sHeader from "../../components/SimpleHeader";
 import { useRouter } from "vue-router";
-import { styleUrl } from "../../common/js/utils";
+import { getLoginUser, styleUrl } from "../../common/js/utils";
 
 export default {
   components: { sHeader },
   setup() {
     const router = useRouter();
     styleUrl('accountOperation');
+    const user = getLoginUser();
+
     // 初始化页面获取列表
     onMounted(async () => { });
     const pushPageList = (url) => {
       router.push(url);
     }
-    return { pushPageList };
+    return {
+      pushPageList,
+      user,
+    };
   }
 };
 </script>

+ 1 - 1
src/views/device/alarmClock.vue

@@ -81,7 +81,7 @@ export default {
       const { data } = await getAlaramClockList({ adminId: user.id });
       if (data.code) {
         list.value = data.data;
-      } else { showFailToast(data.message); }
+      }
     }
 
     const addAlarmClock = () => {

+ 16 - 17
src/views/device/alarmClockSet/index.vue

@@ -13,7 +13,7 @@
           $t("device.selectTheNumberOfAlarmClockRepetitions")
         }}</span>
         <div class="o-pl-15 o-ptb-10">
-          <van-checkbox @click="checkedAllClk" v-model="checkedAll">全选</van-checkbox>
+          <van-checkbox @click="checkedAllClk" v-model="checkedAll">{{ $t("alarmClockSet.checkedAll") }}</van-checkbox>
         </div>
         <div class="l-flex-between dayCon">
           <div @click="selectDayClk(item.value)" class="dayName" :class="{ active: selectList.includes(item.value) }"
@@ -26,17 +26,17 @@
         :placeholder="$t('device.alarmTypePlaceholder')" @click="alarmClockTypeShow = true" class="field" />
       <van-field v-model="alarmClockName" name="alarmClockName" :label="$t('device.alarmNameLabel')"
         :placeholder="$t('device.alarmNamePlaceholder')" />
-      <div class="ImageText1 flex-col">
-        <div class="mod4 flex-row justify-between">
-          <div class="TextGroup1 flex-col">
-            <span class="info4">{{ $t("device.effectiveImmediately") }}</span>
+      <div class="ImageText1">
+        <div class="mod4 justify-between">
+          <div class="TextGroup1">
+            <span class="info4">{{ $t("device.effectiveImmediately") }}</span>
           </div>
-          <div class="section1 flex-col">
-            <van-switch v-model="checked" />
+          <div class="">
+            <van-switch v-model="checked" size="20px" />
           </div>
         </div>
       </div>
-      <van-row justify="space-around" style="padding: 1em">
+      <van-row justify="space-around" style="padding: 5em">
         <van-button span="5" round type="primary" style="height: 2em; padding: 0 2em" @click="submitSet">
           {{ $t("device.submitSettings") }}</van-button>
       </van-row>
@@ -94,7 +94,7 @@ export default {
   name: "alarm-clock-set",
   components: { sHeader },
   setup() {
-
+    const { t } = useI18n();
     const onConfirm = ({ selectedValues }) => {
       console.log(selectedValues);
       currentTime.value = selectedValues;
@@ -105,31 +105,31 @@ export default {
     // 周
     const weekDayList = ref([
       {
-        name: '日',
+        name: t("alarmClockSet.sunday"),
         value: '7',
       },
       {
-        name: '一',
+        name: t("alarmClockSet.monday"),
         value: '1',
       },
       {
-        name: '二',
+        name: t("alarmClockSet.tuesday"),
         value: '2',
       },
       {
-        name: '三',
+        name: t("alarmClockSet.wednesday"),
         value: '3',
       },
       {
-        name: '四',
+        name: t("alarmClockSet.thursday"),
         value: '4',
       },
       {
-        name: '五',
+        name: t("alarmClockSet.friday"),
         value: '5',
       },
       {
-        name: '六',
+        name: t("alarmClockSet.saturday"),
         value: '6',
       },
     ]);
@@ -163,7 +163,6 @@ export default {
         checkedAll.value = false;
       }
     }, { immediate: true, deep: true });
-    const { t } = useI18n();
     const user = getLoginUser();
     const route = useRoute();
     const router = useRouter();

+ 29 - 2
src/views/device/deviceOper.vue

@@ -14,6 +14,7 @@
     <van-icon name="cross" class="close" @click="show = false" />
     <div class="group4 flex-col"></div>
     <div class="operBox">
+      <!-- 重启炉头 -->
       <div class="operItem" @click="restartFurnace()">
         <div class="operIcon">
           <img class="operImg" src="../../assets/device/operIcon/restart.png" />
@@ -21,6 +22,7 @@
         <div v-if="device.machineType === '1'" class="operText">{{ $t("device.restart") }}</div>
         <div v-else class="operText">{{ $t("device.restartFurnaceHead") }}</div>
       </div>
+      <!-- 睡眠 -->
       <div class="operItem" @click="sleepEquipmentFun()">
         <div class="operIcon">
           <img class="operImg" src="../../assets/device/operIcon/sleep.png" />
@@ -105,6 +107,13 @@
         </div>
         <div class="operText">{{ $t("device.modifyPrice") }}</div>
       </div>
+      <!-- 物料监控 -->
+      <div class="operItem" @click="materialMonitorClk()">
+        <div class="operIcon">
+          <img class="operImg" src="../../assets/device/operIcon/materialMonitor.png" />
+        </div>
+        <div class="operText">{{ $t("device.materialMonitor") }}</div>
+      </div>
       <!-- 屏蔽/展示商品 -->
       <div class="operItem" @click="showGoodsClk()">
         <div class="operIcon">
@@ -186,6 +195,7 @@ import {
   openDoor,
   deviceTuoji,
   delOneDevice,
+  enableMaterial
 } from "../../service/device";
 import { showFailToast, showSuccessToast } from "vant";
 import { useRouter } from "vue-router";
@@ -304,6 +314,11 @@ export default {
     const paramSetPush = () => {
       router.push({ path: "paramsSet", query: { deviceId: device.value.id } });
     };
+    // 物料监控
+    const materialMonitorClk = () => {
+      operType.value = 7;
+      operCheckShow.value = true;
+    };
     // 跳转 - 添加分销人
     const saveProportionPush = () => {
       router.push({
@@ -414,7 +429,19 @@ export default {
           showSuccessToast(t("device.deleteDeviceSucceed"));
           operCheckShow.value = false;
         } else {
-          showFailToast(data.message);
+          showFailToast(t("device.deleteDeviceFailed"));
+        }
+      }
+      // 启用物料监控
+      if (operType.value === 7) {
+        const { data } = await enableMaterial({
+          equipmentId: device.value.id,
+        });
+        if (data.code === '00000') {
+          showSuccessToast(t("device.enableMaterialSucceed"));
+          operCheckShow.value = false;
+        } else {
+          showFailToast(t("device.enableMaterialFailed"));
         }
       }
       // 关闭弹窗
@@ -454,8 +481,8 @@ export default {
       sleepTitle,
       viewLogs,
       deleteDevice,
-      // viewPosiClk,
       changePasswordClk,
+      materialMonitorClk
     };
   },
   components: {},

+ 1 - 1
src/views/device/deviceSet.vue

@@ -213,7 +213,7 @@
         <!-- 版本号 -->
         <van-field readonly v-model="deviceDetal.apkVersion" :label="`${$t('device.versionNo')}`" placeholder="" />
         <!-- url -->
-        <div v-if="isAdmind" class="cust_vantBorder">
+        <div v-if="isAdmind">
           <van-field center clearable class="input1" v-model="deviceDetal.url" :label="$t('device.url')"
             :placeholder="$t('device.urlPlace')">
             <template #button>

+ 3 - 3
src/views/device/doSugar.vue

@@ -48,7 +48,7 @@
         </div>
         <div v-if="!doSugartData" class="block5 flex-col" @click="submitDoSugar"><span class="txt3">{{
           $t('device.submitToMakeSugar') }}</span></div>
-        <van-button v-if="doSugartData" round type="primary" class="volumeChangeButton" :disabled="doSugartType"
+        <van-button v-if="doSugartData" style="padding: 1em;" round type="primary" class="block5 flex-col" :disabled="doSugartType"
           @click="checkData()">{{ $t('device.viewResults') }}</van-button>
 
       </div>
@@ -60,7 +60,7 @@ import { onMounted, ref } from 'vue';
 import sHeader from "@/components/SimpleHeader";
 import { useRoute, useRouter } from 'vue-router';
 import { getDeviceDetal, selectProducts, doSugar, selectSugarStatus } from '@/service/device'
-import { showFailToast, showSuccessToast } from 'vant';
+import { showFailToast, showSuccessToast, showToast } from 'vant';
 import { useI18n } from 'vue-i18n';
 import { styleUrl } from "../../common/js/utils";
 
@@ -134,7 +134,7 @@ export default {
         showSuccessToast(data.message);
         doSugartData.value = null;
         doSugartType.value = true;
-      } else { showFailToast(data.message); }
+      } else { showToast(t('device.notUploadData')); }
     };
 
     const pushToDaySugarList = async () => {

+ 31 - 30
src/views/device/index.vue

@@ -1,8 +1,8 @@
 <template>
   <!-- 设备列表 -->
   <div class="devicePage flex-col">
-    <s-header :name="sys ? sys.title : $t('device.managementCenter')" :noback="true"></s-header>
     <div class="listBox">
+      <s-header :name="sys ? sys.title : $t('device.managementCenter')" :noback="true" :isFixed="false"></s-header>
       <van-list v-model:loading="loading" v-model:error="error" :error-text="$t('public.requestFailed')"
         :finished="finished" :finished-text="$t('public.noMore')" offset="100" :immediate-check="false" @load="onLoad">
         <div class="deviceBox1 flex-col">
@@ -83,8 +83,8 @@
                 }}</span>
                 <div class="contentBottomCon" v-if="item.checkType">
                   <img class="pic1" referrerpolicy="no-referrer" src="../../assets/home/line.png" />
-                  <div class="layer2 flex-row justify-between o-ptb-7 kBordBott">
-                    <span class="info1 o-ptb-7 kBordBott">{{ $t("device.sleepState") }}:{{
+                  <div class="word4 flex-row justify-between o-ptb-5 kBordBott">
+                    <span class="info1 o-ptb-5 kBordBott">{{ $t("device.sleepState") }}:{{
                       item.isSleep
                       ? $t("device.sleeping")
                       : $t("device.notSleeping")
@@ -116,7 +116,7 @@
                   <!-- <span class="txt5 o-ptb-10 kBordBott l-flex-RC"><span>一键重启炉头:</span>
                     <van-button type="primary">重启</van-button>
                   </span> -->
-                  <div class="word4 o-ptb-7">
+                  <div class="word4 o-ptb-5">
                     <span class="word3 o-pr-5" v-if="item.machineType == '0' || item.machineType == null">{{
                       $t("device.furnHeadStatus") }}: </span>
                     <span class="word3 o-pr-5" v-else>{{ $t("device.deviceStatus") }}: </span>
@@ -151,30 +151,30 @@
                       <a class="clickable-link o-ptb-7" @click="viewPosiClk(item)">{{ item.fullName }}</a>
                     </span>
                   </div>
-                  <van-row class="layer5 o-ptb-7 kBordBott" justify="space-between"
+                  <van-row class="layer5 o-pt-7 kBordBott" justify="space-between"
                     v-if="(item.machineType == '0' || item.machineType == null) && item.equimentType != 'P30'">
-                    <van-col class="word5">{{ $t("device.furnaceHeadTemperature") }}:{{
+                    <van-col class="word5" style="margin-bottom: 13px;">{{ $t("device.furnaceHeadTemperature") }}:{{
                       item.furnaceTm
                     }}{{ $t("device.degree") }}</van-col>
-                    <van-col class="word5">{{ $t("device.temperatureInCabinet") }}:{{
+                    <van-col class="word5" style="margin-bottom: 13px;">{{ $t("device.temperatureInCabinet") }}:{{
                       item.cabinetTm
                     }}{{ $t("device.degree") }}</van-col>
-                    <van-col class="word5">{{ $t("device.humidityInCabinet") }}:{{ item.cabinetHd
+                    <van-col class="word5" style="margin-bottom: 13px;">{{ $t("device.humidityInCabinet") }}:{{ item.cabinetHd
                     }}{{ $t("device.humidity") }}</van-col>
                   </van-row>
-                  <van-row class="layer5 o-ptb-7 kBordBott" justify="space-between" v-else>
-                    <van-col class="word5">{{ $t("device.stirringTemperature") }}:{{
+                  <van-row class="layer5 o-pt-7 kBordBott" justify="space-between" v-else>
+                    <van-col class="word5" style="margin-bottom: 13px;">{{ $t("device.stirringTemperature") }}:{{
                       item.stirTm
                     }}{{ $t("device.degree") }}</van-col>
-                    <van-col class="word5">{{ $t("device.cornGeneratorTemperature") }}:{{
+                    <van-col class="word5" style="margin-bottom: 13px;">{{ $t("device.cornGeneratorTemperature") }}:{{
                       item.cornGeneratorTm
                     }}{{ $t("device.degree") }}</van-col>
-                    <van-col class="word5">{{ $t("device.cupQuantity") }}:{{ item.cupQuantity
+                    <van-col class="word5" style="margin-bottom: 13px;">{{ $t("device.cupQuantity") }}:{{ item.cupQuantity
                     }}</van-col>
                   </van-row>
                   <template v-if="item.isMaterialUse === '1' && (item.machineType == '0' || item.machineType == null)">
-                    <van-row justify="space-between" class="sugarTxt o-ptb-7 kBordBott">
-                      <van-col>
+                    <van-row justify="space-between" class="sugarTxt o-pt-7 kBordBott">
+                      <van-col style="margin-bottom: 15px;">
                         {{ $t("device.whiteSugar") }}:{{ Format_calcuDecial(item.whiteSugar) }}%
                       </van-col>
                       <van-col>
@@ -183,11 +183,11 @@
                       <van-col>
                         {{ $t("device.yellowSugar") }}:{{ Format_calcuDecial(item.yellowSugar) }}%
                       </van-col>
-                      <van-col>
+                      <van-col style="margin-bottom: 10px;">
                         {{ $t("device.blueSugar") }}:{{ Format_calcuDecial(item.blueSugar) }}%
                       </van-col>
                     </van-row>
-                    <div class="sugarTxt o-ptb-7 kBordBott">
+                    <div class="info1 o-ptb-5 kBordBott">
                       <span>{{ $t("device.stick") }}:{{
                         Format_calcuDecial(item.stick)
                       }}%</span>
@@ -201,7 +201,7 @@
                       </van-col>
                     </van-row>
                     <!-- 一键补料 -->
-                    <span class="txt5 o-ptb-7 kBordBott l-flex-RC"><span>{{ $t("device.oneKeyFeed") }}:</span>
+                    <span class="info1 o-ptb-5 kBordBott l-flex-RC"><span>{{ $t("device.oneKeyFeed") }}:</span>
                       <!-- <van-button @click="replenishmentClk(item)" type="primary">{{ $t("device.replenishment") }}
                       </van-button> -->
                       <a class="replenishment o-ptb-7" @click="replenishmentClk(item)">{{ $t("device.replenishment")
@@ -213,14 +213,17 @@
                   }}</span>
                   <span class="info2 o-ptb-7 kBordBott">{{ $t("device.volume") }}:{{ item.volume }}</span>
                   <div class="l-flex-RC o-ptb-7">
-                    <span class="info3 o-pr-10 kBordBott">{{ $t("device.alarmContent") }}:{{
-                      item.alarmList && item.alarmList[0]
-                      ? item.alarmList[0].alarmContent
-                      : item.alarmContent
-                    }}
-                    </span>
-                    <van-button v-if="item.alarmList && item.alarmList[0]" type="primary" size="small" color="#07c160"
-                      :text="$t('device.eliminateAlarm')" @click="clearAlarm(item.alarmList[0])"></van-button>
+                    <span class="info3 kBordBott">{{ $t("device.alarmContent") }}:</span>
+                    <div class="info4 l-flex-RC">
+                      <span class="info5 o-pr-10 kBordBott">{{
+                        item.alarmList && item.alarmList[0]
+                        ? item.alarmList[0].alarmContent
+                        : $t("device.alarmContentNoData")
+                      }}
+                      </span>
+                      <van-button v-if="item.alarmList && item.alarmList[0]" type="primary" size="small" color="#07c160"
+                        :text="$t('device.eliminateAlarm')" @click="clearAlarm(item.alarmList[0])"></van-button>
+                    </div>
                   </div>
                   <div class="editDeviceBtnCon l-flex-center o-mt-10">
                     <div class="l-flex-RC" @click="deviceSet(item)">
@@ -246,7 +249,7 @@
                   </div>
                 </div>
               </div>
-              <van-back-top @click="backTop" right="5vw" bottom="10vh" />
+              <van-back-top style="background-color: #2d87c8;" @click="backTop" right="5vw" bottom="10vh" />
             </div>
           </div>
         </div>
@@ -256,7 +259,6 @@
     <!-- 搜索弹出框 -->
     <deviceSearch ref="searchRef" @search="search($event)"></deviceSearch>
     <div style="height: 50px;"></div>
-    <nav-bar></nav-bar>
   </div>
 </template>
 
@@ -267,7 +269,6 @@ import {
 } from "../../service/home";
 import { onMounted, reactive, toRefs, ref, onActivated } from "vue";
 import { showFailToast, showSuccessToast, showToast, showDialog } from "vant";
-import navBar from "../../components/NavBar";
 import sHeader from "../../components/SimpleHeader";
 import { getLoginUser, Format_calcuDecial } from "../../common/js/utils";
 import {
@@ -285,7 +286,7 @@ import { onBeforeUnmount } from "vue";
 
 export default {
   name: "device",
-  components: { sHeader, navBar, deviceSearch, deviceOper },
+  components: { sHeader, deviceSearch, deviceOper },
   setup() {
     const { t } = useI18n();
     const searchRef = ref(null);
@@ -343,7 +344,7 @@ export default {
       id: "", // 用户账户id
       // adminName: '', // 用户登录名
       current: 1, // 页数
-      size: 15, // 页大小
+      size: 10, // 页大小
       todayDate: dateUtil.formateDate(new Date(), "yyyy-MM-dd"), // 当天时间
     });
     // 初始化页面获取列表

+ 11 - 5
src/views/device/openDoor.vue

@@ -91,10 +91,12 @@ export default {
 					type: 0,
 					status: outDoor,
 				}).then((res) => {
-					showToast(res.data.message);
+					if (res.data.code == "00000") {
+						showToast(t('device.sentSuccessfully'));
+					}
 					setTimeout(() => {
 						getDeviceDetalFun();
-					}, 1000);
+					}, 1500);
 				});
 			});
 		};
@@ -110,10 +112,12 @@ export default {
 					type: 1,
 					status: inDoor,
 				}).then((res) => {
-					showToast(res.data.message);
+					if (res.data.code == "00000") {
+						showToast(t('device.sentSuccessfully'));
+					}
 					setTimeout(() => {
 						getDeviceDetalFun();
-					}, 1000);
+					}, 1500);
 				});
 			});
 		};
@@ -130,4 +134,6 @@ export default {
 }
 </script>
   
-<style lang="less" scoped>@import "../../common/style/common";</style>
+<style lang="less" scoped>
+@import "../../common/style/common";
+</style>

+ 4 - 4
src/views/device/paramsSet/paramsSetInfo.vue

@@ -42,9 +42,9 @@
           </template>
         </van-field>
         <div class="flex-row" v-else>
-          <span class="txt3 o-pl-15 o-mtb-18">{{ paramName[key] }}
+          <span class="txt3 o-pl-15 o-mtb-18" v-if="item.name != 'M502'">{{ paramName[key] }}
           </span>
-          <van-switch class="o-mt-8" :model-value="checked[key]" @update:model-value="onUpdateValue(item, key)">
+          <van-switch v-if="item.name != 'M502'" class="o-mt-8" :model-value="checked[key]" @update:model-value="onUpdateValue(item, key)">
           </van-switch>
         </div>
       </div>
@@ -57,7 +57,7 @@ import { onMounted, ref } from "vue";
 import sHeader from "@/components/SimpleHeader";
 import { useRoute } from "vue-router";
 import { getDeviceDetal, getParameters, updateParameters } from "@/service/device";
-import { showFailToast, showSuccessToast, showConfirmDialog } from "vant";
+import { showFailToast, showSuccessToast, showConfirmDialog, showToast } from "vant";
 import { useI18n } from 'vue-i18n';
 import { styleUrl } from "../../../common/js/utils";
 
@@ -128,7 +128,7 @@ export default {
         // console.log("checked:", checked.value);
 
       } else {
-        showFailToast(data.message);
+        showToast(t('device.noParameterData'));
       }
     };
 

+ 126 - 11
src/views/device/viewLogs/index.vue

@@ -10,10 +10,19 @@
       <van-popup v-model:show="showPicker" round position="bottom">
         <van-date-picker :min-date="minDate" :max-date="maxDate" @confirm="selectTime" @cancel="showPicker = false" />
       </van-popup>
-      <van-button v-if="!downloading" round :disabled="logsTime === ''" type="primary" class="volumeChangeButton"
-        @click="downloadBtn">{{ $t('device.download') }}</van-button>
-      <van-button v-else disabled loading round class="volumeChangeButton" type="primary"
-        :loading-text="$t('device.downloading')" />
+      <van-cell-group>
+        <van-field readonly v-model="message" rows="2" autosize label="使用教程" type="textarea" show-word-limit />
+      </van-cell-group>
+      <div class="button-container">
+        <van-button round style="padding: 1em 2em;" type="primary" @click="uploadLogBtn">上传</van-button>
+        <van-button round style="padding: 1em 2em;" type="primary" @click="queryLogBtn">查询</van-button>
+      </div>
+      <van-cell v-if="fileName != ''" :title="fileName" :clickable=true @click="downloadFile">
+        <!-- 使用 right-icon 插槽来自定义右侧图标 -->
+        <template #right-icon>
+          <van-icon name="down" class="search-icon" />
+        </template>
+      </van-cell>
     </div>
   </div>
 </template>
@@ -27,11 +36,14 @@ import {
 import sHeader from "@/components/SimpleHeader.vue";
 import {
   downloadLog,
-  getDeviceDetal
+  getDeviceDetal,
+  uploadLog,
+  queryLog
 } from "@/service/device";
 import { $M_ExportFile } from "@/common/js/utils";
 import {
-  showFailToast
+  showFailToast,
+  showToast
 } from "vant";
 import {
   useRoute
@@ -52,6 +64,8 @@ export default ({
     const showPicker = ref(false);
     const downloading = ref(false);
     const logsTime = ref(null);
+    const fileName = ref(''); // 文件名
+    const message = ref('选择日期点击上传,等待几秒后点击查询,找到文件点击下载到本地查看。');
     // const curDate = new Date(); // 获取当前时间日期
 
     // 计算最小日期为当前日期7天前
@@ -72,20 +86,16 @@ export default ({
       // 加载样式
       styleUrl('viewLogs');
       await getDeviceDetailFun();
-      // console.log(deviceDetail.value.name);
     });
 
     // 选择时间
     const chooseTime = () => {
-      // console.log('chooseTime function is called');
       showPicker.value = true;
       console.log(showPicker.value);
     };
 
 
     const selectTime = ({ selectedValues }) => {
-      // console.log('selectTime function is called', time);
-      // logsTime.value = dateUtil.formateDate(time, "yyyy-MM-dd");
       logsTime.value = selectedValues.join("-");
       showPicker.value = false;
     };
@@ -105,8 +115,12 @@ export default ({
 
     const downloadBtn = async () => {
       const pattern = /^\d{4}-\d{2}-\d{2}$/;
+      if (logsTime.value == null) {
+        showToast('请选择日期');
+        return;
+      }
       if (!pattern.test(logsTime.value)) {
-        showFailToast('日期格式有误');
+        showToast('日期格式有误');
         return;
       }
       const formattedDate = logsTime.value.replace(/-/g, '');
@@ -135,6 +149,82 @@ export default ({
       }
     }
 
+    const uploadLogBtn = async () => {
+      const pattern = /^\d{4}-\d{2}-\d{2}$/;
+      if (logsTime.value == '') {
+        showToast('请选择日期');
+        return;
+      }
+      if (!pattern.test(logsTime.value)) {
+        showToast('日期格式有误');
+        return;
+      }
+      const formattedDate = logsTime.value.replace(/-/g, '');
+      const { data } = await uploadLog({
+        equipmentId: deviceId,
+        day: formattedDate,
+      });
+      if (data.code == '00000') {
+        showToast('上传信号发送成功,请等待几秒后查询下载');
+      } else {
+        showFailToast(data.message);
+      }
+    }
+
+    // 查询日志是否上传成功
+    const queryLogBtn = async () => {
+      if (logsTime.value == '') {
+        showToast('请选择日期');
+        return;
+      }
+      const pattern = /^\d{4}-\d{2}-\d{2}$/;
+      if (!pattern.test(logsTime.value)) {
+        showToast('日期格式有误');
+        return;
+      }
+      const formattedDate = logsTime.value.replace(/-/g, '');
+      const { data } = await queryLog({
+        equipmentId: deviceId,
+        day: formattedDate,
+      });
+      if (data.code == '00000') {
+        // console.log(data.data);
+        showToast("查询成功,点击下载")
+        fileName.value = data.data.substring(4);
+      } else {
+        fileName.value = '';
+        showToast("找不到文件,请重试上传或检查机器网络");
+      }
+    }
+
+    const downloadFile = async () => {
+      // 文件链接
+      const fileUrl = 'http://qiniuyun.sunzee.com.cn/log/' + fileName.value;
+      // 文件名
+      const newFileName = fileName.value;
+      try {
+        const response = await fetch(fileUrl);
+        console.log('response', response);
+
+        // 将文件内容创建为Blob
+        const fileBlob = await response.blob();
+
+        // 创建一个下载链接
+        const downloadLink = document.createElement('a');
+        downloadLink.href = URL.createObjectURL(fileBlob);
+        downloadLink.download = newFileName;
+
+        // 模拟点击下载链接
+        document.body.appendChild(downloadLink);
+        downloadLink.click();
+
+        // 清理添加的链接元素
+        document.body.removeChild(downloadLink);
+      } catch (error) {
+        console.error('请求超时:', error);
+      }
+    }
+
     return {
       deviceDetail,
       downloadBtn,
@@ -145,6 +235,11 @@ export default ({
       minDate,
       maxDate,
       downloading,
+      downloadFile,
+      uploadLogBtn,
+      queryLogBtn,
+      fileName,
+      message
     }
   },
 
@@ -153,4 +248,24 @@ export default ({
 
 <style lang="less" scoped>
 @import "../../../common/style/common";
+
+.search-icon {
+  font-size: 16px;
+  line-height: inherit;
+}
+
+.button-container {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-top: 20px;
+  /* 根据需要添加上下边距 */
+  margin-bottom: 30px;
+  gap: 20px;
+}
+
+.van-button--primary {
+  background-color: #2d87c8;
+  border-color: #2d87c8;
+}
 </style>

+ 2 - 2
src/views/discountCode/payCode.vue

@@ -132,10 +132,10 @@ export default {
     }
     const payCodeClose = () => { router.go(-1); }
     // 有效天数
-    const validDays = ref('0天');
+    const validDays = ref('0'+ t('discountCode.days'));
     // 监听有效期,计算有效天数
     watch(() => payParams.month, (newVal) => {
-      validDays.value = Format_calcuDecial(newVal, 30) + '天';
+      validDays.value = Format_calcuDecial(newVal, 30) + t('discountCode.days');
     }, { immediate: true, deep: true });
     return {
       ...toRefs(payParams),

+ 25 - 5
src/views/home/index.vue

@@ -43,7 +43,7 @@
                 <div class="main5 flex-row justify-center">
                   <!-- <span class="word8">&yen;</span> -->
                   <span class="word8">{{ currencySymbol }}</span>
-                  <span class="word9">{{ salesVolume }}</span>
+                  <span class="word9">{{ salesVolume.toFixed(0) }}</span>
                 </div>
                 <span class="info5">{{ $t("home.totalIncome") }}</span>
               </div>
@@ -110,7 +110,6 @@
         <div class="o-w" style="max-height: 50vh; overflow-y: auto" v-html="noticeContent.note"></div>
       </template>
     </kDialog>
-    <nav-bar></nav-bar>
   </div>
 </template>
 
@@ -120,7 +119,6 @@ import kNoData from "../../components/commom/kNoData/index.vue";
 import kDialog from "../../components/commom/kDialog/index.vue";
 import { onMounted, ref, nextTick } from "vue";
 import sHeader from "../../components/SimpleHeader";
-import navBar from "../../components/NavBar";
 import dateSelectList from "../../components/dateSelectList";
 import typeSelectList from "../../components/typeSelectList";
 import { getLoginUser, $M_Menus, Format_time, styleUrl } from "../../common/js/utils";
@@ -139,7 +137,6 @@ export default {
   name: "home",
   components: {
     sHeader,
-    navBar,
     dateSelectList,
     typeSelectList,
     kDialog,
@@ -239,11 +236,34 @@ export default {
           salesNumber.value = parseInt(salesNumber.value + item);
         });
         data.data.series[1].data.forEach((item) => {
-          salesVolume.value = parseInt(salesVolume.value + item);
+          salesVolume.value = parseFloat(salesVolume.value) + parseFloat(item);
         });
         data.data.series[2].data.forEach((item) => {
           orderNumber.value = parseInt(orderNumber.value + item);
         });
+        data.data.categories.forEach((item, index) => {
+          if (item == "周1") {
+            data.data.categories[index] = t("home.week.mon");
+          }
+          if (item == "周2") {
+            data.data.categories[index] = t("home.week.tue");
+          }
+          if (item == "周3") {
+            data.data.categories[index] = t("home.week.wed");
+          }
+          if (item == "周4") {
+            data.data.categories[index] = t("home.week.thu");
+          }
+          if (item == "周5") {
+            data.data.categories[index] = t("home.week.fri");
+          }
+          if (item == "周6") {
+            data.data.categories[index] = t("home.week.sat");
+          }
+          if (item == "周日") {
+            data.data.categories[index] = t("home.week.sun");
+          }
+        })
         // 解决eacharts与v-if的渲染问题
         await nextTick();
         if (chartBox.value) {

+ 2 - 2
src/views/merchantManage/index.vue

@@ -45,11 +45,11 @@
               <div class="button-container">
                 <van-button v-if="user.type < 2" class="btn1" round type="success"
                   @click="autoLogin(item.id)">切换登陆</van-button>
-                <van-button class="btn1" round type="primary" @click="merchantSet(item)">详细信息</van-button>
+                <van-button class="btn1" round style="background-color: #2d87c8; border-color: #2d87c8;"  type="primary" @click="merchantSet(item)">详细信息</van-button>
               </div>
             </div>
           </div>
-          <van-back-top right="3vw" bottom="5vh" />
+          <van-back-top style="background-color: #2d87c8;" right="3vw" bottom="5vh" />
         </div>
       </van-list>
     </div>

+ 10 - 3
src/views/merchantManage/set.vue

@@ -116,7 +116,6 @@
                 :{{ adminMchObj.bankAccountType === 1 ? $t('merchantManage.debitCard') : (adminMchObj.bankAccountType ===
                   4
                   ? $t('merchantManage.corporateAccount') : "") }}</span>
-              <!-- <span class="word9"></span> -->
             </div>
             <span class="word10">{{ $t('merchantManage.bankAccountName') }}:{{ adminMchObj.bankAccountName }}</span>
             <span class="word11">{{ $t('merchantManage.bankAccount') }}:{{ adminMchObj.bankAccountNo }}</span>
@@ -184,11 +183,19 @@ export default {
     };
     const getAdminMchFun = async () => {
       const { data } = await getAdminMch({ id: merchantId.value });
-      if (data.code === "00000") { adminMchObj.value = data.data; }
+      if (data.code === "00000") {
+        if (data.data != null) {
+          adminMchObj.value = data.data;
+        }
+      }
     }
     const getHuifuMchFun = async () => {
       const { data } = await getHuifuMch({ adminId: merchantId.value });
-      if (data.code === "00000") { huifuMchObj.value = data.data; }
+      if (data.code === "00000") {
+        if (data.data != null) {
+          huifuMchObj.value = data.data;
+        }
+      }
     }
     const onSubmit = async () => {
       const params = {

+ 12 - 14
src/views/orderCenter/index.vue

@@ -37,7 +37,7 @@
                   <div class="main5 flex-row justify-center">
                     <!-- <span class="word8">&yen;</span> -->
                     <span class="word8">{{ currencySymbol }}</span>
-                    <span class="word9">{{ salesVolume }}</span>
+                    <span class="word9">{{ salesVolume.toFixed(0) }}</span>
                   </div>
                   <span class="info5">{{ $t("home.totalIncome") }}</span>
                 </div>
@@ -98,23 +98,21 @@
                     </template>
                     <template #price>
                       <div class="pricBox flex-row align-end" :class="{ orderError: item.status === 0 }">
-                        <span class="txt9">{{ item.statusText }}:</span>
+                        <span class="txt9">{{ item.statusText }}:
+                          <span v-if="user.ifForeign === '0'" class="word14 o-ptb-8">
+                            {{ $t('orderCenter.dividingDomesticService') }} :{{ currencySymbol }}{{ showSubcom(item) }}
+                          </span>
+                        </span>
                         <!-- 订单明细 - 线下支付 ¥ -->
-                        <!-- <span class="info5">&yen;</span> -->
                         <span class="info5">{{ currencySymbol }}</span>
                         <span class="word12" v-if="item.status === 3">{{ item.price.toFixed(2) }}</span>
                         <span class="word12" v-else>{{ item.refundAmount == null ? item.price.toFixed(2) : (item.price -
                           item.refundAmount).toFixed(2) }}</span>
-                        <!-- 分佣¥ -->
-                        <!-- <span class="word14">{{ $t('orderCenter.dividingDomesticService') }}:&yen;{{ showSubcom(item)
-                        }}</span> -->
-                        <span v-if="user.ifForeign === '0'" class="word14">{{ $t('orderCenter.dividingDomesticService')
-                        }}:{{ currencySymbol }}{{ showSubcom(item)
-}}</span>
                       </div>
                     </template>
                     <template #price-top>
-                      <span class="time_01">{{ $t('orderCenter.paymentTime') }}:{{ showOrderTime(item, 1) }}</span>
+                      <span class="time_01" :style="user.ifForeign == '0' ? 'margin-top: 20px;' : 'margin-top: 40px;'">{{
+                        $t('orderCenter.paymentTime') }}:{{ showOrderTime(item, 1) }}</span>
                     </template>
                     <template #footer>
                       <span v-if="item.status === 3">x{{ item.refundQuantity }}</span>
@@ -132,7 +130,7 @@
                 </div>
                 <!-- <div class="section6 flex-col"></div> -->
               </div>
-              <van-back-top />
+              <van-back-top style="background-color: #2d87c8;" />
             </div>
           </div>
         </div>
@@ -483,7 +481,7 @@ export default {
       endDate: "", // 结束时间 Date
       current: 0, // 页数
       size: 15, // 页大小
-      status: "",//支付状态
+      status: 1,//支付状态
       companyType: "", // 公司平台
       machineType: "", // 设备类型
       ifForeign: "",
@@ -625,7 +623,7 @@ export default {
 
     // 跳转订单导出
     const gotoOrderExcel = async () => {
-      if (searchParams.type == null || searchParams.type == '' ) {
+      if (searchParams.type == null || searchParams.type == '') {
         searchParams.type = user.ifForeign;
       }
       // 显示加载框
@@ -780,7 +778,7 @@ export default {
           salesNumber.value = parseInt(salesNumber.value + item);
         });
         data.data.series[1].data.forEach((item) => {
-          salesVolume.value = parseInt(salesVolume.value + item);
+          salesVolume.value = parseFloat(salesVolume.value) + parseFloat(item);
         });
         data.data.series[2].data.forEach((item) => {
           orderNumber.value = parseInt(orderNumber.value + item);

+ 2 - 4
src/views/robotRanking.vue

@@ -156,7 +156,6 @@
       <van-picker :title="$t('robotRanking.yearPopTitle')" :columns="yearPopList" :columns-field-names="yearPopFieldName"
         @confirm="yearPopConfirm" @cancel="yearShow = false" />
     </van-popup>
-    <nav-bar></nav-bar>
   </div>
 </template>
 
@@ -165,7 +164,6 @@
 import kNoData from "../components/commom/kNoData/index.vue";
 import { onMounted, ref, reactive, computed, nextTick } from "vue";
 import sHeader from "../components/SimpleHeader";
-import navBar from "../components/NavBar";
 import { getRankingList } from "../service/robotRanking";
 import { getLoginUser, styleUrl } from "../common/js/utils";
 import kTabs from "../components/commom/kTabs/index.vue";
@@ -690,7 +688,7 @@ export default {
               },
             ];
             dayChartOption.dataZoom[0]["startValue"] = data.data.categories[0];
-            dayChartOption.dataZoom[0]["endValue"] = data.data.categories[4];
+            dayChartOption.dataZoom[0]["endValue"] = data.data.categories[3];
             // 解决resize不起作用,配合onMounted里的方法使用
             switch (chartType) {
               case "day":
@@ -876,7 +874,7 @@ export default {
       isAdmin,
     };
   },
-  components: { sHeader, navBar, kTabs, kDialog, kNoData },
+  components: { sHeader, kTabs, kDialog, kNoData },
 };
 </script>
 

+ 43 - 52
src/views/settlement/index.vue

@@ -53,7 +53,8 @@
           <div class="van-cell van-field requiredLeft">
             <div class="van-cell__title van-field__label"><span>{{ $t('joinpayMch.merchantType') }}</span></div>
             <div class="van-cell__value van-field__value radioBox">
-              <van-radio-group v-model="altMerchantType" direction="horizontal" @change="fieldUpdate" :disabled="huifuMchID != null || joinPayMchID != null">
+              <van-radio-group v-model="altMerchantType" direction="horizontal" @change="fieldUpdate"
+                :disabled="huifuMchID != null || joinPayMchID != null">
                 <van-radio name="10" icon-size="18px">{{ $t('joinpayMch.personal') }}</van-radio>
                 <!-- <van-radio name="11" icon-size="18px">{{$t('joinpayMch.individualBusinesses')}}</van-radio> -->
                 <van-radio name="12" icon-size="18px">{{ $t('joinpayMch.enterprise') }}</van-radio>
@@ -180,9 +181,10 @@
                 {{ signStatus == '签约成功' ? (huifuMchID == null ? signStatus : (huifuAuditStatus == '2' ? signStatus :
                   '待签约')) : '待签约' }}
               </span>
-              <van-button :disabled="huifuMchID == null ? (signStatus == '签约成功' ? true : false) : (huifuAuditStatus == '2' && signStatus == '签约成功' ? true : false)"
-               span="5" round type="primary" style="height: 2em; padding: 0 2.5em" @click='altMchSignFun()'>{{
-                $t('joinpayMch.signAContract') }}
+              <van-button
+                :disabled="huifuMchID == null ? (signStatus == '签约成功' ? true : false) : (huifuAuditStatus == '2' && signStatus == '签约成功' ? true : false)"
+                span="5" round type="primary" style="height: 2em; padding: 0 2.5em" @click='altMchSignFun()'>{{
+                  $t('joinpayMch.signAContract') }}
               </van-button>
             </div>
           </div>
@@ -191,7 +193,8 @@
           <div class="van-cell van-field requiredLeft">
             <div class="van-cell__title van-field__label"><span>{{ $t('joinpayMch.accountType') }}</span></div>
             <div class="van-cell__value van-field__value radioBox">
-              <van-radio-group v-model="bankAccountType" direction="horizontal" @change="fieldUpdate" :disabled="altMerchantType === '10'">
+              <van-radio-group v-model="bankAccountType" direction="horizontal" @change="fieldUpdate"
+                :disabled="altMerchantType === '10'">
                 <van-radio name="1" icon-size="18px">{{ $t('joinpayMch.debitCard') }}</van-radio>
                 <van-radio name="4" icon-size="18px">{{
                   $t('joinpayMch.corporateAccount')
@@ -219,9 +222,8 @@
             :rules="[{ required: true, message: $t('joinpayMch.bankAccountPlaceholder') }]"
             @update:model-value="fieldUpdate" />
           <!-- 银行地址 -->
-          <van-field v-if="bankAccountType === '1'" class="requiredLeft" v-model="bankAddress" is-link readonly
-            name="bankAddress" :label="$t('huifuMch.huifuBankAddress')"
-            :placeholder="$t('huifuMch.huifuBankAddressPlaceholder')"
+          <van-field class="requiredLeft" v-model="bankAddress" is-link readonly name="bankAddress"
+            :label="$t('huifuMch.huifuBankAddress')" :placeholder="$t('huifuMch.huifuBankAddressPlaceholder')"
             :rules="[{ required: true, message: $t('huifuMch.huifuBankAddressPlaceholder') }]"
             @click="showBankAddress = true" />
           <div v-if="bankAccountType === '4'" class="requiredLeft">
@@ -240,6 +242,11 @@
               @update:model-value="fieldUpdate" /> -->
           </div>
           <div v-if="altMerchantType === '12'" class="requiredLeft">
+            <!-- 营业执照编号 -->
+            <van-field v-model="licenseNo" name="licenseNo" :label="$t('joinpayMch.businessLicenseNoLabel')"
+              :placeholder="$t('joinpayMch.businessLicenseNoPlaceholder')"
+              :rules="[{ required: bankAccountType === '4', message: $t('joinpayMch.businessLicenseNoPlaceholder') }]"
+              @update:model-value="fieldUpdate" />
             <!-- 营业执照有效期 -->
             <div class="van-cell van-field">
               <div class="van-cell__title van-field__label"><span>{{ $t('huifuMch.validityType') }}</span></div>
@@ -250,11 +257,6 @@
                 </van-radio-group>
               </div>
             </div>
-            <!-- 营业执照编号 -->
-            <van-field v-model="licenseNo" name="licenseNo" :label="$t('joinpayMch.businessLicenseNoLabel')"
-              :placeholder="$t('joinpayMch.businessLicenseNoPlaceholder')"
-              :rules="[{ required: bankAccountType === '4', message: $t('joinpayMch.businessLicenseNoPlaceholder') }]"
-              @update:model-value="fieldUpdate" />
             <van-field v-model="beginDateLicense" readonly name="beginDateLicense" :label="$t('huifuMch.beginDate')"
               :placeholder="$t('huifuMch.beginDatePlaceholder')" @click="showBeginDateLicense = true"
               :rules="[{ required: true, message: $t('huifuMch.beginDatePlaceholder') }]" />
@@ -281,7 +283,8 @@
             </template>
           </van-field> -->
           <!-- 操作 -->
-          <van-row justify="space-around" v-if="huifuAuditStatus != '4' && huifuAuditStatus != '1'" style="padding: 1em; margin: 2em 0;">
+          <van-row justify="space-around" v-if="huifuAuditStatus != '4' && huifuAuditStatus != '1'"
+            style="padding: 1em; margin: 2em 0;">
             <van-button span="5" round type="primary" style="height: 2em; padding: 1.5em 2em" native-type="submit">{{
               $t('joinpayMch.submitDataForReview') }}
             </van-button>
@@ -436,7 +439,7 @@ import sHeader from "../../components/SimpleHeader";
 import { showFailToast, showSuccessToast, showToast, showLoadingToast } from "vant";
 import { areaList } from "@vant/area-data";
 import {
-  getOneJoinPayMch, updateJoinPayMchCheck, altMchSign, updateConStat,
+  getOneJoinPayMch, updateJoinPayMchCheck, altMchSign,
   sentImage, updateApproveStatus, saveJoinPayMch
 } from '../../service/joinpayMch';
 import { newUploadPic, getHuifuMchCheck, newSaveHuifuMch, updateMerchant, openAccount, sendSms } from "@/service/huifuMch";
@@ -764,9 +767,6 @@ export default {
           addParams.emailValue = data.data.email;
           addParams.manageAddr = areaList.province_list[data.data.provId] + areaList.city_list[data.data.areaId] + areaList.county_list[data.data.districtId];
           huifuMchNO.value = data.data.huifuId;
-          if (huifuMchNO.value != null && conStat.value != "5") {
-            changeConStat();
-          }
           addParams.validityType = data.data.certValidityType;
           addParams.beginDate = dateUtil.formatDate(data.data.certBeginDate);
           addParams.endDate = dateUtil.formatDate(data.data.certEndDate);
@@ -776,9 +776,8 @@ export default {
           huifuParams.cardProvId = data.data.cardProvId;
           huifuParams.cardAreaId = data.data.cardAreaId;
           huifuParams.detailAddr = data.data.detailAddr;
-          if (data.data.cardType === "1") {
-            addParams.bankAddress = areaList.province_list[data.data.cardProvId] + areaList.city_list[data.data.cardAreaId]
-          }
+          addParams.bankAddress = areaList.province_list[data.data.cardProvId] == areaList.city_list[data.data.cardAreaId] ? areaList.province_list[data.data.cardProvId] :
+            (areaList.province_list[data.data.cardProvId] + areaList.city_list[data.data.cardAreaId]);
           if (data.data.cardFrontPic != null && data.data.legalCertBackPic != null && data.data.legalCertFrontPic) {
             huifuPicUpStatus.value = 1;
           }
@@ -787,7 +786,8 @@ export default {
             addParams.altMerchantType = "12";
             addParams.regNameValue = data.data.regName;
             addParams.shortNameValue = data.data.shortName;
-            addParams.registeredAddress = areaList.province_list[data.data.regProvId] + areaList.city_list[data.data.regAreaId] + areaList.county_list[data.data.regDistrictId];
+            addParams.registeredAddress = areaList.province_list[data.data.regProvId] == areaList.city_list[data.data.regAreaId] ? (areaList.city_list[data.data.regAreaId] + areaList.county_list[data.data.regDistrictId]) :
+              (areaList.province_list[data.data.regProvId] + areaList.city_list[data.data.regAreaId] + areaList.county_list[data.data.regDistrictId]);
             huifuParams.regProvId = data.data.regProvId;
             huifuParams.regAreaId = data.data.regAreaId;
             huifuParams.regDistrictId = data.data.regDistrictId;
@@ -816,16 +816,6 @@ export default {
         }
       }
     }
-    // 更新汇付签约状态
-    const changeConStat = async () => {
-      const { data } = await updateConStat(huifuParams);
-      if (data.code === "00000") {
-        // showSuccessToast(t('joinpayMch.withdrawalSucceeded'));
-        if (data.data === "5") {
-          location.reload();
-        }
-      }
-    }
     // 更新图片审核情况
     const changeApproveStatus = async () => {
       const { data } = await updateApproveStatus({ id: joinPayMchID.value });
@@ -896,8 +886,8 @@ export default {
         addParams.licenseExpiry = addParams.endDateLicense;
       }
       huifuParams.regName = addParams.legalPerson;
-      huifuParams.name = addParams.busiContactName;
-      huifuParams.phone = addParams.busiContactMobileNo;
+      huifuParams.name = addParams.legalPerson;
+      huifuParams.phone = addParams.phoneNo;
       huifuParams.email = addParams.emailValue;
       huifuParams.cardName = addParams.bankAccountName;
       huifuParams.cardNo = addParams.bankAccountNo.replace(/\s/g, '');
@@ -915,6 +905,7 @@ export default {
         huifuParams.licenseBeginDate = addParams.beginDateLicense.replace(/-/g, "");
         huifuParams.licenseEndDate = addParams.endDateLicense.replace(/-/g, "");
         huifuParams.servicePhone = addParams.servicePhoneValue;
+        huifuParams.regDetail = addParams.registeredAddress;
         if (addParams.bankAccountType === '4') {
           huifuParams.cardType = '0';
           huifuParams.branchCode = addParams.bankChannelNo;
@@ -929,7 +920,7 @@ export default {
         const { data } = await saveJoinPayMch(addParams);
         if (data.code === "00000") {
           let huifuMch = null;
-          if (huifuMchNO.value === null) {
+          if (huifuMchNO.value == null) {
             huifuMch = await newSaveHuifuMch(huifuParams);
           } else {
             // huifuMch = await auditMerchantUpdate(huifuParams);
@@ -942,7 +933,7 @@ export default {
               location.reload();
             }, 1500);
           } else {
-            showFailToast(`${huifuMch.message}`);
+            showFailToast(`${huifuMch.data.message}`);
           }
         } else {
           showFailToast(`${t('joinpayMch.submitFailed')} ${data.message}`);
@@ -994,18 +985,25 @@ export default {
         const { data } = await sentImage(params);
         let response = null;
         if (data.code === "00000") {
-          response = await openAccount({ id: huifuMchID.value });
-          if (response.data.code === "00000") {
-            console.log("response", response);
-            loadingUp.close();
+          if (huifuMchNO.value == null) {
+            response = await openAccount({ id: huifuMchID.value });
+            if (response.data.code === "00000") {
+              console.log("response", response);
+              loadingUp.close();
+              showSuccessToast(t('joinpayMch.uploadSucceeded'));
+              setTimeout(() => {
+                location.reload();
+              }, 1500);
+            } else {
+              console.log("response", response);
+              loadingUp.close();
+              showFailToast(`${response.data.message}`);
+            }
+          } else {
             showSuccessToast(t('joinpayMch.uploadSucceeded'));
             setTimeout(() => {
               location.reload();
             }, 1500);
-          } else {
-            console.log("response", response);
-            loadingUp.close();
-            showFailToast(`${response.message}`);
           }
         } else { showFailToast(t('joinpayMch.submitFailed')); }
       } catch (error) {
@@ -1028,20 +1026,13 @@ export default {
         if (data.code === "00000") {
           console.log(huifuAuditStatus.value);
           let huifuMch = await openAccount({ id: huifuMchID.value });
-          // let huifuMch = null;
-          // if (huifuAuditStatus.value === '1') {
-          //   huifuMch = await auditAddMerchant({ id: huifuMchID.value, status: "1" });
-          // } else if (huifuAuditStatus.value === '4') {
-          //   huifuMch = await auditUpdateMerchant({ id: huifuMchID.value, status: "1" });
-          // }
-          // console.log(data1);
           if (huifuMch.data.code === "00000") {
             showSuccessToast(t('joinpayMch.signingSuccessfully'));
             setTimeout(() => {
               location.reload();
             }, 1500);
           } else {
-            showFailToast(`${huifuMch.message}`);
+            showFailToast(`${huifuMch.data.message}`);
           }
         } else {
           showFailToast(`${data.message}`);

+ 9 - 3
src/views/taskMessage/index.vue

@@ -9,7 +9,7 @@
           <div class="taskTitle">{{ $t('taskMessage.equipmentInitializationApproval') }}</div>
         </div>
       </div>
-      <div class="taskListRow flex-col" @click="pushPageList('/taskProportion')">
+      <div v-if="user.ifForeign != '1'" class="taskListRow flex-col" @click="pushPageList('/taskProportion')">
         <div class="taskIcon retailIcon"></div>
         <div class="taskRight">
           <div class="taskTitle">{{ $t('taskMessage.distributionApplicationApproval') }}</div>
@@ -29,12 +29,15 @@
 import { onMounted } from 'vue';
 import sHeader from "@/components/SimpleHeader";
 import { useRouter } from "vue-router";
-import { styleUrl } from "../../common/js/utils";
+import { getLoginUser, styleUrl } from "../../common/js/utils";
+
 
 export default {
   components: { sHeader },
   setup() {
     const router = useRouter();
+    const user = getLoginUser();
+
     // 初始化页面获取列表
     onMounted(async () => {
       styleUrl('taskMessage');
@@ -42,7 +45,10 @@ export default {
     const pushPageList = (url) => {
       router.push(url);
     }
-    return { pushPageList };
+    return {
+      pushPageList,
+      user
+    };
   }
 };
 </script>

+ 27 - 11
src/views/taskMessage/proportion/index.vue

@@ -33,22 +33,38 @@
               <div class="itemRow">
                 <span class="itemTitle">{{ $t('taskMessage.equipmentNo') }}:&nbsp;</span>{{ item.clientId }}
               </div>
+              <!-- 机主的 -->
+              <div class="itemRow">
+                <span class="itemTitle">{{ $t('taskMessage.owner') }}:&nbsp;</span>{{ $t('taskMessage.machineOwner')
+                }}<span class="itemTitle discount">{{ $t('taskMessage.proportion') }}:&nbsp;</span>{{ item.proportion }}%
+              </div>
+              <!-- 平台的 -->
+              <div class="itemRow">
+                <span class="itemTitle">{{ $t('taskMessage.platform') }}:&nbsp;</span>
+                {{ $t('taskMessage.platformAccount') }}
+                <span class="itemTitle discount">{{ $t('taskMessage.proportion') }}:&nbsp;</span>
+                {{ item.adminProportion }}%
+              </div>
+              <!-- 分账方的 -->
               <div class="itemRow" v-if="item.type >= 1">
-                <span class="itemTitle">{{ $t('taskMessage.partners') }}:&nbsp;</span>{{ item.agencyName
-                }}<span class="itemTitle discount">{{ $t('taskMessage.proportion') }}:&nbsp;</span>{{
-  item.agencyProportion }}%
+                <span class="itemTitle">{{ $t('taskMessage.partners') }}:&nbsp;</span>
+                {{ item.agencyName }}
+                <span class="itemTitle discount">{{ $t('taskMessage.proportion') }}:&nbsp;</span>
+                {{ item.agencyProportion }}%
               </div>
+              <!-- 分账方4个 -->
               <div class="itemRow" v-if="item.type >= 2">
-                <span class="itemTitle">{{ $t('taskMessage.partners') }}:&nbsp;</span>{{ item.merchantName
-                }}<span class="itemTitle discount">{{ $t('taskMessage.proportion') }}:&nbsp;</span>{{
-  item.merchantProportion
-}}%
+                <span class="itemTitle">{{ $t('taskMessage.partners') }}:&nbsp;</span>
+                {{ item.merchantName }}
+                <span class="itemTitle discount">{{ $t('taskMessage.proportion') }}:&nbsp;</span>
+                {{ item.merchantProportion }}%
               </div>
+              <!-- 分账方5个以上 -->
               <div class="itemRow" v-if="item.type >= 3">
-                <span class="itemTitle">{{ $t('taskMessage.partners') }}:&nbsp;</span>{{ item.personageName
-                }}<span class="itemTitle discount">{{ $t('taskMessage.proportion') }}:&nbsp;</span>{{
-  item.personageProportion
-}}%
+                <span class="itemTitle">{{ $t('taskMessage.partners') }}:&nbsp;</span>
+                {{ item.personageName }}
+                <span class="itemTitle discount">{{ $t('taskMessage.proportion') }}:&nbsp;</span>
+                {{ item.personageProportion }}%
               </div>
               <div class="itemRow">
                 <span class="itemTitle">{{ $t('taskMessage.applicationTime') }}:&nbsp;</span>{{

+ 28 - 28
src/views/user.vue

@@ -26,35 +26,37 @@
         <div class="userInfoBox">
           <!-- 地区 -->
           <div v-if="isInland && user.type != '0'">
-            <span class="userInfoLeft">{{ $t("user.region") }}: </span>
-            <div class="cust_vantBorder">
-              <div class="filedInpPad">
-                <van-field @click-input="fieldValueInpClk" readonly clearable v-model="fieldValue"
-                  :placeholder="$t('user.regionPlace')">
-                  <template #right-icon>
-                    <div class="l-flex-RC">
-                      <van-icon v-if="fieldValue" @click="
-                        fieldValue = '';
-                      accountDetail.areaId = '';
-                      " class="o-mr-6" name="clear" />
-                      <van-icon @click="fieldValueInpClk" name="arrow-down" />
-                    </div>
-                  </template>
-                </van-field>
+            <div v-if="!areaShow" class="userInfo l-flex-between">
+              <span class="userInfoLeft">{{ $t("user.region") }}: </span>
+              <div class="cust_vantBorder">
+                <div class="filedInpPad">
+                  <van-field @click-input="fieldValueInpClk" readonly clearable v-model="fieldValue"
+                    :placeholder="$t('user.regionPlace')">
+                    <template #right-icon>
+                      <div class="l-flex-RC">
+                        <van-icon v-if="fieldValue" @click="
+                          fieldValue = '';
+                        accountDetail.areaId = '';
+                        " class="o-mr-6" name="clear" />
+                        <van-icon @click="fieldValueInpClk" name="arrow-down" />
+                      </div>
+                    </template>
+                  </van-field>
+                </div>
               </div>
+              <van-icon name="edit" class="editIcon" @click="editClk(4)" />
+            </div>
+            <div v-else class="userInfo l-flex-between">
+              <span class="userInfoLeft">{{ $t("user.region") }}: </span>
+              <span>{{ fieldValue }}</span>
+              <van-icon name="edit" class="editIcon" @click="editClk(4)" />
             </div>
-            <van-icon name="edit" class="editIcon" @click="editClk(4)" />
-          </div>
-          <div v-else class="userInfo l-flex-between">
-            <span class="userInfoLeft">{{ $t("user.region") }}: </span>
-            <span>{{ fieldValue }}</span>
-            <van-icon name="edit" class="editIcon" @click="editClk(4)" />
           </div>
           <!-- 手机号 -->
           <div v-if="user.type != '0'">
             <div v-if="!phoneNumberShow" class="userInfo l-flex-between">
               <span class="userInfoLeft">{{ $t("user.phoneNumber") }}: </span>
-              <div class="cust_vantBorder">
+              <div>
                 <van-field class="relationClass" v-model="cofficentForm.phone" :placeholder="$t('user.phoneNumberPlace')">
                   <template #button>
                     <van-button type="primary" @click="mailboxChg(cofficentForm.phone, 3)">{{ $t("user.confirmLog") }}
@@ -74,7 +76,7 @@
           <div v-if="user.type != '0'">
             <div v-if="!mailboxShow" class="userInfo l-flex-between">
               <span class="userInfoLeft">{{ $t("user.mailbox") }}: </span>
-              <div class="cust_vantBorder">
+              <div>
                 <van-field class="relationClass" v-model="cofficentForm.mailBox" :placeholder="$t('user.mailboxPlace')">
                   <template #button>
                     <van-button type="primary" @click="mailboxChg(cofficentForm.mailBox, 2)">{{ $t("user.confirmLog") }}
@@ -94,7 +96,7 @@
           <div v-if="isInland && user.type == '2'">
             <div v-if="!relationType" class="userInfo l-flex-between">
               <span class="userInfoLeft">{{ $t("user.associateParent") }}: </span>
-              <div class="cust_vantBorder">
+              <div>
                 <van-field class="relationClass" v-model="cofficentForm.associateParent"
                   :placeholder="$t('user.associateParentPlace')">
                   <template #button>
@@ -116,7 +118,7 @@
           <!-- 自定义货币符号 -->
           <div v-if="!symbolShow" class="userInfo l-flex-between">
             <span class="userInfoLeft">{{ $t("user.currencySymbol") }}: </span>
-            <div class="cust_vantBorder">
+            <div>
               <van-field class="relationClass" v-model="cofficentForm.currencySymbol"
                 :placeholder="$t('user.currencySymbolPlace')">
                 <template #button>
@@ -222,7 +224,6 @@
         </div>
       </div>
     </div>
-    <nav-bar></nav-bar>
     <!-- 退出登录弹窗 -->
     <kDialog :dialogTitle="$t('user.logOutTips')" :cancelBtnTxt="$t('user.cancelLog')"
       :confirmBtnTxt="$t('user.confirmLog')" ref="kDialogRef" :dialogContent="$t('user.logOutContent')"
@@ -244,7 +245,6 @@ import { updateAdmin } from "@/service/merchantManage";
 import kDialog from "@/components/commom/kDialog/index.vue";
 import { onMounted, reactive, ref } from "vue";
 import sHeader from "@/components/SimpleHeader";
-import navBar from "@/components/NavBar";
 import {
   getLoginUser,
   $M_EmailAvailable,
@@ -257,7 +257,7 @@ import { useI18n } from "vue-i18n";
 import { styleUrl } from "../common/js/utils";
 
 export default {
-  components: { sHeader, navBar, kDialog, kCascader },
+  components: { sHeader, kDialog, kCascader },
   setup() {
     // 引入语言
     const { t } = useI18n();