浏览代码

对接应收账款

谢杰标 2 年之前
父节点
当前提交
6f40a04bb2
共有 3 个文件被更改,包括 280 次插入122 次删除
  1. 34 0
      src/api/financed/index.js
  2. 118 57
      src/views/financed/arap/dislogTip.vue
  3. 128 65
      src/views/financed/arap/index.vue

+ 34 - 0
src/api/financed/index.js

@@ -55,3 +55,37 @@ export function costDetail(id) {
     method: "get",
   });
 }
+
+// 应收应付列表
+export function orderList(query) {
+  return request({
+    url: "/receive/order/list",
+    method: "get",
+    params: query,
+  });
+}
+
+// 应收应付导出
+export function orderExport(query) {
+  return request({
+    url: "/receive/order/listExport",
+    method: "get",
+    params: query,
+  });
+}
+// 新增催款提醒
+export function orderNote(data) {
+  return request({
+    url: "/receive/order/note",
+    method: "post",
+    data,
+  });
+}
+// 修改催款提醒
+export function orderNoteEdit(data) {
+  return request({
+    url: "/receive/order/note/edit",
+    method: "post",
+    data,
+  });
+}

+ 118 - 57
src/views/financed/arap/dislogTip.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="dislogTipBox">
     <BaseDialog
-      width="620px"
+      width="900px"
       :isShow.sync="isShow"
       title="催款提醒"
       @close="close"
@@ -16,32 +16,27 @@
         label-width="100px"
       >
         <div>
-          <el-form-item label="最新提醒:">2023-12-12 12:12:12 </el-form-item>
+          <el-form-item label="最新提醒:">
+            {{ $methodsTools.onlyForma(orderInfo.lastTime) || "--" }}
+          </el-form-item>
         </div>
 
         <div>
-          <el-form-item prop="email" label="提醒设置:">
-            <el-select v-model="form.email" placeholder="请选择提醒类型">
-              <el-option label="立即提醒" value="1"></el-option>
-              <el-option label="每天提醒" value="2"></el-option>
-              <el-option label="每周提醒" value="3"></el-option>
-              <el-option label="每月提醒" value="4"></el-option>
+          <el-form-item prop="noteType" label="提醒设置:">
+            <el-select v-model="form.noteType" placeholder="请选择提醒类型">
+              <el-option label="立即提醒" :value="1"></el-option>
+              <el-option label="每天提醒" :value="2"></el-option>
+              <el-option label="每周提醒" :value="3"></el-option>
+              <el-option label="每月提醒" :value="4"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item prop="email1" label="" v-if="form.email == 2"
-            ><el-time-select
-              v-model="form.email1"
-              :picker-options="{
-                start: '08:30',
-                step: '00:15',
-                end: '18:30',
-              }"
-              placeholder="选择时间"
+          <el-form-item prop="weekTime" label="" v-if="form.noteType == 3">
+            <el-select
+              v-model="form.weekTime"
+              multiple
+              placeholder="请选择星期"
+              key="3"
             >
-            </el-time-select>
-          </el-form-item>
-          <el-form-item prop="email2" label="" v-if="form.email == 3">
-            <el-select v-model="form.email2" placeholder="请选择成本类型">
               <el-option
                 v-for="week in weekList"
                 :key="week.value"
@@ -50,14 +45,39 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item prop="email3" label="" v-if="form.email == 4"
-            ><el-date-picker
-              v-model="form.email3"
-              type="datetime"
+          <el-form-item prop="monthTime" label="" v-if="form.noteType == 4">
+            <el-select
+              v-model="form.monthTime"
+              multiple
+              placeholder="请选择日期"
+              key="4"
+            >
+              <el-option
+                v-for="day in 31"
+                :key="day"
+                :label="day"
+                :value="day"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <!-- <el-form-item prop="monthTime" label="" v-if="form.noteType == 4">
+            <el-date-picker
+              format="d"
+              value-format="yyyy-MM-dd"
+              v-model="value"
+              type="dates"
               placeholder="选择日期时间"
-              default-time="8:00:00"
             >
             </el-date-picker>
+          </el-form-item> -->
+          <el-form-item prop="dayTime" label="" v-if="form.noteType !== 1"
+            ><el-time-picker
+              format="HH:mm"
+              value-format="HH:mm"
+              v-model="form.dayTime"
+              placeholder="选择时间"
+            >
+            </el-time-picker>
           </el-form-item>
         </div>
       </el-form>
@@ -66,6 +86,7 @@
 </template>
 
 <script>
