snow 4 kuukautta sitten
vanhempi
commit
109c31dfe1
83 muutettua tiedostoa jossa 691 lisäystä ja 164 poistoa
  1. 0 0
      dist/assets/BaseForm.4fc96e.js
  2. 0 0
      dist/assets/BaseForm.5a2918.js
  3. 0 0
      dist/assets/BaseForm.dc901e.js
  4. 0 0
      dist/assets/ChildGoodEditModal.14a346.js
  5. 0 0
      dist/assets/ChildGoodEditModal.266623.js
  6. 0 0
      dist/assets/ChildGoodEditModal.656d8a.js
  7. 0 0
      dist/assets/ChildGoodEditModal.6d23b8.js
  8. 1 0
      dist/assets/InvoiceTitle.250697.js
  9. 1 1
      dist/assets/InvoiceTitle.7eecae.js
  10. 0 1
      dist/assets/InvoiceTitle.9ee27f.js
  11. 0 0
      dist/assets/basic-descriptions.4115ebf1.js
  12. 0 0
      dist/assets/calc.d812972c.js
  13. 0 0
      dist/assets/detail.40f304.js
  14. 0 0
      dist/assets/detail.6337df.js
  15. 0 0
      dist/assets/detail.bbe525.js
  16. 1 1
      dist/assets/detail.c73fd2.js
  17. 0 0
      dist/assets/detail.ce357b.js
  18. 0 0
      dist/assets/detail.edb526.js
  19. 1 1
      dist/assets/detail.f3b08e.js
  20. 0 0
      dist/assets/execl-upload.13f2c477.css
  21. 0 0
      dist/assets/execl-upload.2ba69270.js
  22. 0 0
      dist/assets/index.0dbb49.js
  23. 0 0
      dist/assets/index.1219f2.js
  24. 0 0
      dist/assets/index.1ddafc.js
  25. 0 0
      dist/assets/index.22cff3.js
  26. 0 0
      dist/assets/index.29ade6.js
  27. 0 0
      dist/assets/index.303734.js
  28. 0 1
      dist/assets/index.384d251b.js
  29. 0 0
      dist/assets/index.3b1b4b.js
  30. 1 0
      dist/assets/index.4a9af8a9.js
  31. 0 0
      dist/assets/index.4cf9ee.js
  32. 0 0
      dist/assets/index.52bb3f.js
  33. 1 0
      dist/assets/index.54c70d49.js
  34. 0 0
      dist/assets/index.637ef5.js
  35. 0 0
      dist/assets/index.669119.js
  36. 0 0
      dist/assets/index.740cb1.js
  37. 0 0
      dist/assets/index.7a0f8c.js
  38. 0 0
      dist/assets/index.81f840.js
  39. 0 0
      dist/assets/index.875b91.js
  40. 0 0
      dist/assets/index.88cf8b.js
  41. 0 0
      dist/assets/index.91c8b9.js
  42. 0 0
      dist/assets/index.9fb413.js
  43. 0 0
      dist/assets/index.a6d6c8.js
  44. 0 0
      dist/assets/index.a712f1.js
  45. 0 0
      dist/assets/index.a9ff40.js
  46. 0 0
      dist/assets/index.b45b7a88.css
  47. 0 0
      dist/assets/index.bb93f8.js
  48. 0 0
      dist/assets/index.c2487c.js
  49. 0 0
      dist/assets/index.ccc514.js
  50. 0 0
      dist/assets/index.da6cf9.js
  51. 1 0
      dist/assets/index.f2c2c5bc.js
  52. 0 0
      dist/assets/index.f86972.js
  53. 0 0
      dist/assets/index.f9a061.js
  54. 1 1
      dist/assets/index.js
  55. 0 0
      dist/assets/motion.8ab68f9d.js
  56. 0 0
      dist/assets/phone.9e1123.js
  57. 1 1
      dist/assets/qrCode.be32d8.js
  58. 0 0
      dist/assets/query-category.7a496a.js
  59. 1 0
      dist/assets/query-category.e74fae3a.css
  60. 0 0
      dist/assets/regist.bfca82.js
  61. 0 0
      dist/assets/rule.9495547b.js
  62. 1 0
      dist/assets/shared.6241f91b.js
  63. 0 0
      dist/assets/status.21dece30.js
  64. 0 0
      dist/assets/update.2f876b.js
  65. 1 0
      dist/assets/use-page-search.4f487e2f.js
  66. 0 0
      dist/assets/useDetail.c708d002.js
  67. 0 0
      dist/assets/verifyCode.d48bef92.js
  68. 1 1
      dist/index.html
  69. 2 1
      src/api/InvoiceSales/invoiceApply/index.ts
  70. 1 1
      src/api/invoiceInOut/inOutManager/index.ts
  71. 4 0
      src/api/user.ts
  72. 6 0
      src/utils/status.ts
  73. 2 2
      src/views/invoiceInOut/inOutManager/components/OrderImportModal/columns-config.ts
  74. 4 3
      src/views/invoiceInOut/inOutManager/components/OrderImportModal/index.vue
  75. 7 3
      src/views/invoiceInOut/inOutManager/components/OrderImportModal/validator.ts
  76. 45 1
      src/views/invoiceInOut/inOutManager/config/columns.ts
  77. 190 42
      src/views/invoiceInOut/inOutManager/config/content.config.ts
  78. 7 0
      src/views/invoiceInOut/inOutManager/config/shared.ts
  79. 14 5
      src/views/invoiceInOut/inOutManager/detail.vue
  80. 7 2
      src/views/invoiceInOut/inOutManager/index.vue
  81. 106 91
      src/views/invoiceInOut/productManager/components/BaseForm.vue
  82. 259 0
      src/views/invoiceInOut/productManager/components/query-category.vue
  83. 24 5
      src/views/invoiceInOut/productManager/components/shared.ts

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/BaseForm.4fc96e.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/BaseForm.5a2918.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/BaseForm.dc901e.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/ChildGoodEditModal.14a346.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/ChildGoodEditModal.266623.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/ChildGoodEditModal.656d8a.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/ChildGoodEditModal.6d23b8.js


+ 1 - 0
dist/assets/InvoiceTitle.250697.js

@@ -0,0 +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.4115ebf1.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:"",good_code:"",good_type:"",is_combind:"",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.456185fd.js";import{B as c}from"./basic-descriptions.2bd5636f.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.456185fd.js";import{B as c}from"./basic-descriptions.4115ebf1.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 - 1
dist/assets/InvoiceTitle.9ee27f.js

