snow 4 ماه پیش
والد
کامیت
6a2e770e8c
92فایلهای تغییر یافته به همراه440 افزوده شده و 106 حذف شده
  1. 0 0
      dist/assets/BaseForm.0d14fd.js
  2. 0 0
      dist/assets/BaseForm.52e1af.js
  3. 0 0
      dist/assets/ChildGoodEditModal.32d172.js
  4. 0 0
      dist/assets/ChildGoodEditModal.396f34.js
  5. 0 0
      dist/assets/ChildGoodEditModal.682aea.js
  6. 0 0
      dist/assets/ChildGoodEditModal.6f5322.js
  7. 1 1
      dist/assets/ChildGoodEditModal.7967d3.js
  8. 0 0
      dist/assets/ChildGoodEditModal.b8748c.js
  9. 1 1
      dist/assets/InvoiceTitle.77bebe.js
  10. 1 1
      dist/assets/InvoiceTitle.7eecae.js
  11. 0 0
      dist/assets/basic-descriptions.aaf33da4.js
  12. 0 0
      dist/assets/calc.f6fd5096.js
  13. 0 0
      dist/assets/columnRenderHelper.994fe1e5.js
  14. 0 0
      dist/assets/columns.ae277a68.js
  15. 0 0
      dist/assets/detail.0eccad.js
  16. 0 0
      dist/assets/detail.344814.js
  17. 0 0
      dist/assets/detail.40f304.js
  18. 0 0
      dist/assets/detail.6e3838.js
  19. 1 1
      dist/assets/detail.8b0ced.js
  20. 0 0
      dist/assets/detail.b3ed56.js
  21. 1 1
      dist/assets/detail.c73fd2.js
  22. 0 0
      dist/assets/detail.cae199.js
  23. 0 0
      dist/assets/detail.dfa0f2.js
  24. 0 0
      dist/assets/detail.e0889c.js
  25. 0 0
      dist/assets/execl-upload.05d98283.js
  26. 0 0
      dist/assets/index.08977e.js
  27. 0 0
      dist/assets/index.097ecf.js
  28. 0 0
      dist/assets/index.0dbb49.js
  29. 0 0
      dist/assets/index.1ddafc.js
  30. 0 0
      dist/assets/index.303734.js
  31. 0 0
      dist/assets/index.308ddd.js
  32. 0 0
      dist/assets/index.34bfc8.js
  33. 0 0
      dist/assets/index.4cf9ee.js
  34. 0 0
      dist/assets/index.4f356d.js
  35. 0 0
      dist/assets/index.518df3.js
  36. 0 0
      dist/assets/index.52bb3f.js
  37. 0 0
      dist/assets/index.563420.js
  38. 0 0
      dist/assets/index.5a0076.js
  39. 0 0
      dist/assets/index.64a52c.js
  40. 0 0
      dist/assets/index.656b8f.js
  41. 0 0
      dist/assets/index.674a5d.js
  42. 0 0
      dist/assets/index.6dbeb3f7.js
  43. 0 0
      dist/assets/index.6e73f4.js
  44. 0 0
      dist/assets/index.72dcc7.js
  45. 0 0
      dist/assets/index.76ffe1.js
  46. 0 0
      dist/assets/index.80f631.js
  47. 0 0
      dist/assets/index.9319d0.js
  48. 0 0
      dist/assets/index.9fb413.js
  49. 0 0
      dist/assets/index.ac4300.js
  50. 0 0
      dist/assets/index.aeacb5.js
  51. 0 0
      dist/assets/index.b0b79d.js
  52. 0 0
      dist/assets/index.bae03886.js
  53. 0 0
      dist/assets/index.bb0cc8.js
  54. 0 0
      dist/assets/index.bb93f8.js
  55. 0 0
      dist/assets/index.bdcf42.js
  56. 0 0
      dist/assets/index.be4b5ce9.js
  57. 0 0
      dist/assets/index.c0634d.js
  58. 0 0
      dist/assets/index.c2487c.js
  59. 0 0
      dist/assets/index.c2498e37.js
  60. 0 0
      dist/assets/index.c3b0799e.js
  61. 0 0
      dist/assets/index.c8afd8.js
  62. 0 0
      dist/assets/index.d07387.js
  63. 0 0
      dist/assets/index.d687d3.js
  64. 0 0
      dist/assets/index.d8da5d45.js
  65. 0 0
      dist/assets/index.e5ac9190.js
  66. 0 0
      dist/assets/index.e92f01c9.js
  67. 0 0
      dist/assets/index.ec0182.js
  68. 0 0
      dist/assets/index.eeea76.js
  69. 0 0
      dist/assets/index.js
  70. 0 0
      dist/assets/motion.8edff920.js
  71. 0 0
      dist/assets/phone.9e1123.js
  72. 1 1
      dist/assets/qrCode.be32d8.js
  73. 0 0
      dist/assets/regist.bfca82.js
  74. 0 0
      dist/assets/rule.d503a72b.js
  75. 0 0
      dist/assets/tootip.8c17f792.js
  76. 0 0
      dist/assets/update.2f876b.js
  77. 0 0
      dist/assets/use-page-search.3fa5a5d4.js
  78. 0 0
      dist/assets/useDetail.c46746e8.js
  79. 0 0
      dist/assets/verifyCode.ebe0a51e.js
  80. 99 21
      src/components/productDetail/columns.ts
  81. 8 3
      src/components/productDetail/index.vue
  82. 1 0
      src/views/invoiceInOut/inManager/components/ChooseGoodModal/config/content.config.ts
  83. 13 8
      src/views/invoiceInOut/inManager/detail.vue
  84. 1 0
      src/views/invoiceInOut/outManager/components/ChooseGoodModal/config/content.config.ts
  85. 7 0
      src/views/invoiceInOut/outManager/components/NotOrderImportModal/columns-config.ts
  86. 7 6
      src/views/invoiceInOut/outManager/components/NotOrderImportModal/index.vue
  87. 8 2
      src/views/invoiceInOut/outManager/components/NotOrderImportModal/validator.ts
  88. 20 7
      src/views/invoiceInOut/outManager/components/OrderImportModal/columns-config.ts
  89. 3 13
      src/views/invoiceInOut/outManager/components/OrderImportModal/index.vue
  90. 8 2
      src/views/invoiceInOut/outManager/components/OrderImportModal/validator.ts
  91. 176 0
      src/views/invoiceInOut/outManager/config/columns.ts
  92. 83 38
      src/views/invoiceInOut/outManager/detail.vue

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/BaseForm.0d14fd.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/BaseForm.52e1af.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/ChildGoodEditModal.32d172.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/ChildGoodEditModal.396f34.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/ChildGoodEditModal.682aea.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/ChildGoodEditModal.6f5322.js


+ 1 - 1
dist/assets/ChildGoodEditModal.7967d3.js

@@ -1 +1 @@
-import{_ as B,d as _,aZ as C,w as x,z as V,r as y,o as i,G as d,C as n,l as a,a as h,h as s,j as r,aO as b,M as w,ah as D,a_ as k}from"./index.js";import{a as E}from"./columns.c96c57e7.js";import{B as M}from"./basic-descriptions.4fe7a992.js";import"./status.4e0ebdbc.js";import"./tootip.df6555b6.js";const F={class:"flex justify-between mt-[10px]"},N={class:"flex items-center"},G=_({__name:"ChildGoodEditModal",props:{visible:{type:Boolean,required:!0},index:{type:null,required:!0},data:{type:null,required:!0}},emits:["submit"],setup(m,{emit:p}){const t=m,c=p,o=C(t,"visible"),l=x(0);V(()=>o.value,()=>{!o.value||(l.value=t.data.child_num)});function f(){c("submit",t.index,{...t.data,child_num:l.value}),o.value=!1}return(g,e)=>{const v=y("ElButton");return i(),d(a(k),{modelValue:a(o),"onUpdate:modelValue":e[1]||(e[1]=u=>D(o)?o.value=u:null),title:"\u7F16\u8F91\u5B50\u5546\u54C1",center:""},{default:n(()=>[t.data?(i(),d(a(M),{key:0,style:{overflow:"hidden"},data:t.data,columns:a(E)},null,8,["data","columns"])):h("v-if",!0),s("div",F,[s("div",N,[e[2]||(e[2]=s("p",{style:{width:"110px"}},"\u5B50\u5546\u54C1\u6BD4\u4F8B:",-1)),r(a(b),{modelValue:l.value,"onUpdate:modelValue":e[0]||(e[0]=u=>l.value=u),placeholder:"\u5B50\u5546\u54C1\u6BD4\u4F8B"},null,8,["modelValue"])]),r(v,{type:"primary",onClick:f},{default:n(()=>e[3]||(e[3]=[w("\u4FDD\u5B58")])),_:1})])]),_:1},8,["modelValue"])}}});var z=B(G,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/productManager/components/ChildGoodEditModal.vue"]]);export{z as default};
+import{_ as B,d as _,aZ as C,w as x,z as V,r as y,o as i,G as d,C as n,l as a,a as h,h as s,j as r,aO as b,M as w,ah as D,a_ as k}from"./index.js";import{a as E}from"./columns.ae277a68.js";import{B as M}from"./basic-descriptions.aaf33da4.js";import"./status.4e0ebdbc.js";import"./tootip.8c17f792.js";const F={class:"flex justify-between mt-[10px]"},N={class:"flex items-center"},G=_({__name:"ChildGoodEditModal",props:{visible:{type:Boolean,required:!0},index:{type:null,required:!0},data:{type:null,required:!0}},emits:["submit"],setup(m,{emit:p}){const t=m,c=p,o=C(t,"visible"),l=x(0);V(()=>o.value,()=>{!o.value||(l.value=t.data.child_num)});function f(){c("submit",t.index,{...t.data,child_num:l.value}),o.value=!1}return(g,e)=>{const v=y("ElButton");return i(),d(a(k),{modelValue:a(o),"onUpdate:modelValue":e[1]||(e[1]=u=>D(o)?o.value=u:null),title:"\u7F16\u8F91\u5B50\u5546\u54C1",center:""},{default:n(()=>[t.data?(i(),d(a(M),{key:0,style:{overflow:"hidden"},data:t.data,columns:a(E)},null,8,["data","columns"])):h("v-if",!0),s("div",F,[s("div",N,[e[2]||(e[2]=s("p",{style:{width:"110px"}},"\u5B50\u5546\u54C1\u6BD4\u4F8B:",-1)),r(a(b),{modelValue:l.value,"onUpdate:modelValue":e[0]||(e[0]=u=>l.value=u),placeholder:"\u5B50\u5546\u54C1\u6BD4\u4F8B"},null,8,["modelValue"])]),r(v,{type:"primary",onClick:f},{default:n(()=>e[3]||(e[3]=[w("\u4FDD\u5B58")])),_:1})])]),_:1},8,["modelValue"])}}});var z=B(G,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/productManager/components/ChildGoodEditModal.vue"]]);export{z as default};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/ChildGoodEditModal.b8748c.js


+ 1 - 1
dist/assets/InvoiceTitle.77bebe.js

@@ -1 +1 @@
-import{_ as s,d as _,o as l,G as d,l as r,a as u}from"./index.js";import{B as v}from"./basic-descriptions.4fe7a992.js";const y=o=>{const{company_address:e,mobile:i,registercode:n,bank_name:c,bankNo:t,name:a}=o;return{invoice_addr:e,invoice_mobile:i,invoice_code:n,invoice_bank:c,invoice_bankNo:t,invoice_title:a}},g=o=>{const{invoice_addr:e,invoice_mobile:i,invoice_code:n,invoice_bank:c,invoice_bankNo:t,invoice_title:a}=o;return{invoice_code:n,invoice_title:a,addrAndmobile:e+" "+i,bankAndBankNo:c+" "+t}},B=o=>{const{invoice_addr:e,invoice_mobile:i,company_license:n,invoice_bank:c,invoice_bankNo:t,invoice_title:a}=o;return{invoice_code:n,invoice_title:a,addrAndmobile:e+" "+i,bankAndBankNo:c+" "+t}},b=[{label:"\u62AC\u5934",span:24,field:"invoice_title"},{label:"\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7",span:24,field:"invoice_code"}],I=()=>({buyer_code:"",buyer_name:"",seller_code:"",seller_name:"",good_source:"1",good_code:"",good_type:"",is_combind:"0",inv_good_name:"",subunit_price:"",basic_status:"",unit_price:"",goodName:"",skuCode:"",cat_code:"",inv_type:"",cat_tax:"",spec:"",unit:"",unit_weight:"",spectral:"",childArr:[]}),m=_({__name:"InvoiceTitle",props:{detail:{type:Object,required:!0}},setup(o){return(e,i)=>Object.keys(e.detail).length!==0?(l(),d(r(v),{key:0,"px-8":"","pb-5":"",data:e.detail,columns:r(b),"col-number":1,"label-width":"130"},null,8,["data","columns"])):u("v-if",!0)}});var p=s(m,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/productManager/components/InvoiceTitle.vue"]]),A=Object.freeze(Object.defineProperty({__proto__:null,default:p},Symbol.toStringTag,{value:"Module"}));export{p as I,g as a,B as b,I as c,y as d,A as e};
+import{_ as s,d as _,o as l,G as d,l as r,a as u}from"./index.js";import{B as v}from"./basic-descriptions.aaf33da4.js";const y=o=>{const{company_address:e,mobile:i,registercode:n,bank_name:c,bankNo:t,name:a}=o;return{invoice_addr:e,invoice_mobile:i,invoice_code:n,invoice_bank:c,invoice_bankNo:t,invoice_title:a}},g=o=>{const{invoice_addr:e,invoice_mobile:i,invoice_code:n,invoice_bank:c,invoice_bankNo:t,invoice_title:a}=o;return{invoice_code:n,invoice_title:a,addrAndmobile:e+" "+i,bankAndBankNo:c+" "+t}},B=o=>{const{invoice_addr:e,invoice_mobile:i,company_license:n,invoice_bank:c,invoice_bankNo:t,invoice_title:a}=o;return{invoice_code:n,invoice_title:a,addrAndmobile:e+" "+i,bankAndBankNo:c+" "+t}},b=[{label:"\u62AC\u5934",span:24,field:"invoice_title"},{label:"\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7",span:24,field:"invoice_code"}],I=()=>({buyer_code:"",buyer_name:"",seller_code:"",seller_name:"",good_source:"1",good_code:"",good_type:"",is_combind:"0",inv_good_name:"",subunit_price:"",basic_status:"",unit_price:"",goodName:"",skuCode:"",cat_code:"",inv_type:"",cat_tax:"",spec:"",unit:"",unit_weight:"",spectral:"",childArr:[]}),m=_({__name:"InvoiceTitle",props:{detail:{type:Object,required:!0}},setup(o){return(e,i)=>Object.keys(e.detail).length!==0?(l(),d(r(v),{key:0,"px-8":"","pb-5":"",data:e.detail,columns:r(b),"col-number":1,"label-width":"130"},null,8,["data","columns"])):u("v-if",!0)}});var p=s(m,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/productManager/components/InvoiceTitle.vue"]]),A=Object.freeze(Object.defineProperty({__proto__:null,default:p},Symbol.toStringTag,{value:"Module"}));export{p as I,g as a,B as b,I as c,y as d,A as e};

+ 1 - 1
dist/assets/InvoiceTitle.7eecae.js

@@ -1 +1 @@
-import{_ as o,d as s,o as i,G as n,l as t,a as r}from"./index.js";import{i as a}from"./shared.80186348.js";import{B as c}from"./basic-descriptions.4fe7a992.js";const l=s({__name:"InvoiceTitle",props:{detail:{type:Object,required:!0}},setup(p){return(e,m)=>Object.keys(e.detail).length!==0?(i(),n(t(c),{key:0,"px-8":"","pb-5":"",data:e.detail,columns:t(a),"col-number":1,"label-width":"130"},null,8,["data","columns"])):r("v-if",!0)}});var f=o(l,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/inventoryCheck/components/InvoiceTitle.vue"]]);export{f as default};
+import{_ as o,d as s,o as i,G as n,l as t,a as r}from"./index.js";import{i as a}from"./shared.80186348.js";import{B as c}from"./basic-descriptions.aaf33da4.js";const l=s({__name:"InvoiceTitle",props:{detail:{type:Object,required:!0}},setup(p){return(e,m)=>Object.keys(e.detail).length!==0?(i(),n(t(c),{key:0,"px-8":"","pb-5":"",data:e.detail,columns:t(a),"col-number":1,"label-width":"130"},null,8,["data","columns"])):r("v-if",!0)}});var f=o(l,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/inventoryCheck/components/InvoiceTitle.vue"]]);export{f as default};

+ 0 - 0
dist/assets/basic-descriptions.4fe7a992.js → dist/assets/basic-descriptions.aaf33da4.js


+ 0 - 0
dist/assets/calc.af62d4cf.js → dist/assets/calc.f6fd5096.js


+ 0 - 0
dist/assets/columnRenderHelper.6fd631b0.js → dist/assets/columnRenderHelper.994fe1e5.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/columns.ae277a68.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/detail.0eccad.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/detail.344814.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/detail.40f304.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/detail.6e3838.js


+ 1 - 1
dist/assets/detail.8b0ced.js

@@ -1 +1 @@
-import{_ as E,d as b,aX as B,r as t,at as D,H as g,l as e,o as i,c as h,j as o,C as s,ah as T,G as d,a as p}from"./index.js";import{B as V,g as x,a as y}from"./BaseForm.0d14fd.js";import{B as w}from"./basic-descriptions.4fe7a992.js";import{u as I}from"./useDetail.b6f9d593.js";import{a as N}from"./index.09815a1f.js";import"./shared.80186348.js";import"./index.bb93f8.js";import"./use-page-search.64c4cb3a.js";import"./status.4e0ebdbc.js";import"./index.1518849e.js";const j={class:"padding__container"},H=b({__name:"detail",setup(P){const a=B(),{id:n,title:r,isDetail:m,collapses:l}=I({baseName:"\u76D8\u70B9",collapseLen:2});return n.value&&a.run(N({id:n.value})),(U,c)=>{const u=t("ElCollapseItem"),_=t("ElCollapse"),f=t("ElTabPane"),v=t("ElTabs"),C=D("loading");return g((i(),h("div",j,[o(v,null,{default:s(()=>[o(f,{label:e(r)},{default:s(()=>[o(_,{modelValue:e(l),"onUpdate:modelValue":c[0]||(c[0]=k=>T(l)?l.value=k:null)},{default:s(()=>[o(u,{title:e(r),name:"1"},{default:s(()=>[e(m)?p("v-if",!0):(i(),d(V,{key:0})),e(m)&&e(a).data?(i(),d(e(w),{key:1,columns:e(a).data.is_combind=="1"?e(x):e(y),data:e(a).data},null,8,["columns","data"])):p("v-if",!0)]),_:1},8,["title"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1})])),[[C,e(a).loading]])}}});var K=E(H,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/inventoryCheck/detail.vue"]]);export{K as default};
+import{_ as E,d as b,aX as B,r as t,at as D,H as g,l as e,o as i,c as h,j as o,C as s,ah as T,G as d,a as p}from"./index.js";import{B as V,g as x,a as y}from"./BaseForm.0d14fd.js";import{B as w}from"./basic-descriptions.aaf33da4.js";import{u as I}from"./useDetail.c46746e8.js";import{a as N}from"./index.e92f01c9.js";import"./shared.80186348.js";import"./index.bb93f8.js";import"./use-page-search.3fa5a5d4.js";import"./status.4e0ebdbc.js";import"./index.c2498e37.js";const j={class:"padding__container"},H=b({__name:"detail",setup(P){const a=B(),{id:n,title:r,isDetail:m,collapses:l}=I({baseName:"\u76D8\u70B9",collapseLen:2});return n.value&&a.run(N({id:n.value})),(U,c)=>{const u=t("ElCollapseItem"),_=t("ElCollapse"),f=t("ElTabPane"),v=t("ElTabs"),C=D("loading");return g((i(),h("div",j,[o(v,null,{default:s(()=>[o(f,{label:e(r)},{default:s(()=>[o(_,{modelValue:e(l),"onUpdate:modelValue":c[0]||(c[0]=k=>T(l)?l.value=k:null)},{default:s(()=>[o(u,{title:e(r),name:"1"},{default:s(()=>[e(m)?p("v-if",!0):(i(),d(V,{key:0})),e(m)&&e(a).data?(i(),d(e(w),{key:1,columns:e(a).data.is_combind=="1"?e(x):e(y),data:e(a).data},null,8,["columns","data"])):p("v-if",!0)]),_:1},8,["title"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1})])),[[C,e(a).loading]])}}});var K=E(H,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/inventoryCheck/detail.vue"]]);export{K as default};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/detail.b3ed56.js


+ 1 - 1
dist/assets/detail.c73fd2.js

@@ -1 +1 @@
-import{_ as E,d as b,aX as g,r as t,at as D,H as B,l as e,o as i,c as T,j as o,C as s,ah as h,G as p,a as d}from"./index.js";import{B as V}from"./basic-descriptions.4fe7a992.js";import{u as x}from"./useDetail.b6f9d593.js";import w from"./BaseForm.52e1af.js";import{g as y,a as I}from"./columns.c96c57e7.js";import{a as N}from"./index.09815a1f.js";import"./status.4e0ebdbc.js";import"./InvoiceTitle.77bebe.js";import"./index.08977e.js";import"./use-page-search.64c4cb3a.js";import"./ChildGoodEditModal.7967d3.js";import"./query-category.fa03a8.js";import"./tootip.df6555b6.js";const j={class:"padding__container"},H=b({__name:"detail",setup(P){const a=g(),{title:n,isDetail:r,collapses:l,id:m}=x({baseName:"\u5546\u54C1",collapseLen:2});return m.value&&a.run(N({id:m.value})),(U,c)=>{const u=t("ElCollapseItem"),_=t("ElCollapse"),f=t("ElTabPane"),v=t("ElTabs"),C=D("loading");return B((i(),T("div",j,[o(v,null,{default:s(()=>[o(f,{label:e(n)},{default:s(()=>[o(_,{modelValue:e(l),"onUpdate:modelValue":c[0]||(c[0]=k=>h(l)?l.value=k:null)},{default:s(()=>[o(u,{title:e(n),name:"1"},{default:s(()=>[e(r)?d("v-if",!0):(i(),p(w,{key:0})),e(r)&&e(a).data?(i(),p(e(V),{key:1,columns:e(a).data.is_combind=="1"?e(y):e(I),data:e(a).data},null,8,["columns","data"])):d("v-if",!0)]),_:1},8,["title"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1})])),[[C,e(a).loading]])}}});var S=E(H,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/productManager/detail.vue"]]);export{S as default};
+import{_ as E,d as b,aX as g,r as t,at as D,H as B,l as e,o as i,c as T,j as o,C as s,ah as h,G as p,a as d}from"./index.js";import{B as V}from"./basic-descriptions.aaf33da4.js";import{u as x}from"./useDetail.c46746e8.js";import w from"./BaseForm.52e1af.js";import{g as y,a as I}from"./columns.ae277a68.js";import{a as N}from"./index.e92f01c9.js";import"./status.4e0ebdbc.js";import"./InvoiceTitle.77bebe.js";import"./index.08977e.js";import"./use-page-search.3fa5a5d4.js";import"./ChildGoodEditModal.7967d3.js";import"./query-category.fa03a8.js";import"./tootip.8c17f792.js";const j={class:"padding__container"},H=b({__name:"detail",setup(P){const a=g(),{title:n,isDetail:r,collapses:l,id:m}=x({baseName:"\u5546\u54C1",collapseLen:2});return m.value&&a.run(N({id:m.value})),(U,c)=>{const u=t("ElCollapseItem"),_=t("ElCollapse"),f=t("ElTabPane"),v=t("ElTabs"),C=D("loading");return B((i(),T("div",j,[o(v,null,{default:s(()=>[o(f,{label:e(n)},{default:s(()=>[o(_,{modelValue:e(l),"onUpdate:modelValue":c[0]||(c[0]=k=>h(l)?l.value=k:null)},{default:s(()=>[o(u,{title:e(n),name:"1"},{default:s(()=>[e(r)?d("v-if",!0):(i(),p(w,{key:0})),e(r)&&e(a).data?(i(),p(e(V),{key:1,columns:e(a).data.is_combind=="1"?e(y):e(I),data:e(a).data},null,8,["columns","data"])):d("v-if",!0)]),_:1},8,["title"])]),_:1},8,["modelValue"])]),_:1},8,["label"])]),_:1})])),[[C,e(a).loading]])}}});var S=E(H,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/productManager/detail.vue"]]);export{S as default};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/detail.cae199.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/detail.dfa0f2.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/detail.e0889c.js


+ 0 - 0
dist/assets/execl-upload.5dfdadc6.js → dist/assets/execl-upload.05d98283.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.08977e.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.097ecf.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.0dbb49.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.1ddafc.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.303734.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.308ddd.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.34bfc8.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.4cf9ee.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.4f356d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.518df3.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.52bb3f.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.563420.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.5a0076.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.64a52c.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.656b8f.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.674a5d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.6dbeb3f7.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.6e73f4.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.72dcc7.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.76ffe1.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.80f631.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.9319d0.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.9fb413.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.ac4300.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.aeacb5.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.b0b79d.js


+ 0 - 0
dist/assets/index.485066d7.js → dist/assets/index.bae03886.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.bb0cc8.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.bb93f8.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.bdcf42.js


+ 0 - 0
dist/assets/index.760b0c2b.js → dist/assets/index.be4b5ce9.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.c0634d.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.c2487c.js


+ 0 - 0
dist/assets/index.1518849e.js → dist/assets/index.c2498e37.js


+ 0 - 0
dist/assets/index.e9006de7.js → dist/assets/index.c3b0799e.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.c8afd8.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.d07387.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.d687d3.js


+ 0 - 0
dist/assets/index.745688eb.js → dist/assets/index.d8da5d45.js


+ 0 - 0
dist/assets/index.3c772538.js → dist/assets/index.e5ac9190.js


+ 0 - 0
dist/assets/index.09815a1f.js → dist/assets/index.e92f01c9.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.ec0182.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.eeea76.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/index.js


+ 0 - 0
dist/assets/motion.1853a159.js → dist/assets/motion.8edff920.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/phone.9e1123.js


+ 1 - 1
dist/assets/qrCode.be32d8.js

@@ -1,4 +1,4 @@
-import{d as Ht,w as Ot,a7 as Lt,z as me,j as P,H as pe,at as we,l as R,aE as be,F as Jt,y as Ce,bu as ve,bv as Dt,aw as Ee,_ as Te,r as jt,o as Be,c as Ae,C as W,h as Se,au as Ne,M as Pe}from"./index.js";import{M as ht}from"./motion.1853a159.js";/*!
+import{d as Ht,w as Ot,a7 as Lt,z as me,j as P,H as pe,at as we,l as R,aE as be,F as Jt,y as Ce,bu as ve,bv as Dt,aw as Ee,_ as Te,r as jt,o as Be,c as Ae,C as W,h as Se,au as Ne,M as Pe}from"./index.js";import{M as ht}from"./motion.8edff920.js";/*!
  * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
  *
  * Copyright (c) 2014-2017, Jon Schlinkert.

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/regist.bfca82.js


+ 0 - 0
dist/assets/rule.33a6d932.js → dist/assets/rule.d503a72b.js


+ 0 - 0
dist/assets/tootip.df6555b6.js → dist/assets/tootip.8c17f792.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/assets/update.2f876b.js


+ 0 - 0
dist/assets/use-page-search.64c4cb3a.js → dist/assets/use-page-search.3fa5a5d4.js


+ 0 - 0
dist/assets/useDetail.b6f9d593.js → dist/assets/useDetail.c46746e8.js


+ 0 - 0
dist/assets/verifyCode.457de4b1.js → dist/assets/verifyCode.ebe0a51e.js


+ 99 - 21
src/components/productDetail/columns.ts

@@ -144,7 +144,7 @@ export const goodColumns = [
         label: '进项税率',
         span: 6,
         render(_, { cat_tax }) {
-            return cat_tax + '%'
+            return cat_tax.indexOf('%') === -1 ? cat_tax + '%' : cat_tax
         }
     },
     {
@@ -156,25 +156,59 @@ export const goodColumns = [
 
 
 export const goodHasChildColumns = [
+    {
+        field: 'id',
+        label: '商品ID',
+        span: 6
+    },
+    {
+        span: 6,
+        label: '状态',
+        render(_, { status }) {
+            return h(ElTag, { size: 'small', type: statusList.find(item => item.value == status)?.type || 'warning' }, {
+                default: () => statusList.find(item => item.value == status)?.label || '--'
+            })
+        }
+    },
+    {
+        span: 6,
+        field: 'apply_name',
+        label: '创建人'
+    },
+    {
+        span: 6,
+        field: 'create_time',
+        label: '创建时间'
+    },
     {
         span: 12,
         field: 'seller_name',
-        label: '销售方公司'
+        label: '销售方公司',
+        render(_, { seller_code, seller_name }) {
+            return createTooltip(seller_name, '销售方公司编号:' + seller_code, 300)
+        }
     },
     {
         span: 12,
         field: 'buyer_name',
-        label: '购买方公司'
+        label: '购买方公司',
+        render(_, { buyer_code, buyer_name }) {
+            return createTooltip(buyer_name, '购买方公司编号:' + buyer_code, 300)
+        }
     },
     {
-        span: 12,
-        field: 'goodName',
-        label: '订单商品名称'
+        span: 6,
+        label: '商品来源',
+        render(_, { good_source }) {
+            return good_source == '1' ? '采销商品' : '非采销商品'
+        }
     },
     {
-        span: 12,
-        field: 'inv_good_name',
-        label: '发票商品名称'
+        span: 6,
+        label: '组合类型',
+        render(_, { is_combind }) {
+            return is_combind == '0' ? '非组合商品' : '组合商品'
+        }
     },
     {
         span: 6,
@@ -187,8 +221,32 @@ export const goodHasChildColumns = [
     },
     {
         span: 6,
-        field: 'good_code',
-        label: '商品代码'
+        label: '进项成本状态',
+        render(_, { basic_status }) {
+            return h(ElTag, { size: 'small' }, {
+                default: () => basicStatusOptions.find(item => item.value == basic_status)?.label || '--'
+            })
+        }
+    },
+    {
+        span: 12,
+        field: 'inv_good_name',
+        label: '发票商品名称'
+    },
+    {
+        span: 12,
+        field: 'goodName',
+        label: '订单商品名称'
+    },
+    {
+        field: 'skuCode',
+        label: '商品编号',
+        span: 6
+    },
+    {
+        span: 6,
+        field: 'unit',
+        label: '单位'
     },
     {
         span: 6,
@@ -197,33 +255,53 @@ export const goodHasChildColumns = [
     },
     {
         span: 6,
-        field: 'unit',
-        label: '单位'
+        // field: 'unit_weight',
+        label: '重量',
+        render(_, { unit_weight }) {
+            return unit_weight + 'g'
+        }
     },
     {
         span: 6,
-        field: 'unit_price',
-        label: '税前单价'
+        label: '发票类型',
+        render(_, { inv_type }) {
+            return inv_type.includes('special') ? '专票' : '普票'
+        }
     },
     {
         span: 6,
         field: 'subunit_price',
-        label: '税单价'
+        label: '税单价'
     },
     {
         span: 6,
-        field: 'unit_weight',
-        label: '重量'
+        field: 'unit_price',
+        label: '税后单价'
     },
     {
         span: 6,
-        field: 'spectral',
-        label: '分光'
+        field: 'good_code',
+        label: '商品代码'
     },
     {
         field: 'cat_name',
         label: '进项类目',
-        span: 24
+        span: 12,
+        render(_, { cat_code, cat_name, short_name }) {
+            return `${cat_code}-${cat_name}-${short_name}`
+        }
+    },
+    {
+        label: '进项税率',
+        span: 6,
+        render(_, { cat_tax }) {
+            return cat_tax.indexOf('%') === -1 ? cat_tax + '%' : cat_tax
+        }
+    },
+    {
+        span: 6,
+        field: 'spectral',
+        label: '分光'
     },
     {
         label: '子商品',

+ 8 - 3
src/components/productDetail/index.vue

@@ -1,15 +1,20 @@
 <script setup lang="ts">
+import { computed } from 'vue';
 import BasicDescriptions from '../BasicDescriptions';
 import { goodColumns, goodHasChildColumns } from './columns';
 
- defineProps<{ data?: any }>()
+ const props = defineProps<{ data?: any; num?: number }>()
+
+ const columns = computed(() => {
+     const baseColumns = props.data?.is_combind == '1' ? goodHasChildColumns : goodColumns
+     return [...baseColumns, ...(props.num ? [{ label: '操作数量', render: () => props.num }] : [])]
+ })
 </script>
 
 
 <template>
     <BasicDescriptions
-        v-if="data"
-        :columns="data?.is_combind == '1' ? goodHasChildColumns : goodColumns"
+        :columns="columns"
         :data="data"
     />
 </template>

+ 1 - 0
src/views/invoiceInOut/inManager/components/ChooseGoodModal/config/content.config.ts

@@ -94,6 +94,7 @@ const columns = [
 
 const contentConfig: ContentConfig = {
   columns,
+  companyProp: 'buyer_code',
   apis: { 
     httpList: (parameter = {}) => httpList({ ...parameter, status: '1' })
   }

+ 13 - 8
src/views/invoiceInOut/inManager/detail.vue

@@ -17,7 +17,7 @@ import { useTask } from "/@/hooks/core";
 import SealMonthPicker from "/@/components/SealMonthPicker/index.vue"
 
 
-const { title, collapses, id } = useDetail({ baseName: '入库', collapseLen: 4 });
+const { title, collapses, id } = useDetail({ baseName: '入库', collapseLen: 5 });
 
 const visible = ref(false)
 
@@ -25,14 +25,19 @@ const visible = ref(false)
 const productDetailTask = useTask()
 
 const detailTask = useTask({ success(data) {
-  const { ProductRela, channel } = data
-  if(channel == 1){
-    const { product_id } = ProductRela[0]
-    productDetailTask.run(httpProductDetail({ id: product_id }))
-  } else {
+  const { ProductRela } = data
+  const { product_id } = ProductRela[0]
+  productDetailTask.run(httpProductDetail({ id: product_id }))
+}})
+
 
+const goodNum = computed(() => {
+  if (detailTask.data && detailTask.data.ProductRela){
+    return detailTask.data.ProductRela[0].num
   }
-}})
+
+  return 0
+})
 
 const state = reactive({
   editVisible: false,
@@ -170,7 +175,7 @@ id.value && detailTask.run(httpDetail({ id: id.value }))
           </ElCollapseItem>
 
           <ElCollapseItem title="商品信息" name="4" v-if="productDetailTask.data">
-            <ProductDetail :data="productDetailTask.data" />
+            <ProductDetail :data="productDetailTask.data" :num="goodNum" />
           </ElCollapseItem>
 
           <ElCollapseItem title="出入库信息确认" name="5" v-if="detailTask.data && detailTask.data.status == '1'">

+ 1 - 0
src/views/invoiceInOut/outManager/components/ChooseGoodModal/config/content.config.ts

@@ -94,6 +94,7 @@ const columns = [
 
 const contentConfig: ContentConfig = {
   columns,
+  companyProp: 'seller_code',
   apis: { 
     httpList: (parameter = {}) => httpList({ ...parameter, status: '1' })
   }

+ 7 - 0
src/views/invoiceInOut/outManager/components/NotOrderImportModal/columns-config.ts

@@ -67,6 +67,13 @@ const columns = [
     minWidth: '120px',
     defaultData: '',
   },
+  {
+    label: '商品类型',
+    prop: 'goodType',
+    minWidth: '120px',
+    defaultData: '',
+    required: true
+  },
   {
     label: '商品编号',
     prop: 'goodNo',

+ 7 - 6
src/views/invoiceInOut/outManager/components/NotOrderImportModal/index.vue

@@ -8,7 +8,7 @@ import { useVModel } from "@vueuse/core";
 import { mapLabelToSource, mapLabelToType } from "../../config/shared";
 import { httpAdd } from "/@/api/invoiceInOut/inOutManager";
 import { columns, mapLabelToProp } from "./columns-config";
-import { mapLabelToInvtype } from "/@/utils/status";
+import { mapGoodLabelToType, mapLabelToInvtype } from "/@/utils/status";
 import { isImportDataValid } from "./validator";
 
 
@@ -30,12 +30,13 @@ const Uploadsuccess = ({ results, header }) => {
   }
 
   let headok = true;
+  console.log(header.length, columns.length - 1)
 
   if (header.length !== columns.length - 1) {
     headok = false;
   } else {
     columns.slice(1).forEach((si, sii) => {
-      if (si.label.trim() !== header[sii].trim()) { 
+      if (si.label !== header[sii]) { 
         headok = false; 
       }
     });
@@ -62,7 +63,6 @@ const Uploadsuccess = ({ results, header }) => {
         value = value.replace(')', ')')
       }
 
-      item[prop] = value
       // const labels = ['税率', '销售方公司纳税号', '购买方纳税号', '单位']
       // if (labels.includes(label.replace('_1', ''))) {
 
@@ -74,6 +74,8 @@ const Uploadsuccess = ({ results, header }) => {
       //   }
       // } else {
       // }
+
+      item[prop] = value
     })
 
     result.push(item)
@@ -97,16 +99,15 @@ const handleSubmit = async () => {
         inv_type: mapLabelToInvtype[item.inv_type],
         source: mapLabelToSource[item.source], 
         type: mapLabelToType[item.type],
-        
+        goodType: mapGoodLabelToType[item.goodType],
+
         inv_num: Number(item.inv_num).toFixed(8),
         inv_subprice: Number(item.inv_subprice).toFixed(8),
         inv_subtotal: Number(item.inv_subtotal).toFixed(8),
         inv_price: Number(item.inv_price).toFixed(8),
         inv_total: Number(item.inv_tax_total).toFixed(8),
 
-
         platform_type: "1",
-        goodType: "1",
         channel: "2",
         relaArr: [{  
           id: item.relaGoodNo, 

+ 8 - 2
src/views/invoiceInOut/outManager/components/NotOrderImportModal/validator.ts

@@ -2,7 +2,7 @@ import { h } from "vue"
 import { ElMessageBox } from "element-plus"
 import { mapPropertyToLabel, requiredProps } from "./columns-config"
 import { diffOptions, mapDiffOptions, mapLabelToSource, mapLabelToType, sourceOptions, typeOptions } from "../../config/shared"
-import { mapLabelToInvtype, xs_inv_type_list } from "/@/utils/status"
+import { mapGoodTypeToLabel, mapLabelToInvtype, xs_inv_type_list } from "/@/utils/status"
 
 function onDisplayErrorMessage(errors) {
     ElMessageBox({
@@ -28,6 +28,7 @@ export function isValidRequired(results: any[]) {
     let isInvError = false
     let isTaxDiffError = false
     let isCatDiffError = false
+    let isGoodType = false
 
     for (const sourceIndex in results) {
         const item = results[sourceIndex];
@@ -51,6 +52,8 @@ export function isValidRequired(results: any[]) {
                 isTaxDiffError = true
             } else if (key === 'cat_diff' && !mapDiffOptions[value]) {
                 isCatDiffError = true
+            } else if (key === 'goodType' && mapGoodTypeToLabel[value]){
+                isGoodType =  false
             }
         }
 
@@ -60,12 +63,15 @@ export function isValidRequired(results: any[]) {
             if (isSourceError) errors[index] += ' ,订单来源必须为' + sourceOptions.map(({ label }) => label).join('、')
             if (isInvError) errors[index] += ' ,发票类型必须为' + xs_inv_type_list.map(({ label }) => label).join('、')
             if (isTaxDiffError) errors[index] += ' ,类目编号状态必须为' + diffOptions.map(({ label }) => label).join('、')
+            if (isCatDiffError) errors[index] += ' ,税率状态必须为' + diffOptions.map(({ label }) => label).join('、')
             if (isCatDiffError) errors[index] += ' ,税率状态' + diffOptions.map(({ label }) => label).join('、')
+            if (isGoodType) errors[index] += ' ,商品类型必须为' + diffOptions.map(({ label }) => label).join('、')
         } else {
             if (isTypeError) errors[index] = '类型必须为' + typeOptions.map(({ label }) => label).join('、')
             if (isSourceError) errors[index] = ' 订单来源必须为' + sourceOptions.map(({ label }) => label).join('、')
             if (isInvError) errors[index] = ' 类目编号状态必须为' + diffOptions.map(({ label }) => label).join('、')
-            if (isCatDiffError) errors[index] = ' 税率状态' + diffOptions.map(({ label }) => label).join('、')
+            if (isCatDiffError) errors[index] = ' 税率状态必须为' + diffOptions.map(({ label }) => label).join('、')
+            if (isGoodType) errors[index] = ' 商品类型必须为' + diffOptions.map(({ label }) => label).join('、')
         }
     }
 

+ 20 - 7
src/views/invoiceInOut/outManager/components/OrderImportModal/columns-config.ts

@@ -67,6 +67,19 @@ const columns = [
     minWidth: '120px',
     defaultData: '',
   },
+  // {
+  //   label: '订单主单号',
+  //   prop: 'cxCode',
+  //   minWidth: '120px',
+  //   defaultData: '',
+  // },
+  {
+    label: '商品类型',
+    prop: 'goodType',
+    minWidth: '120px',
+    defaultData: '',
+    required: true
+  },
   {
     label: '商品编号',
     prop: 'goodNo',
@@ -287,14 +300,14 @@ const columns = [
     prop: 'remark',
     minWidth: '80px',
     defaultData: '',
+  },
+  {
+    label: '入账月份',
+    prop: 'fz_date',
+    minWidth: '80px',
+    defaultData: '',
+    required: true
   }
-  // {
-  //   label: '入账月份',
-  //   prop: 'TODO37',
-  //   minWidth: '80px',
-  //   defaultData: '',
-  //   required: true
-  // }
 ]
 
 const orderTemplate = [columns.slice(1).reduce((prev, current) => {

+ 3 - 13
src/views/invoiceInOut/outManager/components/OrderImportModal/index.vue

@@ -9,7 +9,7 @@ import { columns, mapLabelToProp } from "./columns-config";
 import { isImportDataValid } from "./validator";
 import { httpAdd } from "/@/api/invoiceInOut/inOutManager";
 import { mapLabelToSource, mapLabelToType } from "../../config/shared";
-import { mapLabelToInvtype } from "/@/utils/status";
+import { mapGoodLabelToType, mapLabelToInvtype } from "/@/utils/status";
 
 
 
@@ -66,19 +66,9 @@ const Uploadsuccess = ({ results, header }) => {
         value = value.replace(')', ')')
       }
 
-      // const labels = ['税率', '销售方公司纳税号', '购买方纳税号','单位']
-      // if (labels.includes(label.replace('_1', '')) && label.indexOf('_1') === -1){
-      //   if(prop.includes('inv_')){
-      //     item[prop.replace('inv_', '')] = value
-      //   } else {
-      //     item[prop] = value
-      //   }
-      // } else {
-      // }
       item[prop] = value
     })
 
-    console.log(item)
     result.push(item)
   }
 
@@ -100,6 +90,7 @@ const handleSubmit = async () => {
         inv_type: mapLabelToInvtype[item.inv_type],
         source: mapLabelToSource[item.source], 
         type: mapLabelToType[item.type],
+        goodType: mapGoodLabelToType[item.goodType],
         
         inv_num: Number(item.inv_num).toFixed(8),
         inv_subprice: Number(item.inv_subprice).toFixed(8),
@@ -108,8 +99,7 @@ const handleSubmit = async () => {
         inv_total: Number(item.inv_tax_total).toFixed(8),
 
         platform_type: '1',
-        channel: '1',
-        goodType: '1'
+        channel: '1'
       })
     })
 

+ 8 - 2
src/views/invoiceInOut/outManager/components/OrderImportModal/validator.ts

@@ -2,7 +2,7 @@ import { h } from "vue"
 import { ElMessageBox } from "element-plus"
 import { mapPropertyToLabel, requiredProps } from "./columns-config"
 import { diffOptions, mapDiffOptions, mapLabelToSource, mapLabelToType, sourceOptions, typeOptions } from "../../config/shared"
-import { mapLabelToInvtype, xs_inv_type_list } from "/@/utils/status"
+import { mapGoodTypeToLabel, mapLabelToInvtype, xs_inv_type_list } from "/@/utils/status"
 
 function onDisplayErrorMessage(errors) {
     ElMessageBox({
@@ -28,6 +28,7 @@ export function isValidRequired(results: any[]) {
     let isInvError = false
     let isTaxDiffError = false
     let isCatDiffError = false
+    let isGoodType = false
 
     for (const sourceIndex in results) {
         const item = results[sourceIndex];
@@ -51,6 +52,8 @@ export function isValidRequired(results: any[]) {
                 isTaxDiffError = true
             } else if (key === 'cat_diff' && !mapDiffOptions[value]) {
                 isCatDiffError = true
+            } else if (key === 'goodType' && mapGoodTypeToLabel[value]) {
+                isGoodType = false
             }
         }
 
@@ -60,12 +63,15 @@ export function isValidRequired(results: any[]) {
             if (isSourceError) errors[index] += ' ,订单来源必须为' + sourceOptions.map(({ label }) => label).join('、')
             if (isInvError) errors[index] += ' ,发票类型必须为' + xs_inv_type_list.map(({ label }) => label).join('、')
             if (isTaxDiffError) errors[index] += ' ,类目编号状态必须为' + diffOptions.map(({ label }) => label).join('、')
+            if (isCatDiffError) errors[index] += ' ,税率状态必须为' + diffOptions.map(({ label }) => label).join('、')
             if (isCatDiffError) errors[index] += ' ,税率状态' + diffOptions.map(({ label }) => label).join('、')
+            if (isGoodType) errors[index] += ' ,商品类型必须为' + diffOptions.map(({ label }) => label).join('、')
         } else {
             if (isTypeError) errors[index] = '类型必须为' + typeOptions.map(({ label }) => label).join('、')
             if (isSourceError) errors[index] = ' 订单来源必须为' + sourceOptions.map(({ label }) => label).join('、')
             if (isInvError) errors[index] = ' 类目编号状态必须为' + diffOptions.map(({ label }) => label).join('、')
-            if (isCatDiffError) errors[index] = ' 税率状态' + diffOptions.map(({ label }) => label).join('、')
+            if (isCatDiffError) errors[index] = ' 税率状态必须为' + diffOptions.map(({ label }) => label).join('、')
+            if (isGoodType) errors[index] = ' 商品类型必须为' + diffOptions.map(({ label }) => label).join('、')
         }
     }
 

+ 176 - 0
src/views/invoiceInOut/outManager/config/columns.ts

@@ -286,4 +286,180 @@ export const orderGoodColumns = [
     span: 12,
     field: 'remark'
   }
+]
+
+export const importOrderGoodColumns = [
+  {
+    label: '订单购买方公司',
+    span: 12,
+    render(_, row) {
+      return createTooltip(row.buyer_name, "购买方公司纳税识别号 : " + row.buyer_code, 340)
+    }
+  },
+  {
+    label: '订单销售方公司',
+    span: 12,
+    render(_, row) {
+      return createTooltip(row.seller_name, "销售方公司纳税识别号 : " + row.seller_code, 340)
+    }
+  },
+  {
+    label: '订单编号',
+    field: 'orderCode',
+    span: 6
+  },
+  {
+    label: '订单主编号',
+    field: 'cxCode',
+    span: 6
+  },
+  {
+    label: '类目编码',
+    span: 12,
+    render(_, { cat_code, cat_name, tax }) {
+      return `${cat_code}-${cat_name}-${(Number(tax)) + '%'}`
+    }
+  },
+  {
+    label: '商品类型',
+    span: 6,
+    render(_, { goodType }) {
+      return h(ElTag, { size: 'small' }, {
+        default: () => cg_order_type_options.find(item => item.value == goodType)?.label
+      })
+    }
+  },
+  {
+    label: '商品编号',
+    span: 6,
+    field: 'goodNo'
+  },
+  {
+    label: '商品名称',
+    span: 12,
+    field: 'goodName'
+  },
+
+
+
+  {
+    label: '单位',
+    field: 'unit',
+    span: 6
+  },
+  {
+    label: '商品数量',
+    field: 'num',
+    span: 6
+  },
+  {
+    label: '商品单价',
+    field: 'goodPrice',
+    span: 6
+  },
+  {
+    label: '订单总金额',
+    field: 'totalPrice',
+    span: 6
+  },
+
+
+]
+
+
+export const importInvoiceGoodColumns = [
+  {
+    label: '购买方公司',
+    span: 12,
+    render(_, row) {
+      return createTooltip(row.inv_buyer_name, "购买方公司纳税识别号 : " + row.inv_buyer_code, 340)
+    }
+  },
+  {
+    label: '销售方公司',
+    span: 12,
+    render(_, row) {
+      return createTooltip(row.inv_seller_name, "销售方公司纳税识别号 : " + row.inv_seller_code, 340)
+    }
+  },
+  {
+    label: '发票号码',
+    field: 'inv_number',
+    span: 6
+  },
+  {
+    label: '开票日期',
+    field: 'inv_open_date',
+    span: 6
+  },
+  {
+    label: '发票类型',
+    span: 6,
+    render(_, row) {
+      return xs_inv_type_list.find(item => item.value == row.inv_type)?.label
+    }
+  },
+  {
+    label: '发票明细ID',
+    field: 'inv_item_id',
+    span: 6
+  },
+  {
+    label: '货物或应税劳务、服务名称',
+    field: 'inv_good_name',
+    span: 12,
+  },
+  {
+    label: '类目编号',
+    span: 6,
+    render(_, row) { return row.inv_cat_code }
+  },
+  {
+    label: '规格型号',
+    span: 6,
+    field: 'inv_spec'
+  },
+  {
+    label: '单位',
+    span: 6,
+    field: 'inv_unit'
+  },
+  {
+    label: '数量',
+    span: 6,
+    field: 'inv_num'
+  },
+  {
+    label: '税前单价',
+    span: 6,
+    field: 'inv_subprice'
+  },
+  {
+    label: '税前总价',
+    span: 6,
+    field: 'inv_subtotal'
+  },
+  {
+    label: '税率',
+    span: 6,
+    field: 'inv_tax',
+    render(_, { inv_tax }) {
+      return Number(inv_tax) + '%'
+    }
+  },
+  {
+    span: 6,
+    label: '税额',
+    field: 'inv_tax_total'
+  },
+  {
+    label: '税后单价',
+    span: 6,
+    field: 'inv_price'
+  },
+  {
+    label: '税后总额',
+    span: 6,
+    field: 'inv_subtotal'
+  }
 ]

+ 83 - 38
src/views/invoiceInOut/outManager/detail.vue

@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { computed, reactive, ref } from "vue";
 
-import { orderGoodColumns } from "./config/columns"
+import { importOrderGoodColumns, importInvoiceGoodColumns, orderGoodColumns } from "./config/columns"
 import { useDetail } from "/@/hooks/core/useDetail";
 import BasicDescriptions from "/@/components/BasicDescriptions";
 import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
@@ -9,18 +9,27 @@ import ChooseGoodModal from "./components/ChooseGoodModal/index.vue"
 import ChildGoodEditModal from "./components/ChildGoodEditModal.vue";
 
 import { httpDetail, httpStatus } from "/@/api/invoiceInOut/inOutManager";
-import { ElForm, ElMessage } from "element-plus";
+import { httpDetail as httpProductDetail } from "/@/api/invoiceInOut/productManager";
+import { ElButton, ElCollapse, ElCollapseItem, ElForm, ElMessage, ElTable, ElTableColumn, ElTooltip } from "element-plus";
+import ProductDetail from "/@/components/ProductDetail/index.vue"
 import { useTask } from "/@/hooks/core";
 
 import SealMonthPicker from "/@/components/SealMonthPicker/index.vue"
 
 
-const { title, collapses, id } = useDetail({ baseName: '出库', collapseLen: 2 });
+const { title, collapses, id } = useDetail({ baseName: '出库', collapseLen: 5 });
 
 const visible = ref(false)
+const productVisible= ref(false)
+const productIndex = ref(0)
+
+
+
+const productDetailTask = useTask()
 
 const detailTask = useTask()
 
+
 const state = reactive({
   editVisible: false,
   index: -1,
@@ -32,8 +41,8 @@ const formRef = ref<InstanceType<typeof ElForm> | null>(null)
 
 const searchParameter = computed(() => {
   // 入库、入库红冲和出库红冲 只能选择真实成本的商品,出库类型可以选择预估成本商品
-  if(!detailTask.data) return {}
-  return detailTask.data.type == '2' ? { basic_status: '1'  } : { basic_status: '2' }
+  if (!detailTask.data) return {}
+  return detailTask.data.type == '2' ? { basic_status: '1' } : { basic_status: '2' }
 })
 
 const formData = ref({ goods: [], month: '' })
@@ -43,23 +52,18 @@ const rules = {
   month: [{ required: true, message: '请选择入账月份' }]
 }
 
-const disabledTomorrow = (time) => {
-  const now = new Date();
-  return time.getTime() > now.setHours(0, 0, 0, 0);
-};
-
-function handleGoodComfirm(values: any[]){
+function handleGoodComfirm(values: any[]) {
   const ids = formData.value.goods.map(({ id }) => id)
   const list = []
 
   values.forEach(item => {
-    if(!ids.includes(item.id)){ list.push(item) }
+    if (!ids.includes(item.id)) { list.push(item) }
   })
 
-  formData.value.goods = [...list,  ...formData.value.goods]
+  formData.value.goods = [...list, ...formData.value.goods]
 }
 
-function handleChildGoodEdit(index: number){
+function handleChildGoodEdit(index: number) {
   state.index = index
   state.editVisible = true
   state.data = { ...formData.value.goods[index] }
@@ -87,26 +91,26 @@ function getSpanNumber(data, prop) {
   }
 }
 
-function spanMethod({ row:_1, column:_2, rowIndex, columnIndex }: any){
-  if ([0, 1, 2, 7].includes(Number(columnIndex))){
-      let nameSpan = getSpanNumber(formData.value.goods, "id");
-      return { rowspan: nameSpan[rowIndex], colspan: 1 };
-    }
+function spanMethod({ row: _1, column: _2, rowIndex, columnIndex }: any) {
+  if ([0, 1, 2, 7].includes(Number(columnIndex))) {
+    let nameSpan = getSpanNumber(formData.value.goods, "id");
+    return { rowspan: nameSpan[rowIndex], colspan: 1 };
+  }
 }
 
-async function onSubmit(){
-  try{
+async function onSubmit() {
+  try {
     await formRef.value.validate()
     const relaArrCopy = formData.value.goods.map(({ id, goodNum }) => ({ id, num: goodNum }))
 
     const relaArr = []
     const mapId = {}
-    
-    for(const item of relaArrCopy){
-      if (!mapId[item.id]){
+
+    for (const item of relaArrCopy) {
+      if (!mapId[item.id]) {
         relaArr.push(item)
         mapId[item.id] = true
-      } 
+      }
     }
 
     loading.value = true
@@ -119,23 +123,33 @@ async function onSubmit(){
     } else {
       ElMessage.warning(message)
     }
-  }catch(err){
+  } catch (err) {
     console.log(err)
   }
 }
 
-function handleEditGood(index, data){
+function handleEditGood(index, data) {
   const { id } = formData.value.goods[index]
   formData.value.goods.forEach((item, index) => {
-    if(item.id === id){
+    if (item.id === id) {
       formData.value.goods[index].goodNum = data.goodNum
 
-      if(formData.value.goods[index].childNum){ formData.value.goods[index].childActionNum = formData.value.goods[index].childNum * data.goodNum }
+      if (formData.value.goods[index].childNum) { formData.value.goods[index].childActionNum = formData.value.goods[index].childNum * data.goodNum }
     }
   })
 }
 
-function handleDelete(index){
+
+function handleShowDetail(id, index){
+  productVisible.value = true
+
+  console.log(index, '~~🚀~~')
+
+  productIndex.value = index
+  productDetailTask.run(httpProductDetail({ id }))
+}
+
+function handleDelete(index) {
   const { id } = formData.value.goods[index]
   formData.value.goods = formData.value.goods.filter((item) => item.id !== id)
 }
@@ -152,8 +166,33 @@ id.value && detailTask.run(httpDetail({ id: id.value }))
             <BasicDescriptions :columns="orderGoodColumns" :data="detailTask.data" v-if="detailTask.data" />
           </ElCollapseItem>
 
-          <!-- && detailTask.data.type == '1' -->
-          <ElCollapseItem title="出入库信息确认" name="2" v-if="detailTask.data && detailTask.data.status == '1'">
+          <!-- importInvoiceGoodColumns -->
+          <ElCollapseItem :title="'订单详情'" name="2">
+            <BasicDescriptions v-if="detailTask.data" :columns="importOrderGoodColumns" :data="detailTask.data" />
+          </ElCollapseItem>
+
+          <ElCollapseItem :title="'发票详情'" name="3">
+            <BasicDescriptions v-if="detailTask.data" :columns="importInvoiceGoodColumns" :data="detailTask.data" />
+          </ElCollapseItem>
+
+          <ElCollapseItem title="商品信息" name="4" v-if="detailTask.data">
+            <ElTable size="small" border :data="detailTask.data.ProductRela">
+              <ElTableColumn label="商品ID" prop="product_id" show-overflow-tooltip />
+              <ElTableColumn label="商品编号" prop="skuCode" show-overflow-tooltip />
+              <ElTableColumn label="商品名称" prop="goodName" show-overflow-tooltip />
+              <ElTableColumn label="操作数量" prop="num" show-overflow-tooltip />
+              <ElTableColumn label="操作" width="100px">
+                <template #="scope">
+                  <ElTooltip content="查看详情">
+                    <ElButton type="primary" link :icon="useRenderIcon('eye-view')"
+                      @click="handleShowDetail(scope.row.product_id, scope.$index)" />
+                  </ElTooltip>
+                </template>
+              </ElTableColumn>
+            </ElTable>
+          </ElCollapseItem>
+
+          <ElCollapseItem title="出入库信息确认" name="5" v-if="detailTask.data && detailTask.data.status == '1'">
             <ElForm ref="formRef" :rules="rules" :model="formData">
               <ElFormItem label="操作商品" prop="goods">
                 <ElTable :span-method="spanMethod" border size="small" :data="formData.goods">
@@ -208,11 +247,17 @@ id.value && detailTask.run(httpDetail({ id: id.value }))
 
     <ChooseGoodModal v-model:visible="visible" :otherSearchParameter="searchParameter" @submit="handleGoodComfirm" />
 
-    <ChildGoodEditModal 
-      :data="state.data" 
-      :index="state.index" 
-      v-model:visible="state.editVisible"
-      @submit="handleEditGood" 
-    />
+    <ChildGoodEditModal :data="state.data" :index="state.index" v-model:visible="state.editVisible"
+      @submit="handleEditGood" />
+
+    <ElDialog center title="商品详情" v-model="productVisible" style="overflow: hidden">
+      <div v-loading="productDetailTask.loading">
+        <ProductDetail
+          v-if="productDetailTask.data"
+          :data="productDetailTask.data"
+          :num="detailTask.data.ProductRela[productIndex].num"
+        />
+      </div>
+    </ElDialog>
   </div>
 </template>

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است