wxy 4 years ago
parent
commit
40b0c21bac
1 changed files with 162 additions and 7 deletions
  1. 162 7
      src/views/order/out.vue

+ 162 - 7
src/views/order/out.vue

@@ -76,18 +76,76 @@
                 </el-col>
               </el-row>
               <el-row>
-                <el-button size="small" @click="addTab(editableTabsValue)" style="margin:10px 0px">
-                  + 添加支出
-                </el-button>
-                <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab">
+                <span v-if="detailForm.is_js == false">
+                  <el-button size="small" @click="addTab(editableTabsValue)" style="margin:10px 0px">
+                    + 添加支出
+                  </el-button>
+                </span>
+                <el-tabs v-model="editableTabsValue" type="card" :closable="!detailForm.is_js" @tab-remove="removeTab">
                   <el-tab-pane v-for="(item, index) in detailForm.out_bill" :key="index" :label="`支出${index + 1}`" :name="`${index + 1}`">
                     <el-col :span="24">
                       <el-form ref="form" label-width="90px" :inline="true">
                         <el-form-item label="支出项">
-                          <el-select v-model="item.item" placeholder="请选择支出项">
+                          <el-select v-model="item.cost_item" placeholder="请选择支出项" v-if="!item.is_js">
                             <el-option v-for="(item, index) in costList" :key="index" :label="item.label" :value="item.value"></el-option>
                           </el-select>
+                          <el-input v-model="item.cost_item" readonly v-else></el-input>
                         </el-form-item>
+
+                        <el-form-item label="供应商方式">
+                          <el-radio-group v-model="item.supply_type" @change="changeSupply" v-if="!item.is_js">
+                            <el-radio label="0">自运</el-radio>
+                            <el-radio label="1">供应商</el-radio>
+                            <el-radio label="2">第三方单位</el-radio>
+                          </el-radio-group>
+                          <!-- <el-radio v-else>{{ getSupStyle(value) }}</el-radio> -->
+                        </el-form-item>
+
+                        <span v-if="item.supply_type == '0'">
+                          <el-form-item label="车牌号">
+                            <el-select v-model="item.car_no" placeholder="车牌号" v-if="!item.is_js">
+                              <el-option v-for="item in carnoList" :key="item.label" :label="item.car_no" :value="item.id"> </el-option>
+                            </el-select>
+                            <el-input v-model="item.car_no" readonly v-else></el-input>
+                          </el-form-item>
+                        </span>
+                        <span v-else-if="item.supply_type == '1'">
+                          <el-form-item label="供应商">
+                            <el-select v-model="item.client" placeholder="供应商" @change="changeClient" v-if="!item.is_js">
+                              <el-option v-for="item in supClientList" :key="item.label" :label="item.name" :value="item.id"> </el-option>
+                            </el-select>
+                            <el-input v-model="item.client" readonly v-else></el-input>
+                          </el-form-item>
+
+                          <el-form-item label="合同">
+                            <el-select v-model="item.treaty" placeholder="合同" @change="changeTreaty" v-if="!item.is_js">
+                              <el-option v-for="item in treatyList" :key="item.label" :label="item.number" :value="item.id"> </el-option>
+                            </el-select>
+                            <!-- <el-input v-model="item.treaty" readonly v-else></el-input> -->
+                          </el-form-item>
+
+                          <el-form-item label="项目">
+                            <el-select
+                              v-model="item.item"
+                              placeholder="项目"
+                              @change="
+                                val => {
+                                  changeItem(val, index);
+                                }
+                              "
+                              v-if="!item.is_js"
+                            >
+                              <el-option v-for="item in itemList" :key="item.label" :label="item.name" :value="item.id"> </el-option>
+                            </el-select>
+                            <el-input v-model="item.item" readonly v-else></el-input>
+                          </el-form-item>
+                        </span>
+                        <span v-else-if="item.supply_type == '2'">
+                          <el-form-item label="车牌号">
+                            <el-input v-model="item.car_no" placeholder="车牌号" v-if="!item.is_js"></el-input>
+                            <el-input v-model="item.car_no" placeholder="车牌号" v-else readonly></el-input>
+                          </el-form-item>
+                        </span>
                         <el-form-item label="税率">
                           <el-select
                             v-model="item.taxes"
@@ -97,22 +155,30 @@
                                 selectChange(val, index);
                               }
                             "
+                            v-if="!item.is_js"
                           >
                             <el-option v-for="(item, index) in rateList" :key="index" :label="item.label" :value="item.label"></el-option>
                           </el-select>
+                          <el-input v-model="item.taxes" v-else readonly></el-input>
                         </el-form-item>
                         <el-form-item label="税前应付">
-                          <el-input v-model="item.sq_ys" @change="change(index)"></el-input>
+                          <el-input v-model="item.sq_ys" v-if="!item.is_js" @change="change(index)"></el-input>
+                          <el-input v-model="item.sq_ys" v-else readonly></el-input>
                         </el-form-item>
                         <el-form-item label="税后应付">
                           <el-input v-model="item.sh_ys" readonly></el-input>
                         </el-form-item>
                         <el-form-item label="税前实付">
-                          <el-input v-model="item.sq_ss" @change="toChange(index)"></el-input>
+                          <el-input v-model="item.sq_ss" v-if="!item.is_js" @change="toChange(index)"></el-input>
+                          <el-input v-model="item.sq_ss" v-else readonly></el-input>
                         </el-form-item>
                         <el-form-item label="税后实付">
                           <el-input v-model="item.sh_ss" readonly></el-input>
                         </el-form-item>