+import { orderNote, orderNoteEdit } from "@/api/financed/index";
 export default {
   name: "DislogTip",
   props: {
@@ -73,34 +94,34 @@ export default {
       type: Boolean,
       default: false,
     },
-    id: {
-      type: String,
-      default: "",
+    orderInfo: {
+      type: Object,
+      default: () => {
+        return {};
+      },
     },
   },
   data() {
     return {
       form: {},
       rules: {
-        email: [
-          { required: true, message: "请选择提现类型", trigger: "change" },
-        ],
-        email1: [{ required: true, message: "请选择时间", trigger: "change" }],
-        email2: [{ required: true, message: "请选择星期", trigger: "change" }],
-        email3: [{ required: true, message: "请选择日期", trigger: "blur" }],
-        email4: [
-          { required: true, message: "请输入百分比成本", trigger: "blur" },
+        dayTime: [{ required: true, message: "请选择时间", trigger: "change" }],
+        weekTime: [
+          { required: true, message: "请选择星期", trigger: "change" },
         ],
+        monthTime: [{ required: true, message: "请选择日期", trigger: "blur" }],
       },
       weekList: [
         { label: "星期一", value: "1" },
-        { label: "星期二", value: 2 },
-        { label: "星期三", value: 3 },
-        { label: "星期四", value: 4 },
-        { label: "星期五", value: 5 },
-        { label: "星期六", value: 6 },
-        { label: "星期日", value: 7 },
+        { label: "星期二", value: "2" },
+        { label: "星期三", value: "3" },
+        { label: "星期四", value: "4" },
+        { label: "星期五", value: "5" },
+        { label: "星期六", value: "6" },
+        { label: "星期日", value: "7" },
       ],
+      dayList: [],
+      value: [],
     };
   },
 
@@ -109,26 +130,57 @@ export default {
   methods: {
     init() {
       this.resetForm();
-      if (this.id) {
-      }
     },
     close() {
       this.$refs["form"].resetFields();
     },
     submit() {},
     resetForm() {
+      let {
+        noteId,
+        orderSn,
+        tenantId,
+        dayTime,
+        weekTime,
+        monthTime,
+        noteType,
+      } = this.orderInfo;
       this.form = {
-        email: undefined,
-        email1: undefined,
-        email2: undefined,
-        email3: undefined,
+        noteType: noteType || 1,
+        id: noteId,
+        dayTime: dayTime,
+        weekTime: weekTime ? weekTime.split(",") : [],
+        monthTime: monthTime ? monthTime.split(",") : [],
+        orderSn: orderSn,
+        tenantId: tenantId,
       };
     },
     submitForm() {
       this.$refs["form"].validate((valid) => {
         if (valid) {
-          this.isShow = false;
-          this.$emit("search");
+          let form = JSON.parse(JSON.stringify(this.form));
+          let { noteType, weekTime, monthTime } = form;
+          delete form.weekTime;
+          delete form.monthTime;
+          if (noteType == 3) {
+            form.weekTime = weekTime.toString();
+          }
+          if (noteType == 4) {
+            form.monthTime = monthTime.toString();
+          }
+          if (form.id) {
+            orderNoteEdit(form).then((res) => {
+              this.$message.success("催款提醒修改成功");
+              this.isShow = false;
+              this.$emit("search");
+            });
+          } else {
+            orderNote(form).then((res) => {
+              this.$message.success("催款提醒设置成功");
+              this.isShow = false;
+              this.$emit("search");
+            });
+          }
         } else {
           return false;
         }
@@ -148,14 +200,23 @@ export default {
       },
     },
   },
+  watch: {
+    orderInfo(val) {
+      console.log(val, 666);
+    },
+  },
 };
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+// /deep/ .el-date-editor {
+//   width: 144px;
+// }
+</style>
 <style lang="scss">
-.el-picker-panel__body-wrapper {
-  .el-date-picker__header {
-    display: none !important;
-  }
-}
+// .el-picker-panel__body-wrapper {
+//   .el-date-picker__header {
+//     display: none !important;
+//   }
+// }
 </style>

+ 128 - 65
src/views/financed/arap/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="ActivityList">
     <el-radio-group
-      v-model="radio1"
+      v-model="type"
       @change="changeSearch"
       style="margin-bottom: 10px"
     >
@@ -17,7 +17,7 @@
       @init="init"
     />
     <table-list
-      :key="radio1"
+      :key="type"
       rowKey="id"
       ref="tableList"
       @openDialog="openDialog"
@@ -29,13 +29,27 @@
       <template slot="customize">
         <el-button @click="batchExport" type="primary"> 导出excel </el-button>
       </template>
-      <template slot="pcost" slot-scope="props">
-        <div>税收:40%</div>
-        <div>税收:40%</div>
+      <template slot="predictPayTime" slot-scope="props">
+        <span v-if="props.scope.row.creditStatus == 1">已结清</span>
+        <span style="color: red" v-else>
+          {{ $methodsTools.onlyForma(props.scope.row.predictPayTime) || "--" }}
+        </span>
       </template>
-      <template slot="fcost" slot-scope="props">
-        <div>税收:40</div>
-        <div>税收:40</div>
+      <template slot="noteType" slot-scope="props">
+        <div v-if="!props.scope.row.noteId || props.scope.row.noteType == 1">
+          --
+        </div>
+        <div v-else>
+          <div :class="'tip' + props.scope.row.noteType">
+            <span v-for="(text, idx) in backText(props.scope.row)" :key="idx">
+              <span v-if="props.scope.row.noteType == 3">周</span>
+              {{ text }}
+              <span v-if="props.scope.row.noteType == 4">日</span>
+              <i></i>
+            </span>
+          </div>
+          <div>{{ props.scope.row.dayTime }}</div>
+        </div>
       </template>
       <template slot="status" slot-scope="props">
         <el-checkbox
@@ -44,7 +58,11 @@
         ></el-checkbox>
       </template>
       <template slot="btn" slot-scope="props">
-        <el-button type="text" :disabled="false" @click="handelClick">
+        <el-button
+          type="text"
+          :disabled="props.scope.row.creditStatus == 1"
+          @click="handelClick(props.scope.row)"
+        >
           催款提醒
         </el-button>
       </template>
@@ -55,7 +73,11 @@
       :currentPage.sync="formData.pageNum"
       @search="search"
     />
-    <dislog-tip :dialogVisible.sync="dialogVisible"></dislog-tip>
+    <dislog-tip
+      :dialogVisible.sync="dialogVisible"
+      :orderInfo="activeOrderInfo"
+      @search="search"
+    ></dislog-tip>
     <dislogOrderDetails
       :dialogVisible.sync="orderDialogVisible"
     ></dislogOrderDetails>
@@ -68,6 +90,8 @@ import tableList from "@/components/tableList";
 import pagination from "@/components/pagination";
 import dislogTip from "./dislogTip.vue";
 import dislogOrderDetails from "../components/dislogOrderDetails.vue";
+import * as baseUrls from "@/utils/request.js";
+import { orderList, orderExport } from "@/api/financed/index";
 export default {
   name: "cost",
   components: {
@@ -85,15 +109,11 @@ export default {
         index: 0,
         ch: "条",
         num: true,
-        choice: true,
+        choice: false,
         addHide: true,
         openCheckMore: true,
         changeWidth: "160px",
         custom: false,
-        backFatherBtn: {
-          status: false,
-          title: "配置下单填选模板",
-        },
       },
       formData: {
         pageSize: 10,
@@ -103,64 +123,67 @@ export default {
       tableSet1: [
         {
           label: "下单时间",
-          prop: "startTime",
+          prop: "buyTime",
           hidden: true,
           scope: "aTimeList",
         },
         {
           label: "订单单号",
-          prop: "name",
+          prop: "orderSn",
           hidden: true,
           scope: "openDialog",
         },
         {
           label: "机构名称",
-          prop: "name",
+          prop: "tenantName",
           hidden: true,
         },
         {
           label: "业务员",
-          prop: "name",
+          prop: "createUsername",
           hidden: true,
         },
         {
           label: "业务号",
-          prop: "name",
+          prop: "createNo",
           hidden: true,
         },
         {
           label: "合同金额(元)",
-          prop: "name",
+          prop: "orderPrice",
           hidden: true,
         },
         {
           label: "已收账款(元)",
-          prop: "name",
+          prop: "orderReceived",
           hidden: true,
         },
         {
           label: "未收账款(元)",
-          prop: "name",
+          prop: "orderUncollected",
           hidden: true,
         },
         {
           label: "预收时间",
-          prop: "name",
           hidden: true,
+          scope: "solt",
+          soltName: "predictPayTime",
         },
         {
           label: "剩余天数",
-          prop: "name",
+          prop: "predictPayTime",
           hidden: true,
         },
         {
           label: "提醒设置",
-          prop: "name",
+          prop: "noteType",
+          scope: "solt",
+          soltName: "noteType",
           hidden: true,
         },
         {
           label: "最新提醒",
-          prop: "posterTempName",
+          prop: "lastTime",
           hidden: true,
         },
       ],
@@ -258,47 +281,54 @@ export default {
       tableData: [], //表单数据
       total: 0, //一共多少条
       dialogVisible: false,
-      orderDialogVisible: true,
-      radio1: 1,
+      orderDialogVisible: false,
+      type: 1,
+      activeOrderInfo: {},
     };
   },
   created() {
-    this.search();
+    this.search(2);
   },
   methods: {
     openDialog(data) {
       console.log(data);
     },
     batchExport() {
-      let len = this.$refs.tableList.allCheckData.length;
-      if (!len) {
-        return this.$message.warning("请先勾应收应付");
+      orderExport(this.backData()).then((res) => {
+        if (res.msg) {
+          let url = baseUrls.baseURL + "common/download?fileName=" + res.msg;
+          let link = document.createElement("a");
+          let fileName = "导出应收应付数据" + ".xlsx";
+          document.body.appendChild(link);
+          link.href = url;
+          link.dowmload = fileName;
+          link.click();
+          link.remove();
+          this.$message.success("导出成功");
+        } else {
+          this.$message.error("导出失败");
+        }
+      });
+    },
+    backText(row) {
+      const type = row.noteType;
+      if (type == 2) {
+        return ["每天"];
       }
-      const ids = this.$refs.tableList.allCheckData.map((item) => item.id);
+      const key = ["weekTime", "monthTime"][type - 3];
+      let data = row[key].split(",").sort((a, b) => a - b);
+      return data;
     },
     changeSearch() {
       this.init();
     },
-    handelClick() {
+    handelClick(row) {
+      console.log(row);
+      this.activeOrderInfo = row;
       this.dialogVisible = true;
     },
-    search(v) {
-      this.loading = true;
-      if (v === 2) {
-        this.formData = {
-          pageSize: 10,
-          pageNum: 1,
-        };
-      }
-      var data = JSON.parse(JSON.stringify(this.formData));
-      // if (this.formData.classStartTime) {
-      //   data.classStartTime = parseInt(data.classStartTime / 1000);
-      // }
-      // if (this.formData.classEndTime) {
-      //   data.classEndTime = parseInt(data.classEndTime / 1000);
-      // }
-      this.$api
-        .distributiontemplist(data)
+    orderList(data) {
+      orderList(data)
         .then((res) => {
           this.tableData = res.rows;
           this.total = res.total;
@@ -308,60 +338,85 @@ export default {
           this.loading = false;
         });
     },
+    search(v) {
+      this.loading = true;
+      if (v === 2) {
+        this.formData = {
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      [this.orderList, this.orderList, this.orderList][this.type](
+        this.backData()
+      );
+    },
+    backData() {
+      let data = this.formData;
+      let { startTime, endTime } = this.formData;
+      if (startTime || endTime) {
+        data = JSON.parse(JSON.stringify(this.formData));
+        if (startTime) {
+          data.startTime = parseInt(startTime / 1000);
+        }
+        if (endTime) {
+          data.endTime = parseInt(endTime / 1000);
+        }
+      }
+      return data;
+    },
     init() {
       this.search(2);
     },
   },
   computed: {
     tableSet() {
-      return this["tableSet" + this.radio1];
+      return this["tableSet" + this.type];
     },
     formList() {
       let data = [
         {
-          prop: "status1",
+          prop: "creditStatus",
           placeholder: "账款状态",
           scope: "select",
           options: [
-            { label: "不限", value: 2 },
             { label: "已结清", value: 1 },
             { label: "未结清", value: 0 },
           ],
         },
         {
-          prop1: "classStartTime",
-          prop2: "classEndTime",
+          prop1: "startTime",
+          prop2: "endTime",
           placeholder1: "开始时间",
           placeholder2: "结束时间",
           scope: "moreDataPicker",
         },
       ];
-      if (this.radio1 != 1) {
+      if (this.type != 1) {
         data.unshift(
           {
             prop: "status1",
             placeholder: "角色选择",
             scope: "select",
             options: [
-              { label: "不限", value: 2 },
               { label: "已结清", value: 1 },
               { label: "未结清", value: 0 },
             ],
           },
           {
-            prop: "status1",
+            prop: "checkStatus",
             placeholder: "审核状态",
             scope: "select",
             options: [
-              { label: "不限", value: 2 },
-              { label: "已结清", value: 1 },
-              { label: "未结清", value: 0 },
+              { label: "待审核", value: 0 },
+              { label: "已通过", value: 1 },
+              { label: "未通过", value: 2 },
+              { label: "已撤销", value: 3 },
             ],
           }
         );
       } else {
         data.push({
-          prop: "name",
+          prop: "keyNo",
           placeholder: "机构/业务号",
         });
       }
@@ -371,4 +426,12 @@ export default {
 };
 </script>
 
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.tip4,
+.tip3 {
+  white-space: normal;
+  i::before {
+    content: ",";
+  }
+}
+</style>