Browse Source

11/13 13:47

111
mo 4 năm trước cách đây
mục cha
commit
40113cc52e

+ 9 - 0
src/api/orderManager.js

@@ -233,3 +233,12 @@ export function getRouteOrderInfo (data) {
     params: data
   })
 }
+
+// 订单审核
+export function auditOutOrder (data) {
+  return request({
+    url: api + '/routeOrder/auditOutOrder',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}

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

@@ -5,14 +5,29 @@
     </h2>
     <div class="m-core">
       <div class="newBand"
-           @click="onOrderExport"
-           v-permission="{child: 'export/routeOrderList', parent: '/financeManager'}">报表导出</div>
-      <div class="newBand"
            v-permission="{child: 'routeOrder/add', parent: '/financeManager'}"
            @click="()=>{routeOrderStatus = true;isAdd=true}">添加订单</div>
       <div class="newBand"
+           @click="onOrderExport"
+           v-permission="{child: 'export/routeOrderList', parent: '/financeManager'}">报表导出</div>
+
+      <div class="newBand"
            v-permission="{child: 'adapay/exportBill', parent: '/financeManager'}"
            @click="onAdaPayExport">汇付订单导出</div>
+      <div class="newBand"
+           @click="onDownload"
+           v-permission="'import/downloadTemplate'">下载模板</div>
+      <el-upload v-permission="'import/routeOrder'"
+                 style="display: inline-block; margin: 0 10px;"
+                 action="/api-web/import/routeOrder"
+                 :show-file-list="false"
+                 :before-upload="beforeUpload"
+                 accept=".xlsx,.xls"
+                 :headers="headers"
+                 :on-error="handleError"
+                 :on-success="handleSuccess">
+        <div class="newBand">导入</div>
+      </el-upload>
       <!-- 搜索类型 -->
       <el-form :inline="true"
                class="searchForm"
@@ -335,9 +350,9 @@
           </el-form-item>
           <el-form-item label="销售金额"
                         v-if="form.applyType == 'SELL' || !isAdd"
-                        prop="goodsAmount"
+                        prop="saleAmount"
                         :label-width="formLabelWidth">
-            <el-input v-model="form.goodsAmount"
+            <el-input v-model="form.saleAmount"
                       @mousewheel.native.prevent
                       type="number"
                       :disabled="!isAdd"
@@ -434,6 +449,9 @@ import qs from "qs";
 import { getToken } from "@/utils/auth";
 import load from "@/utils/loading";
 import { orderServerList } from "@/utils/searchArray"
+import {
+  Export
+} from '@/utils/downLoadFile'
 let validAmount = (rule, value, callback) => {
   if (!value) {
     callback(new Error("请输入商品数量"));
@@ -496,7 +514,7 @@ export default {
         memo: null,
         payTime: null,
         serviceAmount: null,
-        goodsAmount: null,
+        saleAmount: null,
         schoolId: null,
         goodsList: [{
           id: null,
@@ -531,7 +549,10 @@ export default {
           { required: true, message: "请选择收入类型", trigger: "change" }
         ]
 
-      }
+      },
+      headers: {
+        Authorization: getToken()
+      },
     }
   },
   mounted () {
@@ -576,17 +597,18 @@ export default {
     onOrderSubmit (formName) { // 添加订单
       this.$refs[formName].validate(valid => {
         if (valid) {
-          if (!this.form.goodsAmount && !this.form.serviceAmount) {
+          if (!this.form.saleAmount && !this.form.serviceAmount) {
             this.$message.error('请输入销售收入或服务收入')
             return
           }
-          if (!this.form.goodsAmount) {
+          if (!this.form.saleAmount) {
             this.form.goodsList = null
           }
-          this.form.goodies = {}
+          let goodsJson = {}
           for (let i in this.form.goodsList) {
-            this.form.goodies[this.form.goodsList[i]['id']] = this.form.goodsList[i]['number']
+            goodsJson[this.form.goodsList[i]['id']] = this.form.goodsList[i]['number']
           }
+          this.form.goodsJson = JSON.stringify(goodsJson)
           routeOrderAdd(this.form).then(res => {
             if (res.code == 200) {
               this.$message.success("添加成功");
@@ -842,22 +864,26 @@ export default {
 
       getOrderInfo({ orderId: row.id }).then(res => {
         if (res.code === 200) {
-          let orderInfo = res.data.studentPaymentOrder;
-          this.changeOrgin(parseInt(orderInfo.organId))
-          this.form = {
-            organId: orderInfo.organId,
-            transNo: orderInfo.transNo,
-            type: "OTHER",
-            merNo: orderInfo.merNos,
-            actualAmount: orderInfo.actualAmount,
-            memo: orderInfo.memo,
-            payTime: orderInfo.payTime,
-            serviceAmount: res.data.serviceAmount,
-            goodsAmount: res.data.goodsAmount,
-            schoolId: parseInt(orderInfo.musicGroupId) || '    ',
-            goodsList: res.data.sellOrders.map(item => { return { id: item.goodsId, number: item.num } })
-          },
+          this.$nextTick(some => {
+            let orderInfo = res.data.studentPaymentOrder;
+            this.changeOrgin(parseInt(orderInfo.organId))
+            this.form = {
+              routeOrganId: orderInfo.organId,
+              transNo: orderInfo.transNo,
+              userId: orderInfo.userId,
+              type: "OTHER",
+              merNo: orderInfo.merNos,
+              actualAmount: orderInfo.actualAmount,
+              memo: orderInfo.memo,
+              payTime: orderInfo.payTime,
+              serviceAmount: res.data.serviceAmount,
+              saleAmount: res.data.saleAmount,
+              schoolId: parseInt(orderInfo.musicGroupId) || '    ',
+              goodsList: res.data.sellOrders.map(item => { return { id: item.goodsId, number: item.num } })
+            },
+              console.log(this.form)
             this.routeOrderStatus = true
+          })
         }
       })
     },
@@ -878,7 +904,42 @@ export default {
         })
         .catch();
       // orderDelete
-    }
+    },
+    onDownload () { // 下载模板
+      // // 报表导出
+      Export(this, {
+        url: "/api-web/import/downloadTemplate",
+        params: {
+          templateType: 'ROUTE_ORDER'
+        },
+        fileName: '财务管理导入模板.xlsx'
+      })
+    },
+    beforeUpload (file) {
+      // console.log(file.type)
+      // const isJPG = file.type === '.xlsx' || file.type === '.xls';
+      // // const isLt2M = file.size / 1024 / 1024 < 2;
+      // if (!isJPG) {
+      //   this.$message.error('上传头像图片只能是 JPG 格式!');
+      // }
+      // return isJPG;
+      // this.goodsLoading = true
+      load.startLoading()
+    },
+    handleSuccess (response, file, fileList) { // 导入商品
+      // 报表导出
+      load.endLoading()
+      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)
+    },
   }
 };
 </script>

+ 55 - 10
src/views/businessManager/orderManager/orderAudit/index.vue

@@ -8,8 +8,8 @@
       <el-form :inline="true"
                :model="searchForm">
         <el-form-item>
-          <el-input v-model.trim="searchForm.search"
-                    @keyup.enter.native="search"
+          <el-input v-model.trim="searchForm.transNo"
+                    @keyup.enter.native="transNo"
                     placeholder='订单编号'></el-input>
         </el-form-item>
 
@@ -27,7 +27,7 @@
         </el-form-item>
         <el-form-item>
           <el-select class="multiple"
-                     v-model.trim="searchForm.organId"
+                     v-model.trim="searchForm.type"
                      filterable
                      clearable
                      placeholder="请选择申请类型">
@@ -39,7 +39,7 @@
         </el-form-item>
         <el-form-item>
           <el-select class="multiple"
-                     v-model.trim="searchForm.organId"
+                     v-model.trim="searchForm.auditStatus"
                      filterable
                      clearable
                      placeholder="请选择审核状态">
@@ -49,6 +49,12 @@
                        :value="item.value"></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item>
+          <el-button @click="search"
+                     type="danger">搜索</el-button>
+          <el-button @click="onReSet"
+                     type="primary">重置</el-button>
+        </el-form-item>
       </el-form>
       <div class="tableWrap">
         <el-table style="width: 100%"
@@ -61,7 +67,7 @@
                            prop="organ.name"
                            label="分部"></el-table-column>
           <el-table-column align="center"
-                           prop="school.name"
+                           prop="cooperationOrgan.name"
                            label="学校名称"></el-table-column>
           <el-table-column align="center"
                            prop="serviceAmount"
@@ -85,7 +91,8 @@
                            label="状态">
             <template slot-scope="scope">
               <div>
-                {{scope.row.auditStatus?(scope.row.auditStatus| orderAuditType):'审核通过'}}
+                <p v-if="scope.row.auditStatus">{{scope.row.auditStatus| orderAuditType}}</p>
+                <p v-else>{{'审核通过'}}</p>
               </div>
             </template>
           </el-table-column>
@@ -131,7 +138,17 @@
                :visible.sync="orderVisible"
                width="600px">
       <orderAuditDetail :orderId='activceId'
-                        v-if="orderVisible" />
+                        :shopList="shopList"
+                        :organList="organList"
+                        ref="orderAuditDetail"
+                        v-if="orderVisible"
+                        @getList="getList" />
+      <span slot="footer"
+            class="dialog-footer">
+        <el-button @click="submit('REJECT')">驳回</el-button>
+        <el-button @click="submit('PASS')"
+                   type="primary">审核通过</el-button>
+      </span>
     </el-dialog>
   </div>
 </template>
@@ -141,10 +158,11 @@ import axios from "axios";
 import { getToken } from "@/utils/auth";
 import pagination from "@/components/Pagination/index";
 import load from "@/utils/loading";
-import { getEmployeeOrgan } from "@/api/buildTeam";
+import { getEmployeeOrgan, getAddress, getCooperation } from "@/api/buildTeam";
 import { orderServerList, orderAuditTypeList } from "@/utils/searchArray"
 import orderAuditDetail from './orderAuditDetail'
 import { getRouteOrderList } from '@/api/orderManager'
+import { goodsQuery } from '@/api/businessManager'
 import { formatData } from '@/utils/utils';
 import Tooltip from '@/components/Tooltip/index'
 export default {
@@ -152,8 +170,10 @@ export default {
   data () {
     return {
       searchForm: {
-        search: null,
-        organId: null
+        transNo: null,
+        organId: null,
+        auditStatus: null,
+        type: null
       },
       tableList: [{}],
       organList: [],
@@ -180,6 +200,12 @@ export default {
       }
     });
     // 获取分部
+    goodsQuery({ status: 1, rows: 99999 }).then(res => {
+      if (res.code === 200) {
+
+        this.shopList = res.data.rows
+      }
+    })
 
     this.init();
   },
@@ -190,6 +216,19 @@ export default {
     init () {
       this.getList()
     },
+    search () {
+      this.rules.page = 1;
+      this.getList()
+    },
+    onReSet () {
+      this.searchForm = {
+        transNo: null,
+        organId: null,
+        auditStatus: null,
+        type: null
+      }
+      this.search()
+    },
     getList () {
       let params = this.searchForm
       params.rows = this.rules.limit
@@ -198,12 +237,18 @@ export default {
         if (res.code == 200) {
           this.tableList = res.data.rows
           this.rules.total = res.data.total
+          this.orderVisible = false
+          console.log(this.orderVisible)
         }
+
       })
     },
     lookDetail (row) {
       this.activceId = row.id
       this.orderVisible = true
+    },
+    submit (str) {
+      this.$refs.orderAuditDetail.auditOutOrder(str)
     }
   }
 };

+ 98 - 17
src/views/businessManager/orderManager/orderAudit/orderAuditDetail.vue

@@ -4,20 +4,22 @@
       <div class="lookTitle">申请信息</div>
       <el-form-item label="申请人"
                     label-width="80px">
-        <div style="width:180px"></div>
+        <div style="width:180px">
+          <p v-if="form.operator&&form.operator.username">{{form.operator.username}}</p>
+        </div>
       </el-form-item>
       <el-form-item label="申请时间"
                     label-width="80px">
-        <div style="width:180px"></div>
+        <div style="width:180px">{{form.createTime}}</div>
       </el-form-item>
     </el-form>
     <el-form :model="form"
-             :rules="rules"
              ref="ruleForm">
       <div class="lookTitle">基本信息</div>
       <el-form-item label="所属分部"
                     prop="organId"
                     :label-width="formLabelWidth">
+        <!--    -->
         <el-select v-model.trim="form.organId"
                    :disabled="!isAdd"
                    @change="changeOrgin"
@@ -31,9 +33,9 @@
       <el-form-item label="所属学校"
                     prop="schoolId"
                     :label-width="formLabelWidth">
+        <!--    @change="checkSchool" -->
         <el-select v-model="form.schoolId"
                    :disabled="!isAdd"
-                   @change="checkSchool"
                    style="width: 100% !important;">
           <el-option v-for="(item,index) in cooperationList"
                      :key="index"
@@ -94,9 +96,9 @@
             </el-select>
           </el-form-item> -->
       <el-form-item label="销售金额"
-                    prop="goodsAmount"
+                    prop="saleAmount"
                     :label-width="formLabelWidth">
-        <el-input v-model="form.goodsAmount"
+        <el-input v-model="form.saleAmount"
                   @mousewheel.native.prevent
                   type="number"
                   :disabled="!isAdd"
@@ -111,7 +113,7 @@
                   v-model="form.serviceAmount"
                   placeholder="请输入收入金额" />
       </el-form-item>
-      <div v-if="form.applyType == 'SELL'">
+      <div>
         <div v-for="(goodsList, index) in form.goodsList"
              :key="index">
           <el-form-item :label="'商品名称' + (index + 1)"
@@ -122,7 +124,6 @@
             <el-select v-model.trim="goodsList.id"
                        filterable
                        :disabled="!isAdd"
-                       @change="checkgoods"
                        placeholder="请选择商品">
               <el-option v-for="(item,index) in shopList"
                          :key="index"
@@ -132,9 +133,8 @@
           </el-form-item>
           <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> -->
+                        :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;"
                       :disabled="!isAdd"
@@ -143,7 +143,7 @@
                       @mousewheel.native.prevent
                       v-model.number="goodsList.number"></el-input>
           </el-form-item>
-          <el-button icon="el-icon-minus"
+          <!-- <el-button icon="el-icon-minus"
                      :disabled="!isAdd"
                      v-if="form.goodsList.length > 1"
                      circle
@@ -152,7 +152,7 @@
                      :disabled="!isAdd"
                      @click.prevent="addGoodsList"
                      circle
-                     style="margin-left: 5px;"></el-button>
+                     style="margin-left: 5px;"></el-button> -->
         </div>
       </div>
       <div class="lookTitle">其它</div>
@@ -164,13 +164,26 @@
                   type="textarea"
                   :rows="3"></el-input>
       </el-form-item>
+
+    </el-form>
+    <div class="lookTitle"
+         v-if="">审核意见</div>
+    <el-form :model="submitForm"
+             ref="submitForm">
+      <el-form-item prop="memo"
+                    :rules=" [{ required: true, message:'请输入审核意见',trigger: 'blur'}]">
+        <el-input type='textarea'
+                  :rows="4"
+                  v-model="submitForm.memo"></el-input>
+      </el-form-item>
     </el-form>
   </div>
 </template>
 <script>
-import { getRouteOrderInfo } from '@/api/orderManager'
+import { getRouteOrderInfo, auditOutOrder } from '@/api/orderManager'
+import { getCooperation } from "@/api/buildTeam";
 export default {
-  props: ['orderId'],
+  props: ['orderId', 'shopList', 'organList'],
   data () {
     return {
       formLabelWidth: "100px",
@@ -192,19 +205,84 @@ export default {
         applyType: null,
         userId: ''
       },
-      isAdd: false
+      isAdd: false,
+      cooperationList: [],
+      submitForm: {
+        memo: ''
+      }
     }
   },
   mounted () {
     if (this.orderId) {
       getRouteOrderInfo({ id: this.orderId }).then(res => {
         if (res.code == 200) {
-
+          let orderInfo = res.data
+          this.form = {
+            createTime: orderInfo.createTime,
+            operator: orderInfo.operator,
+            organId: orderInfo.routeOrganId,
+            transNo: orderInfo.transNo,
+            type: "OTHER",
+            merNo: orderInfo.merNo,
+            actualAmount: orderInfo.actualAmount,
+            memo: orderInfo.memo,
+            payTime: orderInfo.payTime,
+            serviceAmount: orderInfo.serviceAmount,
+            saleAmount: orderInfo.saleAmount,
+            schoolId: orderInfo.schoolId,
+            userId: orderInfo.userId
+          }
+          this.$set(this.form, 'goodsList', this.getShopList(orderInfo.goodsJson))
+          console.log(this.form)
+          this.changeOrgin(orderInfo.routeOrganId)
         }
       })
     }
 
   },
+  methods: {
+    changeOrgin (val) {
+      // this.$set(this.form, 'schoolId', null)
+      if (val) {
+        getCooperation({ rows: 9999, organId: val }).then(res => {
+          if (res.code === 200) {
+            this.cooperationList = res.data.rows
+          }
+        })
+      }
+    },
+    getShopList (str) {
+      let arr = []
+      try {
+        const obj = JSON.parse(str)
+
+        // id: item.goodsId, number: item.num
+        for (let i in obj) {
+
+          arr.push({ id: parseInt(i), number: obj[i] })
+        }
+
+      } catch {
+      }
+      console.log(arr)
+      return arr
+    },
+    auditOutOrder (status) {
+      const that = this;
+      this.$refs.submitForm.validate(res => {
+        if (res) {
+          auditOutOrder({ auditStatus: status, memo: this.submitForm.memo, studentPaymentRouteOrderId: this.orderId }).then(res => {
+            if (res.code == 200) {
+              this.$message.success('审核成功')
+              that.$emit('getList')
+              return
+            }
+          })
+        }
+      })
+
+    }
+  }
 }
 </script>
 <style lang="scss" scoped>
@@ -216,4 +294,7 @@ export default {
   padding: 0 20px;
   margin-bottom: 20px;
 }
+.setWidth {
+  display: inline-block;
+}
 </style>

+ 2 - 2
vue.config.js

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