+                        <el-form-item label="备注">
+                          <el-input v-model="item.remark" type="textarea" :rows="2" v-if="!item.is_js"></el-input>
+                          <el-input v-model="item.remark" type="textarea" v-else readonly></el-input>
+                        </el-form-item>
                       </el-form>
                     </el-col>
                   </el-tab-pane>
@@ -141,6 +207,12 @@ const { mapActions: client } = createNamespacedHelpers('client');
 const { mapActions: dictionary } = createNamespacedHelpers('dictionary');
 const { mapActions: outBill } = createNamespacedHelpers('outBill');
 const { mapActions: user } = createNamespacedHelpers('user');
+// 项目表
+const { mapActions: project } = createNamespacedHelpers('project');
+// 合同
+const { mapActions: treaty } = createNamespacedHelpers('treaty');
+// 车牌表
+const { mapActions: car } = createNamespacedHelpers('car');
 // 分页
 import page from '@f/components/pagination.vue';
 //查询search
@@ -163,6 +235,14 @@ export default {
       clientList: [],
       //用户列表
       userList: [],
+      // 车牌号
+      carnoList: [],
+      // 供应商
+      supClientList: [],
+      // 合同
+      treatyList: [],
+      // 项目
+      itemList: [],
       sform: {},
       detailFields: [
         { label: '货物名', model: 'name' },
@@ -183,10 +263,14 @@ export default {
       cost3: 0,
       cost4: 0,
       detailForm: {},
+      //判断是否结算
+      judge: true,
     };
   },
   async created() {
     await this.search();
+    await this.searchOther();
+    // await this.isTreaty();
   },
   methods: {
     ...order(['query', 'create', 'update', 'delete', 'fetch']),
@@ -194,6 +278,9 @@ export default {
     ...dictionary(['tree']),
     ...outBill(['outBill']),
     ...user({ getUserList: 'query' }),
+    ...car({ carQuery: 'query' }),
+    ...treaty({ treatyQuery: 'query' }),
+    ...project({ projectQuery: 'query' }),
 
     async search({ skip = 0, limit = this.limit } = {}) {
       //查订单
@@ -233,15 +320,31 @@ export default {
         const { data, total } = res4;
         this.$set(this, `userList`, data);
       }
+      // 查供应商
+      const res5 = await this.clientQuery({ type: '供应商' });
+      if (this.$checkRes(res5)) {
+        const { data, total } = res5;
+        this.$set(this, `supClientList`, data);
+      }
+    },
+    // 查询其他信息
+    async searchOther() {
+      let res = await this.carQuery();
+      if (this.$checkRes(res)) {
+        this.$set(this, `carnoList`, res.data);
+      }
     },
     //查看
     async see(data) {
+      // console.log(data);
       const res = await this.fetch(data.id);
       if (res) this.$set(this, `detailForm`, res);
+      // console.log(this.detailForm);
       if (this.detailForm.out_bill.length > 0) {
         this.computRate();
       }
       this.dialog = true;
+      await this.isTreaty();
     },
     //添加选项卡
     addTab(value) {
@@ -310,6 +413,7 @@ export default {
     },
     //保存
     async save(data) {
+      // console.log(data);
       const res = await this.outBill(this.detailForm);
       if (this.$checkRes(res, '修改成功', res.errmsg || '修改失败')) {
         this.back();
@@ -334,6 +438,57 @@ export default {
       const obj = this.userList.find(i => i.id === data);
       if (obj) return obj.name;
     },
+    // 选择运输类型
+    // 选择自运&第三方时,路线赋值
+    changeSupply(value) {
+      // if (value == 0 || value == 2) {
+      //   this.$set(this.form, `route`, this.depositRoute);
+      // }
+      console.log(value);
+    },
+    // 选择供应商,查询合同
+    async changeClient(value) {
+      console.log('查合同');
+      console.log(value);
+      let res = await this.treatyQuery({ client: value });
+      if (this.$checkRes(res)) {
+        this.$set(this, `treatyList`, res.data);
+        console.log(this.treatyList);
+      }
+    },
+    // 选择合同,查询项目
+    async changeTreaty(value) {
+      let res = await this.projectQuery({ treaty: value });
+      if (this.$checkRes(res)) {
+        this.$set(this, `itemList`, res.data);
+      }
+    },
+    // 选择项目,赋值税率
+    async changeItem(value, index) {
+      if (index) {
+        const projects = this.itemList.find(item => item.id === value);
+        let outBill = this.detailForm.out_bill[index];
+        this.$set(outBill, `taxes`, projects.taxes);
+      }
+      return;
+    },
+    //选择供应商方式
+    getSupStyle(value) {
+      console.log(value);
+    },
+    //是否有供应商
+    async isTreaty() {
+      console.log(this.detailForm.out_bill);
+      let outList = this.detailForm.out_bill;
+      for (let item of outList) {
+        if (item.client) {
+          this.changeClient(item.client);
+        }
+      }
+      // if (this.detailForm.client) this.changeClient(this.detailForm.client);
+      // if (this.detailForm.treaty) this.changeTreaty(this.detailForm.treaty);
+      // if (this.detailForm.item) this.changeItem(this.detailForm.item);
+    },
   },
   computed: {
     ...mapState(['user']),