Merge branch 'pre'

This commit is contained in:
zhangguoping 2024-11-04 16:51:31 +08:00
commit ee94a465a7
41 changed files with 466 additions and 210 deletions

View File

@ -1,38 +1,38 @@
{
"files": {
"static/js/0.3e320004.chunk.js": "/static/js/0.3e320004.chunk.js",
"static/js/1.96e6ce15.chunk.js": "/static/js/1.96e6ce15.chunk.js",
"static/js/0.f4301035.chunk.js": "/static/js/0.f4301035.chunk.js",
"static/js/1.32d0ab4c.chunk.js": "/static/js/1.32d0ab4c.chunk.js",
"static/css/2.74e9175c.chunk.css": "/static/css/2.74e9175c.chunk.css",
"static/js/2.ae470fdf.chunk.js": "/static/js/2.ae470fdf.chunk.js",
"static/js/2.5a1edee3.chunk.js": "/static/js/2.5a1edee3.chunk.js",
"static/css/3.75be5fa1.chunk.css": "/static/css/3.75be5fa1.chunk.css",
"static/js/3.494d92e5.chunk.js": "/static/js/3.494d92e5.chunk.js",
"static/js/3.982898bb.chunk.js": "/static/js/3.982898bb.chunk.js",
"main.css": "/static/css/main.b0e33980.chunk.css",
"main.js": "/static/js/main.fafd3bfe.chunk.js",
"runtime-main.js": "/static/js/runtime-main.2b05af1e.js",
"runtime-main.js": "/static/js/runtime-main.4a107163.js",
"static/css/6.4dbf3e8a.chunk.css": "/static/css/6.4dbf3e8a.chunk.css",
"static/js/6.e81a8cbe.chunk.js": "/static/js/6.e81a8cbe.chunk.js",
"static/js/6.0e9ce378.chunk.js": "/static/js/6.0e9ce378.chunk.js",
"static/css/7.d823cf27.chunk.css": "/static/css/7.d823cf27.chunk.css",
"static/js/7.b7f41c71.chunk.js": "/static/js/7.b7f41c71.chunk.js",
"static/js/7.344fdca5.chunk.js": "/static/js/7.344fdca5.chunk.js",
"static/css/8.9a9b6f5c.chunk.css": "/static/css/8.9a9b6f5c.chunk.css",
"static/js/8.c9f9ab89.chunk.js": "/static/js/8.c9f9ab89.chunk.js",
"static/css/9.4e156c5f.chunk.css": "/static/css/9.4e156c5f.chunk.css",
"static/js/9.ba631756.chunk.js": "/static/js/9.ba631756.chunk.js",
"static/js/9.5082dd20.chunk.js": "/static/js/9.5082dd20.chunk.js",
"static/css/10.b1da7569.chunk.css": "/static/css/10.b1da7569.chunk.css",
"static/js/10.14f1988f.chunk.js": "/static/js/10.14f1988f.chunk.js",
"static/js/11.2546af06.chunk.js": "/static/js/11.2546af06.chunk.js",
"static/js/11.11a209a0.chunk.js": "/static/js/11.11a209a0.chunk.js",
"static/js/12.6aba6a7f.chunk.js": "/static/js/12.6aba6a7f.chunk.js",
"index.html": "/index.html",
"static/js/0.3e320004.chunk.js.LICENSE.txt": "/static/js/0.3e320004.chunk.js.LICENSE.txt",
"static/js/1.96e6ce15.chunk.js.LICENSE.txt": "/static/js/1.96e6ce15.chunk.js.LICENSE.txt",
"static/js/11.2546af06.chunk.js.LICENSE.txt": "/static/js/11.2546af06.chunk.js.LICENSE.txt",
"static/js/3.494d92e5.chunk.js.LICENSE.txt": "/static/js/3.494d92e5.chunk.js.LICENSE.txt",
"static/js/6.e81a8cbe.chunk.js.LICENSE.txt": "/static/js/6.e81a8cbe.chunk.js.LICENSE.txt",
"static/js/7.b7f41c71.chunk.js.LICENSE.txt": "/static/js/7.b7f41c71.chunk.js.LICENSE.txt",
"static/js/0.f4301035.chunk.js.LICENSE.txt": "/static/js/0.f4301035.chunk.js.LICENSE.txt",
"static/js/1.32d0ab4c.chunk.js.LICENSE.txt": "/static/js/1.32d0ab4c.chunk.js.LICENSE.txt",
"static/js/11.11a209a0.chunk.js.LICENSE.txt": "/static/js/11.11a209a0.chunk.js.LICENSE.txt",
"static/js/3.982898bb.chunk.js.LICENSE.txt": "/static/js/3.982898bb.chunk.js.LICENSE.txt",
"static/js/6.0e9ce378.chunk.js.LICENSE.txt": "/static/js/6.0e9ce378.chunk.js.LICENSE.txt",
"static/js/7.344fdca5.chunk.js.LICENSE.txt": "/static/js/7.344fdca5.chunk.js.LICENSE.txt",
"static/js/8.c9f9ab89.chunk.js.LICENSE.txt": "/static/js/8.c9f9ab89.chunk.js.LICENSE.txt",
"static/js/9.ba631756.chunk.js.LICENSE.txt": "/static/js/9.ba631756.chunk.js.LICENSE.txt"
"static/js/9.5082dd20.chunk.js.LICENSE.txt": "/static/js/9.5082dd20.chunk.js.LICENSE.txt"
},
"entrypoints": [
"static/js/runtime-main.2b05af1e.js",
"static/js/runtime-main.4a107163.js",
"static/css/8.9a9b6f5c.chunk.css",
"static/js/8.c9f9ab89.chunk.js",
"static/css/main.b0e33980.chunk.css",

View File

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/commonproductlogo/goods_new_v3.js?v3"></script><title>营销管理系统</title><style>#root,body,html{width:100%;height:100%;padding:0;margin:0;font-size:14px;overflow:hidden}</style><link href="/static/css/8.9a9b6f5c.chunk.css" rel="stylesheet"><link href="/static/css/main.b0e33980.chunk.css" rel="stylesheet"></head><body><script type="text/javascript">window.goods=product</script><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,o,c=t[0],i=t[1],f=t[2],s=0,d=[];s<c.length;s++)o=c[s],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&d.push(a[o][0]),a[o]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(t);d.length;)d.shift()();return u.push.apply(u,f||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,o=1;o<r.length;o++){var i=r[o];0!==a[i]&&(n=!1)}n&&(u.splice(t--,1),e=c(c.s=r[0]))}return e}var n={},o={5:0},a={5:0},u=[];function c(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,c),r.l=!0,r.exports}c.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{2:1,3:1,6:1,7:1,9:1,10:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"74e9175c",3:"75be5fa1",6:"4dbf3e8a",7:"d823cf27",9:"4e156c5f",10:"b1da7569",11:"31d6cfe0",12:"31d6cfe0"}[e]+".chunk.css",a=c.p+n,u=document.getElementsByTagName("link"),i=0;i<u.length;i++){var f=(l=u[i]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(f===n||f===a))return t()}var s=document.getElementsByTagName("style");for(i=0;i<s.length;i++){var l;if((f=(l=s[i]).getAttribute("data-href"))===n||f===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=n,delete o[e],d.parentNode.removeChild(d),r(u)},d.href=a,document.getElementsByTagName("head")[0].appendChild(d)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,c.nc&&i.setAttribute("nonce",c.nc),i.src=function(e){return c.p+"static/js/"+({}[e]||e)+"."+{0:"3e320004",1:"96e6ce15",2:"ae470fdf",3:"494d92e5",6:"e81a8cbe",7:"b7f41c71",9:"ba631756",10:"14f1988f",11:"2546af06",12:"6aba6a7f"}[e]+".chunk.js"}(e);var f=new Error;u=function(t){i.onerror=i.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;f.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",f.name="ChunkLoadError",f.type=n,f.request=o,r[1](f)}a[e]=void 0}};var s=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(t)},c.m=e,c.c=n,c.d=function(e,t,r){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(c.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)c.d(r,n,function(t){return e[t]}.bind(null,n));return r},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="/",c.oe=function(e){throw e};var i=this.webpackJsonpmarketingsystem=this.webpackJsonpmarketingsystem||[],f=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var l=f;r()}([])</script><script src="/static/js/8.c9f9ab89.chunk.js"></script><script src="/static/js/main.fafd3bfe.chunk.js"></script></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/commonproductlogo/goods_new_v3.js?v3"></script><title>营销管理系统</title><style>#root,body,html{width:100%;height:100%;padding:0;margin:0;font-size:14px;overflow:hidden}</style><link href="/static/css/8.9a9b6f5c.chunk.css" rel="stylesheet"><link href="/static/css/main.b0e33980.chunk.css" rel="stylesheet"></head><body><script type="text/javascript">window.goods=product</script><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,o,c=t[0],i=t[1],f=t[2],s=0,d=[];s<c.length;s++)o=c[s],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&d.push(a[o][0]),a[o]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(t);d.length;)d.shift()();return u.push.apply(u,f||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,o=1;o<r.length;o++){var i=r[o];0!==a[i]&&(n=!1)}n&&(u.splice(t--,1),e=c(c.s=r[0]))}return e}var n={},o={5:0},a={5:0},u=[];function c(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,c),r.l=!0,r.exports}c.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{2:1,3:1,6:1,7:1,9:1,10:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"74e9175c",3:"75be5fa1",6:"4dbf3e8a",7:"d823cf27",9:"4e156c5f",10:"b1da7569",11:"31d6cfe0",12:"31d6cfe0"}[e]+".chunk.css",a=c.p+n,u=document.getElementsByTagName("link"),i=0;i<u.length;i++){var f=(l=u[i]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(f===n||f===a))return t()}var s=document.getElementsByTagName("style");for(i=0;i<s.length;i++){var l;if((f=(l=s[i]).getAttribute("data-href"))===n||f===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=n,delete o[e],d.parentNode.removeChild(d),r(u)},d.href=a,document.getElementsByTagName("head")[0].appendChild(d)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,c.nc&&i.setAttribute("nonce",c.nc),i.src=function(e){return c.p+"static/js/"+({}[e]||e)+"."+{0:"f4301035",1:"32d0ab4c",2:"5a1edee3",3:"982898bb",6:"0e9ce378",7:"344fdca5",9:"5082dd20",10:"14f1988f",11:"11a209a0",12:"6aba6a7f"}[e]+".chunk.js"}(e);var f=new Error;u=function(t){i.onerror=i.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;f.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",f.name="ChunkLoadError",f.type=n,f.request=o,r[1](f)}a[e]=void 0}};var s=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(t)},c.m=e,c.c=n,c.d=function(e,t,r){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(c.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)c.d(r,n,function(t){return e[t]}.bind(null,n));return r},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="/",c.oe=function(e){throw e};var i=this.webpackJsonpmarketingsystem=this.webpackJsonpmarketingsystem||[],f=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var l=f;r()}([])</script><script src="/static/js/8.c9f9ab89.chunk.js"></script><script src="/static/js/main.fafd3bfe.chunk.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
!function(e){function t(t){for(var n,o,c=t[0],i=t[1],f=t[2],s=0,d=[];s<c.length;s++)o=c[s],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&d.push(a[o][0]),a[o]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(t);d.length;)d.shift()();return u.push.apply(u,f||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,o=1;o<r.length;o++){var i=r[o];0!==a[i]&&(n=!1)}n&&(u.splice(t--,1),e=c(c.s=r[0]))}return e}var n={},o={5:0},a={5:0},u=[];function c(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,c),r.l=!0,r.exports}c.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{2:1,3:1,6:1,7:1,9:1,10:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"74e9175c",3:"75be5fa1",6:"4dbf3e8a",7:"d823cf27",9:"4e156c5f",10:"b1da7569",11:"31d6cfe0",12:"31d6cfe0"}[e]+".chunk.css",a=c.p+n,u=document.getElementsByTagName("link"),i=0;i<u.length;i++){var f=(l=u[i]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(f===n||f===a))return t()}var s=document.getElementsByTagName("style");for(i=0;i<s.length;i++){var l;if((f=(l=s[i]).getAttribute("data-href"))===n||f===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=n,delete o[e],d.parentNode.removeChild(d),r(u)},d.href=a,document.getElementsByTagName("head")[0].appendChild(d)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,c.nc&&i.setAttribute("nonce",c.nc),i.src=function(e){return c.p+"static/js/"+({}[e]||e)+"."+{0:"3e320004",1:"96e6ce15",2:"ae470fdf",3:"494d92e5",6:"e81a8cbe",7:"b7f41c71",9:"ba631756",10:"14f1988f",11:"2546af06",12:"6aba6a7f"}[e]+".chunk.js"}(e);var f=new Error;u=function(t){i.onerror=i.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;f.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",f.name="ChunkLoadError",f.type=n,f.request=o,r[1](f)}a[e]=void 0}};var s=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(t)},c.m=e,c.c=n,c.d=function(e,t,r){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},c.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(c.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)c.d(r,n,function(t){return e[t]}.bind(null,n));return r},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="/",c.oe=function(e){throw e};var i=this.webpackJsonpmarketingsystem=this.webpackJsonpmarketingsystem||[],f=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var l=f;r()}([]);
!function(e){function t(t){for(var n,o,c=t[0],i=t[1],f=t[2],s=0,d=[];s<c.length;s++)o=c[s],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&d.push(a[o][0]),a[o]=0;for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n]);for(l&&l(t);d.length;)d.shift()();return u.push.apply(u,f||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,o=1;o<r.length;o++){var i=r[o];0!==a[i]&&(n=!1)}n&&(u.splice(t--,1),e=c(c.s=r[0]))}return e}var n={},o={5:0},a={5:0},u=[];function c(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,c),r.l=!0,r.exports}c.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{2:1,3:1,6:1,7:1,9:1,10:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{0:"31d6cfe0",1:"31d6cfe0",2:"74e9175c",3:"75be5fa1",6:"4dbf3e8a",7:"d823cf27",9:"4e156c5f",10:"b1da7569",11:"31d6cfe0",12:"31d6cfe0"}[e]+".chunk.css",a=c.p+n,u=document.getElementsByTagName("link"),i=0;i<u.length;i++){var f=(l=u[i]).getAttribute("data-href")||l.getAttribute("href");if("stylesheet"===l.rel&&(f===n||f===a))return t()}var s=document.getElementsByTagName("style");for(i=0;i<s.length;i++){var l;if((f=(l=s[i]).getAttribute("data-href"))===n||f===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=n,delete o[e],d.parentNode.removeChild(d),r(u)},d.href=a,document.getElementsByTagName("head")[0].appendChild(d)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,c.nc&&i.setAttribute("nonce",c.nc),i.src=function(e){return c.p+"static/js/"+({}[e]||e)+"."+{0:"f4301035",1:"32d0ab4c",2:"5a1edee3",3:"982898bb",6:"0e9ce378",7:"344fdca5",9:"5082dd20",10:"14f1988f",11:"11a209a0",12:"6aba6a7f"}[e]+".chunk.js"}(e);var f=new Error;u=function(t){i.onerror=i.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;f.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",f.name="ChunkLoadError",f.type=n,f.request=o,r[1](f)}a[e]=void 0}};var s=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(t)},c.m=e,c.c=n,c.d=function(e,t,r){c.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},c.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,t){if(1&t&&(e=c(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(c.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)c.d(r,n,function(t){return e[t]}.bind(null,n));return r},c.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(t,"a",t),t},c.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},c.p="/",c.oe=function(e){throw e};var i=this.webpackJsonpmarketingsystem=this.webpackJsonpmarketingsystem||[],f=i.push.bind(i);i.push=t,i=i.slice();for(var s=0;s<i.length;s++)t(i[s]);var l=f;r()}([]);

View File

@ -2,14 +2,14 @@
process.env.BABEL_ENV = "test"
process.env.NODE_ENV = "test"
// 测试
// process.env.BASE_URL = "http://test.marketapi.1688sup.com"
// process.env.UNIFIED_API = "http://api.test.user.1688sup.com/v1"
// process.env.UNIFIED_URL = "http://test.user.1688sup.com/#/login"
process.env.BASE_URL = "http://test.marketapi.1688sup.com"
process.env.UNIFIED_API = "http://api.test.user.1688sup.com/v1"
process.env.UNIFIED_URL = "http://test.user.1688sup.com/#/login"
// 镜像
process.env.BASE_URL = "http://pre.marketapi.1688sup.com"
process.env.UNIFIED_API = "https://api.user.1688sup.com/v1"
process.env.UNIFIED_URL = "https://user.1688sup.com/#/login"
// process.env.BASE_URL = "http://pre.marketapi.1688sup.com"
// process.env.UNIFIED_API = "https://api.user.1688sup.com/v1"
// process.env.UNIFIED_URL = "https://user.1688sup.com/#/login"
// Makes the script crash on unhandled rejections instead of silently
// ignoring them. In the future, promise rejections that are not handled will

View File

@ -8,7 +8,7 @@ import { isSameDay } from "date-fns"
import { map } from "lodash-es"
import moment from "moment"
import React, { forwardRef, useEffect, useImperativeHandle, useRef } from "react"
import { BlockLoading, Button, Card, DateRangePicker, Input, Notify, Select } from "zent"
import { BlockLoading, Button, Card, DateRangePicker, Input, Notify, Select, Radio, TimePicker } from "zent"
import UseGoodsScopePop from "../UseGoodsScopePop/index"
import "./style.less"
@ -92,25 +92,25 @@ const tableColumn = [
prop: "quantity",
width: "auto"
},
{
title: "周期类型",
type: "normal",
prop: "period_type",
width: "auto",
type: "slot"
},
{
title: "周期次数",
type: "normal",
prop: "period_num",
width: "auto"
},
{
title: "间隔天数",
type: "normal",
prop: "period_day",
width: "auto"
},
// {
// title: "",
// type: "normal",
// prop: "period_type",
// width: "auto",
// type: "slot"
// },
// {
// title: "",
// type: "normal",
// prop: "period_num",
// width: "auto"
// },
// {
// title: "",
// type: "normal",
// prop: "period_day",
// width: "auto"
// },
{
title: "操作",
prop: "opearo",
@ -133,6 +133,7 @@ const codeInfoRules = {
}
const rulesInfoRules = {
period_num: [{ type: "required", message: "请输入周期规则" }],
date_time: [{ type: "required", message: "请选择生效时间段" }],
rank: [{ type: "required", message: "请选择商品范围" }]
}
@ -166,6 +167,10 @@ const UseExchangeAddEdit = forwardRef((props, ref) => {
describe: "",
date_time: "",
range: "",
period_type: '1',
period_num: 1,
period_day: '',
period_fixed_receive_time: '',
restrict: ""
})
@ -210,6 +215,15 @@ const UseExchangeAddEdit = forwardRef((props, ref) => {
return validator
}
if (codeInfo.period_type !== '1' && !codeInfo.period_day) {
Notify.error(`请填写周期间隔天数`)
return
}
if (codeInfo.period_type == '2' && !codeInfo.period_fixed_receive_time) {
Notify.error(`请填写周期规则时间`)
return
}
if (validator) {
if (state.rank.length > 0) {
let arr = state.tableData.filter((item) => item.checked)
@ -240,6 +254,10 @@ const UseExchangeAddEdit = forwardRef((props, ref) => {
describe: codeInfo.describe,
begin_time: codeInfo.date_time[0],
recharge_type: 1,
period_type: String(codeInfo.period_type) || '1',
period_num: codeInfo.period_num || 1,
period_day: codeInfo.period_day || '',
period_fixed_receive_time: codeInfo.period_fixed_receive_time || '',
end_time: codeInfo.date_time[1],
quantity: codeInfo.issued,
restrict: codeInfo.restrict,
@ -278,6 +296,10 @@ const UseExchangeAddEdit = forwardRef((props, ref) => {
})
setCodeInfo({
period_type: '1',
period_num: 1,
period_day: '',
period_fixed_receive_time: '',
code_name: "",
issued: "",
describe: "",
@ -293,6 +315,10 @@ const UseExchangeAddEdit = forwardRef((props, ref) => {
describe: editData.describe,
date_time: [editData.begin_time, editData.end_time],
range: editData.range,
period_type: String(editData.period_type) || '1',
period_num: editData.period_num || 1,
period_day: editData.period_day || '',
period_fixed_receive_time: editData.period_fixed_receive_time || '',
restrict: editData.restrict
})
@ -659,6 +685,79 @@ const UseExchangeAddEdit = forwardRef((props, ref) => {
<Card style={{ width: "95%", margin: "10px auto" }} title={"基本规则"}>
<div>
<Form model={codeInfo} rules={rulesInfoRules} ref={codeRuleEl} className="addform">
<FormItem labelname="周期到账" prop="period_type" id="period_type">
<Radio.Group
value={codeInfo.period_type}
onChange={(e) => {
setCodeInfo({ period_type: e.target.value })
setCodeInfo({ period_num: 1 })
setCodeInfo({ period_day: '' })
setCodeInfo({ period_fixed_receive_time: '' })
}}
>
<Radio value={"1"}>不设置</Radio>
<Radio value={"2"}>自动发放</Radio>
<Radio value={"3"}>手动领取</Radio>
</Radio.Group>
</FormItem>
{codeInfo.period_type !== "1" ? (
<FormItem labelname="周期规则" prop="period_num" id="period_num">
<div className="warningValue">
<Ipt
onChange={(e) => {
if (e && (isNaN(Number(e)) || Number(e) < 0 || !/^[1-9]\d*$/.test(e))) return
if (Number(e) > 24) {
Notify.clear()
return Notify.error("分期次数不允许超过24")
}
setCodeInfo({ period_num: e })
}}
onClearItem={(e) => {
setCodeInfo({ period_num: '' })
}}
value={codeInfo.period_num}
countShow={false}
placeholder={"请输入分期次数"}
labelWidth={"0px"}
height={"36px"}
unit="次"
width={"240px"}
alignment={"left"}
/>
-
<div className="icon-box">
<Ipt
onChange={(e) => {
if (e && (isNaN(Number(e)) || Number(e) < 0 || !/^[1-9]\d*$/.test(e))) return
setCodeInfo({ period_day: e })
}}
onClearItem={(e) => {
setCodeInfo({ period_day: '' })
}}
countShow={false}
value={codeInfo.period_day}
placeholder={"请输入间隔天数"}
unit="天"
labelWidth={"0px"}
height={"36px"}
width={"240px"}
alignment={"left"}
/>
</div>
{codeInfo.period_type == '2' ? <TimePicker
showTime={{
format: "HH:mm:ss",
defaultTime: [moment().format("HH:mm:ss"), "23:59:59"]
}}
value={codeInfo.period_fixed_receive_time}
onChange={(value) => {
setCodeInfo({ period_fixed_receive_time: value })
}}
width="240px"
/> : null}
</div>
</FormItem>
) : null}
<FormItem labelname="生效时间段" prop="date_time" id="date_time">
<DateRangePicker
className="zent-datepicker-plan"

View File

@ -52,7 +52,7 @@ const formRules = {
],
end_time: [{ type: "required", message: "请选择兑换结束时间" }],
card_show: [{ type: "required", message: "请选择卡密发放类型" }],
period_num: [{ type: "required", message: "请输入周期规则" }]
// period_num: [{ type: "required", message: "" }]
}
const UseProductPop = forwardRef((props, ref) => {
@ -92,9 +92,9 @@ const UseProductPop = forwardRef((props, ref) => {
end_time: "",
card_show: 2,
period_type: '1',
period_num: 1,
period_day: '',
// period_type: '1',
// period_num: 1,
// period_day: '',
})
useEffect(() => {
@ -185,9 +185,9 @@ const UseProductPop = forwardRef((props, ref) => {
goods_id: productData.goods_id,
cost_price: productData.cost_price,
weight: String(productData.weight),
period_type: String(productData.period_type) || '1',
period_num: productData.period_num || 1,
period_day: productData.period_day || '',
// period_type: String(productData.period_type) || '1',
// period_num: productData.period_num || 1,
// period_day: productData.period_day || '',
quantity: productData.quantity,
contract_price: productData.contract_price,
product_name: productData.product_name,
@ -241,9 +241,9 @@ const UseProductPop = forwardRef((props, ref) => {
cost_price: "",
weight: "0",
quantity: "",
period_type: '1',
period_num: 1,
period_day: '',
// period_type: '1',
// period_num: 1,
// period_day: '',
contract_price: "",
product_name: "",
product_type: 1,
@ -274,9 +274,9 @@ const UseProductPop = forwardRef((props, ref) => {
cost_price: model.cost_price,
official_price: model.official_price,
quantity: model.quantity,
period_type: String(model.period_type) || '1',
period_num: model.period_num || 1,
period_day: model.period_day || '',
// period_type: String(model.period_type) || '1',
// period_num: model.period_num || 1,
// period_day: model.period_day || '',
weight: model.weight,
show_url:
props.isSettlement !== 1
@ -296,10 +296,10 @@ const UseProductPop = forwardRef((props, ref) => {
let visible = false
// :
if (formEl.current.validator()) {
if (model.period_type !== '1' && !model.period_day) {
Notify.error(`请填写周期间隔天数`)
return
}
// if (model.period_type !== '1' && !model.period_day) {
// Notify.error(``)
// return
// }
//
if (model.show_url.length <= 0 && props.isSettlement !== 1) {
Notify.error(`请上传商品Logo`)
@ -662,7 +662,7 @@ const UseProductPop = forwardRef((props, ref) => {
alignment={"left"}
/>
</FormItem>
{sessionStorage.getItem("keyType") != 2 ? <FormItem labelname="周期到账" prop="period_type" id="period_type">
{/* {sessionStorage.getItem("keyType") != 2 ? <FormItem labelname="" prop="period_type" id="period_type">
<Radio.Group
value={model.period_type}
disabled={!!model.code_batch_id}
@ -733,7 +733,7 @@ const UseProductPop = forwardRef((props, ref) => {
</div>
</div>
</FormItem>
) : null}
) : null} */}
<FormItem labelname="商品库存" prop="quantity" id="quantity">
<Ipt
onChange={(e) => {

View File

@ -25,7 +25,8 @@ import {
Select,
Radio,
Input,
TimeRangePicker
TimeRangePicker,
TimePicker
} from "zent"
import "./index.less"
import { codeInfoRules, rulesInfoRules, tableColumn } from "./static"
@ -78,8 +79,9 @@ const Combining = forwardRef((props, ref) => {
timer_show: 1,
period_type: '1',
recharge_num: 1,
// period_num: 1,
period_day: '',
period_fixed_receive_time: ''
}
}
@ -214,6 +216,10 @@ const Combining = forwardRef((props, ref) => {
instructionType: Number(group_info.instructionType) || 1,
code_name: title,
date_time: [begin_time, end_time],
period_type: String(propsData.period_type) || '1',
// period_num: propsData.period_num || 1,
period_day: propsData.period_day || '',
period_fixed_receive_time: propsData.period_fixed_receive_time || '',
channel,
receive_mode: Number(receive_mode),
instruction,
@ -227,9 +233,6 @@ const Combining = forwardRef((props, ref) => {
}
]
: [],
period_type: String(group_info.period_type) || '1',
recharge_num: group_info.recharge_num || 1,
period_day: group_info.period_day || '',
timer: [time_limit.receive_time.start_time, time_limit.receive_time.end_time]
})
sessionStorage.setItem("knockGoldData", JSON.stringify(propsData.product.reduce))
@ -244,6 +247,10 @@ const Combining = forwardRef((props, ref) => {
quantity: info.quantity,
restrict: 1,
recharge_type: 2,
period_type: String(info.period_type) || '1',
// period_num: info.period_num || 1,
period_day: info.period_day || '',
period_fixed_receive_time: info.period_fixed_receive_time || '',
group_info: {
type: 2,
is_webview: info.is_webview,
@ -254,9 +261,10 @@ const Combining = forwardRef((props, ref) => {
instruction: info.instruction,
receive_mode: info.receive_mode,
channel: info.channel,
period_type: String(info.period_type) || '1',
recharge_num: info.recharge_num || 1,
period_day: info.period_day || '',
// period_type: String(info.period_type) || '1',
// period_num: info.period_num || 1,
// period_day: info.period_day || '',
// period_fixed_receive_time: info.period_fixed_receive_time || '',
time_limit: {
timer_show: info.timer_show,
effect_time: {
@ -591,6 +599,7 @@ const Combining = forwardRef((props, ref) => {
onChange={(e) => {
setInfo({ period_type: e.target.value })
setInfo({ period_day: '' })
setInfo({ period_fixed_receive_time: '' })
}}
>
<Radio value={"1"}>不设置</Radio>
@ -600,6 +609,7 @@ const Combining = forwardRef((props, ref) => {
</FormItem>
{info.period_type !== "1" ? (
<FormItem labelname="周期规则" prop="period_day" id="period_day">
<div className="warningValue">
<Ipt
onChange={(e) => {
if (e && (isNaN(Number(e)) || Number(e) < 0 || !/^[1-9]\d*$/.test(e))) return
@ -614,10 +624,24 @@ const Combining = forwardRef((props, ref) => {
unit="天"
labelWidth={"0px"}
height={"36px"}
width={"520px"}
width={"240px"}
alignment={"left"}
/>
</FormItem>
<div className="icon-box">
{info.period_type == '2'? <TimePicker
showTime={{
format: "HH:mm:ss",
defaultTime: [moment().format("HH:mm:ss"), "23:59:59"]
}}
value={info.period_fixed_receive_time}
onChange={(value) => {
setInfo({ period_fixed_receive_time: value })
}}
width="240px"
/> : null}
</div>
</div>
</FormItem>
) : null}
<FormItem labelname="生效时间段" prop="date_time" id="date_time">
<DateRangePicker

View File

@ -81,12 +81,12 @@ export const tableColumn = [
prop: "quantity",
width: "auto"
},
{
title: "权重",
type: "slot",
prop: "index",
width: "auto"
},
// {
// title: "权重",
// type: "slot",
// prop: "index",
// width: "auto"
// },
{
title: "操作",
prop: "opearo",
@ -117,6 +117,9 @@ export const rulesInfoRules = {
reg: "^([1-9][0-9]*){1,3}$"
}
],
period_fixed_receive_time: [
{ type: "required", message: "请输入周期规则时间" },
],
date_time: [{ type: "required", message: "请选择生效时间段" }],
timer: [{ type: "required", message: "请选择领取时间段" }],
rank: [{ type: "required", message: "请选择商品范围" }]

View File

@ -63,11 +63,11 @@ const initArray = (targetNum) => {
}
const noticeWX = `
1在微信APP内打开链接点击一键领取完成领取微信立减金<br />
1在微信APP内打开链接点击立即领取完成领取微信立减金<br />
2微信立减金一旦领取不可撤销不可转让注意不要将兑换券泄露给他人`
const noticeZFB = `
1在支付宝H5内打开链接点击一键领取完成领取支付宝立减金<br />
1在支付宝H5内打开链接点击立即领取完成领取支付宝立减金<br />
2支付宝立减金一旦领取不可撤销不可转让注意不要将兑换券泄露给他人`
export default class addKnockGold extends Component {
@ -112,10 +112,10 @@ export default class addKnockGold extends Component {
timer_show: 1,
notice: noticeZFB,
index: 1,
period_type: '1',
period_num: 1,
period_day: '',
// index: 1,
// period_type: '1',
// period_num: 1,
// period_day: '',
},
subjectList: [],
TimeDiffer: "",
@ -224,7 +224,7 @@ export default class addKnockGold extends Component {
for (let key in this.props.data) {
model[key] = this.props.data[key]
}
model.period_type = String(this.props.data.period_type)
// model.period_type = String(this.props.data.period_type)
model.weight = String(this.props.data.weight)
model.is_webview = Number(this.props.data.is_webview) || 0
model.early_per = this.props.data.early_per.map((item) => String(item))
@ -449,10 +449,10 @@ export default class addKnockGold extends Component {
this.refs.form4.validator() &&
this.refs.voucherBatchRef.validator()
) {
if (!this.props.combining && this.state.model.period_type !== '1' && !this.state.model.period_day) {
Notify.error(`请填写周期间隔天数`)
return
}
// if (!this.props.combining && this.state.model.period_type !== '1' && !this.state.model.period_day) {
// Notify.error(``)
// return
// }
//
if (this.props.data) {
let temp = []
@ -558,10 +558,10 @@ export default class addKnockGold extends Component {
transformData.price = this.state.model.price //
transformData.recharge_amount = this.state.model.recharge_amount //
transformData.send_num = this.state.model.send_num
transformData.index = this.state.model.index
transformData.period_type = String(this.state.model.period_type) || '1'
transformData.period_num = this.state.model.period_num || 1
transformData.period_day = this.state.model.period_day || ''
// transformData.index = this.state.model.index
// transformData.period_type = String(this.state.model.period_type) || '1'
// transformData.period_num = this.state.model.period_num || 1
// transformData.period_day = this.state.model.period_day || ''
transformData.denomination = this.state.model.denomination
transformData.reduce_amount = this.state.model.reduce_amount
transformData.all_budget = this.state.model.all_budget
@ -1150,7 +1150,7 @@ export default class addKnockGold extends Component {
alignment={"left"}
/>
</FormItem>
{!this.props.combining && sessionStorage.getItem("keyType") != 2 ? <FormItem labelname="周期到账" prop="period_type" id="period_type">
{/* {!this.props.combining && sessionStorage.getItem("keyType") != 2 ? <FormItem labelname="" prop="period_type" id="period_type">
<Radio.Group
value={this.state.model.period_type}
disabled={!!this.props.data?.id}
@ -1214,7 +1214,7 @@ export default class addKnockGold extends Component {
</div>
</div>
</FormItem>
) : null}
) : null} */}
<FormItem id="send_num" labelname="单次到账" prop="send_num">
<Ipt
onChange={(value) => {
@ -1235,7 +1235,7 @@ export default class addKnockGold extends Component {
alignment={"left"}
/>
</FormItem>
{!!this.props.combining && <FormItem id="index" labelname="周期权重" prop="index">
{/* {!!this.props.combining && <FormItem id="index" labelname="" prop="index">
<Ipt
onChange={(e) => {
if (e && (isNaN(Number(e)) || Number(e) < 0 || !/^[1-9]\d*$/.test(e))) return
@ -1255,7 +1255,7 @@ export default class addKnockGold extends Component {
width={"520px"}
alignment={"left"}
/>
</FormItem>}
</FormItem>} */}
<FormItem id="receive_number" labelname="用户可领个数" prop="receive_number">
<Ipt
onChange={(value) => {

View File

@ -77,9 +77,9 @@ export default {
reg: /^(?:[1-9]|[1-5]\d|60)$/
}
], // 领取个数
period_num: [
{ type: "required", message: "请输入周期规则" },
]
// period_num: [
// { type: "required", message: "请输入周期规则" },
// ]
},
time: {
entry_time: [{ type: "required", message: "请选择生效时间段" }], // 生效时间

View File

@ -12,7 +12,7 @@ export default ({ data }) => {
<div className="available_time">
<h3>可用时间</h3>
<p className="r-f">
领取后{data.effect_date_type.text},有效期 {data.effect_date}
领取后{data.effect_date_type?.text},有效期 {data.effect_date}
</p>
</div>
)

View File

@ -249,7 +249,7 @@ export default class addKnockGold extends Component {
model.effect_date[0] = begin_time
model.receive_mode = receive_mode || 1
model.effect_date[1] = end_time
model.period_type = String(model.period_type) || '1'
// model.period_type = String(model.period_type) || '1'
model.copy && (model.cash_activity_id = uuid(8)) /* 是否是复制 */
/* 以下操作 筛选出输入框的预警值并经行填充 */
const copy_early_per = early_per || []
@ -368,10 +368,10 @@ export default class addKnockGold extends Component {
this.refs.form2.validator() &&
this.refs.form4.validator()
) {
if (this.state.model.period_type !== '1' && !this.state.model.period_day) {
Notify.error(`请填写周期间隔天数`)
return
}
// if (this.state.model.period_type !== '1' && !this.state.model.period_day) {
// Notify.error(``)
// return
// }
let temp = []
const redPacketsData = sessionStorage.getItem("redPacketsData")
redPacketsData && (temp = JSON.parse(redPacketsData))
@ -809,7 +809,7 @@ export default class addKnockGold extends Component {
alignment={"left"}
/>
</FormItem>
<FormItem labelname="周期到账" prop="period_type" id="period_type">
{/* <FormItem labelname="" prop="period_type" id="period_type">
<Radio.Group
disabled={this.state.isEdit}
value={this.state.model.period_type}
@ -872,7 +872,7 @@ export default class addKnockGold extends Component {
</div>
</div>
</FormItem>
) : null}
) : null} */}
<FormItem id="day_budget" labelname="单天预算发放上限" prop="day_budget">
<Ipt
onChange={(value) => {

View File

@ -50,9 +50,9 @@ export default {
reg: /^[1-9]\d{0,4}$|^100000$/
}
], // 领取个数
period_num: [
{ type: "required", message: "请输入周期规则" },
] // 领取个数
// period_num: [
// { type: "required", message: "请输入周期规则" },
// ] // 领取个数
},
time: {
effect_date: [{ type: "required", message: "请选择生效时间段" }] // 生效时间

View File

@ -53,9 +53,9 @@ export function model({ data }) {
begin_time: "" /* 生效开始时间 */,
end_time: "" /* 生效结束时间 */,
receive_type: 0, //领取时间类型
period_type: '1',
period_num: 1,
period_day: '',
// period_type: '1',
// period_num: 1,
// period_day: '',
wishing: "",
receive_mode: 1,
/* 不规则时间 */

View File

@ -41,7 +41,8 @@ import {
Select,
Sweetalert,
Input,
TimeRangePicker
TimeRangePicker,
TimePicker
} from "zent"
import "./index.less"
import { Column2, codeInfo, init, reductionFn, rulesInfo } from "./utils.js"
@ -147,8 +148,9 @@ export default class combiningAdd extends React.Component {
is_webview: Number(is_webview) || 0,
timer_show: Number(time_limit.timer_show) || 1,
issued: reqCopy.quantity,
period_type: String(reqCopy.group_info.period_type) || '1',
period_day: reqCopy.group_info.period_day || '',
period_type: String(reqCopy.period_type) || '1',
period_day: reqCopy.period_day || '',
period_fixed_receive_time: reqCopy.period_fixed_receive_time || '',
instructionType: Number(reqCopy.group_info.instructionType) || 1,
stock: reqCopy.stock,
restrict: reqCopy.restrict,
@ -421,6 +423,9 @@ export default class combiningAdd extends React.Component {
range: range,
recharge_type: 2,
restrict: 1,
period_type: String(codeInfo.period_type) || '1',
period_day: codeInfo.period_day || '',
period_fixed_receive_time: codeInfo.period_fixed_receive_time || '',
group_info: {
type: 2,
is_webview: codeInfo.is_webview,
@ -431,8 +436,9 @@ export default class combiningAdd extends React.Component {
instruction: codeInfo.instruction,
receive_mode: codeInfo.receive_mode,
channel: codeInfo.channel,
period_type: String(codeInfo.period_type) || '1',
period_day: codeInfo.period_day || '',
// period_type: String(codeInfo.period_type) || '1',
// period_day: codeInfo.period_day || '',
// period_fixed_receive_time: codeInfo.period_fixed_receive_time || '',
time_limit: {
timer_show: codeInfo.timer_show,
effect_time: {
@ -473,6 +479,7 @@ export default class combiningAdd extends React.Component {
quantity: codeInfo.issued,
period_type: String(codeInfo.period_type) || '1',
period_day: codeInfo.period_day || '',
period_fixed_receive_time: codeInfo.period_fixed_receive_time || '',
range: range.join(),
title: codeInfo.code_name,
restrict: codeInfo.restrict,
@ -481,8 +488,9 @@ export default class combiningAdd extends React.Component {
type: 2,
is_webview: codeInfo.is_webview,
quantity: codeInfo.quantity,
period_type: String(codeInfo.period_type) || '1',
period_day: codeInfo.period_day || '',
// period_type: String(codeInfo.period_type) || '1',
// period_day: codeInfo.period_day || '',
// period_fixed_receive_time: codeInfo.period_fixed_receive_time || '',
instructionType: codeInfo.instructionType,
group_cover: "",
group_image: codeInfo.group_image[0] ? codeInfo.group_image[0].src : "",
@ -605,6 +613,11 @@ export default class combiningAdd extends React.Component {
return false
}
if(this.state.codeInfo.period_type == "2" && !this.state.codeInfo.period_fixed_receive_time) {
Notify.error("请输入周期规则时间")
return
}
/* 编辑状态 */
if (this.state.isState === 2) {
if (this.state.uploading) {
@ -1180,6 +1193,7 @@ export default class combiningAdd extends React.Component {
onChange={(e) => {
this.handleChange(e.target.value, "period_type")
this.handleChange(1, "period_day")
this.handleChange("", "period_fixed_receive_time" )
}}
>
<Radio value={"1"}>不设置</Radio>
@ -1188,24 +1202,40 @@ export default class combiningAdd extends React.Component {
</Radio.Group>
</FormItem>
{this.state.codeInfo.period_type !== "1"?<FormItem labelname="周期规则" prop="period_day" id="period_day">
<Ipt
onChange={(e) => {
if (e && (isNaN(Number(e)) || Number(e) < 0 || !/^[1-9]\d*$/.test(e))) return
this.handleChange(e, "period_day")
}}
onClearItem={(e) => {
this.handleChange('', "period_day")
}}
disabled={this.state.isState === 2}
countShow={false}
value={this.state.codeInfo.period_day}
placeholder={"请输入间隔天数"}
unit="天"
labelWidth={"0px"}
height={"36px"}
width={"520px"}
alignment={"left"}
/>
<div className="warningValue">
<Ipt
onChange={(e) => {
if (e && (isNaN(Number(e)) || Number(e) < 0 || !/^[1-9]\d*$/.test(e))) return
this.handleChange(e, "period_day")
}}
onClearItem={(e) => {
this.handleChange('', "period_day")
}}
disabled={this.state.isState === 2}
countShow={false}
value={this.state.codeInfo.period_day}
placeholder={"请输入间隔天数"}
unit="天"
labelWidth={"0px"}
height={"36px"}
width={"520px"}
alignment={"left"}
/>
<div className="icon-box">
{this.state.codeInfo.period_type == "2" ? <TimePicker
showTime={{
format: "HH:mm:ss",
defaultTime: [moment().format("HH:mm:ss"), "23:59:59"]
}}
disabled={this.state.isState === 2}
value={this.state.codeInfo.period_fixed_receive_time}
onChange={(value) => {
this.handleChange(value, "period_fixed_receive_time")
}}
width="240px"
/> : null}
</div>
</div>
</FormItem>:null}
<FormItem labelname="生效时间段" prop="date_time" id="date_time">
<DateRangePicker

View File

@ -123,13 +123,13 @@ export const Column2 = [
type: "normal",
width: "auto"
},
{
title: "权重",
type: "slot",
name: "index",
prop: "index",
width: "auto"
},
// {
// title: "权重",
// type: "slot",
// name: "index",
// prop: "index",
// width: "auto"
// },
{
title: "操作",
prop: "edit",
@ -180,7 +180,8 @@ export const init = () => {
is_webview: 0,
period_type: '1',
period_day: '',
timer_show: 1
timer_show: 1,
period_fixed_receive_time: ''
},
tempdata: [],
oldProduct: [],

View File

@ -35,7 +35,8 @@ import {
Radio,
RadioGroup,
Select,
Sweetalert
Sweetalert,
TimePicker
} from "zent"
import "./index.less"
import { Column2, codeInfo, init, redPacketsDataFn, reductionFn, rulesInfo } from "./utils.js"
@ -142,6 +143,10 @@ export default class exchangeAdd extends React.Component {
restrict: reqCopy.restrict,
describe: reqCopy.describe,
date_time: [reqCopy.begin_time, reqCopy.end_time],
period_type: String(reqCopy.period_type) || '1',
period_num: reqCopy.period_num || 1,
period_day: reqCopy.period_day || '',
period_fixed_receive_time: reqCopy.period_fixed_receive_time || '',
range: [],
/* 回显计划、批次 */
planSelect: {
@ -460,6 +465,10 @@ export default class exchangeAdd extends React.Component {
receive_email: this.state.reseller.receive_email,
payment_direction: this.state.payment_direction[this.state.payType - 1],
title: this.state.codeInfo.code_name,
period_type: String(this.state.codeInfo.period_type) || '1',
period_num: this.state.codeInfo.period_num || 1,
period_day: this.state.codeInfo.period_day || '',
period_fixed_receive_time: this.state.codeInfo.period_fixed_receive_time || '',
recharge_type: 1,
range: range,
describe: this.state.codeInfo.describe,
@ -488,6 +497,10 @@ export default class exchangeAdd extends React.Component {
describe: this.state.codeInfo.describe,
quantity: this.state.codeInfo.issued,
range: range.join(),
period_type: String(this.state.codeInfo.period_type) || '1',
period_num: this.state.codeInfo.period_num || 1,
period_day: this.state.codeInfo.period_day || '',
period_fixed_receive_time: this.state.codeInfo.period_fixed_receive_time || '',
recharge_type: 1,
title: this.state.codeInfo.code_name,
restrict: this.state.codeInfo.restrict,
@ -580,6 +593,16 @@ export default class exchangeAdd extends React.Component {
return
}
if (this.state.codeInfo.period_type !== '1' && !this.state.codeInfo.period_day) {
Notify.error(`请填写周期间隔天数`)
return
}
if (this.state.codeInfo.period_type == '2' && !this.state.codeInfo.period_fixed_receive_time) {
Notify.error(`请填写周期规则时间`)
return
}
/* 编辑状态 */
if (this.state.isState === 2) {
if (this.state.uploading) {
@ -658,22 +681,22 @@ export default class exchangeAdd extends React.Component {
let selection = this.refs.tempdata.getSelectData()
//
let num = 0
for (let i = 0; i < selection.length; i++) {
// if(selection[i].recharge_type === 1) {
if(selection[i].origin){
if(selection[i].origin.period_type != '1'){
num += Number(selection[i].origin.period_num)
}
} else {
if(selection[i].period_type != '1'){
num += Number(selection[i].period_num)
}
}
// }
}
if(num > Number(this.state.codeInfo.restrict)){
return Notify.error(`绑定数应大于等于周期分期次数之和`)
// let num = 0
// for (let i = 0; i < selection.length; i++) {
// // if(selection[i].recharge_type === 1) {
// if(selection[i].origin){
// if(selection[i].origin.period_type != '1'){
// num += Number(selection[i].origin.period_num)
// }
// } else {
// if(selection[i].period_type != '1'){
// num += Number(selection[i].period_num)
// }
// }
// // }
// }
if(String(this.state.codeInfo.period_type) != '1' && this.state.codeInfo.period_num != Number(this.state.codeInfo.restrict)){
return Notify.error(`兑换码绑定数必须等于周期次数`)
}
if (this.state.uploading) {
@ -1094,6 +1117,83 @@ export default class exchangeAdd extends React.Component {
ref="code_rule"
className="addform"
>
<FormItem labelname="周期到账" prop="period_type" id="period_type">
<Radio.Group
disabled={this.state.isState == 2}
value={this.state.codeInfo.period_type}
onChange={(e) => {
this.handleChange(e.target.value, "period_type")
this.handleChange(1, "period_num")
this.handleChange('', "period_day")
this.handleChange('', "period_fixed_receive_time")
}}
>
<Radio value={"1"}>不设置</Radio>
<Radio value={"2"}>自动发放</Radio>
<Radio value={"3"}>手动领取</Radio>
</Radio.Group>
</FormItem>
{this.state.codeInfo.period_type !== "1" ? (
<FormItem labelname="周期规则" prop="period_num" id="period_num">
<div className="warningValue">
<Ipt
onChange={(e) => {
if (e && (isNaN(Number(e)) || Number(e) < 0 || !/^[1-9]\d*$/.test(e))) return
if (Number(e) > 24) {
Notify.clear()
return Notify.error("分期次数不允许超过24")
}
this.handleChange(e, "period_num")
}}
onClearItem={(e) => {
this.handleChange("", "period_num")
}}
disabled={this.state.isState == 2}
value={this.state.codeInfo.period_num}
countShow={false}
placeholder={"请输入分期次数"}
labelWidth={"0px"}
height={"36px"}
unit="次"
width={"240px"}
alignment={"left"}
/>
-
<div className="icon-box">
<Ipt
onChange={(e) => {
if (e && (isNaN(Number(e)) || Number(e) < 0 || !/^[1-9]\d*$/.test(e))) return
this.handleChange(e, "period_day")
}}
onClearItem={(e) => {
this.handleChange("", "period_day")
}}
disabled={this.state.isState == 2}
countShow={false}
value={this.state.codeInfo.period_day}
placeholder={"请输入间隔天数"}
unit="天"
labelWidth={"0px"}
height={"36px"}
width={"240px"}
alignment={"left"}
/>
</div>
{this.state.codeInfo.period_type == "2" ? <TimePicker
showTime={{
format: "HH:mm:ss",
defaultTime: [moment().format("HH:mm:ss"), "23:59:59"]
}}
disabled={this.state.isState == 2}
value={this.state.codeInfo.period_fixed_receive_time}
onChange={(value) => {
this.handleChange(value, "period_fixed_receive_time")
}}
width="240px"
/> : null}
</div>
</FormItem>
) : null}
<FormItem labelname="生效时间段" prop="date_time" id="date_time">
<DateRangePicker
className="zent-datepicker-plan"

View File

@ -18,7 +18,8 @@ export const codeInfo = {
//基本规则
export const rulesInfo = {
date_time: [{ type: "required", message: "请选择生效时间段" }]
date_time: [{ type: "required", message: "请选择生效时间段" }],
period_num: [{ type: "required", message: "请输入周期规则" }]
}
/* 商品范围列表 */
@ -153,7 +154,11 @@ export const init = () => {
stock: "",
planSelect: "" /* 归属计划 */,
keyBatchSelect: "" /* 归属key */,
restrict: "" /* 绑定数 */
restrict: "" /* 绑定数 */,
period_type: '1', // 周期到账 '1'-不设置 '2'-自动发放 '3'-手动领取
period_num: 1, // 周期规则 分期次数
period_day: '', // 周期规则 间隔天数
period_fixed_receive_time: '',
},
isload: false,
tempdata: [],

View File

@ -140,6 +140,11 @@ export default class add extends React.Component {
}
if (data) {
for(let j=0; j<data.code_batch.length; j++) {
if(data.code_batch[j].recharge_type == 1 && String(data.code_batch[j].period_type) != '1' && data.code_batch[j].period_num != data.code_batch[j].restrict){
return Notify.error(`${data.batch_name}兑换码绑定数必须等于周期次数`)
}
}
temp.push(data)
} else {
return

View File

@ -284,6 +284,11 @@ export default class add extends React.Component {
}
if (data) {
for(let j=0; j<data.code_batch.length; j++) {
if(data.code_batch[j].recharge_type == 1 && String(data.code_batch[j].period_type) != '1' && data.code_batch[j].period_num != data.code_batch[j].restrict){
return Notify.error(`${data.batch_name}兑换码绑定数必须等于周期次数`)
}
}
temp.push(data)
} else {
return

View File

@ -238,6 +238,11 @@ export default class add extends React.Component {
}
if (data) {
for(let j=0; j<data.code_batch.length; j++) {
if(data.code_batch[j].recharge_type == 1 && String(data.code_batch[j].period_type) != '1' && data.code_batch[j].period_num != data.code_batch[j].restrict){
return Notify.error(`${data.batch_name}兑换码绑定数必须等于周期次数`)
}
}
temp.push(data)
} else {
return

View File

@ -1650,8 +1650,8 @@ export default class acclist extends React.Component {
placeholder="请输入数量"
width={120}
maxLength={5}
disabled={rowData.recharge_type == 2 || this.props.isSettlement === 1}
value={this.props.isSettlement === 1 ? 1 : rowData.restrict}
disabled={rowData.recharge_type == 2 || (rowData.period_type == 1 && this.props.isSettlement === 1)}
value={rowData.restrict}
onChange={(e) => {
this.onRestrict(e, rowData, rowIndex)
}}

View File

@ -794,31 +794,10 @@ const UseKeyAddEdit = () => {
//
for (let i = 0; i < editData.length; i++) {
if(editData[i].recharge_type === 1) {
let num = 0
if(editData[i].product && editData[i].product.cash.length){
editData[i].product.cash.forEach(item => {
if(item.period_type !== '1'){
num += Number(item.period_num)
}
})
}
if(editData[i].product && editData[i].product.legal.length){
editData[i].product.legal.forEach(item => {
if(item.period_type !== '1'){
num += Number(item.period_num)
}
})
}
if(editData[i].product && editData[i].product.reduce.length){
editData[i].product.reduce.forEach(item => {
if(item.period_type !== '1'){
num += Number(item.period_num)
}
})
}
if(num > Number(editData[i].restrict)){
if(String(editData[i].period_type) != '1' && Number(editData[i].period_num) != Number(editData[i].restrict)){
falag = false
return Notify.error(`${editData[i].title}绑定数应大于等于周期分期次数之和`)
// ${editData[i].title}
return Notify.error(`兑换码绑定数必须等于周期次数`)
}
}
}
@ -1602,9 +1581,9 @@ const UseKeyAddEdit = () => {
return (
<Input
placeholder="请输入数量"
value={state.isSettlement === 1 ? 1 : rowData.restrict}
value={rowData.restrict}
disabled={
rowData.disabled || rowData.recharge_type == 2 || state.isSettlement === 1
rowData.disabled || rowData.recharge_type == 2 || (rowData.period_type == 1 && state.isSettlement === 1)
}
maxLength={5}
onChange={(e) => {