snow před 4 měsíci
rodič
revize
b795010733

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/baseUrl-QyMnh4OK.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/cost-detail-DxiqFREF.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/cost-detail-MkvnDgBI.js


+ 1 - 1
dist/assets/function-call-BOtr42SP.js → dist/assets/function-call-B1Gxoxti.js

@@ -1 +1 @@
-import{M as n,O as a,Q as r,R as c,b as i,U as u,V as f}from"./index-BZ_9wlIV.js";let l;const m={title:"",width:"",theme:null,message:"",overlay:!0,callback:null,teleport:"body",className:"",allowHtml:!1,lockScroll:!0,transition:void 0,beforeClose:null,overlayClass:"",overlayStyle:void 0,messageAlign:"",cancelButtonText:"",cancelButtonColor:null,cancelButtonDisabled:!1,confirmButtonText:"",confirmButtonColor:null,confirmButtonDisabled:!1,showConfirmButton:!0,showCancelButton:!1,closeOnPopstate:!0,closeOnClickOverlay:!1};let p=n({},m);function d(){({instance:l}=r({setup(){const{state:t,toggle:o}=c();return()=>i(f,u(t,{"onUpdate:show":o}),null)}}))}function w(e){return a?new Promise((t,o)=>{l||d(),l.open(n({},p,e,{callback:s=>{(s==="confirm"?t:o)(s)}}))}):Promise.resolve(void 0)}const C=e=>w(n({showCancelButton:!0},e));export{C as s};
+import{Q as n,R as a,U as r,V as c,b as i,W as u,X as f}from"./index-DOmEBr35.js";let l;const m={title:"",width:"",theme:null,message:"",overlay:!0,callback:null,teleport:"body",className:"",allowHtml:!1,lockScroll:!0,transition:void 0,beforeClose:null,overlayClass:"",overlayStyle:void 0,messageAlign:"",cancelButtonText:"",cancelButtonColor:null,cancelButtonDisabled:!1,confirmButtonText:"",confirmButtonColor:null,confirmButtonDisabled:!1,showConfirmButton:!0,showCancelButton:!1,closeOnPopstate:!0,closeOnClickOverlay:!1};let p=n({},m);function d(){({instance:l}=r({setup(){const{state:t,toggle:o}=c();return()=>i(f,u(t,{"onUpdate:show":o}),null)}}))}function w(e){return a?new Promise((t,o)=>{l||d(),l.open(n({},p,e,{callback:s=>{(s==="confirm"?t:o)(s)}}))}):Promise.resolve(void 0)}const C=e=>w(n({showCancelButton:!0},e));export{C as s};

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

@@ -0,0 +1 @@
+import{a0 as S,a1 as g,a2 as M,r as v,a3 as O,a4 as R,a5 as T,u as k,a6 as y,a7 as w,a8 as b,G as C}from"./index-DOmEBr35.js";function W(e){return R()?(T(e),!0):!1}function m(e){return typeof e=="function"?e():k(e)}const h=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const _=e=>e!=null,B=()=>{};function D(e){return e||y()}function G(...e){if(e.length!==1)return S(...e);const t=e[0];return typeof t=="function"?g(M(()=>({get:t,set:B}))):v(t)}function U(e,t){D(t)&&O(e,t)}function A(e){var t;const i=m(e);return(t=i==null?void 0:i.$el)!=null?t:i}const E=h?window:void 0,L=h?window.document:void 0;function $(){const e=v(!1),t=y();return t&&C(()=>{e.value=!0},t),e}function q(e){const t=$();return b(()=>(t.value,!!e()))}function x(e,t,i={}){const{window:s=E,...a}=i;let n;const l=q(()=>s&&"MutationObserver"in s),c=()=>{n&&(n.disconnect(),n=void 0)},r=b(()=>{const u=m(e),p=(Array.isArray(u)?u:[u]).map(A).filter(_);return new Set(p)}),d=w(()=>r.value,u=>{c(),l.value&&s&&u.size&&(n=new MutationObserver(t),u.forEach(p=>n.observe(p,a)))},{immediate:!0,flush:"post"}),f=()=>n==null?void 0:n.takeRecords(),o=()=>{c(),d()};return W(o),{isSupported:l,stop:o,takeRecords:f}}function I(e=null,t={}){var i,s,a;const{document:n=L,restoreOnUnmount:l=o=>o}=t,c=(i=n==null?void 0:n.title)!=null?i:"",r=G((s=e??(n==null?void 0:n.title))!=null?s:null),d=e&&typeof e=="function";function f(o){if(!("titleTemplate"in t))return o;const u=t.titleTemplate||"%s";return typeof u=="function"?u(o):m(u).replace(/%s/g,o)}return w(r,(o,u)=>{o!==u&&n&&(n.title=f(typeof o=="string"?o:""))},{immediate:!0}),t.observe&&!t.titleTemplate&&n&&!d&&x((a=n.head)==null?void 0:a.querySelector("title"),()=>{n&&n.title!==r.value&&(r.value=f(n.title))},{childList:!0}),U(()=>{if(l){const o=l(c,r.value||"");o!=null&&n&&(n.title=o)}}),r}export{I as u};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/index-BunX5Avd.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/index-BxNZ5nM3.js


