snow 2 jaren geleden
bovenliggende
commit
13a1dc227d
48 gewijzigde bestanden met toevoegingen van 2481 en 559 verwijderingen
  1. 11 0
      src/apis/service/sellOut/beforeReturnGoodWorkOrder/index.js
  2. 3 2
      src/apis/service/sellOut/returnGoodWorkOrder/index.js
  3. 2 1
      src/apis/service/sellOut/sellAfterApply/index.js
  4. 3 3
      src/config/env.company.js
  5. 2 2
      src/config/env.development.js
  6. 6 0
      src/views/purchaseIn/purchaseOrder/columns.js
  7. 22 0
      src/views/purchaseIn/purchaseOrder/index.vue
  8. 6 0
      src/views/purchaseIn/wsmInOrder/columns.js
  9. 22 0
      src/views/purchaseIn/wsmInOrder/index.vue
  10. 45 0
      src/views/sellOut/beforeReturnGoodWorkOrder/columns.js
  11. 30 0
      src/views/sellOut/beforeReturnGoodWorkOrder/components/ShowDataTableColumns.js
  12. 178 0
      src/views/sellOut/beforeReturnGoodWorkOrder/components/wait-stockman.vue
  13. 36 0
      src/views/sellOut/beforeReturnGoodWorkOrder/components/work-order-mark.vue
  14. 164 0
      src/views/sellOut/beforeReturnGoodWorkOrder/detail.vue
  15. 468 0
      src/views/sellOut/beforeReturnGoodWorkOrder/index.vue
  16. 0 0
      src/views/sellOut/beforeReturnGoodWorkOrder/退货工单管理
  17. 6 0
      src/views/sellOut/deliveryWorkOrder/columns.js
  18. 20 10
      src/views/sellOut/deliveryWorkOrder/index.vue
  19. 51 73
      src/views/sellOut/returnGoodWorkOrder/columns.js
  20. 7 51
      src/views/sellOut/returnGoodWorkOrder/components/ShowDataTableColumns.js
  21. 19 18
      src/views/sellOut/returnGoodWorkOrder/components/wait-stockman.vue
  22. 23 3
      src/views/sellOut/returnGoodWorkOrder/components/work-order-mark.vue
  23. 9 18
      src/views/sellOut/returnGoodWorkOrder/detail.vue
  24. 16 41
      src/views/sellOut/returnGoodWorkOrder/index.vue
  25. 6 1
      src/views/sellOut/sellAfterApply/columns.js
  26. 1 1
      src/views/sellOut/sellAfterApply/components/set-work-order.vue
  27. 1 1
      src/views/sellOut/sellAfterApply/detail.vue
  28. 24 26
      src/views/sellOut/sellAfterApply/index.vue
  29. 6 0
      src/views/sellOut/sellReturn/columns.js
  30. 6 0
      src/views/sellOut/sellReturn/components/approval-results.vue
  31. 27 7
      src/views/sellOut/sellReturn/components/set-work-order.vue
  32. 23 4
      src/views/sellOut/sellReturn/index.vue
  33. 75 0
      src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/columns.js
  34. 30 0
      src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/components/ShowDataTableColumns.js
  35. 174 0
      src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/components/wait-stockman.vue
  36. 36 0
      src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/components/work-order-mark.vue
  37. 164 0
      src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/detail.vue
  38. 466 0
      src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/index.vue
  39. 0 0
      src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/退货工单管理
  40. 46 73
      src/views/supplierSellOut/supplierReturnWorkOrder/columns.js
  41. 7 51
      src/views/supplierSellOut/supplierReturnWorkOrder/components/ShowDataTableColumns.js
  42. 19 19
      src/views/supplierSellOut/supplierReturnWorkOrder/components/wait-stockman.vue
  43. 23 3
      src/views/supplierSellOut/supplierReturnWorkOrder/components/work-order-mark.vue
  44. 9 16
      src/views/supplierSellOut/supplierReturnWorkOrder/detail.vue
  45. 17 41
      src/views/supplierSellOut/supplierReturnWorkOrder/index.vue
  46. 154 77
      src/views/supplierSellOut/supplierSellReturn/components/set-work-order.vue
  47. 10 4
      src/views/supplierSellOut/supplierSellReturn/detail.vue
  48. 8 13
      src/views/supplierSellOut/supplierSellReturn/index.vue

+ 11 - 0
src/apis/service/sellOut/beforeReturnGoodWorkOrder/index.js

@@ -0,0 +1,11 @@
+// 物业管理员
+import http from '@/apis/axios'
+const api = 'admin/'
+export default {
+  // 分页查询
+  // list: (data, params) => http(api + 'after_child_list', data, 'post', params),
+  detail: (data, params) => http(api + 'reorder_child_info', data, 'post', params),
+  express: (data, params) => http(api + 'child_send', data, 'post', params),
+  list: (data, params) => http(api + 'reorder_child_list', data, 'post', params),
+  reorderChildReceive: (data, params) => http(api + 'reorder_child_receive', data, 'post', params)
+}

+ 3 - 2
src/apis/service/sellOut/returnGoodWorkOrder/index.js

@@ -4,7 +4,8 @@ const api = 'admin/'
 export default {
   // 分页查询
   // list: (data, params) => http(api + 'after_child_list', data, 'post', params),
-  detail: (data, params) => http(api + 'child_info', data, 'post', params),
+  detail: (data, params) => http(api + 'order_return_child_info', data, 'post', params),
   express: (data, params) => http(api + 'child_send', data, 'post', params),
-  list: (data, params) => http(api + 'reorder_child_list', data, 'post', params)
+  list: (data, params) => http(api + 'order_return_child_list', data, 'post', params),
+  setAfterChildRecord: (data, params) => http(api + 'set_order_return_child_record', data, 'post', params)
 }

+ 2 - 1
src/apis/service/sellOut/sellAfterApply/index.js

@@ -24,6 +24,7 @@ export default {
   express: (data, params) => http(api + 'setdelivery ', data, 'post', params),
   sendList: (data, params) => http(api + 'child_list ', data, 'post', params),
   reorderChildAdd: (data, params) => http(api + 'reorder_child_add ', data, 'post', params),
-  deliveryOrderReturnChild: (data, params) => http(api + 'delivery_order_return_child ', data, 'post', params)
+  deliveryOrderReturnChild: (data, params) => http(api + 'delivery_order_return_child ', data, 'post', params),
+  setOrderReturnChild: (data, params) => http(api + 'set_order_return_child ', data, 'post', params)
 }
 

+ 3 - 3
src/config/env.company.js

@@ -3,14 +3,14 @@ module.exports = {
   title: '采销平台',
   baseUrl: 'http://wx.wxhr.sit.futurelab.tv',
   api: {
-    // baseApi: 'http://stocknew.test241.wanyuhengtong.com/'
-    baseApi: 'http://stockwm.test241.wanyuhengtong.com/'
+    baseApi: 'http://stocknew.test241.wanyuhengtong.com/'
+    // baseApi: 'http://stockwm.test241.wanyuhengtong.com/'
   },
   webUrl: 'http://project.web.caixiao365.com/#/test-good-share?id=',
   fileURL: `https://api2.edu.futurelab.tv`,
   shareWebUrl: 'http://post.web.caixiao365.com/?prod=1&outCode=',
   // 分仓
-  wmUrl: 'http://stockwm.test241.wanyuhengtong.com',
+  // wmUrl: 'http://stockwm.test241.wanyuhengtong.com',
   appId: 'wx5ac3a2c2d72b6f26',
   ding: {
     // 企业id

+ 2 - 2
src/config/env.development.js

@@ -3,8 +3,8 @@ module.exports = {
   title: '采销平台',
   baseUrl: 'http://wx.wxhr.sit.futurelab.tv',
   api: {
-    // baseApi: 'http://stocknew.test241.wanyuhengtong.com/'
-    baseApi: 'http://stockwm.test241.wanyuhengtong.com/'
+    baseApi: 'http://stocknew.test241.wanyuhengtong.com/'
+    // baseApi: 'http://stockwm.test241.wanyuhengtong.com/'
   },
   webUrl: 'http://project.web.caixiao365.com/#/test-good-share?id=',
   fileURL: `https://api2.edu.futurelab.tv`,

+ 6 - 0
src/views/purchaseIn/purchaseOrder/columns.js

@@ -130,6 +130,12 @@ const columns = [
   //   label: "未发货数量",
   //   width: "105px",
   // },
+  {
+    prop: 'has_account',
+    label: '供应商端开启状态',
+    _slot_: 'has_account',
+    width: '120px'
+  },
   {
     prop: 'status',
     label: '状态',

+ 22 - 0
src/views/purchaseIn/purchaseOrder/index.vue

@@ -244,9 +244,30 @@
                   </el-select>
                 </el-input>
               </el-col>
+
+              <el-col :span="4" >
+                  <el-select style="width:100%;margin-left:10px;margin-top:10px" placeholder="供应商端开启状态" clearable size="mini"  v-model="parmValue.has_account"  
+                    @change="
+                        pageInfo.curr = 1;
+                        parmValue.page = 1;
+                        searchList();
+                      "
+                  >
+                    <el-option value="0" label="未开通" />
+                    <el-option value="1" label="已开通"/>
+                  </el-select>
+              </el-col> 
             </el-row>
           </div>
         </template>
+        
+        <template #has_account="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.has_account == '0' ? 'warning' : ''"
+          >{{ String(scope.row.has_account) === '1' ? '已开通' : '未开通' }}</el-tag>
+        </template>
+
         <template #good_name="{ scope }">
           <span>{{ scope.row.good_name }}</span>
           <span v-for="(si, i) in scope.row.speclist" :key="si.spec_id + i">
@@ -362,6 +383,7 @@ export default {
       wsm_code: [],
       // wsm_supplierNo: [],
       parmValue: {
+        has_account: "",
         order_source: "",
         orderCode: "", // 订单编号
         bk_code: "", // 备库编码

+ 6 - 0
src/views/purchaseIn/wsmInOrder/columns.js

@@ -10,6 +10,12 @@ export default [
     label: '采购单编号',
     width: '155px'
   },
+  {
+    prop: 'has_account',
+    label: '供应商端开启状态',
+    _slot_: 'has_account',
+    width: '120px'
+  },
   {
     prop: 'status',
     label: '状态',

+ 22 - 0
src/views/purchaseIn/wsmInOrder/index.vue

@@ -186,6 +186,20 @@
                   @searchChange="supplierChange"
                 />
              </el-col>
+
+
+             <el-col :span="4" >
+                  <el-select style="width:100%;margin-left:10px;margin-top:10px" placeholder="供应商端开启状态" clearable size="mini"  v-model="parmValue.c"  
+                    @change="
+                        pageInfo.curr = 1;
+                        parmValue.page = 1;
+                        searchList();
+                      "
+                  >
+                    <el-option value="0" label="未开通" />
+                    <el-option value="1" label="已开通"/>
+                  </el-select>
+              </el-col> 
             </el-row>
 
                   <!-- <el-col :span="4" style="width: 120px">
@@ -229,6 +243,13 @@
           ></el-tag>
         </template>
 
+        <template #has_account="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.has_account == '0' ? 'warning' : ''"
+          >{{ String(scope.row.has_account) === '1' ? '已开通' : '未开通' }}</el-tag>
+        </template>
+
 
         <template #order_source="{ scope }">
           <el-tag
@@ -362,6 +383,7 @@ export default {
       wsm_code: [],
       wsm_supplierNo: [],
       parmValue: {
+        has_account:"",
         order_source: "",
         order_type: "",
         // bk_code: "", // 备库编码

+ 45 - 0
src/views/sellOut/beforeReturnGoodWorkOrder/columns.js

@@ -0,0 +1,45 @@
+export default [
+  { type: 'selection', fixed: 'left', _noset_: true },
+  {
+    prop: 'saleReturnChildCode',
+    label: '退货工单编号',
+    width: '160'
+  },
+  {
+    prop: 'outChildCode',
+    label: '发货工单号',
+    span: 7
+  },
+  {
+    prop: 'status',
+    label: '状态',
+    _slot_: 'status',
+    span: 5
+  },
+  // {
+  //   prop: 'apply_name',
+  //   label: '创建人',
+  //   span: 5
+  // },
+  {
+    prop: 'addtime',
+    label: '创建时间',
+    span: 24
+  },
+  {
+    prop: '',
+    width: 50,
+    label: '操作',
+    fixed: 'right',
+    _noset_: true,
+    _slot_: 'operation'
+  }
+
+]
+// page	是	string	页码
+// size	是	string	页码数
+// cgdNo	是	string	采购单编号
+// returnCode	是	string	退货单编号
+// good_type_code	是	string	商品属性
+// good_name	是	string	商品名称
+// status	是	string	状态

+ 30 - 0
src/views/sellOut/beforeReturnGoodWorkOrder/components/ShowDataTableColumns.js

@@ -0,0 +1,30 @@
+const showColumns = [
+  {
+    prop: 'returnCode',
+    label: '退货工单号',
+    span: 7
+  },
+  {
+    prop: 'outChildCode',
+    label: '发货工单号',
+    span: 7
+  },
+  {
+    prop: 'status',
+    label: '状态',
+    _slot_: 'status',
+    span: 5
+  },
+  {
+    prop: 'apply_name',
+    label: '创建人',
+    span: 5
+  },
+  {
+    prop: 'addtime',
+    label: '创建时间',
+    span: 24
+  }
+]
+
+export { showColumns }

+ 178 - 0
src/views/sellOut/beforeReturnGoodWorkOrder/components/wait-stockman.vue

@@ -0,0 +1,178 @@
+<template>
+  <el-form
+    :model="ruleForm"
+    :rules="rules"
+    ref="ruleForm"
+    :size="'mini'"
+    label-width="90px"
+  >
+    <el-row>
+      <el-col :span="12"
+        ><el-form-item label="货物情况" prop="good_receive_type">
+          <el-select placeholder="货物情况" style="width:100%" v-model="ruleForm.good_receive_type">
+            <el-option v-for="opt in statusOptions" :key="opt.value" :value="opt.value" :label="opt.label" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="丢失数量" prop="loss_num">
+          <digital-input
+            :values="ruleForm.loss_num"
+            :placeholder="'丢失数量'"
+            :min="0"
+            :max="100000000000"
+            :position="'right'"
+            :precision="0"
+            :size="'mini'"
+            :controls="false"
+            :append="''"
+            :disabled="disabledLossField"
+            @reschange="number_change($event, 'loss_num')"
+          />
+        </el-form-item>
+      </el-col>
+
+      <el-col :span="12">
+        <el-form-item label="备注" prop="remark">
+          <el-input
+            placeholder="请输入备注"
+            type="textarea"
+            maxlength="100"
+            :size="'mini'"
+            v-model="ruleForm.remark"
+            clearable
+          >
+          </el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button
+            type="primary"
+            class="fr"
+            :size="'mini'"
+            @click="submitForm"
+            :loading="loading"
+            >保 存
+          </el-button>
+        </el-form-item>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+<script>
+
+import resToken from "@/mixins/resToken";
+import asyncRequest from "@/apis/service/sellOut/beforeReturnGoodWorkOrder";
+export default {
+  name: "allotFlow",
+  mixins: [resToken],
+  props: ["id", "sitem"],
+  computed: {
+    powers() {
+      const tran =
+        this.$store.getters.btnList.find((i) => i.menu_route == "allotDetail") || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+    ppowers() {
+      const tran =
+        this.$store.getters.roleProcess.find((i) => i.process_type === "DBD") || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+  },
+  data() {
+    return {
+      status: "",
+      ruleForm: {
+        good_receive_type: "0", //发货物流公司
+        remark: "", //物流单号
+        loss_num: "",
+      },
+      statusOptions:[
+        { value:'0', label:'库房未发货无需追回'},
+        { value:'1', label:'库房已发货已全部追回'},
+        { value:'2', label:'库房已发货已无法追回'},
+        { value:'3', label:'库房已发货已部分追回'},
+      ],
+      rules: {
+        good_receive_type: [
+          {
+            required: true,
+            message: "请选择货物情况",
+            trigger: "blur",
+          },
+        ],
+        loss_num: [
+          {
+            required: true,
+            trigger: "blur",
+            message: "请输入丢失数量",
+          },
+        ],
+        remark: [
+          {
+            required: true,
+            trigger: "blur",
+            message: "请输入备注"
+          },
+        ],
+      },
+    };
+  },
+  watch:{
+    'ruleForm.good_receive_type':{
+      handler(value){
+        if(value === '2'){
+        this.ruleForm.loss_num = this.sitem.return_num;
+      }else{
+        this.ruleForm.loss_num = "0"
+        }
+       },
+       immediate:true
+      }
+  },
+  computed:{
+    disabledLossField(){
+      const {good_receive_type} = this.ruleForm;
+      return ['0','1','2'].includes(good_receive_type)
+    }
+  },
+  methods: {
+    async number_change(e, key) {
+      this.ruleForm[key] = e + "" || "0";
+      this.$refs.ruleForm.validateField(key);
+    },
+    // 商品保存提交
+    async submitForm() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        console.log(valid)
+        if (valid) {
+          if (this.loading) {
+            return;
+          }
+          this.loading = true;
+          const model = JSON.parse(JSON.stringify(this.ruleForm));
+          let res = await asyncRequest.reorderChildReceive({id:this.sitem.id,...model});
+          this.loading = false;
+          
+          if (res && res.code === 0) {
+            this.showModelThis = false;
+            this.$emit("reload");
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    handleCompany(e) {
+      console.log(e);
+      this.ruleForm.good_receive_type = e && e.code ? [e.label] : [];
+      this.$refs.ruleForm.validateField("good_receive_type");
+    },
+  },
+};
+</script>

+ 36 - 0
src/views/sellOut/beforeReturnGoodWorkOrder/components/work-order-mark.vue

@@ -0,0 +1,36 @@
+<template>
+  <div class="work-order-mark__wrapper">
+    <vue-editor v-model="content" />
+    <el-button class="fr" type="primary" size="mini" style="margin:10px 0px" @click="() => onMark()">保存</el-button>
+  </div>
+</template>
+
+<script>
+import { VueEditor } from 'vue2-editor'
+import asyncRequest from '@/apis/service/sellOut/returnGoodWorkOrder'
+
+export default {
+  components: { VueEditor },
+  props: ['sitem'],
+  data: () => ({
+    content: '',
+    loading: false
+  }),
+  methods: {
+    async onMark() {
+      this.loading = true
+      const { code, message } = await asyncRequest.setAfterChildRecord({ record: this.content, id: this.sitem.id })
+      this.loading = false
+
+      switch (code) {
+        case 0:
+          this.$emit('reload')
+          break
+        default:
+          this.$message.warning(message)
+          break
+      }
+    }
+  }
+}
+</script>

+ 164 - 0
src/views/sellOut/beforeReturnGoodWorkOrder/detail.vue

@@ -0,0 +1,164 @@
+<template>
+  <div class="sellReturnDetail pagePadding">
+    <div style="width: 100%" v-if="powers.some((i) => i == '007')">
+      <el-tabs v-model="activeTabs">
+        <el-tab-pane label="业务详情" name="1">
+          <el-collapse v-model="activeNames" style="margin: -18px 0 0 0">
+            <el-collapse-item title="退货工单详情" name="0">
+              <show-data-table
+                style="margin: 0; padding: 0"
+                :sitem="sitem"
+                v-if="status"
+                :columns="showColumns"
+              >
+                <template slot="status">
+                  <el-tag
+                    :size="'mini'"
+                    v-text="
+                      (statusOptions.find((item) => item.value == sitem.status) || {})
+                        .label || '--'
+                    "
+                  ></el-tag>
+                </template>
+
+                <template slot="order_type">
+                  <el-tag
+                    :size="'mini'"
+                    v-text="
+                      (
+                        xs_order_type_options.find(
+                          (item) => item.id == sitem.order_type
+                        ) || {}
+                      ).label || '--'
+                    "
+                  ></el-tag>
+                </template>
+
+                <template slot="supplierName">
+                  <span>{{ sitem.supplierName }}</span>
+                  <el-popover placement="top" width="300" trigger="hover">
+                    <ul>
+                      <li>
+                        <span>供应商编号:</span><span>{{ sitem.supplierNo }}</span>
+                      </li>
+                    </ul>
+                    <i class="el-icon-warning-outline fr" slot="reference"></i>
+                  </el-popover>
+                </template>
+                <template slot="companyName">
+                  <span>{{ sitem.companyName }}</span>
+                  <el-popover placement="top" width="300" trigger="hover">
+                    <ul>
+                      <li>
+                        <span>业务公司编号:</span
+                        ><span>{{ sitem.companyNo }}</span>
+                      </li>
+                    </ul>
+                    <i class="el-icon-warning-outline fr" slot="reference"></i>
+                  </el-popover>
+                </template>
+
+                <template slot="customer">
+                  <span>{{ sitem.customer_name }}</span>
+                  <el-popover placement="top" width="300" trigger="hover">
+                    <ul>
+                      <li>
+                        <span>客户公司编号:</span
+                        ><span>{{ sitem.customer_code }}</span>
+                      </li>
+                    </ul>
+                    <i class="el-icon-warning-outline fr" slot="reference"></i>
+                  </el-popover>
+                </template>
+              </show-data-table>
+            </el-collapse-item>
+
+            <!-- v-if="sitem && String(sitem.status) === '12'" -->
+            <el-collapse-item title="待库管收货" name="1">
+              <wait-stockman :sitem="sitem" @reload="initData" />
+            </el-collapse-item>
+
+            <el-collapse-item title="退货工单标记" name="2">
+              <work-order-mark :sitem="sitem" @reload="initData" />
+            </el-collapse-item>
+          </el-collapse>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+<script>
+import mixinPage from "@/mixins/elPaginationHandle";
+import resToken from "@/mixins/resToken";
+import asyncRequest from "@/apis/service/sellOut/beforeReturnGoodWorkOrder";
+import { showColumns } from "./components/ShowDataTableColumns";
+import { xs_order_type_options } from "@/assets/js/statusList";
+import WaitStockman from "./components/wait-stockman.vue";
+import WorkOrderMark from "./components/work-order-mark.vue"
+import { mapGetters } from "vuex";
+
+export default {
+  name: "deliveryWorkOrderDetail",
+  mixins: [mixinPage, resToken],
+  components: { WaitStockman, WorkOrderMark },
+  computed: {
+    ...mapGetters(['isSupertube']),
+    powers() {
+      const {btnList} = this.$store.getters;
+      const tran = btnList.find((item) => item.menu_route == "beforeReturnGoodWorkOrderDetail" ) || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+  },
+  data() {
+    return {
+      activeTabs: "1",
+      showColumns: showColumns,
+      statusOptions: [
+        { value: "1", label: "待收货" },
+        { value: "2", label: "已收货" }
+      ],
+      xs_order_type_options,
+      sitem: null, //传给组件
+      activeNames: ["0", "1", "2", "3", "4", "5", "6"],
+      status: "", //存储详情接口状态
+      statusList: [
+        { value: "1", label: "待收货" },
+        { value: "2", label: "已收货" }
+      ],
+      newTime: "",
+      loading: false,
+      is_stock: "",
+      queryId: "",
+    };
+  },
+  mounted() {
+    this.queryId = this.$route.query.id;
+    this.initData();
+  },
+  methods: {
+    async initData() {
+      const { code, data, message } = await asyncRequest.detail({
+        id: this.queryId,
+      });
+      if (code === 0) {
+        const { is_stock, status } = data;
+        this.is_stock = is_stock;
+        this.status = status;
+        this.sitem = data;
+        this.getNewTime();
+      } else if (code >= 100 && code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(message);
+      }
+    },
+    getNewTime() {
+      this.newTime = new Date().valueOf();
+    },
+  },
+};
+</script>

+ 468 - 0
src/views/sellOut/beforeReturnGoodWorkOrder/index.vue

@@ -0,0 +1,468 @@
+<template>
+  <div class="sellReturn pagePadding">
+    <div
+      v-if=" powers.some((i) => i == '001')"
+    >
+      <ex-table
+        v-loading="loading"
+        :table="table"
+        :data="tableData"
+        :columns="columns"
+        :page="pageInfo"
+        :size="size"
+        @page-curr-change="handlePageChange"
+        @page-size-change="handleSizeChange"
+        @selection="handleSelection"
+        @screen-reset="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+        @screen-submit="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+      >
+        <template #table-header="{}">
+          <div style="width: 100%">
+            <el-row style="padding: 0 0 0 80px">
+              <el-col :span="24">
+                <!-- 时间区间 -->
+                <!-- <el-col :span="6" style="width: 303px; padding: 0 0 0 0px">
+                  <period-date-picker
+                    :type="1"
+                    :width="'135px'"
+                    :size="searchSize"
+                    :start="parmValue.start"
+                    :end="parmValue.end"
+                    @timeReturned="handleTime"
+                  />
+                </el-col> -->
+
+              <el-col :span="4" style="margin-right:10px">
+                <el-input v-model="parmValue.saleReturnChildCode"  placeholder="退货工单编号" size="mini"  clearable @change="pageInfo.curr=1;parmValue.page=1;searchList()" />
+              </el-col>
+
+              <el-col :span="4">
+                <el-select placeholder="退货工单状态" size="mini" clearable v-model="parmValue.status" @change="pageInfo.curr=1;parmValue.page=1;searchList()">
+                  <el-option label="待收货" value="1" />
+                  <el-option label="已收货" value="2" />
+                </el-select>
+              </el-col>
+              
+               <el-col
+                  :span="4"
+                  class="fr"
+                  style="width: 66px; padding: 0 0 0 10px"
+                >
+                  <el-button
+                    type="warning"
+                    class="fr"
+                    :size="searchSize"
+                    @click="restSearch"
+                  >
+                    重置
+                  </el-button>
+                </el-col>
+                <el-col :span="3" style="width: 66px; float: right">
+                  <el-button
+                    :size="searchSize"
+                    type="primary"
+                    style="float: right; margin-left: 5px"
+                    @click="searchList"
+                  >
+                    刷新
+                  </el-button>
+                </el-col>
+              </el-col>
+            </el-row>
+          </div>
+        </template>
+        <template #status="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.status == '0' ? 'warning' : ''"
+            v-text="
+              (statusOptions.find((item) => item.value == scope.row.status) || {})
+                .label || '--'
+            "
+          ></el-tag>
+        </template>
+
+        <template #type="{scope}">
+          <el-tag size="mini">{{ scope.row.type === '1' ? '未发货退货' : '售后退货' }}</el-tag>
+        </template>
+        
+        <template #order_type="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            v-text="
+              (
+                xs_order_type_options.find(
+                  (item) => item.id == scope.row.order_type
+                ) || {}
+              ).label || '--'
+            "
+          ></el-tag>
+        </template>
+
+        <template #order_source="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            v-text="
+              (
+              xs_order_source_options.find(
+                  (item) => item.id == scope.row.order_source
+                ) || {}
+              ).label || '--'
+            "
+          ></el-tag>
+        </template>
+
+        <template #operation="{ scope }">
+          <el-tooltip
+            v-if="powers.some((i) => i == '007')"
+            effect="dark"
+            content="详情"
+            placement="top"
+          >
+            <i
+              class="el-icon-view tb-icon"
+              @click="getRouter('beforeReturnGoodWorkOrderDetail', scope.row.id)"
+            ></i>
+          </el-tooltip>
+        </template>
+      </ex-table>
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+   <script>
+import mixinPage from "@/mixins/elPaginationHandle";
+import resToken from "@/mixins/resToken";
+import asyncRequest from "@/apis/service/sellOut/beforeReturnGoodWorkOrder";
+import { xs_order_type_options ,xs_order_source_options} from "@/assets/js/statusList";
+import companyHelper from "@/mixins/companyHelper"
+import urlConfig from "@/apis/url-config";
+import { mapGetters } from "vuex";
+import columns from "./columns";
+
+
+export default {
+  name: "sellReturn",
+  mixins: [mixinPage, resToken, companyHelper],
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      const tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "beforeReturnGoodWorkOrder"
+        ) || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+  },
+  data() {
+    return {
+      xs_order_type_options,
+      xs_order_source_options,
+      fileUrl: urlConfig.baseURL,
+      select: "outChildCode", //默认选择下拉框
+      s_input: "", //搜索框内容
+      select_list:[],
+      sitem: null,
+      // 状态
+      statusOptions: [
+        { value: "1", label: "待收货" },
+        { value: "2", label: "已收货" },
+      ],
+      loading: false,
+      showModel: false,
+      isDetail: false,
+      modelId: 0,
+      parmValue: {
+        saleReturnChildCode: "",
+        status: "",
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+        // order_type: "",
+      },
+      tableData: [],
+      passwordModel: false,
+      passwordModelId: 0,
+      isPasswordDetail: false,
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: columns,
+    };
+  },
+  mounted() {
+    const { back } = this.$route.query;
+    if (back) {
+      this.parmValue = JSON.parse(back);
+      const { page, size } = this.parmValue;
+      // this.parmValue.start = start || last_start;
+      // this.parmValue.end = end || last_end;
+      // if(this.parmValue.companyNo.length>0){
+      //     this.customerCode = [this.parmValue.companyNo] ;
+      // }
+
+      this.pageInfo = {
+        size: size,
+        curr: page,
+        total: 0,
+      };
+      //多选条件
+      this.select = this.parmValue.select;
+      // this.sselect = this.parmValue.sselect;
+      this.s_input = this.parmValue.s_input;
+    } else {
+      this.select = "outChildCode";
+      //  this.sselect = "创建时间"
+    }
+    this.searchList();
+  },
+
+  methods: {
+    async supplierChange(e) {
+      const { code, label } = e;
+      this.supplierNo = code ? [code] : [];
+      this.searchList()
+    },
+    customer_code_change(e) {
+      if (e && e.code) {
+        this.parmValue.customer_code = [e.code];
+      } else {
+        this.parmValue.customer_code = [];
+      }
+      this.searchList();
+    },
+    handleExport(){
+      if (!this.loading) {
+        this.loading = true;
+        let httpType = `aplication/zip`;
+  
+        let model = JSON.parse(JSON.stringify(this.parmValue));
+        delete model['s_input']
+
+        axios({
+          method: "post",
+          url: this.fileUrl +  "/admin/child_export",
+          responseType: "blob",
+          data: {
+            ...model,
+            [this.select]: this.s_input,
+            customer_code: Array.isArray(this.parmValue.customer_code) ? this.parmValue.customer_code[0] : this.parmValue.customer_code,
+            supplierNo: Array.isArray(this.supplierNo) ? this.supplierNo[0] : this.supplierNo,
+            needRela: true
+          },
+          headers: {
+            Accept: httpType,
+          },
+        })
+          .then((res) => {
+            if (res && res.status == 200 && res.data) {
+              let url = window.URL.createObjectURL(
+                new Blob([res.data], { type: httpType })
+              );
+              let link = document.createElement("a");
+              link.style.display = "none";
+              link.href = url;
+              let excelName = "发货工单.zip";
+              link.setAttribute("download", excelName);
+              document.body.appendChild(link);
+              link.click();
+              link.remove();
+              window.URL.revokeObjectURL(url); //释放掉blob对象
+              this.$message.success(`导出成功!`);
+              setTimeout(() => {
+                this.loading = false;
+              }, 500);
+            } else {
+              this.$message.error(res.data.message);
+              setTimeout(() => {
+                this.loading = false;
+              }, 500);
+            }
+          })
+          .catch((error) => {
+            console.log(error);
+            this.loading = false;
+          });
+      }
+    },
+    handleSelection(order){
+      const { list } = order
+      this.select_list = list;
+    },
+    getRouter(toRouter, queryId) {
+      if (toRouter && queryId) {
+        let model = {
+          id: queryId,
+        };
+
+        //有多选框的条件
+        this.parmValue.select = this.select;
+        // this.parmValue.sselect = this.sselect ;
+        this.parmValue.s_input = this.s_input;
+        let routerModel = {
+          options: JSON.parse(JSON.stringify(this.parmValue)),
+          router: this.$route.path,
+        };
+        model.preModel = JSON.stringify(routerModel);
+
+        this.routeGoto(toRouter, model);
+      } 
+    },
+    restSearch() {
+      this.s_input = ""; //清除输入框内容
+      this.select = "outChildCode"; //清除下拉框选中项
+
+      this.parmValue = {
+        order_type: "",
+        company_name: "", //申请人部门
+        good_code:"",
+        returnCode: "", //销售退货code
+        orderCode: "", //销售订单code
+        apply_name: "", //申请人
+        start: "",
+        end: "",
+        status: "", //节点状态
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+      };
+      
+      // 表格 - 分页
+      this.pageInfo = {
+        size: 15,
+        curr: 1,
+        total: 0,
+      };
+      this.searchList();
+    },
+
+    openModal(id, isDetail, sitem) {
+      this.showModel = true;
+      this.modelId = id;
+      this.isDetail = isDetail;
+      this.sitem = sitem;
+    },
+    async deleteById(id, status) {
+      await this.$confirm("确定要删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          const model = {
+            id: id,
+            status: status + '' === "1" ? "0" : "1",
+          };
+          const res = await asyncRequest.status(model);
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "删除成功",
+              message: "",
+            });
+            this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    async searchList() {
+      if (
+        (this.parmValue.start !== "" && this.parmValue.end === "") ||
+        (this.parmValue.start === "" && this.parmValue.end !== "")
+      ) {
+        this.$message.warning("时间区间不完整!");
+        return;
+      }
+      this.loading = true;
+
+      let model = JSON.parse(JSON.stringify(this.parmValue));
+      delete model['s_input']
+
+      const res = await asyncRequest.list({
+        ...model,
+        [this.select]: this.s_input,
+        customer_code: Array.isArray(this.parmValue.customer_code) ? this.parmValue.customer_code[0] : this.parmValue.customer_code,
+        supplierNo: Array.isArray(this.supplierNo) ? this.supplierNo[0] : this.supplierNo,
+        companyNo: this.currentCompany,
+        noRelation: true
+      });
+
+      if (res && res.code === 0 && res.data) {
+        this.tableData = res.data.list;
+        this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+
+    //物流公司查询
+    async handleCompany(e) {
+      console.log(e, "要求传快递简称,不传id"); //
+      if (e && e.code) {
+        this.parmValue.postCompany = [e.shortName];
+        this.parmValue.page = 1;
+      }
+      await this.searchList();
+    },
+
+    company_idsearchChange(e) {
+      const { code } = e;
+      this.parmValue.companyNo = code || "";
+      this.searchList()
+    },
+
+    // 时间
+    async handleTime(e) {
+      if (e.startTime !== "") {
+        this.parmValue.start = e.startTime;
+      } else {
+        this.parmValue.start = "";
+      }
+      if (e.endTime !== "") {
+        this.parmValue.end = e.endTime;
+      } else {
+        this.parmValue.end = "";
+      }
+      if (this.parmValue.start !== "" && this.parmValue.end !== "") {
+        this.parmValue.page = 1;
+        await this.searchList();
+      }
+    },
+  },
+};
+</script>
+   <style lang="scss" scoped>
+.sellReturn {
+}
+</style>
+   

+ 0 - 0
src/views/sellOut/beforeReturnGoodWorkOrder/退货工单管理


+ 6 - 0
src/views/sellOut/deliveryWorkOrder/columns.js

@@ -78,6 +78,12 @@ export default [
     label: '总数量',
     width: '70'
   },
+  {
+    prop: 'has_account',
+    label: '供应商端开启状态',
+    _slot_: 'has_account',
+    width: '120px'
+  },
   {
     prop: 'status',
     label: '状态',

+ 20 - 10
src/views/sellOut/deliveryWorkOrder/index.vue

@@ -211,8 +211,22 @@
                     ></el-button>
                   </el-input>
                 </el-col>
+
+                <el-col :span="4" style="margin-left: 10px;margin-top:10px">
+                  <el-select placeholder="供应商端开启状态" clearable size="mini"  v-model="parmValue.has_account"  
+                    @change="
+                        pageInfo.curr = 1;
+                        parmValue.page = 1;
+                        searchList();
+                      "
+                  >
+                    <el-option value="0" label="未开通" />
+                    <el-option value="1" label="已开通"/>
+                  </el-select>
+                </el-col>
             </el-row>
           </div>
+
         </template>
         <template #status="{ scope }">
           <el-tag
@@ -225,17 +239,13 @@
           ></el-tag>
         </template>
 
-        <!-- <template #send_status="{ scope }">
+        <template #has_account="{ scope }">
           <el-tag
             :size="tablebtnSize"
-            :type="scope.row.status == '0' ? 'warning' : ''"
-            v-text="
-              (sendStatusOptions.find((item) => item.value == scope.row.send_status) || {})
-                .label || '--'
-            "
-          ></el-tag>
-        </template> -->
-        
+            :type="scope.row.has_account == '0' ? 'warning' : ''"
+          >{{ String(scope.row.has_account) === '1' ? '已开通' : '未开通' }}</el-tag>
+        </template>
+
         <template #order_type="{ scope }">
           <el-tag
             :size="tablebtnSize"
@@ -327,7 +337,7 @@ export default {
       isDetail: false,
       modelId: 0,
       parmValue: {
-        // companyNo:"",
+        has_account:"",
         customer_code:[],
         returnCode: "", //销售退货code
         orderCode: "", //销售订单code

+ 51 - 73
src/views/sellOut/returnGoodWorkOrder/columns.js

@@ -1,92 +1,70 @@
 export default [
   { type: 'selection', fixed: 'left', _noset_: true },
   {
-    prop: 'outChildCode',
-    label: '退货工单编号',
+    prop: 'returnCode',
+    label: '售后申请单号',
     width: '160'
   },
   {
-    prop: 'orderCode',
+    prop: 'type',
     label: '工单退货类型',
-    width: '160'
-  },
-  {
-    prop: 'outCode',
-    label: '退货流程编码',
-    width: '160'
-  },
-  {
-    prop: 'companyNo',
-    label: '业务公司编号',
-    width: '160'
-  },
-  {
-    prop: 'companyName',
-    label: '发货工单编号',
-    width: '160'
-  },
-  {
-    prop: 'customer_code',
-    label: '业务公司编码',
-    width: '160'
-  },
-  {
-    prop: 'customer_name',
-    label: '业务公司名称',
-    width: '160'
-  },
-  {
-    prop: 'supplierNo',
-    label: '客户编码 ',
-    width: '160'
-  },
-  {
-    prop: 'supplierName',
-    label: '客户名称',
-    width: '160'
+    width: '160',
+    _slot_: 'type'
   },
   {
-    prop: 'supplierNo',
-    label: '下单数量 ',
-    width: '160'
+    prop: 'outChildCode',
+    label: '发货工单编号'
   },
   {
-    prop: 'spuCode',
-    label: '商品成本编码',
+    prop: 'outCode',
+    label: '发货申请编号',
     width: '160'
   },
   {
-    prop: 'skuCode',
-    label: '销售单价',
+    prop: 'status',
+    label: '状态',
+    _slot_: 'status'
+  },
+  // {
+  //   prop: 'companyNo',
+  //   label: '业务公司编号',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'companyName',
+  //   label: '业务公司名称',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'customer_code',
+  //   label: '客户编码',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'customerNname',
+  //   label: '客户名称',
+  //   width: '160'
+  // },
+  {
+    prop: 'send_num',
+    label: '下单数量',
     width: '160'
   },
-
-  {
-    prop: 'order_type',
-    label: '销售合计',
-    width: '85'
-  },
-  {
-    prop: 'order_source',
-    label: '确认单状态',
-    width: '85'
-  },
-  {
-    prop: 'num',
-    label: '总数量',
-    width: '70'
-  },
-  {
-    prop: 'addtime',
-    label: '下单时间',
-    sortable: true,
-    width: 150
-  },
-  {
-    prop: 'apply_name',
-    label: '申请人',
-    width: '80'
-  },
+  // {
+  //   prop: 'sale_price',
+  //   label: '销售单价',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'total_price',
+  //   label: '销售合计 ',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'addtime',
+  //   label: '下单时间',
+  //   width: '160'
+  // },
   {
     prop: '',
     width: 50,

+ 7 - 51
src/views/sellOut/returnGoodWorkOrder/components/ShowDataTableColumns.js

@@ -1,5 +1,10 @@
 
 const showColumns = [
+  {
+    prop: 'returnCode',
+    label: '退货工单号',
+    span: 7
+  },
   {
     prop: 'outChildCode',
     label: '发货工单号',
@@ -12,63 +17,14 @@ const showColumns = [
     span: 5
   },
   {
-    prop: 'order_type',
-    label: '订单来源',
-    _slot_: 'order_type',
-    span: 6
-  }, {
     prop: 'apply_name',
     label: '创建人',
-    span: 6
-  },
-
-  {
-    prop: 'supplierName',
-    label: '供应商公司',
-    _slot_: 'supplierName',
-    span: 12
-  },
-  {
-    prop: 'companyName',
-    label: '业务公司',
-    _slot_: 'companyName',
-    span: 12
-  },
-  {
-    prop: 'customer_code',
-    label: '客户公司',
-    _slot_: 'customer',
-    span: 12
-  },
-  {
-    prop: 'num',
-    label: '总数量',
-    span: 6
+    span: 5
   },
   {
     prop: 'addtime',
     label: '创建时间',
-    span: 6
-  },
-  {
-    prop: 'sendtime',
-    label: '发货时间',
-    span: 6
-  },
-  {
-    prop: 'post_name',
-    label: '物流公司',
-    span: 6
-  },
-  {
-    prop: 'post_code',
-    label: '物流编号',
-    span: 6
-  },
-  {
-    prop: 'post_fee',
-    label: '物流费用',
-    span: 6
+    span: 24
   }
 ]
 

+ 19 - 18
src/views/sellOut/returnGoodWorkOrder/components/wait-stockman.vue

@@ -8,14 +8,15 @@
   >
     <el-row>
       <el-col :span="12"
-        ><el-form-item label="货物情况" prop="post_name">
-          <el-select placeholder="货物情况" style="width:100%" value="0">
+        ><el-form-item label="货物情况" prop="good_receive_type">
+          <el-select placeholder="货物情况" style="width:100%" v-model="ruleForm.good_receive_type">
             <el-option v-for="opt in statusOptions" :key="opt.value" :value="opt.value" :label="opt.label" />
           </el-select>
         </el-form-item>
-        <el-form-item label="丢失数量" prop="post_fee">
+
+        <el-form-item label="丢失数量" prop="loss_num">
           <digital-input
-            :values="ruleForm.post_fee"
+            :values="ruleForm.loss_num"
             :placeholder="'丢失数量'"
             :min="0"
             :max="100000000000"
@@ -24,19 +25,19 @@
             :size="'mini'"
             :controls="false"
             :append="''"
-            @reschange="number_change($event, 'post_fee')"
+            @reschange="number_change($event, 'loss_num')"
           />
         </el-form-item>
       </el-col>
 
       <el-col :span="12">
-        <el-form-item label="备注" prop="post_code">
+        <el-form-item label="备注" prop="remark">
           <el-input
             placeholder="请输入备注"
             type="textarea"
             maxlength="100"
             :size="'mini'"
-            v-model="ruleForm.post_code"
+            v-model="ruleForm.remark"
             clearable
           >
           </el-input>
@@ -90,7 +91,7 @@ export default {
         }
       }
     };
-    const validate_post_fee = (rule, value, callback) => {
+    const validate_loss_num = (rule, value, callback) => {
       const { required } = rule;
       if (required && value === "") {
         callback(new Error("不能为空!"));
@@ -102,9 +103,9 @@ export default {
     return {
       status: "",
       ruleForm: {
-        post_name: [], //发货物流公司
-        post_code: "", //物流单号
-        post_fee: "",
+        good_receive_type: "0", //发货物流公司
+        remark: "", //物流单号
+        loss_num: "",
       },
       statusOptions:[
         { value:'0', label:'库房未发货无需追回'},
@@ -113,7 +114,7 @@ export default {
         { value:'3', label:'库房已发货已部分追回'},
       ],
       rules: {
-        post_name: [
+        good_receive_type: [
           {
             type: "array",
             required: true,
@@ -121,14 +122,14 @@ export default {
             trigger: "change",
           },
         ],
-        post_fee: [
+        loss_num: [
           {
             required: true,
-            validator: validate_post_fee,
+            validator: validate_loss_num,
             trigger: "blur",
           },
         ],
-        post_code: [
+        remark: [
           {
             required: true,
             trigger: "blur",
@@ -153,7 +154,7 @@ export default {
           this.loading = true;
           const model = JSON.parse(JSON.stringify(this.ruleForm));
           model.outChildCode = this.sitem.outChildCode;
-          model.post_name = model.post_name.toString();
+          model.good_receive_type = model.good_receive_type.toString();
           
           let res = await asyncRequest.express({list:[model]});
           this.loading = false;
@@ -176,8 +177,8 @@ export default {
     },
     handleCompany(e) {
       console.log(e);
-      this.ruleForm.post_name = e && e.code ? [e.label] : [];
-      this.$refs.ruleForm.validateField("post_name");
+      this.ruleForm.good_receive_type = e && e.code ? [e.label] : [];
+      this.$refs.ruleForm.validateField("good_receive_type");
     },
   },
 };

+ 23 - 3
src/views/sellOut/returnGoodWorkOrder/components/work-order-mark.vue

@@ -1,16 +1,36 @@
 <template>
   <div class="work-order-mark__wrapper">
     <vue-editor v-model="content" />
-    <el-button class="fr" type="primary" size="mini" style="margin:10px 0px">保存</el-button>
+    <el-button class="fr" type="primary" size="mini" style="margin:10px 0px" @click="() => onMark()">保存</el-button>
   </div>
 </template>
 
 <script>
 import { VueEditor } from 'vue2-editor'
+import asyncRequest from '@/apis/service/sellOut/returnGoodWorkOrder'
+
 export default {
   components: { VueEditor },
+  props: ['sitem'],
   data: () => ({
-    content: '退货工单详情'
-  })
+    content: '',
+    loading: false
+  }),
+  methods: {
+    async onMark() {
+      this.loading = true
+      const { code, message } = await asyncRequest.setAfterChildRecord({ record: this.content, id: this.sitem.id })
+      this.loading = false
+
+      switch (code) {
+        case 0:
+          this.$emit('reload')
+          break
+        default:
+          this.$message.warning(message)
+          break
+      }
+    }
+  }
 }
 </script>

+ 9 - 18
src/views/sellOut/returnGoodWorkOrder/detail.vue

@@ -73,12 +73,8 @@
               </show-data-table>
             </el-collapse-item>
 
-            <el-collapse-item title="待库管收货" name="1">
-              <wait-stockman />
-            </el-collapse-item>
-
-            <el-collapse-item title="退货工单标记" name="2">
-              <work-order-mark />
+            <el-collapse-item title="退货工单标记" name="1">
+              <work-order-mark :sitem="sitem" @reload="initData()" />
             </el-collapse-item>
           </el-collapse>
         </el-tab-pane>
@@ -95,14 +91,13 @@ import resToken from "@/mixins/resToken";
 import asyncRequest from "@/apis/service/sellOut/returnGoodWorkOrder";
 import { showColumns } from "./components/ShowDataTableColumns";
 import { xs_order_type_options } from "@/assets/js/statusList";
-import WaitStockman from "./components/wait-stockman.vue";
 import WorkOrderMark from "./components/work-order-mark.vue"
 import { mapGetters } from "vuex";
 
 export default {
   name: "deliveryWorkOrderDetail",
   mixins: [mixinPage, resToken],
-  components: { WaitStockman, WorkOrderMark },
+  components: { WorkOrderMark },
   computed: {
     ...mapGetters(['isSupertube']),
     powers() {
@@ -117,20 +112,16 @@ export default {
       activeTabs: "1",
       showColumns: showColumns,
       statusOptions: [
-        { value: "1", label: "待库管发货" },
-        { value: "2", label: "发货完成" },
-        { value: "3", label: "已收货" },
-        { value: '3', label: '供应商驳回,待供应商负责人审核'},
-        { value: '4', label: '已全部退货'},
+        { value: "1", label: "待收货" },
+        { value: "2", label: "已收货" }
       ],
       xs_order_type_options,
       sitem: null, //传给组件
       activeNames: ["0", "1", "2", "3", "4", "5", "6"],
       status: "", //存储详情接口状态
       statusList: [
-        { value: "1", label: "待验货" },
-        { value: "2", label: "待验货审核" },
-        { value: "3", label: "待业务审核" }
+        { value: "1", label: "待收货" },
+        { value: "2", label: "已收货" }
       ],
       newTime: "",
       loading: false,
@@ -140,12 +131,12 @@ export default {
   },
   mounted() {
     this.queryId = this.$route.query.id;
-    this.initalData();
+    this.initData();
   },
   methods: {
     async initData() {
       const { code, data, message } = await asyncRequest.detail({
-        outChildCode: this.queryId,
+        id: this.queryId,
       });
       if (code === 0) {
         const { is_stock, status } = data;

+ 16 - 41
src/views/sellOut/returnGoodWorkOrder/index.vue

@@ -28,24 +28,15 @@
           <div style="width: 100%">
             <el-row style="padding: 0 0 0 80px">
               <el-col :span="24">
-                <!-- 时间区间 -->
-                <el-col :span="6" style="width: 303px; padding: 0 0 0 0px">
-                  <period-date-picker
-                    :type="1"
-                    :width="'135px'"
-                    :size="searchSize"
-                    :start="parmValue.start"
-                    :end="parmValue.end"
-                    @timeReturned="handleTime"
-                  />
-                </el-col>
-
-              <el-col :span="4" style="margin-right:10px">
-                <el-input  placeholder="退货编号" size="mini" />
+              <el-col :span="4" style="margin-right:10px" >
+                <el-input v-model="parmValue.returnCode"  placeholder="售后申请单号" size="mini" clearable @change="pageInfo.curr=1;parmValue.page=1;searchList()" />
               </el-col>
 
               <el-col :span="4">
-                <el-select placeholder="退货单状态" size="mini" />
+                <el-select placeholder="退货工单状态" size="mini" clearable v-model="parmValue.status" @change="pageInfo.curr=1;parmValue.page=1;searchList()">
+                  <el-option label="待收货" value="1" />
+                  <el-option label="已收货" value="2" />
+                </el-select>
               </el-col>
               
                <el-col
@@ -87,16 +78,9 @@
           ></el-tag>
         </template>
 
-        <!-- <template #send_status="{ scope }">
-          <el-tag
-            :size="tablebtnSize"
-            :type="scope.row.status == '0' ? 'warning' : ''"
-            v-text="
-              (sendStatusOptions.find((item) => item.value == scope.row.send_status) || {})
-                .label || '--'
-            "
-          ></el-tag>
-        </template> -->
+        <template #type="{scope}">
+          <el-tag size="mini">{{ scope.row.type === '1' ? '未发货退货' : '售后退货' }}</el-tag>
+        </template>
         
         <template #order_type="{ scope }">
           <el-tag
@@ -133,7 +117,7 @@
           >
             <i
               class="el-icon-view tb-icon"
-              @click="getRouter('returnGoodWorkOrderDetail', scope.row.outChildCode)"
+              @click="getRouter('returnGoodWorkOrderDetail', scope.row.id)"
             ></i>
           </el-tooltip>
         </template>
@@ -152,6 +136,8 @@ import { xs_order_type_options ,xs_order_source_options} from "@/assets/js/statu
 import companyHelper from "@/mixins/companyHelper"
 import urlConfig from "@/apis/url-config";
 import { mapGetters } from "vuex";
+import columns from "./columns";
+
 
 export default {
   name: "sellReturn",
@@ -178,27 +164,16 @@ export default {
       sitem: null,
       // 状态
       statusOptions: [
-        { value: "0", label: "未拆单" },
-        { value: "1", label: "已拆单未发货" },
-        { value: "2", label: "部分发货" },
-        { value: '3', label: '全部发货' }
+        { value: "1", label: "待收货" },
+        { value: "2", label: "已收货" },
       ],
       loading: false,
       showModel: false,
       isDetail: false,
       modelId: 0,
       parmValue: {
-        // companyNo:"",
-        // customer_code:[],
-        // returnCode: "", //销售退货code
-        // orderCode: "", //销售订单code
-        // company_name: "",
-        // good_code:"",
-        // skuCode:"",
-        // apply_name: "", //申请人
-        // start: "",
-        // end: "",
-        // status: "", //节点状态
+        returnCode:"",
+        status: "",
         page: 1, // 页码
         size: 15, // 每页显示条数
         // order_type: "",

+ 6 - 1
src/views/sellOut/sellAfterApply/columns.js

@@ -88,7 +88,12 @@ const columns = [
   //   width:100,
 
   // },
-
+  {
+    prop: 'has_account',
+    label: '供应商端开启状态',
+    _slot_: 'has_account',
+    width: '120px'
+  },
   {
     prop: 'status',
     label: '状态',

+ 1 - 1
src/views/sellOut/sellAfterApply/components/set-work-order.vue

@@ -125,7 +125,7 @@ export default {
       })
     },
     async onSetOrderReturnChild() {
-      this.$refs.validate(async isValid => {
+      this.$refs.formRef.validate(async isValid => {
         if (!isValid) return
 
         const list = this.list.map(({ outChildCode, return_num, return_wsm_code }) => ({

+ 1 - 1
src/views/sellOut/sellAfterApply/detail.vue

@@ -323,7 +323,7 @@ export default {
     isHasPermission({ status, process }){
       return (
         status === String(this.sitem.status) 
-        && this.ppowers.includes(process) && !this.isSupertube
+        // && this.ppowers.includes(process) && !this.isSupertube
       )
     
     },

+ 24 - 26
src/views/sellOut/sellAfterApply/index.vue

@@ -127,6 +127,18 @@
                   ></el-button>
                 </el-input>
               </el-col>
+              <el-col :span="4" >
+                  <el-select style="width:100%;margin-left:10px" placeholder="供应商端开启状态" clearable size="mini"  v-model="parmValue.has_account"  
+                    @change="
+                        pageInfo.curr = 1;
+                        parmValue.page = 1;
+                        searchList();
+                      "
+                  >
+                    <el-option value="0" label="未开通" />
+                    <el-option value="1" label="已开通"/>
+                  </el-select>
+              </el-col>
 
               <el-col :span="2" style="width: 65px;float: right">
                 <el-button
@@ -187,10 +199,10 @@
                 </el-select>
               </el-col>
 
-              <el-col :span="4">
+              <el-col :span="3">
                 <search-supplier
                   :size="'mini'"
-                  style="width: 220px;margin-left:10px"
+                  style="width: 100%;margin:0px 10px"
                   :value="supplierNo"
                   :disabled="false"
                   :placeholder="'供应商名称'"
@@ -199,30 +211,7 @@
                   :noDisabled="true"
                   @searchChange="supplierChange"
                 />
-              </el-col>
-              <!-- 期望意愿 -->
-              <!-- <el-col :span="4" style="width: 130px">
-                <el-select
-                  :size="searchSize"
-                  v-model="parmValue.except_code"
-                  clearable
-                  placeholder="期望意愿"
-                  @change="
-                    pageInfo.curr = 1;
-                    parmValue.page = 1;
-                    searchList();
-                  "
-                >
-                  <el-option
-                    v-for="item in expectOptions"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  >
-                  </el-option>
-                </el-select>
-                padding: 0 0 0 10px
-              </el-col> -->
+              </el-col>s
             </el-row>
           </div>
         </template>
@@ -239,6 +228,14 @@
           ></el-tag>
         </template>
 
+        <template #has_account="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.has_account == '0' ? 'warning' : ''"
+          >{{ String(scope.row.has_account) === '1' ? '已开通' : '未开通' }}</el-tag>
+        </template>
+
+
         <template #order_source="{ scope }">
           <el-tag
             :size="tablebtnSize"
@@ -391,6 +388,7 @@ export default {
       isDetail: false,
       modelId: 0,
       parmValue: {
+        has_account: "",
         order_source: "",
         good_code: "", //商品编码
         orderCode: "",

+ 6 - 0
src/views/sellOut/sellReturn/columns.js

@@ -10,6 +10,12 @@ export default [
     label: '销售订单编号',
     width: '160'
   },
+  {
+    prop: 'has_account',
+    label: '供应商端开启状态',
+    _slot_: 'has_account',
+    width: '120px'
+  },
   {
     prop: 'status',
     label: '状态',

+ 6 - 0
src/views/sellOut/sellReturn/components/approval-results.vue

@@ -36,6 +36,12 @@
         <el-button type="primary" @click="submit">提交</el-button>
       </div>
     </el-form-item> -->
+
+    <el-form-item>
+      <div style="width:100%;display:flex;justify-content:flex-end">
+        <el-button type="primary" @click="submit">提交</el-button>
+      </div>
+    </el-form-item>
   </el-form>
 </template>
 <script>

+ 27 - 7
src/views/sellOut/sellReturn/components/set-work-order.vue

@@ -64,7 +64,7 @@
     </template>
 
     <template v-else>
-      <el-form :model="formData" :rules="rules">
+      <el-form ref="formRef" :model="formData" :rules="rules">
         <el-form-item prop="return_wsm_code" label="销售仓" style="display:flex">
           <search-stock
             style="width:300px"
@@ -77,7 +77,7 @@
             :company-no="currentCompany"
             :disbaled="!currentCompany"
             :names="''"
-            @searchChange="onStockChange($event, scope.$index, true)"
+            @searchChange="onStockChange1($event)"
           />
         </el-form-item>
       </el-form>
@@ -99,20 +99,26 @@ export default {
     list: [],
     loading: false,
     subLoading: false,
-    companyNo: ''
+    companyNo: '',
+    formData: {
+      return_wsm_code: '',
+      return_num: '0'
+    }
   }),
   computed: {
     state() {
       const { order_type, send_type } = this.sitem || {}
+
       return ({
-        isHasWorkOrder: true, // true:有发货工单 false:无发货工单
+        isHasWorkOrder: this.list && this.list.length !== 0, // true:有发货工单 false:无发货工单
         isStock: String(order_type) === '1', // true:库存品 false:非库存品/采返商品/报备商品
         isHasAddr: String(send_type) === '1' // true:有地址 false:无地址
       })
     },
     isSalesWarehouselist() {
       const { isHasAddr, isHasWorkOrder, isStock } = this.state
-      // 有地址 && 有发货工单 && 库存品
+      if (!isHasWorkOrder) return false
+      // 有发货工单 && 库存品
       if (isHasAddr && isHasWorkOrder & isStock) return true
       // 有地址 && 不是库存品
       if (isHasAddr && !isStock) return true
@@ -141,6 +147,10 @@ export default {
     }
   },
   methods: {
+    onStockChange1({ code }) {
+      this.formData.return_wsm_code = code ? [code] : ''
+      this.$nextTick(() => this.$refs.formRef.validate())
+    },
     async onRequestSendList() {
       const { data, code, message } = await asyncRequest.sendList({ orderCode: this.sitem.orderCode })
       switch (code) {
@@ -180,8 +190,18 @@ export default {
         }))
 
         const salesWarehouseParams = { list, type: '1', returnCode: this.sitem.returnCode }
-        const params = { list: [{ ...this.formData }], type: '1', returnCode: this.sitem.returnCode }
-        const { code, message } = await asyncRequest.reorderChildAdd(this.isSalesWarehouselist ? salesWarehouseParams : params)
+        const parms = {
+          list: [{
+            return_wsm_code: Array.isArray(this.formData.return_wsm_code)
+              ? this.formData.return_wsm_code[0]
+              : this.formData.return_wsm_code,
+            return_num: this.sitem.num
+          }],
+          returnCode: this.sitem.returnCode,
+          type: '1'
+        }
+
+        const { code, message } = await asyncRequest.reorderChildAdd(this.isSalesWarehouselist ? salesWarehouseParams : parms)
         this.subLoading = false
         switch (code) {
           case 0:

+ 23 - 4
src/views/sellOut/sellReturn/index.vue

@@ -201,6 +201,19 @@
                     ></el-button>
                   </el-input>
                 </el-col>
+
+                <el-col :span="4" >
+                  <el-select style="width:100%;margin-left:10px;margin-top:10px" placeholder="供应商端开启状态" clearable size="mini"  v-model="parmValue.has_account"  
+                    @change="
+                        pageInfo.curr = 1;
+                        parmValue.page = 1;
+                        searchList();
+                      "
+                  >
+                    <el-option value="0" label="未开通" />
+                    <el-option value="1" label="已开通"/>
+                  </el-select>
+              </el-col>
             </el-row>
           </div>
         </template>
@@ -241,6 +254,13 @@
           ></el-tag>
         </template>
 
+        <template #has_account="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.has_account == '0' ? 'warning' : ''"
+          >{{ String(scope.row.has_account) === '1' ? '已开通' : '未开通' }}</el-tag>
+        </template>
+
         <template #operation="{ scope }">
           <el-tooltip
             v-if="powers.some((i) => i == '007')"
@@ -278,10 +298,8 @@ export default {
   computed: {
     ...mapGetters(["tablebtnSize", "searchSize", "size"]),
     powers() {
-      const tran =
-        this.$store.getters.btnList.find(
-          (item) => item.menu_route == "sellReturn"
-        ) || {};
+      const { btnList } = this.$store.getters
+      const tran = btnList.find((item) => item.menu_route == "sellReturn") || {};
       const { action } = tran ?? {};
       return action ?? [];
     },
@@ -315,6 +333,7 @@ export default {
       isDetail: false,
       modelId: 0,
       parmValue: {
+        has_account: "",
         customer_code:[],
         returnCode: "", //销售退货code
         orderCode: "", //销售订单code

+ 75 - 0
src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/columns.js

@@ -0,0 +1,75 @@
+export default [
+  { type: 'selection', fixed: 'left', _noset_: true },
+  {
+    prop: 'saleReturnChildCode',
+    label: '退货工单编号',
+    width: '160'
+  },
+  {
+    prop: 'type',
+    label: '工单退货类型',
+    width: '160',
+    _slot_: 'type'
+  },
+  {
+    prop: 'outChildCode',
+    label: '发货工单编号',
+    width: '160'
+  },
+  {
+    prop: 'companyNo',
+    label: '业务公司编号',
+    width: '160'
+  },
+  {
+    prop: 'companyName',
+    label: '业务公司名称',
+    width: '160'
+  },
+  {
+    prop: 'customer_code',
+    label: '客户编码',
+    width: '160'
+  },
+  {
+    prop: 'customerNname',
+    label: '客户名称',
+    width: '160'
+  },
+  {
+    prop: 'num',
+    label: '下单数量',
+    width: '160'
+  },
+  {
+    prop: 'sale_price',
+    label: '销售单价',
+    width: '160'
+  },
+  {
+    prop: 'total_price',
+    label: '销售合计 ',
+    width: '160'
+  },
+  {
+    prop: 'addtime',
+    label: '下单时间',
+    width: '160'
+  },
+  {
+    prop: '',
+    width: 50,
+    label: '操作',
+    fixed: 'right',
+    _noset_: true,
+    _slot_: 'operation'
+  }
+
+]
+// page	是	string	页码
+// size	是	string	页码数
+// cgdNo	是	string	采购单编号
+// returnCode	是	string	退货单编号
+// good_type_code	是	string	商品属性
+// good_name	是	string	商品名称
+// status	是	string	状态

+ 30 - 0
src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/components/ShowDataTableColumns.js

@@ -0,0 +1,30 @@
+const showColumns = [
+  {
+    prop: 'returnCode',
+    label: '退货工单号',
+    span: 7
+  },
+  {
+    prop: 'outChildCode',
+    label: '发货工单号',
+    span: 7
+  },
+  {
+    prop: 'status',
+    label: '状态',
+    _slot_: 'status',
+    span: 5
+  },
+  {
+    prop: 'apply_name',
+    label: '创建人',
+    span: 5
+  },
+  {
+    prop: 'addtime',
+    label: '创建时间',
+    span: 24
+  }
+]
+
+export { showColumns }

+ 174 - 0
src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/components/wait-stockman.vue

@@ -0,0 +1,174 @@
+<template>
+  <el-form
+    :model="ruleForm"
+    :rules="rules"
+    ref="ruleForm"
+    :size="'mini'"
+    label-width="90px"
+  >
+    <el-row>
+      <el-col :span="12"
+        ><el-form-item label="货物情况" prop="good_receive_type">
+          <el-select placeholder="货物情况" style="width:100%" v-model="ruleForm.good_receive_type">
+            <el-option v-for="opt in statusOptions" :key="opt.value" :value="opt.value" :label="opt.label" />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="丢失数量" prop="loss_num">
+          <digital-input
+            :values="ruleForm.loss_num"
+            :placeholder="'丢失数量'"
+            :min="0"
+            :max="100000000000"
+            :position="'right'"
+            :precision="0"
+            :size="'mini'"
+            :controls="false"
+            :append="''"
+            :disabled="disabledLossField"
+            @reschange="number_change($event, 'loss_num')"
+          />
+        </el-form-item>
+      </el-col>
+
+      <el-col :span="12">
+        <el-form-item label="备注" prop="remark">
+          <el-input
+            placeholder="请输入备注"
+            type="textarea"
+            maxlength="100"
+            :size="'mini'"
+            v-model="ruleForm.remark"
+            clearable
+          >
+          </el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button
+            type="primary"
+            class="fr"
+            :size="'mini'"
+            @click="submitForm"
+            :loading="loading"
+            >保 存
+          </el-button>
+        </el-form-item>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+<script>
+
+import resToken from "@/mixins/resToken";
+import asyncRequest from "@/apis/service/sellOut/beforeReturnGoodWorkOrder";
+export default {
+  name: "allotFlow",
+  mixins: [resToken],
+  props: ["id", "sitem"],
+  computed: {
+    powers() {
+      const tran =
+        this.$store.getters.btnList.find((i) => i.menu_route == "allotDetail") || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+    ppowers() {
+      const tran =
+        this.$store.getters.roleProcess.find((i) => i.process_type === "DBD") || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+  },
+  data() {
+    return {
+      status: "",
+      ruleForm: {
+        good_receive_type: "0", //发货物流公司
+        remark: "", //物流单号
+        loss_num: "",
+      },
+      statusOptions:[
+        { value:'0', label:'库房未发货无需追回'},
+        { value:'1', label:'库房已发货已全部追回'},
+        { value:'2', label:'库房已发货已无法追回'},
+        { value:'3', label:'库房已发货已部分追回'},
+      ],
+      rules: {
+        good_receive_type: [
+          {
+            required: true,
+            message: "请选择货物情况",
+            trigger: "blur",
+          },
+        ],
+        loss_num: [
+          {
+            required: true,
+            trigger: "blur",
+            message: "请输入丢失数量",
+          },
+        ],
+        remark: [
+          {
+            required: true,
+            trigger: "blur",
+            message: "请输入备注"
+          },
+        ],
+      },
+    };
+  },
+  watch:{
+    'ruleForm.good_receive_type'(value){
+      if(value === '2'){
+        this.ruleForm.loss_num = this.sitem.return_num;
+      }else{
+        this.ruleForm.loss_num = "0"
+      }
+    }
+  },
+  computed:{
+    disabledLossField(){
+      const {good_receive_type} = this.ruleForm;
+      return ['0','1','2'].includes(good_receive_type)
+    }
+  },
+  methods: {
+    async number_change(e, key) {
+      this.ruleForm[key] = e + "" || "0";
+      this.$refs.ruleForm.validateField(key);
+    },
+    // 商品保存提交
+    async submitForm() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          if (this.loading) {
+            return;
+          }
+          this.loading = true;
+          const model = JSON.parse(JSON.stringify(this.ruleForm));
+          let res = await asyncRequest.reorderChildReceive(model);
+          this.loading = false;
+          
+          if (res && res.code === 0) {
+            this.showModelThis = false;
+            this.$emit("reload");
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    handleCompany(e) {
+      console.log(e);
+      this.ruleForm.good_receive_type = e && e.code ? [e.label] : [];
+      this.$refs.ruleForm.validateField("good_receive_type");
+    },
+  },
+};
+</script>

+ 36 - 0
src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/components/work-order-mark.vue

@@ -0,0 +1,36 @@
+<template>
+  <div class="work-order-mark__wrapper">
+    <vue-editor v-model="content" />
+    <el-button class="fr" type="primary" size="mini" style="margin:10px 0px" @click="() => onMark()">保存</el-button>
+  </div>
+</template>
+
+<script>
+import { VueEditor } from 'vue2-editor'
+import asyncRequest from '@/apis/service/sellOut/returnGoodWorkOrder'
+
+export default {
+  components: { VueEditor },
+  props: ['sitem'],
+  data: () => ({
+    content: '',
+    loading: false
+  }),
+  methods: {
+    async onMark() {
+      this.loading = true
+      const { code, message } = await asyncRequest.setAfterChildRecord({ record: this.content, id: this.sitem.id })
+      this.loading = false
+
+      switch (code) {
+        case 0:
+          this.$emit('reload')
+          break
+        default:
+          this.$message.warning(message)
+          break
+      }
+    }
+  }
+}
+</script>

+ 164 - 0
src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/detail.vue

@@ -0,0 +1,164 @@
+<template>
+  <div class="sellReturnDetail pagePadding">
+    <div style="width: 100%" v-if="powers.some((i) => i == '007')">
+      <el-tabs v-model="activeTabs">
+        <el-tab-pane label="业务详情" name="1">
+          <el-collapse v-model="activeNames" style="margin: -18px 0 0 0">
+            <el-collapse-item title="退货工单详情" name="0">
+              <show-data-table
+                style="margin: 0; padding: 0"
+                :sitem="sitem"
+                v-if="status"
+                :columns="showColumns"
+              >
+                <template slot="status">
+                  <el-tag
+                    :size="'mini'"
+                    v-text="
+                      (statusOptions.find((item) => item.value == sitem.status) || {})
+                        .label || '--'
+                    "
+                  ></el-tag>
+                </template>
+
+                <template slot="order_type">
+                  <el-tag
+                    :size="'mini'"
+                    v-text="
+                      (
+                        xs_order_type_options.find(
+                          (item) => item.id == sitem.order_type
+                        ) || {}
+                      ).label || '--'
+                    "
+                  ></el-tag>
+                </template>
+
+                <template slot="supplierName">
+                  <span>{{ sitem.supplierName }}</span>
+                  <el-popover placement="top" width="300" trigger="hover">
+                    <ul>
+                      <li>
+                        <span>供应商编号:</span><span>{{ sitem.supplierNo }}</span>
+                      </li>
+                    </ul>
+                    <i class="el-icon-warning-outline fr" slot="reference"></i>
+                  </el-popover>
+                </template>
+                <template slot="companyName">
+                  <span>{{ sitem.companyName }}</span>
+                  <el-popover placement="top" width="300" trigger="hover">
+                    <ul>
+                      <li>
+                        <span>业务公司编号:</span
+                        ><span>{{ sitem.companyNo }}</span>
+                      </li>
+                    </ul>
+                    <i class="el-icon-warning-outline fr" slot="reference"></i>
+                  </el-popover>
+                </template>
+
+                <template slot="customer">
+                  <span>{{ sitem.customer_name }}</span>
+                  <el-popover placement="top" width="300" trigger="hover">
+                    <ul>
+                      <li>
+                        <span>客户公司编号:</span
+                        ><span>{{ sitem.customer_code }}</span>
+                      </li>
+                    </ul>
+                    <i class="el-icon-warning-outline fr" slot="reference"></i>
+                  </el-popover>
+                </template>
+              </show-data-table>
+            </el-collapse-item>
+
+            <el-collapse-item title="待库管收货" name="1" v-if="sitem && String(sitem.status) === '12'">
+              <wait-stockman :sitem="sitem" @reload="initData" />
+            </el-collapse-item>
+
+            <el-collapse-item title="退货工单标记" name="2">
+              <work-order-mark @reload="initData" />
+            </el-collapse-item>
+          </el-collapse>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+<script>
+import mixinPage from "@/mixins/elPaginationHandle";
+import resToken from "@/mixins/resToken";
+import asyncRequest from "@/apis/service/sellOut/beforeReturnGoodWorkOrder";
+import { showColumns } from "./components/ShowDataTableColumns";
+import { xs_order_type_options } from "@/assets/js/statusList";
+import WaitStockman from "./components/wait-stockman.vue";
+import WorkOrderMark from "./components/work-order-mark.vue"
+import { mapGetters } from "vuex";
+
+export default {
+  name: "deliveryWorkOrderDetail",
+  mixins: [mixinPage, resToken],
+  components: { WaitStockman, WorkOrderMark },
+  computed: {
+    ...mapGetters(['isSupertube']),
+    powers() {
+      const {btnList} = this.$store.getters;
+      const tran = btnList.find((item) => item.menu_route == "supplierBeforeReturnGoodWorkOrderDetail" ) || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+  },
+  data() {
+    return {
+      activeTabs: "1",
+      showColumns: showColumns,
+      statusOptions: [
+        { value: "1", label: "待收货" },
+        { value: "2", label: "已收货" },
+      ],
+      xs_order_type_options,
+      sitem: null, //传给组件
+      activeNames: ["0", "1", "2", "3", "4", "5", "6"],
+      status: "", //存储详情接口状态
+      statusList: [
+        { value: "1", label: "待验货" },
+        { value: "2", label: "待验货审核" },
+        { value: "3", label: "待业务审核" }
+      ],
+      newTime: "",
+      loading: false,
+      is_stock: "",
+      queryId: "",
+    };
+  },
+  mounted() {
+    this.queryId = this.$route.query.id;
+    this.initData();
+  },
+  methods: {
+    async initData() {
+      const { code, data, message } = await asyncRequest.detail({
+        id: this.queryId,
+      });
+      if (code === 0) {
+        const { is_stock, status } = data;
+        this.is_stock = is_stock;
+        this.status = status;
+        this.sitem = data;
+        this.getNewTime();
+      } else if (code >= 100 && code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(message);
+      }
+    },
+    getNewTime() {
+      this.newTime = new Date().valueOf();
+    },
+  },
+};
+</script>

+ 466 - 0
src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/index.vue

@@ -0,0 +1,466 @@
+<template>
+  <div class="sellReturn pagePadding">
+    <div
+      v-if=" powers.some((i) => i == '001')"
+    >
+      <ex-table
+        v-loading="loading"
+        :table="table"
+        :data="tableData"
+        :columns="columns"
+        :page="pageInfo"
+        :size="size"
+        @page-curr-change="handlePageChange"
+        @page-size-change="handleSizeChange"
+        @selection="handleSelection"
+        @screen-reset="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+        @screen-submit="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+      >
+        <template #table-header="{}">
+          <div style="width: 100%">
+            <el-row style="padding: 0 0 0 80px">
+              <el-col :span="24">
+              <el-col :span="4" style="margin-right:10px">
+                <el-input v-model="parmValue.saleReturnChildCode"  placeholder="退货工单号" size="mini"  clearable @change="pageInfo.curr=1;parmValue.page=1;searchList()" />
+              </el-col>
+
+              <el-col :span="4">
+                <el-select placeholder="退货工单状态" size="mini" clearable v-model="parmValue.status" @change="pageInfo.curr=1;parmValue.page=1;searchList()">
+                  <el-option label="待收货" value="1" />
+                  <el-option label="已收货" value="2" />
+                </el-select>
+              </el-col>
+              
+              
+               <el-col
+                  :span="4"
+                  class="fr"
+                  style="width: 66px; padding: 0 0 0 10px"
+                >
+                  <el-button
+                    type="warning"
+                    class="fr"
+                    :size="searchSize"
+                    @click="restSearch"
+                  >
+                    重置
+                  </el-button>
+                </el-col>
+                <el-col :span="3" style="width: 66px; float: right">
+                  <el-button
+                    :size="searchSize"
+                    type="primary"
+                    style="float: right; margin-left: 5px"
+                    @click="searchList"
+                  >
+                    刷新
+                  </el-button>
+                </el-col>
+              </el-col>
+            </el-row>
+          </div>
+        </template>
+        <template #status="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.status == '0' ? 'warning' : ''"
+            v-text="
+              (statusOptions.find((item) => item.value == scope.row.status) || {})
+                .label || '--'
+            "
+          ></el-tag>
+        </template>
+
+        <template #type="{scope}">
+          <el-tag size="mini">{{ scope.row.type === '1' ? '未发货退货' : '售后退货' }}</el-tag>
+        </template>
+        
+        <template #order_type="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            v-text="
+              (
+                xs_order_type_options.find(
+                  (item) => item.id == scope.row.order_type
+                ) || {}
+              ).label || '--'
+            "
+          ></el-tag>
+        </template>
+
+        <template #order_source="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            v-text="
+              (
+              xs_order_source_options.find(
+                  (item) => item.id == scope.row.order_source
+                ) || {}
+              ).label || '--'
+            "
+          ></el-tag>
+        </template>
+
+        <template #operation="{ scope }">
+          <el-tooltip
+            v-if="powers.some((i) => i == '007')"
+            effect="dark"
+            content="详情"
+            placement="top"
+          >
+            <i
+              class="el-icon-view tb-icon"
+              @click="getRouter('supplierBeforeReturnGoodWorkOrderDetail', scope.row.id)"
+            ></i>
+          </el-tooltip>
+        </template>
+      </ex-table>
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+   <script>
+import mixinPage from "@/mixins/elPaginationHandle";
+import resToken from "@/mixins/resToken";
+import asyncRequest from "@/apis/service/sellOut/beforeReturnGoodWorkOrder";
+import { xs_order_type_options ,xs_order_source_options} from "@/assets/js/statusList";
+import companyHelper from "@/mixins/companyHelper"
+import urlConfig from "@/apis/url-config";
+import { mapGetters } from "vuex";
+import columns from "./columns";
+
+
+export default {
+  name: "sellReturn",
+  mixins: [mixinPage, resToken, companyHelper],
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      const tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "supplierBeforeReturnGoodWorkOrder"
+        ) || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+  },
+  data() {
+    return {
+      xs_order_type_options,
+      xs_order_source_options,
+      fileUrl: urlConfig.baseURL,
+      select: "outChildCode", //默认选择下拉框
+      s_input: "", //搜索框内容
+      select_list:[],
+      sitem: null,
+      // 状态
+      statusOptions: [
+        { value: "1", label: "未收货" },
+        { value: "2", label: "已收货" },
+      ],
+      loading: false,
+      showModel: false,
+      isDetail: false,
+      modelId: 0,
+      parmValue: {
+        // companyNo:"",
+        // customer_code:[],
+        // returnCode: "", //销售退货code
+        // orderCode: "", //销售订单code
+        // company_name: "",
+        // good_code:"",
+        // skuCode:"",
+        // apply_name: "", //申请人
+        // start: "",
+        // end: "",
+        // status: "", //节点状态
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+        // order_type: "",
+      },
+      tableData: [],
+      passwordModel: false,
+      passwordModelId: 0,
+      isPasswordDetail: false,
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: columns,
+    };
+  },
+  mounted() {
+    const { back } = this.$route.query;
+    if (back) {
+      this.parmValue = JSON.parse(back);
+      const { page, size } = this.parmValue;
+      // this.parmValue.start = start || last_start;
+      // this.parmValue.end = end || last_end;
+      // if(this.parmValue.companyNo.length>0){
+      //     this.customerCode = [this.parmValue.companyNo] ;
+      // }
+
+      this.pageInfo = {
+        size: size,
+        curr: page,
+        total: 0,
+      };
+      //多选条件
+      this.select = this.parmValue.select;
+      // this.sselect = this.parmValue.sselect;
+      this.s_input = this.parmValue.s_input;
+    } else {
+      this.select = "outChildCode";
+      //  this.sselect = "创建时间"
+    }
+    this.searchList();
+  },
+
+  methods: {
+    async supplierChange(e) {
+      const { code, label } = e;
+      this.supplierNo = code ? [code] : [];
+      this.searchList()
+    },
+    customer_code_change(e) {
+      if (e && e.code) {
+        this.parmValue.customer_code = [e.code];
+      } else {
+        this.parmValue.customer_code = [];
+      }
+      this.searchList();
+    },
+    handleExport(){
+      if (!this.loading) {
+        this.loading = true;
+        let httpType = `aplication/zip`;
+  
+        let model = JSON.parse(JSON.stringify(this.parmValue));
+        delete model['s_input']
+
+        axios({
+          method: "post",
+          url: this.fileUrl +  "/admin/child_export",
+          responseType: "blob",
+          data: {
+            ...model,
+            [this.select]: this.s_input,
+            customer_code: Array.isArray(this.parmValue.customer_code) ? this.parmValue.customer_code[0] : this.parmValue.customer_code,
+            supplierNo: Array.isArray(this.supplierNo) ? this.supplierNo[0] : this.supplierNo,
+            needRela: true
+          },
+          headers: {
+            Accept: httpType,
+          },
+        })
+          .then((res) => {
+            if (res && res.status == 200 && res.data) {
+              let url = window.URL.createObjectURL(
+                new Blob([res.data], { type: httpType })
+              );
+              let link = document.createElement("a");
+              link.style.display = "none";
+              link.href = url;
+              let excelName = "发货工单.zip";
+              link.setAttribute("download", excelName);
+              document.body.appendChild(link);
+              link.click();
+              link.remove();
+              window.URL.revokeObjectURL(url); //释放掉blob对象
+              this.$message.success(`导出成功!`);
+              setTimeout(() => {
+                this.loading = false;
+              }, 500);
+            } else {
+              this.$message.error(res.data.message);
+              setTimeout(() => {
+                this.loading = false;
+              }, 500);
+            }
+          })
+          .catch((error) => {
+            console.log(error);
+            this.loading = false;
+          });
+      }
+    },
+    handleSelection(order){
+      const { list } = order
+      this.select_list = list;
+    },
+    getRouter(toRouter, queryId) {
+      if (toRouter && queryId) {
+        let model = {
+          id: queryId,
+        };
+
+        //有多选框的条件
+        this.parmValue.select = this.select;
+        // this.parmValue.sselect = this.sselect ;
+        this.parmValue.s_input = this.s_input;
+        let routerModel = {
+          options: JSON.parse(JSON.stringify(this.parmValue)),
+          router: this.$route.path,
+        };
+        model.preModel = JSON.stringify(routerModel);
+
+        this.routeGoto(toRouter, model);
+      } 
+    },
+    restSearch() {
+      this.s_input = ""; //清除输入框内容
+      this.select = "outChildCode"; //清除下拉框选中项
+
+      this.parmValue = {
+        order_type: "",
+        company_name: "", //申请人部门
+        good_code:"",
+        returnCode: "", //销售退货code
+        orderCode: "", //销售订单code
+        apply_name: "", //申请人
+        start: "",
+        end: "",
+        status: "", //节点状态
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+      };
+      
+      // 表格 - 分页
+      this.pageInfo = {
+        size: 15,
+        curr: 1,
+        total: 0,
+      };
+      this.searchList();
+    },
+
+    openModal(id, isDetail, sitem) {
+      this.showModel = true;
+      this.modelId = id;
+      this.isDetail = isDetail;
+      this.sitem = sitem;
+    },
+    async deleteById(id, status) {
+      await this.$confirm("确定要删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          const model = {
+            id: id,
+            status: status + '' === "1" ? "0" : "1",
+          };
+          const res = await asyncRequest.status(model);
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "删除成功",
+              message: "",
+            });
+            this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    async searchList() {
+      if (
+        (this.parmValue.start !== "" && this.parmValue.end === "") ||
+        (this.parmValue.start === "" && this.parmValue.end !== "")
+      ) {
+        this.$message.warning("时间区间不完整!");
+        return;
+      }
+      this.loading = true;
+
+      let model = JSON.parse(JSON.stringify(this.parmValue));
+      delete model['s_input']
+
+      const res = await asyncRequest.list({
+        ...model,
+        [this.select]: this.s_input,
+        customer_code: Array.isArray(this.parmValue.customer_code) ? this.parmValue.customer_code[0] : this.parmValue.customer_code,
+        supplierNo: Array.isArray(this.supplierNo) ? this.supplierNo[0] : this.supplierNo,
+        companyNo: this.currentCompany,
+        noRelation: true
+      });
+
+      if (res && res.code === 0 && res.data) {
+        this.tableData = res.data.list;
+        this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+
+    //物流公司查询
+    async handleCompany(e) {
+      console.log(e, "要求传快递简称,不传id"); //
+      if (e && e.code) {
+        this.parmValue.postCompany = [e.shortName];
+        this.parmValue.page = 1;
+      }
+      await this.searchList();
+    },
+
+    company_idsearchChange(e) {
+      const { code } = e;
+      this.parmValue.companyNo = code || "";
+      this.searchList()
+    },
+
+    // 时间
+    async handleTime(e) {
+      if (e.startTime !== "") {
+        this.parmValue.start = e.startTime;
+      } else {
+        this.parmValue.start = "";
+      }
+      if (e.endTime !== "") {
+        this.parmValue.end = e.endTime;
+      } else {
+        this.parmValue.end = "";
+      }
+      if (this.parmValue.start !== "" && this.parmValue.end !== "") {
+        this.parmValue.page = 1;
+        await this.searchList();
+      }
+    },
+  },
+};
+</script>
+   <style lang="scss" scoped>
+.sellReturn {
+}
+</style>
+   

+ 0 - 0
src/views/supplierSellOut/supplierBeforeReturnGoodWorkOrder/退货工单管理


+ 46 - 73
src/views/supplierSellOut/supplierReturnWorkOrder/columns.js

@@ -1,92 +1,65 @@
 export default [
   { type: 'selection', fixed: 'left', _noset_: true },
   {
-    prop: 'outChildCode',
+    prop: 'returnCode',
     label: '退货工单编号',
     width: '160'
   },
   {
-    prop: 'orderCode',
+    prop: 'type',
     label: '工单退货类型',
-    width: '160'
-  },
-  {
-    prop: 'outCode',
-    label: '退货流程编码',
-    width: '160'
-  },
-  {
-    prop: 'companyNo',
-    label: '业务公司编号',
-    width: '160'
-  },
-  {
-    prop: 'companyName',
-    label: '发货工单编号',
-    width: '160'
-  },
-  {
-    prop: 'customer_code',
-    label: '业务公司编码',
-    width: '160'
+    width: '160',
+    _slot_: 'type'
   },
   {
-    prop: 'customer_name',
-    label: '业务公司名称',
-    width: '160'
-  },
-  {
-    prop: 'supplierNo',
-    label: '客户编码 ',
-    width: '160'
-  },
-  {
-    prop: 'supplierName',
-    label: '客户名称',
-    width: '160'
-  },
-  {
-    prop: 'supplierNo',
-    label: '下单数量 ',
-    width: '160'
+    prop: 'outChildCode',
+    label: '发货工单编号'
   },
   {
-    prop: 'spuCode',
-    label: '商品成本编码',
+    prop: 'outCode',
+    label: '发货申请编号',
     width: '160'
   },
-  {
-    prop: 'skuCode',
-    label: '销售单价',
+  // {
+  //   prop: 'companyNo',
+  //   label: '业务公司编号',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'companyName',
+  //   label: '业务公司名称',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'customer_code',
+  //   label: '客户编码',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'customerNname',
+  //   label: '客户名称',
+  //   width: '160'
+  // },
+  {
+    prop: 'send_num',
+    label: '下单数量',
     width: '160'
   },
-
-  {
-    prop: 'order_type',
-    label: '销售合计',
-    width: '85'
-  },
-  {
-    prop: 'order_source',
-    label: '确认单状态',
-    width: '85'
-  },
-  {
-    prop: 'num',
-    label: '总数量',
-    width: '70'
-  },
-  {
-    prop: 'addtime',
-    label: '下单时间',
-    sortable: true,
-    width: 150
-  },
-  {
-    prop: 'apply_name',
-    label: '申请人',
-    width: '80'
-  },
+  // {
+  //   prop: 'sale_price',
+  //   label: '销售单价',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'total_price',
+  //   label: '销售合计 ',
+  //   width: '160'
+  // },
+  // {
+  //   prop: 'addtime',
+  //   label: '下单时间',
+  //   width: '160'
+  // },
   {
     prop: '',
     width: 50,

+ 7 - 51
src/views/supplierSellOut/supplierReturnWorkOrder/components/ShowDataTableColumns.js

@@ -1,5 +1,10 @@
 
 const showColumns = [
+  {
+    prop: 'returnCode',
+    label: '退货工单号',
+    span: 7
+  },
   {
     prop: 'outChildCode',
     label: '发货工单号',
@@ -12,63 +17,14 @@ const showColumns = [
     span: 5
   },
   {
-    prop: 'order_type',
-    label: '订单来源',
-    _slot_: 'order_type',
-    span: 6
-  }, {
     prop: 'apply_name',
     label: '创建人',
-    span: 6
-  },
-
-  {
-    prop: 'supplierName',
-    label: '供应商公司',
-    _slot_: 'supplierName',
-    span: 12
-  },
-  {
-    prop: 'companyName',
-    label: '业务公司',
-    _slot_: 'companyName',
-    span: 12
-  },
-  {
-    prop: 'customer_code',
-    label: '客户公司',
-    _slot_: 'customer',
-    span: 12
-  },
-  {
-    prop: 'num',
-    label: '总数量',
-    span: 6
+    span: 5
   },
   {
     prop: 'addtime',
     label: '创建时间',
-    span: 6
-  },
-  {
-    prop: 'sendtime',
-    label: '发货时间',
-    span: 6
-  },
-  {
-    prop: 'post_name',
-    label: '物流公司',
-    span: 6
-  },
-  {
-    prop: 'post_code',
-    label: '物流编号',
-    span: 6
-  },
-  {
-    prop: 'post_fee',
-    label: '物流费用',
-    span: 6
+    span: 24
   }
 ]
 

+ 19 - 19
src/views/supplierSellOut/supplierReturnWorkOrder/components/wait-stockman.vue

@@ -7,16 +7,16 @@
     label-width="90px"
   >
     <el-row>
-      <el-col :span="12">
-        <el-form-item label="货物情况" prop="post_name">
-          <el-select placeholder="货物情况" style="width:100%" value="0">
+      <el-col :span="12"
+        ><el-form-item label="货物情况" prop="good_receive_type">
+          <el-select placeholder="货物情况" style="width:100%" v-model="ruleForm.good_receive_type">
             <el-option v-for="opt in statusOptions" :key="opt.value" :value="opt.value" :label="opt.label" />
           </el-select>
         </el-form-item>
 
-        <el-form-item label="丢失数量" prop="post_fee">
+        <el-form-item label="丢失数量" prop="loss_num">
           <digital-input
-            :values="ruleForm.post_fee"
+            :values="ruleForm.loss_num"
             :placeholder="'丢失数量'"
             :min="0"
             :max="100000000000"
@@ -25,19 +25,19 @@
             :size="'mini'"
             :controls="false"
             :append="''"
-            @reschange="number_change($event, 'post_fee')"
+            @reschange="number_change($event, 'loss_num')"
           />
         </el-form-item>
       </el-col>
 
       <el-col :span="12">
-        <el-form-item label="备注" prop="post_code">
+        <el-form-item label="备注" prop="remark">
           <el-input
             placeholder="请输入备注"
             type="textarea"
             maxlength="100"
             :size="'mini'"
-            v-model="ruleForm.post_code"
+            v-model="ruleForm.remark"
             clearable
           >
           </el-input>
@@ -91,7 +91,7 @@ export default {
         }
       }
     };
-    const validate_post_fee = (rule, value, callback) => {
+    const validate_loss_num = (rule, value, callback) => {
       const { required } = rule;
       if (required && value === "") {
         callback(new Error("不能为空!"));
@@ -103,9 +103,9 @@ export default {
     return {
       status: "",
       ruleForm: {
-        post_name: [], //发货物流公司
-        post_code: "", //物流单号
-        post_fee: "",
+        good_receive_type: "0", //发货物流公司
+        remark: "", //物流单号
+        loss_num: "",
       },
       statusOptions:[
         { value:'0', label:'库房未发货无需追回'},
@@ -114,7 +114,7 @@ export default {
         { value:'3', label:'库房已发货已部分追回'},
       ],
       rules: {
-        post_name: [
+        good_receive_type: [
           {
             type: "array",
             required: true,
@@ -122,14 +122,14 @@ export default {
             trigger: "change",
           },
         ],
-        post_fee: [
+        loss_num: [
           {
             required: true,
-            validator: validate_post_fee,
+            validator: validate_loss_num,
             trigger: "blur",
           },
         ],
-        post_code: [
+        remark: [
           {
             required: true,
             trigger: "blur",
@@ -154,7 +154,7 @@ export default {
           this.loading = true;
           const model = JSON.parse(JSON.stringify(this.ruleForm));
           model.outChildCode = this.sitem.outChildCode;
-          model.post_name = model.post_name.toString();
+          model.good_receive_type = model.good_receive_type.toString();
           
           let res = await asyncRequest.express({list:[model]});
           this.loading = false;
@@ -177,8 +177,8 @@ export default {
     },
     handleCompany(e) {
       console.log(e);
-      this.ruleForm.post_name = e && e.code ? [e.label] : [];
-      this.$refs.ruleForm.validateField("post_name");
+      this.ruleForm.good_receive_type = e && e.code ? [e.label] : [];
+      this.$refs.ruleForm.validateField("good_receive_type");
     },
   },
 };

+ 23 - 3
src/views/supplierSellOut/supplierReturnWorkOrder/components/work-order-mark.vue

@@ -1,16 +1,36 @@
 <template>
   <div class="work-order-mark__wrapper">
     <vue-editor v-model="content" />
-    <el-button class="fr" type="primary" size="mini" style="margin:10px 0px">保存</el-button>
+    <el-button class="fr" type="primary" size="mini" style="margin:10px 0px" @click="() => onMark()">保存</el-button>
   </div>
 </template>
 
 <script>
 import { VueEditor } from 'vue2-editor'
+import asyncRequest from '@/apis/service/sellOut/returnGoodWorkOrder'
+
 export default {
   components: { VueEditor },
+  props: ['sitem'],
   data: () => ({
-    content: '退货工单详情'
-  })
+    content: '',
+    loading: false
+  }),
+  methods: {
+    async onMark() {
+      this.loading = true
+      const { code, message } = await asyncRequest.setAfterChildRecord({ record: this.content, id: this.sitem.id })
+      this.loading = false
+
+      switch (code) {
+        case 0:
+          this.$emit('reload')
+          break
+        default:
+          this.$message.warning(message)
+          break
+      }
+    }
+  }
 }
 </script>

+ 9 - 16
src/views/supplierSellOut/supplierReturnWorkOrder/detail.vue

@@ -18,7 +18,7 @@
                       (statusOptions.find((item) => item.value == sitem.status) || {})
                         .label || '--'
                     "
-                  />
+                  ></el-tag>
                 </template>
 
                 <template slot="order_type">
@@ -31,7 +31,7 @@
                         ) || {}
                       ).label || '--'
                     "
-                  />
+                  ></el-tag>
                 </template>
 
                 <template slot="supplierName">
@@ -73,12 +73,8 @@
               </show-data-table>
             </el-collapse-item>
 
-            <el-collapse-item title="待库管收货" name="1">
-              <wait-stockman />
-            </el-collapse-item>
-
-            <el-collapse-item title="退货工单标记" name="2">
-              <work-order-mark />
+            <el-collapse-item title="退货工单标记" name="1">
+              <work-order-mark :sitem="sitem" @reload="initData()" />
             </el-collapse-item>
           </el-collapse>
         </el-tab-pane>
@@ -95,21 +91,18 @@ import resToken from "@/mixins/resToken";
 import asyncRequest from "@/apis/service/sellOut/returnGoodWorkOrder";
 import { showColumns } from "./components/ShowDataTableColumns";
 import { xs_order_type_options } from "@/assets/js/statusList";
-import WaitStockman from "./components/wait-stockman.vue";
 import WorkOrderMark from "./components/work-order-mark.vue"
 import { mapGetters } from "vuex";
 
 export default {
   name: "deliveryWorkOrderDetail",
   mixins: [mixinPage, resToken],
-  components: { WaitStockman, WorkOrderMark },
+  components: { WorkOrderMark },
   computed: {
     ...mapGetters(['isSupertube']),
     powers() {
-      const tran =
-        this.$store.getters.btnList.find(
-          (item) => item.menu_route == "supplierReturnWorkOrder"
-        ) || {};
+      const {btnList} = this.$store.getters;
+      const tran = btnList.find((item) => item.menu_route == "supplierReturnWorkOrderDetail" ) || {};
       const { action } = tran ?? {};
       return action ?? [];
     },
@@ -142,12 +135,12 @@ export default {
   },
   mounted() {
     this.queryId = this.$route.query.id;
-    this.initalData();
+    this.initData();
   },
   methods: {
     async initData() {
       const { code, data, message } = await asyncRequest.detail({
-        outChildCode: this.queryId,
+        id: this.queryId,
       });
       if (code === 0) {
         const { is_stock, status } = data;

+ 17 - 41
src/views/supplierSellOut/supplierReturnWorkOrder/index.vue

@@ -28,26 +28,17 @@
           <div style="width: 100%">
             <el-row style="padding: 0 0 0 80px">
               <el-col :span="24">
-                <!-- 时间区间 -->
-                <el-col :span="6" style="width: 303px; padding: 0 0 0 0px">
-                  <period-date-picker
-                    :type="1"
-                    :width="'135px'"
-                    :size="searchSize"
-                    :start="parmValue.start"
-                    :end="parmValue.end"
-                    @timeReturned="handleTime"
-                  />
-                </el-col>
 
-              <el-col :span="4" style="margin-right:10px">
-                <el-input  placeholder="退货编号" size="mini" />
+              <el-col :span="4" style="margin-right:10px" >
+                <el-input v-model="parmValue.returnCode"  placeholder="售后申请单号" size="mini" clearable @change="pageInfo.curr=1;parmValue.page=1;searchList()" />
               </el-col>
 
               <el-col :span="4">
-                <el-select placeholder="退货单状态" size="mini" />
+                <el-select placeholder="退货工单状态" size="mini" clearable v-model="parmValue.status" @change="pageInfo.curr=1;parmValue.page=1;searchList()">
+                  <el-option label="待收货" value="1" />
+                  <el-option label="已收货" value="2" />
+                </el-select>
               </el-col>
-              
                <el-col
                   :span="4"
                   class="fr"
@@ -87,16 +78,9 @@
           ></el-tag>
         </template>
 
-        <!-- <template #send_status="{ scope }">
-          <el-tag
-            :size="tablebtnSize"
-            :type="scope.row.status == '0' ? 'warning' : ''"
-            v-text="
-              (sendStatusOptions.find((item) => item.value == scope.row.send_status) || {})
-                .label || '--'
-            "
-          ></el-tag>
-        </template> -->
+        <template #type="{scope}">
+          <el-tag size="mini">{{ scope.row.type === '1' ? '未发货退货' : '售后退货' }}</el-tag>
+        </template>
         
         <template #order_type="{ scope }">
           <el-tag
@@ -133,7 +117,7 @@
           >
             <i
               class="el-icon-view tb-icon"
-              @click="getRouter('supplierReturnWorkOrderDetail', scope.row.outChildCode)"
+              @click="getRouter('supplierReturnWorkOrderDetail', scope.row.id)"
             ></i>
           </el-tooltip>
         </template>
@@ -147,12 +131,13 @@
    <script>
 import mixinPage from "@/mixins/elPaginationHandle";
 import resToken from "@/mixins/resToken";
-import columns from "./columns";
 import asyncRequest from "@/apis/service/sellOut/returnGoodWorkOrder";
-import { mapGetters } from "vuex";
-import urlConfig from "@/apis/url-config";
 import { xs_order_type_options ,xs_order_source_options} from "@/assets/js/statusList";
 import companyHelper from "@/mixins/companyHelper"
+import urlConfig from "@/apis/url-config";
+import { mapGetters } from "vuex";
+import columns from "./columns";
+
 
 export default {
   name: "sellReturn",
@@ -162,7 +147,7 @@ export default {
     powers() {
       const tran =
         this.$store.getters.btnList.find(
-          (item) => item.menu_route == "supplierReturnWorkOrder"
+          (item) => item.menu_route == "supplierDeliveryWorkOrder"
         ) || {};
       const { action } = tran ?? {};
       return action ?? [];
@@ -189,20 +174,11 @@ export default {
       isDetail: false,
       modelId: 0,
       parmValue: {
-        // companyNo:"",
-        customer_code:[],
-        returnCode: "", //销售退货code
-        orderCode: "", //销售订单code
-        company_name: "",
-        good_code:"",
-        skuCode:"",
-        apply_name: "", //申请人
-        start: "",
-        end: "",
+        returnCode:"",
         status: "", //节点状态
         page: 1, // 页码
         size: 15, // 每页显示条数
-        order_type: "",
+        // order_type: "",
       },
       tableData: [],
       passwordModel: false,

+ 154 - 77
src/views/supplierSellOut/supplierSellReturn/components/set-work-order.vue

@@ -1,65 +1,71 @@
 <template>
   <div class="work-order__wrapper">
     <template v-if="isSalesWarehouselist">
-      <el-table size="mini" border :data="list">
-        <el-table-column label="销售订单" />
-        <el-table-column label="发货申请单" width="110px" />
-        <el-table-column label="提退时发货申请单状态" width="150px" />
-        <el-table-column label="发货工单" />
-        <el-table-column label="发货仓库所在供应商名称" width="160px" />
-        <el-table-column label="发货仓库所在供应商编码" width="160px" />
-        <el-table-column label="发货仓库名称" width="100px" />
-        <el-table-column label="发货仓库编码" width="100px" />
-        <el-table-column label="发货仓库负责人" width="110px" />
-        <el-table-column label="发货数量" />
-        <el-table-column width="110px">
-          <template slot="header">
-            <span style="color:red;margin-right:2px">*</span>退货数量
-          </template>
-          <template slot-scope="scope">
-            <digital-input
-              :values="list[scope.$index].num"
-              :placeholder="'退货数量'"
-              :min="0"
-              :disabled="false"
-              :max="100000000000"
-              :position="'right'"
-              :precision="0"
-              :size="'mini'"
-              :controls="false"
-              :append="''"
-              @reschange="onNumberChange($event, scope.$index)"
-            />
-          </template>
-        </el-table-column>
-        <el-table-column label="退货仓库所在供应商名称" width="160px" />
-        <el-table-column label="退货仓库所在供应商编码" width="160px" />
-        <el-table-column width="160px">
-          <template slot="header">
-            <span style="color:red;margin-right:2px">*</span>退货仓库编码
-          </template>
-          <template slot-scope="scope">
-            <search-stock
-              :is-detail="false"
-              :size="'mini'"
-              :value="list[scope.$index].wsmCode"
-              :placeholder="'仓库名称'"
-              :is-relation="true"
-              :wsmtype="'5'"
-              :company-no="currentCompany"
-              :disbaled="!currentCompany"
-              :names="''"
-              @searchChange="onStockChange($event, scope.$index)"
-            />
-          </template>
-        </el-table-column>
-        <el-table-column label="退货仓库负责人" width="110px" />
-      </el-table>
+      <el-form ref="formRef" :model="list">
+        <el-table size="mini" border :data="list">
+          <el-table-column prop="orderCode" label="销售订单" width="160px" show-overflow-tooltip />
+          <el-table-column prop="outCode" label="发货申请单" width="160px" show-overflow-toolti />
+          <el-table-column prop="outChildCode" label="发货工单" width="160px" show-overflow-tooltip />
+          <el-table-column label="发货仓库所在供应商名称" prop="supplierName" width="170px" show-overflow-tooltip />
+          <el-table-column label="发货仓库所在供应商编码" prop="supplierNo" width="170px" show-overflow-tooltip />
+          <el-table-column prop="wsm_name" label="发货仓库名称" width="160px" show-overflow-tooltip />
+          <el-table-column prop="wsm_code" label="发货仓库编码" width="170px" show-overflow-tooltip />
+          <el-table-column prop="contactor_name" label="发货仓库负责人" width="110px" show-overflow-tooltip />
+          <el-table-column prop="num" label="发货数量" show-overflow-tooltip />
+          <el-form>
+            <el-table-column width="110px" show-overflow-tooltip>
+              <template slot="header">
+                <span style="color:red;margin-right:2px">*</span>退货数量
+              </template>
+              <template slot-scope="scope">
+                <el-form-item :prop="`${scope.$index}.return_num`" :rules="paramsRules.return_num">
+                  <digital-input
+                    :values="list[scope.$index].return_num"
+                    :placeholder="'退货数量'"
+                    :disabled="false"
+                    :max="100000000000"
+                    :position="'right'"
+                    :precision="0"
+                    :size="'mini'"
+                    :controls="false"
+                    :append="''"
+                    @reschange="onNumberChange($event, scope.$index)"
+                  />
+                </el-form-item>
+              </template>
+            </el-table-column>
+            <el-table-column width="160px" show-overflow-tooltip>
+              <template slot="header">
+                <span style="color:red;margin-right:2px">*</span>退货仓库编码
+              </template>
+              <template slot-scope="scope">
+                <el-form-item :prop="`${scope.$index}.return_wsm_code`" :rules="paramsRules.return_wsm_code">
+                  <search-stock
+                    :is-detail="false"
+                    :size="'mini'"
+                    :value="list[scope.$index].return_wsm_code"
+                    :placeholder="'仓库名称'"
+                    :is-relation="true"
+                    :wsmtype="'5'"
+                    :company-no="currentCompany"
+                    :disbaled="!currentCompany"
+                    :names="''"
+                    @searchChange="onStockChange($event, scope.$index)"
+                  />
+                </el-form-item>
+              </template>
+            </el-table-column>
+          </el-form>
+          <el-table-column label="退货仓库所在供应商名称" prop="returnSupplierName" width="160px" show-overflow-tooltip />
+          <el-table-column label="退货仓库所在供应商编码" prop="returnSupplierNo" width="160px" show-overflow-tooltip />
+          <el-table-column label="退货仓库负责人" width="110px" prop="returnSupplierNameContactor" show-overflow-tooltip />
+        </el-table>
+      </el-form>
     </template>
 
     <template v-else>
-      <el-form :model="formData" :rules="rules">
-        <el-form-item prop="wsmCode" label="销售仓" style="display:flex">
+      <el-form ref="formRef" :model="formData" :rules="rules">
+        <el-form-item prop="return_wsm_code" label="销售仓" style="display:flex">
           <search-stock
             style="width:300px"
             :is-detail="false"
@@ -71,17 +77,18 @@
             :company-no="currentCompany"
             :disbaled="!currentCompany"
             :names="''"
-            @searchChange="onStockChange($event, scope.$index, true)"
+            @searchChange="onStockChange1($event)"
           />
         </el-form-item>
       </el-form>
     </template>
 
-    <el-button class="fr" style="margin:10px 0px" size="mini" type="primary">保存</el-button>
+    <el-button class="fr" style="margin:10px 0px" size="mini" type="primary" :loading="subLoading" @click="onSetOrderReturnChild">保存</el-button>
   </div>
 </template>
 
 <script>
+import asyncRequest from '@/apis/service/sellOut/sellAfterApply'
 import companyHelper from '@/mixins/companyHelper'
 import resToken from '@/mixins/resToken'
 export default {
@@ -89,51 +96,121 @@ export default {
   mixins: [resToken, companyHelper],
   props: ['sitem'],
   data: () => ({
-    rules: {
-      wsmCode: [{ required: true, type: 'array', message: '请选择销售仓', trigger: 'change' }]
-    },
+    list: [],
+    loading: false,
+    subLoading: false,
+    companyNo: '',
     formData: {
-      wsmCode: ''
-    },
-    list: [
-      { wsmCode: '', num: 0 }
-    ]
+      return_wsm_code: '',
+      return_num: '0'
+    }
   }),
   computed: {
     state() {
       const { order_type, send_type } = this.sitem || {}
+
       return ({
-        isHasWorkOrder: true, // true:有发货工单 false:无发货工单
+        isHasWorkOrder: this.list && this.list.length !== 0, // true:有发货工单 false:无发货工单
         isStock: String(order_type) === '1', // true:库存品 false:非库存品/采返商品/报备商品
         isHasAddr: String(send_type) === '1' // true:有地址 false:无地址
       })
     },
     isSalesWarehouselist() {
       const { isHasAddr, isHasWorkOrder, isStock } = this.state
-      // 有地址 && 有发货工单 && 库存品
+      if (!isHasWorkOrder) return false
+      // 有发货工单 && 库存品
       if (isHasAddr && isHasWorkOrder & isStock) return true
       // 有地址 && 不是库存品
       if (isHasAddr && !isStock) return true
       return false
+    },
+    paramsRules() {
+      return ({
+        return_wsm_code: [{
+          required: true,
+          message: '请选择退货仓库',
+          trigger: 'change'
+        }],
+        return_num: [{
+          required: false
+        }]
+      })
+    }
+  },
+  watch: {
+    sitem: {
+      handler() {
+        if (!this.sitem) return
+        this.onRequestSendList()
+      },
+      immediate: true
     }
   },
   methods: {
-    onStockChange(e, index, isForm) {
-      const { code } = e
-      if (isForm) {
-        this.formData.wsmCode = code ? [code] : ''
-        return
+    onStockChange1({ code }) {
+      this.formData.return_wsm_code = code ? [code] : ''
+      this.$nextTick(() => this.$refs.formRef.validate())
+    },
+    async onRequestSendList() {
+      const { data, code, message } = await asyncRequest.sendList({ orderCode: this.sitem.orderCode })
+      switch (code) {
+        case 0:
+          this.list = data.list.map(item => ({ ...item, return_num: 0, return_wsm_code: '' }))
+          break
+        default:
+          this.$message.warning(message)
+          break
       }
-
+    },
+    onStockChange({ code, supplierName, supplierNo, contactor } = {}, index) {
       this.$set(this.list, index, {
         ...this.list[index],
-        wsmCode: code ? [code] : ''
+        return_wsm_code: code ? [code] : '',
+        returnSupplierName: supplierName,
+        returnSupplierNo: supplierNo,
+        returnSupplierNameContactor: contactor
       })
+
+      this.$nextTick(() => this.$refs.formRef.validate())
     },
-    onNumberChange(num, index) {
+    onNumberChange(return_num, index) {
       this.$set(this.list, index, {
         ...this.list[index],
-        num
+        return_num
+      })
+    },
+    async onSetOrderReturnChild() {
+      this.$refs.formRef.validate(async isValid => {
+        if (!isValid) return
+
+        const list = this.list.map(({ outChildCode, return_num, return_wsm_code }) => ({
+          return_wsm_code: Array.isArray(return_wsm_code) ? return_wsm_code[0] : return_wsm_code,
+          outChildCode,
+          return_num
+        }))
+
+        const salesWarehouseParams = { list, type: '1', returnCode: this.sitem.returnCode }
+        const parms = {
+          list: {
+            return_wsm_code: Array.isArray(this.formData.return_wsm_code)
+              ? this.formData.return_wsm_code[0]
+              : this.formData.return_wsm_code,
+            return_num: this.sitem.num
+          },
+          returnCode: this.sitem.returnCode,
+          type: '1'
+        }
+
+        const { code, message } = await asyncRequest.reorderChildAdd(this.isSalesWarehouselist ? salesWarehouseParams : parms)
+        this.subLoading = false
+        switch (code) {
+          case 0:
+            this.$emit('reload')
+            break
+          default:
+            this.$message.warning(message)
+            break
+        }
       })
     }
   }

+ 10 - 4
src/views/supplierSellOut/supplierSellReturn/detail.vue

@@ -167,7 +167,7 @@
               />
             </el-collapse-item>
 
-            <el-collapse-item title="待设置工单" name="7">
+            <el-collapse-item title="待设置工单" name="7" v-if="isHasPermission({status:'11', process:'11'})">
               <set-work-order :sitem="sitem" />
             </el-collapse-item>
           </el-collapse>
@@ -233,12 +233,18 @@ export default {
       activeTabs: "1",
       showColumns: showColumns,
       statusOptions: [
-        { value: "1", label: "待业务审批" },
+      { value: "1", label: "待业务审批" },
+        // {value:"2", label: "带专员审批"}, 该节点废除
+        // {value:"3", label: "带主管审批"}, 该节点废除
         { value: "4", label: "退货完成" },
         { value: "5", label: "业务驳回" },
-        { value: '8', label:'供应商驳回,待供应商负责人审核'},
+        // { value: "6", label: "采购驳回" }, 该节点废除
+        // { value: "7", label: "专员审批不通过" }, 该节点废除
+        { value: '8', label:'供应商已驳回,待采购审核'},
         { value: '9', label:'待供应商审核'},
-        { value: '10', label:'业务公司修改,待供应商确认'}
+        { value: '10', label:'业务公司修改,待供应商确认'},
+        { value: '11', label:'待设置工单'},
+        { value: '12', label:'待库管发货'}
       ],
       xs_order_type_options,
       sitem: null, //传给组件

+ 8 - 13
src/views/supplierSellOut/supplierSellReturn/index.vue

@@ -204,23 +204,18 @@ export default {
       sitem: null,
       // 状态
       statusOptions: [
-             // { value: "1", label: "待业务审批" },
-        // { value: "2", label: "待专员审批" },
-        // { value: "3", label: "待主管审批" },
-        // { value: "4", label: "退货完成" },
-        // { value: "5", label: "业务驳回" },
-        // { value: "6", label: "采购驳回" },
-        // { value: "7", label: "专员审批不通过" },
-        { value: "1", label: "待业务审批" },
-        // { value: "2", label: "待专员审批" },
-        // { value: "3", label: "待主管审批" },
+      { value: "1", label: "待业务审批" },
+        // {value:"2", label: "带专员审批"}, 该节点废除
+        // {value:"3", label: "带主管审批"}, 该节点废除
         { value: "4", label: "退货完成" },
         { value: "5", label: "业务驳回" },
-        // { value: "6", label: "采购驳回" }, // 废弃
-        // { value: "7", label: "专员审批不通过" },
-        { value: '8', label:'供应商驳回,待供应商负责人审核'},
+        // { value: "6", label: "采购驳回" }, 该节点废除
+        // { value: "7", label: "专员审批不通过" }, 该节点废除
+        { value: '8', label:'供应商已驳回,待采购审核'},
         { value: '9', label:'待供应商审核'},
         { value: '10', label:'业务公司修改,待供应商确认'},
+        { value: '11', label:'待设置工单'},
+        { value: '12', label:'待库管发货'}
       ],
       loading: false,
       showModel: false,