@@ -1 +0,0 @@
-import{_ as r,d as _,o as l,G as d,l as s,a as u}from"./index.js";import{B as p}from"./basic-descriptions.2bd5636f.js";const y=o=>{const{company_address:e,mobile:i,company_license:n,bank_name:t,bankNo:c,company_name:a}=o;return{invoice_addr:e,invoice_mobile:i,invoice_code:n,invoice_bank:t,invoice_bankNo:c,invoice_title:a}},g=o=>{const{invoice_addr:e,invoice_mobile:i,invoice_code:n,invoice_bank:t,invoice_bankNo:c,invoice_title:a}=o;return{invoice_code:n,invoice_title:a,addrAndmobile:e+" "+i,bankAndBankNo:t+" "+c}},v=[{label:"\u62AC\u5934",span:24,field:"invoice_title"},{label:"\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7",span:24,field:"invoice_code"}],B=()=>({buyer_code:"",buyer_name:"",seller_code:"",seller_name:"",good_source:"",good_code:"",good_type:"",is_combind:"",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(s(p),{key:0,"px-8":"","pb-5":"",data:e.detail,columns:s(v),"col-number":1,"label-width":"130"},null,8,["data","columns"])):u("v-if",!0)}});var b=r(m,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/productManager/components/InvoiceTitle.vue"]]),I=Object.freeze(Object.defineProperty({__proto__:null,default:b},Symbol.toStringTag,{value:"Module"}));export{b as I,g as a,y as b,B as c,I as d};

+ 0 - 0
dist/assets/basic-descriptions.2bd5636f.js → dist/assets/basic-descriptions.4115ebf1.js


+ 0 - 0
dist/assets/calc.38f1ec51.js → dist/assets/calc.d812972c.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/detail.40f304.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/detail.6337df.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/detail.bbe525.js


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

@@ -1 +1 @@
-import{_ as E,d as b,aV as g,r as t,aj as D,H as B,l as e,o as n,c as T,j as o,C as s,a6 as V,G as d,a as p}from"./index.js";import{B as h}from"./basic-descriptions.2bd5636f.js";import{u as x}from"./useDetail.42fb2b43.js";import j from"./BaseForm.5a2918.js";import{g as w,a as y}from"./ChildGoodEditModal.266623.js";import{a as I}from"./index.384d251b.js";import"./status.915de772.js";import"./InvoiceTitle.9ee27f.js";import"./index.91c8b9.js";const N={class:"padding__container"},H=b({__name:"detail",setup(P){const a=g(),{title:i,isDetail:r,collapses:l,id:m}=x({baseName:"\u5546\u54C1",collapseLen:2});return m.value&&a.run(I({id:m.value})),(U,c)=>{const u=t("ElCollapseItem"),_=t("ElCollapse"),f=t("ElTabPane"),v=t("ElTabs"),C=D("loading");return B((n(),T("div",N,[o(v,null,{default:s(()=>[o(f,{label:e(i)},{default:s(()=>[o(_,{modelValue:e(l),"onUpdate:modelValue":c[0]||(c[0]=k=>V(l)?l.value=k:null)},{default:s(()=>[o(u,{title:e(i),name:"1"},{default:s(()=>[e(r)?p("v-if",!0):(n(),d(j,{key:0})),e(r)&&e(a).data?(n(),d(e(h),{key:1,columns:e(a).data.is_combind=="1"?e(w):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 J=E(H,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/productManager/detail.vue"]]);export{J as default};
+import{_ as E,d as b,aO as g,r as t,aj as D,H as B,l as e,o as i,c as T,j as o,C as s,a6 as V,G as d,a as p}from"./index.js";import{B as h}from"./basic-descriptions.4115ebf1.js";import{u as x}from"./useDetail.c708d002.js";import j from"./BaseForm.dc901e.js";import{g as w,a as y}from"./ChildGoodEditModal.266623.js";import{a as I}from"./index.f2c2c5bc.js";import"./status.21dece30.js";import"./InvoiceTitle.250697.js";import"./index.91c8b9.js";import"./use-page-search.4f487e2f.js";import"./query-category.7a496a.js";const N={class:"padding__container"},H=b({__name:"detail",setup(O){const a=g(),{title:n,isDetail:r,collapses:l,id:m}=x({baseName:"\u5546\u54C1",collapseLen:2});return m.value&&a.run(I({id:m.value})),(P,c)=>{const u=t("ElCollapseItem"),_=t("ElCollapse"),f=t("ElTabPane"),v=t("ElTabs"),C=D("loading");return B((i(),T("div",N,[o(v,null,{default:s(()=>[o(f,{label:e(n)},{default:s(()=>[o(_,{modelValue:e(l),"onUpdate:modelValue":c[0]||(c[0]=k=>V(l)?l.value=k:null)},{default:s(()=>[o(u,{title:e(n),name:"1"},{default:s(()=>[e(r)?p("v-if",!0):(i(),d(j,{key:0})),e(r)&&e(a).data?(i(),d(e(h),{key:1,columns:e(a).data.is_combind=="1"?e(w):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 Q=E(H,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/productManager/detail.vue"]]);export{Q as default};

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/detail.ce357b.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/detail.edb526.js


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

@@ -1 +1 @@
-import{_ as E,d as b,aV as D,r as t,aj as g,H as B,l as e,o as n,c as T,j as o,C as s,a6 as V,G as d,a as p}from"./index.js";import{g as h,a as x}from"./ChildGoodEditModal.6d23b8.js";import{B as y}from"./basic-descriptions.2bd5636f.js";import{u as j}from"./useDetail.42fb2b43.js";import w from"./BaseForm.4fc96e.js";import{a as I}from"./index.384d251b.js";import"./status.915de772.js";import"./shared.456185fd.js";import"./index.bb93f8.js";const N={class:"padding__container"},H=b({__name:"detail",setup(P){const a=D(),{title:i,isDetail:r,collapses:l,id:m}=j({baseName:"\u76D8\u70B9",collapseLen:2});return m.value&&a.run(I({id:m.value})),(U,c)=>{const u=t("ElCollapseItem"),_=t("ElCollapse"),f=t("ElTabPane"),v=t("ElTabs"),C=g("loading");return B((n(),T("div",N,[o(v,null,{default:s(()=>[o(f,{label:e(i)},{default:s(()=>[o(_,{modelValue:e(l),"onUpdate:modelValue":c[0]||(c[0]=k=>V(l)?l.value=k:null)},{default:s(()=>[o(u,{title:e(i),name:"1"},{default:s(()=>[e(r)?p("v-if",!0):(n(),d(w,{key:0})),e(r)&&e(a).data?(n(),d(e(y),{key:1,columns:e(a).data.is_combind=="1"?e(h):e(x),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,aO as D,r as t,aj as g,H as B,l as e,o as i,c as T,j as o,C as s,a6 as h,G as d,a as p}from"./index.js";import{g as V,a as x}from"./ChildGoodEditModal.6d23b8.js";import{B as y}from"./basic-descriptions.4115ebf1.js";import{u as j}from"./useDetail.c708d002.js";import w from"./BaseForm.4fc96e.js";import{a as I}from"./index.f2c2c5bc.js";import"./status.21dece30.js";import"./shared.456185fd.js";import"./index.bb93f8.js";import"./use-page-search.4f487e2f.js";const N={class:"padding__container"},H=b({__name:"detail",setup(O){const a=D(),{title:n,isDetail:r,collapses:l,id:m}=j({baseName:"\u76D8\u70B9",collapseLen:2});return m.value&&a.run(I({id:m.value})),(P,c)=>{const u=t("ElCollapseItem"),_=t("ElCollapse"),f=t("ElTabPane"),v=t("ElTabs"),C=g("loading");return B((i(),T("div",N,[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)?p("v-if",!0):(i(),d(w,{key:0})),e(r)&&e(a).data?(i(),d(e(y),{key:1,columns:e(a).data.is_combind=="1"?e(V):e(x),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 M=E(H,[["__file","C:/Users/89793/Desktop/projects/ticket-system/src/views/invoiceInOut/inventoryCheck/detail.vue"]]);export{M as default};

+ 0 - 0
dist/assets/index.e806d45c.css → dist/assets/execl-upload.13f2c477.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/execl-upload.2ba69270.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.0dbb49.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.1219f2.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.1ddafc.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.22cff3.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.29ade6.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.303734.js


+ 0 - 1
dist/assets/index.384d251b.js

@@ -1 +0,0 @@
-import{w as x,aN as A,ax as n,a0 as q}from"./index.js";const E=t=>t?A(t).format("YYYY-MM-DD"):"";function I(t,d,l,_){const c=x(null);function m(a){var f;const{result:i,deleteProps:r}=t?t(a):{result:{},deleteProps:[]},e={...a,...i};if(l){const{formItems:u}=l;u.forEach(g=>{const{field:s,type_field:p,otherOptions:v={},type:P}=g,{startProp:R,endProp:h}=v;(R||h)&&e[s]&&(e[R]=P==="date_picker"?E(e[s][0]):e[s][0],e[h]=P==="date_picker"?E(e[s][1]):e[s][1],delete e[s]),p&&(e[e[p]]=e[s],delete e[s],delete e[p])})}r.forEach(u=>delete e[u]),(f=c.value)==null||f.getPageData(e)}function D(a){var r;const{result:i}=t?t(a):{result:{}};(r=c.value)==null||r.getPageData(_?{}:i),d&&d()}return{pageContentRef:c,handleSearchClick:m,handleResetClick:D}}const{VITE_PROXY_DOMAIN_REAL:L,VITE_PROXY_USER_REAL:y,VITE_WORKORDER_REAL:O}=q(),Y=y+"/admin/",o=O,S=t=>n.request("post",`${o}/cxinv/FinancialProducts/create`,{data:t}),T=t=>n.request("post",`${o}/cxinv/FinancialProducts/list`,{data:t}),V=t=>n.request("post",`${o}/cxinv/FinancialProducts/info`,{data:t}),w=t=>n.request("post",`${o}/cxinv/FinancialProducts/status`,{data:t}),F=t=>n.request("post",`${o}/user/TaxCategory/list`,{data:t}),M=t=>n.request("post",`${Y}companylist`,{data:{noRela:!0,...t}});export{V as a,M as b,w as c,F as d,S as e,T as h,I as u};

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.3b1b4b.js


+ 1 - 0
dist/assets/index.4a9af8a9.js

@@ -0,0 +1 @@
+import{ax as a,a0 as o}from"./index.js";const{VITE_PROXY_DOMAIN_REAL:r,VITE_PROXY_USER_REAL:s}=o(),n=s+"/admin/",d=t=>a.request("post",`${n}invAddBatchByImport`,{data:t});export{d as h};

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.4cf9ee.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.52bb3f.js


+ 1 - 0
dist/assets/index.54c70d49.js

@@ -0,0 +1 @@
+import{ax as a,a0 as s}from"./index.js";const{VITE_PROXY_DOMAIN_REAL:i,VITE_PROXY_USER_REAL:o,VITE_WORKORDER_REAL:e}=s(),n=e,c=t=>a.request("post",`${n}/cxinv/FinancialManager/create`,{data:t}),p=t=>a.request("post",`${n}/cxinv/FinancialManager/list`,{data:t}),E=t=>a.request("post",`${n}/cxinv/FinancialManager/info`,{data:t});export{p as a,c as b,E as h};

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.637ef5.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.669119.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.740cb1.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.7a0f8c.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.81f840.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.875b91.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.88cf8b.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.91c8b9.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.9fb413.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.a6d6c8.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.a712f1.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.a9ff40.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.b45b7a88.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.bb93f8.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.c2487c.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.ccc514.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.da6cf9.js


+ 1 - 0
dist/assets/index.f2c2c5bc.js

@@ -0,0 +1 @@
+import{ax as s,a0 as a}from"./index.js";const{VITE_PROXY_DOMAIN_REAL:i,VITE_PROXY_USER_REAL:o,VITE_WORKORDER_REAL:e}=a(),r=o+"/admin/",n=e,u=t=>s.request("post",`${n}/cxinv/FinancialProducts/create`,{data:t}),p=t=>s.request("post",`${n}/cxinv/FinancialProducts/list`,{data:t}),d=t=>s.request("post",`${n}/cxinv/FinancialProducts/info`,{data:t}),R=t=>s.request("post",`${n}/cxinv/FinancialProducts/status`,{data:t}),l=t=>s.request("post",`${r}companylist`,{data:{noRela:!0,...t}});export{d as a,l as b,R as c,u as d,p as h};

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.f86972.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/index.f9a061.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
dist/assets/index.js


+ 0 - 0
dist/assets/motion.33cfa1fd.js → dist/assets/motion.8ab68f9d.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/phone.9e1123.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1 - 1
dist/assets/qrCode.be32d8.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/query-category.7a496a.js


+ 1 - 0
dist/assets/query-category.e74fae3a.css

@@ -0,0 +1 @@
+.super-no-more[data-v-27456e98]{text-align:center;color:#999;font-size:14px;line-height:38px}.super-loading[data-v-27456e98]{display:flex;font-size:14px;justify-content:center;align-items:center;color:#999;gap:10px;line-height:38px}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/regist.bfca82.js


+ 0 - 0
dist/assets/rule.a7def0fe.js → dist/assets/rule.9495547b.js


+ 1 - 0
dist/assets/shared.6241f91b.js

@@ -0,0 +1 @@
+const l=[{value:"1",label:"\u5165\u5E93"},{value:"2",label:"\u51FA\u5E93"},{value:"3",label:"\u5165\u5E93\u7EA2\u51B2"},{value:"4",label:"\u51FA\u5E93\u7EA2\u51B2"}],s=l.reduce((a,u)=>({...a,[u.label]:u.value}),{}),e=[{value:"1",label:"\u91C7\u9500\u7ED3\u7B97"},{value:"2",label:"\u7EBF\u4E0B\u8BA2\u5355"}],t=e.reduce((a,u)=>({...a,[u.label]:u.value}),{}),b=[{value:"1",label:"\u5F85\u5904\u7406",type:"warning"},{value:"2",label:"\u7EBF\u4E0B\u8BA2\u5355",type:"success"}],o=[{value:"1",label:"\u6B63\u5E38"},{value:"2",label:"\u8BA1\u63D0"},{value:"3",label:"\u5F02\u5E38"}];export{b as a,s as b,t as c,o as m,e as s,l as t};

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/status.21dece30.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/update.2f876b.js


+ 1 - 0
dist/assets/use-page-search.4f487e2f.js

@@ -0,0 +1 @@
+import{w as _,aN as v}from"./index.js";const g=o=>o?v(o).format("YYYY-MM-DD"):"";function M(o,i,u,m){const s=_(null);function D(n){var c;const{result:a,deleteProps:r}=o?o(n):{result:{},deleteProps:[]},e={...n,...a};if(u){const{formItems:d}=u;d.forEach(h=>{const{field:t,type_field:f,otherOptions:y={},type:l}=h,{startProp:p,endProp:P}=y;(p||P)&&e[t]&&(e[p]=l==="date_picker"?g(e[t][0]):e[t][0],e[P]=l==="date_picker"?g(e[t][1]):e[t][1],delete e[t]),f&&(e[e[f]]=e[t],delete e[t],delete e[f])})}r.forEach(d=>delete e[d]),(c=s.value)==null||c.getPageData(e)}function Y(n){var r;const{result:a}=o?o(n):{result:{}};(r=s.value)==null||r.getPageData(m?{}:a),i&&i()}return{pageContentRef:s,handleSearchClick:D,handleResetClick:Y}}export{M as u};

+ 0 - 0
dist/assets/useDetail.42fb2b43.js → dist/assets/useDetail.c708d002.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/assets/verifyCode.d48bef92.js


+ 1 - 1
dist/index.html

@@ -11,7 +11,7 @@
     window.process = {};
   </script>
   <script type="module" crossorigin src="/assets/index.js"></script>
-  <link rel="stylesheet" href="/assets/index.0015587a.css">
+  <link rel="stylesheet" href="/assets/index.b45b7a88.css">
   <link rel="stylesheet" href="/assets/layout-theme-default.css" id="head">
 </head>
 

+ 2 - 1
src/api/InvoiceSales/invoiceApply/index.ts

@@ -45,9 +45,10 @@ export const httpSetPost = (data: object): ResponseType => {
 
 //
 export const httpInvoiceList = (data: object): ResponseType => {
-  return http.request("post", `${yewuApi}invoicelist`, { data });
+  return http.request("post", `${yewuApi}supplierlist`, { data });
 };
 
+
 export const httpCompanyList = (data: object): ResponseType => {
   return http.request("post", `${yewuApi}companylist`, { data });
 };

+ 1 - 1
src/api/invoiceInOut/inOutManager/index.ts

@@ -22,7 +22,7 @@ export const httpList = (data: object): ResponseType => {
 };
 
 export const httpDetail = (data: object): ResponseType => {
-    return http.request("post", `${newApi}/cxinv/FinancialProducts/info`, { data });
+    return http.request("post", `${newApi}/cxinv/FinancialManager/info`, { data });
 };
 
 export const httpStatus = (data: object): ResponseType => {

+ 4 - 0
src/api/user.ts

@@ -15,6 +15,10 @@ export const getVerify = (): userType => {
   return http.request("get", "/captcha");
 };
 
+export const getCategories = (data = {}): userType => {
+  return http.request("post", `${yewuApi}/catlist`, { data });
+};
+
 // 登录
 export const getLogin = (data: object) => {
   return http.request("post", `${yewuApi}/login`, { data });

+ 6 - 0
src/utils/status.ts

@@ -144,6 +144,12 @@ export const xs_inv_type_list = [
   { label: "电子发票(增值税普通发票)", value: "fully_digitalized_normal_electronic", scanValue: "32" }
 ];
 
+
+export const mapLabelToInvtype = xs_inv_type_list.reduce((prev, current) => ({
+  ...prev,
+  [current.label]: current.value
+}), {})
+
 export const tax_list = [
   { label: "0%", value: "0%",},
   { label: "6%", value: "6%" },

+ 2 - 2
src/views/invoiceInOut/inOutManager/components/OrderImportModal/columns-config.ts

@@ -119,7 +119,7 @@ const columns = [
   },
   {
     label: '关联金额',
-    prop: 'relaTotal',
+    prop: 'inv_fee',
     minWidth: '100px',
     defaultData: '',
     required: true
@@ -175,7 +175,7 @@ const columns = [
   },
   {
     label: '货物或应税劳务、服务名称',
-    prop: 'nv_good_name',
+    prop: 'inv_good_name',
     minWidth: '200px',
     defaultData: '',
     required: true

+ 4 - 3
src/views/invoiceInOut/inOutManager/components/OrderImportModal/index.vue

@@ -1,7 +1,6 @@
 <script setup lang="ts">
 import { ref, h } from "vue";
 import { ElButton, ElDialog, ElMessage } from "element-plus";
-import { httpBatchAdd } from "/@/api/purchase/ticketReturn";
 import { execlUpload } from "/@/components/execlUpload";
 import { useResponseHandle } from "/@/hooks";
 import { useVModel } from "@vueuse/core";
@@ -10,13 +9,14 @@ 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";
 
 
 
 const loading = ref(false);
 const tableData = ref([]);
 
-const emit = defineEmits(["onSuccess"]);
+const emit = defineEmits(["refresh"]);
 const props = defineProps<{ visible: boolean }>()
 
 const visible = useVModel(props, 'visible')
@@ -77,6 +77,7 @@ const handleSubmit = async () => {
     tableData.value.forEach(item => {
       list.push({ 
         ...item, 
+        inv_type: mapLabelToInvtype[item.inv_type],
         source: mapLabelToSource[item.source], 
         type: mapLabelToType[item.type],
         buyer_name: item.inv_buyer_name,
@@ -97,7 +98,7 @@ const handleSubmit = async () => {
       noMessage: false,
       handler: () => {
         ElMessage.success("数据导入成功!");
-        emit("onSuccess");
+        emit("refresh");
         visible.value = false;
       }
     });

+ 7 - 3
src/views/invoiceInOut/inOutManager/components/OrderImportModal/validator.ts

@@ -1,9 +1,8 @@
+import { h } from "vue"
 import { ElMessageBox } from "element-plus"
 import { mapPropertyToLabel, requiredProps } from "./columns-config"
-import { h } from "vue"
 import { mapLabelToSource, mapLabelToType, sourceOptions, typeOptions } from "../../config/shared"
-
-
+import { mapLabelToInvtype, xs_inv_type_list } from "/@/utils/status"
 
 function onDisplayErrorMessage(errors) {
     ElMessageBox({
@@ -26,6 +25,7 @@ export function isValidRequired(results: any[]) {
 
     let isTypeError = false
     let isSourceError = false
+    let isInvError = false
 
     for (const sourceIndex in results) {
         const item = results[sourceIndex];
@@ -43,6 +43,8 @@ export function isValidRequired(results: any[]) {
                 isTypeError = true
             } else if (key === 'source' && !mapLabelToSource[value]) {
                 isSourceError = true
+            } else if (key === 'inv_type' && !mapLabelToInvtype[value]){
+                isInvError = true
             }
         }
 
@@ -50,9 +52,11 @@ export function isValidRequired(results: any[]) {
             errors[index] += '不能为空'
             if (isTypeError) errors[index] += ' , 类型必须为' + typeOptions.map(({ label }) => label).join('、')
             if (isSourceError) errors[index] += ' ,订单来源必须为' + sourceOptions.map(({ label }) => label).join('、')
+            if (isInvError) errors[index] += ' ,发票类型必须为' + xs_inv_type_list.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] = ' 发票类型必须为' + xs_inv_type_list.map(({ label }) => label).join('、')
         }
     }
 

+ 45 - 1
src/views/invoiceInOut/inOutManager/config/columns.ts

@@ -1,6 +1,8 @@
 import { ElTag } from "element-plus"
 import { cg_order_type_options } from "/@/utils/status"
 import { h } from "vue"
+import { sourceOptions, statusOptions, typeOptions } from "./shared"
+import { createTooltip } from "/@/utils/tootip"
 
 export const goodColumns = [
   {
@@ -76,5 +78,47 @@ export const goodColumns = [
 
 
 export const orderGoodColumns = [
- 
+  {
+    field: 'invoiceCode',
+    label: '业务编号',
+    span: 12
+  },
+  {
+    label: '类型',
+    span: 6,
+    render(_, row){
+      return h(ElTag, { type: 'primary', size: 'small' }, {
+        default: () => typeOptions.find(item => item.value == row.type)?.label
+      })
+    }
+  },
+  {
+    label: '数据来源',
+    span: 6,
+    render(_, row) {
+      return h(ElTag, { type: 'primary', size: 'small' }, {
+        default: () => sourceOptions.find(item => item.value == row.source)?.label
+      })
+    }
+  },
+  {
+    label: '状态',
+    span: 6,
+    render(_, row) {
+      return h(ElTag, { type: 'primary', size: 'small' }, {
+        default: () => statusOptions.find(item => item.value == row.status)?.label
+      })
+    }
+  },
+  {
+    label: '异常原因',
+    span: 18,
+  },
+  {
+    label: '销售方公司',
+    span: 12,
+    render(_, row){
+      return createTooltip(row.seller_name, "销售方公司纳税识别号 : " + row.seller_code, 300)
+    }
+  }
 ]

+ 190 - 42
src/views/invoiceInOut/inOutManager/config/content.config.ts

@@ -2,7 +2,8 @@ import { ContentConfig } from "/@/components/PageContent";
 import { httpList } from "/@/api/invoiceInOut/inOutManager";
 import { h } from "vue";
 import { ElTag } from "element-plus";
-import { typeOptions, sourceOptions, statusOptions } from "./shared";
+import { typeOptions, sourceOptions, statusOptions, managerStatusOptions } from "./shared";
+import { xs_inv_type_list } from "/@/utils/status";
 
 const columns = [
   { 
@@ -43,15 +44,10 @@ const columns = [
       )
     } 
   },
-
-
-  { 
-    label: '异常原因', 
-    prop: 'TODO', 
-    width: 120 
-  },
-
-
+  // { 
+  //   label: '异常原因', 
+  //   width: 120 
+  // },
   { 
     label: '销售方公司纳税识别号', 
     prop: 'seller_code', 
@@ -78,7 +74,7 @@ const columns = [
   
   { 
     label: "商品编号", 
-    prop: "skuCode", 
+    prop: "goodNo", 
     width: 120 
   },
 
@@ -106,37 +102,189 @@ const columns = [
     width: 100 
   },
   
-  { label: '订单总金额', prop: 'TODO', width: 120 },
-  { label: '税目', prop: 'TODO', width: 120 },
-  { label: '税率', prop: 'TODO', width: 60 },
-  { label: '关联金额', prop: 'TODO', width: 120 },
-  { label: '购买方公司名称', prop: 'TODO', width: 120 },
-  { label: '购买方公司纳税号', prop: 'TODO', width: 120 },
-  { label: '发票号码', prop: 'TODO', width: 100 },
-  { label: '发票类型', prop: 'TODO', width: 100 },
-  { label: '销售方公司', prop: 'TODO', width: 100 },
-  { label: '销售方公司纳税号', prop: 'TODO', width: 120 },
-  { label: '发票明细ID', prop: 'TODO', width: 100 },
-  { label: '货物或应税劳务、服务名称', prop: 'TODO', width: 170 },
-  { label: '类目编号', prop: 'TODO', width: 100 },
-  { label: '规格型号', prop: 'TODO', width: 80 },
-  { label: '单位', prop: 'TODO', width: 80 },
-  { label: '数量', prop: 'TODO', width: 80 },
-  { label: '税前单价', prop: 'TODO', width: 100 },
-  { label: '税后总价', prop: 'TODO', width: 100 },
-  { label: '税率', prop: 'TODO', width: 80 },
-  { label: '税额', prop: 'TODO', width: 80 },
-  { label: '税后单价', prop: 'TODO', width: 100 },
-  { label: '税后总额', prop: 'TODO', width: 100 },
-  { label: '类目编号状态', prop: 'TODO', width: 100 },
-  { label: '税率状态', prop: 'TODO', width: 100 },
-  { label: '备注', prop: 'TODO', width: 100 },
-  { label: '业务类型', prop: 'TODO', width: 100 },
-  { label: '商品编号', prop: 'TODO', width: 100 },
-  { label: '商品名称', prop: 'TODO', width: 100 },
-  { label: '税前单价', prop: 'TODO', width: 100 },
-  { label: '单价', prop: 'TODO', width: 100 },
-  { label: '数量', prop: 'TODO', width: 100 },
+  { 
+    label: '订单总金额', 
+    prop: 'totalPrice', 
+    width: 120 
+  },
+
+  { 
+    label: '税目', 
+    prop: 'cat_code', 
+    width: 120 
+  },
+  
+  { 
+    label: '税率', 
+    width: 60,
+    cellRenderer({ row }){
+      return (row.tax * 100) + '%'
+    } 
+  },
+
+  { 
+    label: '关联金额', 
+    prop: 'inv_fee', 
+    width: 120 
+  },
+
+  { 
+    label: '购买方公司名称', 
+    prop: 'buyer_name',
+    width: 120 
+  },
+  
+  { 
+    label: '购买方公司纳税号', 
+    prop: 'buyer_code', 
+    width: 120 
+  },
+  
+  { 
+    label: '发票号码', 
+    prop: 'inv_number', 
+    width: 100 
+  },
+  
+  { 
+    label: '发票类型', 
+    width: 180,
+    cellRenderer({ row }){
+      return xs_inv_type_list.find((item) => item.value === row.inv_type)?.label
+    }
+  },
+
+  
+  { 
+    label: '销售方公司', 
+    prop: 'inv_seller_code', 
+    width: 180 
+  },
+  
+  { 
+    label: '销售方公司纳税号', 
+    prop: 'inv_seller_name', 
+    width: 180 
+  },
+
+  { 
+    label: '发票明细ID', 
+    prop: 'inv_item_id', 
+    width: 100 
+  },
+
+  { 
+    label: '货物或应税劳务、服务名称', 
+    prop: 'inv_good_name', 
+    width: 170 
+  },
+
+  { 
+    label: '类目编号', 
+    prop: 'cat_code', 
+    width: 100 
+  },
+  
+  { label: '规格型号', prop: 'inv_spec', width: 80 },
+  
+  { 
+    label: '发票商品单位', 
+    prop: 'inv_unit', 
+    width: 100 
+  },
+  
+  { 
+    label: '发票商品数量', 
+    prop: 'inv_num', 
+    width: 100 
+  },
+
+  { 
+    label: '税前单价', 
+    prop: 'inv_subprice', 
+    width: 100 
+  },
+  
+  { 
+    label: '税前总价', 
+    prop: 'inv_subtotal', 
+    width: 100 
+  },
+  
+  { 
+    label: '发票税率', 
+    prop: 'inv_tax', 
+    width: 80 
+  },
+  
+  { 
+    label: '发票税额', 
+    prop: 'inv_tax_total', 
+    width: 80 
+  },
+  
+  { 
+    label: '税后单价', 
+    prop: 'inv_price', 
+    width: 100 
+  },
+  
+  { 
+    label: '税后总额', 
+    prop: 'inv_total', 
+    width: 100 
+  },
+  
+  { 
+    label: '类目编号状态', 
+    width: 100,
+    cellRenderer({ row }){
+      return h(ElTag, { size: 'small', type: row.cat_diff == '0' ? 'danger' : 'success' }, {
+        default: () => row.cat_diff == '0' ? '不一致' : '一致'
+      })
+    }
+  },
+
+  { 
+    label: '税率状态', 
+    prop: 'TODO', 
+    width: 100,
+    cellRenderer({ row }) {
+      return h(ElTag, { size: 'small', type: row.tax_diff == '0' ? 'danger' : 'success' }, {
+        default: () => row.tax_diff == '0' ? '不一致' : '一致'
+      })
+    }
+  },
+  
+  { 
+    label: '备注', 
+    prop: 'remark', 
+    width: 100 
+  },
+
+  { 
+    label: '业务类型', 
+    width: 100,
+    cellRenderer({ row }){
+      return managerStatusOptions.find((item) => item.value == row.manager_status)?.label
+    }
+  },
+  
+  { 
+    label: '商品编号', 
+    prop: 'goodNo', 
+    width: 100 
+  },
+  
+  { 
+    label: '商品名称', 
+    prop: 'goodName', 
+    width: 100 
+  },
+  
+  // { label: '税前单价', prop: 'TODO', width: 100 },
+  // { label: '单价', prop: 'goodPrice', width: 100 },
+  // { label: '数量', prop: 'TODO', width: 100 },
   { label: "操作", fixed: "right", width: 75, slot: "operation" }
 ];
 

+ 7 - 0
src/views/invoiceInOut/inOutManager/config/shared.ts

@@ -27,4 +27,11 @@ export const mapLabelToSource = sourceOptions.reduce((prev, current) => ({
 export const statusOptions = [
     { value: '1', label: '待处理', type: 'warning' },
     { value: '2', label: '线下订单', type: 'success' }
+]
+
+
+export const managerStatusOptions = [
+  { value: '1', label: '正常' },
+  { value: '2', label: '计提' },
+  { value: '3', label: '异常' }
 ]

+ 14 - 5
src/views/invoiceInOut/inOutManager/detail.vue

@@ -5,19 +5,22 @@ import { goodColumns, orderGoodColumns } from "./config/columns"
 import { useDetail } from "/@/hooks/core/useDetail";
 import BasicDescriptions from "/@/components/BasicDescriptions";
 import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
-
 import ChooseGoodModal from "./components/ChooseGoodModal/index.vue"
-
 import ChildGoodEditModal from "./components/ChildGoodEditModal.vue";
 
+import { httpDetail } from "/@/api/invoiceInOut/inOutManager";
+
 import { ElForm } from "element-plus";
+import { useTask } from "/@/hooks/core";
 
 
-const { title, collapses } = useDetail({ baseName: '出入库', collapseLen: 2 });
+const { title, collapses, id } = useDetail({ baseName: '出入库', collapseLen: 2 });
 
 const visible = ref(false)
 
 
+const detailTask = useTask()
+
 const state = reactive({
   editVisible: false,
   index: -1,
@@ -94,15 +97,21 @@ async function onSubmit(){
     console.log(err)
   }
 }
+
+id.value && detailTask.run(httpDetail({ id: id.value }))
 </script>
 
 <template>
-  <div class="padding__container">
+  <div class="padding__container" v-loading="detailTask.loading">
     <ElTabs>
       <ElTabPane :label="title">
         <ElCollapse v-model="collapses">
           <ElCollapseItem :title="title" name="1">
-            <BasicDescriptions :columns="orderGoodColumns" :data="{}" />
+            <BasicDescriptions
+              v-if="detailTask.data"
+              :columns="orderGoodColumns" 
+              :data="detailTask.data" 
+            />
           </ElCollapseItem>
 
           <ElCollapseItem title="出入库信息确认" name="2">

+ 7 - 2
src/views/invoiceInOut/inOutManager/index.vue

@@ -18,6 +18,8 @@ const router = useRouter();
 const state = reactive({ orderImportVisible: false, notOrderImportVisible: false })
 const hooks: PageHooks = { pageSearchHook: () => usePageSearch(undefined, undefined, searchConfig) };
 
+const pageContentRef = ref(null)
+
 const events: PageEvents = {
   content: {
     create: () => router.push('/invoiceInOut/productManagerDetail'),
@@ -43,6 +45,7 @@ function onDownload(type = 'notOrder'){
       :events="events"
       :searchConfig="searchConfig"
       :contentConfig="contentConfig"
+      :get-content-ref="ref => pageContentRef = ref"
     >
       <template #content_header>
         <ElDropdown>
@@ -91,11 +94,13 @@ function onDownload(type = 'notOrder'){
     </PageContainer>
 
     <OrderImportModal 
-      v-model:visible="state.orderImportVisible" 
+      v-model:visible="state.orderImportVisible"
+      @refresh="pageContentRef?.onSearch()"
     />
 
     <NotOrderImportModal 
-      v-model:visible="state.notOrderImportVisible" 
+      v-model:visible="state.notOrderImportVisible"
+      @refresh="pageContentRef?.onSearch()"
     />
   </PageAuth>
 </template>

+ 106 - 91
src/views/invoiceInOut/productManager/components/BaseForm.vue

@@ -7,9 +7,10 @@ import RemoteSelect from "/@/components/RemoteSelect";
 import InvoiceTitle from "./InvoiceTitle.vue";
 import { rules } from "./rules"
 
-import { NumberInput } from "/@/components/Input"
+import { UnitInput } from "/@/components/Input"
+
+import { convertInvoiceTitle, convertInvoiceTitleData, convertPurchaseInvoiceTitleData, createInitalData } from "./shared"
 
-import { convertInvoiceTitle, convertInvoiceTitleData, createInitalData } from "./shared"
 import { useTask } from "/@/hooks/core"
 import { useRouter } from "vue-router"
 
@@ -20,6 +21,7 @@ import ChildGoodEditModal from "./ChildGoodEditModal.vue";
 import { httpInvoiceList } from "/@/api/InvoiceSales/invoiceApply";
 import { httpAdd, httpCatist } from "/@/api/invoiceInOut/productManager";
 import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
+import QueryCategory from "./query-category.vue";
 
 
 const router = useRouter()
@@ -63,9 +65,10 @@ async function submit(){
 }
 
 function handleInvoiceTitle(_isSeller: boolean, invoiceTitle: Record<string, string> ) {
-  if (_isSeller) {
-    invoiceTitle = state.companies.find(item => item.company_license === formData.value.seller_code)
-    formData.value.seller_name = invoiceTitle.company_name
+  if (!_isSeller) {
+    invoiceTitle = state.companies.find(item => item.company_license === formData.value.buyer_code)
+    formData.value.buyer_name = invoiceTitle.company_name
+    // formData.value.seller_code = invoiceTitle.company_name
     //支持的开票方式
     // const { invoiceType, denomination: _denomination } = invoiceTitle;
     // const chunks = invoiceType.split(",");
@@ -73,7 +76,7 @@ function handleInvoiceTitle(_isSeller: boolean, invoiceTitle: Record<string, str
     // invoiceTypes.value = xs_inv_type_list.filter(({ value }) => chunks.includes(value));
     // formData.value.seller_name = 
   } else{
-    formData.value.buyer_name = invoiceTitle.invoice_title
+    formData.value.seller_name = invoiceTitle.name
   }
 
   if (!invoiceTitle) {
@@ -83,7 +86,7 @@ function handleInvoiceTitle(_isSeller: boolean, invoiceTitle: Record<string, str
 
   _isSeller
     ? (sellerInvoiceTitle.value = convertInvoiceTitleData(convertInvoiceTitle(invoiceTitle)))
-    : (purchaserInvoiceTitle.value = convertInvoiceTitleData(invoiceTitle));
+    : (purchaserInvoiceTitle.value = convertPurchaseInvoiceTitleData(invoiceTitle));
 }
 
 
@@ -129,11 +132,29 @@ function handleChildGoodEdit(index: number){
     <ElRow :gutter="10">
       <ElCol :span="12">
         <ElFormItem label="销售方公司" prop="seller_code">
+          <RemoteSelect
+            style="width: 100%"
+            request-prop="name"
+            :api="httpInvoiceList"
+            response-val-prop="registercode"
+            placeholder="销售方公司抬头"
+            v-model:value="formData.seller_code"
+            response-label-prop="name"
+            @item-change="setSellerInvoiceTitle"
+          />
+        </ElFormItem>
+
+        <InvoiceTitle :detail="sellerInvoiceTitle" />
+      </ElCol>
+
+
+      <ElCol :span="12">
+        <ElFormItem label="购买方公司" prop="buyer_code">
           <ElSelect
             style="width: 100%"
-            placeholder="销售方公司"
-            v-model="formData.seller_code" 
-            @change="setSellerInvoiceTitle"
+            placeholder="购买方公司"
+            v-model="formData.buyer_code" 
+            @change="setPurchaserInvoiceTitle"
           >
             <ElOption 
               v-for="item in state.companies"
@@ -142,28 +163,11 @@ function handleChildGoodEdit(index: number){
             />
           </ElSelect>
         </ElFormItem>
-        <InvoiceTitle :detail="sellerInvoiceTitle" />
-      </ElCol>
 
-      <ElCol :span="12">
-        <ElFormItem label="购买方公司" prop="buyer_code">
-          <RemoteSelect
-            is-root
-            style="width: 100%"
-            request-prop="name"
-            :api="httpInvoiceList"
-            response-val-prop="invoice_code"
-            placeholder="购买方公司抬头"
-            v-model:value="formData.buyer_code"
-            response-label-prop="invoice_title"
-            @item-change="setPurchaserInvoiceTitle"
-          />
-        </ElFormItem>
         <InvoiceTitle :detail="purchaserInvoiceTitle" />
       </ElCol>
 
-
-      <ElCol :span="8">
+            <ElCol :span="6">
         <ElFormItem label="商品来源" prop="good_source">
           <ElSelect
             @change="formData.good_code = ''"
@@ -177,13 +181,17 @@ function handleChildGoodEdit(index: number){
         </ElFormItem>
       </ElCol>
 
-      <ElCol :span="8">
-        <ElFormItem label="商品编号" prop="skuCode">
-          <ElInput v-model="formData.skuCode" placeholder="商品编号" />
+         <ElCol :span="6">
+        <ElFormItem label="组合类型" prop="is_combind">
+          <ElSelect style="width: 100%" v-model="formData.is_combind">
+            <ElOption label="非组合商品" value="0" />
+            <ElOption label="组合商品" value="1" />
+          </ElSelect>
         </ElFormItem>
       </ElCol>
 
-      <ElCol :span="8">
+      
+      <ElCol :span="6">
         <ElFormItem label="订单商品类型" prop="good_type">
           <ElSelect 
             v-model="formData.good_type"
@@ -199,77 +207,69 @@ function handleChildGoodEdit(index: number){
         </ElFormItem>
       </ElCol>
 
-      <ElCol :span="8">
-        <ElFormItem label="组合类型" prop="is_combind">
-          <ElSelect style="width: 100%" v-model="formData.is_combind">
-            <ElOption label="非组合商品" value="0" />
-            <ElOption label="组合商品" value="1" />
+
+       <ElCol :span="6">
+        <ElFormItem label="进项成本状态" prop="basic_status">
+          <ElSelect 
+            v-model="formData.basic_status" 
+            placeholder="进项成本状态"
+          >
+            <ElOption label="真实成本信息" value="1" />
+            <ElOption label="预估成本信息" value="2" />
           </ElSelect>
         </ElFormItem>
       </ElCol>
 
-      <ElCol :span="8">
-        <ElFormItem label="订单商品名称" prop="goodName">
-          <ElInput v-model="formData.goodName" placeholder="订单商品名称"  />
-        </ElFormItem>
-      </ElCol>
 
-      <ElCol :span="8">
+
+
+     <ElCol :span="12">
         <ElFormItem label="发票商品名称" prop="inv_good_name">
           <ElInput v-model="formData.inv_good_name" placeholder="发票商品名称" />
         </ElFormItem>
       </ElCol>
 
-      <ElCol :span="8">
-        <ElFormItem label="规格" prop="spec">
-          <ElInput  v-model="formData.spec" placeholder="规格"  />
-        </ElFormItem>
-      </ElCol>
 
-      <ElCol :span="8">
-        <ElFormItem label="商品代码" prop="good_code">
-          <ElInput  v-model="formData.good_code" placeholder="商品代码"  />
+      <ElCol :span="12">
+        <ElFormItem label="订单商品名称" prop="goodName">
+          <ElInput v-model="formData.goodName" placeholder="订单商品名称"  />
         </ElFormItem>
       </ElCol>
 
-      <ElCol :span="8">
-        <ElFormItem label="成本税前单价" prop="unit_price">
-          <NumberInput v-model="formData.unit_price"  placeholder="成本税前单价" />
+
+      <ElCol :span="6">
+        <ElFormItem label="商品编号" prop="skuCode">
+          <ElInput v-model="formData.skuCode" placeholder="商品编号" />
         </ElFormItem>
       </ElCol>
 
-      <ElCol :span="8">
+
+       <ElCol :span="6">
         <ElFormItem label="单位" prop="unit">
           <ElInput v-model="formData.unit"  placeholder="单位"  />
         </ElFormItem>
       </ElCol>
 
-      <ElCol :span="8">
-        <ElFormItem label="重量" prop="unit_weight">
-          <ElInput v-model="formData.unit_weight" placeholder="重量"  />
-        </ElFormItem>
-      </ElCol>
 
-      <ElCol :span="8">
-        <ElFormItem label="成本税后单价" prop="subunit_price">
-          <NumberInput 
-            v-model="formData.subunit_price" 
-            placeholder="成本税后单价" 
-          />
+      <ElCol :span="6">
+        <ElFormItem label="规格" prop="spec">
+          <ElInput  v-model="formData.spec" placeholder="规格"  />
         </ElFormItem>
       </ElCol>
 
-      <ElCol :span="6">
-        <ElFormItem label="分光" prop="spectral">
-          <ElInput  
-            v-model="formData.spectral"
-            placeholder="分光" 
-            style="width: 100%" 
-          />
+            <ElCol :span="6">
+        <ElFormItem label="重量" prop="unit_weight">
+          <ElInput v-model="formData.unit_weight" placeholder="重量"  />
         </ElFormItem>
       </ElCol>
+      
 
-      <ElCol :span="6">
+
+
+
+
+
+    <ElCol :span="6">
         <ElFormItem label="发票类型" prop="inv_type">
           <ElSelect
             v-model="formData.inv_type"
@@ -285,17 +285,34 @@ function handleChildGoodEdit(index: number){
         </ElFormItem>
       </ElCol>
 
+            <ElCol :span="6">
+        <ElFormItem label="成本税前单价" prop="unit_price">
+          <UnitInput unit="元" v-model="formData.unit_price"  placeholder="成本税前单价" />
+        </ElFormItem>
+      </ElCol>
+
+
+
+      <ElCol :span="6">
+        <ElFormItem label="成本税后单价" prop="subunit_price">
+          <UnitInput
+            unit="元"
+            v-model="formData.subunit_price" 
+            placeholder="成本税后单价" 
+          />
+        </ElFormItem>
+      </ElCol>
+
+      
       <ElCol :span="6">
+        <ElFormItem label="商品代码" prop="good_code">
+          <ElInput  v-model="formData.good_code" placeholder="商品代码"  />
+        </ElFormItem>
+      </ElCol>
+
+      <ElCol :span="12">
         <ElFormItem label="进项税目" prop="cat_code">
-          <RemoteSelect
-            :api="httpCatist"
-            style="width: 100%"
-            request-prop="cat_name"
-            placeholder="进项税目"
-            response-val-prop="cat_code"
-            response-label-prop="cat_name"
-            v-model:value="formData.cat_code"
-          />
+          <QueryCategory v-model="formData.cat_code" />
           <!-- <ElInput v-model="formData.cat_code" placeholder="进项税目" /> -->
         </ElFormItem>
       </ElCol>
@@ -309,14 +326,12 @@ function handleChildGoodEdit(index: number){
       </ElCol>
 
       <ElCol :span="6">
-        <ElFormItem label="进项成本状态" prop="basic_status">
-          <ElSelect 
-            v-model="formData.basic_status" 
-            placeholder="进项成本状态"
-          >
-            <ElOption label="真实成本信息" value="1" />
-            <ElOption label="预估成本信息" value="2" />
-          </ElSelect>
+        <ElFormItem label="分光" prop="spectral">
+          <ElInput  
+            v-model="formData.spectral"
+            placeholder="分光" 
+            style="width: 100%" 
+          />
         </ElFormItem>
       </ElCol>
     </ElRow>

+ 259 - 0
src/views/invoiceInOut/productManager/components/query-category.vue

@@ -0,0 +1,259 @@
+<script setup lang="ts">
+import { useDebounceFn } from "@vueuse/core";
+import { ref, onMounted, reactive, onUnmounted, watch } from "vue";
+import { getCategories } from "/@/api/user";
+import { useResponseHandle } from "/@/hooks/core/useAsync";
+import { useCompany } from "/@/hooks/core/useCompany";
+import { useUserInfo } from "/@/hooks/core/useUser";
+
+
+import { useVModel } from "@vueuse/core"
+
+const emit = defineEmits(["change", "update:modelValue"]);
+
+
+const props = withDefaults(
+  defineProps<{
+    noAll?: boolean;
+    noSet?: boolean;
+    modelValue?: string;
+    isSupplier?: boolean;
+    placeholder?: string;
+    classWrapper?:string
+  }>(),
+  {
+    modelValue: "",
+    classWrapper: 'procure-item'
+  }
+);
+
+const value = useVModel(props, 'modelValue')
+
+
+const { setCurrentCompany } = useCompany();
+const responseHandle = useResponseHandle();
+
+const { userLevel } = useUserInfo();
+
+const selectRef = ref(null);
+const list = ref<any[]>([]);
+
+const state = reactive({
+  loading: false,
+  noMore: false,
+  name: "",
+  count: 0,
+  page: 1
+});
+
+let scrollWrapper: HTMLDivElement | null = null;
+
+const debouceScroll = useDebounceFn(handleScroll, 500);
+
+async function requesetSupplierAll(name: string) {
+  state.name = name;
+  state.page = 1;
+  state.noMore = false;
+  const api = getCategories
+  const { data, message, code } = await api({
+    cat_name: name,
+    size:10,
+    page: state.page
+  });
+
+  responseHandle({
+    code,
+    message,
+    handler: () => {
+      list.value = data.list.map(({ short_name, cat_name, merge_code,tax }) => ({
+        tax,
+        subTitle: short_name,
+        value: merge_code,
+        label: cat_name
+      }))
+
+      state.count = data.count;
+      state.loading = false;
+      const maxPage = Math.ceil(state.count / 10);
+      state.noMore = maxPage <= 1;
+    }
+  });
+}
+
+function handleChange(v) {
+  const item = list.value.find(({ value }) => v === value);
+  console.log(list.value, value, item)
+  emit("change", item);
+}
+
+async function handleScroll() {
+  const height = scrollWrapper?.clientHeight;
+  const scrollTop = scrollWrapper?.scrollTop;
+  const scrollHeight = scrollWrapper?.scrollHeight;
+
+  if (height + scrollTop >= scrollHeight && !state.noMore) {
+    state.page++;
+    state.loading = true;
+
+    const api = getCategories
+
+
+    const { data, message, code } = await api({
+      cat_name: state.name,
+      page: state.page,
+      size:10,
+      noRela: true
+    });
+
+    const pushCompany = (_list: any[]) => {
+      list.value = [...list.value, ..._list.map(({ short_name, cat_name, merge_code, tax }) => ({
+        tax,
+        subTitle: short_name,
+        value: merge_code,
+        label: cat_name
+      }))];
+    };
+
+    responseHandle({
+      code,
+      message,
+      handler: () => {
+        state.count = data.count;
+        const maxPage = Math.ceil(state.count / 10);
+
+        if (state.page > maxPage) {
+          state.noMore = true;
+          state.loading = false;
+          return;
+        }
+
+        pushCompany(data.list);
+      }
+    });
+  }
+}
+
+onMounted(() => {
+  setTimeout(() => {
+    const superItem = document.querySelector("." + props.classWrapper);
+    if (!superItem) return;
+    scrollWrapper = superItem.parentElement?.parentElement as HTMLDivElement;
+    if (scrollWrapper) {
+      scrollWrapper.addEventListener("scroll", debouceScroll, false);
+    }
+  }, 1000);
+});
+
+onUnmounted(() => {
+  state.loading = false;
+  state.noMore = false;
+  state.name = "";
+  state.page = 1;
+
+  if (scrollWrapper) {
+    scrollWrapper.removeEventListener("scroll", debouceScroll);
+  }
+});
+
+watch(
+  () => userLevel.value,
+  level => {
+    if (level !== "") {
+      state.loading = false;
+      state.noMore = false;
+      state.name = "";
+      state.page = 1;
+      list.value = [];
+      requesetSupplierAll(undefined);
+    }
+  }
+);
+
+const getLabel = company => {
+  const { value, label } = company;
+  return value + " / " + label;
+};
+
+
+
+const getLabel2 = company => {
+  const { value, label, subTitle } = company;
+  return value + " / " + label + '-' + subTitle;
+};
+
+
+requesetSupplierAll(undefined);
+
+
+defineExpose({
+  async initalData(params){
+    const { data, message, code } = await getCategories(params);
+
+    list.value = (data.list || []).map(({ tax, cat_name ,merge_code, short_name }) => ({
+      tax,
+      value: merge_code,
+      label: cat_name,
+      subTitle: short_name
+    }))
+
+    value.value = (list.value[0] || {}).value
+    emit('change', list.value[0], true)
+  }
+})
+
+</script>
+
+<template>
+  <ElSelect
+    filterable
+    remote
+    v-model="value"
+    :remote-method="requesetSupplierAll"
+    @change="handleChange"
+    style="width: 100%"
+    ref="selectRef"
+    placeholder="商品类目"
+  >
+    <ElOption
+      :class="classWrapper"
+      v-for="item in list"
+      :key="item.value"
+      :value="item.value"
+      :label="getLabel2(item)"
+    >
+      <span style="float: left">
+         {{getLabel(item)}}
+      </span>
+
+      <span style="float: right;color: var(--el-text-color-secondary);font-size: 13px;">
+        {{item.subTitle}}
+      </span>
+    </ElOption>
+
+    <p class="super-loading" v-if="state.loading">
+      <IconifyIconOffline class="animate-spin" icon="Loading" />
+      加载中
+    </p>
+
+    <p class="super-no-more" v-if="state.noMore">没有更多数据了...</p>
+  </ElSelect>
+</template>
+
+<style lang="scss" scoped>
+.super-no-more {
+  text-align: center;
+  color: #999;
+  font-size: 14px;
+  line-height: 38px;
+}
+
+.super-loading {
+  display: flex;
+  font-size: 14px;
+  justify-content: center;
+  align-items: center;
+  color: #999;
+  gap: 10px;
+  line-height: 38px;
+}
+</style>

+ 24 - 5
src/views/invoiceInOut/productManager/components/shared.ts

@@ -10,19 +10,19 @@ export const convertInvoiceTitle = (title: Record<string, string>) => {
     const {
         company_address,
         mobile,
-        company_license,
+        registercode,
         bank_name,
         bankNo,
-        company_name
+        name
     } = title;
 
     return {
         invoice_addr: company_address,
         invoice_mobile: mobile,
-        invoice_code: company_license,
+        invoice_code: registercode,
         invoice_bank: bank_name,
         invoice_bankNo: bankNo,
-        invoice_title: company_name
+        invoice_title: name
     };
 };
 
@@ -44,9 +44,28 @@ export const convertInvoiceTitleData = (title: Record<string, string>) => {
     };
 };
 
+export const convertPurchaseInvoiceTitleData = (title: Record<string, string>) => {
+    const {
+        invoice_addr,
+        invoice_mobile,
+        company_license,
+        invoice_bank,
+        invoice_bankNo,
+        invoice_title
+    } = title;
+
+    return {
+        invoice_code: company_license,
+        invoice_title,
+        addrAndmobile: invoice_addr + " " + invoice_mobile,
+        bankAndBankNo: invoice_bank + " " + invoice_bankNo
+    };
+};
+
+
 export const invoice_columns = [
     { label: "抬头", span: 24, field: "invoice_title" },
-    { label: "纳税人识别号", span: 24, field: "invoice_code" },
+    { label: "纳税人识别号", span: 24, field: "invoice_code" }
     // { label: "地址、电话", span: 24, field: "addrAndmobile" },
     // { label: "开户行及账号", span: 24, field: "bankAndBankNo" }
 ];

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä