|
|
@@ -0,0 +1,1229 @@
|
|
|
+<template>
|
|
|
+ <view class="nvue-page-root">
|
|
|
+ <view class="head">
|
|
|
+ <view class="header-wrap">
|
|
|
+ <view class="index-header">
|
|
|
+ <uni-icons class="fanhui" custom-prefix="iconfont" type="icon-fanhui"
|
|
|
+ @click="leftClick"></uni-icons>
|
|
|
+ <view class="input-wrap">
|
|
|
+ <text class="iconfont">组盘</text>
|
|
|
+ </view>
|
|
|
+ <view class="map-wrap" @click="rightClick">
|
|
|
+ <uni-icons class="lanya" custom-prefix="iconfont" type="icon-lanya"></uni-icons>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="blank"></view>
|
|
|
+ </view>
|
|
|
+ <view class="uni-common-mt" style="padding: 5px;">
|
|
|
+ <view class="uni-input-wrapper" style="margin: 5px auto;">
|
|
|
+ <input class="uni-input" auto-focus="true" :focus="firstFocus" placeholder="请扫描托盘码或产品码"
|
|
|
+ v-model="viewText" @input="hideKeyboard" style="font-weight: bold; " />
|
|
|
+ </view>
|
|
|
+ <view class="uni-form-item uni-column">
|
|
|
+ <view class="uni-input-wrapper" style="margin: 5px auto;">
|
|
|
+ <text class="uni-form-item__title" style="width: 25%;">托盘码</text>
|
|
|
+ <input class="uni-input" :value="container_code" disabled="true" />
|
|
|
+ </view>
|
|
|
+ <view class="uni-padding-wrap uni-common-mt">
|
|
|
+ <button type="primary" @click="SelectTemplate()">加载模版</button>
|
|
|
+ </view>
|
|
|
+ <view style="min-height:255px;overflow-y:auto;max-height:255px">
|
|
|
+ <view class="cart-list">
|
|
|
+ <!-- 滑动操作分区 -->
|
|
|
+ <uni-swipe-action>
|
|
|
+ <!-- 滑动操作项 -->
|
|
|
+ <uni-swipe-action-item v-for="(item,index) in tableData" :key="index" class="cart-swipe">
|
|
|
+ <!-- 商品信息 -->
|
|
|
+ <view class="goods" style="border:1px solid #ccc">
|
|
|
+ <view class="meta" style="padding-bottom:15px;" @click="Delete(item)">
|
|
|
+ <view class="name">
|
|
|
+ {{item.product_name}}-{{item.printed}}-{{item.production_line}}
|
|
|
+ </view>
|
|
|
+ <view class="status_view">{{item.status_view}}</view>
|
|
|
+ </view>
|
|
|
+ <!-- 商品数量 -->
|
|
|
+ <view class="weightGroup" @click="Update(item)">
|
|
|
+ <text class="text_1">重量</text>
|
|
|
+ <text class="inputs">{{item.weight}}</text>
|
|
|
+ <text class="text">Kg</text>
|
|
|
+ </view>
|
|
|
+ <!-- 商品数量 -->
|
|
|
+ <view class="numGroup" @click="Update(item)">
|
|
|
+ <text class="text_1">数量</text>
|
|
|
+ <text class="inputs">{{item.num}}</text>
|
|
|
+ <text class="text">个</text>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </uni-swipe-action-item>
|
|
|
+ </uni-swipe-action>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="uni-input-wrapper button-sp-area">
|
|
|
+ <button type="primary" plain="true" @click="groupDisk()" :disabled="BtnDisabled">组盘</button>
|
|
|
+ <button type="primary" plain="true" @click="in_stock()">入库单</button>
|
|
|
+ <button type="primary" plain="true" @click="Template()">模版</button>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 提示窗示例 -->
|
|
|
+ <uni-popup ref="deleteDialog" type="dialog">
|
|
|
+ <uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" :content="del_tips"
|
|
|
+ @confirm="dialogConfirm" @close="dialogClose"></uni-popup-dialog>
|
|
|
+ </uni-popup>
|
|
|
+
|
|
|
+ <!-- 提示窗示例 -->
|
|
|
+ <uni-popup ref="groupDialog" type="dialog">
|
|
|
+ <uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="提示" content="确定组盘?"
|
|
|
+ @confirm="dialogGroup" @close="dialogClose"></uni-popup-dialog>
|
|
|
+ </uni-popup>
|
|
|
+
|
|
|
+
|
|
|
+ <!-- 引入自定义模态框 -->
|
|
|
+ <custom-modal :visible="updateModalVisible">
|
|
|
+ <!-- 模态框的内容 -->
|
|
|
+ <view>
|
|
|
+ <text>提示</text>
|
|
|
+ <view class="uni-input-wrapper" style="margin: 5px auto;">
|
|
|
+ <text class="uni-form-item__title" style="width: 30%;">货物名称</text>
|
|
|
+ <input class="uni-input" :value="product_name" disabled="true" />
|
|
|
+ </view>
|
|
|
+ <view class="uni-input-wrapper" style="margin: 5px auto;">
|
|
|
+ <text class="uni-form-item__title" style="width: 30%;">数量</text>
|
|
|
+ <input type="number" class="uni-input" :value="product_num" @input="numChange" />
|
|
|
+ </view>
|
|
|
+ <view class="uni-input-wrapper" style="margin: 5px auto;">
|
|
|
+ <text class="uni-form-item__title" style="width: 30%;">重量</text>
|
|
|
+ <input type="number" class="uni-input" :value="product_weight" @input="weightChange" />
|
|
|
+ </view>
|
|
|
+ <view class="uni-input-wrapper" style="margin: 5px auto;">
|
|
|
+ <text class="uni-form-item__title" style="width: 30%;">包装印刷</text>
|
|
|
+ <select-lay :zindex="4" style="width: 70%;" :value="printed" name="printed" placeholder="请选择包装印刷"
|
|
|
+ :options="printedList" @selectitem="printedChange">
|
|
|
+ </select-lay>
|
|
|
+ </view>
|
|
|
+ <view class="uni-input-wrapper" style="margin: 5px auto;">
|
|
|
+ <text class="uni-form-item__title" style="width: 30%;">生产线</text>
|
|
|
+ <select-lay :zindex="3" style="width: 70%;" :value="production_line" name="production_line"
|
|
|
+ placeholder="请选择生产线" :options="production_lineList" @selectitem="production_lineChange">
|
|
|
+ </select-lay>
|
|
|
+ </view>
|
|
|
+ <view>
|
|
|
+ <text style="width: 30%;float: left;height: 35px;line-height: 35px;">生产日期</text>
|
|
|
+ <picker style="width: 70%;float: right;" mode="date" :value="plandate" :start="startDate"
|
|
|
+ :end="endDate" @change="plandateChange">
|
|
|
+ <view class="uni-input">{{plandate}}</view>
|
|
|
+ </picker>
|
|
|
+ </view>
|
|
|
+ <br><br>
|
|
|
+ <view>
|
|
|
+ <button class="mini-btn" size="mini" @click="closeUpdateModal"
|
|
|
+ style="width: 50%;float: left;">关闭</button>
|
|
|
+ <button class="mini-btn" type="primary" size="mini" @click="UpdateWeight"
|
|
|
+ style="width: 50%;">修改</button>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </custom-modal>
|
|
|
+ </view>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+ import CustomModal from "@/components/CustomModal/CustomModal.vue";
|
|
|
+ let _this = null;
|
|
|
+ import {
|
|
|
+ mapGetters,
|
|
|
+ mapActions
|
|
|
+ } from 'vuex';
|
|
|
+ import {
|
|
|
+ GET_INFODATA,
|
|
|
+ GET_CONNECTBLEDATA
|
|
|
+ } from "@/store/gettersType.js";
|
|
|
+ import {
|
|
|
+ SET_CONNECTBLEDATA
|
|
|
+ } from '@/store/actionsType.js';
|
|
|
+ // #ifdef APP-PLUS
|
|
|
+ const modal = uni.requireNativePlugin('modal');
|
|
|
+ const printModule = uni.requireNativePlugin('PrintModuleCPCL');
|
|
|
+ // #endif
|
|
|
+ let print;
|
|
|
+ var reqRootUrl = plus.storage.getItem("reqRootUrl");
|
|
|
+ let rData = [];
|
|
|
+ const SpeechTTS = uni.requireNativePlugin('MT-TTS-Speech');
|
|
|
+ export default {
|
|
|
+ components: {
|
|
|
+ CustomModal
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ const currentDate = this.getDate({
|
|
|
+ format: true
|
|
|
+ });
|
|
|
+ return {
|
|
|
+ printedList: [],
|
|
|
+ printed: "无印刷",
|
|
|
+ production_lineList: [],
|
|
|
+ production_line: "一期",
|
|
|
+ container_code: "",
|
|
|
+ product_code: "",
|
|
|
+ product_name: "",
|
|
|
+ product_weight: "",
|
|
|
+ product_num: "",
|
|
|
+ del_tips: "",
|
|
|
+ sn: "",
|
|
|
+ updateModalVisible: false,
|
|
|
+ item: {
|
|
|
+ name: "HM",
|
|
|
+ mac: "60:6E:41:C3:C8:8C",
|
|
|
+ },
|
|
|
+ result: -1,
|
|
|
+ firstFocus: false,
|
|
|
+ viewText: "",
|
|
|
+ tableData: [],
|
|
|
+ plandate: currentDate,
|
|
|
+ BtnDisabled: false,
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapGetters([GET_INFODATA, GET_CONNECTBLEDATA]),
|
|
|
+ startDate() {
|
|
|
+ return this.getDate('start');
|
|
|
+ },
|
|
|
+ endDate() {
|
|
|
+ return this.getDate('end');
|
|
|
+ },
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ onUnload() {
|
|
|
+ SpeechTTS.destroy();
|
|
|
+ },
|
|
|
+ speak_init() {
|
|
|
+ // console.log('>> TTS:init...')
|
|
|
+ SpeechTTS.init((callback) => {
|
|
|
+ // SpeechTTS.setEngine("com.iflytek.speechcloud"); // 设置引擎
|
|
|
+ SpeechTTS.setEngine("com.google.android.tts"); // 设置引擎
|
|
|
+ // console.log('>> tts: init success');
|
|
|
+ SpeechTTS.setPitch(50); // 设置语调 setPitch(num) 0-100, 默认 50
|
|
|
+ SpeechTTS.setSpeed(65); // 设置语速 setSpeed(num) 0-100, 默认 50
|
|
|
+ });
|
|
|
+ SpeechTTS.onDone((res) => {
|
|
|
+ // console.log(">> tts: play end " + res)
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ leftClick: function() {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.navigateBack();
|
|
|
+ // uni.redirectTo({
|
|
|
+ // url: '/pages/sample/main',
|
|
|
+ // })
|
|
|
+ }, 30);
|
|
|
+ // this.$emit('change', this.value)
|
|
|
+ },
|
|
|
+
|
|
|
+ rightClick: function() {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/sample/richAlert',
|
|
|
+ })
|
|
|
+ }, 30);
|
|
|
+ // this.$emit("rightClick")
|
|
|
+ },
|
|
|
+
|
|
|
+ onLoad() {
|
|
|
+ _this = this;
|
|
|
+ _this.firstFocus = true;
|
|
|
+ _this.getSn()
|
|
|
+ _this.PrintedGet();
|
|
|
+ _this.ProductionLineGet();
|
|
|
+ // 打印相关
|
|
|
+ /*
|
|
|
+ setTimeout(() => {
|
|
|
+ this.$init_bluetooth();
|
|
|
+ }, 500);
|
|
|
+ if (this.result !== 0) {
|
|
|
+ this.closeBT()
|
|
|
+ setTimeout(() => {
|
|
|
+ let item = {
|
|
|
+ name: "HM-A300-E093",
|
|
|
+ mac: "60:6E:41:34:E0:93",
|
|
|
+ };
|
|
|
+ this.confirm_bluetooth(item)
|
|
|
+ }, 1500);
|
|
|
+ } else {
|
|
|
+ // console.log("scssssss")
|
|
|
+ }
|
|
|
+ */
|
|
|
+ },
|
|
|
+
|
|
|
+ onShow() {
|
|
|
+ uni.hideKeyboard();
|
|
|
+ setTimeout(() => {
|
|
|
+ _this.firstFocus = true;
|
|
|
+ this.getList();
|
|
|
+ this.speak_init();
|
|
|
+ }, 500);
|
|
|
+ },
|
|
|
+
|
|
|
+ SelectTemplate() {
|
|
|
+ let containerCode = uni.getStorageSync("container_code")
|
|
|
+ console.log("_this.container_code ", containerCode)
|
|
|
+ let receiptNum = uni.getStorageSync("receipt_num")
|
|
|
+ console.log("aa ",_this.isEmpty(_this.tableData))
|
|
|
+ if (!_this.isEmpty(_this.tableData)) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (_this.isEmpty(containerCode)) {
|
|
|
+ _this.alertInfo("请先扫码托盘码!")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ setTimeout(() => {
|
|
|
+ _this.firstFocus = false;
|
|
|
+ let product_code = uni.getStorageSync("tmp_product_code");
|
|
|
+ let weight = uni.getStorageSync("tmp_weight");
|
|
|
+ let num = uni.getStorageSync("tmp_num");
|
|
|
+ let printed = uni.getStorageSync("tmp_printed");
|
|
|
+ let production_line = uni.getStorageSync("tmp_production_line");
|
|
|
+ let plandate = uni.getStorageSync("tmp_plandate");
|
|
|
+
|
|
|
+
|
|
|
+ uni.request({
|
|
|
+ url: reqRootUrl + '/wms/api',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ data: JSON.stringify({
|
|
|
+ "method": "GroupDiskAdd",
|
|
|
+ "param": {
|
|
|
+ "product_code": product_code,
|
|
|
+ "num": parseFloat(num),
|
|
|
+ "weight": parseFloat(weight),
|
|
|
+ "plandate": new Date(plandate).getTime(),
|
|
|
+ "receipt_num": receiptNum,
|
|
|
+ "container_code": containerCode,
|
|
|
+ "printed": printed,
|
|
|
+ "production_line": production_line,
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ success: (ret) => {
|
|
|
+ if (ret.data.ret === "ok") {
|
|
|
+ setTimeout(() => {
|
|
|
+ _this.alertInfo("添加成功!")
|
|
|
+ _this.$nextTick(() => {
|
|
|
+ _this.firstFocus = true;
|
|
|
+ _this.getList();
|
|
|
+ })
|
|
|
+ }, 30);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }, 30);
|
|
|
+ },
|
|
|
+
|
|
|
+ printedChange(index, item) {
|
|
|
+ if (index >= 0) {
|
|
|
+ this.printed = item.value;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ production_lineChange(index, item) {
|
|
|
+ if (index >= 0) {
|
|
|
+ this.production_line = item.value;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ hideKeyboard: function(event) {
|
|
|
+ uni.hideKeyboard();
|
|
|
+ let Value = event.detail.value;
|
|
|
+ Value.trim();
|
|
|
+ _this.firstFocus = false;
|
|
|
+ if (Value !== "" && Value !== null && Value !== undefined) {
|
|
|
+ uni.request({
|
|
|
+ url: reqRootUrl + '/wms/api',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ data: JSON.stringify({
|
|
|
+ "method": "CodeGet",
|
|
|
+ "param": {
|
|
|
+ "code": Value,
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ success: (ret) => {
|
|
|
+ let rows = ret.data.data;
|
|
|
+ if (_this.isEmpty(rows)) {
|
|
|
+ _this.alertInfo("托盘码错误,请重新扫描!")
|
|
|
+ _this.getSn();
|
|
|
+ _this.rData = [];
|
|
|
+ _this.tableData = [];
|
|
|
+ _this.$nextTick(() => {
|
|
|
+ _this.firstFocus = true;
|
|
|
+ _this.viewText = "";
|
|
|
+ _this.container_code = "";
|
|
|
+ uni.setStorageSync("container_code", "")
|
|
|
+ })
|
|
|
+ _this.$forceUpdate()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 扫描到的码可能是入库单号(物料码)、产品码、托盘码
|
|
|
+ // 用扫描到的码查询 组盘表、产品管理表、托盘管理表
|
|
|
+ // 优先显示查询到的组盘表的数据
|
|
|
+ _this.alertInfo("扫码成功!")
|
|
|
+ _this.BtnDisabled = false
|
|
|
+ if (!_this.isEmpty(rows["group_disk"])) {
|
|
|
+ console.log("1", Value)
|
|
|
+ let disk = [];
|
|
|
+ for (var i = 0; i < rows["group_disk"].length; i++) {
|
|
|
+ if (rows["group_disk"][i]["status"] === "status_wait") {
|
|
|
+ rows["group_disk"][i]["status_view"] = "待组盘"
|
|
|
+ }
|
|
|
+ if (rows["group_disk"][i]["status"] === "status_yes") {
|
|
|
+ _this.BtnDisabled = true
|
|
|
+ rows["group_disk"][i]["status_view"] = "已组盘"
|
|
|
+ }
|
|
|
+ disk.push(rows["group_disk"][i])
|
|
|
+ }
|
|
|
+ rData = disk;
|
|
|
+ if (rData.length > 0) {
|
|
|
+ _this.product_name = rData[0]["product_name"];
|
|
|
+ uni.setStorageSync("product_types", rData[0]["types"])
|
|
|
+ _this.product_code = rData[0]["product_code"];
|
|
|
+ _this.container_code = rData[0]["container_code"];
|
|
|
+ uni.setStorageSync("container_code", rData[0]["container_code"])
|
|
|
+ uni.setStorageSync("receipt_num", rData[0]["receipt_num"])
|
|
|
+
|
|
|
+ }
|
|
|
+ this.tableData = disk;
|
|
|
+ _this.$nextTick(() => {
|
|
|
+ _this.firstFocus = true;
|
|
|
+ _this.viewText = "";
|
|
|
+ })
|
|
|
+ }
|
|
|
+ let containerCode = uni.getStorageSync("container_code")
|
|
|
+
|
|
|
+ if (!_this.isEmpty(rows["container_code"])) {
|
|
|
+ _this.container_code = Value;
|
|
|
+ uni.removeStorageSync('container_code');
|
|
|
+ uni.setStorageSync("container_code", Value)
|
|
|
+ console.log("2", Value)
|
|
|
+ // _this.getSn();
|
|
|
+ // _this.getList();
|
|
|
+ if (_this.tableData.length > 0) {
|
|
|
+ for (let i = 0; i < _this.tableData.length; i++) {
|
|
|
+ if (_this.tableData[i]["container_code"] === "") {
|
|
|
+ uni.request({
|
|
|
+ url: reqRootUrl + '/wms/api',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ data: JSON.stringify({
|
|
|
+ "method": "GroupDiskUpdate",
|
|
|
+ "param": {
|
|
|
+ "sn": _this.tableData[i]["sn"],
|
|
|
+ "container_code": Value,
|
|
|
+ "product_code": _this.tableData[i][
|
|
|
+ "product_code"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ success: (ret) => {
|
|
|
+ _this.alertInfo("更新成功!")
|
|
|
+ _this.getList()
|
|
|
+ //处理成功逻辑
|
|
|
+ },
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ if (_this.tableData[i]["container_code"] !== Value) {
|
|
|
+ _this.getSn();
|
|
|
+ _this.getList();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ _this.getSn();
|
|
|
+ _this.getList();
|
|
|
+ }
|
|
|
+ _this.$nextTick(() => {
|
|
|
+ _this.firstFocus = true;
|
|
|
+ _this.viewText = "";
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if (!_this.isEmpty(rows["product"])) {
|
|
|
+ _this.addModalVisible = true;
|
|
|
+ _this.product_code = rows["product"]["code"];
|
|
|
+ _this.product_name = rows["product"]["name"];
|
|
|
+ uni.setStorageSync("product_types", rData[0]["types"])
|
|
|
+ _this.product_num = parseFloat(rows["product"]["ragnum"]);
|
|
|
+ _this.product_weight = parseFloat(rows["product"]["weight"]) * parseFloat(
|
|
|
+ rows["product"]["ragnum"]);
|
|
|
+ _this.viewText = "";
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ // console.log('request fail', err);
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ // console.log('complete');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ closeUpdateModal() {
|
|
|
+ // 关闭模态框
|
|
|
+ this.updateModalVisible = false;
|
|
|
+ },
|
|
|
+ plandateChange: function(e) {
|
|
|
+ this.plandate = e.target.value
|
|
|
+ },
|
|
|
+ weightChange: function(e) {
|
|
|
+ this.product_weight = e.target.value
|
|
|
+ },
|
|
|
+
|
|
|
+ numChange: function(e) {
|
|
|
+ this.product_num = e.target.value
|
|
|
+ },
|
|
|
+ getDate(type) {
|
|
|
+ const date = new Date();
|
|
|
+ let year = date.getFullYear();
|
|
|
+ let month = date.getMonth() + 1;
|
|
|
+ let day = date.getDate();
|
|
|
+
|
|
|
+ if (type === 'start') {
|
|
|
+ year = year - 60;
|
|
|
+ } else if (type === 'end') {
|
|
|
+ year = year + 2;
|
|
|
+ }
|
|
|
+ month = month > 9 ? month : '0' + month;
|
|
|
+ day = day > 9 ? day : '0' + day;
|
|
|
+ return `${year}-${month}-${day}`;
|
|
|
+ },
|
|
|
+
|
|
|
+ Delete(item) {
|
|
|
+ this.sn = item["sn"]
|
|
|
+ this.del_tips = "确定删除货物" + item["product_name"] + "?";
|
|
|
+ this.$refs.deleteDialog.open()
|
|
|
+ },
|
|
|
+
|
|
|
+ dialogConfirm() {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.hideLoading()
|
|
|
+ if (parseFloat() <= 0) {
|
|
|
+ modal.toast({
|
|
|
+ message: msg,
|
|
|
+ duration: 6
|
|
|
+ });
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ uni.request({
|
|
|
+ url: reqRootUrl + '/wms/api',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ data: JSON.stringify({
|
|
|
+ "method": "GroupDiskDelete",
|
|
|
+ "param": {
|
|
|
+ [_this.sn]: {}
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ success: (ret) => {
|
|
|
+ _this.alertInfo("删除成功!")
|
|
|
+ _this.getList()
|
|
|
+ //处理成功逻辑
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ // console.log('request fail', err);
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ // console.log('complete');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 关闭窗口后,恢复默认内容
|
|
|
+ this.$refs.deleteDialog.close()
|
|
|
+ }, 30)
|
|
|
+ },
|
|
|
+
|
|
|
+ dialogClose() {
|
|
|
+ _this.getList();
|
|
|
+ },
|
|
|
+
|
|
|
+ Update(item) {
|
|
|
+ // console.log("item", item)
|
|
|
+ _this.sn = item["sn"]
|
|
|
+ _this.product_weight = item["weight"]
|
|
|
+ _this.product_num = item["num"]
|
|
|
+ _this.product_code = item["product_code"]
|
|
|
+ _this.printed = item["printed"]
|
|
|
+ _this.production_line = item["production_line"]
|
|
|
+ _this.plandate = _this.formattedDate(item["plandate"])
|
|
|
+ _this.updateModalVisible = true;
|
|
|
+ },
|
|
|
+ UpdateWeight() {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.request({
|
|
|
+ url: reqRootUrl + '/wms/api',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ data: JSON.stringify({
|
|
|
+ "method": "GroupDiskUpdate",
|
|
|
+ "param": {
|
|
|
+ "sn": _this.sn,
|
|
|
+ "weight": parseFloat(_this.product_weight),
|
|
|
+ "product_code": _this.product_code,
|
|
|
+ "printed": _this.printed,
|
|
|
+ "production_line": _this.production_line,
|
|
|
+ "num": parseFloat(_this.product_num),
|
|
|
+ "plandate": new Date(_this.plandate).getTime(),
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ success: (ret) => {
|
|
|
+ _this.alertInfo("更新成功!")
|
|
|
+ _this.getList()
|
|
|
+ //处理成功逻辑
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ // console.log('request fail', err);
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ // console.log('complete');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ _this.updateModalVisible = false;
|
|
|
+ // 关闭窗口后,恢复默认内容
|
|
|
+ }, 30);
|
|
|
+ },
|
|
|
+
|
|
|
+ getList() {
|
|
|
+ let receipt_num = uni.getStorageSync("receipt_num")
|
|
|
+ console.log("receipt_num ", receipt_num)
|
|
|
+ _this.$forceUpdate()
|
|
|
+ rData = [];
|
|
|
+ _this.tableData = [];
|
|
|
+ uni.request({
|
|
|
+ url: reqRootUrl + '/wms/api',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ data: JSON.stringify({
|
|
|
+ "method": "GroupDiskGetByCode",
|
|
|
+ "param": {
|
|
|
+ "code": receipt_num,
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ success: (ret) => {
|
|
|
+ //处理成功逻辑
|
|
|
+ let rows = ret.data.data;
|
|
|
+ if (rows != null) {
|
|
|
+ rData = rows;
|
|
|
+ if (rData[0]["receipt_num"] !== receipt_num) {
|
|
|
+ rData = [];
|
|
|
+ _this.tableData = [];
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _this.product_name = rData[0]["product_name"];
|
|
|
+ _this.product_code = rData[0]["product_code"];
|
|
|
+ for (var i = 0; i < rows.length; i++) {
|
|
|
+ if (rows[i]["status"] === "status_success") {
|
|
|
+ rows[i]["status_view"] = "已组盘"
|
|
|
+ } else {
|
|
|
+ rows[i]["status_view"] = "待组盘"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _this.tableData = rows;
|
|
|
+ } else {
|
|
|
+ rData = [];
|
|
|
+ _this.tableData = [];
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ // console.log('request fail', err);
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ // console.log('complete');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ in_stock: function(code) {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/sample/in_stock',
|
|
|
+ })
|
|
|
+ }, 500);
|
|
|
+ },
|
|
|
+
|
|
|
+ Template: function() {
|
|
|
+ _this.firstFocus = false;
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/sample/template',
|
|
|
+ })
|
|
|
+ }, 30);
|
|
|
+ },
|
|
|
+ groupDisk: function() {
|
|
|
+ _this.firstFocus = false;
|
|
|
+ // console.log("_this.BtnDisabled ", _this.BtnDisabled)
|
|
|
+ if (_this.BtnDisabled) {
|
|
|
+ _this.alertInfo("组盘失败,已组盘货物不能再次组盘")
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (_this.isEmpty(rData)) {
|
|
|
+ _this.alertInfo("组盘失败,货物不能为空")
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let str = _this.product_name;
|
|
|
+ let containerCode = uni.getStorageSync("container_code")
|
|
|
+ let product_types = uni.getStorageSync("product_types")
|
|
|
+ if (_this.isEmpty(containerCode)) {
|
|
|
+ // 产品类别是铁桶的 不允许托盘码为空
|
|
|
+ // console.log("_this.product_name ",product_types)
|
|
|
+ if (product_types === "不合托") {
|
|
|
+ _this.alertInfo("组盘失败,托盘码不能为空")
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ setTimeout(() => {
|
|
|
+ this.$refs.groupDialog.open()
|
|
|
+ }, 30)
|
|
|
+ },
|
|
|
+
|
|
|
+ dialogGroup() {
|
|
|
+ let sns = [];
|
|
|
+ let productSn = rData[0]["product_sn"];
|
|
|
+ if (rData.length > 1) {
|
|
|
+ _this.alertInfo("组盘失败!只能添加一种货物")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for (var i = 0; i < rData.length; i++) {
|
|
|
+ if (rData[i]["status"] !== "status_wait") {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ sns.push(rData[i].sn)
|
|
|
+ }
|
|
|
+ let str = _this.product_name;
|
|
|
+
|
|
|
+ let product_types = uni.getStorageSync("product_types")
|
|
|
+ if (product_types === "合托") {
|
|
|
+ _this.container_code = ""
|
|
|
+ uni.setStorageSync("container_code", "")
|
|
|
+ }
|
|
|
+
|
|
|
+ let receiptNum = uni.getStorageSync("receipt_num")
|
|
|
+ let containerCode = uni.getStorageSync("container_code")
|
|
|
+ uni.request({
|
|
|
+ url: reqRootUrl + '/wms/api',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ data: JSON.stringify({
|
|
|
+ "method": "ReceiptAdd",
|
|
|
+ "param": {
|
|
|
+ "receipt_num": receiptNum,
|
|
|
+ "group_disk_sn_list": sns,
|
|
|
+ "container_code": containerCode,
|
|
|
+ "types": "normal",
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ success: (ret) => {
|
|
|
+ this.$refs.groupDialog.close()
|
|
|
+ if (ret.data.ret === "ok") {
|
|
|
+ _this.alertInfo("组盘成功")
|
|
|
+ _this.$nextTick(() => {
|
|
|
+ _this.getSn()
|
|
|
+ _this.firstFocus = false;
|
|
|
+ _this.firstFocus = true;
|
|
|
+ _this.viewText = "";
|
|
|
+ _this.container_code = ""
|
|
|
+ uni.setStorageSync("container_code", "")
|
|
|
+ _this.getList()
|
|
|
+ })
|
|
|
+ _this.$forceUpdate()
|
|
|
+ if (product_types === "合托") {
|
|
|
+ // console.log("handlePrint ", receiptNum)
|
|
|
+ this.handlePrint(ret.data.data.receiptNum)
|
|
|
+ }
|
|
|
+ uni.setStorageSync("product_types", "")
|
|
|
+ uni.setStorageSync("container_code", "")
|
|
|
+ } else {
|
|
|
+ _this.alertInfo("组盘失败!" + ret.data.msg)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ // console.log('request fail', err);
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ // console.log('complete');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ ProductionLineGet() {
|
|
|
+ uni.request({
|
|
|
+ url: reqRootUrl + '/wms/api',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ data: JSON.stringify({
|
|
|
+ "method": "ProductionLineGet",
|
|
|
+ "param": {
|
|
|
+ "disable": false,
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ success: (ret) => {
|
|
|
+ if (ret.data.ret === "ok") {
|
|
|
+ let rows = ret.data.data;
|
|
|
+ for (var i = 0; i < rows.length; i++) {
|
|
|
+ this.production_lineList.push({
|
|
|
+ label: rows[i].name,
|
|
|
+ value: rows[i].name
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ // console.log('request fail', err);
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ // console.log('complete');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ PrintedGet() {
|
|
|
+ uni.request({
|
|
|
+ url: reqRootUrl + '/wms/api',
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ data: JSON.stringify({
|
|
|
+ "method": "PrintedGet",
|
|
|
+ "param": {
|
|
|
+ "disable": false,
|
|
|
+ }
|
|
|
+ }),
|
|
|
+ success: (ret) => {
|
|
|
+ if (ret.data.ret === "ok") {
|
|
|
+ let rows = ret.data.data;
|
|
|
+ for (var i = 0; i < rows.length; i++) {
|
|
|
+ this.printedList.push({
|
|
|
+ label: rows[i].name,
|
|
|
+ value: rows[i].name
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ // console.log('request fail', err);
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ // console.log('complete');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ isEmpty: function(obj) {
|
|
|
+ return typeof obj === undefined || obj == null || obj === "" || obj === "000000000000000000000000" ||
|
|
|
+ obj.length === 0;
|
|
|
+ },
|
|
|
+ alertInfo(str) {
|
|
|
+ SpeechTTS.speak({
|
|
|
+ text: str,
|
|
|
+ });
|
|
|
+ modal.toast({
|
|
|
+ message: str,
|
|
|
+ duration: 6,
|
|
|
+ });
|
|
|
+ },
|
|
|
+ onNavigationBarButtonTap: function(e) {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: '/pages/sample/richAlert',
|
|
|
+ })
|
|
|
+ }, 500);
|
|
|
+ },
|
|
|
+ // 打印机相关
|
|
|
+ ...mapActions([SET_CONNECTBLEDATA]),
|
|
|
+ // 连接打印机
|
|
|
+ confirm_bluetooth(item) {
|
|
|
+ // let {
|
|
|
+ // name,
|
|
|
+ // mac
|
|
|
+ // } = item;
|
|
|
+ uni.showLoading({
|
|
|
+ title: "连接中...",
|
|
|
+ mask: true
|
|
|
+ })
|
|
|
+ let mac = item.mac;
|
|
|
+ try {
|
|
|
+ printModule.connectionBT({
|
|
|
+ 'address': mac
|
|
|
+ }, result => {
|
|
|
+ // console.log("result ",result)
|
|
|
+ const msg = JSON.stringify(result);
|
|
|
+ this.result = JSON.parse(msg).result;
|
|
|
+ modal.toast({
|
|
|
+ message: msg,
|
|
|
+ duration: 6
|
|
|
+ });
|
|
|
+ uni.hideLoading()
|
|
|
+ printModule.setDisConnectBTListener((ret) => {
|
|
|
+ modal.toast({
|
|
|
+ message: '蓝牙断开',
|
|
|
+ duration: 6
|
|
|
+ });
|
|
|
+ })
|
|
|
+ })
|
|
|
+ } catch (e) {
|
|
|
+ console.log(e)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //搜索没匹配的蓝牙设备
|
|
|
+ search_bluetooth(address) {
|
|
|
+ let _this = this;
|
|
|
+ //检查蓝牙是否开启
|
|
|
+ this.$check_bluetooth_open().then(ores => {
|
|
|
+ if (ores) {
|
|
|
+ console.log(ores);
|
|
|
+ //搜索蓝牙
|
|
|
+ _this.$search_bluetooth().then(bres => {
|
|
|
+ console.log(bres);
|
|
|
+ if (bres.code) {
|
|
|
+ _this.$search_pipei().then(pres => {
|
|
|
+ console.log(pres);
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handlePrint(code) {
|
|
|
+ printModule.printAreaSize({
|
|
|
+ 'height': '500',
|
|
|
+ 'number': '1'
|
|
|
+ }, result => {})
|
|
|
+ printModule.printBarCode({
|
|
|
+ 'x_pos': '10',
|
|
|
+ 'y_pos': '100',
|
|
|
+ 'code_type': '128',
|
|
|
+ 'ratio': '1',
|
|
|
+ 'height': '250',
|
|
|
+ 'width': '2',
|
|
|
+ 'rotation': 'BARCODE',
|
|
|
+ 'undertext': false,
|
|
|
+ 'number': '4',
|
|
|
+ 'offset': '5',
|
|
|
+ "textAlign": "right",
|
|
|
+ 'code_data': code
|
|
|
+ });
|
|
|
+ printModule.printForm()
|
|
|
+ printModule.print()
|
|
|
+ },
|
|
|
+ closeBT() {
|
|
|
+ printModule.closeBT();
|
|
|
+ },
|
|
|
+
|
|
|
+ getSn() {
|
|
|
+ let today = new Date();
|
|
|
+ let year = today.getFullYear();
|
|
|
+ let month = today.getMonth() + 1;
|
|
|
+ let date = today.getDate();
|
|
|
+ let hours = today.getHours();
|
|
|
+ let minutes = today.getMinutes();
|
|
|
+ let seconds = today.getSeconds();
|
|
|
+ let millisecond = today.getMilliseconds()
|
|
|
+ if (month <= 9) {
|
|
|
+ month = '0' + month
|
|
|
+ }
|
|
|
+ if (minutes <= 9) {
|
|
|
+ minutes = '0' + minutes;
|
|
|
+ }
|
|
|
+ if (date <= 9) {
|
|
|
+ date = '0' + date;
|
|
|
+ }
|
|
|
+ if (seconds <= 9) {
|
|
|
+ seconds = '0' + seconds;
|
|
|
+ }
|
|
|
+ let sn = year + '' + month + '' + date + '' + hours + '' + minutes + '' + seconds + '' + millisecond
|
|
|
+ uni.removeStorageSync('receipt_num');
|
|
|
+ uni.setStorageSync("receipt_num", sn)
|
|
|
+ console.log("receipt_num ", sn)
|
|
|
+ return sn
|
|
|
+ },
|
|
|
+
|
|
|
+ formattedDate(d) {
|
|
|
+ const date = new Date(d);
|
|
|
+ const year = date.getFullYear();
|
|
|
+ const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
|
+ const day = String(date.getDate()).padStart(2, '0');
|
|
|
+ const hours = String(date.getHours()).padStart(2, '0');
|
|
|
+ const minutes = String(date.getMinutes()).padStart(2, '0');
|
|
|
+ const seconds = String(date.getSeconds()).padStart(2, '0');
|
|
|
+ return `${year}-${month}-${day}`;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+ .nvue-page-root {
|
|
|
+ background-color: #F8F8F8;
|
|
|
+ padding-bottom: 0px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-form-item__title {
|
|
|
+ margin: 5px auto;
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-input-wrapper {
|
|
|
+ /* #ifndef APP-NVUE */
|
|
|
+ display: flex;
|
|
|
+ /* #endif */
|
|
|
+ flex-direction: row;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ background-color: #FFFFFF;
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-input {
|
|
|
+ height: 28px;
|
|
|
+ line-height: 28px;
|
|
|
+ font-size: 15px;
|
|
|
+ padding: 1px;
|
|
|
+ flex: 1;
|
|
|
+ border-radius: 5px;
|
|
|
+ border: 1px solid #cfdadd;
|
|
|
+ background-color: #FFFFFF;
|
|
|
+ }
|
|
|
+
|
|
|
+ .mini-btn {
|
|
|
+ height: 30px;
|
|
|
+ padding-left: 1px;
|
|
|
+ padding-right: 1px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-eye-active {
|
|
|
+ color: #007AFF;
|
|
|
+ }
|
|
|
+
|
|
|
+ .table-title {
|
|
|
+ background-color: aliceblue;
|
|
|
+ font-weight: 700;
|
|
|
+ margin-top: 10px;
|
|
|
+ height: 40px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .table-data {
|
|
|
+ background-color: aliceblue;
|
|
|
+ font-weight: 700;
|
|
|
+ margin-top: 1px;
|
|
|
+ height: 40px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tab-tr {
|
|
|
+ width: 25%;
|
|
|
+ line-height: 50px;
|
|
|
+ border-right: 1px solid #ccc;
|
|
|
+ margin: auto;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tab-tr-end {
|
|
|
+ width: 25%;
|
|
|
+ line-height: 50px;
|
|
|
+ border-right: 0px solid #ccc;
|
|
|
+ margin: auto;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+</style>
|
|
|
+<style lang="scss">
|
|
|
+ $color-base: #0039a6;
|
|
|
+ $words-color-base: #333333;
|
|
|
+ $words-color-light: #999999;
|
|
|
+
|
|
|
+ .header-wrap {
|
|
|
+ width: 100%;
|
|
|
+ position: fixed;
|
|
|
+ top: 0;
|
|
|
+ z-index: 999;
|
|
|
+
|
|
|
+ .index-header {
|
|
|
+ height: 88upx;
|
|
|
+ line-height: 88upx;
|
|
|
+ padding: 0 30upx;
|
|
|
+ padding-top: 40upx;
|
|
|
+ background-color: $color-base;
|
|
|
+ font-Size: 28upx;
|
|
|
+ color: #fff;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .fanhui {
|
|
|
+ color: #fff !important;
|
|
|
+ font-size: 28px;
|
|
|
+ padding-top: 5px;
|
|
|
+ font-weight: 700;
|
|
|
+ }
|
|
|
+
|
|
|
+ .lanya {
|
|
|
+ color: #fff !important;
|
|
|
+ font-size: 28px;
|
|
|
+ padding-top: 5px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .map-wrap {
|
|
|
+ padding-top: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .blank {
|
|
|
+ height: 126upx;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 购物车列表
|
|
|
+ .cart-list {
|
|
|
+ padding: 0 5rpx;
|
|
|
+
|
|
|
+ // 购物车商品
|
|
|
+ .goods {
|
|
|
+ display: flex;
|
|
|
+ padding: 5rpx;
|
|
|
+ border-radius: 10rpx;
|
|
|
+ background-color: #fff;
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ .meta {
|
|
|
+ // border:1px solid red;
|
|
|
+ flex: 1;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-left: 5rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .name {
|
|
|
+ height: 72rpx;
|
|
|
+ font-size: 18px;
|
|
|
+ color: #000000;
|
|
|
+ }
|
|
|
+
|
|
|
+ .specs {
|
|
|
+ line-height: 2;
|
|
|
+ padding: 0 15rpx;
|
|
|
+ font-size: 16px;
|
|
|
+ align-self: flex-start;
|
|
|
+ border-radius: 4rpx;
|
|
|
+ color: #888;
|
|
|
+ background-color: #f7f7f8;
|
|
|
+ }
|
|
|
+
|
|
|
+ .status_view {
|
|
|
+ line-height: 1;
|
|
|
+ font-size: 18px;
|
|
|
+ color: #444;
|
|
|
+ margin-bottom: 2rpx;
|
|
|
+ color: #000000;
|
|
|
+ padding-top: 5px;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 商品数量
|
|
|
+ .numGroup {
|
|
|
+ // border: 1px solid green;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 70rpx;
|
|
|
+ right: 5rpx;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ width: 120px;
|
|
|
+ height: 48rpx;
|
|
|
+
|
|
|
+ .text_1 {
|
|
|
+ // border: 1px solid red;
|
|
|
+ width: 50px;
|
|
|
+ height: 100%;
|
|
|
+ padding: 0 5rpx;
|
|
|
+ font-size: 15px;
|
|
|
+ color: #444;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text {
|
|
|
+ height: 100%;
|
|
|
+ padding: 0 5rpx;
|
|
|
+ font-size: 32rpx;
|
|
|
+ color: #444;
|
|
|
+ }
|
|
|
+
|
|
|
+ .inputs {
|
|
|
+ // border: 1px solid blue;
|
|
|
+ height: 100%;
|
|
|
+ padding-bottom: 10px;
|
|
|
+ text-align: center;
|
|
|
+ border-radius: 4rpx;
|
|
|
+ font-size: 20px;
|
|
|
+ color: #ff0000;
|
|
|
+ // background-color: #f6f6f6;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 商品数量
|
|
|
+ .weightGroup {
|
|
|
+ // border: 1px solid green;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 20rpx;
|
|
|
+ right: 5rpx;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ width: 120px;
|
|
|
+ height: 48rpx;
|
|
|
+
|
|
|
+ .text_1 {
|
|
|
+ // border: 1px solid red;
|
|
|
+ width: 50px;
|
|
|
+ height: 100%;
|
|
|
+ padding: 0 5rpx;
|
|
|
+ font-size: 15px;
|
|
|
+ color: #444;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text {
|
|
|
+ height: 100%;
|
|
|
+ padding: 0 5rpx;
|
|
|
+ font-size: 32rpx;
|
|
|
+ color: #444;
|
|
|
+ }
|
|
|
+
|
|
|
+ .inputs {
|
|
|
+ // border: 1px solid blue;
|
|
|
+ height: 100%;
|
|
|
+ padding-bottom: 10px;
|
|
|
+ text-align: center;
|
|
|
+ border-radius: 4rpx;
|
|
|
+ font-size: 20px;
|
|
|
+ color: #ff0000;
|
|
|
+ // background-color: #f6f6f6;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .cart-swipe {
|
|
|
+ display: block;
|
|
|
+ margin: 20rpx 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|