Procházet zdrojové kódy

客户欠款明细页面完善

wangn před 5 roky
rodič
revize
26d2239654

+ 7 - 0
hdApp/src/api/purchase/index.js

@@ -34,3 +34,10 @@ export const createPurchaseOrderApi = async data => {
  export const purchaseList = async data => {
 	return https.get("/purchase/list", data);
 };
+
+/** *
+ * 待结款明细
+ */
+ export const purchaseDebtList = async data => {
+	return https.get("/purchase/debt-list", data);
+};

+ 107 - 0
hdApp/src/pagesPurchase/components/gatheringList.vue

@@ -0,0 +1,107 @@
+<template>
+  <view class="details-item">
+    <view class="details-select">
+      <text
+        class="iconfont iconxuanzhong"
+        v-if="isCheck"
+      > </text>
+      <text
+        class="iconfont iconweixuanzhong"
+        v-else
+      > </text>
+    </view>
+    <view class="details-main">
+      <view class="item-header">
+        <text class="name">销售出库 | {{info.orderSn}} </text>
+      </view>
+      <view class="item-row">
+        <view class="mark">{{ info.addTime }}</view>
+      </view>
+      <view class="item-row">
+        <view class="mark">成交金额:{{ info.actPrice }}</view>
+        <view class="price">欠款: {{ info.actPrice }}</view>
+      </view>
+    </view>
+  </view>
+</template>
+<script>
+export default {
+  props: {
+    info: {
+      required: true
+    },
+    isCheck: {
+      type: Boolean,
+      default: false
+    }
+  },
+  data () {
+    return {
+    }
+  },
+  methods: {
+  }
+};
+</script>
+<style lang="scss" scoped>
+.details-item {
+  display: flex;
+  align-items: center;
+  padding: 30upx 20upx;
+  margin-bottom: 20upx;
+  background-color: #fff;
+  border-radius: 10upx;
+  .details-select {
+    margin-right: 30upx;
+    .iconfont {
+      font-size: 40upx;
+      color: #dddddd;
+    }
+    .iconxuanzhong {
+      color: $mainColor;
+    }
+  }
+  .details-main {
+    flex: 1;
+  }
+  .item-header {
+    display: flex;
+    align-items: center;
+    .logo {
+      margin-right: 20upx;
+      width: 50upx;
+      height: 50upx;
+      border-radius: 50%;
+    }
+    .name {
+      font-size: 28upx;
+      font-family: PingFang SC;
+      font-weight: 600;
+      color: #333333;
+    }
+  }
+  .item-row {
+    margin-top: 20upx;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+
+    .mark {
+      font-size: 28upx;
+      font-weight: 400;
+      color: #666666;
+    }
+    .price {
+      display: flex;
+      align-items: center;
+      font-size: 28upx;
+      font-weight: 600;
+      color: #333333;
+      .iconfont {
+        font-size: 28upx;
+        color: #999999;
+      }
+    }
+  }
+}
+</style>

+ 218 - 2
hdApp/src/pagesPurchase/gathering.vue

@@ -1,12 +1,228 @@
 <template>
   <view class="order-page">
-    123
+    <view class="top-view">
+      <view class="top-row">
+        <text class="header-item"> 客户</text>
+        <text class="header-item">总欠款 </text>
+      </view>
+      <view class="top-row">
+        <view class="info-item">
+          <image
+            class="logo"
+            src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3225163326,3627210682&fm=26&gp=0.jpg"
+          />
+          <text class="name">
+            {{ customInfo.name || "1221" }}
+          </text>
+        </view>
+        <view class="price-item">
+          {{ totalAmount || "121212" }}
+        </view>
+      </view>
+    </view>
+    <scroll-view
+      scroll-y
+      class="shop-list"
+    >
+      <block>
+        <gatheringList
+          v-for="(item, index) in detailsList"
+          :key="index"
+          :isEdit="true"
+          :isCheck="item.checked"
+          :info="item"
+          @click.native="checkItemEvent(item)"
+        ></gatheringList>
+      </block>
+      <block>
+      </block>
+    </scroll-view>
+    <view class="bar-view">
+      <template v-if="!isBatch">
+        <view class="info-view">
+          <text
+            class="iconfont iconxuanzhong"
+            v-if="isCheck"
+          > </text>
+          <text
+            class="iconfont iconweixuanzhong"
+            v-else
+          > </text>
+          已选 <text class="price">1231312</text> 笔,
+          ¥<text class="price">123123</text>
+        </view>
+      </template>
+      <template v-else>
+        <view class="info-view">
+
+          <text class="unit">¥</text>
+          <text class="price">213123123</text>
+        </view>
+      </template>
+      <view
+        class="btn-view"
+        v-if="isBatch"
+      >
+        <button
+          :class="['admin-button-com', 'disable']"
+          @click="isBatch = false"
+        > 取消</button>
+        <button
+          :class="['admin-button-com', 'blue']"
+          @click="batchEvent"
+        >收款</button>
+      </view>
+      <view
+        class="btn-view"
+        v-else
+      >
+        <button
+          class="admin-button-com blue"
+          @click="isBatch = true"
+        >
+          批量收款
+        </button>
+      </view>
+    </view>
   </view>
 </template>
 <script>
-
+import gatheringList from './components/gatheringList'
+import { purchaseDebtList } from "@/api/purchase/index";
 export default {
+  components: { gatheringList },
+  data () {
+    return {
+      checkShow: true,
+      detailsList: [],
+      num: "",
+      customInfo: "",
+      totalAmount: "",
+    }
+  },
+  mounted () {
+    this.initData()
+  },
+  methods: {
+    initData () {
+      purchaseDebtList().then(res => {
+        console.log(res)
+        this.detailsList = res.data.list.map(ele => {
+          return {
+            ...ele,
+            checked: false
+          };
+        });
+      }).catch(err => { console.log(err) })
+    },
+    checkItemEvent (item) {
+      for (let index = 0; index < this.detailsList.length; index++) {
+        const element = this.detailsList[index].id;
+        if (element == item.id) {
+          //id相等选中
+          this.$set(this.detailsList, index, {
+            ...this.detailsList[index],
+            checked: !this.detailsList[index].checked
+          });
+          break;
+        }
+      }
+    },
+  }
 }
 </script>
 <style lang="scss" scoped>
+.order-page {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  background-color: #f9fbfc;
+  .top-view {
+    padding: 30upx;
+    background-color: #fff;
+    .top-row {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      &:not(:last-child) {
+        margin-bottom: 10upx;
+      }
+      .header-item {
+        font-size: 24upx;
+        font-weight: 400;
+        color: #999999;
+      }
+      .info-item {
+        display: flex;
+        align-items: center;
+        .logo {
+          margin-right: 10upx;
+          width: 50upx;
+          height: 50upx;
+          border-radius: 50%;
+        }
+        .name {
+          font-size: 28upx;
+          font-weight: 600;
+          color: #333333;
+        }
+      }
+      .price-item {
+        font-size: 34upx;
+        font-weight: 600;
+        color: #333333;
+      }
+    }
+  }
+  .shop-list {
+    padding: 20upx 0;
+    flex: 1;
+    padding-bottom: 50upx;
+  }
+  .bar-view {
+    position: fixed;
+    bottom: 0;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 0 30upx;
+    width: 100%;
+    height: 100upx;
+    background: #fff;
+    box-shadow: 0px -1px 6px 0px rgba(4, 0, 0, 0.06);
+    .info-view {
+      display: flex;
+      align-items: center;
+      color: #333;
+      font-size: 24upx;
+      .iconfont {
+        font-size: 32upx;
+        color: #dddddd;
+      }
+      .price {
+        margin: 0 5upx;
+        color: $redColor;
+        font-size: 32upx;
+      }
+      .unit {
+        margin: 0 10upx;
+        color: $redColor;
+        font-size: 16upx;
+      }
+    }
+    .btn-view {
+      display: flex;
+      .admin-button-com {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        margin: 0 10upx;
+        width: 200upx;
+        height: 70upx;
+        // line-height: 70upx;
+        font-size: 32upx;
+      }
+    }
+  }
+}
 </style>