Browse Source

设置订单用途

戴艳蓉 2 years ago
parent
commit
a04d80f6f0

+ 4 - 0
src/apis/service/sellOut/salesOrder/index.js

@@ -20,4 +20,8 @@ export default {
   goods_detail: (data, params) => http(api + "goodinfo", data, "post", params),
   // 线上商品获取活动
   goods_active: (data, params) => http(api + "actquery", data, "post", params),
+  //订单用途绑定
+  saleuse: (data, params) => http(api + "saleuse", data, "post", params),
+  //订单用途列表
+  uselist: (data, params) => http(api + "uselist", data, "post", params),
 };

+ 2 - 2
src/assets/js/statusList.js

@@ -1,4 +1,4 @@
-const status = [
+const statusList = [
   { name: "启用", code: "1" },
   { name: "禁用", code: "0" },
 ];
@@ -8,4 +8,4 @@ const order_type_options = [
   { id: "3", label: "咨询单销售" },
   { id: "4", label: "项目咨询单销售" },
 ]
-export { status, order_type_options };
+export { statusList, order_type_options };

+ 7 - 6
src/views/process/unRead/index.vue

@@ -83,7 +83,7 @@
 </template>
 <script>
 import asyncRequest from "@/apis/service/process/unRead";
-import {statusList} from "@/assets/js/statusList";
+import { statusList } from "@/assets/js/statusList";
 import roleLevel from "@/assets/js/roleLevel";
 import mixinPage from "@/mixins/elPaginationHandle";
 import { mapGetters } from "vuex";
@@ -97,8 +97,9 @@ export default {
     ...mapGetters(["tablebtnSize", "searchSize", "size"]),
     powers() {
       let tran =
-        this.$store.getters.btnList.find((item) => item.menu_route == "unRead") ||
-        {};
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "unRead"
+        ) || {};
       if (tran && tran.action && tran.action.length > 0) {
         return tran.action;
       } else {
@@ -160,7 +161,7 @@ export default {
           prop: "apply_name",
           label: "申请人",
         },
-       
+
         {
           prop: "action_name",
           label: "操作人",
@@ -188,8 +189,8 @@ export default {
     getRouter(toRouter, queryId) {
       if (toRouter && queryId) {
         this.routeGoto(toRouter, { id: queryId });
-      }else{
-         this.$message.warning("暂未找到相关流程!");
+      } else {
+        this.$message.warning("暂未找到相关流程!");
       }
     },
 

+ 0 - 1
src/views/purchaseIn/purchaseOrder/detail.vue

@@ -109,7 +109,6 @@
                     "
                   ></el-tag>
                 </template>
-
                 <template slot="wsm">
                   <span>{{ sitem.wsm_supplier }}/{{ sitem.wsm_name }}</span>
                   <el-popover placement="top" width="300" trigger="hover">

+ 0 - 2
src/views/purchaseIn/workbench/index.vue

@@ -90,7 +90,6 @@
 </template>
 <script>
 import asyncRequest from "@/apis/service/purchaseIn/workbench";
-import {statusList} from "@/assets/js/statusList";
 import roleLevel from "@/assets/js/roleLevel";
 import mixinPage from "@/mixins/elPaginationHandle";
 import { mapGetters } from "vuex";
@@ -115,7 +114,6 @@ export default {
   },
   data() {
     return {
-      statusList: statusList,
       roleLevel: roleLevel,
       loading: false,
       showModel: false,

+ 14 - 7
src/views/sellOut/salesOrder/columns.js

@@ -42,15 +42,22 @@ export default [
 
   {
     prop: "status",
-    label: "状态",
+    label: "订单状态",
     _slot_: "status",
     width: "120px",
   },
   {
-    prop: "apply_name",
-    label: "申请人",
-    width: "60px",
+    prop: "order_type",
+    label: "订单类型",
+    _slot_: "order_type",
+    width: "130px",
   },
+  {
+    prop: "use_order",
+    label: "订单用途",
+    width: "100px",
+  },
+
   {
     prop: "customer_code",
     label: "客户公司编码",
@@ -68,9 +75,9 @@ export default [
   },
 
   {
-    prop: "use_order",
-    label: "订单用途",
-    width: "100px",
+    prop: "apply_name",
+    label: "创建人",
+    width: "60px",
   },
 
   {

+ 2 - 2
src/views/sellOut/salesOrder/components/addForm.vue

@@ -55,7 +55,7 @@
                 <el-input
                   v-model="ruleForm.platform_order"
                   placeholder="如:PO号"
-                  maxlength="50"
+                  maxlength="100"
                 />
               </el-form-item>
             </el-col>
@@ -79,7 +79,7 @@
                 <el-input
                   v-model="ruleForm.workNo"
                   placeholder="如:业管单号"
-                  maxlength="50"
+                  maxlength="100"
                 />
               </el-form-item>
             </el-col>

+ 20 - 2
src/views/sellOut/salesOrder/detail.vue

@@ -15,6 +15,14 @@
           @click="openModal()"
           >新建销售退货单
         </el-button>
+        <el-button
+          style="margin: 0 0 0 10px"
+          class="fr"
+          type="primary"
+          :size="'mini'"
+          @click="openModal()"
+          >设置部分字段
+        </el-button>
       </div>
       <el-tabs v-model="activeTabs">
         <el-tab-pane label="新建销售订单" name="0" v-if="queryType === 'add'">
@@ -41,8 +49,9 @@
                     :size="'mini'"
                     v-text="
                       (
-                        statusOptions.find((item) => item.value == sitem.status) ||
-                        {}
+                        statusOptions.find(
+                          (item) => item.value == sitem.status
+                        ) || {}
                       ).label || '--'
                     "
                   ></el-tag>
@@ -150,6 +159,12 @@
         @refresh="searchList"
         @cancel="showModel = false"
       /> -->
+      <set-partial
+        :sitem="sitem"
+        :show-model="setShowModel"
+        @refresh="initData"
+        @cancel="setShowModel = false"
+      />
     </div>
     <div v-else>
       <no-auth></no-auth>
@@ -164,6 +179,7 @@ import addForm from "./components/addForm";
 import orderOutTable from "./components/order-out-table";
 import addModel from "@/views/sellOut/sellReturn/components/addModel";
 import { showColumns } from "./components/ShowDataTableColumns";
+import setPartial from "./setPartial";
 export default {
   name: "salesOrderDetail",
   mixins: [mixinPage, resToken],
@@ -171,6 +187,7 @@ export default {
     addModel,
     addForm,
     orderOutTable,
+    setPartial,
   },
   computed: {
     powers() {
@@ -191,6 +208,7 @@ export default {
       activeTabs: "1",
       activeNames: ["-1", "0", "1", "2", "3", "4", "5", "6"],
       showColumns: showColumns,
+      setShowModel:false,
       orderOptions: [
         { id: "1", label: "线上商品销售" },
         { id: "2", label: "项目线上商品销售" },

+ 32 - 10
src/views/sellOut/salesOrder/index.vue

@@ -199,6 +199,17 @@
             "
           ></el-tag>
         </template>
+        <template #order_type="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            v-text="
+              (
+                orderOptions.find((item) => item.id == scope.row.order_type) ||
+                {}
+              ).label || '--'
+            "
+          ></el-tag>
+        </template>
         <template #operation="{ scope }">
           <el-tooltip effect="dark" content="详情" placement="top">
             <i
@@ -222,6 +233,13 @@
         @refresh="searchList"
         @cancel="showModel = false"
       />
+      <!--订单用途设置-->
+      <user-add-edit
+        :code="orderCodeList"
+        :show-model="userShowModel"
+        @refresh="searchList"
+        @cancel="userShowModel = false"
+      />
     </div>
     <div v-else>
       <no-auth></no-auth>
@@ -234,6 +252,7 @@ import resToken from "@/mixins/resToken";
 import asyncRequest from "@/apis/service/sellOut/salesOrder";
 import columns from "./columns"; //表格列参数
 import addEdit from "./components/addEdit";
+import userAddEdit from "./userAddEdit";
 import { mapGetters } from "vuex";
 
 export default {
@@ -241,6 +260,7 @@ export default {
   mixins: [mixinPage, resToken],
   components: {
     addEdit,
+    userAddEdit,
   },
   computed: {
     ...mapGetters(["tablebtnSize", "searchSize", "size"]),
@@ -311,6 +331,7 @@ export default {
       // 表格 - 列参数
       columns: columns,
       orderCodeList: [],
+      userShowModel: false,
     };
   },
   mounted() {
@@ -351,7 +372,6 @@ export default {
       this.showModel = true;
     },
     async supplierChange(e) {
-      console.log(e);
       const { id, code, label } = e;
       this.parmValue.supplierNo = code || "";
       this.parmValue.page = 1;
@@ -364,17 +384,19 @@ export default {
         return;
       }
       this.orderCodeList = [];
-      // let isok = true;
+      let isok = true;
       selection.forEach((e) => {
-        this.orderCodeList.push(e.good_code);
-        // if (e.use_order === "") {
-        //   isok = false;
-        // }
+        this.orderCodeList.push(e.orderCode);
+        if (e.use_order) {
+          isok = false;
+        }
       });
-      // if (!isok) {
-      //   this.$message.warning("只能选择未绑定的订单!");
-      //   return;
-      // }
+
+      if (!isok) {
+        this.$message.warning("只能选择未绑定的订单!");
+        return;
+      }
+      this.userShowModel = true;
     },
     // 客户选择
     async customerChange(e) {

+ 173 - 0
src/views/sellOut/salesOrder/setPartial.vue

@@ -0,0 +1,173 @@
+<template>
+  <el-dialog
+    v-loading="loading"
+    :title="'设置部分字段'"
+    :center="true"
+    align="left"
+    top="18vh"
+    width="500px"
+    :close-on-click-modal="false"
+    :visible.sync="showModelThis"
+    element-loading-text="拼命加载中"
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+    @close="showModelThis = false"
+  >
+    <el-card style="margin: -20px 0 0 0">
+      <el-row :gutter="10">
+        <el-col :span="24">
+          <el-form
+            ref="ruleForm"
+            :model="ruleForm"
+            status-icon
+            :rules="rulesThis"
+            label-width="80px"
+            class="demo-ruleForm"
+          >
+            <el-form-item label="承诺回款时间" prop="paytime">
+              <el-date-picker
+                v-model="ruleForm.paytime"
+                type="date"
+                style="width: 100%"
+                :disabled="false"
+                value-format="yyyy-MM-dd"
+                :picker-options="pickerOptions"
+                placeholder="承诺回款时间"
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="平台订单号" prop="platform_order">
+              <el-input
+                v-model="ruleForm.platform_order"
+                placeholder="如:PO号"
+                maxlength="50"
+              />
+            </el-form-item>
+            <el-form-item label="其他单号" prop="workNo">
+              <el-input
+                v-model="ruleForm.workNo"
+                placeholder="如:业管单号"
+                maxlength="50"
+              />
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="24" style="text-align: right">
+          <span class="fl">已选{{ this.code.length }}个订单</span>
+          <el-button type="primary" @click="submitForm">保 存 </el-button>
+          <el-button @click="showModelThis = false">取 消</el-button>
+        </el-col>
+      </el-row>
+    </el-card>
+  </el-dialog>
+</template>
+<script>
+import asyncRequest from "@/apis/service/sellOut/salesOrder";
+import resToken from "@/mixins/resToken";
+export default {
+  name: "brand",
+  props: ["showModel", "sitem"],
+  mixins: [resToken],
+  data() {
+    return {
+      loading: false,
+      title: "添加单位",
+      showModelThis: this.showModel,
+      options: [],
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 1000 * 60 * 60 * 24;
+        },
+      },
+      ruleForm: {
+        orderCode: "",
+        paytime: "",
+        workNo: "",
+        platform_order: "",
+      },
+      rulesThis: this.rules,
+      rules: {
+        paytime: [
+          { required: true, message: "请选择承诺回款时间", trigger: "change" },
+        ],
+        platform_order: [
+          { required: true, message: "请输入平台订单号", trigger: "blur" },
+        ],
+        workNo: [
+          { required: true, message: "请输入其他单号", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  watch: {
+    showModel: function (val) {
+      this.showModelThis = val;
+      if (val) {
+        this.initForm();
+      }
+    },
+    showModelThis(val) {
+      if (!val) {
+        this.$emit("cancel");
+      }
+    },
+  },
+  methods: {
+    async initForm() {
+      this.loading = true;
+      this.rulesThis = this.rules;
+      this.options = [];
+      await this.resetForm();
+      this.loading = false;
+    },
+    async resetForm() {
+      // 重置
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          this.$refs.ruleForm.resetFields();
+          this.$refs.ruleForm.clearValidate();
+          const { orderCode, paytime, workNo, platform_order } = this.sitem;
+          this.ruleForm = {
+            orderCode: orderCode || "",
+            paytime: paytime || "",
+            workNo: workNo || "",
+            platform_order: platform_order || "",
+          };
+        }
+      });
+    },
+    async submitForm() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          this.loading = true;
+          let model = JSON.parse(JSON.stringify(this.ruleForm));
+          let res = (res = await asyncRequest.saleuse(model));
+
+          this.loading = false;
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "设置成功!",
+              message: "",
+            });
+            this.showModelThis = false;
+            // 刷新
+            this.$emit("refresh");
+          } 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;
+        }
+      });
+    },
+  },
+};
+</script>
+
+   <style lang="scss" scoped>
+.brand {
+}
+</style>

+ 166 - 0
src/views/sellOut/salesOrder/userAddEdit.vue

@@ -0,0 +1,166 @@
+<template>
+  <el-dialog
+    v-loading="loading"
+    :title="'设置订单用途'"
+    :center="true"
+    align="left"
+    top="18vh"
+    width="500px"
+    :close-on-click-modal="false"
+    :visible.sync="showModelThis"
+    element-loading-text="拼命加载中"
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+    @close="showModelThis = false"
+  >
+    <el-card style="margin: -20px 0 0 0">
+      <el-row :gutter="10">
+        <el-col :span="24">
+          <el-form
+            ref="ruleForm"
+            :model="ruleForm"
+            status-icon
+            :rules="rulesThis"
+            label-width="80px"
+            class="demo-ruleForm"
+          >
+            <el-form-item label="订单用途" prop="useid">
+              <el-select
+                v-model="ruleForm.useid"
+                filterable
+                style="width: 100%"
+                clearable
+                placeholder="订单用途"
+              >
+                <el-option
+                  v-for="item in options"
+                  :key="item.id"
+                  :label="item.order_use"
+                  :value="item.id"
+                  :disabled="item.status !== '1'"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="24" style="text-align: right">
+          <span class="fl">已选{{ this.code.length }}个订单</span>
+          <el-button type="primary" @click="submitForm">保 存 </el-button>
+          <el-button @click="showModelThis = false">取 消</el-button>
+        </el-col>
+      </el-row>
+    </el-card>
+  </el-dialog>
+</template>
+<script>
+import asyncRequest from "@/apis/service/sellOut/salesOrder";
+import resToken from "@/mixins/resToken";
+export default {
+  name: "brand",
+  props: ["showModel", "code"],
+  mixins: [resToken],
+  data() {
+    return {
+      loading: false,
+      title: "添加单位",
+      showModelThis: this.showModel,
+      options: [],
+      ruleForm: {
+        orderCode: [],
+        useid: "",
+      },
+      rulesThis: this.rules,
+      rules: {
+        useid: [
+          { required: true, message: "请选择订单用途", trigger: "change" },
+        ],
+      },
+    };
+  },
+  watch: {
+    showModel: function (val) {
+      this.showModelThis = val;
+      if (val) {
+        this.initForm();
+      }
+    },
+    showModelThis(val) {
+      if (!val) {
+        this.$emit("cancel");
+      }
+    },
+  },
+  methods: {
+    async initForm() {
+      this.loading = true;
+      this.rulesThis = this.rules;
+      this.options = [];
+      await this.resetForm();
+      await this.get_options();
+      this.loading = false;
+    },
+    async resetForm() {
+      // 重置
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          this.$refs.ruleForm.resetFields();
+          this.$refs.ruleForm.clearValidate();
+
+          this.ruleForm = {
+            orderCode: this.code || [],
+            useid: "",
+          };
+        }
+      });
+    },
+    async submitForm() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          this.loading = true;
+          let model = JSON.parse(JSON.stringify(this.ruleForm));
+          let res = (res = await asyncRequest.saleuse(model));
+
+          this.loading = false;
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "设置成功!",
+              message: "",
+            });
+            this.showModelThis = false;
+            // 刷新
+            this.$emit("refresh");
+          } 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;
+        }
+      });
+    },
+    async get_options() {
+      const { code, data, message } = await asyncRequest.uselist({
+        page: 1,
+        size: 10000,
+      });
+      if (code === 0) {
+        const { list } = data;
+        this.options = list;
+      } else if (code >= 100 && code <= 104) {
+        await this.logout();
+      } else {
+        this.options = [];
+        this.$message.warning(message);
+      }
+    },
+  },
+};
+</script>
+
+   <style lang="scss" scoped>
+.brand {
+}
+</style>

+ 17 - 31
src/views/sellOut/sellOutOrder/index.vue

@@ -134,33 +134,18 @@
             "
           ></el-tag>
         </template>
-        <!-- 费用承担方 -->
-        <template #post_own="{ scope }">
-          <el-tag
-            :size="tablebtnSize"
-            :type="scope.row.status == '0' ? 'warning' : ''"
-            v-text="
-              (
-                post_ownOptions.find((item) => item.id == scope.row.post_own) ||
-                {}
-              ).label || '--'
-            "
-          ></el-tag>
-        </template>
-        <!-- 期望意愿 -->
-        <template #except_code="{ scope }">
-          <el-tag
-            :size="tablebtnSize"
-            :type="scope.row.status == '0' ? 'warning' : ''"
-            v-text="
-              (
-                except_codeOptions.find(
-                  (item) => item.id == scope.row.except_code
-                ) || {}
-              ).label || '--'
-            "
-          ></el-tag>
-        </template>
+           <template slot="order_type">
+                  <el-tag
+                    :size="'mini'"
+                    v-text="
+                      (
+                        statusOptions.find(
+                          (item) => item.value == sitem.status
+                        ) || {}
+                      ).label || '--'
+                    "
+                  ></el-tag>
+                </template>
         <template #operation="{ scope }">
           <el-tooltip
             v-if="powers.some((item) => item == '007')"
@@ -224,10 +209,11 @@ export default {
       select: "orderCode",
       s_input: "",
       customerCode: [], //客户公司code
-      except_codeOptions: [
-        { id: "1", label: "退货" },
-        { id: "2", label: "换货" },
-        { id: "3", label: "改变售价" },
+      order_type_ptions: [
+         { id: "1", label: "线上商品销售" },
+        { id: "2", label: "项目线上商品销售" },
+        { id: "3", label: "咨询单销售" },
+        { id: "4", label: "项目咨询单销售" },
       ],
       // post_ownOptions: [
       //   { id: "1", label: "客户承担" },