wxy 4 anos atrás
pai
commit
38940fbfdf

+ 1 - 1
src/views/client/addroute.vue

@@ -169,7 +169,7 @@ export default {
         this.$set(this, `endCityList`, startCity.children);
       }
     },
-    //过滤客户名
+    //过滤
     roleSelect({ model, value }) {
       if (model == 's_p' || model == 'e_p') {
         let arr = this.routeList.find(i => i.id === value);

+ 21 - 3
src/views/client/contract.vue

@@ -45,6 +45,9 @@
           <template v-if="item.model == 'status'">
             <el-option v-for="(item, index) in item.list" :key="index" :value="item.value" :label="item.label"></el-option>
           </template>
+          <template v-if="item.model == 'owner'">
+            <el-option v-for="(item, index) in userList" :key="index" :value="item.id" :label="item.name"></el-option>
+          </template>
         </template>
       </data-form>
     </el-dialog>
@@ -55,6 +58,7 @@
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: treaty } = createNamespacedHelpers('treaty');
 const { mapActions: client } = createNamespacedHelpers('client');
+const { mapActions: user } = createNamespacedHelpers('user');
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
@@ -65,6 +69,7 @@ export default {
   data: function() {
     return {
       fields: [
+        { label: '创始人', model: 'owner', notable: true, type: 'select', format: true },
         { label: '客户', model: 'client', filter: 'select', type: 'select', format: true },
         { label: '合同编号', model: 'number', filter: 'input' },
         { label: '甲方', model: 'jf' },
@@ -84,7 +89,6 @@ export default {
             { label: '禁用', value: '1' },
           ],
         },
-        { label: '创始人', model: 'owner', notable: true, noform: true },
       ],
       list: [],
       total: 0,
@@ -96,7 +100,8 @@ export default {
       dialog: false,
       form: {},
       rules: {
-        client: [{ required: true, message: '请输入客户名称', trigger: 'blur' }],
+        owner: [{ required: true, message: '请选择创始人', trigger: 'blur' }],
+        client: [{ required: true, message: '请选择客户名称', trigger: 'blur' }],
         number: [{ required: true, message: '请输入合同编号', trigger: 'blur' }],
         jf: [{ required: true, message: '请输入甲方名称', trigger: 'blur' }],
         yf: [{ required: true, message: '请输入乙方名称', trigger: 'blur' }],
@@ -109,6 +114,8 @@ export default {
       //客户列表
       nameList: [],
       selected: [],
+      //用户列表
+      userList: [],
     };
   },
   created() {
@@ -117,12 +124,19 @@ export default {
   methods: {
     ...treaty(['query', 'create', 'update', 'delete']),
     ...client({ cQuery: 'query', cCreate: 'create', cUpdate: 'update', cDelete: 'delete' }),
+    ...user({ getUserList: 'query' }),
     async search() {
       //查客户
       const res = await this.cQuery({ type: '客户' });
       if (this.$checkRes(res)) {
         this.$set(this, `nameList`, res.data);
       }
+      //查用户
+      const res1 = await this.getUserList();
+      if (this.$checkRes(res1)) {
+        this.$set(this, `userList`, res1.data);
+        // console.log(this.userList);
+      }
     },
     // 查合同 其他参数是...info,都包括在里面,可以输出看看
     async searchTreaty({ skip = 0, limit = 10, ...info } = {}) {
@@ -158,7 +172,7 @@ export default {
         }
       } else {
         //谁登陆owner就是谁,把id赋予上面就行,创建新的合同的时候必须添加一个owner创始人这是必填的
-        data.owner = this.user.id;
+        // data.owner = this.user.id;
         const res = await this.create(data);
         if (this.$checkRes(res, '创建成功', res.errmsg || '创建失败')) {
           this.searchTreaty({ client });
@@ -190,10 +204,14 @@ export default {
     toExport() {
       // console.log('导出');
     },
+    //过滤客户和用户
     roleSelect({ model, value }) {
       if (model == 'client') {
         let arr = this.nameList.find(i => i.id === value);
         if (arr) return arr.name;
+      } else if (model == 'owner') {
+        let user = this.userList.find(i => i.id === value);
+        if (user) return user.name;
       }
     },
   },

+ 3 - 1
src/views/order/inDetail.vue

@@ -285,6 +285,7 @@ export default {
     async searchWay() {
       let test1 = [];
       const res = await this.modeQuery({ route: this.wayValue });
+      // console.log(res.data);
       if (res) {
         this.$set(this, `wayList`, res.data);
         for (let i of this.wayList) {
@@ -296,6 +297,7 @@ export default {
             i.hh = `${i.price}-整车`;
           }
         }
+        // console.log(this.wayList);
       }
     },
     async searchTree() {
@@ -357,7 +359,7 @@ export default {
       let goods = this.detailForm.goods; //goods是个数组
       let in_bill = this.detailForm.in_bill; //in_bill是个数组
       for (let row1 of goods) {
-        console.log(row1);
+        // console.log(row1);
         if (row1.sq_ys) {
           num1 = _.round(num1 + row1.sq_ys, 2);
           num2 = _.round(num2 + row1.sh_ys, 2);

+ 94 - 13
src/views/order/transport/index.vue

@@ -111,6 +111,8 @@
                       </el-form-item>
                       <el-form-item label="线路">
                         <el-input v-model="form.route" placeholder="线路" readonly></el-input>
+
+                        <!-- {{ getRoute(form.route) }} -->
                       </el-form-item>
                     </span>
                     <span v-else-if="form.supply_type == '1'">
@@ -135,7 +137,7 @@
                         </el-select>
                       </el-form-item>
                       <el-form-item label="计费方式">
-                        <el-select v-model="form.supplier.mode" placeholder="计费方式">
+                        <el-select v-model="form.supplier.mode" placeholder="计费方式" @change="changeStyle">
                           <el-option v-for="item in modeList" :key="item.label" :label="item.name" :value="item.id"> </el-option>
                         </el-select>
                       </el-form-item>
@@ -159,8 +161,8 @@
               <el-col :span="24" class="list">
                 <el-col :span="24" class="rate">
                   <el-col :span="6" class="rateMoney">税前应收:{{ statNum.sq_ys || 0 }}</el-col>
-                  <el-col :span="6" class="rateMoney">税前实收:{{ statNum.sq_ss || 0 }}</el-col>
                   <el-col :span="6" class="rateMoney">税后应收:{{ statNum.sh_ys || 0 }}</el-col>
+                  <el-col :span="6" class="rateMoney">税前实收:{{ statNum.sq_ss || 0 }}</el-col>
                   <el-col :span="6" class="rateMoney">税后实收:{{ statNum.sh_ss || 0 }}</el-col>
                 </el-col>
                 <data-table :fields="detailFields" :data="goodsList" :usePage="false">
@@ -206,6 +208,8 @@ const { mapActions: treaty } = createNamespacedHelpers('treaty');
 const { mapActions: project } = createNamespacedHelpers('project');
 // 计算方式
 const { mapActions: mode } = createNamespacedHelpers('mode');
+//货物收入
+const { mapActions: inBill } = createNamespacedHelpers('inBill');
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
@@ -247,8 +251,8 @@ export default {
         { label: '重量(t)', model: 'weight' },
         { label: '体积(m²)', model: 'volume' },
         { label: '税前应收', model: 'sq_ys' },
-        { label: '税前实收', model: 'sq_ss' },
         { label: '税后应收', model: 'sh_ys' },
+        { label: '税前实收', model: 'sq_ss' },
         { label: '税后实收', model: 'sh_ss' },
       ],
       goodsList: [],
@@ -272,6 +276,8 @@ export default {
       depositRoute: '',
       num: true,
       newObj: {},
+      InGoodsList: [],
+      computedStyle: '',
     };
   },
   async created() {
@@ -288,6 +294,7 @@ export default {
     ...treaty({ treatyQuery: 'query' }),
     ...project({ projectQuery: 'query' }),
     ...mode({ modeQuery: 'query' }),
+    ...inBill({ inBillQuery: 'query' }),
     async search({ skip = 0, limit = this.limit, ...info } = {}) {
       //查订单
       let res = await this.transportQuery({ skip, limit, ...info });
@@ -321,12 +328,20 @@ export default {
       if (this.$checkRes(res)) {
         const { data, total } = res;
         this.$set(this, `routeList`, data);
+        // console.log(this.routeList);
       }
       // 查询税率
       res = await this.tree('sl');
       if (this.$checkRes(res)) {
         this.$set(this, `taxesList`, res);
       }
+      //查货物收入
+      res = await this.inBillQuery();
+      // console.log(res);
+      if (this.$checkRes(res)) {
+        this.$set(this, `InGoodsList`, res.data);
+        // console.log(this.InGoodsList);
+      }
     },
     // 发车
     async toExport() {
@@ -353,7 +368,8 @@ export default {
           this.$message.warning('有未填写 收入 的货物! 请先填写收入再装车');
           return;
         }
-        let depositRoute = `${routeData.s_p}-${routeData.s_c}至${routeData.e_p}-${routeData.e_c}`;
+        // let depositRoute = `${routeData.s_p}-${routeData.s_c}至${routeData.e_p}-${routeData.e_c}`;
+        let depositRoute = routeData.name;
         this.$set(this, `depositRoute`, depositRoute);
         this.$set(this, `goodsList`, goods);
         this.$set(this, `form`, data);
@@ -370,7 +386,6 @@ export default {
     // 生成装车单
     async onSubmit() {
       let data = this.form;
-      // console.log(data);
       data.goods = this.goodsList;
       let res = await this.transportCreate(data);
       if (this.$checkRes(res)) {
@@ -379,6 +394,7 @@ export default {
           type: 'success',
         });
       }
+      this.back();
     },
     // 过滤客户
     getclient(value) {
@@ -427,31 +443,85 @@ export default {
       let res = await this.modeQuery({ route: value });
       if (this.$checkRes(res)) {
         this.$set(this, `modeList`, res.data);
+        // console.log(this.modeList);
       }
       let item = this.supRouteList.find(i => i.id == value);
       if (item) {
         this.$set(this.form, `route`, item.name);
       }
     },
+    //改变计费方式
+    changeStyle(value) {
+      let style = this.modeList.find(i => i.id === value);
+      if (style.is_lf) {
+        this.computedStyle = `${style.price}-量份`;
+      } else if (style.send_type == '零担') {
+        this.computedStyle = `${style.price}-${style.send_type}-${style.computed_type}`;
+      } else {
+        this.computedStyle = `${style.price}-整车`;
+      }
+      if (this.computedStyle) {
+        let arr = _.split(this.computedStyle, '-', 3);
+        for (let item of this.goodsList) {
+          if (_.indexOf(arr, '量份') !== -1) {
+            item.hh = item.number;
+          } else if (_.indexOf(arr, '整车') !== -1) {
+            item.hh = 1;
+          } else if (_.indexOf(arr, '按体积') !== -1) {
+            item.hh = item.volume;
+          } else {
+            item.hh = item.weight;
+          }
+        }
+        // console.log(this.goodsList);
+      }
+      let newData = _.cloneDeep(this.goodsList);
+      for (let val of newData) {
+        val = this.changeCost(val);
+      }
+      this.$set(this, `goodsList`, newData);
+      this.$forceUpdate();
+    },
     // 选择税率
     changeTaxes(value) {
-      let newData = this.goodsList;
-      for (const val of newData) {
+      let newData = _.cloneDeep(this.goodsList);
+      // console.log(newData);
+      for (let val of newData) {
         val.taxes = value;
+        val = this.changeCost(val);
       }
-      this.goodsList = [];
+      // this.goodsList = [];
       this.$set(this, `goodsList`, newData);
+      this.$forceUpdate();
     },
     // 计算税收
     changeCost(data) {
-      data.sq_ys = data.cost;
-      data.sq_ss = data.cost;
-      data.sh_ys = _.round(data.cost * data.taxes, 2);
-      data.sh_ss = _.round(data.cost * data.taxes, 2);
+      if (data) {
+        if (data.hh) {
+          let num = Number(data.hh);
+          data.sq_ys = data.cost * num;
+          data.sq_ss = data.cost * num;
+          data.sh_ys = _.round(data.cost * data.taxes * num, 2);
+          data.sh_ss = _.round(data.cost * data.taxes * num, 2);
+        } else {
+          data.sq_ys = data.cost;
+          data.sq_ss = data.cost;
+          data.sh_ys = _.round(data.cost * data.taxes, 2);
+          data.sh_ss = _.round(data.cost * data.taxes, 2);
+        }
+      }
+      if (!data.cost) {
+        data.sq_ys = 0;
+        data.sq_ss = 0;
+        data.sh_ys = 0;
+        data.sh_ss = 0;
+      }
+      // console.log(data);
       return data;
     },
     // 计算税收总数
     searchSh() {
+      // console.log(this.goodsList);
       let data = {
         sq_ys: _.round(
           this.goodsList.reduce((p, n) => p + (n['sq_ys'] * 1 || 0), 0),
@@ -474,6 +544,7 @@ export default {
         this.goodsList.reduce((p, n) => p + (n['sq_ys'] * 1 || 0), 0),
         2
       );
+      // console.log(data);
       if (data) this.$set(this, `statNum`, data);
     },
     // 返回列表
@@ -493,7 +564,7 @@ export default {
     handleSelectionChange(val, index) {
       let obj = this.newObj;
       let numberIndex;
-      console.log(this.num);
+      // console.log(this.num);
       //如果返回来的数组为空,那么就是这个list全部取消
       if (val.length === 0) {
         let newArray = _.differenceWith(this.selected, this.list[index].split, _.isEqual);
@@ -522,6 +593,16 @@ export default {
       this.num = selection.length && selection.indexOf(row) !== -1;
       this.newObj = row;
     },
+    //过滤路线
+    getRoute(data) {
+      // console.log(data);
+      let routeIdList = _.split(data, '至', 2);
+      let newArray;
+      console.log(routeIdList);
+      if (routeIdList) {
+        newArray = routeIdList.map(item => {});
+      }
+    },
   },
   computed: {
     ...mapState(['user']),

+ 98 - 8
src/views/order/transport/sign.vue

@@ -3,6 +3,41 @@
     <el-row>
       <el-col :span="24" class="container">
         <el-row>
+          <el-row>
+            <el-col :span="24">
+              <el-form :inline="true" :model="searchForm">
+                <el-form-item label="如需查询请先选择发货方式" style="margin-right:150px">
+                  <el-radio-group v-model="searchForm.style" @change="radioChange">
+                    <el-radio label="0">自运</el-radio>
+                    <el-radio label="1">供应商</el-radio>
+                    <el-radio label="2">第三方单位</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+                <span v-if="searchForm.style == '0'">
+                  <el-form-item>
+                    <el-select v-model="searchForm.car" placeholder="请选择要查询的车牌号" clearable filterable>
+                      <el-option v-for="(i, index) in styleNum" :key="index" :label="i.label" :value="i.value"></el-option>
+                    </el-select>
+                  </el-form-item>
+                </span>
+                <span v-if="searchForm.style == '1'">
+                  <el-form-item>
+                    <el-select v-model="searchForm.client" placeholder="请选择要查询的供应商" clearable filterable>
+                      <el-option v-for="(i, index) in styleNum" :key="index" :label="i.label" :value="i.value"></el-option>
+                    </el-select>
+                  </el-form-item>
+                </span>
+                <span v-if="searchForm.style == '2'">
+                  <el-form-item>
+                    <el-input v-model="searchForm.car" placeholder="请填写要查询的第三方车牌号" clearable></el-input>
+                  </el-form-item>
+                </span>
+                <el-form-item v-if="searchForm.style">
+                  <el-button type="primary" @click="search">查询</el-button>
+                </el-form-item>
+              </el-form>
+            </el-col>
+          </el-row>
           <el-col :span="24">
             <el-table :data="list" border>
               <el-table-column prop="no" label="运输单号" sortable></el-table-column>
@@ -32,6 +67,11 @@
             </el-table>
           </el-col>
         </el-row>
+        <el-row>
+          <el-col :span="24" class="page">
+            <page @query="search" :limit="10" :total="total"></page>
+          </el-col>
+        </el-row>
       </el-col>
     </el-row>
     <el-dialog title="签收详情" :visible.sync="dialog" @close="toClose">
@@ -57,13 +97,15 @@ const { mapActions: car } = createNamespacedHelpers('car');
 
 // 装车表
 const { mapActions: transport } = createNamespacedHelpers('transport');
+// 分页
+import page from '@f/components/pagination.vue';
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
   name: 'sign',
   props: {},
-  components: {},
+  components: { page },
   data: function() {
     return {
       list: [],
@@ -84,6 +126,8 @@ export default {
       rules: {
         sign_time: [{ required: true, message: '请选择签收日期', trigger: 'blur' }],
       },
+      searchForm: {},
+      styleNum: [],
     };
   },
   async created() {
@@ -95,9 +139,19 @@ export default {
     ...car({ carQuery: 'query' }),
     ...transport({ transportNo: 'transportNo', transportCreate: 'create', transportQuery: 'query', transportSign: 'transportSign' }),
 
-    async search({ skip = 0, limit = 10, ...info } = {}) {
+    async search({ skip = 0, limit = 10 } = {}) {
+      //查车辆
+      const res2 = await this.carQuery();
+      if (this.$checkRes(res2)) {
+        const { data } = res2;
+        this.$set(this, `carList`, data);
+      }
       //查运输单
-      const res = await this.transportQuery();
+      let duplicate = _.cloneDeep(this.searchForm);
+      let { date, ...info } = duplicate;
+      let querys = { skip, limit, ...info };
+      // console.log(querys);
+      const res = await this.transportQuery(querys);
       if (this.$checkRes(res)) {
         const { data, total } = res;
         this.$set(this, `list`, data);
@@ -109,11 +163,47 @@ export default {
         const { data, total } = res1;
         this.$set(this, `nameList`, data);
       }
-      //查车辆
-      const res2 = await this.carQuery();
-      if (this.$checkRes(res2)) {
-        const { data } = res2;
-        this.$set(this, `carList`, data);
+    },
+    //选择发货方式
+    radioChange(value) {
+      let styleArray = this.list.filter(i => i.supply_type === value);
+      //自运的时候
+      if (value === '0') {
+        let arr = styleArray.map(i => {
+          return i.supplier.car_no;
+        });
+        let newArray = _.uniq(arr);
+        let arr1 = [];
+        for (let item of newArray) {
+          let aa = this.carList.find(i => i.id === item);
+          arr1.push({ label: aa.car_no, value: aa.id });
+        }
+        this.$set(this, `styleNum`, arr1);
+      }
+      //供应商的时候
+      else if (value === '1') {
+        let client = styleArray.map(i => {
+          return i.supplier.client;
+        });
+        let newArray = _.uniq(client);
+        let arr1 = [];
+        for (let item of newArray) {
+          let aa = this.nameList.find(i => i.id === item);
+          arr1.push({ label: aa.name, value: aa.id });
+        }
+        this.$set(this, `styleNum`, arr1);
+      }
+      //第三方的时候
+      else {
+        let arr = styleArray.map(i => {
+          return i.supplier.car_no;
+        });
+        let newArray = _.uniq(arr);
+        let arr1 = [];
+        for (let item of newArray) {
+          arr1.push({ label: item, value: item });
+        }
+        this.$set(this, `styleNum`, arr1);
       }
     },
     //关闭