Browse Source

Merge branch 'master' of http://120.46.155.214:3000/xiaodai2022/order-ui-pc

snow 1 year ago
parent
commit
97006f7f61
50 changed files with 2307 additions and 95 deletions
  1. 0 0
      dist/index.html
  2. 1 0
      dist/static/css/chunk-06b72c68.e6103e62.css
  3. 0 0
      dist/static/css/chunk-4f4770aa.f242b546.css
  4. 0 0
      dist/static/css/chunk-5bf90486.cc4f45f4.css
  5. BIN
      dist/static/css/chunk-5bf90486.cc4f45f4.css.gz
  6. 0 0
      dist/static/js/app.91160615.js
  7. BIN
      dist/static/js/app.91160615.js.gz
  8. 0 0
      dist/static/js/chunk-06b72c68.eeab5c21.js
  9. 0 0
      dist/static/js/chunk-0bb2547c.61c9e453.js
  10. BIN
      dist/static/js/chunk-0bb2547c.61c9e453.js.gz
  11. 1 0
      dist/static/js/chunk-15caf0ce.76601e7d.js
  12. 0 0
      dist/static/js/chunk-1d0a69b6.d9f30ae3.js
  13. 0 0
      dist/static/js/chunk-4f4770aa.6b49f93f.js
  14. BIN
      dist/static/js/chunk-4f4770aa.6b49f93f.js.gz
  15. 1 0
      dist/static/js/chunk-4ff11544.958f6642.js
  16. 0 0
      dist/static/js/chunk-5bf90486.a4665824.js
  17. BIN
      dist/static/js/chunk-5bf90486.a4665824.js.gz
  18. 0 0
      dist/static/js/chunk-5f098f0b.d2d8a450.js
  19. 0 0
      dist/static/js/chunk-6e922e31.3511f84c.js
  20. 0 0
      dist/static/js/chunk-a4a85b14.6b2939ba.js
  21. 0 0
      dist/static/js/chunk-b7f101b0.14026cf9.js
  22. 0 0
      dist/static/js/chunk-ee636058.448259f7.js
  23. 0 0
      dist/static/js/chunk-libs.b1bcdc6c.js
  24. BIN
      dist/static/js/chunk-libs.b1bcdc6c.js.gz
  25. 10 6
      src/apis/service/purchaseIn/workbench/index.js
  26. 11 0
      src/apis/service/sellOut/filing/index.js
  27. 2 0
      src/apis/service/sellOut/zixunOrder/index.js
  28. BIN
      src/assets/img/neirong.jpg
  29. 4 0
      src/assets/js/statusList.js
  30. 62 33
      src/layout/components/Navbar.vue
  31. 23 8
      src/utils/validate.js
  32. 2 2
      src/views/dashboard/index.vue
  33. 13 18
      src/views/goodStore/goodsCost/components/baseForm.vue
  34. 2 2
      src/views/purchaseIn/purchaseDiffOrder/detail.vue
  35. 3 1
      src/views/purchaseIn/purchaseOrder/components/order-in-table.vue
  36. 3 3
      src/views/purchaseIn/purchaseOrder/detail.vue
  37. 3 1
      src/views/purchaseIn/purchaseOrder/index.vue
  38. 73 1
      src/views/purchaseIn/workbench/components/baseForm.vue
  39. 3 5
      src/views/purchaseIn/workbench/components/baseFormAddEdit.vue
  40. 3 1
      src/views/purchaseIn/wsmInOrder/components/wsm-in-order-model.vue
  41. 474 0
      src/views/sellOut/filing/columns.js
  42. 442 0
      src/views/sellOut/filing/detail.vue
  43. 331 0
      src/views/sellOut/filing/exam-form.vue
  44. 440 0
      src/views/sellOut/filing/index.vue
  45. 243 0
      src/views/sellOut/filing/order-out-table.vue
  46. 0 0
      src/views/sellOut/filing/报备单管理
  47. 9 5
      src/views/sellOut/sellOutOrder/detail.vue
  48. 74 3
      src/views/sellOut/zixunOrder/components/addEditGoodModal.vue
  49. 4 5
      src/views/sellOut/zixunOrder/components/baseFormAddEdit.vue
  50. 70 1
      src/views/sellOut/zixunOrder/components/editForm.vue

File diff suppressed because it is too large
+ 0 - 0
dist/index.html


+ 1 - 0
dist/static/css/chunk-06b72c68.e6103e62.css

@@ -0,0 +1 @@
+.dashboard-container[data-v-3aff6074]{padding:0 0 0 0;position:relative;width:100%;min-height:calc(100vh - 53px);display:block;overflow:hidden}.dashboard-container .bg-img[data-v-3aff6074]{width:100%;position:absolute;display:block;min-height:100%;height:100%}.dashboard-container .duihua[data-v-3aff6074]{position:absolute;top:1%;right:12%;z-index:2;width:290px}.dashboard-container .duihua img.bg[data-v-3aff6074]{display:block;width:100%}.dashboard-container .duihua div.neirong[data-v-3aff6074]{display:block;position:absolute;top:0;left:0;height:100%;min-height:100%;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;padding:45px 0 0 15px}.dashboard-container .duihua div.neirong img[data-v-3aff6074]{display:inline-block}.dashboard-container .wudi[data-v-3aff6074]{position:absolute;right:0;bottom:0;color:#fff;z-index:3}.emptyGif[data-v-3aff6074]{display:block;width:100%;margin:0 auto}.dashboard-editor-container[data-v-3aff6074]{position:relative;min-height:100%;width:100%;text-align:center}.dashboard-editor-container .info-container[data-v-3aff6074]{display:block;width:60%;text-align:center;margin:0 auto;padding:10vh 0 0 0}.dashboard-editor-container .info-container .welcome-title[data-v-3aff6074]{vertical-align:top;padding:0;margin:0 0 0 18px;color:#97a8be;display:inline-block;height:130px;line-height:130px;font-size:45px}.dashboard-editor-container img[data-v-3aff6074]{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1}

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-4f4770aa.f242b546.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-5bf90486.cc4f45f4.css


BIN
dist/static/css/chunk-5bf90486.cc4f45f4.css.gz


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.91160615.js


BIN
dist/static/js/app.91160615.js.gz


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-06b72c68.eeab5c21.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-0bb2547c.61c9e453.js


BIN
dist/static/js/chunk-0bb2547c.61c9e453.js.gz


+ 1 - 0
dist/static/js/chunk-15caf0ce.76601e7d.js

@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-15caf0ce"],{"1db4":function(t,s,i){"use strict";i.r(s);var c=[function(){var t=this.$createElement;t=this._self._c||t;return t("div",{staticClass:"pic-404"},[t("img",{staticClass:"pic-404__parent",attrs:{src:i("a36b"),alt:"404"}}),t("img",{staticClass:"pic-404__child left",attrs:{src:i("26fc"),alt:"404"}}),t("img",{staticClass:"pic-404__child mid",attrs:{src:i("26fc"),alt:"404"}}),t("img",{staticClass:"pic-404__child right",attrs:{src:i("26fc"),alt:"404"}})])}],a={name:"Page404",computed:{message:function(){return"访问的页面不存在..."}},methods:{goto:function(){window.vm.$router.push({path:"/welcome/dashboard"})}}},e=(i("e894"),i("2877"));e=Object(e.a)(a,(function(){var t=this,s=t.$createElement;s=t._self._c||s;return s("div",{staticClass:"wscn-http404-container"},[s("div",{staticClass:"wscn-http404"},[t._m(0),s("div",{staticClass:"bullshit"},[s("div",{staticClass:"bullshit__oops"},[t._v("哎呀!")]),s("div",{staticClass:"bullshit__headline"},[t._v(t._s(t.message))]),s("div",{staticClass:"bullshit__info"},[t._v(" 请检查您输入的网址是否正确,或单击下面的按钮返回主页. ")]),s("el-button",{attrs:{type:"primary",round:""},on:{click:function(s){return t.goto()}}},[t._v("回到首页")])],1)])])}),c,!1,null,"82eac96e",null);s.default=e.exports},"26fc":function(t,s,i){t.exports=i.p+"static/img/404_cloud.0f4bc32b.png"},"44e6":function(t,s,i){},a36b:function(t,s,i){t.exports=i.p+"static/img/404.a57b6f31.png"},e894:function(t,s,i){"use strict";i("44e6")}}]);

File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-1d0a69b6.d9f30ae3.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-4f4770aa.6b49f93f.js


BIN
dist/static/js/chunk-4f4770aa.6b49f93f.js.gz


+ 1 - 0
dist/static/js/chunk-4ff11544.958f6642.js

@@ -0,0 +1 @@
+(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-4ff11544"],{"04c0":function(t,n,e){"use strict";e("efa6")},"7e10":function(t,n,e){"use strict";e.r(n);var a=[function(){var t=this.$createElement;t=this._self._c||t;return t("div",{staticClass:"dingLoading"},[t("img",{attrs:{src:e("f8b2"),alt:""}})])}],c={name:"loadingPage",data:function(){return{}},mounted:function(){}},i=(e("04c0"),e("2877"));i=Object(i.a)(c,(function(){var t=this;t.$createElement;return t._self._c,t._m(0)}),a,!1,null,"17af7bec",null);n.default=i.exports},efa6:function(t,n,e){},f8b2:function(t,n,e){t.exports=e.p+"static/img/loading.190c78aa.gif"}}]);

File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-5bf90486.a4665824.js


BIN
dist/static/js/chunk-5bf90486.a4665824.js.gz


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-5f098f0b.d2d8a450.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-6e922e31.3511f84c.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-a4a85b14.6b2939ba.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-b7f101b0.14026cf9.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-ee636058.448259f7.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-libs.b1bcdc6c.js


BIN
dist/static/js/chunk-libs.b1bcdc6c.js.gz


+ 10 - 6
src/apis/service/purchaseIn/workbench/index.js

@@ -7,13 +7,16 @@ export default {
   // 任务详情
   detail: (data, params) => http(api + "consultzxinfo", data, "post", params),
   // 采返商品详情
-  good_detail: (data, params) => http(api + "consultfeadinfo", data, "post", params),
+  good_detail: (data, params) =>
+    http(api + "consultfeadinfo", data, "post", params),
   // 反馈商品添加
   good_add: (data, params) => http(api + "consultfeed", data, "post", params),
   // 反馈商品编辑
-  good_update: (data, params) => http(api + "consultfeededit", data, "post", params),
+  good_update: (data, params) =>
+    http(api + "consultfeededit", data, "post", params),
   // 反馈商品列表
-  good_list: (data, params) => http(api + "consultbidlist", data, "post", params),
+  good_list: (data, params) =>
+    http(api + "consultbidlist", data, "post", params),
   // 更新
   update: (data, params) => http(api + "customaredit", data, "post", params),
   // 新建
@@ -23,7 +26,8 @@ export default {
   // 状态
   status: (data, params) => http(api + "resultstatu", data, "post", params),
   // 获取实时金价
-  golpricelast: (data, params) => http(api + "golpricelast", data, "post", params),
-
-
+  golpricelast: (data, params) =>
+    http(api + "golpricelast", data, "post", params),
+  // 获取分类详情
+  catinfo: (data, params) => http(api + "catinfo", data, "post", params),
 };

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

@@ -0,0 +1,11 @@
+// 物业管理员
+import http from "@/apis/axios";
+const api = "admin/";
+export default {
+  // 分页查询
+  list: (data, params) => http(api + "filingList", data, "post", params),
+  // 详情
+  detail: (data, params) => http(api + "filingDetail", data, "post", params),
+  // 修改状态
+  status: (data, params) => http(api + "filingStatus", data, "post", params),
+};

+ 2 - 0
src/apis/service/sellOut/zixunOrder/index.js

@@ -31,4 +31,6 @@ export default {
   addrall: (data, params) => http(api + "addrall", data, "post", params),
   // 取实时金价
   golpricelast: (data, params) => http(api + "golpricelast", data, "post", params),
+   // 获取分类详情
+   catinfo: (data, params) => http(api + "catinfo", data, "post", params),
 };

BIN
src/assets/img/neirong.jpg


+ 4 - 0
src/assets/js/statusList.js

@@ -6,11 +6,13 @@ const cg_order_type_options = [
   { id: "1", label: "备库单" },
   { id: "2", label: "非库存品" },
   { id: "3", label: "采反" },
+  { id: "4", label: "报备商品" },
 ]
 const xs_order_type_options = [
   { id: "1", label: "库存品" },
   { id: "2", label: "非库存品" },
   { id: "3", label: "采购反馈" },
+  { id: "4", label: "报备商品" },
 ]
 const cg_order_source_options = [
   { id: "0", label: "备库单" },
@@ -20,6 +22,7 @@ const cg_order_source_options = [
   { id: "4", label: "平台导入" },
   { id: "5", label: "有赞平台" },
   { id: "6", label: "售后补换货" },
+  { id: "7", label: "报备转单" },
 ]
 const xs_order_source_options = [
   // { id: "0", label: "备库单" },
@@ -29,5 +32,6 @@ const xs_order_source_options = [
   { id: "4", label: "平台导入" },
   { id: "5", label: "有赞平台" },
   { id: "6", label: "售后补换货" },
+  { id: "7", label: "报备转单" },
 ]
 export { statusList, cg_order_type_options, xs_order_type_options, cg_order_source_options, xs_order_source_options };

+ 62 - 33
src/layout/components/Navbar.vue

@@ -1,14 +1,22 @@
 <template>
   <div class="navbar">
-    <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container"
-      @toggleClick="toggleSideBar" />
+    <hamburger
+      id="hamburger-container"
+      :is-active="sidebar.opened"
+      class="hamburger-container"
+      @toggleClick="toggleSideBar"
+    />
 
     <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />
 
     <div class="right-menu">
       <template v-if="device !== 'mobile'">
-        <i v-if="isShow" class="el-icon-message-solid right-menu-item hover-effect shake" @click="openNotice()"
-          style="height: 50px; width: 40px; line-height: 52px; font-size: 22px" />
+        <i
+          v-if="isShow"
+          class="el-icon-message-solid right-menu-item hover-effect shake"
+          @click="openNotice()"
+          style="height: 50px; width: 40px; line-height: 52px; font-size: 22px"
+        />
         <screenfull id="screenfull" class="right-menu-item hover-effect" />
 
         <!-- <el-tooltip content="Global Size" effect="dark" placement="bottom">
@@ -20,7 +28,7 @@
         <div class="avatar-wrapper">
           <img :src="avatar + '?imageView2/1/w/80/h/80'" class="user-avatar" />
           <div class="username">
-            {{$store.state.user.name}}
+            {{ $store.state.user.name }}
             <i class="el-icon-caret-bottom" />
           </div>
         </div>
@@ -42,18 +50,40 @@
       </el-dropdown>
     </div>
 
-    <el-dialog title="系统公告" :center="true" align="left" top="6vh" width="900px" @close="submit"
-      :close-on-click-modal="false" :visible.sync="showModel" element-loading-text="拼命加载中"
-      element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)" append-to-body>
+    <el-dialog
+      title="系统公告"
+      :center="true"
+      align="left"
+      top="6vh"
+      width="900px"
+      @close="submit"
+      :close-on-click-modal="false"
+      :visible.sync="showModel"
+      element-loading-text="拼命加载中"
+      element-loading-spinner="el-icon-loading"
+      element-loading-background="rgba(0, 0, 0, 0.8)"
+      append-to-body
+    >
       <el-card style="margin-top: -20px">
         <el-row :gutter="10" v-if="activeMsg !== null">
           <el-col :span="24">
             <div style="padding: 0 0 22px 0">
-              <el-alert :closable="false" show-icon center class="my-el-alert" :title="activeMsg.module"
-                :type="activeMsg.sys_type === 'VER' ? 'success' : 'warning'"></el-alert>
+              <el-alert
+                :closable="false"
+                show-icon
+                center
+                class="my-el-alert"
+                :title="activeMsg.module"
+                :type="activeMsg.sys_type === 'VER' ? 'success' : 'warning'"
+              ></el-alert>
             </div>
-            <el-form :size="'mini'" label-position="left" label-width="82px" class="demo-table-expand"
-              style="padding-left: 25px">
+            <el-form
+              :size="'mini'"
+              label-position="left"
+              label-width="82px"
+              class="demo-table-expand"
+              style="padding-left: 25px"
+            >
               <el-row>
                 <el-col :span="12" v-if="activeMsg.sys_type === 'VER'">
                   <el-form-item label="版本编号:">
@@ -61,9 +91,9 @@
                   </el-form-item>
                 </el-col>
                 <el-col :span="activeMsg.sys_type === 'VER' ? 12 : 24">
-                  <el-form-item :label="
-                    activeMsg.sys_type === 'VER' ? '更新时间:' : '预计时间:'
-                  ">
+                  <el-form-item
+                    :label="activeMsg.sys_type === 'VER' ? '更新时间:' : '预计时间:'"
+                  >
                     <p style="margin: 0">
                       {{ activeMsg.addtime }}
                     </p>
@@ -75,8 +105,11 @@
                   </el-form-item>
                 </el-col>
                 <el-col :span="24" style="text-align: right">
-                  <el-checkbox v-model="checked" class="fl" style="padding-top: 5px">我已知晓,后续不再提示!</el-checkbox>
-                  <el-button @click="submit" type="primary" plain :size="'mini'">关闭
+                  <!-- <el-checkbox v-model="checked" class="fl" style="padding-top: 5px"
+                    >我已知晓,后续不再提示!</el-checkbox
+                  > -->
+                  <el-button @click="submit" type="primary" plain :size="'mini'"
+                    >关闭
                   </el-button>
                 </el-col>
               </el-row>
@@ -122,21 +155,22 @@ export default {
   },
   methods: {
     async openNotice(is) {
-      if (getNotice() && getNotice().length > 0) {
-        this.lastNotice = JSON.parse(getNotice());
-      } else {
-        this.lastNotice = null;
-      }
+      // if (getNotice() && getNotice().length > 0) {
+      //   this.lastNotice = JSON.parse(getNotice());
+      // } else {
+      //   this.lastNotice = null;
+      // }
       const { code, count, item, message } = await this.initData();
       if (code === 0) {
         if (count != 0) {
           this.activeMsg = item;
           console.log(this.activeMsg);
-          if (is) {
-            this.typeShow();
-          } else {
-            this.showModel = true;
-          }
+          this.showModel = true;
+          // if (is) {
+          //   this.typeShow();
+          // } else {
+          //   this.showModel = true;
+          // }
         } else {
           this.$message.warning("暂无系统消息!");
         }
@@ -177,11 +211,7 @@ export default {
       if (this.lastNotice + "" === "null" && is) {
         this.showModel = true;
       } else {
-        const {
-          addtime: laddtime,
-          type: ltype,
-          sys_type: lsys_type,
-        } = this.lastNotice;
+        const { addtime: laddtime, type: ltype, sys_type: lsys_type } = this.lastNotice;
         const { sys_type, addtime } = this.activeMsg;
 
         if (laddtime === addtime && lsys_type === sys_type) {
@@ -244,7 +274,6 @@ export default {
 
 <style lang="scss" scoped>
 @keyframes shake {
-
   /* 水平抖动,核心代码 */
   10%,
   90% {

+ 23 - 8
src/utils/validate.js

@@ -1,7 +1,7 @@
 /**
  * Created by PanJiaChen on 16/11/18.
  */
- function accMulIn(arg1, arg2) {
+function accMulIn(arg1, arg2) {
   let m = 0,
     s1 = arg1.toString(),
     s2 = arg2.toString();
@@ -319,7 +319,7 @@ export function isAlphanumeric(s) {
  * 数字大写字母
  * @param {*} s
  */
- export function isNumeric(s) {
+export function isNumeric(s) {
   return /^[0-9A-Z]*$/.test(s);
 }
 
@@ -401,10 +401,10 @@ export function add_sum(arg1, arg2) {
 
 //乘法精算
 export function accMul(arg1, arg2) {
-  return accMulIn(arg1, arg2)
+  return accMulIn(arg1, arg2);
 }
- //除法精度问题
- export function accDiv(arg1, arg2) {
+//除法精度问题
+export function accDiv(arg1, arg2) {
   let t1 = 0,
     t2 = 0,
     c1,
@@ -420,7 +420,24 @@ export function accMul(arg1, arg2) {
   c2 = Number(arg2.toString().replace(".", ""));
   return (c1 / c2) * Math.pow(10, t2 - t1);
   // }
-};
+}
+//减法精度问题
+export function accSub(arg1, arg2) {
+  var r1, r2, m, n;
+  try {
+    r1 = arg1.toString().split(".")[1].length;
+  } catch (e) {
+    r1 = 0;
+  }
+  try {
+    r2 = arg2.toString().split(".")[1].length;
+  } catch (e) {
+    r2 = 0;
+  }
+  m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度
+  n = r1 >= r2 ? r1 : r2;
+  return ((arg1 * m - arg2 * m) / m).toFixed(n);
+}
 export function isSpecialSymbol(s) {
   // console.log(s);
   const str = (s ?? "").replace(
@@ -499,5 +516,3 @@ export function hasSpace(s) {
   const str2 = s.replace(/[\r\n]/g, "");
   return !(str2 === s);
 }
-
-

+ 2 - 2
src/views/dashboard/index.vue

@@ -13,7 +13,7 @@
       <!-- <img src="@/assets/img/duihuakuang.png" /> -->
       <img class="bg" src="@/assets/img/duihua.png" />
       <div class="neirong">
-        <img src="@/assets/img/neirong.png" />
+        <img src="@/assets/img/neirong.jpg" style="transform:scale(0.85)" />
       </div>
 
       <!-- <div>
@@ -81,7 +81,7 @@ export default {
       width: 100%;
       box-sizing: border-box;
       text-align: center;
-      padding:60px 0 0 20px;
+      padding:45px 0 0 15px;
       img {
         display: inline-block;
     //  width: 2;

+ 13 - 18
src/views/goodStore/goodsCost/components/baseForm.vue

@@ -1950,26 +1950,21 @@ export default {
     async set_must_spec() {
       const { cat_id } = this.ruleForm;
       let id = cat_id.length == 1 ? cat_id[0] : "";
-      let list1 =
-        this.spec_tableData && this.spec_tableData.length > 0
-          ? JSON.parse(JSON.stringify(this.spec_tableData))
-          : [];
-      let list2 = [];
       if (id) {
         const { code, message, data } = await asyncRequest.catinfo({ id: id });
         if (code === 0) {
           const { spec } = data;
           if (spec && spec.length > 0) {
-            if (list1 && list1.length > 0) {
-              list1.forEach((c) => {
+            if (this.spec_tableData && this.spec_tableData.length > 0) {
+              this.spec_tableData.forEach((c) => {
                 c.isMust = false;
               });
               spec.forEach((a, ai) => {
-                let findex = list1.findIndex((b) => b.spec_id === a.id);
+                let findex = this.spec_tableData.findIndex((b) => b.spec_id === a.id);
                 if (findex !== -1) {
-                  list1[findex].isMust = true;
+                  this.spec_tableData[findex].isMust = true;
                 } else {
-                  list1.push({
+                  this.spec_tableData.push({
                     id: "",
                     index: "1",
                     spec_id: a.id,
@@ -1991,26 +1986,26 @@ export default {
                   spec_value_value: "",
                   spec_value_id: "",
                 };
-                list1.push(model);
+                this.spec_tableData.push(model);
               });
             }
           }
-          list1.map((e, ei) => {
+          this.spec_tableData.map((e, ei) => {
             e.index = ei + "";
             return e;
           });
-          this.spec_tableData =
-            list1 && list1.length > 0 ? JSON.parse(JSON.stringify(list1)) : [];
+          this.spec_tableData.forEach((si, sii) => {
+            this.$set(this.spec_tableData, sii, si);
+          });
         } else if (code >= 100 && code <= 104) {
           await this.logout();
         } else {
           this.$message.warning(message);
         }
       } else {
-        list1.forEach((e) => {
-          if (!e.isMust) {
-            list2.push(e);
-          }
+        this.spec_tableData.forEach((si, sii) => {
+          si.isMust = false;
+          this.$set(this.spec_tableData, sii, si);
         });
       }
     },

+ 2 - 2
src/views/purchaseIn/purchaseDiffOrder/detail.vue

@@ -92,7 +92,7 @@
 
         <el-tab-pane label="流程图" name="3">
           <flow-chart process_id="9" type="CGGCD" :orderCode="queryId" />
-       </el-tab-pane>
+        </el-tab-pane>
       </el-tabs>
     </div>
     <div v-else>
@@ -157,7 +157,7 @@ export default {
       loading: false,
       queryId: "",
       orderCode: "", //审批记录的code
-      order_type: "", //用于判断订单是备库单还是竞价单
+      order_type: "",
       type: "", //审批记录
     };
   },

+ 3 - 1
src/views/purchaseIn/purchaseOrder/components/order-in-table.vue

@@ -30,7 +30,9 @@
                     (status === '2' && powers.some((i) => i == '028'))) &&
                   sitem &&
                   ((sitem.has_account + '' === '0' &&
-                    (sitem.order_type + '' === '2' || sitem.order_type + '' === '3')) ||
+                    (sitem.order_type + '' === '2' ||
+                      sitem.order_type + '' === '3' ||
+                      sitem.order_type + '' === '4')) ||
                     sitem.order_type + '' === '1')
                 "
                 effect="dark"

+ 3 - 3
src/views/purchaseIn/purchaseOrder/detail.vue

@@ -63,7 +63,8 @@
                       sitem.status === '0' &&
                       ((sitem.has_account + '' === '0' &&
                         (sitem.order_type + '' === '2' ||
-                          sitem.order_type + '' === '3')) ||
+                          sitem.order_type + '' === '3' ||
+                          sitem.order_type + '' === '4')) ||
                         sitem.order_type + '' === '1')
                     "
                     effect="dark"
@@ -221,10 +222,9 @@
           />
         </el-tab-pane>
 
-        
         <el-tab-pane label="流程图" name="3">
           <flow-chart process_id="1" type="CGD" :orderCode="queryId" />
-       </el-tab-pane>
+        </el-tab-pane>
       </el-tabs>
     </div>
     <div v-else>

+ 3 - 1
src/views/purchaseIn/purchaseOrder/index.vue

@@ -480,7 +480,9 @@ export default {
         }
         if (
           e.has_account + "" !== "0" &&
-          (e.order_type + "" === "2" || e.order_type + "" === "3")
+          (e.order_type + "" === "2" ||
+            e.order_type + "" === "3" ||
+            e.order_type + "" === "4")
         ) {
           iss = true;
           errorList.push(e.cgdNo);

+ 73 - 1
src/views/purchaseIn/workbench/components/baseForm.vue

@@ -209,7 +209,12 @@
                       @click="openEdit(scope.$index, scope.row)"
                     ></i>
                   </el-tooltip>
-                  <el-tooltip effect="dark" content="删除" placement="top">
+                  <el-tooltip
+                    effect="dark"
+                    v-if="!scope.row.isMust"
+                    content="删除"
+                    placement="top"
+                  >
                     <i
                       class="el-icon-delete tb-icon"
                       @click="openDelete(scope.$index)"
@@ -1070,6 +1075,7 @@ export default {
           if (this.type === "add") {
             this.spec_tableData = JSON.parse(JSON.stringify(this.askItem.specinfo));
           }
+          await this.set_must_spec();
         }
       });
     },
@@ -1110,7 +1116,73 @@ export default {
       if (this.is_noble) {
         this.ruleForm.nake_fee = "0";
       }
+
       this.computedCost();
+      await this.set_must_spec();
+    },
+    async set_must_spec() {
+      const { cat_id } = this.ruleForm;
+      let id = cat_id.length == 1 ? cat_id[0] : "";
+      if (id) {
+        const { code, message, data } = await asyncRequest.catinfo({ id: id });
+        if (code === 0) {
+          const { spec } = data;
+          if (spec && spec.length > 0) {
+            if (this.spec_tableData && this.spec_tableData.length > 0) {
+              this.spec_tableData.forEach((c) => {
+                c.isMust = false;
+              });
+              spec.forEach((a, ai) => {
+                let findex = this.spec_tableData.findIndex((b) => b.specid === a.id);
+                if (findex !== -1) {
+                  this.spec_tableData[findex].isMust = true;
+                } else {
+                  this.spec_tableData.push({
+                    id: "",
+                    index: "1",
+                    specid: a.id,
+                    spec_name: a.spec_name,
+                    isMust: true,
+                    spec_value_name: "",
+                    spec_value_id: "",
+                  });
+                }
+              });
+            } else {
+              spec.forEach((a, ai) => {
+                let model = {
+                  id: "",
+                  index: "1",
+                  specid: a.id,
+                  spec_name: a.spec_name,
+                  isMust: true,
+                  spec_value_name: "",
+                  spec_value_id: "",
+                };
+                this.spec_tableData.push(model);
+              });
+            }
+          }
+          this.spec_tableData.map((e, ei) => {
+            e.index = ei + "";
+            return e;
+          });
+
+          this.spec_tableData.forEach((si, sii) => {
+            this.$set(this.spec_tableData, sii, si);
+          });
+          console.log(this.spec_tableData);
+        } else if (code >= 100 && code <= 104) {
+          await this.logout();
+        } else {
+          this.$message.warning(message);
+        }
+      } else {
+        this.spec_tableData.forEach((si, sii) => {
+          si.isMust = false;
+          this.$set(this.spec_tableData, sii, si);
+        });
+      }
     },
     setrules() {
       let list1 = ["noble_weight", "is_gold_price", "is_diff"];

+ 3 - 5
src/views/purchaseIn/workbench/components/baseFormAddEdit.vue

@@ -29,7 +29,7 @@
             <el-form-item label="规格类型" prop="specid">
               <search-spec
                 :value="ruleForm.specid"
-                :disabled="false"
+                :disabled="sitem.isMust"
                 :size="'mini'"
                 :isDetail="false"
                 :placeholder="'规格类型'"
@@ -37,14 +37,12 @@
               />
             </el-form-item>
             <el-form-item label="规格值" prop="spec_value_id">
-              <div
-                v-if="specVlist.length > 0"
-              >
+              <div v-if="specVlist.length > 0">
                 <el-select
                   placeholder="请选择规格值"
                   v-model="ruleForm.spec_value_id"
                   @change="spec_value_id_change"
-                  style="width:100%"
+                  style="width: 100%"
                   filterable
                 >
                   <el-option

+ 3 - 1
src/views/purchaseIn/wsmInOrder/components/wsm-in-order-model.vue

@@ -67,7 +67,9 @@
                     v-model="ruleForm.sendtype"
                     style="width: 100%"
                     :size="'mini'"
-                    :disabled="sitem && sitem.order_type === '3'"
+                    :disabled="
+                      sitem && (sitem.order_type === '3' || sitem.order_type === '4')
+                    "
                     placeholder="发货方式"
                     @change="sendtypeChange"
                   >

+ 474 - 0
src/views/sellOut/filing/columns.js

@@ -0,0 +1,474 @@
+//是否定制
+const options1 = [
+  { id: "0", name: "否" },
+  { id: "1", name: "是" },
+];
+//专属类型
+const options2 = [
+  { id: "0", name: "非泰康" },
+  { id: "1", name: "泰康" },
+];
+//销售权限
+const options3 = [
+  { id: "0", name: "无销售权限" },
+  { id: "1", name: "有销售权限" },
+];
+
+//是否库存品
+const options4 = [
+  { id: "0", name: "非库存品" },
+  { id: "1", name: "库存品" },
+];
+//是否启用实时金价
+const options5 = [
+  { id: "0", name: "否" },
+  { id: "1", name: "是" },
+];
+//供货区域
+const options6 = [
+  { id: "1", name: "全国" },
+  { id: "2", name: "全国除偏远" },
+];
+//是否启用阶梯
+const options7 = [
+  { id: "0", name: "否" },
+  { id: "1", name: "是" },
+];
+//有无工差
+const options8 = [
+  { id: "0", name: "无工差" },
+  { id: "1", name: "有工差" },
+];
+//配置要求
+const options9 = ["证书", "包装盒", "绒布袋", "标签", "其他"];
+//付款方式
+const options10 = [
+  { id: "0", name: "现结" },
+  { id: "1", name: "月清" },
+  { id: "2", name: "双月清" },
+];
+//发货方式
+const options11 = [
+  { id: "0", name: "公司自提" },
+  { id: "1", name: "供应商包邮" },
+];
+
+const options12 = [
+  { id: "0", name: "一地" },
+  { id: "1", name: "多地" },
+];
+const options13 = [
+  { id: "0", name: "现结" },
+  { id: "1", name: "月清" },
+  { id: "2", name: "双月清" },
+];
+const statusList = [
+  { id: "0", label: "待审核", type: "warning" },
+  { id: "1", label: "审核失败", type: "danger" },
+  { id: "2", label: "待转单", type: "" },
+  { id: "3", label: "转单成功", type: "success" },
+  { id: "4", label: "转单失败", type: "danger" },
+  { id: "5", label: "取消转单", type: "info" },
+];
+const is_determine_price_options = [
+  { id: "0", label: "否" },
+  { id: "1", label: "是" },
+];
+const editColumns = [
+  {
+    prop: "filingCode",
+    label: "报备单编号",
+    span: 6,
+  },
+  {
+    prop: "status",
+    label: "状态",
+    _slot_: "status",
+    span: 6,
+  },
+  {
+    prop: "apply_name",
+    label: "申请人",
+    span: 6,
+  },
+  {
+    prop: "addtime",
+    label: "申请时间",
+    span: 6,
+  },
+  {
+    prop: "supplierName",
+    label: "供应商名称",
+    _slot_: "supplierName",
+    span: 12,
+  },
+  {
+    prop: "customerName",
+    label: "业务公司名称",
+    _slot_: "customerName",
+    span: 12,
+  },
+  {
+    prop: "companyName",
+    label: "客户名称",
+    _slot_: "companyName",
+    span: 12,
+  },
+  {
+    prop: "num",
+    label: "销售数量",
+    span: 6,
+  },
+
+  {
+    prop: "is_determine_price",
+    label: "是否确认售价",
+    _slot_: "is_determine_price",
+    span: 6,
+  },
+ 
+
+  {
+    prop: "cgd_charge",
+    label: "采购单价",
+    span: 6,
+  },
+  {
+    prop: "price",
+    label: "销售单价",
+    span: 6,
+  },
+  {
+    prop: "expect_service",
+    label: "期望服务费",
+    span: 6,
+  },
+  {
+    prop: "expect_service_proportion",
+    label: "期望服务费比例",
+    span: 6,
+  },
+
+  {
+    prop: "orderCode",
+    label: "订单编号",
+    span: 6,
+  },
+  {
+    prop: "plat_code",
+    label: "平台商品编号",
+    span: 6,
+  },
+  {
+    prop: "service_charge",
+    label: "最终服务费",
+    span: 6,
+  },
+  {
+    prop: "service_proportion",
+    label: "最终服务费比例",
+    span: 6,
+  },
+  {
+    prop: "platform_name",
+    label: "所属平台",
+    span: 24,
+  },
+];
+//采返 采购商品字段
+const coveColumns = [
+  {
+    prop: "good_name",
+    label: "商品名称",
+    _slot_: "good_name",
+    span: 24,
+  },
+
+  {
+    prop: "cat",
+    label: "分类",
+    span: 8,
+  },
+
+  {
+    prop: "brand_name",
+    label: "品牌",
+    span: 8,
+  },
+  {
+    prop: "send_way",
+    label: "发货方式",
+    _slot_: "send_way",
+    span: 8,
+  },
+  {
+    prop: "unit_name",
+    label: "单位",
+    span: 6,
+  },
+  {
+    prop: "tax",
+    label: "税点",
+    append: '%',
+    span: 6,
+  },
+  {
+    prop: "pay_way",
+    label: "付款方式",
+    _slot_: "pay_way",
+    span: 6,
+  },
+
+
+  {
+    prop: "weight",
+    label: "商品总克重",
+    append: 'g',
+    span: 6,
+  },
+
+
+  // {
+  //   prop: "addtime",
+  //   label: "反馈时间",
+  //   span: 6,
+  // },
+
+
+
+
+
+  {
+    prop: "preservation_day",
+    label: "有效期",
+    append: '天',
+    span: 6
+  },
+
+  {
+    prop: "delivery_day",
+    label: "物流时间",
+    append: '天',
+    span: 6
+  },
+  {
+    prop: "make_day",
+    label: "生产工期",
+    append: '天',
+    span: 6
+  },
+
+
+
+  {
+    prop: "supply_area",
+    label: "供货区域",
+    _slot_: "supply_area",
+    span: 6,
+  },
+
+
+  {
+    prop: "good_img",
+    label: "商品图片",
+    _slot_: "good_img",
+    span: 24,
+
+  },
+  // {
+  //   prop: "noble",
+  //   _slot_: "noble",
+  //   label: "贵金属信息",
+  //   span: 24,
+  // },
+  {
+    prop: "cost_desc",
+    label: "工艺说明",
+    span: 24,
+  },
+  {
+    prop: "remark",
+    label: "采返备注",
+    span: 24,
+  },
+
+
+]
+const costArr = [
+  {
+    prop: "cert_fee",
+    label: "成本证书费",
+    append: "元",
+    span: 6,
+  },
+  {
+    prop: "pakge_fee",
+    label: "成本包装费",
+    append: "元",
+    span: 6,
+  },
+  {
+    prop: "cost_fee",
+    label: "成本工艺费",
+    append: "元",
+    span: 6,
+  },
+  {
+    prop: "mark_fee",
+    label: "成本加标费",
+    append: "元",
+    span: 6,
+  },
+
+  {
+    prop: "demo_fee",
+    label: "成本打样费",
+    append: "元",
+    span: 6,
+  },
+  {
+    prop: "open_fee",
+    label: "成本开模费",
+    append: "元",
+    span: 6,
+  },
+  {
+    prop: "delivery_fee",
+    label: "成本物流费",
+    append: "元",
+    span: 6,
+  },
+  {
+    prop: "nake_fee",
+    label: "成本裸价",
+    append: "元",
+    span: 6,
+  },
+  {
+    prop: "total_fee",
+    label: "采购成本合计",
+    append: "元",
+    span: 24,
+  },
+];
+
+const bargainingArr = [
+  {
+    prop: "before_rate",
+    label: "议价前毛利率",
+    append: "%",
+    span: 12,
+  },
+
+  {
+    prop: "after_rate",
+    label: "议价后毛利率",
+    append: "%",
+    span: 12,
+  },
+];
+
+const listCol = [
+  {
+    prop: "filingCode",
+    label: "报备单编码",
+    minWidth: "155",
+  },
+  // {
+  //   prop: "good_img",
+  //   label: "图片",
+  //   _slot_: "good_img",
+  //   width: "50",
+  // },
+  {
+    prop: "good_name",
+    label: "商品名称",
+    minWidth: "155",
+  },
+
+  {
+    prop: "status",
+    label: "状态",
+    _slot_: "status",
+    width: "120px",
+  },
+  {
+    prop: "num",
+    label: "数量",
+    width: "110",
+  },
+
+  {
+    prop: "price",
+    label: "销售价",
+    width: "110",
+  },
+  {
+    prop: "expect_service",
+    label: "期望服务费",
+    width: "110",
+  },
+
+  {
+    prop: "companyCode",
+    label: "客户编号",
+    minWidth: "110",
+  },
+
+  {
+    prop: "companyName",
+    label: "客户名称",
+    minWidth: "110",
+  },
+  {
+    prop: "orderCode",
+    label: "订单编号",
+    width: "150",
+  },
+
+
+  {
+    prop: "addtime",
+    label: "创建时间",
+    width: "145px",
+  },
+  {
+    prop: "",
+    label: "操作",
+    fixed: "right",
+    _noset_: true,
+    _slot_: "operation",
+    width: 50,
+  },
+];
+
+const rate_status_options = [
+  { id: "0", label: "全部无法通过" },
+  { id: "1", label: "业务主管通过" },
+  { id: "2", label: "财务主管通过" },
+  { id: "3", label: "boss通过" },
+];
+
+export {
+  listCol,
+  options1,
+  options2,
+  options3,
+  options4,
+  options5,
+  options6,
+  options7,
+  options8,
+  options9,
+  options10,
+  options11,
+  options12,
+  options13,
+  editColumns,
+  bargainingArr,
+  costArr,
+  statusList,
+  rate_status_options,
+  is_determine_price_options,
+  coveColumns
+};

+ 442 - 0
src/views/sellOut/filing/detail.vue

@@ -0,0 +1,442 @@
+<template>
+  <div class="filingDetail">
+    <div class="filingDetail-main" v-if="powers.some((i) => i == '007')">
+      <el-tabs v-model="projectTabs" v-loading="loading">
+        <el-tab-pane label="报备单详情" name="1">
+          <el-collapse v-model="activeNames" style="margin: -18px 0 0 0">
+            <el-collapse-item :title="'报备单详情'" name="1">
+              <show-data-table
+                style="padding: -5px 0 10px 0"
+                :newTime="newTime"
+                v-if="newTime !== ''"
+                :sitem="sitem"
+                :columns="editColumns"
+              >
+                <template slot="status">
+                  <el-tag
+                    :size="tablebtnSize"
+                    :type="
+                      (statusList.find((item) => item.id == sitem.status) || {}).type ||
+                      ''
+                    "
+                    v-text="
+                      (statusList.find((item) => item.id == sitem.status) || {}).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="customerName">
+                  <span>{{ sitem.customerName }}</span>
+                  <el-popover placement="top" width="300" trigger="hover">
+                    <ul>
+                      <li>
+                        <span>业务公司编号:</span><span>{{ sitem.customerNo }}</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"
+                    v-if="sitem.companyCode"
+                  >
+                    <ul>
+                      <li>
+                        <span>企业客户编号:</span><span>{{ sitem.companyCode }}</span>
+                      </li>
+                    </ul>
+                    <i class="el-icon-warning-outline fr" slot="reference"></i>
+                  </el-popover>
+                </template>
+
+                <template slot="is_determine_price">
+                  <el-tag
+                    :size="'mini'"
+                    v-text="
+                      (
+                        is_determine_price_options.find(
+                          (item) => item.id == sitem.is_determine_price + ''
+                        ) || {}
+                      ).label || '--'
+                    "
+                  ></el-tag>
+                </template>
+              </show-data-table>
+            </el-collapse-item>
+            <el-collapse-item title="商品信息" name="20">
+              <show-data-table
+                :newTime="newTime"
+                v-if="newTime !== ''"
+                :columns="coveColumns"
+                :sitem="sitem"
+              >
+                <template slot="good_name">
+                  <span>{{ sitem.good_name }}</span>
+                  <span v-for="(si, i) in sitem.specinfo" :key="si.spec_id + i">
+                    <span v-if="i !== 0">-</span>
+                    <span v-else>_</span>
+                    <span>{{ si.spec_name }}[{{ si.spec_value_name }}]</span>
+                  </span>
+                  <el-popover
+                    v-if="sitem.spuCode"
+                    placement="top"
+                    width="300"
+                    trigger="hover"
+                  >
+                    <ul>
+                      <li>
+                        <span>商品编号:</span><span>{{ sitem.spuCode }}</span>
+                      </li>
+                    </ul>
+                    <i class="el-icon-warning-outline fr" slot="reference"></i>
+                  </el-popover>
+                </template>
+
+                <template slot="send_way">
+                  <span>{{ sitem.send_way === "1" ? "供应商包邮" : "公司自提" }}</span>
+                </template>
+
+                <template slot="good_type">
+                  <el-tag
+                    :size="'mini'"
+                    v-text="
+                      (options1.find((item) => item.id == sitem.good_type) || {}).name ||
+                      '--'
+                    "
+                  />
+                  <span v-if="sitem.good_type === '1'" style="padding: 0 0 0 5px"
+                    >{{ sitem.moq }}起订/工期{{ sitem.customized }}天</span
+                  >
+                </template>
+                <template slot="supply_area">
+                  <el-tag
+                    :size="'mini'"
+                    v-text="
+                      (options6.find((item) => item.id === sitem.supply_area) || {})
+                        .name || '--'
+                    "
+                  ></el-tag>
+                </template>
+
+                <template slot="pay_way">
+                  <el-tag
+                    :size="'mini'"
+                    v-text="
+                      (options13.find((item) => item.id == sitem.pay_way) || {}).name ||
+                      '--'
+                    "
+                  />
+                </template>
+                <template slot="noble">
+                  <span v-if="sitem.noble_name"
+                    >{{ sitem.noble_weight ? sitem.noble_weight : "0" }}g-{{
+                      sitem.noble_name
+                    }}-{{ sitem.gold_price ? sitem.gold_price : "0" }}元/g-{{
+                      sitem.is_gold_price === "0" ? "不" : ""
+                    }}启用实时金价-{{ sitem.is_diff === "1" ? "有" : "无" }}工差-{{
+                      sitem.config
+                    }}-{{ sitem.other_config }}</span
+                  >
+                  <span v-else>--</span>
+                </template>
+                <template slot="good_img">
+                  <img
+                    v-viewer
+                    style="width: 23px; height: 23px; margin: 0 5px 0 0"
+                    class="fl"
+                    v-for="(si, sii) in sitem.good_img"
+                    :key="si + sii"
+                    :src="si"
+                    alt=""
+                  /> </template
+              ></show-data-table>
+            </el-collapse-item>
+
+            <el-collapse-item
+              title="审批"
+              name="2"
+              v-if="(status == '0' || status == '2') && powers.some((i) => i == '043')"
+            >
+              <exam-forms
+                :newTime="newTime"
+                v-if="newTime !== ''"
+                :sitem="this.sitem"
+                @searchChange="examFormSubmit($event, '')"
+              />
+            </el-collapse-item>
+            <el-collapse-item
+              title="收货地址"
+              name="3"
+              v-if="this.status === '3' || this.status === '4'"
+            >
+              <order-out-table
+                :newTime="newTime"
+                v-if="newTime !== ''"
+                :id="sitem.orderCode"
+              />
+            </el-collapse-item>
+          </el-collapse>
+        </el-tab-pane>
+        <el-tab-pane label="审批记录" name="3">
+          <process-time-line
+            v-if="newTime !== ''"
+            :newTime="newTime"
+            :type="'YJD'"
+            :orderCode="queryId"
+          />
+        </el-tab-pane>
+
+        <!-- <el-tab-pane label="流程图" name="5">
+          <flow-chart process_id="13" :orderCode="queryId" />
+        </el-tab-pane> -->
+      </el-tabs>
+    </div>
+    <div v-else>
+      <no-auth></no-auth>
+    </div>
+  </div>
+</template>
+<script>
+import examForms from "./exam-form.vue";
+import asyncRequest from "@/apis/service/sellOut/filing";
+import resToken from "@/mixins/resToken";
+import { mapGetters } from "vuex";
+import orderOutTable from "./order-out-table";
+import {
+  editColumns,
+  costArr,
+  bargainingArr,
+  options1,
+  options2,
+  options3,
+  options4,
+  options5,
+  options6,
+  options7,
+  options8,
+  options9,
+  options10,
+  options11,
+  options12,
+  options13,
+  statusList,
+  rate_status_options,
+  coveColumns,
+  is_determine_price_options,
+} from "./columns";
+export default {
+  components: {
+    examForms,
+    orderOutTable,
+  },
+  name: "filingDetail",
+  mixins: [resToken],
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size", "private_field"]),
+    powers() {
+      const tran =
+        this.$store.getters.btnList.find((item) => item.menu_route == "filingDetail") ||
+        {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+    // ppowers() {
+    //   const tran =
+    //     this.$store.getters.roleProcess.find((i) => i.process_type === "YJD") || {};
+    //   const { action } = tran ?? {};
+    //   return action ?? [];
+    // },
+  },
+
+  data() {
+    return {
+      size: "small",
+      eaxmList: [],
+      costArr,
+      bargainingArr,
+      editColumns,
+      options1,
+      options2,
+      options3,
+      options4,
+      options5,
+      options6,
+      options7,
+      options8,
+      options9,
+      options10,
+      options11,
+      options12,
+      options13,
+      statusList,
+      rate_status_options,
+      is_determine_price_options,
+      coveColumns,
+      projectTabs: "1",
+      activeNames: ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "20"],
+      newTime: "",
+      loading: false,
+      queryType: "",
+      queryId: "",
+      status: "",
+      sitem: null,
+
+      orderItem: {},
+      moneyDirItem: {},
+      moneyItem: {},
+      BossItem: {},
+    };
+  },
+  mounted() {
+    this.initForm();
+  },
+  methods: {
+    async initForm() {
+      const { id, type } = this.$route.query;
+      this.queryId = id;
+      this.queryType = type;
+      this.projectTabs = "1";
+      this.loading = true;
+      await this.initData();
+      this.loading = false;
+    },
+
+    handleClick(row) {
+      console.log(row);
+    },
+    async refresh() {
+      this.routeReGoto("filing", {});
+    },
+    async initData() {
+      this.loading = true;
+      const { code, message, data } = await asyncRequest.detail({
+        id: this.queryId,
+      });
+
+      this.eaxmList = [];
+      this.loading = false;
+      if (code === 0) {
+        this.sitem = JSON.parse(JSON.stringify(data));
+        const { cat_info } = this.sitem;
+        let cat = "";
+        if (cat_info && cat_info.length > 0) {
+          cat_info.forEach((e, i) => {
+            cat += i === 0 ? e.name : "_" + e.name;
+          });
+        }
+        this.sitem.cat = cat;
+        // this.sitem.good_img = this.sitem.good_img.split(",");
+
+        const { status } = this.sitem;
+        this.status = status;
+
+        this.getNewTime();
+      } else if (code >= 100 && code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(message);
+      }
+    },
+    getNewTime() {
+      this.newTime = new Date().valueOf();
+    },
+
+    // 点击业务审核的保存按钮
+
+    async examFormSubmit(e, title) {
+      if (!this.loading) {
+        await this.$confirm(`确定要提交${title}审批结果?`, {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        })
+          .then(async () => {
+            this.loading = true;
+            await this.statusSubmit(e, title);
+          })
+          .catch(() => {
+            this.loading = false;
+            console.log("取消");
+          });
+      }
+    },
+    async statusSubmit(e, title) {
+      let model = JSON.parse(JSON.stringify(e));
+      model.companyCode = model.companyCode[0];
+      const { code, data, message } = await asyncRequest.status(model);
+      this.loading = false;
+      // console.log("res", data);
+      if (code === 0) {
+        this.$notify.success({
+          title: "审核提交" + "成功!",
+          message: "",
+        });
+        await this.initForm();
+      } else if (code >= 100 && code <= 104) {
+        await this.logout();
+      } else {
+        this.$message.warning(message);
+      }
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.filingDetail {
+  position: relative;
+  height: 100%;
+  width: 100%;
+  box-sizing: border-box;
+  .filingDetail-main {
+    position: relative;
+    padding: 10px;
+    height: 100%;
+    width: 100%;
+  }
+  .filingDetail-title {
+    border-top: 1px solid #ebeef5;
+    span {
+      height: 50px;
+      line-height: 50px;
+      font-family: "微软雅黑", sans-serif;
+      font-weight: 400;
+      font-style: normal;
+      font-size: 16fpx;
+      text-align: left;
+    }
+  }
+  /deep/ .ddiv {
+    border-top: 1px solid #dcdfe6;
+  }
+  /deep/ .dtitle {
+    width: 40px;
+    text-align: center;
+    height: 100%;
+    min-height: 100%;
+    ul {
+      padding: 12px 0 0 0;
+    }
+  }
+  /deep/ .dmain {
+    padding: 20px 0 0 0;
+    width: calc(100% - 40px);
+    border-left: 1px solid #dcdfe6;
+  }
+}
+</style>

+ 331 - 0
src/views/sellOut/filing/exam-form.vue

@@ -0,0 +1,331 @@
+<template>
+  <el-form
+    v-loading="loading"
+    ref="ruleForm"
+    :model="ruleForm"
+    status-icon
+    :size="'mini'"
+    :rules="rulesThis"
+    :label-width="labelWidth || '100px'"
+    class="demo-ruleForm"
+  >
+    <el-row>
+      <el-col :span="12"
+        ><el-form-item label="客户名称" prop="companyCode">
+          <search-customer
+            :value="ruleForm.companyCode"
+            :names="ruleForm.companyName"
+            :placeholder="'客户名称'"
+            :size="'mini'"
+            :isDetail="ruleForm.companyName"
+            @searchChange="customerChange"
+        /></el-form-item>
+      </el-col>
+      <el-col :span="12"
+        ><el-form-item label="服务费" prop="service_charge">
+          <digital-input
+            :values="ruleForm.service_charge"
+            :placeholder="'服务费'"
+            :min="0"
+            :disabled="false"
+            :max="100000000000"
+            :position="'right'"
+            :precision="2"
+            :size="'mini'"
+            :controls="false"
+            :append="'元'"
+            @reschange="number_change($event, 'service_charge')"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="所属平台" prop="platform_id">
+          <search-terrace
+            :value="ruleForm.platform_id"
+            :names="ruleForm.platform_name"
+            :disabled="false"
+            :size="'mini'"
+            :is_show="'1'"
+            :placeholder="'所属平台'"
+            @searchChange="platform_codesearchChange"
+          />
+        </el-form-item>
+      </el-col>
+
+      <el-col :span="12"
+        ><el-form-item label="服务费比例" prop="service_proportion">
+          <digital-input
+            :values="ruleForm.service_proportion"
+            :placeholder="'服务费比例'"
+            :min="0"
+            :disabled="false"
+            :max="100"
+            :position="'right'"
+            :precision="2"
+            :size="'mini'"
+            :controls="false"
+            :append="'%'"
+            @reschange="number_change($event, 'service_proportion')"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-form-item label="平台商品编号" prop="plat_code">
+          <el-input
+            placeholder="平台商品编号"
+            v-model="ruleForm.plat_code"
+            :disabled="false"
+            maxlength="50"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col :span="12">
+        <el-button
+          v-if="!disabled"
+          :size="'mini'"
+          type="primary"
+          class="fr"
+          @click="submitForm"
+          >保 存
+        </el-button>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+import {
+  add_sum, //加法精算
+  accSub, //减法精算
+  accMul, //乘法精算
+  accDiv, //除法精算
+} from "@/utils/validate";
+export default {
+  name: "exam-form",
+  props: ["size", "disabled", "labelWidth", "sitem"],
+  /**
+   * 属性集合
+   * @param {String}        size             : 组件大小             非必填
+   * @param {Array}         statusList       : 驳回至备选项          必填
+   * @param {Boolean}       disabled         : 是否禁用              必填
+   * @param {Boolean}       isMust           : 是否需要展示驳回节点   必填
+   *
+   *
+   */
+  /**
+   * 事件集合
+   * @searchChange             : 选中值变化调用   抛出选中数据
+   */
+  data() {
+    return {
+      loading: false,
+      is_determine_price: "",
+      cgd_charge: "",
+      price: "",
+      ruleForm: {
+        id: "",
+        status: "",
+        companyCode: [],
+        companyName: "",
+        service_charge: "",
+        service_proportion: "",
+        plat_code: "",
+        platform_id: "",
+        platform_name: "",
+      },
+      rulesThis: this.rules,
+      rules: {
+        companyCode: [
+          {
+            required: true,
+            type: "array",
+            message: "请选择企业客户",
+            trigger: "change",
+          },
+        ],
+
+        service_charge: [{ required: true, message: "请输入服务费", trigger: "blur" }],
+        service_proportion: [
+          { required: true, message: "请输入服务费比例", trigger: "blur" },
+        ],
+        platform_id: [
+          {
+            required: true,
+            message: "请选择平台",
+            trigger: "change",
+          },
+        ],
+      },
+    };
+  },
+  watch: {
+    newTime: function () {
+      this.initForm();
+    },
+  },
+  mounted() {
+    this.initForm();
+  },
+  methods: {
+    async initForm() {
+      this.loading = true;
+      this.rulesThis = this.rules;
+      await this.resetForm();
+      this.loading = false;
+    },
+    async resetForm() {
+      // 重置
+      await this.$nextTick(() => {
+        if (this.$refs.ruleForm) {
+          this.$refs.ruleForm.resetFields();
+          this.$refs.ruleForm.clearValidate();
+          console.log(this.sitem);
+          const {
+            id,
+            status,
+            companyCode,
+            companyName,
+            service_charge,
+            service_proportion,
+            plat_code,
+            cgd_charge,
+            price,
+            is_determine_price,
+            expect_service,
+            expect_service_proportion,
+            platform_id,
+            platform_name,
+          } = this.sitem;
+          this.cgd_charge = cgd_charge;
+          this.price = price;
+          const service = status + "" === "0" ? expect_service : service_charge;
+          const proportion =
+            status + "" === "0" ? expect_service_proportion : service_proportion;
+          this.is_determine_price = is_determine_price;
+          this.ruleForm = {
+            id: id,
+            status: "2",
+            companyCode: companyCode ? [companyCode] : [],
+            companyName,
+            service_charge: service ? service : "0",
+            service_proportion: proportion ? proportion : "0",
+            plat_code,
+            platform_id: platform_id && platform_id + "" !== "0" ? platform_id : "",
+            platform_name,
+          };
+        }
+      });
+    },
+    //购买方公司选择
+    customerChange(e) {
+      const { code, label } = e;
+      this.ruleForm.companyCode = code ? [code] : [];
+      this.ruleForm.companyName = label ? label : "";
+      this.$refs.ruleForm.validateField("companyCode");
+    },
+    platform_codesearchChange(e) {
+      console.log(e);
+      const { id, label } = e;
+      this.ruleForm.platform_id = id;
+      this.ruleForm.platform_name = label ? label : "";
+      this.$refs.ruleForm.validateField("platform_id");
+    },
+    async number_change(e, key) {
+      this.ruleForm[key] = e + "" || "0";
+      this.$refs.ruleForm.validateField(key);
+      await this.num(key);
+    },
+    async num(key) {
+      const is_sale = this.is_determine_price === "1";
+      let cgdAdd = 0,
+        serAdd = 0,
+        qrdAdd = 0,
+        rate = 0;
+      if (is_sale) {
+        qrdAdd = this.price * 1;
+      } else {
+        cgdAdd = this.cgd_charge * 1;
+      }
+      if (key === "service_charge") {
+        serAdd = this.ruleForm.service_charge ?? "0" * 1;
+      }
+      if (key === "service_proportion") {
+        rate = this.ruleForm.service_proportion ?? "0" * 1;
+      }
+      console.log(cgdAdd + "---" + serAdd + "---" + qrdAdd + "----" + rate);
+      if (is_sale && key === "service_charge") {
+        if (qrdAdd <= serAdd) {
+          this.$message.error("服务费不能大于等于销售单价!");
+          await this.set_number_change("service_charge", "0");
+          await this.set_number_change("service_proportion", "0");
+          return;
+        }
+        // cgdAdd = qrdAdd - serAdd;
+        // rate = (1 - cgdAdd / qrdAdd)*100;
+
+        cgdAdd = accSub(qrdAdd, serAdd);
+        rate = accMul(accSub(1, accDiv(cgdAdd, qrdAdd)), 100);
+        await this.set_number_change("service_proportion", rate);
+      }
+      if (is_sale && key === "service_proportion") {
+        // cgdAdd = qrdAdd * (100 - rate);
+        // serAdd = qrdAdd - cgdAdd;
+        if (rate === 100) {
+          this.$message.error("服务费比例不能等于100!");
+          await this.set_number_change("service_charge", "0");
+          await this.set_number_change("service_proportion", "0");
+          return;
+        }
+
+        cgdAdd = accMul(qrdAdd, accSub(100, rate));
+        serAdd = accSub(qrdAdd, cgdAdd);
+        await this.set_number_change("service_charge", serAdd);
+      }
+      if (!is_sale && key === "service_charge") {
+        // qrdAdd = cgdAdd + serAdd;
+        // rate = 1 - cgdAdd / qrdAdd;
+
+        qrdAdd = add_sum(cgdAdd, serAdd);
+        rate = accSub(1, accDiv(cgdAdd, qrdAdd));
+        await this.set_number_change("service_proportion", rate);
+      }
+      if (!is_sale && key === "service_proportion") {
+        // qrdAdd = cgdAdd / (100 - rate);
+        // serAdd = qrdAdd - cgdAdd;
+        if (rate === 100) {
+          this.$message.error("服务费比例不能等于100!");
+          await this.set_number_change("service_charge", "0");
+          await this.set_number_change("service_proportion", "0");
+          return;
+        }
+        qrdAdd = accDiv(cgdAdd, accSub(100, rate));
+        serAdd = accSub(qrdAdd, cgdAdd);
+        await this.set_number_change("service_charge", serAdd);
+      }
+      console.log(cgdAdd + "---" + serAdd + "---" + qrdAdd + "----" + rate);
+    },
+    async set_number_change(key, value) {
+      this.ruleForm[key] = value + "" || "0";
+      this.$refs.ruleForm.validateField(key);
+    },
+    async submitForm() {
+      await this.$refs.ruleForm.validate(async (valid) => {
+        if (valid) {
+          this.$emit("searchChange", this.ruleForm);
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.exa {
+  margin: 20px 0 0 30px;
+  font-size: 14px;
+  font-weight: bold;
+}
+</style>

+ 440 - 0
src/views/sellOut/filing/index.vue

@@ -0,0 +1,440 @@
+<template>
+  <div class="filing 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"
+        @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="4" style="width: 130px">
+                <el-select
+                  :size="searchSize"
+                  v-model="parmValue.status"
+                  clearable
+                  placeholder="状态"
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                >
+                  <el-option
+                    v-for="item in statusList"
+                    :key="item.id"
+                    :label="item.label"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-col>
+              <el-col :span="4" style="width: 301px; padding: 0 0 0 10px">
+                <period-date-picker
+                  :start="parmValue.start_date"
+                  :end="parmValue.end_date"
+                  :width="'134px'"
+                  :size="searchSize"
+                  @timeReturned="handleTime"
+                />
+              </el-col>
+
+              <el-col :span="4" style="width: 420px; padding: 0 0 0 10px">
+                <el-input
+                  clearable
+                  :size="searchSize"
+                  placeholder="关键字"
+                  v-model="s_input"
+                  maxlength="40"
+                  @blur="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                  class="input-with-select"
+                >
+                  <el-select
+                    style="width: 140px"
+                    v-model="select"
+                    slot="prepend"
+                    placeholder="关键字类型"
+                  >
+                    <el-option label="报备单编码" value="1" />
+                    <!-- <el-option label="供应商编码" value="2" /> -->
+                    <el-option label="商品名称" value="3" />
+                    <el-option label="客户名称" value="4" />
+                    <el-option label="客户编码" value="5" />
+                    <el-option label="订单编号" value="6" />
+                  </el-select>
+                  <el-button
+                    slot="append"
+                    icon="el-icon-search"
+                    @click="
+                      pageInfo.curr = 1;
+                      parmValue.page = 1;
+                      searchList();
+                    "
+                  ></el-button>
+                </el-input>
+              </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 :span="4" class="fr" style="width: 66px">
+                <el-button
+                  type="warning"
+                  class="fr"
+                  :size="searchSize"
+                  @click="restSearch"
+                >
+                  重置
+                </el-button>
+              </el-col>
+            </el-row>
+          </div>
+        </template>
+        <template #status="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="
+              (statusList.find((item) => item.id == scope.row.status) || {}).type || ''
+            "
+            v-text="
+              (statusList.find((item) => item.id == scope.row.status) || {}).label || '--'
+            "
+          ></el-tag>
+        </template>
+        <template #good_name="{ scope }">
+          <span>{{ scope.row.good_name }}</span>
+          <span v-for="(si, sii) in scope.row.specinfo" :key="si.spec_value_id + sii">
+            {{ sii == 0 ? "__" : "--" }}{{ si.spec_name }}[{{ si.spec_value_name }}]</span
+          >
+        </template>
+        <template #can="{ scope }">
+          <span v-for="(si, sii) in scope.row.can" :key="si.id + sii">
+            <span v-if="sii !== 0">_</span>{{ si.name }}</span
+          >
+        </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('filingDetail', 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/filing";
+import { listCol, statusList } from "./columns";
+import { mapGetters } from "vuex";
+
+export default {
+  name: "filing",
+  mixins: [mixinPage, resToken],
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      const tran =
+        this.$store.getters.btnList.find((item) => item.menu_route == "filing") || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+  },
+  data() {
+    return {
+      select: "1",
+      s_input: "",
+      customerCode: [], //客户公司code
+      statusList,
+      sitem: null,
+
+      loading: true,
+      showModel: false,
+      isDetail: false,
+      modelId: 0,
+      parmValue: {
+        start_date: "",
+        end_date: "",
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+        status: "", // 状态
+
+        filingCode: "", // 报备单编码
+        supplierNo: "", // 供应商编码
+
+        good_name: "", //商品名称
+        companyName: "", //客户名称
+        companyCode: "", //客户编码
+
+        orderCode: "", //客户编码
+      },
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: listCol,
+
+      resultValue: "", //处理结果
+    };
+  },
+  mounted() {
+    const { back } = this.$route.query;
+    if (back) {
+      this.parmValue = JSON.parse(back);
+      console.log(this.parmValue);
+      const { page, size } = this.parmValue;
+
+      // if(this.parmValue.khNo.length>0){
+      //     this.customerCode = [this.parmValue.khNo] ;
+      // }
+
+      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 = "1";
+      //  this.sselect = "创建时间"
+    }
+    this.searchList();
+  },
+
+  methods: {
+    getRouter(toRouter, queryId) {
+      if (toRouter && queryId) {
+        let model = {
+          id: queryId,
+          type: "view",
+        };
+
+        //有多选框的条件
+        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);
+      } else {
+        this.$message.warning("暂未找到相关流程!");
+      }
+    },
+    restSearch() {
+      this.customerCode = [];
+      this.select = "1";
+      this.s_input = "";
+      this.parmValue = {
+        start_date: "",
+        end_date: "",
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+        status: "", // 状态
+
+        filingCode: "", // 报备单编码
+        supplierNo: "", // 供应商编码
+
+        good_name: "", //商品名称
+        companyName: "", //客户名称
+        companyCode: "", //客户编码
+
+        orderCode: "", //客户编码
+      };
+      // 表格 - 分页
+      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;
+      this.parmValue.filingCode = this.select === "1" ? this.s_input : "";
+      // this.parmValue.supplierNo = this.select === "2" ? this.s_input : "";
+      this.parmValue.good_name = this.select === "3" ? this.s_input : "";
+      this.parmValue.companyName = this.select === "4" ? this.s_input : "";
+      this.parmValue.companyCode = this.select === "5" ? this.s_input : "";
+      this.parmValue.orderCode = this.select === "6" ? this.s_input : "";
+      const res = await asyncRequest.list(this.parmValue);
+      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 statusConfirm(id, status) {
+    //   let str = status === "1" ? "禁用" : "启用";
+    //   await this.$confirm("确定要改为" + str + "?", {
+    //     confirmButtonText: "确定",
+    //     cancelButtonText: "取消",
+    //     type: "warning",
+    //   })
+    //     .then(async () => {
+    //       this.loading = true;
+    //       const model = {
+    //         id: id,
+    //         status: status === "1" ? "0" : "1",
+    //       };
+    //       const res = await asyncRequest.status(model);
+    //       if (res && res.code === 0) {
+    //         this.loading = false;
+    //         this.$notify.success({
+    //           title: "状态修改成功!",
+    //           message: "",
+    //         });
+    //         await this.searchList();
+    //       } else if (res && res.code >= 100 && res.code <= 104) {
+    //         await this.logout();
+    //       } else {
+    //         this.$message.warning(res.message);
+    //       }
+    //     })
+    //     .catch(() => {
+    //       console.log("取消");
+    //     });
+    // },
+    // 时间选择事件
+    async handleTime(e) {
+      if (e.startTime !== "") {
+        this.parmValue.start_date = e.startTime;
+      } else {
+        this.parmValue.start_date = "";
+      }
+      if (e.endTime !== "") {
+        this.parmValue.end_date = e.endTime;
+      } else {
+        this.parmValue.end_date = "";
+      }
+      if (this.parmValue.start_date !== "" && this.parmValue.end_date !== "") {
+        this.pageInfo.curr = 1;
+        this.parmValue.page = 1;
+        await this.searchList();
+      }
+    },
+    async customerChange(e) {
+      if (e && e.id) {
+        this.customerCode = [e.code];
+        this.parmValue.customer_code = e.code;
+      } else {
+        this.customerCode = [];
+        this.parmValue.customer_code = "";
+      }
+      this.pageInfo.curr = 1;
+      this.parmValue.page = 1;
+      await this.searchList();
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.filing {
+}
+</style>

+ 243 - 0
src/views/sellOut/filing/order-out-table.vue

@@ -0,0 +1,243 @@
+<template>
+  <div class="outOrderTable">
+    <el-table
+      ref="addrForm"
+      :data="tableData"
+      border
+      :size="'mini'"
+      style="width: 100%"
+      row-key="key"
+      @selection-change="handleSelectionChange"
+    >
+      <!-- <el-table-column type="selection" width="42"> </el-table-column> -->
+      <el-table-column
+        show-overflow-tooltip
+        prop="outCode"
+        label="发货申请单号"
+        width="160"
+      />
+
+      <el-table-column show-overflow-tooltip prop="send_status" label="状态" width="105">
+        <template slot-scope="scope">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.status == '0' ? 'warning' : ''"
+            v-text="
+              (statusOptions.find((item) => item.id == scope.row.status) || {}).label ||
+              '--'
+            "
+          ></el-tag>
+        </template>
+      </el-table-column>
+
+      <el-table-column
+        show-overflow-tooltip
+        prop="send_num"
+        label="发货数量"
+        width="80"
+      />
+      <el-table-column show-overflow-tooltip prop="contactor" label="联系人" width="80" />
+      <el-table-column show-overflow-tooltip prop="mobile" label="联系电话" width="110" />
+      <el-table-column show-overflow-tooltip prop="addr" label="收货地址" min-width="170">
+        <template slot-scope="scope">
+          {{ scope.row.addr_info }}{{ scope.row.addr }}
+        </template>
+      </el-table-column>
+      <el-table-column
+        show-overflow-tooltip
+        prop="post_name"
+        label="物流公司"
+        width="160"
+      />
+      <el-table-column
+        show-overflow-tooltip
+        prop="post_code"
+        label="物流单号"
+        width="160"
+      />
+      <el-table-column
+        show-overflow-tooltip
+        prop="sendtime"
+        label="发货时间"
+        width="145"
+      />
+    </el-table>
+    <div
+      v-if="tableData && tableData.length > 0"
+      class="Pagination"
+      style="text-align: right; margin-top: 10px"
+    >
+      <el-pagination
+        :current-page="parmValue.page"
+        :page-size="parmValue.size"
+        :size="'mini'"
+        layout="total,  prev, pager, next, jumper"
+        :total="pageInfo.total"
+        @size-change="page_size_change"
+        @current-change="page_curr_change"
+      />
+    </div>
+  </div>
+</template>
+<script>
+import mixinPage from "@/mixins/elPaginationHandle";
+import resToken from "@/mixins/resToken";
+import asyncRequest from "@/apis/service/sellOut/salesOrder/detail";
+import { mapGetters } from "vuex";
+
+export default {
+  name: "salesOrderDetail",
+  mixins: [mixinPage, resToken],
+  props: ["newTime", "id"],
+  watch: {
+    newTime: function (val) {
+      if (val) {
+        this.initForm();
+      }
+    },
+  },
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+
+    powers() {
+      const tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "salesOrderDetail"
+        ) || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+  },
+
+  data() {
+    return {
+      orderCode: "",
+      outCode: "",
+      addr_res: 0,
+      batch_num: 0,
+      addrmodel: false,
+      // 状态
+      statusOptions: [
+        { id: "0", label: "待公司采购" },
+        { id: "1", label: "待库管发货" },
+        { id: "2", label: "已发货待收货" },
+        { id: "3", label: "已收货" },
+        { id: "4", label: "已全部退货" },
+      ],
+      showGoodsModel: false,
+      stock_code: "",
+      tableData: [],
+      loading: false,
+      queryId: "",
+      status: "",
+      showModel: null,
+      modelId: "",
+      modelItem: null,
+      s_sitem: null,
+      returnId: "",
+      returnItem: null,
+      returnModel: false,
+      wsend_num: "",
+      orderCode: "",
+      returnAllId: "",
+      returnAllSitem: null,
+      returnAllShowModel: false,
+      parmValue: {
+        order_type: "",
+        orderCode: "",
+        apply_name: "", //申请人名称
+        cgdNo: "",
+        start: "",
+        end: "",
+        // supplierNo: "",
+        companyNo: "",
+        good_code: "",
+        good_name: "",
+        outCode: "",
+        status: "",
+        company_name: "", //申请人部门
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+      },
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      multipleSelection: [],
+      resModel: null,
+    };
+  },
+  mounted() {
+    this.initForm();
+  },
+  methods: {
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    closeModel() {
+      this.modelId = "";
+      this.modelShowModel = false;
+    },
+    refresh() {
+      this.$emit("refresh");
+      this.modelId = "";
+      this.modelShowModel = false;
+    },
+    async initForm() {
+      this.status = "";
+      this.queryId = this.$route.query.id;
+      // this.rulesThis = this.rules;
+      this.resetForm();
+    },
+    async resetForm() {
+      // 重置
+      await this.$nextTick(async () => {
+        await this.searchList();
+      });
+    },
+    // 列表搜索
+    async searchList() {
+      this.parmValue.orderCode = this.id;
+      const { code, data, message } = await asyncRequest.orderOut(this.parmValue);
+      if (code === 0) {
+        const { list, count } = data;
+        this.tableData = list;
+        this.pageInfo.total = Number(count);
+        this.batch_num = 0;
+        this.tableData.forEach((v) => {
+          v.good_class = "";
+          if (v.can && v.can.length > 0) {
+            v.can.forEach((x, i) => {
+              v.good_class += i === 0 ? x.name : "/" + x.name;
+            });
+          }
+          if (v.status + "" === "0" || v.status + "" === "1") {
+            this.batch_num += parseInt(v.send_num + "");
+          }
+        });
+      } else if (code >= 100 && code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+
+    async page_size_change(e) {
+      this.parmValue.size = e;
+      this.pageInfo.size = e;
+      this.parmValue.page = 1;
+      this.pageInfo.curr = 1;
+      await this.searchList();
+    },
+    async page_curr_change(e) {
+      this.parmValue.page = e;
+      this.pageInfo.curr = e;
+      await this.searchList();
+    },
+  },
+};
+</script>
+<style lang="scss" scoped></style>

+ 0 - 0
src/views/sellOut/filing/报备单管理


+ 9 - 5
src/views/sellOut/sellOutOrder/detail.vue

@@ -108,7 +108,6 @@
                     <el-table-column prop="origin_price" label="成本" show-overflow-tooltip/>
                   </el-table>
                 </template> -->
-
               </show-data-table>
             </el-collapse-item>
             <el-collapse-item title="商品信息" name="2">
@@ -130,7 +129,9 @@
                 sitem &&
                 (sitem.order_type + '' === '1' ||
                   (sitem.has_account + '' === '0' &&
-                    (sitem.order_type + '' === '2' || sitem.order_type + '' === '3')))
+                    (sitem.order_type + '' === '2' ||
+                      sitem.order_type + '' === '3' ||
+                      sitem.order_type + '' === '4')))
               "
             >
               <want-deliver
@@ -230,8 +231,11 @@
                   <el-tag
                     :size="'mini'"
                     v-text="
-                      (xs_order_type_options.find((item) => item.id == resitem.order_type) || {})
-                        .label || '--'
+                      (
+                        xs_order_type_options.find(
+                          (item) => item.id == resitem.order_type
+                        ) || {}
+                      ).label || '--'
                     "
                   ></el-tag>
                 </template>
@@ -335,7 +339,7 @@
 
         <el-tab-pane label="流程图" name="4" v-if="queryType !== 'add'">
           <flow-chart process_id="5" type="CKD" :orderCode="queryId" />
-       </el-tab-pane>
+        </el-tab-pane>
       </el-tabs>
       <div>
         <add-Edit-A

+ 74 - 3
src/views/sellOut/zixunOrder/components/addEditGoodModal.vue

@@ -230,7 +230,12 @@
                           @click="openEdit(scope.$index, scope.row)"
                         ></i>
                       </el-tooltip>
-                      <el-tooltip effect="dark" content="删除" placement="top">
+                      <el-tooltip
+                        effect="dark"
+                        content="删除"
+                        v-if="!scope.row.isMust"
+                        placement="top"
+                      >
                         <i
                           class="el-icon-delete tb-icon"
                           @click="openDelete(scope.$index)"
@@ -566,15 +571,78 @@ export default {
     priceAccMul(a, b) {
       return accMul(a, b);
     },
+    async set_must_spec() {
+      const { cat_id } = this.ruleForm;
+      let id = cat_id.length == 1 ? cat_id[0] : "";
+      if (id) {
+        const { code, message, data } = await asyncRequest.catinfo({ id: id });
+        if (code === 0) {
+          const { spec } = data;
+          if (spec && spec.length > 0) {
+            if (this.spec_tableData && this.spec_tableData.length > 0) {
+              this.spec_tableData.forEach((c) => {
+                c.isMust = false;
+              });
+              spec.forEach((a, ai) => {
+                let findex = this.spec_tableData.findIndex((b) => b.specid === a.id);
+                if (findex !== -1) {
+                  this.spec_tableData[findex].isMust = true;
+                } else {
+                  this.spec_tableData.push({
+                    id: "",
+                    index: "1",
+                    specid: a.id,
+                    spec_name: a.spec_name,
+                    isMust: true,
+                    spec_value_name: "",
+                    spec_value_id: "",
+                  });
+                }
+              });
+            } else {
+              spec.forEach((a, ai) => {
+                let model = {
+                  id: "",
+                  index: "1",
+                  specid: a.id,
+                  spec_name: a.spec_name,
+                  isMust: true,
+                  spec_value_name: "",
+                  spec_value_id: "",
+                };
+                this.spec_tableData.push(model);
+              });
+            }
+          }
+          this.spec_tableData.map((e, ei) => {
+            e.index = ei + "";
+            return e;
+          });
+          this.spec_tableData.forEach((si, sii) => {
+            this.$set(this.spec_tableData, sii, si);
+          });
+        } else if (code >= 100 && code <= 104) {
+          await this.logout();
+        } else {
+          this.$message.warning(message);
+        }
+      } else {
+        this.spec_tableData.forEach((si, sii) => {
+          si.isMust = false;
+          this.$set(this.spec_tableData, sii, si);
+        });
+      }
+    },
     //规格编辑修改结果
     refreshEdit(e) {
       let item = JSON.parse(JSON.stringify(e));
       const { index, id, specid, spec_name, spec_value_id, spec_value_name } = item;
+      console.log(item);
       if (index + "" === "-1") {
         this.spec_tableData.push(item);
       } else {
         this.spec_tableData.forEach((i, findex) => {
-          if (i.spec_id === spec_id) {
+          if (i.specid === specid) {
             this.spec_tableData[findex].id = id;
             this.spec_tableData[findex].specid = specid;
             this.spec_tableData[findex].spec_name = spec_name;
@@ -588,7 +656,7 @@ export default {
     async resetForm() {
       this.spec_tableData = [];
       // 重置
-      await this.$nextTick(() => {
+      await this.$nextTick(async () => {
         if (this.$refs.ruleForm) {
           this.$refs.ruleForm.resetFields();
           this.$refs.ruleForm.clearValidate();
@@ -693,6 +761,7 @@ export default {
               }
             });
           }
+          // await this.set_must_spec();
         }
       });
     },
@@ -704,6 +773,8 @@ export default {
       this.ruleForm.cat_arr_id = item;
       this.$refs.ruleForm.validateField("cat_id");
       this.is_noble = pid === "6";
+      await this.set_must_spec();
+      //修改
     },
 
     //单位选择

+ 4 - 5
src/views/sellOut/zixunOrder/components/baseFormAddEdit.vue

@@ -29,7 +29,7 @@
             <el-form-item label="规格类型" prop="specid">
               <search-spec
                 :value="ruleForm.specid"
-                :disabled="false"
+                :disabled="sitem.isMust"
                 :size="'mini'"
                 :isDetail="false"
                 :placeholder="'规格类型'"
@@ -37,14 +37,12 @@
               />
             </el-form-item>
             <el-form-item label="规格值" prop="spec_value_id">
-              <div
-                v-if="specVlist.length > 0"
-              >
+              <div v-if="specVlist.length > 0">
                 <el-select
                   v-model="ruleForm.spec_value_id"
                   placeholder="请选择规格值"
                   @change="spec_value_id_change"
-                  style="width:100%"
+                  style="width: 100%"
                   filterable
                 >
                   <el-option
@@ -157,6 +155,7 @@ export default {
           if (this.index + "" !== "-1") {
             this.specVlist = [];
             const { specid, spec_name, spec_value_id, spec_value_name } = this.sitem;
+            console.log(this.sitem);
             this.ruleForm = {
               index: this.index,
               specid: specid || "",

+ 70 - 1
src/views/sellOut/zixunOrder/components/editForm.vue

@@ -430,7 +430,12 @@
                       @click="openEdit(scope.$index, scope.row)"
                     ></i>
                   </el-tooltip>
-                  <el-tooltip effect="dark" content="删除" placement="top">
+                  <el-tooltip
+                    effect="dark"
+                    v-if="!scope.row.isMust"
+                    content="删除"
+                    placement="top"
+                  >
                     <i
                       class="el-icon-delete tb-icon"
                       @click="openDelete(scope.$index)"
@@ -961,6 +966,7 @@ export default {
           }
 
           this.od_form = JSON.parse(JSON.stringify(this.ruleForm));
+          await this.set_must_spec();
         }
       });
     },
@@ -972,6 +978,69 @@ export default {
     openDelete(index) {
       this.spec_tableData.splice(index, 1);
     },
+    async set_must_spec() {
+      const { cat_id } = this.ruleForm;
+      let id = cat_id.length == 1 ? cat_id[0] : "";
+      if (id) {
+        const { code, message, data } = await asyncRequest.catinfo({ id: id });
+        if (code === 0) {
+          const { spec } = data;
+          if (spec && spec.length > 0) {
+            if (this.spec_tableData && this.spec_tableData.length > 0) {
+              this.spec_tableData.forEach((c) => {
+                c.isMust = false;
+              });
+              spec.forEach((a, ai) => {
+                let findex = this.spec_tableData.findIndex((b) => b.specid === a.id);
+                if (findex !== -1) {
+                  this.spec_tableData[findex].isMust = true;
+                } else {
+                  this.spec_tableData.push({
+                    id: "",
+                    index: "1",
+                    specid: a.id,
+                    spec_name: a.spec_name,
+                    isMust: true,
+                    spec_value_name: "",
+                    spec_value_id: "",
+                  });
+                }
+              });
+            } else {
+              spec.forEach((a, ai) => {
+                let model = {
+                  id: "",
+                  index: "1",
+                  specid: a.id,
+                  spec_name: a.spec_name,
+                  isMust: true,
+                  spec_value_name: "",
+                  spec_value_id: "",
+                };
+                this.spec_tableData.push(model);
+              });
+            }
+          }
+          this.spec_tableData.map((e, ei) => {
+            e.index = ei + "";
+            return e;
+          });
+
+          this.spec_tableData.forEach((si, sii) => {
+            this.$set(this.spec_tableData, sii, si);
+          });
+        } else if (code >= 100 && code <= 104) {
+          await this.logout();
+        } else {
+          this.$message.warning(message);
+        }
+      } else {
+        this.spec_tableData.forEach((si, sii) => {
+          si.isMust = false;
+          this.$set(this.spec_tableData, sii, si);
+        });
+      }
+    },
     //规格编辑修改结果
     refreshEdit(e) {
       let item = JSON.parse(JSON.stringify(e));

Some files were not shown because too many files changed in this diff