+ 1 - 1
dist/assets/index-BXA-sihA.js → dist/assets/index-C7EjkXPs.js

@@ -1 +1 @@
-import{s as t,o as e,n as o}from"./baseUrl-zgQie0E8.js";const u=(s,r)=>t.post({url:e+"/admin/consultbidlist",data:s,cancelToken:r}),a=s=>t.post({url:e+"/admin/consultfeadinfo",data:s}),i=s=>t.post({url:e+"/admin/bidscheck",data:s}),l=(s,r)=>t.post({url:o+"/admin/good/list",data:s,cancelToken:r}),p=s=>t.post({url:e+"/admin/goodupinfo",data:s}),d=s=>t.post({url:e+"/admin/goodexam",data:s}),c=s=>t.post({url:o+"user/TaxCategory/listByCompany",data:s}),m=s=>t.post({url:o+"user/supplier/info",data:s}),f=s=>t.post({url:e+"admin/businesssinfo",data:s});export{c as a,f as b,m as c,l as d,a as e,i as f,p as g,d as h,u as r};
+import{s as t,o as e,n as o}from"./baseUrl-QyMnh4OK.js";const u=(s,r)=>t.post({url:e+"/admin/consultbidlist",data:s,cancelToken:r}),a=s=>t.post({url:e+"/admin/consultfeadinfo",data:s}),i=s=>t.post({url:e+"/admin/bidscheck",data:s}),l=(s,r)=>t.post({url:o+"/admin/good/list",data:s,cancelToken:r}),p=s=>t.post({url:e+"/admin/goodupinfo",data:s}),d=s=>t.post({url:e+"/admin/goodexam",data:s}),c=s=>t.post({url:o+"user/TaxCategory/listByCompany",data:s}),m=s=>t.post({url:o+"user/supplier/info",data:s}),f=s=>t.post({url:e+"admin/businesssinfo",data:s});export{c as a,f as b,m as c,l as d,a as e,i as f,p as g,d as h,u as r};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/index-CUXPf27J.js


+ 0 - 1
dist/assets/index-CZ-Uzb77.js

@@ -1 +0,0 @@
-import{_ as S,$ as g,a0 as M,r as v,a1 as O,a2 as R,a3 as C,u as T,a4 as y,a5 as w,a6 as b,C as _}from"./index-BZ_9wlIV.js";function k(e){return R()?(C(e),!0):!1}function m(e){return typeof e=="function"?e():T(e)}const h=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const W=e=>e!=null,B=()=>{};function D(e){return e||y()}function U(...e){if(e.length!==1)return S(...e);const t=e[0];return typeof t=="function"?g(M(()=>({get:t,set:B}))):v(t)}function $(e,t){D(t)&&O(e,t)}function A(e){var t;const i=m(e);return(t=i==null?void 0:i.$el)!=null?t:i}const E=h?window:void 0,G=h?window.document:void 0;function L(){const e=v(!1),t=y();return t&&_(()=>{e.value=!0},t),e}function q(e){const t=L();return b(()=>(t.value,!!e()))}function x(e,t,i={}){const{window:s=E,...c}=i;let n;const l=q(()=>s&&"MutationObserver"in s),a=()=>{n&&(n.disconnect(),n=void 0)},r=b(()=>{const u=m(e),p=(Array.isArray(u)?u:[u]).map(A).filter(W);return new Set(p)}),d=w(()=>r.value,u=>{a(),l.value&&s&&u.size&&(n=new MutationObserver(t),u.forEach(p=>n.observe(p,c)))},{immediate:!0,flush:"post"}),f=()=>n==null?void 0:n.takeRecords(),o=()=>{a(),d()};return k(o),{isSupported:l,stop:o,takeRecords:f}}function I(e=null,t={}){var i,s,c;const{document:n=G,restoreOnUnmount:l=o=>o}=t,a=(i=n==null?void 0:n.title)!=null?i:"",r=U((s=e??(n==null?void 0:n.title))!=null?s:null),d=e&&typeof e=="function";function f(o){if(!("titleTemplate"in t))return o;const u=t.titleTemplate||"%s";return typeof u=="function"?u(o):m(u).replace(/%s/g,o)}return w(r,(o,u)=>{o!==u&&n&&(n.title=f(typeof o=="string"?o:""))},{immediate:!0}),t.observe&&!t.titleTemplate&&n&&!d&&x((c=n.head)==null?void 0:c.querySelector("title"),()=>{n&&n.title!==r.value&&(r.value=f(n.title))},{childList:!0}),$(()=>{if(l){const o=l(a,r.value||"");o!=null&&n&&(n.title=o)}}),r}export{I as u};

+ 1 - 1
dist/assets/index-DWSrfz8N.js → dist/assets/index-Czm--I_P.js

@@ -1 +1 @@
-import{s as c,o as f}from"./baseUrl-zgQie0E8.js";import{d as g,a as w,c as h,b as e,w as l,u as a,W as _,G as x,p as V,q as d,X as b,Y as k,o as y,E as T,J as n,k as i,B as v,h as C,Z as B}from"./index-BZ_9wlIV.js";import{u as q}from"./index-CZ-Uzb77.js";const A=u=>c.post({url:f+"/admin/login",data:u}),E={class:"w-full h-full relative overflow-hidden"},N=g({__name:"index",setup(u){const m=x();B();const t=w({username:"",password:""});async function p(){try{V({message:"登录中...",forbidClick:!0});const{code:o,data:s}=await A(t);d(),o==0&&(["265","264","132","107","55","81"].includes(String(s.id))?(k(s.token),m.push("/home")):b({message:"账号存在,但该账号不能使用本系统",duration:2e3}))}catch(o){console.log(o),d()}}return q("登录"),(o,s)=>(y(),h("div",E,[e(a(_),{class:"max-w-[95%] w-[400px] fixed top-[300px] left-[50%]",style:{transform:"translate(-50%, -50%)"},onSubmit:p},{default:l(()=>[e(a(T),null,{default:l(()=>[e(a(n),null,{default:l(()=>[e(a(i),{modelValue:t.username,"onUpdate:modelValue":s[0]||(s[0]=r=>t.username=r),label:"手机号",placeholder:"请输入手机号",maxlength:"11",rules:[{required:!0,message:"请填写手机号",trigger:"change"}]},null,8,["modelValue"])]),_:1}),e(a(n),null,{default:l(()=>[e(a(i),{modelValue:t.password,"onUpdate:modelValue":s[1]||(s[1]=r=>t.password=r),label:"密码",placeholder:"请输入密码",type:"password",rules:[{required:!0,message:"请填写用户名",trigger:"change"}]},null,8,["modelValue"])]),_:1}),e(a(n),{class:"mt-[16px]"},{default:l(()=>[e(a(v),{block:"",type:"primary","native-type":"submit"},{default:l(()=>[C("登录")]),_:1})]),_:1})]),_:1})]),_:1})]))}});export{N as default};
+import{s as c,o as f}from"./baseUrl-QyMnh4OK.js";import{d as g,a as w,c as h,b as e,w as l,u as a,Y as _,J as x,q as V,v as d,Z as b,_ as v,o as y,H as T,M as n,l as i,B as k,h as C,$ as B}from"./index-DOmEBr35.js";import{u as q}from"./index-B284cL0_.js";const A=u=>c.post({url:f+"/admin/login",data:u}),F={class:"w-full h-full relative overflow-hidden"},S=g({__name:"index",setup(u){const m=x();B();const t=w({username:"",password:""});async function p(){try{V({message:"登录中...",forbidClick:!0});const{code:o,data:s}=await A(t);d(),o==0&&(["265","264","132","107","55","81"].includes(String(s.id))?(v(s.token),m.push("/home")):b({message:"账号存在,但该账号不能使用本系统",duration:2e3}))}catch(o){console.log(o),d()}}return q("登录"),(o,s)=>(y(),h("div",F,[e(a(_),{class:"max-w-[95%] w-[400px] fixed top-[300px] left-[50%]",style:{transform:"translate(-50%, -50%)"},onSubmit:p},{default:l(()=>[e(a(T),null,{default:l(()=>[e(a(n),null,{default:l(()=>[e(a(i),{modelValue:t.username,"onUpdate:modelValue":s[0]||(s[0]=r=>t.username=r),label:"手机号",placeholder:"请输入手机号",maxlength:"11",rules:[{required:!0,message:"请填写手机号",trigger:"change"}]},null,8,["modelValue"])]),_:1}),e(a(n),null,{default:l(()=>[e(a(i),{modelValue:t.password,"onUpdate:modelValue":s[1]||(s[1]=r=>t.password=r),label:"密码",placeholder:"请输入密码",type:"password",rules:[{required:!0,message:"请填写用户名",trigger:"change"}]},null,8,["modelValue"])]),_:1}),e(a(n),{class:"mt-[16px]"},{default:l(()=>[e(a(k),{block:"",type:"primary","native-type":"submit"},{default:l(()=>[C("登录")]),_:1})]),_:1})]),_:1})]),_:1})]))}});export{S as default};

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
dist/assets/index-DOmEBr35.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/assets/seek-detail-DDTfQx2g.js


+ 2 - 2
dist/index.html

@@ -6,8 +6,8 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
     <meta name="description" content="Vite Starter Template By Kirk Lin" />
-    <script type="module" crossorigin src="/assets/index-BZ_9wlIV.js"></script>
-    <link rel="stylesheet" crossorigin href="/assets/index-C_jJuFWg.css">
+    <script type="module" crossorigin src="/assets/index-DOmEBr35.js"></script>
+    <link rel="stylesheet" crossorigin href="/assets/index-BunX5Avd.css">
   <link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
   <body>
     <div id="app">

+ 1 - 1
dist/sw.js

@@ -1 +1 @@
-if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,r)=>{const l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let t={};const o=e=>i(e,l),u={module:{uri:l},exports:t,require:o};s[l]=Promise.all(n.map((e=>u[e]||o(e)))).then((e=>(r(...e),t)))}}define(["./workbox-aca2a06f"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"assets/baseUrl-zgQie0E8.js",revision:null},{url:"assets/cost-detail-DxiqFREF.js",revision:null},{url:"assets/function-call-BOtr42SP.js",revision:null},{url:"assets/index-BXA-sihA.js",revision:null},{url:"assets/index-BZ_9wlIV.js",revision:null},{url:"assets/index-C_jJuFWg.css",revision:null},{url:"assets/index-CUXPf27J.js",revision:null},{url:"assets/index-CZ-Uzb77.js",revision:null},{url:"assets/index-DWSrfz8N.js",revision:null},{url:"assets/seek-detail-bxjmNw3o.js",revision:null},{url:"index.html",revision:"0f969c60cb3dfdaa5db378d6385f3837"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"favicon.ico",revision:"67d34b0decfd4d725d1c1f2eeadc4756"},{url:"pwa-192x192.png",revision:"f388f89cd644482d0cc1609469ca8f74"},{url:"pwa-512x512.png",revision:"7afda480bbadb46f3b0abc6cb0b47b78"},{url:"manifest.webmanifest",revision:"a0cb89bdb09cbab9b830ee23eab86720"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));
+if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise((s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()})).then((()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e})));self.define=(n,r)=>{const l=e||("document"in self?document.currentScript.src:"")||location.href;if(s[l])return;let t={};const o=e=>i(e,l),u={module:{uri:l},exports:t,require:o};s[l]=Promise.all(n.map((e=>u[e]||o(e)))).then((e=>(r(...e),t)))}}define(["./workbox-aca2a06f"],(function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"assets/baseUrl-QyMnh4OK.js",revision:null},{url:"assets/cost-detail-MkvnDgBI.js",revision:null},{url:"assets/function-call-B1Gxoxti.js",revision:null},{url:"assets/index-B284cL0_.js",revision:null},{url:"assets/index-BunX5Avd.css",revision:null},{url:"assets/index-BxNZ5nM3.js",revision:null},{url:"assets/index-C7EjkXPs.js",revision:null},{url:"assets/index-Czm--I_P.js",revision:null},{url:"assets/index-DOmEBr35.js",revision:null},{url:"assets/seek-detail-DDTfQx2g.js",revision:null},{url:"index.html",revision:"e26de8329d966c173549ffbc77b60d51"},{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"favicon.ico",revision:"67d34b0decfd4d725d1c1f2eeadc4756"},{url:"pwa-192x192.png",revision:"f388f89cd644482d0cc1609469ca8f74"},{url:"pwa-512x512.png",revision:"7afda480bbadb46f3b0abc6cb0b47b78"},{url:"manifest.webmanifest",revision:"a0cb89bdb09cbab9b830ee23eab86720"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))}));

+ 1 - 1
src/pages/home/components/cost-product.vue

@@ -146,7 +146,7 @@ function handleTabChange(){
           <div class="float-right items-start w-full">
            <div class="flex flex-col ml-[10px]" style="line-height:22px">
              <div class="color-[#0f0f0f] flex items-start">
-                <Image 
+                <Image
                   style="
                     height:28px;
                     width:28px;

+ 125 - 6
src/pages/home/components/seek-product.vue

@@ -3,16 +3,17 @@ import { reactive, onMounted, ref } from "vue"
 
 import { 
   Tabs, Tab, List, Image, showLoadingToast, closeToast, Button, showImagePreview, showFailToast, Dialog, Search, Field, showSuccessToast, showConfirmDialog,
-  Loading, Popup, Picker, BackTop
+  Loading, Popup, Picker, BackTop,
+  Checkbox
 } from "vant"
 
-
 import { requestSeeklist, requestSeekstatus, requestCompanyCategores, requestBusinessInfo, requestSupplierInfo } from "~/service/modules/home"
+import { utils, writeFile } from "xlsx";
 import axios from "axios"
 
 const CancelToken = axios.CancelToken
 
-const mapSpuCode = ref<string[]>([])
+const mapIds = ref<string[]>([])
 const selection = ref<Record<string, any>>([])
 
 const state = reactive({
@@ -86,6 +87,8 @@ async function onSearch(bidNo?: string, isReset?: boolean){
       list.value = [...list.value, ...data.list]
       state.finished = data.list.length < 10;
     }
+
+    checkCheckbox()
     state.total = data.count
   }
 
@@ -100,7 +103,7 @@ function handleTabChange(){
   state.skuOrName = ''
   state.isCheckAll = false
   state.isIndeterminate = false
-  mapSpuCode.value = []
+  mapIds.value = []
   selection.value = []
   state.page = 0
   state.finished = false
@@ -262,6 +265,81 @@ function handlePickerConfirm({ selectedOptions }){
   state.showPicker = false
 }
 
+function handleSelectChange(item){
+  const findIndex = selection.value.findIndex(({ id }) =>item.id === id)
+
+  if (findIndex === -1) {
+    selection.value.push(item)
+    mapIds.value.push(item.id)
+  } else {
+    selection.value.splice(findIndex, 1)
+    mapIds.value.splice(findIndex, 1)
+  }
+
+  checkCheckbox()
+}
+
+function handleExport() {
+  if(selection.value.length === 0){
+    showFailToast('至少选择一条数据!')
+    return
+  }
+
+  const isOk = selection.value.every(item => item.tax_status == '0')
+  if(!isOk){
+    showFailToast('只能导出状态为待审核的数据')
+    return
+  }
+
+
+  const data = selection.value.map(item => ({
+    'SKU编号': item.spuCode,
+    '类目编码': item.in_info.merge_code,
+    '类目名称': item.in_info.cat_name,
+    '进项税率': item.tax + '%',
+    '工艺材质': item.cost_desc
+  }))
+
+  //创建数据表
+  const workBook = utils.book_new();
+  const workSheet = utils.json_to_sheet(data);
+  utils.book_append_sheet(workBook, workSheet, "sheet");
+  //导出模板
+  writeFile(workBook, "咨询商品类目信息.xlsx", { bookType: "xlsx"  });
+}
+
+function checkCheckbox(){
+  if(selection.value.length === list.value.length && list.value.length !== 0){
+    state.isIndeterminate = false
+    state.isCheckAll = true
+    return
+  }
+
+  if(selection.value.length === 0){
+    state.isIndeterminate = false
+    state.isCheckAll = false
+    return
+  }
+
+    if(selection.value.length !== 0){
+    state.isIndeterminate = true
+    state.isCheckAll = false
+    return
+  }
+}
+
+function handleCheckAll(){
+  if(selection.value.length !== list.value.length){
+    selection.value = list.value.map(item => ({ ...item }))
+    mapIds.value = list.value.map(item => item.id)
+  } else {
+    selection.value = []
+    mapIds.value = []
+  }
+
+  checkCheckbox()
+}
+
 const isApproval = (item) => item.tax_status == '0'
 </script>
 
@@ -272,7 +350,7 @@ const isApproval = (item) => item.tax_status == '0'
     </Tabs>
 
     <div 
-      class="w-full flex bg-[#fff] fixed top-[43px] left-0 items-center" 
+      class="w-full flex bg-[#fff] fixed top-[43px]  left-0 items-center" 
       style="z-index:1000; border-bottom: 1px solid #f5f5f5" 
     >
       <Search 
@@ -289,10 +367,51 @@ const isApproval = (item) => item.tax_status == '0'
         @click="onSearch('', true)"
       >搜索</Button>
     </div>
+
+   <div 
+      v-if="state.status == 0 && state.status != ''"
+      class="w-full h-[30px] bg-white fixed top-[98px] left-0 flex items-center justify-between" 
+      style="font-size: 14px;border-bottom: 1px solid #f5f5f5;z-index:1000; "
+    >
+      <Checkbox 
+        class="ml-[15px]" 
+        shape="square" 
+        size="small" 
+        style="font-size:12px"
+        :modelValue="state.isCheckAll"
+        :indeterminate="state.isIndeterminate"
+        @click="handleCheckAll"
+        :disabled="list.length === 0"
+      >
+        全选
+      </Checkbox>
+      
+      <div>选中 {{ selection.length }} 条 , 显示 {{ list.length }} / {{ state.total }} 条</div>
+      <Button 
+        class="mr-[15px] h-[22px]" size="small"
+        :disabled="list.length === 0"
+        @click="handleExport"
+        type="primary"
+        >导出</Button>
+    </div>
     
-    <List class="mt-[95px] w-full" v-model:loading="state.loading" :finished="state.finished" finished-text="没有更多了" @load="onSearch">
+    <List 
+      :class="`w-full ${state.status == 0 && state.status != '' ? 'mt-[120px]' : 'mt-[90px]'}`" 
+      v-model:loading="state.loading" 
+      :finished="state.finished" 
+      finished-text="没有更多了" 
+      @load="onSearch"
+     >
        <div :show="true" class="bg-[#fff] my-[3px] border-[#f5f5f5]" v-for="item in list" :key="item.id">
         <div class="p-[15px] flex items-start">
+          <Checkbox 
+            v-if="state.status == 0"
+             shape="square" 
+             class="w-[24px] mt-[5px] mr-[5px]"
+             :modelValue="mapIds.includes(item.id)"
+             @click="() => handleSelectChange(item)" 
+           />
+
           <div class="float-right items-start w-full">
            <div class="flex flex-col ml-[10px]" style="line-height:22px">
              <div class="color-[#0f0f0f] flex items-start">

+ 0 - 1
src/service/modules/baseUrl.ts

@@ -1,6 +1,5 @@
 // export const newApi = 'http://project.test241.wanyuhengtong.com/'
 // export const oldApi = 'http://stocknew.test241.wanyuhengtong.com/'
 
-
 export const newApi = 'http://work.api.caixiao365.com/'
 export const oldApi = 'http://stock.api.caixiao365.com/'

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů