Explorar o código

Merge branch 'wxlNew' into online

wolyshaw %!s(int64=4) %!d(string=hai) anos
pai
achega
416565bdf7

+ 61 - 3
src/api/orderManager.js

@@ -52,7 +52,11 @@ export function routeOrderAdd (data) {
   return request({
     url: api + '/routeOrder/add',
     method: 'post',
-    data: qs.stringify(data)
+
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data,
   })
 }
 
@@ -74,7 +78,7 @@ export function applyRefundAudit (data) {
   })
 }
 
-// 提现 
+// 提现
 export function studentWithdraw (data) {
   return request({
     url: api + '/studentWithdraw/queryPage',
@@ -83,7 +87,7 @@ export function studentWithdraw (data) {
   })
 }
 
-// 确认提现 
+// 确认提现
 export function studentWithdrawConfirm (data) {
   return request({
     url: api + '/studentWithdraw/confirm',
@@ -127,3 +131,57 @@ export function getOrderStatus (data) {
     params: data
   })
 }
+
+// 财务支出列表
+export function getFinancialExpenditure (data) {
+  return request({
+    url: api + '/financialExpenditure/queryPage',
+    method: 'GET',
+    params: data
+  })
+}
+
+// 财务支出删除
+export function removeFinancialExpenditure (data) {
+  return request({
+    url: api + '/financialExpenditure/batchDel',
+    method: 'POST',
+    params: data
+  })
+}
+
+// 财务支出更新
+export function updateFinancialExpenditure (data) {
+  return request({
+    url: api + '/financialExpenditure/update',
+    method: 'POST',
+    data
+  })
+}
+
+// 经营报表列表
+export function getOperatingReport (data) {
+  return request({
+    url: api + '/operatingReport/queryPage',
+    method: 'GET',
+    params: data
+  })
+}
+
+// 销售列表
+export function getSellOrder (data) {
+  return request({
+    url: api + '/sellOrder/queryPage',
+    method: 'GET',
+    params: data
+  })
+}
+
+// 销售列表修改成本
+export function updateSellOrder (data) {
+  return request({
+    url: api + '/sellOrder/update',
+    method: 'POST',
+    params: data
+  })
+}

+ 2 - 2
src/utils/downLoadFile.js

@@ -14,7 +14,7 @@ import load from '@/utils/loading'
  *      fileName: xxx.xls
  * }
  */
-export const Export = (that, params) => {
+export const Export = (that, params, message) => {
     // 报表导出
     let url = params.url
     const options = {
@@ -26,7 +26,7 @@ export const Export = (that, params) => {
         url,
         responseType: "blob"
     };
-    that.$confirm("您确定下载模板", "提示", {
+    that.$confirm((message || "您确定下载模板"), "提示", {
             confirmButtonText: "确定",
             cancelButtonText: "取消",
             type: "warning"

+ 72 - 30
src/views/businessManager/orderManager/businessStatement.vue

@@ -4,16 +4,18 @@
       <div class="squrt"></div>经营报表
     </h2>
     <div class="m-core">
-      <div class="newBand">导入</div>
+        <el-button @click="downloadFile" class="btn-primary">导出</el-button>
       <!-- 搜索类型 -->
       <el-form :inline="true"
                class="searchForm"
                v-model.trim="searchForm">
         <el-form-item prop='organId'>
           <el-select class='multiple'
-                     v-model.trim="searchForm.organId"
+                     v-model.trim="searchForm.organIdList"
                      clearable
                      filterable
+                     multiple
+                     collapse-tags
                      placeholder="请选择分部">
             <el-option v-for="(item,index) in organList"
                        :key="index"
@@ -22,11 +24,18 @@
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-select clearable filterable placeholder="请选择所属学校" v-model="searchForm.schoolName">
-            <el-option label="1" value="1"></el-option>
+          <el-select clearable filterable placeholder="请选择所属学校" v-model="searchForm.schoolId">
+            <el-option v-for="(item,index) in cooperations" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
+          <el-date-picker
+            v-model="searchForm.month"
+            type="month"
+            placeholder="选择月份">
+          </el-date-picker>
+        </el-form-item>
+        <!-- <el-form-item>
           <el-date-picker style="width:410px;"
                           v-model.trim="orderDate"
                           type="daterange"
@@ -37,7 +46,7 @@
                           end-placeholder="结束日期"
                           :picker-options="{ firstDayOfWeek: 1 }">
           </el-date-picker>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item>
           <el-button @click="search"
                      type="danger">搜索</el-button>
@@ -51,56 +60,59 @@
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}">
           <el-table-column align='center'
                            width="150"
-                           prop="createTime"
-                           label="分部">
-            <template slot-scope="scope">
-              <div>
-                {{scope.row.createTime | dateForMinFormat}}
-              </div>
-            </template>
-          </el-table-column>
+                           prop="organName"
+                           label="分部"></el-table-column>
           <el-table-column align='center'
-                           prop="orderNo"
+                           prop="schoolName"
                            label="学校">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.expectAmount"
+                           prop="sellAmount"
+                           width="150px"
                            label="销售收入(元)">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.actualAmount"
+                           prop="serviceAmount"
+                           width="150px"
                            label="服务收入(元)">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.actualAmount"
+                           prop="refundAmount"
+                           width="150px"
                            label="业务退费(元)">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.actualAmount"
+                           prop="incomeTotal"
+                           width="150px"
                            label="收入合计(元)">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.actualAmount"
+                           prop="sellCost"
+                           width="150px"
                            label="销售成本(元)">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.actualAmount"
+                           prop="expensesAmount"
+                           width="150px"
                            label="固定支出(元)">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.actualAmount"
+                           prop="variableCost"
+                           width="150px"
                            label="变动支出(元)">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.actualAmount"
+                           prop="distributionAmount"
+                           width="150px"
                            label="分摊费用(元)">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.actualAmount"
+                           prop="costAmount"
+                           width="150px"
                            label="成本费用合计(元)">
           </el-table-column>
           <el-table-column align='center'
-                           prop="studentPaymentOrder.actualAmount"
+                           prop="profit"
                            label="利润(元)">
           </el-table-column>
         </el-table>
@@ -115,9 +127,11 @@
 </template>
 <script>
 import pagination from '@/components/Pagination/index'
-import { studentRefundsQueryPage, applyRefundAudit } from '@/api/orderManager'
-import { getEmployeeOrgan } from '@/api/buildTeam'
+import { Export } from '@/utils/downLoadFile'
+import { getOperatingReport, applyRefundAudit } from '@/api/orderManager'
+import { getEmployeeOrgan, getCooperation } from '@/api/buildTeam'
 import store from '@/store'
+import dayjs from 'dayjs'
 export default {
   components: { pagination },
   name: 'backMoney',
@@ -127,10 +141,14 @@ export default {
       searchForm: {
         startTime: null,
         endTime: null,
-        organId: null
+        organId: null,
+        month: '',
+        schoolId: '',
+        organIdList: []
       },
       tableList: [],
       organList: [],
+      cooperations: [],
       pageInfo: {
         // 分页规则
         limit: 10, // 限制显示条数
@@ -146,6 +164,12 @@ export default {
         this.organList = res.data;
       }
     })
+    getCooperation({ 'rows': 1000, })
+    .then(res => {
+      if (res.code == 200) {
+        this.cooperations = res.data.rows;
+      }
+    })
     this.getList()
     var now = new Date();
     var startDate = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate())).toISOString().slice(0, 10);
@@ -159,6 +183,16 @@ export default {
       this.pageInfo.page = 1;
       this.getList()
     },
+    downloadFile() {
+      let params = this.searchForm
+      Export(this, {
+        url: '/api-web/operatingReport/export',
+        params: {
+        ...params,
+        month: (params.month ? dayjs(params.month).format('YYYY-MM-DD') : ''),
+      }
+      }, '是否确认导出报表?')
+    },
     onTeachingSubmit (formName, status) { // 添加数据
       this.$refs[formName].validate((valid) => {
         if (valid) {
@@ -181,7 +215,11 @@ export default {
       let params = this.searchForm
       params.rows = this.pageInfo.limit
       params.page = this.pageInfo.page
-      studentRefundsQueryPage(params).then(res => {
+      getOperatingReport({
+        ...params,
+        month: (params.month ? dayjs(params.month).format('YYYY-MM-DD') : ''),
+        organIdList: [...this.searchForm.organIdList].join()
+      }).then(res => {
         let result = res.data
         if (res.code == 200) {
           this.tableList = result.rows
@@ -202,11 +240,15 @@ export default {
       this.orderDate = null
       this.searchForm = {
         startTime: null,
-        endTime: null
+        endTime: null,
+        month: '',
+        schoolId: '',
+        organIdList: []
       }
+      this.getList()
     }
   }
 }
 </script>
 <style lang="scss">
-</style>
+</style>

+ 86 - 27
src/views/businessManager/orderManager/financeManager.vue

@@ -195,6 +195,7 @@
                         prop="organId"
                         :label-width="formLabelWidth">
             <el-select v-model.trim="form.organId"
+                       @change="changeOrgin"
                        style="width: 100% !important;">
               <el-option v-for="(item,index) in organList"
                          :key="index"
@@ -203,11 +204,11 @@
             </el-select>
           </el-form-item>
           <el-form-item label="所属学校"
-                        prop="organId"
+                        prop="schoolId"
                         :label-width="formLabelWidth">
-            <el-select v-model.trim="form.organId"
+            <el-select v-model.trim="form.schoolId"
                        style="width: 100% !important;">
-              <el-option v-for="(item,index) in organList"
+              <el-option v-for="(item,index) in cooperationList"
                          :key="index"
                          :label="item.name"
                          :value="item.id"></el-option>
@@ -229,11 +230,11 @@
                       v-model.trim="form.transNo"></el-input>
           </el-form-item>
           <el-form-item label="收款账户"
-                        prop="merNos"
+                        prop="merNo"
                         :label-width="formLabelWidth">
             <el-input placeholder="请输入收款账户"
                       type="text"
-                      v-model.trim="form.merNos"></el-input>
+                      v-model.trim="form.merNo"></el-input>
           </el-form-item>
           <el-form-item label="交易日期"
                         prop="payTime"
@@ -251,25 +252,48 @@
                         :label-width="formLabelWidth">
             <el-select v-model.trim="form.saleType"
                        style="width: 100% !important;">
-              <el-option label="服务收入" value="1"></el-option>
-              <el-option label="销售收入" value="2"></el-option>
+              <el-option label="服务收入"
+                         value="1"></el-option>
+              <el-option label="销售收入"
+                         value="2"></el-option>
             </el-select>
           </el-form-item>
-          <div v-for="(goodsList, index) in form.goodsList" :key="index">
-            <el-form-item :label="'商品名称' + (index + 1)" :label-width="formLabelWidth" class="setWidth" :prop="'goodsList.' + index + '.id'" :rules="[{ required: true, message: '请选择商品', trigger: 'change' }]">
-              <el-select v-model.trim="goodsList.id" placeholder="请选择商品">
-                <el-option v-for="(item,index) in organList"
-                         :key="index"
-                         :label="item.name"
-                         :value="item.id"></el-option>
-            </el-select>
+          <div v-for="(goodsList, index) in form.goodsList"
+               :key="index">
+            <el-form-item :label="'商品名称' + (index + 1)"
+                          :label-width="formLabelWidth"
+                          class="setWidth"
+                          :prop="'goodsList.' + index + '.id'"
+                          :rules="[{ required: true, message: '请选择商品', trigger: 'change' }]">
+              <el-select v-model.trim="goodsList.id"
+                         @change="checkgoods"
+                         placeholder="请选择商品">
+                <el-option v-for="(item,index) in shopList"
+                           :key="index"
+                           :label="item.name"
+                           :value="item.id"></el-option>
+              </el-select>
             </el-form-item>
-            <el-form-item class="setWidth" style="margin-right: 10px" :prop="'goodsList.' + index + '.number'" :rules="validAmount">
+            <el-form-item class="setWidth"
+                          style="margin-right: 10px"
+                          :prop="'goodsList.' + index + '.number'"
+                          :rules="validAmount">
               <!-- <el-input-number style="width: 160px;" v-model="goodsList.number" placeholder="商品数量"></el-input-number> -->
-              <el-input type="age" style="width: 160px;" clearable placeholder="请输入商品数量" @mousewheel.native.prevent v-model.number="goodsList.number" ></el-input>
+              <el-input type="age"
+                        style="width: 160px;"
+                        clearable
+                        placeholder="请输入商品数量"
+                        @mousewheel.native.prevent
+                        v-model.number="goodsList.number"></el-input>
             </el-form-item>
-            <el-button icon="el-icon-minus" v-if="form.goodsList.length > 1" circle @click.prevent="removeGoodsList(goodsList)"></el-button>
-            <el-button icon="el-icon-plus" @click.prevent="addGoodsList" circle style="margin-left: 5px;"></el-button>
+            <el-button icon="el-icon-minus"
+                       v-if="form.goodsList.length > 1"
+                       circle
+                       @click.prevent="removeGoodsList(goodsList)"></el-button>
+            <el-button icon="el-icon-plus"
+                       @click.prevent="addGoodsList"
+                       circle
+                       style="margin-left: 5px;"></el-button>
           </div>
           <el-form-item label="备注"
                         :label-width="formLabelWidth">
@@ -292,7 +316,8 @@
 <script>
 import pagination from "@/components/Pagination/index";
 import { routeOrderFinance, routeOrderAdd } from "@/api/orderManager";
-import { getEmployeeOrgan } from "@/api/buildTeam";
+import { goodsQuery } from '@/api/businessManager'
+import { getEmployeeOrgan, getAddress, getCooperation } from "@/api/buildTeam";
 // import store from '@/store'
 import { orderStatus, dealStatus } from "@/utils/searchArray";
 import cleanDeep from 'clean-deep'
@@ -334,6 +359,8 @@ export default {
       },
       tableList: [],
       organList: [],
+      shopList: [],
+      cooperationList: [],
       pageInfo: {
         // 分页规则
         limit: 10, // 限制显示条数
@@ -351,11 +378,12 @@ export default {
         organId: null,
         transNo: null,
         type: "OTHER",
-        merNos: null,
+        merNo: null,
         actualAmount: null,
         memo: null,
         payTime: null,
         saleType: null,
+        schoolId: null,
         goodsList: [{
           id: null,
           number: null
@@ -368,13 +396,16 @@ export default {
         organId: [
           { required: true, message: "请选择所属分部", trigger: "change" }
         ],
+        schoolId: [
+          { required: true, message: "请选择学校", trigger: "change" }
+        ],
         actualAmount: [
           { required: true, message: "请输入金额", trigger: "blur" }
         ],
         transNo: [
           { required: true, message: "请输入交易流水号", trigger: "blur" }
         ],
-        merNos: [
+        merNo: [
           { required: true, message: "请输入收款账户", trigger: "blur" }
         ],
         payTime: [
@@ -392,6 +423,12 @@ export default {
         this.organList = res.data;
       }
     });
+    goodsQuery({ status: 1, rows: 99999 }).then(res => {
+      if (res.code === 200) {
+
+        this.shopList = res.data.rows
+      }
+    })
     var now = new Date();
     var startDate = new Date(
       Date.UTC(now.getFullYear(), now.getMonth(), now.getDate())
@@ -421,6 +458,10 @@ export default {
     onOrderSubmit (formName) { // 添加订单
       this.$refs[formName].validate(valid => {
         if (valid) {
+          this.form.goodies = {}
+          for (let i in this.form.goodsList) {
+            this.form.goodies[this.form.goodsList[i]['id']] = this.form.goodsList[i]['number']
+          }
           routeOrderAdd(this.form).then(res => {
             if (res.code == 200) {
               this.$message.success("添加成功");
@@ -440,7 +481,7 @@ export default {
         organId: null,
         transNo: null,
         type: "OTHER",
-        merNos: null,
+        merNo: null,
         actualAmount: null,
         memo: null,
         payTime: null,
@@ -455,7 +496,7 @@ export default {
     onOrderExport () {
       // 报表导出
       let url = "/api-web/export/routeOrderList";
-        let searchForm = this.searchForm;
+      let searchForm = this.searchForm;
       let data = {
         orderType: 3,
         search: searchForm.search,
@@ -521,7 +562,7 @@ export default {
         })
         .catch(() => { });
     },
-    onAdaPayExport() {
+    onAdaPayExport () {
       // 报表导出
       let url = "/api-web/adapay/exportBill";
       let data = {};
@@ -635,17 +676,35 @@ export default {
       };
       this.getList();
     },
-    removeGoodsList(item) {
+    removeGoodsList (item) {
       const index = this.form.goodsList.indexOf(item)
       if (index !== -1) {
         this.form.goodsList.splice(index, 1)
       }
     },
-    addGoodsList() {
+    addGoodsList () {
       this.form.goodsList.push({
         id: null,
         number: null
       })
+    },
+    changeOrgin (val) {
+      this.form.schoolId = null;
+      if (val) {
+        getCooperation({ rows: 9999, organId: val }).then(res => {
+          if (res.code === 200) {
+            this.cooperationList = res.data.rows
+          }
+        })
+      }
+    },
+    checkgoods (val) {
+      for (let i = 0; i <= this.form.goodsList.length - 1; i++) {
+        if (i != this.form.goodsList.length - 1 && this.form.goodsList[i].id === val) {
+          this.form.goodsList[this.form.goodsList.length - 1].id = ''
+        }
+
+      }
     }
   }
 };

+ 132 - 25
src/views/businessManager/orderManager/payRecord.vue

@@ -1,15 +1,27 @@
 <template>
   <div class="m-container">
     <h2>
-      <div class="squrt"></div>支出
+      <div class="squrt"></div>支出记录
     </h2>
     <div class="m-core">
+      <el-upload
+        style="display: inline-block;"
+        action="/api-web/import/financialExpenditure"
+        :show-file-list="false"
+        :before-upload="beforeUpload"
+        accept=".xlsx,.xls"
+        :headers="headers"
+        :on-error="handleError"
+        :on-success="handleSuccess">
+        <el-button class="btn-primary">导入</el-button>
+      </el-upload>
+      <el-button @click="downloadFile" class="btn-primary">模版文件下载</el-button>
       <!-- 搜索类型 -->
       <el-form :inline="true"
                class="searchForm"
                v-model.trim="searchForm">
         <el-form-item>
-          <el-input placeholder="申请人" type="text"></el-input>
+          <el-input v-model.trim="searchForm.search" placeholder="批次号、申请人" type="text"></el-input>
         </el-form-item>
         <el-form-item>
           <el-select v-model.trim="searchForm.organId" clearable filterable placeholder="请选择所属分部">
@@ -17,11 +29,11 @@
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-select clearable filterable placeholder="请选择所属学校" v-model="searchForm.schoolName">
-            <el-option label="1" value="1"></el-option>
+          <el-select clearable filterable placeholder="请选择所属学校" v-model="searchForm.cooperationOrganId">
+            <el-option v-for="(item,index) in cooperations" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item>
+        <!-- <el-form-item>
           <el-select clearable filterable placeholder="请选择支出类型" v-model="searchForm.saleType">
             <el-option label="1" value="1"></el-option>
           </el-select>
@@ -35,7 +47,7 @@
           <el-select clearable filterable placeholder="请选择收款方式" v-model="searchForm.paymentChannel">
             <el-option v-for="item in paymentChannelStatus" :key="item.value" :label="item.label" :value="item.value"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item>
           <el-date-picker style="width:410px;"
                           v-model.trim="orderDate"
@@ -64,22 +76,22 @@
                   @selection-change="handleSelectionChange"
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}">
           <el-table-column type="selection" width="50"></el-table-column>
-          <el-table-column align='center' prop="id" label="批次号"></el-table-column>
-          <el-table-column align='center' prop="organName" label="流程编号"></el-table-column>
-          <el-table-column align='center' prop="organName" label="钉钉流程编号"></el-table-column>
+          <el-table-column align='center' prop="batchNo" label="批次号"></el-table-column>
+          <el-table-column align='center' prop="financialProcessNo" label="流程编号"></el-table-column>
+          <el-table-column align='center' prop="dingtalkProcessNo" label="钉钉流程编号"></el-table-column>
           <el-table-column align='center' prop="organName" label="费用归属分部"></el-table-column>
-          <el-table-column align='center' prop="actualAmount" label="费用归属学校"></el-table-column>
-          <el-table-column align='center' prop="orderNo" label="申请人"></el-table-column>
-          <el-table-column align='center' prop="orderNo" label="费用项目"></el-table-column>
-          <el-table-column align='center' prop="orderNo" label="付款金额"></el-table-column>
-          <el-table-column align='center' prop="orderNo" label="付款时间"></el-table-column>
-          <el-table-column align='center' prop="studentPaymentOrder.expectAmount" label="事由"></el-table-column>
+          <el-table-column align='center' prop="cooperationName" label="费用归属学校"></el-table-column>
+          <el-table-column align='center' prop="applyUserId" label="申请人"></el-table-column>
+          <el-table-column align='center' prop="itemDetail" label="费用项目"></el-table-column>
+          <el-table-column align='center' prop="amount" label="付款金额"></el-table-column>
+          <el-table-column align='center' prop="paymentTime" label="付款时间"></el-table-column>
+          <el-table-column align='center' prop="cause" label="事由"></el-table-column>
           <el-table-column align='center' prop="memo" label="备注"></el-table-column>
-          <el-table-column align='center' width='220px' fixed="right" label="操作">
+          <el-table-column align='center' width='120px' fixed="right" label="操作">
             <template slot-scope="scope">
-              <!-- <el-button type="text">删除</el-button> -->
               <el-popconfirm
                 title="确定删除该条数据吗?"
+                :onConfirm="() => removeRecord(scope.row.id)"
               >
                 <el-button type="text" slot="reference">删除</el-button>
               </el-popconfirm>
@@ -93,28 +105,70 @@
                     @pagination="getList" />
       </div>
     </div>
+    <!-- <el-dialog
+      title="修改支出记录"
+      :visible.sync="visible"
+    >
+      <el-form :model="updateForm" :rules="updateRules" label-width="100px" ref="updateForm">
+        <el-form-item label="批次号" prop="batchNo">
+          <el-input v-model="ruleForm.batchNo"></el-input>
+        </el-form-item>
+        <el-form-item label="流程编号" prop="financialProcessNo">
+          <el-input v-model="ruleForm.batchNo"></el-input>
+        </el-form-item>
+        <el-form-item label="钉钉流程编号" prop="dingtalkProcessNo">
+          <el-input v-model="ruleForm.batchNo"></el-input>
+        </el-form-item>
+        <el-form-item label="费用归属分部" prop="organId">
+          <el-input v-model="ruleForm.batchNo"></el-input>
+        </el-form-item>
+        <el-form-item label="费用归属学校" prop="cooperationOrganId">
+          <el-input v-model="ruleForm.batchNo"></el-input>
+        </el-form-item>
+        <el-form-item label="费用归属学校" prop="cooperationOrganId">
+          <el-input v-model="ruleForm.batchNo"></el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="visible = false">取 消</el-button>
+        <el-button type="primary" @click="visible = false">确 定</el-button>
+      </span>
+    </el-dialog> -->
   </div>
 </template>
 <script>
 import pagination from '@/components/Pagination/index'
-import { studentRefundsQueryPage, applyRefundAudit } from '@/api/orderManager'
-import { getEmployeeOrgan } from '@/api/buildTeam'
+import { Export } from '@/utils/downLoadFile'
+import { getFinancialExpenditure, applyRefundAudit, removeFinancialExpenditure, updateFinancialExpenditure } from '@/api/orderManager'
+import { getEmployeeOrgan, getCooperation } from '@/api/buildTeam'
+import { getToken } from "@/utils/auth";
 import { paymentChannelStatus } from '@/utils/searchArray'
+import load from '@/utils/loading'
 import dayjs from 'dayjs'
 export default {
   components: { pagination },
   name: 'backMoney',
   data () {
     return {
+      visible: false,
+      detail: null,
       paymentChannelStatus: paymentChannelStatus,
       orderDate: null,
       searchForm: {
         startTime: null,
         endTime: null,
-        organId: null
+        organId: null,
+        search: '',
+        dingtalkProcessNo: '',
+        financialProcessNo: '',
+        cooperationOrganId: null,
+      },
+      headers: {
+        Authorization: getToken()
       },
       tableList: [],
       organList: [],
+      cooperations: [],
       pageInfo: {
         // 分页规则
         limit: 10, // 限制显示条数
@@ -131,6 +185,12 @@ export default {
         this.organList = res.data;
       }
     })
+    getCooperation({ 'rows': 1000, })
+    .then(res => {
+      if (res.code == 200) {
+        this.cooperations = res.data.rows;
+      }
+    })
     this.getList()
     var now = new Date();
     var startDate = dayjs().format('YYYY-MM-DD');
@@ -140,6 +200,41 @@ export default {
     this.orderDate.push(endDate)
   },
   methods: {
+    editRecord(detail) {
+      this.visible = true
+      this.detail = detail
+    },
+    removeRecord(id) {
+      removeFinancialExpenditure({
+          ids: id
+        })
+        this.getList()
+    },
+    beforeUpload(file) {
+      load.startLoading()
+    },
+    handleSuccess(response, file, fileList) {
+      load.endLoading()
+      console.log(response, file, fileList)
+      if(response.code == 200) {
+        this.$message.success('导入成功')
+        this.getList()
+      } else {
+        this.$message.error(response.msg)
+      }
+    },
+    handleError(err, file, fileList) {
+      load.endLoading()
+      console.log(err, file, fileList)
+    },
+    downloadFile() {
+      Export(this, {
+        url: '/api-web/import/downloadTemplate',
+        params: {
+          templateType: 'FINANCIAL_EXPENDITURE'
+        }
+      })
+    },
     search () {
       this.pageInfo.page = 1;
       this.getList()
@@ -175,7 +270,7 @@ export default {
       let params = this.searchForm
       params.rows = this.pageInfo.limit
       params.page = this.pageInfo.page
-      studentRefundsQueryPage(params).then(res => {
+      getFinancialExpenditure(params).then(res => {
         let result = res.data
         if (res.code == 200) {
           this.tableList = result.rows
@@ -193,16 +288,22 @@ export default {
       }
     },
     onReSet () {
-      this.orderDate = null
+    var now = new Date();
+    var startDate = dayjs().format('YYYY-MM-DD');
+    var endDate = dayjs().format('YYYY-MM-DD');
+    this.orderDate = [];
+    this.orderDate.push(startDate)
+    this.orderDate.push(endDate)
       this.searchForm = {
         startTime: null,
         endTime: null
       }
+      this.pageInfo.page = 1
+      this.getList()
     },
     onBatchDel() {
       // 批量删除
       const passed = this.passed
-      console.log(passed)
       if(passed.length <= 0) {
         this.$message.error('请至少选择一条数据')
         return
@@ -212,11 +313,17 @@ export default {
         cancelButtonText: "取消",
         type: "warning"
       }).then(() => {
-
+        removeFinancialExpenditure({
+          ids: this.passed.join(',')
+        })
+        this.getList()
       }).catch(() => { });
     }
   }
 }
 </script>
 <style lang="scss">
-</style>
+  .newBand{
+    display: inline-block;
+  }
+</style>

+ 69 - 45
src/views/businessManager/orderManager/salesList.vue

@@ -9,28 +9,28 @@
                class="searchForm"
                v-model.trim="searchForm">
         <el-form-item>
-          <el-input placeholder="请输入流水号、订单号" type="text"></el-input>
+          <el-input v-model.trim="searchForm.search" placeholder="请输入流水号、订单号" type="text"></el-input>
         </el-form-item>
         <el-form-item>
-          <el-select v-model.trim="searchForm.organId" clearable filterable placeholder="请选择所属分部">
+          <el-select multiple collapse-tags v-model="searchForm.organIdList" clearable filterable placeholder="请选择所属分部">
             <el-option v-for="(item,index) in organList" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-select clearable filterable placeholder="请选择所属学校" v-model="searchForm.schoolName">
-            <el-option label="1" value="1"></el-option>
+          <el-select clearable filterable placeholder="请选择所属学校" v-model="searchForm.schoolId">
+            <el-option v-for="(item,index) in cooperations" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item>
+        <!-- <el-form-item>
           <el-select clearable filterable placeholder="请选择销售类型" v-model="searchForm.saleType">
             <el-option label="1" value="1"></el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item>
+        </el-form-item> -->
+        <!-- <el-form-item>
           <el-select clearable filterable placeholder="请选择交易方式" v-model="searchForm.paymentChannel">
             <el-option v-for="item in paymentChannelStatus" :key="item.value" :label="item.label" :value="item.value"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item>
           <el-date-picker style="width:410px;"
                           v-model.trim="orderDate"
@@ -52,28 +52,28 @@
       <div class="tableWrap">
         <el-table :data='tableList' style="width: 100%"
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}">
-          <el-table-column align='center' width="150" prop="orderNo" label="交易流水号"></el-table-column>
+          <el-table-column align='center' width="150" prop="transNo" label="交易流水号"></el-table-column>
           <el-table-column align='center' prop="orderNo" label="订单号"></el-table-column>
           <el-table-column align='center' label="销售日期">
             <template slot-scope="scope">
-              {{scope.row.createTime | dateForMinFormat}}
+              {{scope.row.sellTime | dateForMinFormat}}
             </template>
           </el-table-column>
-          <el-table-column align='center' prop="studentPaymentOrder.expectAmount" label="销售类型"></el-table-column>
-          <el-table-column align='center' prop="studentPaymentOrder.expectAmount" label="商品名称"></el-table-column>
-          <el-table-column align='center' prop="studentPaymentOrder.expectAmount" label="数量"></el-table-column>
-          <el-table-column align='center' width="100" prop="studentPaymentOrder.expectAmount" label="应付金额(元)"></el-table-column>
-          <el-table-column align='center' width="100" prop="studentPaymentOrder.actualAmount" label="余额支付(元)"></el-table-column>
-          <el-table-column align='center' width="100" prop="studentPaymentOrder.expectAmount" label="现金支付(元)"></el-table-column>
-          <el-table-column align='center' width="100" prop="studentPaymentOrder.actualAmount" label="销售成本(元)"></el-table-column>
-          <el-table-column align='center' prop="user.username" label="学员姓名"></el-table-column>
+          <el-table-column align='center' prop="type" label="销售类型"></el-table-column>
+          <el-table-column align='center' prop="goodsName" label="商品名称"></el-table-column>
+          <el-table-column align='center' prop="num" label="数量"></el-table-column>
+          <el-table-column align='center' width="100" prop="expectAmount" label="应付金额(元)"></el-table-column>
+          <el-table-column align='center' width="100" prop="balanceAmount" label="余额支付(元)"></el-table-column>
+          <el-table-column align='center' width="100" prop="actualAmount" label="现金支付(元)"></el-table-column>
+          <el-table-column align='center' width="100" prop="sellCost" label="销售成本(元)"></el-table-column>
+          <el-table-column align='center' prop="userName" label="学员姓名"></el-table-column>
           <!-- <el-table-column align='center' prop="remark" label="退费说明"></el-table-column> -->
           <el-table-column align='center' prop="paymentChannel" label="交易方式">
             <template slot-scope="scope">{{ scope.row.paymentChannel | paymentChannelStatus }}</template>
           </el-table-column>
           <el-table-column align='center' prop="merNos" label="收款账户"></el-table-column>
           <el-table-column align='center' prop="organName" label="所属分部"></el-table-column>
-          <el-table-column align='center' prop="actualAmount" label="所属学校"></el-table-column>
+          <el-table-column align='center' prop="schoolName" label="所属学校"></el-table-column>
           <el-table-column align='center' fixed="right" label="操作">
             <template slot-scope="scope">
               <el-button @click="onBackMoney(scope.row)"  v-permission="'vipGroupManage/applyRefundAudit'" type="text">修改成本</el-button>
@@ -89,35 +89,39 @@
       <el-dialog title="修改成本" :visible.sync="backStatus" @close="onFormClose('ruleForm')" width="500px">
         <el-form :model="form" :rules="rules" ref="ruleForm">
           <el-form-item label="交易流水号" :label-width="formLabelWidth">
-            {{ form.name }}
+            {{ detail.transNo }}
           </el-form-item>
           <el-form-item label="订单号" :label-width="formLabelWidth">
-            {{ form.name }}
+            {{ detail.orderNo }}
           </el-form-item>
           <el-form-item label="销售日期" :label-width="formLabelWidth">
-            {{ form.name }}
+            {{ detail.sellTime | dateForMinFormat }}
           </el-form-item>
           <el-form-item label="学员姓名" :label-width="formLabelWidth">
-            {{ form.name }}
+            {{ detail.userName }}
           </el-form-item>
-          <el-form-item label="所属乐团" :label-width="formLabelWidth">
-            {{ form.name }}
+          <el-form-item label="所属分部" :label-width="formLabelWidth">
+            {{ detail.organName }}
           </el-form-item>
           <el-form-item label="所属学校" :label-width="formLabelWidth">
-            {{ form.name }}
+            {{ detail.schoolName }}
           </el-form-item>
           <el-form-item label="商品名称" :label-width="formLabelWidth">
-            {{ form.name }}
+            {{ detail.goodsName }}
           </el-form-item>
-          <el-form-item label="商品型号" :label-width="formLabelWidth">
+          <!-- <el-form-item label="商品型号" :label-width="formLabelWidth">
             {{ form.name }}
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="应付金额(元)" :label-width="formLabelWidth">
-            {{ form.name }}
+            {{ detail.expectAmount }}
           </el-form-item>
           <el-form-item label="成本(元)" prop="amount" :label-width="formLabelWidth">
              <!-- <el-input autocomplete="off"></el-input> -->
-             <el-autocomplete v-model="form.amount" class="inline-input" :fetch-suggestions="querySearch" placeholder="请输入成本"
+             <el-autocomplete
+              v-model="form.sellCost"
+              class="inline-input"
+              :fetch-suggestions="querySearch"
+              placeholder="请输入成本"
             ></el-autocomplete>
           </el-form-item>
         </el-form>
@@ -132,8 +136,8 @@
 </template>
 <script>
 import pagination from '@/components/Pagination/index'
-import { studentRefundsQueryPage, applyRefundAudit } from '@/api/orderManager'
-import { getEmployeeOrgan } from '@/api/buildTeam'
+import { getSellOrder, updateSellOrder } from '@/api/orderManager'
+import { getEmployeeOrgan, getCooperation } from '@/api/buildTeam'
 import { paymentChannelStatus } from '@/utils/searchArray'
 import dayjs from 'dayjs'
 export default {
@@ -143,10 +147,13 @@ export default {
     return {
       paymentChannelStatus: paymentChannelStatus,
       orderDate: null,
+      detail: {},
       searchForm: {
+        search: '',
+        schoolId: '',
         startTime: null,
         endTime: null,
-        organId: null
+        organIdList: []
       },
       tableList: [],
       organList: [],
@@ -161,12 +168,13 @@ export default {
       formLabelWidth: '150px',
       form: {
         id: null,
-        amount: null,
+        sellCost: null,
       },
       rules: {
-        amount: [{ required: true, message: '请输入金额', trigger: 'blur' }],
+        sellCost: [{ required: true, message: '请输入金额', trigger: 'input' }],
       },
-      restaurants: [{ value: '1000' }, { value: '100' }],
+      cooperations: [],
+      restaurants: [],
     }
   },
   mounted () {
@@ -175,6 +183,12 @@ export default {
         this.organList = res.data;
       }
     })
+    getCooperation({ 'rows': 1000, })
+    .then(res => {
+      if (res.code == 200) {
+        this.cooperations = res.data.rows;
+      }
+    })
     this.getList()
     var now = new Date();
     var startDate = dayjs().format('YYYY-MM-DD');
@@ -191,8 +205,7 @@ export default {
     onTeachingSubmit (formName, status) { // 添加数据
       this.$refs[formName].validate((valid) => {
         if (valid) {
-          this.form.status = status
-          applyRefundAudit(this.form).then(res => {
+          updateSellOrder(this.form).then(res => {
             if (res.code == 200) {
               this.$message.success('操作成功')
               this.backStatus = false
@@ -210,7 +223,10 @@ export default {
       let params = this.searchForm
       params.rows = this.pageInfo.limit
       params.page = this.pageInfo.page
-      studentRefundsQueryPage(params).then(res => {
+      getSellOrder({
+        ...params,
+        organIdList: [...this.searchForm.organIdList].join()
+      }).then(res => {
         let result = res.data
         if (res.code == 200) {
           this.tableList = result.rows
@@ -231,14 +247,21 @@ export default {
       this.orderDate = null
       this.searchForm = {
         startTime: null,
-        endTime: null
+        endTime: null,
+        organIdList: [],
+        search: '',
+        schoolId: '',
       }
     },
     querySearch(queryString, cb) {
-      let restaurants = this.restaurants;
+      let restaurants = []
+      try {
+        const json = JSON.parse(this.detail.sellCost2)
+        restaurants = [{value: String(json.sellCost)}, {value: String(json.sellcost2)}].filter(item => !!item)
+      } catch (error) {}
       // this.createFilter(queryString)
       let results = queryString ? restaurants.filter((restaurant) => {
-        return restaurant.value.toString().indexOf(queryString) === 0
+        return restaurant && restaurant.value && String(restaurant.value).indexOf(queryString) === 0
       }) : restaurants;
         // 调用 callback 返回建议列表的数据
       cb(results);
@@ -248,9 +271,10 @@ export default {
     },
     onBackMoney (row) { // 退费
       this.backStatus = true
+      this.detail = row
       this.form = {
         id: row.id,
-        amount: row.expectAmount.toString()
+        sellCost: String(row.sellCost)
       }
       // applyRefundAudit()
     }
@@ -258,4 +282,4 @@ export default {
 }
 </script>
 <style lang="scss">
-</style>
+</style>

+ 2 - 2
vue.config.js

@@ -18,10 +18,10 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // //  https://online.dayaedu.com
 // let target = 'https://online.dayaedu.com' //线上
 // let target = 'http://dyme.utools.club' //test环境
-// let target = 'http://192.168.3.139:8000' // 箭河
+let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.28:8000' //邹璇
 // let target = 'http://192.168.3.8:8000' //勇哥
-let target = 'http://dev.dayaedu.com' // 测试服
+// let target = 'http://dev.dayaedu.com' // 测试服
 // let target = 'http://192.168.3.196:8080' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {