Kaynağa Gözat

Merge branch 'master' of http://git.cc-lotus.info/news-zhwl/cms-zhwl into master

wxy 4 yıl önce
ebeveyn
işleme
29946404c4

+ 2 - 0
src/store/index.js

@@ -30,6 +30,7 @@ import car from '@f/store/car/car';
 import daily from '@f/store/car/daily';
 import order from '@f/store/order/order';
 import transport from '@f/store/order/transport';
+import bill from '@f/store/bill/bill';
 import util from '@f/store/util';
 import { menuParams, setMenuParams } from '@f/store/auth/menuParams';
 
@@ -64,5 +65,6 @@ export default new Vuex.Store({
     inBill,
     outBill,
     orderPri,
+    bill,
   },
 });

+ 19 - 12
src/views/bill/client.vue

@@ -3,6 +3,7 @@
     <el-row>
       <el-col :span="24" class="info">
         <data-table
+          ref="table"
           :fields="fields"
           :data="list"
           :total="total"
@@ -12,7 +13,6 @@
           :select="true"
           :usePage="false"
           @handleSelect="toSelect"
-          :toFormat="toFormat"
         >
           <template #options="{item}">
             <template v-if="item.model == 'client'">
@@ -55,15 +55,18 @@ export default {
       //选择的数据列表
       selected: [],
       clientList: [],
+      client: undefined, //选择的客户
     };
   },
   created() {
     this.getOtherList();
   },
   methods: {
-    ...order(['clientCalculate', 'export']),
+    ...order(['clientCalculate', 'export', 'js']),
     ...client({ getClientList: 'query' }),
     async search(data) {
+      const { client } = data;
+      this.$set(this, `client`, client);
       const res = await this.clientCalculate(data);
       if (this.$checkRes(res)) this.$set(this, `list`, res.data);
     },
@@ -75,18 +78,22 @@ export default {
     async toExport() {
       const ids = this.selected.map(i => i._id);
       const res = await this.export({ ids });
-      console.log(res);
+      if (this.$checkRes(res)) window.open(res);
+      this.$confirm('是否结算选择的订单?', '结算提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      }).then(async () => {
+        const jsRes = await this.js({ ids, client: this.client, owner: this.user.id });
+        if (this.$checkRes(jsRes, '结算成功', '结算失败')) {
+          this.$refs.table.selectReset();
+          this.list = [];
+          this.selected = [];
+        }
+      });
     },
-    toFormat({ model, value }) {
-      console.log(model, value);
-      if (model === 'client') {
-        const res = this.clientList.find(f => f._id === value);
-        if (res) return res.name;
-      }
-    },
-
     async getOtherList() {
-      const cRes = await this.getClientList();
+      const cRes = await this.getClientList({ type: '客户' });
       if (this.$checkRes(cRes)) this.$set(this, `clientList`, cRes.data);
     },
   },

+ 32 - 29
src/views/bill/finished/client.vue

@@ -2,16 +2,12 @@
   <div id="client">
     <el-row>
       <el-col :span="24" class="info">
-        <data-table :fields="fields" :data="list" :total="total" :size="50" :step="10" @query="search" :select="true" @handleSelect="toSelect">
+        <data-table :fields="fields" :data="list" :opera="opera" :usePage="false" @query="search" @export="toExport">
           <template #options="{item}">
-            <template v-if="item.model == 'name'">
-              <el-option v-for="(item, index) in nameList" :key="index" :value="item.name" :label="item.name"></el-option>
+            <template v-if="item.model == 'client'">
+              <el-option v-for="(item, index) in clientList" :key="index" :value="item._id" :label="item.name"></el-option>
             </template>
           </template>
-          <template #filterEnd>
-            <el-button v-if="selected.length <= 0" type="primary" :disabled="true">未选择任何合同</el-button>
-            <el-button v-else type="primary" @click="toExport">导出选中合同</el-button>
-          </template>
         </data-table>
       </el-col>
     </el-row>
@@ -20,6 +16,9 @@
 
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: order } = createNamespacedHelpers('order');
+const { mapActions: bill } = createNamespacedHelpers('bill');
+const { mapActions: client } = createNamespacedHelpers('client');
 export default {
   metaInfo() {
     return { title: this.$route.meta.title };
@@ -29,38 +28,42 @@ export default {
   components: {},
   data: function() {
     return {
-      fields: [
-        { label: '客户', model: 'name', filter: 'select' },
-        { label: '订单号', model: 'num', filter: 'input' },
-        { label: '要求发货日期', model: 'time', filter: 'date' },
-        { label: '税后实收', model: 'after' },
-      ],
-      list: [
+      opera: [
         {
-          name: '张安',
-          num: '111',
+          label: '导出',
+          method: 'export',
         },
       ],
+      fields: [
+        { label: '客户', model: 'client', filter: 'select', format: true, notable: true },
+        { label: '创建时间', model: 'create_time', filter: 'date' },
+      ],
+      list: [],
       total: 0,
-      //选择的数据列表
-      selected: [],
       //用户列表
-      nameList: [{ name: '名字一' }],
+      clientList: [],
     };
   },
-  created() {},
+  created() {
+    this.getOtherList();
+  },
   methods: {
-    async search() {
-      console.log('查询');
-    },
-    //选中的数据
-    toSelect(data) {
-      console.log('选择');
-      this.selected = data;
+    ...bill(['query']),
+    ...order(['export']),
+    ...client({ getClientList: 'query' }),
+    async search(data) {
+      const res = await this.query(data);
+      if (this.$checkRes(res)) this.$set(this, `list`, res.data);
     },
     //导出
-    toExport() {
-      console.log('导出');
+    async toExport({ data }) {
+      const { ids } = data;
+      const res = await this.export({ ids });
+      if (this.$checkRes(res)) window.open(res);
+    },
+    async getOtherList() {
+      const cRes = await this.getClientList({ type: '客户' });
+      if (this.$checkRes(cRes)) this.$set(this, `clientList`, cRes.data);
     },
   },
   computed: {

+ 37 - 7
src/views/order/index-parts/form.vue

@@ -57,7 +57,7 @@
             <!-- <el-alert type="warning" title="某种货物需要按不同方式计费时,请将货物按计算方式分成多个货物录入" :closable="false"></el-alert> -->
           </el-col>
           <el-col :span="24" style="text-align:right">
-            <el-button type="primary" @click="addGoods">添加货物</el-button>
+            <el-button type="primary" @click="addGoods" v-if="camAddGoods()">添加货物</el-button>
           </el-col>
           <el-col :span="24">
             <el-table :data="form.goods" stripe border max-height="500px">
@@ -73,27 +73,47 @@
               </el-table-column>
               <el-table-column align="center" label="数量">
                 <template v-slot="{ row }">
-                  <el-input-number controls-position="right" v-model="row.number" :min="0"></el-input-number>
+                  <template v-if="canEdit(row)">
+                    <el-input-number controls-position="right" v-model="row.number" :min="0"></el-input-number>
+                  </template>
+                  <template v-else>
+                    {{ row.number }}
+                  </template>
                 </template>
               </el-table-column>
               <el-table-column align="center" label="重量(t)">
                 <template v-slot="{ row }">
-                  <el-input-number controls-position="right" v-model="row.weight" :min="0"></el-input-number>
+                  <template v-if="canEdit(row)">
+                    <el-input-number controls-position="right" v-model="row.weight" :min="0"></el-input-number>
+                  </template>
+                  <template v-else>
+                    {{ row.weight }}
+                  </template>
                 </template>
               </el-table-column>
               <el-table-column align="center" label="体积(m³)">
                 <template v-slot="{ row }">
-                  <el-input-number controls-position="right" v-model="row.volume" :min="0"></el-input-number>
+                  <template v-if="canEdit(row)">
+                    <el-input-number controls-position="right" v-model="row.volume" :min="0"></el-input-number>
+                  </template>
+                  <template v-else>
+                    {{ row.volume }}
+                  </template>
                 </template>
               </el-table-column>
               <el-table-column align="center" label="备注">
                 <template v-slot="{ row }">
-                  <el-input v-model="row.remark" type="textarea" :autosize="{ minRows: 1, maxRows: 3 }" placeholder="若需要备注请在此处填写"></el-input>
+                  <template v-if="canEdit(row)">
+                    <el-input v-model="row.remark" type="textarea" :autosize="{ minRows: 1, maxRows: 3 }" placeholder="若需要备注请在此处填写"></el-input>
+                  </template>
+                  <template v-else>
+                    {{ row.remark }}
+                  </template>
                 </template>
               </el-table-column>
               <el-table-column align="center" label="操作" width="70px">
-                <template v-slot="{ $index }">
-                  <el-link type="danger" :underline="false" @click="toDeletGoods($index)">删除</el-link>
+                <template v-slot="{ row, $index }">
+                  <el-link type="danger" v-if="canEdit(row)" :underline="false" @click="toDeletGoods($index)">删除</el-link>
                 </template>
               </el-table-column>
             </el-table>
@@ -171,6 +191,9 @@ export default {
      * 可以修改货物的判断函数
      */
     canEdit(data) {
+      // 是否结算,结算了也不蒙搞
+      const is_js = _.get(this.form, 'is_js');
+      if (is_js) return false;
       // 先判断发没发货,发货了就不能改了
       const sendList = _.get(this.form, 'sendList', []);
       if (sendList.length > 0) return false;
@@ -183,6 +206,13 @@ export default {
       const res = split.find(f => f.pid === _id);
       return !res;
     },
+    // 判断是否可以添加货物
+    camAddGoods() {
+      const order = _.cloneDeep(this.form);
+      const { split } = order;
+      const res = split.find(f => f.status !== '0');
+      return !res;
+    },
   },
   computed: {
     ...mapState(['user']),

+ 2 - 1
src/views/order/index.vue

@@ -33,7 +33,7 @@
         <order-form v-model="form" @toReturn="toReturn" :clientList="clientList" :userList="userList"></order-form>
         <el-row type="flex" justify="space-around">
           <el-col :span="4">
-            <el-button type="primary" @click="toSave">保存订单</el-button>
+            <el-button type="primary" @click="toSave" v-if="!form.is_js">保存订单</el-button>
           </el-col>
         </el-row>
       </div>
@@ -75,6 +75,7 @@ export default {
           confirm: true,
           type: 'danger',
           method: 'delete',
+          display: i => !i.is_js,
         },
         {
           label: '查看记录',