Commit e8ca0db3 by huaying

Merge branch 'feature/7月-会员积分' into test

# Conflicts:
#	dist/index.html
#	dist/static/js/12.45869a3938fd0464f0bb.js
#	dist/static/js/manifest.77c57a938f914cb2d14c.js.map
#	dist/static/js/manifest.8d32760d92c001c91c1f.js.map
#	dist/static/js/manifest.cdeb591d1beb41b20702.js.map
parents 3c0736aa 4d996a3c
<<<<<<< HEAD
<!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>GIC-集团后台</title><link href=./static/css/main.17ee45b95b290a975c97c07984c109a3.css rel=stylesheet></head><body style="background-color: #f0f2f5;min-width: 1400px;"><div id=app></div><script>(function() { <!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>GIC-集团后台</title><link href=./static/css/main.17ee45b95b290a975c97c07984c109a3.css rel=stylesheet></head><body style="background-color: #f0f2f5;min-width: 1400px;"><div id=app></div><script>(function() {
=======
<!DOCTYPE html><html><head><meta charset=utf-8><link rel="shortcut icon" href=./favicon.ico><title>GIC-集团后台</title><link href=./static/css/main.5a38a66cd9ada6a7f9ec599b9e3fc8fd.css rel=stylesheet></head><body style="background-color: #f0f2f5;min-width: 1400px;"><div id=app></div><script>(function() {
>>>>>>> feature/7-会员积分
var src = '/component/static/import-component.js?timestrap='+ new Date().getTime(); var src = '/component/static/import-component.js?timestrap='+ new Date().getTime();
var host = window.location.host; var host = window.location.host;
host = host.indexOf('localhost') > -1 || host.indexOf('192.168') > -1 ? 'gicdev.demogic.com' : host; host = host.indexOf('localhost') > -1 || host.indexOf('192.168') > -1 ? 'gicdev.demogic.com' : host;
document.write('<script src="//'+ host + src +'"><\/script>') document.write('<script src="//'+ host + src +'"><\/script>')
})()</script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=./static/js/manifest.77c57a938f914cb2d14c.js></script><script type=text/javascript src=./static/js/vendor.45c914c901c445b900a1.js></script><script type=text/javascript src=./static/js/main.3b872e214441b06b39cd.js></script></body></html> <<<<<<< HEAD
\ No newline at end of file })()</script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=./static/js/manifest.77c57a938f914cb2d14c.js></script><script type=text/javascript src=./static/js/vendor.45c914c901c445b900a1.js></script><script type=text/javascript src=./static/js/main.3b872e214441b06b39cd.js></script></body></html>
=======
})()</script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=./static/js/manifest.8d32760d92c001c91c1f.js></script><script type=text/javascript src=./static/js/vendor.45c914c901c445b900a1.js></script><script type=text/javascript src=./static/js/main.3b872e214441b06b39cd.js></script></body></html>
>>>>>>> feature/7月-会员积分
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
{"version":3,"sources":["webpack:///webpack/bootstrap f7f187d30d1879ee197e"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","46","exports","module","l","e","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","script","createElement","type","charset","async","timeout","nc","setAttribute","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","setTimeout","onScriptComplete","onerror","onload","clearTimeout","chunk","Error","undefined","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"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","file":"static/js/manifest.77c57a938f914cb2d14c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t46: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"88da6cef2a2da8c0ac06\",\"1\":\"9cecaa6c9806ca9799db\",\"2\":\"bd54b86536f9ccb82ea1\",\"3\":\"352b3a449f18f3dc371f\",\"4\":\"b1dfb176022b0b03a0de\",\"5\":\"d0c4308898914d24b54c\",\"6\":\"cb35c9668cf721acc599\",\"7\":\"bbd5e921a2b24764890b\",\"8\":\"b88326ad14d012ad7898\",\"9\":\"9e3105c825be19fecbdf\",\"10\":\"e595220b8f908da126fb\",\"11\":\"dc5c1070f7d02ace74dd\",\"12\":\"45869a3938fd0464f0bb\",\"13\":\"27b91aa0ae95700cfa84\",\"14\":\"bf21f99ec45bc38c3caa\",\"15\":\"f62c6f37eb70267c9d80\",\"16\":\"54e18151bb7c6fa78089\",\"17\":\"214b2699697c8d262547\",\"18\":\"f7aa00758a5a88cdf277\",\"19\":\"76c2fa6beb5031af3234\",\"20\":\"ef938e3378ae39d9aa78\",\"21\":\"781564129abd9296748d\",\"22\":\"cbb007cf5f8436efd038\",\"23\":\"fae356d1c7dfeb020e7f\",\"24\":\"e6c6d1a06ae42536d947\",\"25\":\"3b9009a049ef9ad8f5c2\",\"26\":\"b43ebacd6ce40990eb1c\",\"27\":\"b2b2594bf42f908f17d1\",\"28\":\"d30cefac1b83e661b9e8\",\"29\":\"8f3f018c9b4e85492548\",\"30\":\"ae878be6f1930d0ef3e6\",\"31\":\"ec38906347011d5ee323\",\"32\":\"791aa646b04c6e599ab1\",\"33\":\"179e5d3ec4a8cd7eb837\",\"34\":\"fda28a1c54d0d2e301fa\",\"35\":\"eee174d768d66e948153\",\"36\":\"220030282f1ddd80d16a\",\"37\":\"fa399aea4c5a144ef8fb\",\"38\":\"c87321412b595001a395\",\"39\":\"bae0c8006d56c96f1965\",\"40\":\"6e67f0e5fdc095d44edd\",\"41\":\"d6cef65dd8fa6e92f28d\",\"42\":\"0f52d0981564c135a4fe\",\"43\":\"c15d634a3b283251085f\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f7f187d30d1879ee197e"],"sourceRoot":""} <<<<<<<< HEAD:dist/static/js/manifest.77c57a938f914cb2d14c.js.map
\ No newline at end of file {"version":3,"sources":["webpack:///webpack/bootstrap f7f187d30d1879ee197e"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","46","exports","module","l","e","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","script","createElement","type","charset","async","timeout","nc","setAttribute","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","setTimeout","onScriptComplete","onerror","onload","clearTimeout","chunk","Error","undefined","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"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","file":"static/js/manifest.77c57a938f914cb2d14c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t46: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"88da6cef2a2da8c0ac06\",\"1\":\"9cecaa6c9806ca9799db\",\"2\":\"bd54b86536f9ccb82ea1\",\"3\":\"352b3a449f18f3dc371f\",\"4\":\"b1dfb176022b0b03a0de\",\"5\":\"d0c4308898914d24b54c\",\"6\":\"cb35c9668cf721acc599\",\"7\":\"bbd5e921a2b24764890b\",\"8\":\"b88326ad14d012ad7898\",\"9\":\"9e3105c825be19fecbdf\",\"10\":\"e595220b8f908da126fb\",\"11\":\"dc5c1070f7d02ace74dd\",\"12\":\"45869a3938fd0464f0bb\",\"13\":\"27b91aa0ae95700cfa84\",\"14\":\"bf21f99ec45bc38c3caa\",\"15\":\"f62c6f37eb70267c9d80\",\"16\":\"54e18151bb7c6fa78089\",\"17\":\"214b2699697c8d262547\",\"18\":\"f7aa00758a5a88cdf277\",\"19\":\"76c2fa6beb5031af3234\",\"20\":\"ef938e3378ae39d9aa78\",\"21\":\"781564129abd9296748d\",\"22\":\"cbb007cf5f8436efd038\",\"23\":\"fae356d1c7dfeb020e7f\",\"24\":\"e6c6d1a06ae42536d947\",\"25\":\"3b9009a049ef9ad8f5c2\",\"26\":\"b43ebacd6ce40990eb1c\",\"27\":\"b2b2594bf42f908f17d1\",\"28\":\"d30cefac1b83e661b9e8\",\"29\":\"8f3f018c9b4e85492548\",\"30\":\"ae878be6f1930d0ef3e6\",\"31\":\"ec38906347011d5ee323\",\"32\":\"791aa646b04c6e599ab1\",\"33\":\"179e5d3ec4a8cd7eb837\",\"34\":\"fda28a1c54d0d2e301fa\",\"35\":\"eee174d768d66e948153\",\"36\":\"220030282f1ddd80d16a\",\"37\":\"fa399aea4c5a144ef8fb\",\"38\":\"c87321412b595001a395\",\"39\":\"bae0c8006d56c96f1965\",\"40\":\"6e67f0e5fdc095d44edd\",\"41\":\"d6cef65dd8fa6e92f28d\",\"42\":\"0f52d0981564c135a4fe\",\"43\":\"c15d634a3b283251085f\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f7f187d30d1879ee197e"],"sourceRoot":""}
========
{"version":3,"sources":["webpack:///webpack/bootstrap 6fc2f45f3f34ef7e1a0d"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","46","exports","module","l","e","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","script","createElement","type","charset","async","timeout","nc","setAttribute","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","setTimeout","onScriptComplete","onerror","onload","clearTimeout","chunk","Error","undefined","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"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","file":"static/js/manifest.8d32760d92c001c91c1f.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t46: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"88da6cef2a2da8c0ac06\",\"1\":\"9cecaa6c9806ca9799db\",\"2\":\"bd54b86536f9ccb82ea1\",\"3\":\"352b3a449f18f3dc371f\",\"4\":\"b1dfb176022b0b03a0de\",\"5\":\"18bfa30112c7d8ed4571\",\"6\":\"cb35c9668cf721acc599\",\"7\":\"bbd5e921a2b24764890b\",\"8\":\"b88326ad14d012ad7898\",\"9\":\"9e3105c825be19fecbdf\",\"10\":\"e595220b8f908da126fb\",\"11\":\"9309068d60f1a72bf3f4\",\"12\":\"4fbf1a843acc284481c5\",\"13\":\"27b91aa0ae95700cfa84\",\"14\":\"bf21f99ec45bc38c3caa\",\"15\":\"f62c6f37eb70267c9d80\",\"16\":\"54e18151bb7c6fa78089\",\"17\":\"214b2699697c8d262547\",\"18\":\"f7aa00758a5a88cdf277\",\"19\":\"76c2fa6beb5031af3234\",\"20\":\"ef938e3378ae39d9aa78\",\"21\":\"781564129abd9296748d\",\"22\":\"cbb007cf5f8436efd038\",\"23\":\"fae356d1c7dfeb020e7f\",\"24\":\"e6c6d1a06ae42536d947\",\"25\":\"3b9009a049ef9ad8f5c2\",\"26\":\"b43ebacd6ce40990eb1c\",\"27\":\"b2b2594bf42f908f17d1\",\"28\":\"d30cefac1b83e661b9e8\",\"29\":\"8f3f018c9b4e85492548\",\"30\":\"ae878be6f1930d0ef3e6\",\"31\":\"ec38906347011d5ee323\",\"32\":\"791aa646b04c6e599ab1\",\"33\":\"179e5d3ec4a8cd7eb837\",\"34\":\"fda28a1c54d0d2e301fa\",\"35\":\"eee174d768d66e948153\",\"36\":\"220030282f1ddd80d16a\",\"37\":\"fa399aea4c5a144ef8fb\",\"38\":\"c87321412b595001a395\",\"39\":\"bae0c8006d56c96f1965\",\"40\":\"6e67f0e5fdc095d44edd\",\"41\":\"d6cef65dd8fa6e92f28d\",\"42\":\"0f52d0981564c135a4fe\",\"43\":\"c15d634a3b283251085f\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6fc2f45f3f34ef7e1a0d"],"sourceRoot":""}
>>>>>>>> feature/7月-会员积分:dist/static/js/manifest.8d32760d92c001c91c1f.js.map
!function(e){var a=window.webpackJsonp;window.webpackJsonp=function(c,n,r){for(var t,b,o,i=0,u=[];i<c.length;i++)b=c[i],f[b]&&u.push(f[b][0]),f[b]=0;for(t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);for(a&&a(c,n,r);u.length;)u.shift()();if(r)for(i=0;i<r.length;i++)o=d(d.s=r[i]);return o};var c={},f={46:0};function d(a){if(c[a])return c[a].exports;var f=c[a]={i:a,l:!1,exports:{}};return e[a].call(f.exports,f,f.exports,d),f.l=!0,f.exports}d.e=function(e){var a=f[e];if(0===a)return new Promise(function(e){e()});if(a)return a[2];var c=new Promise(function(c,d){a=f[e]=[c,d]});a[2]=c;var n=document.getElementsByTagName("head")[0],r=document.createElement("script");r.type="text/javascript",r.charset="utf-8",r.async=!0,r.timeout=12e4,d.nc&&r.setAttribute("nonce",d.nc),r.src=d.p+"static/js/"+e+"."+{0:"88da6cef2a2da8c0ac06",1:"9cecaa6c9806ca9799db",2:"bd54b86536f9ccb82ea1",3:"352b3a449f18f3dc371f",4:"b1dfb176022b0b03a0de",5:"18bfa30112c7d8ed4571",6:"cb35c9668cf721acc599",7:"bbd5e921a2b24764890b",8:"b88326ad14d012ad7898",9:"9e3105c825be19fecbdf",10:"e595220b8f908da126fb",11:"9309068d60f1a72bf3f4",12:"4fbf1a843acc284481c5",13:"27b91aa0ae95700cfa84",14:"bf21f99ec45bc38c3caa",15:"f62c6f37eb70267c9d80",16:"54e18151bb7c6fa78089",17:"214b2699697c8d262547",18:"f7aa00758a5a88cdf277",19:"76c2fa6beb5031af3234",20:"ef938e3378ae39d9aa78",21:"781564129abd9296748d",22:"cbb007cf5f8436efd038",23:"fae356d1c7dfeb020e7f",24:"e6c6d1a06ae42536d947",25:"3b9009a049ef9ad8f5c2",26:"b43ebacd6ce40990eb1c",27:"b2b2594bf42f908f17d1",28:"d30cefac1b83e661b9e8",29:"8f3f018c9b4e85492548",30:"ae878be6f1930d0ef3e6",31:"ec38906347011d5ee323",32:"791aa646b04c6e599ab1",33:"179e5d3ec4a8cd7eb837",34:"fda28a1c54d0d2e301fa",35:"eee174d768d66e948153",36:"220030282f1ddd80d16a",37:"fa399aea4c5a144ef8fb",38:"c87321412b595001a395",39:"bae0c8006d56c96f1965",40:"6e67f0e5fdc095d44edd",41:"d6cef65dd8fa6e92f28d",42:"0f52d0981564c135a4fe",43:"c15d634a3b283251085f"}[e]+".js";var t=setTimeout(b,12e4);function b(){r.onerror=r.onload=null,clearTimeout(t);var a=f[e];0!==a&&(a&&a[1](new Error("Loading chunk "+e+" failed.")),f[e]=void 0)}return r.onerror=r.onload=b,n.appendChild(r),c},d.m=e,d.c=c,d.d=function(e,a,c){d.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:c})},d.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(a,"a",a),a},d.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},d.p="./",d.oe=function(e){throw console.error(e),e}}([]);
//# sourceMappingURL=manifest.8d32760d92c001c91c1f.js.map
\ No newline at end of file
<<<<<<<< HEAD:dist/static/js/manifest.77c57a938f914cb2d14c.js.map
{"version":3,"sources":["webpack:///webpack/bootstrap f7f187d30d1879ee197e"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","46","exports","module","l","e","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","script","createElement","type","charset","async","timeout","nc","setAttribute","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","setTimeout","onScriptComplete","onerror","onload","clearTimeout","chunk","Error","undefined","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"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","file":"static/js/manifest.77c57a938f914cb2d14c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t46: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"88da6cef2a2da8c0ac06\",\"1\":\"9cecaa6c9806ca9799db\",\"2\":\"bd54b86536f9ccb82ea1\",\"3\":\"352b3a449f18f3dc371f\",\"4\":\"b1dfb176022b0b03a0de\",\"5\":\"d0c4308898914d24b54c\",\"6\":\"cb35c9668cf721acc599\",\"7\":\"bbd5e921a2b24764890b\",\"8\":\"b88326ad14d012ad7898\",\"9\":\"9e3105c825be19fecbdf\",\"10\":\"e595220b8f908da126fb\",\"11\":\"dc5c1070f7d02ace74dd\",\"12\":\"45869a3938fd0464f0bb\",\"13\":\"27b91aa0ae95700cfa84\",\"14\":\"bf21f99ec45bc38c3caa\",\"15\":\"f62c6f37eb70267c9d80\",\"16\":\"54e18151bb7c6fa78089\",\"17\":\"214b2699697c8d262547\",\"18\":\"f7aa00758a5a88cdf277\",\"19\":\"76c2fa6beb5031af3234\",\"20\":\"ef938e3378ae39d9aa78\",\"21\":\"781564129abd9296748d\",\"22\":\"cbb007cf5f8436efd038\",\"23\":\"fae356d1c7dfeb020e7f\",\"24\":\"e6c6d1a06ae42536d947\",\"25\":\"3b9009a049ef9ad8f5c2\",\"26\":\"b43ebacd6ce40990eb1c\",\"27\":\"b2b2594bf42f908f17d1\",\"28\":\"d30cefac1b83e661b9e8\",\"29\":\"8f3f018c9b4e85492548\",\"30\":\"ae878be6f1930d0ef3e6\",\"31\":\"ec38906347011d5ee323\",\"32\":\"791aa646b04c6e599ab1\",\"33\":\"179e5d3ec4a8cd7eb837\",\"34\":\"fda28a1c54d0d2e301fa\",\"35\":\"eee174d768d66e948153\",\"36\":\"220030282f1ddd80d16a\",\"37\":\"fa399aea4c5a144ef8fb\",\"38\":\"c87321412b595001a395\",\"39\":\"bae0c8006d56c96f1965\",\"40\":\"6e67f0e5fdc095d44edd\",\"41\":\"d6cef65dd8fa6e92f28d\",\"42\":\"0f52d0981564c135a4fe\",\"43\":\"c15d634a3b283251085f\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f7f187d30d1879ee197e"],"sourceRoot":""}
========
{"version":3,"sources":["webpack:///webpack/bootstrap 6fc2f45f3f34ef7e1a0d"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","46","exports","module","l","e","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","script","createElement","type","charset","async","timeout","nc","setAttribute","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","setTimeout","onScriptComplete","onerror","onload","clearTimeout","chunk","Error","undefined","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error"],"mappings":"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","file":"static/js/manifest.8d32760d92c001c91c1f.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t46: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"0\":\"88da6cef2a2da8c0ac06\",\"1\":\"9cecaa6c9806ca9799db\",\"2\":\"bd54b86536f9ccb82ea1\",\"3\":\"352b3a449f18f3dc371f\",\"4\":\"b1dfb176022b0b03a0de\",\"5\":\"18bfa30112c7d8ed4571\",\"6\":\"cb35c9668cf721acc599\",\"7\":\"bbd5e921a2b24764890b\",\"8\":\"b88326ad14d012ad7898\",\"9\":\"9e3105c825be19fecbdf\",\"10\":\"e595220b8f908da126fb\",\"11\":\"9309068d60f1a72bf3f4\",\"12\":\"4fbf1a843acc284481c5\",\"13\":\"27b91aa0ae95700cfa84\",\"14\":\"bf21f99ec45bc38c3caa\",\"15\":\"f62c6f37eb70267c9d80\",\"16\":\"54e18151bb7c6fa78089\",\"17\":\"214b2699697c8d262547\",\"18\":\"f7aa00758a5a88cdf277\",\"19\":\"76c2fa6beb5031af3234\",\"20\":\"ef938e3378ae39d9aa78\",\"21\":\"781564129abd9296748d\",\"22\":\"cbb007cf5f8436efd038\",\"23\":\"fae356d1c7dfeb020e7f\",\"24\":\"e6c6d1a06ae42536d947\",\"25\":\"3b9009a049ef9ad8f5c2\",\"26\":\"b43ebacd6ce40990eb1c\",\"27\":\"b2b2594bf42f908f17d1\",\"28\":\"d30cefac1b83e661b9e8\",\"29\":\"8f3f018c9b4e85492548\",\"30\":\"ae878be6f1930d0ef3e6\",\"31\":\"ec38906347011d5ee323\",\"32\":\"791aa646b04c6e599ab1\",\"33\":\"179e5d3ec4a8cd7eb837\",\"34\":\"fda28a1c54d0d2e301fa\",\"35\":\"eee174d768d66e948153\",\"36\":\"220030282f1ddd80d16a\",\"37\":\"fa399aea4c5a144ef8fb\",\"38\":\"c87321412b595001a395\",\"39\":\"bae0c8006d56c96f1965\",\"40\":\"6e67f0e5fdc095d44edd\",\"41\":\"d6cef65dd8fa6e92f28d\",\"42\":\"0f52d0981564c135a4fe\",\"43\":\"c15d634a3b283251085f\"}[chunkId] + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6fc2f45f3f34ef7e1a0d"],"sourceRoot":""}
>>>>>>>> feature/7月-会员积分:dist/static/js/manifest.8d32760d92c001c91c1f.js.map
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<div> <div>
<el-radio v-model="ruleForm.integralGetStatus" label="0" @change="radioEvent">不获取积分</el-radio> <el-radio v-model="ruleForm.integralGetStatus" label="0" @change="radioEvent">不获取积分</el-radio>
</div> </div>
<div class="margin-20"> <div class="margin-20 integralGet">
<el-radio v-model="ruleForm.integralGetStatus" label="1">每消费</el-radio> <el-radio v-model="ruleForm.integralGetStatus" label="1">每消费</el-radio>
<!-- <el-input v-model="ruleForm.integralGet.fee" @blur="formatInputFee($event)"></el-input> --> <!-- <el-input v-model="ruleForm.integralGet.fee" @blur="formatInputFee($event)"></el-input> -->
<el-input-number v-model="ruleForm.integralGet.fee" placeholder="请输入" :precision="1" :controls="false" :max="10000.0" :min="0.1"></el-input-number> <el-input-number v-model="ruleForm.integralGet.fee" placeholder="请输入" :precision="1" :controls="false" :max="10000.0" :min="0.1"></el-input-number>
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<div class="form-child margin-20" v-if="ruleForm.integralGetStatus == 1"> <div class="form-child margin-20" v-if="ruleForm.integralGetStatus == 1">
<el-form-item label="折扣控制:" prop="" label-width="100px"> <el-form-item label="折扣控制:" prop="" label-width="100px">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="ruleForm.integralGetDiscountControl" label="1" @change="radioEvent3">所有折扣商品都适用</el-radio> <el-radio class="integralGetDiscountControlLower1" v-model="ruleForm.integralGetDiscountControl" label="1" @change="radioEvent3">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="ruleForm.integralGetDiscountControl" label="2">折扣</el-radio> <el-radio v-model="ruleForm.integralGetDiscountControl" label="2">折扣</el-radio>
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<span style="font-size: 12px;color: #828282;line-height: 1;padding-left: 10px;">折扣范围1-10,填写8.8,则表示“打8.8折”,也即商品原价*8.8/10=商品折后价</span> <span style="font-size: 12px;color: #828282;line-height: 1;padding-left: 10px;">折扣范围1-10,填写8.8,则表示“打8.8折”,也即商品原价*8.8/10=商品折后价</span>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="积分冻结期:" prop="name" label-width="100px" class="padding-bottom-20 margin-20"> <el-form-item label="积分冻结期:" prop="integralGetFreezeDays" label-width="100px" class="padding-bottom-20 margin-20 integralGetFreezeDays">
<label>自获取之日起</label> <label>自获取之日起</label>
<el-input v-model="ruleForm.integralGetFreezeDays" placeholder="请输入" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.integralGetFreezeDays" placeholder="请输入" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
<el-radio v-model="ruleForm.integralUseStatus" label="0" @change="radioEvent1">不支持抵现</el-radio> <el-radio v-model="ruleForm.integralUseStatus" label="0" @change="radioEvent1">不支持抵现</el-radio>
</div> </div>
<div class="margin-20"> <div class="margin-20">
<el-radio v-model="ruleForm.integralUseStatus" label="1">每使用</el-radio> <el-radio class="integralUse" v-model="ruleForm.integralUseStatus" label="1">每使用</el-radio>
<!-- <el-input v-model="ruleForm.integralUse.integral" @keyup.native="formatInput($event)"></el-input> --> <!-- <el-input v-model="ruleForm.integralUse.integral" @keyup.native="formatInput($event)"></el-input> -->
<el-input-number v-model="ruleForm.integralUse.integral" placeholder="请输入" step-strictly :controls="false"></el-input-number> <el-input-number v-model="ruleForm.integralUse.integral" placeholder="请输入" step-strictly :controls="false"></el-input-number>
<label>积分,抵 </label> <label>积分,抵 </label>
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
<el-radio v-model="ruleForm.integralUseDiscountControl" label="1" @change="radioEvent4">所有折扣商品都适用</el-radio> <el-radio v-model="ruleForm.integralUseDiscountControl" label="1" @change="radioEvent4">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="ruleForm.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="integralUseDiscountControlLower1" v-model="ruleForm.integralUseDiscountControl" label="2">折扣</el-radio>
<!-- <el-input v-model="ruleForm.integralUseDiscountControlLower" @change="formatInputChange($event)"></el-input> --> <!-- <el-input v-model="ruleForm.integralUseDiscountControlLower" @change="formatInputChange($event)"></el-input> -->
<el-input-number v-model="ruleForm.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" ></el-input-number> <el-input-number v-model="ruleForm.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" ></el-input-number>
<label></label> <label></label>
...@@ -72,13 +72,13 @@ ...@@ -72,13 +72,13 @@
<span style="font-size: 12px;color: #828282;line-height: 1;padding-left: 10px;">折扣范围1-10,填写8.8,则表示“打8.8折”,也即商品原价*8.8/10=商品折后价</span> <span style="font-size: 12px;color: #828282;line-height: 1;padding-left: 10px;">折扣范围1-10,填写8.8,则表示“打8.8折”,也即商品原价*8.8/10=商品折后价</span>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="比例限制:" prop="name" class="padding-bottom-20 margin-20"> <el-form-item label="比例限制:" prop="name" class="padding-bottom-20 margin-20 useProportionalRestriction">
<label>最多可抵用商品金额的 </label> <label>最多可抵用商品金额的 </label>
<el-input placeholder="请输入" v-model="ruleForm.useProportionalRestriction" @keyup.native="formatInput($event)"></el-input>% <el-input placeholder="请输入" v-model="ruleForm.useProportionalRestriction" @keyup.native="formatInput($event)"></el-input>%
</el-form-item> </el-form-item>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="积分成本:" required> <el-form-item label="积分成本:" required class="integralCost">
<label>每使用</label> <label>每使用</label>
<el-input-number v-model="ruleForm.integralCost.integral" placeholder="请输入" step-strictly :controls="false"></el-input-number> <el-input-number v-model="ruleForm.integralCost.integral" placeholder="请输入" step-strictly :controls="false"></el-input-number>
<!-- <el-input v-model="ruleForm.integralCost.integral" @keyup.native="formatInput($event)"></el-input> --> <!-- <el-input v-model="ruleForm.integralCost.integral" @keyup.native="formatInput($event)"></el-input> -->
...@@ -88,17 +88,72 @@ ...@@ -88,17 +88,72 @@
<label></label> <label></label>
</el-form-item> </el-form-item>
<dm-sub-title type="fill" text="积分有效期" style="margin-bottom: 20px; margin-top:40px;"/> <dm-sub-title type="fill" text="积分有效期" style="margin-bottom: 20px; margin-top:40px;"/>
<el-form-item label="有效期:" prop="effectiveTime" class="padding-0"> <el-form-item label="有效期:" prop="integralExpireType" class="padding-0 yearY" >
<label>自获取之日起</label> <el-tooltip placement="right" effect="light">
<el-input v-model="ruleForm.effectiveTime" placeholder="请输入" @keyup.native="formatInput($event)"></el-input><label></label> <span style="font-size: 12px;color: #828282;line-height: 1;padding-left: 10px;">适用于所有方式获取的积分</span> <div slot="content" style="line-height:20px">
<p style="color:#595959 font-size:14px;font-weight:600">规则说明:</p>
<p style="color:#e6a23c">
仅GIC计算积分时,配置的积分有效期才会生效,<br/>
ERP计算积分时,此配置项不生效;
</p>
<ul>
<li>1、永久有效:客户获取的积分永久有效,系统不会清零;</li>
<li>2、按年失效:在第X年的X月X日失效:例:设置第二年的12月1日失效,则2021年获取的所有积分在2022年12月1日失效;</li>
<li>3、按月失效:在第X个月的X日失效:例:设置第二月的1日失效,则3月获取的所有积分在4月1日失效;</li>
<li>4、按天失效:每天获取的所有积分在获取之日起365天后失效:例:设置365天,则2022年12月1号获取的积分在2023年12月1号失效;</li>
<li>5、修改积分有效期后,已经获取的积分有效期不变,后续获取的积分按照修改后的积分有效期生效;</li>
</ul>
</div>
<i class="iconfont icon-QuestionCircleOutlined" style="font-size:12px;color:#606266;"></i>
</el-tooltip>
<span style="font-size: 12px;color: #909399;line-height: 1;padding-left: 5px;">适用于所有方式获取的积分</span>
<div class="radio-cell mb20">
<el-radio v-model="ruleForm.integralExpireType" label="1" @change="radioExpireType1">永久有效</el-radio>
</div>
<div class="radio-cell mb20">
<el-radio v-model="ruleForm.integralExpireType" label="2" @change="radioExpireType1"><label>按年失效:</label></el-radio>
<label>每年获取的所有积分,在</label>
<el-select v-model="yearY" placeholder="请选择" style="width:120px;margin:0 10px;">
<el-option v-for="n in yearList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="yearM" placeholder="请选择" style="width:120px;margin:0 10px;">
<el-option v-for="n in 12" :key="n" :label="n" :value="n"></el-option>
</el-select>
<label></label>
<el-select v-model="yearD" placeholder="请选择" style="width:120px;margin:0 10px;">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<div class="radio-cell mb20">
<el-radio v-model="ruleForm.integralExpireType" label="3" @change="radioExpireType1"><label>按月失效:</label></el-radio>
<label>每月获取的所有积分,在</label>
<el-select v-model="mouthM" placeholder="请选择" style="width:120px;margin:0 10px;">
<el-option v-for="n in mouthList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="mouthD" placeholder="请选择" style="width:120px;margin:0 10px;">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<div class="radio-cell">
<el-radio v-model="ruleForm.integralExpireType" label="0" @change="radioExpireType1"><label>按天失效:</label></el-radio>
<label>每天获取的所有积分,在获取之日起</label>
<el-input placeholder="请输入" v-model="ruleForm.effectiveTime" @keyup.native="formatInput($event)"></el-input>
<label>天后失效</label>
<span style="font-size: 12px;color: #909399;line-height: 1;padding-left: 10px;">建议不超过3年(1095天)</span>
</div>
</el-form-item>
<dm-sub-title type="fill" text="积分说明" style="margin-bottom: 20px; margin-top:40px;"/>
<p style="font-size:12px; color:#606266">积分说明展示在会员小程序-积分商城-积分明细页</p>
<el-form-item label="" label-width="0" prop="desc" class="margin-20">
<div class="tinymce-wrap">
<editor id="tinymce" v-model="ruleForm.integralScript" :init="init"></editor>
</div>
<!-- <div v-html='tinymceHtml'></div> -->
</el-form-item> </el-form-item>
<dm-sub-title type="fill" text="积分说明" style="margin-bottom: 20px; margin-top:40px;"/>
<el-form-item label="" label-width="0" prop="desc" class="margin-20">
<div class="tinymce-wrap">
<editor id="tinymce" v-model="ruleForm.integralScript" :init="init"></editor>
</div>
<!-- <div v-html='tinymceHtml'></div> -->
</el-form-item>
</el-form> </el-form>
</div> </div>
<div class="bottom"> <div class="bottom">
...@@ -109,7 +164,7 @@ ...@@ -109,7 +164,7 @@
<script type="text/javascript"> <script type="text/javascript">
import { postRequest, postForm } from '@/api/api'; import { postRequest, postForm } from '@/api/api';
import { log } from '@/utils/index.js'; import { log } from '@/utils/index.js';
import errMsg from '@/common/js/error';
import strLength from '@/common/js/strlen'; import strLength from '@/common/js/strlen';
import tinymce from 'tinymce/tinymce'; import tinymce from 'tinymce/tinymce';
import 'tinymce/themes/modern/theme'; import 'tinymce/themes/modern/theme';
...@@ -123,6 +178,7 @@ import 'tinymce/plugins/contextmenu'; ...@@ -123,6 +178,7 @@ import 'tinymce/plugins/contextmenu';
import 'tinymce/plugins/wordcount'; import 'tinymce/plugins/wordcount';
import 'tinymce/plugins/colorpicker'; import 'tinymce/plugins/colorpicker';
import 'tinymce/plugins/textcolor'; import 'tinymce/plugins/textcolor';
import { scrollToError } from '@/utils/validate';
export default { export default {
name: 'pointSystem', name: 'pointSystem',
props: { props: {
...@@ -131,7 +187,41 @@ export default { ...@@ -131,7 +187,41 @@ export default {
contactBool: Boolean contactBool: Boolean
}, },
data() { data() {
// 天数
const dayList = ()=> {
let arr = []
for(let i = 1; i < 28; i++){
arr.push({key: i,value: i})
}
arr.push({key: 0, value: '月末'})
return arr;
}
// 月数
const mouthList = ()=> {
let arr = []
for(let i = 2; i < 37; i++){
arr.push({key: i,value: `第${i}个月`})
}
return arr;
}
// 年数
const yearList = ()=> {
let arr = []
for(let i = 2; i < 5; i++){
arr.push({key: i,value: `第${i}年`})
}
return arr;
}
return { return {
scrollToError,
dayList: dayList(),
mouthList: mouthList(),
mouthM: '', //按月失效 月
mouthD: '', //按月失效 月
yearList: yearList(),
yearY: '', //按年失效 年
yearM: '', //按年失效 月
yearD: '', //按年失效 日
repProjectName: 'gic-clique', repProjectName: 'gic-clique',
// form // form
...@@ -157,8 +247,8 @@ export default { ...@@ -157,8 +247,8 @@ export default {
integralUse: { fee: undefined, integral: undefined }, //积分使用 integralUse: { fee: undefined, integral: undefined }, //积分使用
integralGetStrategy: '1', integralGetStrategy: '1',
integralScript: '', //说明 integralScript: '', //说明
integralGetStatus: '1', //积分获得开启(0:否,1:是) integralGetStatus: '0', //积分获得开启(0:否,1:是)
integralUseStatus: '1', //积分使用开启(0:否,1:是) integralUseStatus: '0', //积分使用开启(0:否,1:是)
effectiveTime: '', //积分有效期 effectiveTime: '', //积分有效期
integralGetDiscountControl: '2', integralGetDiscountControl: '2',
integralGetDiscountControlUpper: undefined, // 折扣控制 折扣范围 下限 integralGetDiscountControlUpper: undefined, // 折扣控制 折扣范围 下限
...@@ -168,7 +258,9 @@ export default { ...@@ -168,7 +258,9 @@ export default {
integralUseDiscountControlUpper: undefined, integralUseDiscountControlUpper: undefined,
integralUseDiscountControlLower: undefined, integralUseDiscountControlLower: undefined,
useProportionalRestriction: '90', //抵现比例限制 useProportionalRestriction: '90', //抵现比例限制
integralCost: { fee: undefined, integral: undefined } //积分成本 integralCost: { fee: undefined, integral: undefined }, //积分成本
integralExpireType: '', //积分有效期类型 0 未默认滚动到期 1永久 2 按年失效 3按月失效
integralExpireRule: '', //积分有效期规则 年 x(年),x(月),x(日,为0标识月末) 月,x(月),x(日,为0标识月末)
}, },
rules: { rules: {
integralGetStatus: [ integralGetStatus: [
...@@ -177,8 +269,8 @@ export default { ...@@ -177,8 +269,8 @@ export default {
integralUseStatus: [ integralUseStatus: [
{ required: true, message: '请选择抵现规则', trigger: 'blur' }, { required: true, message: '请选择抵现规则', trigger: 'blur' },
], ],
effectiveTime: [ integralExpireType: [
{ required: true, message: '请填写有效期', trigger: 'blur' }, { required: true, message: '请选择积分有效期', trigger: 'blur' },
], ],
// strategyName: [ // strategyName: [
// { required: true, message: '请填写策略名称', trigger: 'blur' }, // { required: true, message: '请填写策略名称', trigger: 'blur' },
...@@ -219,6 +311,7 @@ export default { ...@@ -219,6 +311,7 @@ export default {
}, },
created() { created() {
// this.selectReplayStyle() // this.selectReplayStyle()
this.getPointInfos();
}, },
methods: { methods: {
radioEvent() { radioEvent() {
...@@ -237,6 +330,31 @@ export default { ...@@ -237,6 +330,31 @@ export default {
this.ruleForm.integralUseDiscountControlLower = undefined; this.ruleForm.integralUseDiscountControlLower = undefined;
this.ruleForm.integralUseDiscountControlUpper =undefined; this.ruleForm.integralUseDiscountControlUpper =undefined;
}, },
radioExpireType1(e) {
if(e==0){
this.yearY='';
this.yearM='';
this.yearD='';
this.mouthM='';
this.mouthD='';
}else if(e==1) {
this.yearY='';
this.yearM='';
this.yearD='';
this.mouthM='';
this.mouthD='';
this.ruleForm.effectiveTime = undefined;
}else if (e==2) {
this.mouthM='';
this.mouthD='';
this.ruleForm.effectiveTime = undefined;
} else if (e == 3) {
this.yearY='';
this.yearM='';
this.yearD='';
this.ruleForm.effectiveTime = undefined;
}
},
// 保存 // 保存
submitForm(formName) { submitForm(formName) {
let that = this; let that = this;
...@@ -249,23 +367,27 @@ export default { ...@@ -249,23 +367,27 @@ export default {
// 非空验证 // 非空验证
let flag = !data.integralGet.fee || !data.integralGet.integral; let flag = !data.integralGet.fee || !data.integralGet.integral;
if (data.integralGetStatus == 1 && flag) { if (data.integralGetStatus == 1 && flag) {
this.scrollToError(this, 'integralGet');
that.$message.error('请填写积分获取规则'); that.$message.error('请填写积分获取规则');
return; return;
} }
if (data.integralGetStatus == 1) { if (data.integralGetStatus == 1) {
if (!Number(data.integralGet.fee)) { if (!Number(data.integralGet.fee)) {
this.scrollToError(this, 'integralGet');
that.$message.error('积分获取规则中的消费金额不能为0'); that.$message.error('积分获取规则中的消费金额不能为0');
return; return;
} }
if (!Number(data.integralGet.integral)) { if (!Number(data.integralGet.integral)) {
this.scrollToError(this, 'integralGet');
that.$message.error('积分获取规则中的获取积分不能为0'); that.$message.error('积分获取规则中的获取积分不能为0');
return; return;
} }
} }
// log(String(data.integralGetFreezeDays)); // log(String(data.integralGetFreezeDays));
if (String(data.integralGetFreezeDays) == '') { if (data.integralGetStatus == 1 && String(data.integralGetFreezeDays) == '') {
this.scrollToError(this, 'integralGetFreezeDays');
// 积分冻结期 // 积分冻结期
that.$message.error({ that.$message.error({
duration: 1000, duration: 1000,
...@@ -274,25 +396,49 @@ export default { ...@@ -274,25 +396,49 @@ export default {
return; return;
} }
if (data.effectiveTime == '') { if(data.integralExpireType == ''){ // 积分有效期类型
// 积分有效期 this.scrollToError(this, 'yearY');
that.$message.error({ that.$message.error({
duration: 1000, duration: 1000,
message: '请填写积分有效期' message: "请设置积分有效期"
})
return;
}
if(data.integralExpireType ==3 && (this.mouthM == '' || this.mouthD == -1)) {
this.scrollToError(this, 'yearY');
that.$message.error({
duration: 1000,
message: "请完善积分有效期信息"
})
return;
}else if(data.integralExpireType ==2 && (this.yearY == '' || this.yearM == '' || this.yearD == -1 )) {
this.scrollToError(this, 'yearY');
that.$message.error({
duration: 1000,
message: "请完善积分有效期信息"
})
return;
} else if (data.integralExpireType ==0 && data.effectiveTime=='') {
this.scrollToError(this, 'yearY');
that.$message.error({
duration: 1000,
message: "请完善积分有效期信息"
})
return;
}else if ( String(data.integralExpireType)== 0 && data.effectiveTime=='' && parseInt(data.effectiveTime) < 1) {
this.scrollToError(this, 'yearY');
that.$message.error({
duration: 1000,
message: '积分有效期不能低于最低限制'
}); });
return; return;
} else {
if (parseInt(data.effectiveTime) < 1) {
that.$message.error({
duration: 1000,
message: '积分有效期不能低于最低限制'
});
return;
}
} }
let tag = !data.integralUse.fee || !data.integralUse.integral || !data.integralCost.integral || !data.integralCost.fee || !parseInt(data.useProportionalRestriction); let tag = !data.integralUse.fee || !data.integralUse.integral || !data.integralCost.integral || !data.integralCost.fee || !parseInt(data.useProportionalRestriction);
if (data.integralUseStatus == 1 && tag) { if (data.integralUseStatus == 1 && tag) {
this.scrollToError(this, 'integralUse');
that.$message.error({ that.$message.error({
duration: 1000, duration: 1000,
message: '请填写积分抵现规则' message: '请填写积分抵现规则'
...@@ -301,20 +447,24 @@ export default { ...@@ -301,20 +447,24 @@ export default {
} }
if (data.integralUseStatus == 1) { if (data.integralUseStatus == 1) {
if (!Number(data.integralUse.fee)) { if (!Number(data.integralUse.fee)) {
this.scrollToError(this, 'integralUse');
that.$message.error('积分抵现规则中的抵现金额不能为0'); that.$message.error('积分抵现规则中的抵现金额不能为0');
return; return;
} }
if (!Number(data.integralUse.integral)) { if (!Number(data.integralUse.integral)) {
this.scrollToError(this, 'integralUse');
that.$message.error('积分抵现规则中的使用积分不能为0'); that.$message.error('积分抵现规则中的使用积分不能为0');
return; return;
} }
} }
// 积分成本 // 积分成本
if (!Number(data.integralCost.fee)) { if (!Number(data.integralCost.fee)) {
this.scrollToError(this, 'integralCost');
that.$message.error('积分成本中的承担金额不能为0'); that.$message.error('积分成本中的承担金额不能为0');
return; return;
} }
if (!Number(data.integralCost.integral)) { if (!Number(data.integralCost.integral)) {
this.scrollToError(this, 'integralCost');
that.$message.error('积分成本中的使用积分不能为0'); that.$message.error('积分成本中的使用积分不能为0');
return; return;
} }
...@@ -323,10 +473,12 @@ export default { ...@@ -323,10 +473,12 @@ export default {
if (data.integralGetStatus == 1 && data.integralGetDiscountControl == 2) { if (data.integralGetStatus == 1 && data.integralGetDiscountControl == 2) {
let flagA = Number(data.integralGetDiscountControlUpper) <= Number(data.integralGetDiscountControlLower); let flagA = Number(data.integralGetDiscountControlUpper) <= Number(data.integralGetDiscountControlLower);
if (!data.integralGetDiscountControlLower || !data.integralGetDiscountControlUpper) { if (!data.integralGetDiscountControlLower || !data.integralGetDiscountControlUpper) {
this.scrollToError(this, 'integralGetDiscountControlLower1');
that.$message.error('请输入商品折扣值'); that.$message.error('请输入商品折扣值');
return; return;
} }
if (flagA) { if (flagA) {
this.scrollToError(this, 'integralGetDiscountControlLower1');
that.$message.error('积分获取规则中的折扣格式有误'); that.$message.error('积分获取规则中的折扣格式有误');
return; return;
} }
...@@ -334,16 +486,19 @@ export default { ...@@ -334,16 +486,19 @@ export default {
if (data.integralUseStatus == 1 && data.integralUseDiscountControl == 2) { if (data.integralUseStatus == 1 && data.integralUseDiscountControl == 2) {
let flagB = Number(data.integralUseDiscountControlUpper) <= Number(data.integralUseDiscountControlLower); let flagB = Number(data.integralUseDiscountControlUpper) <= Number(data.integralUseDiscountControlLower);
if (!data.integralUseDiscountControlLower || !data.integralUseDiscountControlUpper) { if (!data.integralUseDiscountControlLower || !data.integralUseDiscountControlUpper) {
this.scrollToError(this, 'integralUseDiscountControlLower1');
that.$message.error('请输入商品折扣值'); that.$message.error('请输入商品折扣值');
return; return;
} }
if (flagB) { if (flagB) {
this.scrollToError(this, 'integralUseDiscountControlLower1');
that.$message.error('积分抵现规则中的折扣格式有误'); that.$message.error('积分抵现规则中的折扣格式有误');
return; return;
} }
} }
if (data.useProportionalRestriction > 100) { if (data.useProportionalRestriction > 100) {
this.scrollToError(this, 'useProportionalRestriction');
that.$message.error('比例限制文本格式有误'); that.$message.error('比例限制文本格式有误');
return; return;
} }
...@@ -357,9 +512,30 @@ export default { ...@@ -357,9 +512,30 @@ export default {
data.integralGet = JSON.stringify(data.integralGet)?JSON.stringify(data.integralGet):that.ruleForm.integralGet; data.integralGet = JSON.stringify(data.integralGet)?JSON.stringify(data.integralGet):that.ruleForm.integralGet;
data.integralUse = JSON.stringify(data.integralUse)?JSON.stringify(data.integralUse):that.ruleForm.integralUse; data.integralUse = JSON.stringify(data.integralUse)?JSON.stringify(data.integralUse):that.ruleForm.integralUse;
data.integralCost = JSON.stringify(data.integralCost)?JSON.stringify(data.integralCost):that.ruleForm.integralCost; data.integralCost = JSON.stringify(data.integralCost)?JSON.stringify(data.integralCost):that.ruleForm.integralCost;
if( data.integralExpireType == 0){
data.integralExpireRule = ''
}else if(data.integralExpireType == 1) {
data.integralExpireRule = ''
delete data.effectiveTime
} else if(data.integralExpireType == 2) {
data.integralExpireRule = `${this.yearY},${this.yearM},${this.yearD}`
delete data.effectiveTime
}else if(data.integralExpireType == 3) {
data.integralExpireRule = `${this.mouthM},${this.mouthD}`
delete data.effectiveTime
}
that.saveInfo(data); that.saveInfo(data);
} else { } else {
// log('error submit!!'); // log('error submit!!');
setTimeout(() => {
var isError = document.getElementsByClassName("is-error");
if (isError[0].querySelector('input')) {
isError[0].querySelector('input').focus();
} else if (isError[0].querySelector('textarea')) {
isError[0].querySelector('textarea').focus();
}
}, 1)
return false; return false;
} }
}); });
...@@ -369,7 +545,7 @@ export default { ...@@ -369,7 +545,7 @@ export default {
let that = this; let that = this;
let param = data; let param = data;
param.requestProject = that.repProjectName; param.requestProject = that.repProjectName;
// log(param) log(param, 9090)
postRequest('/api-admin/save-member-integral-setting', param) postRequest('/api-admin/save-member-integral-setting', param)
.then(res => { .then(res => {
// log(res,res.data,res.data.errorCode) // log(res,res.data,res.data.errorCode)
...@@ -434,7 +610,121 @@ export default { ...@@ -434,7 +610,121 @@ export default {
} }
that.$forceUpdate(); that.$forceUpdate();
} },
// 通用积分
getPointInfos() {
var that = this
var param = {
requestProject: that.projectName
}
postRequest('/api-admin/get-member-integral-setting',param)
.then((res) => {
var resData = res.data
console.log(resData, 'ppp');
if (resData.errorCode == 0) {
// that.pointInfo = that.handleData(resData.result.memberIntegral)
that.ruleForm = that.handleData(resData.result.memberIntegral);
that.ruleForm.integralExpireRule = that.ruleForm.integralExpireRule.split(',')
if(this.ruleForm.integralGetStatus == 0) {
this.ruleForm.integralGet.fee = undefined;
this.ruleForm.integralGet.integral = undefined;
}
if(this.ruleForm.integralUseStatus == 0) {
this.ruleForm.integralUse.fee = undefined;
this.ruleForm.integralUse.integral = undefined;
}
// 给定一个默认值
if (that.ruleForm.integralGetDiscountControl == 0) {
this.ruleForm.integralGetDiscountControl = '1';
}
if (that.ruleForm.integralUseDiscountControl == 0) {
this.ruleForm.integralUseDiscountControl = '1';
}
if(this.ruleForm.integralGetDiscountControl == 1) {
this.ruleForm.integralGetDiscountControlLower = undefined;
this.ruleForm.integralGetDiscountControlUpper = undefined
}
if(this.ruleForm.integralUseDiscountControl == 1) {
this.ruleForm.integralUseDiscountControlLower = undefined;
this.ruleForm.integralUseDiscountControlUpper = undefined
}
if(this.ruleForm.integralExpireType == null){
this.ruleForm.integralExpireType = 1;
}else if(that.ruleForm.integralExpireType == 2) {
this.yearY = Number(this.ruleForm.integralExpireRule[0]);
this.yearM = Number(this.ruleForm.integralExpireRule[1]);
this.yearD = Number(this.ruleForm.integralExpireRule[2]);
this.ruleForm.effectiveTime = ''
console.log(that.yearY, that.yearM, that.yearD);
}else if(this.ruleForm.integralExpireType == 3) {
this.mouthM = Number(this.ruleForm.integralExpireRule[0]);
this.mouthD = Number(this.ruleForm.integralExpireRule[1]);
this.ruleForm.effectiveTime = ''
}else if(that.ruleForm.integralExpireType == 1) {
that.ruleForm.effectiveTime = ''
}
return;
}
errMsg.errorMsg(resData)
})
.catch(function (error) {
console.log(error);
});
},
// 处理表单中数据
handleData(item) {
item.integralGetStatus = String(item.integralGetStatus);
item.integralUseStatus = String(item.integralUseStatus);
item.integralGetStrategy = String(item.integralGetStrategy);
item.integralGetDiscountControl = String(item.integralGetDiscountControl);
item.integralUseDiscountControl = String(item.integralUseDiscountControl);
item.integralGetDiscountControlUpper = String(item.integralGetDiscountControlUpper);
item.integralGetDiscountControlLower = String(item.integralGetDiscountControlLower);
item.integralUseDiscountControlUpper = String(item.integralUseDiscountControlUpper);
item.integralUseDiscountControlLower = String(item.integralUseDiscountControlLower);
item.integralExpireType = String(item.integralExpireType);
item.integralExpireRule = String(item.integralExpireRule);
// item.integralGet = JSON.parse(item.integralGet);
// item.integralUse = JSON.parse(item.integralUse);
// item.integralCost = JSON.parse(item.integralCost);
let isJSONBool1 = this.isJSON(item.integralGet);
let isJSONBool2 = this.isJSON(item.integralUse);
let isJSONBool3 = this.isJSON(item.integralCost);
if(isJSONBool1){
item.integralGet = JSON.parse(item.integralGet);
}else{ // 不是json 先转成对象再转成json
item.integralGet = JSON.parse(JSON.stringify(eval('('+ item.integralGet +')')))
}
if(isJSONBool2){
item.integralUse = JSON.parse(item.integralUse);
}else{
item.integralUse = JSON.parse(JSON.stringify(eval('('+ item.integralUse +')')))
}
if(isJSONBool3){
item.integralCost = JSON.parse(item.integralCost);
}else{
item.integralCost = JSON.parse(JSON.stringify(eval('('+ item.integralCost +')')))
}
item.integralGet.fee = Number(item.integralGet.fee / 10).toFixed(1);
item.integralGet.integral = Number(item.integralGet.integral / 10);
return item;
},
isJSON(str) {
if (typeof str == 'string') {
try {
// var obj=JSON.parse(str);
// console.log('转换成功:'+obj);
return true;
} catch(e) {
// console.log('error:'+str+'!!!'+e);
return false;
}
}
},
}, },
watch: { watch: {
projectName: function(newData, oldData) { projectName: function(newData, oldData) {
...@@ -442,35 +732,55 @@ export default { ...@@ -442,35 +732,55 @@ export default {
// log("新数据:",newData,oldData) // log("新数据:",newData,oldData)
that.repProjectName = newData || 'gic-web'; that.repProjectName = newData || 'gic-web';
}, },
pointInfo: function(newData, oldData) { // pointInfo: {
let that = this; // handle: function(newData, oldData) {
if (newData) { // console.log(newData, oldData, 'newData, oldData');
that.ruleForm = newData; // let that = this;
if(this.ruleForm.integralGetStatus == 0) { // if (newData) {
this.ruleForm.integralGet.fee = undefined; // that.ruleForm = newData;
this.ruleForm.integralGet.integral = undefined; // that.ruleForm.integralExpireRule = that.ruleForm.integralExpireRule.split(',')
} // if(this.ruleForm.integralGetStatus == 0) {
if(this.ruleForm.integralUseStatus == 0) { // this.ruleForm.integralGet.fee = undefined;
this.ruleForm.integralUse.fee = undefined; // this.ruleForm.integralGet.integral = undefined;
this.ruleForm.integralUse.integral = undefined; // }
} // if(this.ruleForm.integralUseStatus == 0) {
// 给定一个默认值 // this.ruleForm.integralUse.fee = undefined;
if (newData.integralGetDiscountControl == 0) { // this.ruleForm.integralUse.integral = undefined;
this.ruleForm.integralGetDiscountControl = '1'; // }
} // // 给定一个默认值
if (newData.integralUseDiscountControl == 0) { // if (newData.integralGetDiscountControl == 0) {
this.ruleForm.integralUseDiscountControl = '1'; // this.ruleForm.integralGetDiscountControl = '1';
} // }
if(this.ruleForm.integralGetDiscountControl == 1) { // if (newData.integralUseDiscountControl == 0) {
this.ruleForm.integralGetDiscountControlLower = undefined; // this.ruleForm.integralUseDiscountControl = '1';
this.ruleForm.integralGetDiscountControlUpper = undefined // }
} // if(this.ruleForm.integralGetDiscountControl == 1) {
if(this.ruleForm.integralUseDiscountControl == 1) { // this.ruleForm.integralGetDiscountControlLower = undefined;
this.ruleForm.integralUseDiscountControlLower = undefined; // this.ruleForm.integralGetDiscountControlUpper = undefined
this.ruleForm.integralUseDiscountControlUpper = undefined // }
} // if(this.ruleForm.integralUseDiscountControl == 1) {
} // this.ruleForm.integralUseDiscountControlLower = undefined;
} // this.ruleForm.integralUseDiscountControlUpper = undefined
// }
// if(this.ruleForm.integralExpireType == null){
// this.ruleForm.integralExpireType = 1;
// }else if(that.ruleForm.integralExpireType == 2) {
// this.yearY = Number(this.ruleForm.integralExpireRule[0]);
// this.yearM = Number(this.ruleForm.integralExpireRule[1]);
// this.yearD = Number(this.ruleForm.integralExpireRule[2]);
// this.ruleForm.effectiveTime = ''
// console.log(that.yearY, that.yearM, that.yearD);
// }else if(this.ruleForm.integralExpireType == 3) {
// this.mouthM = Number(this.ruleForm.integralExpireRule[0]);
// this.mouthD = Number(this.ruleForm.integralExpireRule[1]);
// this.ruleForm.effectiveTime = ''
// }else if(that.ruleForm.integralExpireType == 1) {
// that.ruleForm.effectiveTime = ''
// }
// }
// },
// immediate: true
// }
}, },
components: { components: {
Editor Editor
...@@ -479,6 +789,7 @@ export default { ...@@ -479,6 +789,7 @@ export default {
let that = this; let that = this;
tinymce.init({}); tinymce.init({});
// 传递的数据非空赋值 // 传递的数据非空赋值
console.log(Object.keys(that.pointInfo), 'Object.keys(that.pointInfo)');
if (that.pointInfo) { if (that.pointInfo) {
if (Object.keys(that.pointInfo).length) { if (Object.keys(that.pointInfo).length) {
that.ruleForm = that.pointInfo; that.ruleForm = that.pointInfo;
...@@ -488,6 +799,9 @@ export default { ...@@ -488,6 +799,9 @@ export default {
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.mb20 {
margin-bottom: 20px;
}
.bottom{ .bottom{
position: fixed; position: fixed;
bottom: 0px; bottom: 0px;
......
...@@ -40,3 +40,20 @@ export function validateEmail(email) { ...@@ -40,3 +40,20 @@ export function validateEmail(email) {
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email); return re.test(email);
} }
/** 表单校验滚动到第一个错误项
* @param {Object} that vue实例
* this.scrollToError(this);
*/
export const scrollToError = (that, className = 'is-error') => {
that.$nextTick(_ => {
const isError = document.getElementsByClassName(className);
isError[0].scrollIntoView({
// 滚动到指定节点
// 值有start,center,end,nearest,当前显示在视图区域中间
block: 'center',
// 值有auto、instant,smooth,缓动动画(当前是慢速的)
behavior: 'smooth'
});
});
};
...@@ -146,11 +146,11 @@ ...@@ -146,11 +146,11 @@
<el-input v-model="ruleForm.upLevelHighcost" @focus="inputFocus('upLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelHighcost" @focus="inputFocus('upLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelDaystoredSelect">当天储值满</el-checkbox> <el-checkbox v-model="ruleForm.upLevelDaystoredSelect">当天储值满</el-checkbox>
<el-input v-model="ruleForm.upLevelDaystored" @focus="inputFocus('upLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelDaystored" @focus="inputFocus('upLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumcostSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumcostSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumcostDays" @focus="inputFocus('upLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumcostDays" @focus="inputFocus('upLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -165,13 +165,13 @@ ...@@ -165,13 +165,13 @@
<el-input v-model="ruleForm.upLevelCosttimes" @focus="inputFocus('upLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelCosttimes" @focus="inputFocus('upLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumstoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumstoredSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumstoredDays" @focus="inputFocus('upLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumstoredDays" @focus="inputFocus('upLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内储值满</label> <label>天内储值满</label>
<el-input v-model="ruleForm.upLevelSumstored" @focus="inputFocus('upLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumstored" @focus="inputFocus('upLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumintegralSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumintegralSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumintegralDays" @focus="inputFocus('upLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumintegralDays" @focus="inputFocus('upLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -205,13 +205,13 @@ ...@@ -205,13 +205,13 @@
<el-input v-model="ruleForm.lowLevelHighcost" @focus="inputFocus('lowLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelHighcost" @focus="inputFocus('lowLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelDaystoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelDaystoredSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelDaystoredDays" @focus="inputFocus('lowLevelDaystoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelDaystoredDays" @focus="inputFocus('lowLevelDaystoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内单天储值满</label> <label>天内单天储值满</label>
<el-input v-model="ruleForm.lowLevelDaystored" @focus="inputFocus('lowLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelDaystored" @focus="inputFocus('lowLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumcostSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumcostSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumcostDays" @focus="inputFocus('lowLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumcostDays" @focus="inputFocus('lowLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -226,13 +226,13 @@ ...@@ -226,13 +226,13 @@
<el-input v-model="ruleForm.lowLevelCosttimes" @focus="inputFocus('lowLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelCosttimes" @focus="inputFocus('lowLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumstoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumstoredSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumstoredDays" @focus="inputFocus('lowLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumstoredDays" @focus="inputFocus('lowLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内储值满</label> <label>天内储值满</label>
<el-input v-model="ruleForm.lowLevelSumstored" @focus="inputFocus('lowLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumstored" @focus="inputFocus('lowLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumintegralSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumintegralSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumintegralDays" @focus="inputFocus('lowLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumintegralDays" @focus="inputFocus('lowLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input>
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="人群定向:" v-if="ruleForm.useCrowd == 2" prop class="padding-0"> <el-form-item label="人群定向:" v-if="ruleForm.useCrowd == 2" prop class="padding-0 selectCount">
<el-button @click="showPeople">已设置{{ selectCount }}项筛选</el-button> <el-button @click="showPeople">已设置{{ selectCount }}项筛选</el-button>
</el-form-item> </el-form-item>
<el-form-item label="适用条件:" class="padding-0"> <el-form-item label="适用条件:" class="padding-0">
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
<!-- 商品品牌 --> <!-- 商品品牌 -->
<el-select <el-select
size="small" size="small"
class="fl w240" class="fl w240 valueWx"
@change="selectGoodsStoreWx" @change="selectGoodsStoreWx"
v-if="item.channelRelationProType == 2" v-if="item.channelRelationProType == 2"
v-model="valueWx" v-model="valueWx"
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
></el-option> ></el-option>
</el-select> </el-select>
<!-- 商品品类 --> <!-- 商品品类 -->
<div v-if="item.channelRelationProType == 3" class="fl goods-cate"> <div v-if="item.channelRelationProType == 3" class="fl goods-cate cateDataWx">
<goodsCate <goodsCate
ref="selectGoodsCate" ref="selectGoodsCate"
:selectCateType="selectCateTypeWx" :selectCateType="selectCateTypeWx"
...@@ -105,16 +105,16 @@ ...@@ -105,16 +105,16 @@
</div> </div>
<el-button <el-button
style="width:202px" style="width:202px"
class="fl" class="fl goodsListWx"
v-if="item.channelRelationProType == 4" v-if="item.channelRelationProType == 4"
@click="showGoodsDialog('wx')" @click="showGoodsDialog('wx')"
>已选{{ goodsListWx.length }}件商品</el-button> >已选{{ goodsListWx.length }}件商品</el-button>
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="margin-20"> <el-form-item label="折扣控制:" prop="region" class="margin-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent2">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventn(2)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20 padding-bottom-20"> <div class="radio-cell margin-20 padding-bottom-20 zk0">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number <el-input-number
placeholder="请输入" placeholder="请输入"
...@@ -164,9 +164,9 @@ ...@@ -164,9 +164,9 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20"> <el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent1">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventn(1)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20 zk1">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number placeholder="请输入" v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number placeholder="请输入" v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
<label></label> <label></label>
...@@ -184,7 +184,7 @@ ...@@ -184,7 +184,7 @@
<div> <div>
<el-radio v-model="ruleForm.integralUseStatus" label="0" @change="radioEvent()">不支持抵现</el-radio> <el-radio v-model="ruleForm.integralUseStatus" label="0" @change="radioEvent()">不支持抵现</el-radio>
</div> </div>
<div class="margin-20"> <div class="margin-20 integralUse">
<el-radio v-model="ruleForm.integralUseStatus" label="1">每使用</el-radio> <el-radio v-model="ruleForm.integralUseStatus" label="1">每使用</el-radio>
<el-input-number <el-input-number
placeholder="请输入" placeholder="请输入"
...@@ -292,7 +292,7 @@ import strLength from '@/common/js/strlen'; ...@@ -292,7 +292,7 @@ import strLength from '@/common/js/strlen';
import { getRequest, postRequest, postJson } from '@/api/api'; import { getRequest, postRequest, postJson } from '@/api/api';
import { log } from '@/utils/index.js'; import { log } from '@/utils/index.js';
import wmMixins from './strategy.js'; import wmMixins from './strategy.js';
import { scrollToError } from '@/utils/validate';
const timeStramp = { const timeStramp = {
year: new Date().getFullYear(), year: new Date().getFullYear(),
month: new Date().getMonth(), month: new Date().getMonth(),
...@@ -304,6 +304,7 @@ export default { ...@@ -304,6 +304,7 @@ export default {
mixins: [wmMixins], mixins: [wmMixins],
data() { data() {
return { return {
scrollToError,
repProjectName: 'gic-clique', repProjectName: 'gic-clique',
navpath: [ navpath: [
{ {
...@@ -484,15 +485,9 @@ export default { ...@@ -484,15 +485,9 @@ export default {
// this.selectReplayStyle() // this.selectReplayStyle()
}, },
methods: { methods: {
radioEvent2() { radioEventn(n) {
// console.log(this.ruleForm.channelType, 78787); this.ruleForm.channelList[n].integralUseDiscountControlLower = undefined;
this.ruleForm.channelList[0].integralUseDiscountControlLower = undefined; this.ruleForm.channelList[n].integralUseDiscountControlUpper = undefined;
this.ruleForm.channelList[0].integralUseDiscountControlUpper = undefined;
},
radioEvent1() {
// console.log(this.ruleForm.channelType, 78787);
this.ruleForm.channelList[1].integralUseDiscountControlLower = undefined;
this.ruleForm.channelList[1].integralUseDiscountControlUpper = undefined;
}, },
radioEvent() { radioEvent() {
this.ruleForm.integralUse.fee = undefined; this.ruleForm.integralUse.fee = undefined;
...@@ -513,19 +508,23 @@ export default { ...@@ -513,19 +508,23 @@ export default {
if (!!data.channelList[i].openStatus && data.channelList[i].integralUseDiscountControl == 2) { if (!!data.channelList[i].openStatus && data.channelList[i].integralUseDiscountControl == 2) {
if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) { if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '请填写折扣'; obj.text = '请填写折扣';
} }
if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) { if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '折扣格式有误'; obj.text = '折扣格式有误';
} }
} }
if (data.channelList[i].channelType == 1 && !data.channelList[i].enterpriseRelationIdArr.length) { if (data.channelList[i].channelType == 1 && !data.channelList[i].enterpriseRelationIdArr.length) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '请选择商户'; obj.text = '请选择商户';
} }
if (data.channelList[i].channelType == 9 && !data.channelList[i].enterpriseRelationIdArr.length) { if (data.channelList[i].channelType == 9 && !data.channelList[i].enterpriseRelationIdArr.length) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '请选择商户'; obj.text = '请选择商户';
} }
if (data.channelList[i].channelType == 3) { if (data.channelList[i].channelType == 3) {
...@@ -589,15 +588,18 @@ export default { ...@@ -589,15 +588,18 @@ export default {
// } // }
let flag = !data.integralUse.fee || String(data.integralUse.integral) == ''; let flag = !data.integralUse.fee || String(data.integralUse.integral) == '';
if (data.integralUseStatus == 1 && flag) { if (data.integralUseStatus == 1 && flag) {
this.scrollToError(this, 'integralUse');
that.$message.error('请填写抵现规则'); that.$message.error('请填写抵现规则');
return; return;
} }
if (data.integralUseStatus == 1) { if (data.integralUseStatus == 1) {
if (!Number(data.integralUse.fee)) { if (!Number(data.integralUse.fee)) {
this.scrollToError(this, 'integralUse');
showMsg.showmsg('抵现规则中的抵现金额不能为0', 'error'); showMsg.showmsg('抵现规则中的抵现金额不能为0', 'error');
return; return;
} }
if (!Number(data.integralUse.integral)) { if (!Number(data.integralUse.integral)) {
this.scrollToError(this, 'integralUse');
showMsg.showmsg('抵现规则中的使用积分不能为0', 'error'); showMsg.showmsg('抵现规则中的使用积分不能为0', 'error');
return; return;
} }
...@@ -649,16 +651,19 @@ export default { ...@@ -649,16 +651,19 @@ export default {
// 微信商城 // 微信商城
// 适用商品 // 适用商品
if (item.channelRelationProType == 2 && this.valueWx.length < 1) { if (item.channelRelationProType == 2 && this.valueWx.length < 1) {
this.scrollToError(this, 'valueWx');
// 商品品牌 // 商品品牌
showMsg.showmsg('请选择商品品牌', 'error'); showMsg.showmsg('请选择商品品牌', 'error');
return (saveBool = false); return (saveBool = false);
} }
if (item.channelRelationProType == 3 && this.cateDataWx.length < 1) { if (item.channelRelationProType == 3 && this.cateDataWx.length < 1) {
this.scrollToError(this, 'cateDataWx');
// 商品品类 // 商品品类
showMsg.showmsg('请选择商品品类', 'error'); showMsg.showmsg('请选择商品品类', 'error');
return (saveBool = false); return (saveBool = false);
} }
if (item.channelRelationProType == 4 && this.goodsListWx.length < 1) { if (item.channelRelationProType == 4 && this.goodsListWx.length < 1) {
this.scrollToError(this, 'goodsListWx');
// 单件商品 // 单件商品
showMsg.showmsg('请选择单件商品', 'error'); showMsg.showmsg('请选择单件商品', 'error');
return (saveBool = false); return (saveBool = false);
...@@ -667,6 +672,7 @@ export default { ...@@ -667,6 +672,7 @@ export default {
}); });
// 自定义人群 // 自定义人群
if (data.useCrowd == 2 && this.selectCount < 1) { if (data.useCrowd == 2 && this.selectCount < 1) {
this.scrollToError(this, 'selectCount');
showMsg.showmsg('请选择人群定向', 'error'); showMsg.showmsg('请选择人群定向', 'error');
return; return;
} }
...@@ -699,7 +705,8 @@ export default { ...@@ -699,7 +705,8 @@ export default {
} }
}) })
} else { } else {
log('error submit!!'); this.scrollToError(this);
showMsg.showmsg('表单信息未填写完整','error')
return false; return false;
} }
}); });
......
...@@ -37,11 +37,11 @@ ...@@ -37,11 +37,11 @@
<el-input v-model="ruleForm.upLevelHighcost" @focus="inputFocus('upLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelHighcost" @focus="inputFocus('upLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelDaystoredSelect">当天储值满</el-checkbox> <el-checkbox v-model="ruleForm.upLevelDaystoredSelect">当天储值满</el-checkbox>
<el-input v-model="ruleForm.upLevelDaystored" @focus="inputFocus('upLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelDaystored" @focus="inputFocus('upLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumcostSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumcostSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumcostDays" @focus="inputFocus('upLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumcostDays" @focus="inputFocus('upLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -56,13 +56,13 @@ ...@@ -56,13 +56,13 @@
<el-input v-model="ruleForm.upLevelCosttimes" @focus="inputFocus('upLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelCosttimes" @focus="inputFocus('upLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumstoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumstoredSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumstoredDays" @focus="inputFocus('upLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumstoredDays" @focus="inputFocus('upLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内储值满</label> <label>天内储值满</label>
<el-input v-model="ruleForm.upLevelSumstored" @focus="inputFocus('upLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumstored" @focus="inputFocus('upLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumintegralSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumintegralSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumintegralDays" @focus="inputFocus('upLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumintegralDays" @focus="inputFocus('upLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -96,13 +96,13 @@ ...@@ -96,13 +96,13 @@
<el-input v-model="ruleForm.lowLevelHighcost" @focus="inputFocus('lowLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelHighcost" @focus="inputFocus('lowLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelDaystoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelDaystoredSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelDaystoredDays" @focus="inputFocus('lowLevelDaystoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelDaystoredDays" @focus="inputFocus('lowLevelDaystoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内单天储值满</label> <label>天内单天储值满</label>
<el-input v-model="ruleForm.lowLevelDaystored" @focus="inputFocus('lowLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelDaystored" @focus="inputFocus('lowLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumcostSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumcostSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumcostDays" @focus="inputFocus('lowLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumcostDays" @focus="inputFocus('lowLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -117,13 +117,13 @@ ...@@ -117,13 +117,13 @@
<el-input v-model="ruleForm.lowLevelCosttimes" @focus="inputFocus('lowLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelCosttimes" @focus="inputFocus('lowLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumstoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumstoredSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumstoredDays" @focus="inputFocus('lowLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumstoredDays" @focus="inputFocus('lowLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内储值满</label> <label>天内储值满</label>
<el-input v-model="ruleForm.lowLevelSumstored" @focus="inputFocus('lowLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumstored" @focus="inputFocus('lowLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumintegralSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumintegralSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumintegralDays" @focus="inputFocus('lowLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumintegralDays" @focus="inputFocus('lowLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input>
......
...@@ -34,10 +34,10 @@ ...@@ -34,10 +34,10 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" label-width="85px"> <el-form-item label="折扣控制:" prop="region" label-width="85px">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent0">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(0)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk0" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="1" :step="0.01" placeholder="请输入" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" :precision="2" :controls="false" :max="10.0" :min="1" :step="0.01" placeholder="请输入" style="width: 115px"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" :precision="2" :controls="false" :max="10.0" :min="1" placeholder="请输入" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" :precision="2" :controls="false" :max="10.0" :min="1" placeholder="请输入" style="width: 115px"></el-input-number>
...@@ -73,10 +73,10 @@ ...@@ -73,10 +73,10 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" label-width="85px" style="margin-bottom: 20px"> <el-form-item label="折扣控制:" prop="region" label-width="85px" style="margin-bottom: 20px">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent1">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(1)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk1" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
...@@ -111,10 +111,10 @@ ...@@ -111,10 +111,10 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="input-margin-b" label-width="85px"> <el-form-item label="折扣控制:" prop="region" class="input-margin-b" label-width="85px">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent2">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(2)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk2" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
...@@ -138,10 +138,10 @@ ...@@ -138,10 +138,10 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" label-width="85px" style="margin-bottom: 20px"> <el-form-item label="折扣控制:" prop="region" label-width="85px" style="margin-bottom: 20px">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent3">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(3)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk3" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
...@@ -165,10 +165,10 @@ ...@@ -165,10 +165,10 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" label-width="85px" style="margin-bottom: 20px"> <el-form-item label="折扣控制:" prop="region" label-width="85px" style="margin-bottom: 20px">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent4">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(4)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk4" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
...@@ -192,10 +192,10 @@ ...@@ -192,10 +192,10 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" label-width="85px" style="margin-bottom: 20px"> <el-form-item label="折扣控制:" prop="region" label-width="85px" style="margin-bottom: 20px">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent5">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(5)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk5" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1" style="width: 115px"></el-input-number>
...@@ -225,7 +225,7 @@ ...@@ -225,7 +225,7 @@
<el-radio v-model="ruleForm.integralGetStatus" label="0" @change="radioEvent">不获取积分</el-radio> <el-radio v-model="ruleForm.integralGetStatus" label="0" @change="radioEvent">不获取积分</el-radio>
</div> </div>
<div class="margin-20"> <div class="margin-20">
<el-radio v-model="ruleForm.integralGetStatus" label="1">每消费</el-radio> <el-radio class="integralGet" v-model="ruleForm.integralGetStatus" label="1">每消费</el-radio>
<el-input-number v-model="ruleForm.integralGet.fee" placeholder="请输入" :precision="1" :controls="false" :max="10000.0" :min="0.1" style="width: 115px"></el-input-number> <el-input-number v-model="ruleForm.integralGet.fee" placeholder="请输入" :precision="1" :controls="false" :max="10000.0" :min="0.1" style="width: 115px"></el-input-number>
<label>元,获取 </label> <label>元,获取 </label>
<!-- <el-input v-model="ruleForm.integralGet.integral" @blur="formatInputNumBlur($event)"></el-input> --> <!-- <el-input v-model="ruleForm.integralGet.integral" @blur="formatInputNumBlur($event)"></el-input> -->
...@@ -242,9 +242,110 @@ ...@@ -242,9 +242,110 @@
<el-input v-model="ruleForm.integralGetFreezeDays" @keyup.native="formatInputNum($event)" style="width: 115px"></el-input><label></label> <el-input v-model="ruleForm.integralGetFreezeDays" @keyup.native="formatInputNum($event)" style="width: 115px"></el-input><label></label>
<span class="setting-tips">仅对通过订单获取的积分生效,活动类获取的积分没有冻结期</span> <span class="setting-tips">仅对通过订单获取的积分生效,活动类获取的积分没有冻结期</span>
</el-form-item> </el-form-item>
<el-form-item label="积分有效期:" v-if="ruleForm.integralGetStatus == 1" prop="integralGetEffectiveDays"> <el-form-item label="积分有效期:" prop="userGeneralIntegralExpireRule">
自获取之日起 <el-radio v-model="ruleForm.userGeneralIntegralExpireRule" :label="1">通用积分策略有效期</el-radio>
<el-input v-model="ruleForm.integralGetEffectiveDays" @keyup.native="formatInputNum($event)" style="width: 115px"></el-input><label></label> <el-radio v-model="ruleForm.userGeneralIntegralExpireRule" :label="0">自定义有效期
<el-tooltip placement="right" effect="light">
<div slot="content" style="line-height:20px">
<p style="color:#595959 font-size:14px;font-weight:600">规则说明:</p>
<p style="color:#e6a23c">
仅GIC计算积分时,配置的积分有效期才会生效,<br/>
ERP计算积分时,此配置项不生效;
</p>
<ul>
<li>1、永久有效:客户获取的积分永久有效,系统不会清零;</li>
<li>2、按年失效:在第X年的X月X日失效:例:设置第二年的12月1日失效,则2021年获取的所有积分在2022年12月1日失效;</li>
<li>3、按月失效:在第X个月的X日失效:例:设置第二月的1日失效,则3月获取的所有积分在4月1日失效;</li>
<li>4、按天失效:每天获取的所有积分在获取之日起365天后失效:例:设置365天,则2022年12月1号获取的积分在2023年12月1号失效;</li>
<li>5、修改积分有效期后,已经获取的积分有效期不变,后续获取的积分按照修改后的积分有效期生效;</li>
</ul>
</div>
<i class="iconfont icon-QuestionCircleOutlined" style="font-size:12px;color:#606266;"></i>
</el-tooltip>
</el-radio>
<!-- 通用积分有效期 -->
<div v-if="ruleForm.userGeneralIntegralExpireRule == 1">
<div class="radio-cell" v-if="timeType == 1">
<el-radio v-model="ruleForm.integralExpireType" label="1" @change="radioExpireType1" disabled="true">永久有效</el-radio>
</div>
<div class="radio-cell" v-else-if="timeType == 2">
<el-radio v-model="ruleForm.integralExpireType" label="2" disabled="true"><label>按年失效:</label></el-radio>
<label>每年获取的所有积分,在</label>
<el-select v-model="yearYT" placeholder="请选择" style="width:120px;margin-right:20px" disabled="true">
<el-option v-for="n in yearList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="yearMT" placeholder="请选择" style="width:120px;margin-right:20px" disabled="true">
<el-option v-for="n in 12" :key="n" :label="n" :value="n"></el-option>
</el-select>
<label></label>
<el-select v-model="yearDT" placeholder="请选择" style="width:120px;margin-right:20px" disabled="true">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<div class="radio-cell" v-else-if="timeType == 3">
<el-radio v-model="ruleForm.integralExpireType" label="3" disabled="true"><label>按月失效:</label></el-radio>
<label>每月获取的所有积分,在</label>
<el-select v-model="mouthMT" placeholder="请选择" style="width:120px;margin-right:20px" disabled="true">
<el-option v-for="n in mouthList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="mouthDT" placeholder="请选择" style="width:120px; margin-right:20px" disabled="true">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<!-- <div class="radio-cell" v-else-if="timeType == 0 || timeType == null"> -->
<div class="radio-cell" v-else-if="timeType == 0">
<el-radio v-model="ruleForm.integralExpireType" label="0" disabled="true">
<label>每天获取的所有积分,在获取之日起</label></el-radio>
<el-input placeholder="请输入" style="width:115px" v-model="effectiveDays" @keyup.native="formatInput($event)" disabled="true"></el-input>
<label>天后失效</label>
<span style="font-size: 12px;color: #909399;line-height: 1;padding-left: 10px;">建议不超过3年(1095天)</span>
</div>
<div class="radio-cell" v-else>
<p style="color:red;">还未配置通用积分策略,请先配置通用积分策略再选择「通用积分策略有效期」</p>
</div>
</div>
<!-- 自定义有效期 -->
<div class="form-child p20" v-if="ruleForm.userGeneralIntegralExpireRule == 0">
<div class="radio-cell mb20">
<el-radio class="yearY" v-model="ruleForm.integralExpireType" :label="2" @change="radioExpireType1">按年失效:</el-radio>
<label>每年获取的所有积分,在</label>
<el-select v-model="yearY" placeholder="请选择" class="selectwm">
<el-option v-for="n in yearList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="yearM" placeholder="请选择" class="selectwm">
<el-option v-for="n in 12" :key="n" :label="n" :value="n"></el-option>
</el-select>
<label></label>
<el-select v-model="yearD" placeholder="请选择" class="selectwm">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<div class="radio-cell mb20">
<el-radio class="mouthM" v-model="ruleForm.integralExpireType" :label="3" @change="radioExpireType1">按月失效:</el-radio>
<label>每月获取的所有积分,在</label>
<el-select v-model="mouthM" placeholder="请选择" class="selectwm">
<el-option v-for="n in mouthList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="mouthD" placeholder="请选择" class="selectwm">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<div class="radio-cell">
<el-radio class="integralGetEffectiveDays" v-model="ruleForm.integralExpireType" :label="0" @change="radioExpireType1">按天失效:</el-radio>
<label>每天获取的所有积分,在获取之日起</label>
<el-input placeholder="请输入" style="width:115px" v-model="ruleForm.integralGetEffectiveDays" @keyup.native="formatInput($event)"></el-input>
<label>天后失效</label>
<span style="font-size: 12px;color: #909399;line-height: 1;padding-left: 10px;">建议不超过3年(1095天)</span>
</div>
</div>
</el-form-item> </el-form-item>
<!-- 新增策略有效期配置 --> <!-- 新增策略有效期配置 -->
<el-form-item label="策略有效期:" prop="perpetualFlag"> <el-form-item label="策略有效期:" prop="perpetualFlag">
...@@ -312,6 +413,7 @@ import { postRequest, postJson } from '@/api/api'; ...@@ -312,6 +413,7 @@ import { postRequest, postJson } from '@/api/api';
import strLength from '@/common/js/strlen'; import strLength from '@/common/js/strlen';
import { log } from '@/utils/index.js'; import { log } from '@/utils/index.js';
import wmMixins from './strategy.js'; import wmMixins from './strategy.js';
import { scrollToError } from '@/utils/validate';
const timeStramp = { const timeStramp = {
year: new Date().getFullYear(), year: new Date().getFullYear(),
...@@ -323,7 +425,49 @@ export default { ...@@ -323,7 +425,49 @@ export default {
name: 'addPointSytem', name: 'addPointSytem',
mixins: [wmMixins], mixins: [wmMixins],
data() { data() {
// 天数
const dayList = ()=> {
let arr = []
for(let i = 1; i < 28; i++){
arr.push({key: i,value: i})
}
arr.push({key: 0, value: '月末'})
return arr;
}
// 月数
const mouthList = ()=> {
let arr = []
for(let i = 2; i < 37; i++){
arr.push({key: i,value: `第${i}个月`})
}
return arr;
}
// 年数
const yearList = ()=> {
let arr = []
for(let i = 2; i < 5; i++){
arr.push({key: i,value: `第${i}年`})
}
return arr;
}
return { return {
scrollToError,
yearYT: '', //按年失效 年
yearMT: '', //按年失效 月
yearDT: '', //按年失效 日
mouthMT: '', //按月失效 月
mouthDT: '', //按月失效 月
effectiveDays: undefined,
timeType: -1,
timeRuleType: '',
dayList: dayList(),
mouthList: mouthList(),
mouthM: '', //按月失效 月
mouthD: '', //按月失效 月
yearList: yearList(),
yearY: '', //按年失效 年
yearM: '', //按年失效 月
yearD: '', //按年失效 日
repProjectName: 'gic-clique', repProjectName: 'gic-clique',
navpath: [ navpath: [
{ {
...@@ -472,6 +616,9 @@ export default { ...@@ -472,6 +616,9 @@ export default {
cateNameLength: 0, cateNameLength: 0,
ruleForm: { ruleForm: {
userGeneralIntegralExpireRule: 1,
integralExpireType: '0', //积分有效期类型 0 未默认滚动到期 1永久 2 按年失效 3按月失效
integralExpireRule: '', //积分有效期规则 年 x(年),x(月),x(日,为0标识月末) 月,x(月),x(日,为0标识月末)
// 积分获取规则 // 积分获取规则
integralStrategyId: '', //策略id integralStrategyId: '', //策略id
enterpriseId: '', enterpriseId: '',
...@@ -483,7 +630,7 @@ export default { ...@@ -483,7 +630,7 @@ export default {
integralGet: { fee: '1', integral: '1' }, integralGet: { fee: '1', integral: '1' },
integralGetStrategy: '1', // 取整策略 1四舍五入 2抹零 3向上取整 integralGetStrategy: '1', // 取整策略 1四舍五入 2抹零 3向上取整
integralGetFreezeDays: 1, // 获取积分冻结天数 integralGetFreezeDays: 1, // 获取积分冻结天数
integralGetEffectiveDays: 1, // 获取积分有效天 integralGetEffectiveDays: '', // 获取积分有效天
integralUseStatus: '0', // 积分抵现开启 1是0否 integralUseStatus: '0', // 积分抵现开启 1是0否
// integralUse: { fee: undefined, integral: undefined }, // 积分抵现 {fee:5,integral:5} // integralUse: { fee: undefined, integral: undefined }, // 积分抵现 {fee:5,integral:5}
perpetualFlag: 1, perpetualFlag: 1,
...@@ -608,7 +755,7 @@ export default { ...@@ -608,7 +755,7 @@ export default {
useCrowd: { required: true, message: '请选择适用对象', trigger: 'blur' }, useCrowd: { required: true, message: '请选择适用对象', trigger: 'blur' },
integralGetStatus: { required: true, message: '请选择获取规则', trigger: 'blur' }, integralGetStatus: { required: true, message: '请选择获取规则', trigger: 'blur' },
integralGetFreezeDays: { required: true, message: '请输入积分冻结期', trigger: 'blur' }, integralGetFreezeDays: { required: true, message: '请输入积分冻结期', trigger: 'blur' },
integralGetEffectiveDays: { required: true, message: '请输入积分有效期', trigger: 'blur' }, userGeneralIntegralExpireRule: { required: true, message: '请输入有效期类型', trigger: 'blur' },
perpetualFlag: { required: true, message: '请选择策略有效期', trigger: 'blur' } perpetualFlag: { required: true, message: '请选择策略有效期', trigger: 'blur' }
}, },
cateOptions: [ cateOptions: [
...@@ -647,34 +794,61 @@ export default { ...@@ -647,34 +794,61 @@ export default {
}, },
methods: { methods: {
radioEvent0() { // 获取通用积分策略
this.ruleForm.channelList[0].integralUseDiscountControlLower = undefined; getPointInfo() {
this.ruleForm.channelList[0].integralUseDiscountControlUpper = undefined; var that = this
}, postRequest('/api-admin/get-member-integral-setting',{requestProject: that.projectName})
radioEvent1() { .then((res) => {
this.ruleForm.channelList[1].integralUseDiscountControlLower = undefined; var resData = res.data
this.ruleForm.channelList[1].integralUseDiscountControlUpper = undefined; if(resData.errorCode == 0) {
}, this.timeType = resData.result.memberIntegral.integralExpireType;
radioEvent2() { this.timeRuleType = resData.result.memberIntegral.integralExpireRule.split(',');
this.ruleForm.channelList[2].integralUseDiscountControlLower = undefined; if(this.timeType ==2) {
this.ruleForm.channelList[2].integralUseDiscountControlUpper = undefined; this.yearYT = Number(this.timeRuleType[0])
}, this.yearMT = Number(this.timeRuleType[1])
radioEvent3() { this.yearDT = Number(this.timeRuleType[2])
this.ruleForm.channelList[3].integralUseDiscountControlLower = undefined; }else if(this.timeType == 3) {
this.ruleForm.channelList[3].integralUseDiscountControlUpper = undefined; this.mouthMT = Number(this.timeRuleType[0])
}, this.mouthDT = Number(this.timeRuleType[1])
radioEvent4() { } else if (this.timeType == 0 || this.timeType == null) {
this.ruleForm.channelList[4].integralUseDiscountControlLower = undefined; this.effectiveDays = resData.result.memberIntegral.effectiveTime;
this.ruleForm.channelList[4].integralUseDiscountControlUpper = undefined; }
}
})
}, },
radioEvent5() { radioEventN(n) {
this.ruleForm.channelList[5].integralUseDiscountControlLower = undefined; this.ruleForm.channelList[n].integralUseDiscountControlLower = undefined;
this.ruleForm.channelList[5].integralUseDiscountControlUpper = undefined; this.ruleForm.channelList[n].integralUseDiscountControlUpper = undefined;
}, },
radioEvent() { radioEvent() {
this.ruleForm.integralGet.fee = undefined; this.ruleForm.integralGet.fee = undefined;
this.ruleForm.integralGet.integral = undefined; this.ruleForm.integralGet.integral = undefined;
}, },
radioExpireType1(e) {
if(e==0){
this.yearY='';
this.yearM='';
this.yearD='';
this.mouthM='';
this.mouthD='';
}else if(e==1) {
this.yearY='';
this.yearM='';
this.yearD='';
this.mouthM='';
this.mouthD='';
this.ruleForm.integralGetEffectiveDays = '';
}else if (e==2) {
this.mouthM='';
this.mouthD='';
this.ruleForm.integralGetEffectiveDays = '';
} else if (e == 3) {
this.yearY='';
this.yearM='';
this.yearD='';
this.ruleForm.integralGetEffectiveDays = '';
}
},
onStoreChange(item) { onStoreChange(item) {
if (item.channelType == 3) { if (item.channelType == 3) {
this.uuid = ''; this.uuid = '';
...@@ -718,10 +892,12 @@ export default { ...@@ -718,10 +892,12 @@ export default {
if (!!data.channelList[i].openStatus && data.channelList[i].integralUseDiscountControl == 2) { if (!!data.channelList[i].openStatus && data.channelList[i].integralUseDiscountControl == 2) {
if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) { if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '请填写折扣'; obj.text = '请填写折扣';
} }
if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) { if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '折扣格式有误'; obj.text = '折扣格式有误';
} }
} }
...@@ -801,10 +977,12 @@ export default { ...@@ -801,10 +977,12 @@ export default {
} }
if (data.integralGetStatus == 1) { if (data.integralGetStatus == 1) {
if (!Number(data.integralGet.fee)) { if (!Number(data.integralGet.fee)) {
this.scrollToError(this, 'integralGet');
showMsg.showmsg('获取规则中的消费金额不能为0', 'error'); showMsg.showmsg('获取规则中的消费金额不能为0', 'error');
return; return;
} }
if (!Number(data.integralGet.integral)) { if (!Number(data.integralGet.integral)) {
this.scrollToError(this, 'integralGet');
showMsg.showmsg('获取规则中的获取积分不能为0', 'error'); showMsg.showmsg('获取规则中的获取积分不能为0', 'error');
return; return;
} }
...@@ -813,9 +991,25 @@ export default { ...@@ -813,9 +991,25 @@ export default {
showMsg.showmsg('请填写积分冻结期', 'error'); showMsg.showmsg('请填写积分冻结期', 'error');
return; return;
} }
if (data.integralGetStatus == 1 && !Number(data.integralGetEffectiveDays)) { if (data.userGeneralIntegralExpireRule == 0) {
showMsg.showmsg('请填写积分有效期', 'error'); if(data.integralExpireType == null) {
return; this.scrollToError(this, 'mouthM');
showMsg.showmsg('请设置积分有效期','error')
return;
}
if(data.integralExpireType ==3 && (this.mouthM == '' || this.mouthD == -1)) {
this.scrollToError(this, 'mouthM');
showMsg.showmsg('请完善积分有效期信息','error')
return;
}else if(data.integralExpireType ==2 && (this.yearY == '' || this.yearM == '' || this.yearD == -1 )) {
this.scrollToError(this, 'yearY');
showMsg.showmsg('请完善积分有效期信息','error')
return;
} else if (data.integralExpireType ==0 && !Number(data.integralGetEffectiveDays)) {
this.scrollToError(this, 'integralGetEffectiveDays');
showMsg.showmsg('请完善积分有效期信息','error')
return;
}
} }
that.checkListValue(data).then(res => { that.checkListValue(data).then(res => {
if (!res.flag) { if (!res.flag) {
...@@ -876,11 +1070,33 @@ export default { ...@@ -876,11 +1070,33 @@ export default {
data.endValidTime = data.perpetualDate[1]; data.endValidTime = data.perpetualDate[1];
} }
delete data.perpetualDate; delete data.perpetualDate;
if(data.userGeneralIntegralExpireRule == 1) {
data.integralExpireType = this.timeType
if(this.timeType==0 || this.timeType == null){
data.integralGetEffectiveDays = this.effectiveDays
}else {
data.integralExpireRule = this.timeRuleType.toString()
}
}else if (data.userGeneralIntegralExpireRule == 0) {
if(data.integralExpireType == 0) {
data.integralExpireRule = ''
}else if(data.integralExpireType == 1) {
data.integralExpireRule = ''
data.integralGetEffectiveDays = ''
} else if(data.integralExpireType == 2) {
data.integralExpireRule = `${this.yearY},${this.yearM},${this.yearD}`
data.integralGetEffectiveDays = ''
}else if(data.integralExpireType == 3) {
data.integralExpireRule = `${this.mouthM},${this.mouthD}`
data.integralGetEffectiveDays = ''
}
}
that.saveForm(data); that.saveForm(data);
} }
}); });
} else { } else {
log('error submit!!'); this.scrollToError(this);
showMsg.showmsg('表单信息未填写完整','error')
return false; return false;
} }
}); });
...@@ -1290,10 +1506,11 @@ export default { ...@@ -1290,10 +1506,11 @@ export default {
}, },
created() { created() {
// this.selectReplayStyle() // this.selectReplayStyle()
log('create'); // log('create');
}, },
beforeMount() { beforeMount() {
log('beforeMount'); // log('beforeMount');
}, },
mounted() { mounted() {
let that = this; let that = this;
...@@ -1303,10 +1520,18 @@ export default { ...@@ -1303,10 +1520,18 @@ export default {
// 获取门店分组 // 获取门店分组
that.getStoreGroup(); that.getStoreGroup();
that.getLoginInfo(); that.getLoginInfo();
this.getPointInfo();
} }
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.selectwm {
width:120px;
margin:0 10px;
}
.mb20 {
margin-bottom: 20px;
}
.bottom{ .bottom{
position: fixed; position: fixed;
bottom: 0px; bottom: 0px;
......
...@@ -139,11 +139,11 @@ ...@@ -139,11 +139,11 @@
<el-input v-model="ruleForm.upLevelHighcost" @focus="inputFocus('upLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelHighcost" @focus="inputFocus('upLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelDaystoredSelect">当天储值满</el-checkbox> <el-checkbox v-model="ruleForm.upLevelDaystoredSelect">当天储值满</el-checkbox>
<el-input v-model="ruleForm.upLevelDaystored" @focus="inputFocus('upLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelDaystored" @focus="inputFocus('upLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumcostSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumcostSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumcostDays" @focus="inputFocus('upLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumcostDays" @focus="inputFocus('upLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -158,13 +158,13 @@ ...@@ -158,13 +158,13 @@
<el-input v-model="ruleForm.upLevelCosttimes" @focus="inputFocus('upLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelCosttimes" @focus="inputFocus('upLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumstoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumstoredSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumstoredDays" @focus="inputFocus('upLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumstoredDays" @focus="inputFocus('upLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内储值满</label> <label>天内储值满</label>
<el-input v-model="ruleForm.upLevelSumstored" @focus="inputFocus('upLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumstored" @focus="inputFocus('upLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumintegralSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumintegralSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumintegralDays" @focus="inputFocus('upLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumintegralDays" @focus="inputFocus('upLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -198,13 +198,13 @@ ...@@ -198,13 +198,13 @@
<el-input v-model="ruleForm.lowLevelHighcost" @focus="inputFocus('lowLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelHighcost" @focus="inputFocus('lowLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelDaystoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelDaystoredSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelDaystoredDays" @focus="inputFocus('lowLevelDaystoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelDaystoredDays" @focus="inputFocus('lowLevelDaystoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内单天储值满</label> <label>天内单天储值满</label>
<el-input v-model="ruleForm.lowLevelDaystored" @focus="inputFocus('lowLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelDaystored" @focus="inputFocus('lowLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumcostSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumcostSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumcostDays" @focus="inputFocus('lowLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumcostDays" @focus="inputFocus('lowLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -219,13 +219,13 @@ ...@@ -219,13 +219,13 @@
<el-input v-model="ruleForm.lowLevelCosttimes" @focus="inputFocus('lowLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelCosttimes" @focus="inputFocus('lowLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumstoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumstoredSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumstoredDays" @focus="inputFocus('lowLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumstoredDays" @focus="inputFocus('lowLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内储值满</label> <label>天内储值满</label>
<el-input v-model="ruleForm.lowLevelSumstored" @focus="inputFocus('lowLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumstored" @focus="inputFocus('lowLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumintegralSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumintegralSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumintegralDays" @focus="inputFocus('lowLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumintegralDays" @focus="inputFocus('lowLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input>
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</el-form-item> </el-form-item>
<el-form-item label="适用对象" prop class="margin-20"> <el-form-item label="适用对象" prop class="margin-20">
<el-select @change="changePeople" v-model="ruleForm.useCrowd" placeholder="请选择"> <el-select :disabled="true" @change="changePeople" v-model="ruleForm.useCrowd" placeholder="请选择">
<el-option <el-option
v-for="item in applyObjOption" v-for="item in applyObjOption"
:key="item.value" :key="item.value"
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="人群定向" v-if="ruleForm.useCrowd == 2" prop class="padding-0"> <el-form-item label="人群定向" v-if="ruleForm.useCrowd == 2" prop class="padding-0">
<el-button @click="showPeople">已设置{{ selectCount }}项筛选</el-button> <el-button :disabled="true" @click="showPeople">已设置{{ selectCount }}项筛选</el-button>
</el-form-item> </el-form-item>
<el-form-item label="适用条件" class="padding-0"> <el-form-item label="适用条件" class="padding-0">
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
<el-form-item label="适用商品" class="margin-20"> <el-form-item label="适用商品" class="margin-20">
<el-select <el-select
:disabled="opendisabled1"
class="fl w240" class="fl w240"
style="margin-right: 10px;" style="margin-right: 10px;"
v-model="item.channelRelationProType" v-model="item.channelRelationProType"
...@@ -82,8 +83,9 @@ ...@@ -82,8 +83,9 @@
<!-- 商品品牌 --> <!-- 商品品牌 -->
<el-select <el-select
:disabled="opendisabled1"
size="small" size="small"
class="fl w240" class="fl w240 valueWx"
@change="selectGoodsStoreWx" @change="selectGoodsStoreWx"
v-if="item.channelRelationProType == 2" v-if="item.channelRelationProType == 2"
v-model="valueWx" v-model="valueWx"
...@@ -99,8 +101,9 @@ ...@@ -99,8 +101,9 @@
</el-select> </el-select>
<!-- 商品品类 --> <!-- 商品品类 -->
<div v-if="item.channelRelationProType == 3" class="fl goods-cate"> <div v-if="item.channelRelationProType == 3" class="fl goods-cate cateDataWx">
<goodsCate <goodsCate
:disabled="opendisabled1"
ref="selectGoodsCate" ref="selectGoodsCate"
:selectCateType="selectCateTypeWx" :selectCateType="selectCateTypeWx"
:selectCateData="selectCateDataWx" :selectCateData="selectCateDataWx"
...@@ -109,8 +112,9 @@ ...@@ -109,8 +112,9 @@
</div> </div>
<el-button <el-button
:disabled="opendisabled1"
style="width:202px" style="width:202px"
class="fl" class="fl goodsListWx"
v-if="item.channelRelationProType == 4" v-if="item.channelRelationProType == 4"
@click="showGoodsDialog('wx')" @click="showGoodsDialog('wx')"
>已选{{ goodsListWx.length }}件商品</el-button> >已选{{ goodsListWx.length }}件商品</el-button>
...@@ -118,10 +122,10 @@ ...@@ -118,10 +122,10 @@
<el-form-item label="折扣控制:" prop="region" class="margin-20"> <el-form-item label="折扣控制:" prop="region" class="margin-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent2()">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventn(2)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20 padding-bottom-20"> <div class="radio-cell margin-20 padding-bottom-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk0" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<!-- <el-input @focus="inputFocus(item,'integralUseDiscountControlLower')" @change="formatInputChange($event)" v-model="item.integralUseDiscountControlLower"></el-input> --> <!-- <el-input @focus="inputFocus(item,'integralUseDiscountControlLower')" @change="formatInputChange($event)" v-model="item.integralUseDiscountControlLower"></el-input> -->
<el-input-number <el-input-number
v-model="item.integralUseDiscountControlLower" v-model="item.integralUseDiscountControlLower"
...@@ -164,19 +168,19 @@ ...@@ -164,19 +168,19 @@
<el-select v-model="storeValue" v-if="!isJinHua" class="w240"> <el-select v-model="storeValue" v-if="!isJinHua" class="w240">
<el-option label="所有门店" value=""></el-option> <el-option label="所有门店" value=""></el-option>
</el-select> </el-select>
<vue-gic-store-new v-else :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new> <vue-gic-store-new :disabled="opendisabled9" v-else :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new>
</el-form-item> </el-form-item>
<el-form-item label="微盟商品" class="margin-20"> <el-form-item label="微盟商品" class="margin-20">
<el-select v-model="item.channelRelationProType" placeholder="请选择" class="w240"> <el-select :disabled="opendisabled9" v-model="item.channelRelationProType" placeholder="请选择" class="w240">
<el-option v-for="item in wMGoodOption" :key="item.value" :label="item.label" :value="item.value"> </el-option> <el-option v-for="item in wMGoodOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20"> <el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent1()">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventn(1)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk1" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
...@@ -193,7 +197,7 @@ ...@@ -193,7 +197,7 @@
<div> <div>
<el-radio v-model="ruleForm.integralUseStatus" label="0" @change="radioEvent()">不支持抵现</el-radio> <el-radio v-model="ruleForm.integralUseStatus" label="0" @change="radioEvent()">不支持抵现</el-radio>
</div> </div>
<div class="margin-20"> <div class="margin-20 integralUse">
<el-radio v-model="ruleForm.integralUseStatus" label="1">每使用</el-radio> <el-radio v-model="ruleForm.integralUseStatus" label="1">每使用</el-radio>
<!-- <el-input @keyup.native="formatInputNum($event)" v-model="ruleForm.integralUse.integral"></el-input> --> <!-- <el-input @keyup.native="formatInputNum($event)" v-model="ruleForm.integralUse.integral"></el-input> -->
<el-input-number v-model="ruleForm.integralUse.integral" placeholder="请输入" :controls="false" step-strictly></el-input-number> <el-input-number v-model="ruleForm.integralUse.integral" placeholder="请输入" :controls="false" step-strictly></el-input-number>
...@@ -272,7 +276,7 @@ import strLength from '@/common/js/strlen'; ...@@ -272,7 +276,7 @@ import strLength from '@/common/js/strlen';
import { getRequest, postRequest, postJson } from '@/api/api'; import { getRequest, postRequest, postJson } from '@/api/api';
import { log } from '@/utils/index.js'; import { log } from '@/utils/index.js';
import wmMixins from './strategy.js'; import wmMixins from './strategy.js';
import { scrollToError } from '@/utils/validate';
const timeStramp = { const timeStramp = {
year: new Date().getFullYear(), year: new Date().getFullYear(),
month: new Date().getMonth(), month: new Date().getMonth(),
...@@ -284,6 +288,10 @@ export default { ...@@ -284,6 +288,10 @@ export default {
mixins: [wmMixins], mixins: [wmMixins],
data() { data() {
return { return {
scrollToError,
opendisabled3: false,
opendisabled1: false,
opendisabled9: false,
repProjectName: 'gic-clique', repProjectName: 'gic-clique',
navpath: [ navpath: [
{ {
...@@ -476,15 +484,9 @@ export default { ...@@ -476,15 +484,9 @@ export default {
that.getLoginInfo(); that.getLoginInfo();
}, },
methods: { methods: {
radioEvent2() { radioEventn(n) {
// console.log(this.ruleForm.channelType, 78787); this.ruleForm.channelList[n].integralUseDiscountControlLower = undefined;
this.ruleForm.channelList[0].integralUseDiscountControlLower = undefined; this.ruleForm.channelList[n].integralUseDiscountControlUpper = undefined;
this.ruleForm.channelList[0].integralUseDiscountControlUpper = undefined;
},
radioEvent1() {
// console.log(this.ruleForm.channelType, 78787);
this.ruleForm.channelList[1].integralUseDiscountControlLower = undefined;
this.ruleForm.channelList[1].integralUseDiscountControlUpper = undefined;
}, },
radioEvent() { radioEvent() {
this.ruleForm.integralUse.fee = undefined; this.ruleForm.integralUse.fee = undefined;
...@@ -505,19 +507,23 @@ export default { ...@@ -505,19 +507,23 @@ export default {
if (data.channelList[i].integralUseDiscountControl == 2) { if (data.channelList[i].integralUseDiscountControl == 2) {
if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) { if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '请填写折扣'; obj.text = '请填写折扣';
} }
if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) { if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '折扣格式有误'; obj.text = '折扣格式有误';
} }
} }
if (data.channelList[i].channelType == 1 && !data.channelList[i].enterpriseRelationIdArr.length) { if (data.channelList[i].channelType == 1 && !data.channelList[i].enterpriseRelationIdArr.length) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '请选择商户'; obj.text = '请选择商户';
} }
if (data.channelList[i].channelType == 9 && !data.channelList[i].enterpriseRelationIdArr.length) { if (data.channelList[i].channelType == 9 && !data.channelList[i].enterpriseRelationIdArr.length) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '请选择商户'; obj.text = '请选择商户';
} }
if (data.channelList[i].channelType == 9 && this.isJinHua) { if (data.channelList[i].channelType == 9 && this.isJinHua) {
...@@ -568,15 +574,18 @@ export default { ...@@ -568,15 +574,18 @@ export default {
// } // }
let flag = !data.integralUse.fee || String(data.integralUse.integral) == ''; let flag = !data.integralUse.fee || String(data.integralUse.integral) == '';
if (data.integralUseStatus == 1 && flag) { if (data.integralUseStatus == 1 && flag) {
this.scrollToError(this, 'integralUse');
that.$message.error('请填写抵现规则'); that.$message.error('请填写抵现规则');
return; return;
} }
if (data.integralUseStatus == 1) { if (data.integralUseStatus == 1) {
if (!Number(data.integralUse.fee)) { if (!Number(data.integralUse.fee)) {
this.scrollToError(this, 'integralUse');
showMsg.showmsg('抵现规则中的抵现金额不能为0', 'error'); showMsg.showmsg('抵现规则中的抵现金额不能为0', 'error');
return; return;
} }
if (!Number(data.integralUse.integral)) { if (!Number(data.integralUse.integral)) {
this.scrollToError(this, 'integralUse');
showMsg.showmsg('抵现规则中的使用积分不能为0', 'error'); showMsg.showmsg('抵现规则中的使用积分不能为0', 'error');
return; return;
} }
...@@ -628,16 +637,19 @@ export default { ...@@ -628,16 +637,19 @@ export default {
// 微信商城 // 微信商城
// 适用商品 // 适用商品
if (item.channelRelationProType == 2 && this.valueWx.length < 1) { if (item.channelRelationProType == 2 && this.valueWx.length < 1) {
this.scrollToError(this, 'valueWx');
// 商品品牌 // 商品品牌
showMsg.showmsg('请选择商品品牌', 'error'); showMsg.showmsg('请选择商品品牌', 'error');
return (saveBool = false); return (saveBool = false);
} }
if (item.channelRelationProType == 3 && this.cateDataWx.length < 1) { if (item.channelRelationProType == 3 && this.cateDataWx.length < 1) {
this.scrollToError(this, 'cateDataWx');
// 商品品类 // 商品品类
showMsg.showmsg('请选择商品品类', 'error'); showMsg.showmsg('请选择商品品类', 'error');
return (saveBool = false); return (saveBool = false);
} }
if (item.channelRelationProType == 4 && this.goodsListWx.length < 1) { if (item.channelRelationProType == 4 && this.goodsListWx.length < 1) {
this.scrollToError(this, 'goodsListWx');
// 单件商品 // 单件商品
showMsg.showmsg('请选择单件商品', 'error'); showMsg.showmsg('请选择单件商品', 'error');
return (saveBool = false); return (saveBool = false);
...@@ -646,6 +658,7 @@ export default { ...@@ -646,6 +658,7 @@ export default {
}); });
// 自定义人群 // 自定义人群
if (data.useCrowd == 2 && this.selectCount < 1) { if (data.useCrowd == 2 && this.selectCount < 1) {
this.scrollToError(this, 'selectCount');
showMsg.showmsg('请选择人群定向', 'error'); showMsg.showmsg('请选择人群定向', 'error');
return; return;
} }
...@@ -680,7 +693,8 @@ export default { ...@@ -680,7 +693,8 @@ export default {
} }
}) })
} else { } else {
log('error submit!!'); this.scrollToError(this);
showMsg.showmsg('表单信息未填写完整','error')
return false; return false;
} }
}); });
...@@ -797,6 +811,15 @@ export default { ...@@ -797,6 +811,15 @@ export default {
if (item.channelList) { if (item.channelList) {
item.channelList.forEach(item => { item.channelList.forEach(item => {
if(item.openStatus == true) {
if(item.channelType==3) {
this.opendisabled3 = true;
}else if(item.channelType==1) {
this.opendisabled1 = true;
}else if(item.channelType==9) {
this.opendisabled9 = true;
}
}
if(item.openStatus == false) { if(item.openStatus == false) {
item.integralUseDiscountControl == 1 item.integralUseDiscountControl == 1
} }
......
...@@ -37,11 +37,11 @@ ...@@ -37,11 +37,11 @@
<el-input v-model="ruleForm.upLevelHighcost" @focus="inputFocus('upLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelHighcost" @focus="inputFocus('upLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelDaystoredSelect">当天储值满</el-checkbox> <el-checkbox v-model="ruleForm.upLevelDaystoredSelect">当天储值满</el-checkbox>
<el-input v-model="ruleForm.upLevelDaystored" @focus="inputFocus('upLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelDaystored" @focus="inputFocus('upLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumcostSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumcostSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumcostDays" @focus="inputFocus('upLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumcostDays" @focus="inputFocus('upLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -56,13 +56,13 @@ ...@@ -56,13 +56,13 @@
<el-input v-model="ruleForm.upLevelCosttimes" @focus="inputFocus('upLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelCosttimes" @focus="inputFocus('upLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumstoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumstoredSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumstoredDays" @focus="inputFocus('upLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumstoredDays" @focus="inputFocus('upLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内储值满</label> <label>天内储值满</label>
<el-input v-model="ruleForm.upLevelSumstored" @focus="inputFocus('upLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumstored" @focus="inputFocus('upLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.upLevelSumintegralSelect"></el-checkbox> <el-checkbox v-model="ruleForm.upLevelSumintegralSelect"></el-checkbox>
<el-input v-model="ruleForm.upLevelSumintegralDays" @focus="inputFocus('upLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.upLevelSumintegralDays" @focus="inputFocus('upLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -96,13 +96,13 @@ ...@@ -96,13 +96,13 @@
<el-input v-model="ruleForm.lowLevelHighcost" @focus="inputFocus('lowLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelHighcost" @focus="inputFocus('lowLevelHighcost', 'money')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelDaystoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelDaystoredSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelDaystoredDays" @focus="inputFocus('lowLevelDaystoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelDaystoredDays" @focus="inputFocus('lowLevelDaystoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内单天储值满</label> <label>天内单天储值满</label>
<el-input v-model="ruleForm.lowLevelDaystored" @focus="inputFocus('lowLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelDaystored" @focus="inputFocus('lowLevelDaystored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumcostSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumcostSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumcostDays" @focus="inputFocus('lowLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumcostDays" @focus="inputFocus('lowLevelSumcostDays', 'day')" @keyup.native="formatInput($event)"></el-input>
...@@ -117,13 +117,13 @@ ...@@ -117,13 +117,13 @@
<el-input v-model="ruleForm.lowLevelCosttimes" @focus="inputFocus('lowLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelCosttimes" @focus="inputFocus('lowLevelCosttimes', 'day')" @keyup.native="formatInput($event)"></el-input>
<label></label> <label></label>
</div> </div>
<div class="check-cell"> <!-- <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumstoredSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumstoredSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumstoredDays" @focus="inputFocus('lowLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumstoredDays" @focus="inputFocus('lowLevelSumstoredDays', 'day')" @keyup.native="formatInput($event)"></el-input>
<label>天内储值满</label> <label>天内储值满</label>
<el-input v-model="ruleForm.lowLevelSumstored" @focus="inputFocus('lowLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumstored" @focus="inputFocus('lowLevelSumstored', 'money')" @keyup.native="formatInput($event)"></el-input>
<label> 元 </label> <label> 元 </label>
</div> </div> -->
<div class="check-cell"> <div class="check-cell">
<el-checkbox v-model="ruleForm.lowLevelSumintegralSelect"></el-checkbox> <el-checkbox v-model="ruleForm.lowLevelSumintegralSelect"></el-checkbox>
<el-input v-model="ruleForm.lowLevelSumintegralDays" @focus="inputFocus('lowLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input> <el-input v-model="ruleForm.lowLevelSumintegralDays" @focus="inputFocus('lowLevelSumintegralDays', 'day')" @keyup.native="formatInput($event)"></el-input>
......
...@@ -34,10 +34,12 @@ ...@@ -34,10 +34,12 @@
:uuid.sync="uuid" :uuid.sync="uuid"
:isClique="true" :isClique="true"
ref="storeGroup" ref="storeGroup"
:readonly="opendisabled3"
></dm-store-selector> ></dm-store-selector>
</el-form-item> </el-form-item>
<el-form-item label="适用商品:" prop="name" class="margin-20"> <el-form-item label="适用商品:" prop="name" class="margin-20">
<el-select <el-select
:disabled="opendisabled3"
class=" w215" class=" w215"
v-model="item.channelRelationProType" v-model="item.channelRelationProType"
placeholder="请选择" placeholder="请选择"
...@@ -52,6 +54,7 @@ ...@@ -52,6 +54,7 @@
</el-select> </el-select>
<!-- 二级 --> <!-- 二级 -->
<span <span
:disabled="opendisabled3"
class="span-txt" class="span-txt"
ref="treeinput" ref="treeinput"
v-if="item.channelRelationProType == 2" v-if="item.channelRelationProType == 2"
...@@ -64,6 +67,7 @@ ...@@ -64,6 +67,7 @@
@click="toggle('brand')" @click="toggle('brand')"
>已选择 {{ item.strategyGoodsRelationIdArr ? item.strategyGoodsRelationIdArr.length : 0 }} 个品类</span> >已选择 {{ item.strategyGoodsRelationIdArr ? item.strategyGoodsRelationIdArr.length : 0 }} 个品类</span>
<treeselect <treeselect
:disabled="opendisabled3"
v-if="item.channelRelationProType == 2 || item.channelRelationProType == 3" v-if="item.channelRelationProType == 2 || item.channelRelationProType == 3"
placeholder placeholder
noOptionsText="暂无数据" noOptionsText="暂无数据"
...@@ -80,16 +84,17 @@ ...@@ -80,16 +84,17 @@
/> />
<!--:default-expand-level="1":load-options="loadOptions" :normalizer="normalizer" :always-open="goodsOpen" --> <!--:default-expand-level="1":load-options="loadOptions" :normalizer="normalizer" :always-open="goodsOpen" -->
<el-button <el-button
:disabled="opendisabled3"
v-if="item.channelRelationProType == 4" v-if="item.channelRelationProType == 4"
@click="showGoodsDialog" @click="showGoodsDialog"
>已选0件商品</el-button> >已选0件商品</el-button>
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="margin-20 padding-bottom-20"> <el-form-item label="折扣控制:" prop="region" class="margin-20 padding-bottom-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent0">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(0)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk0" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<!-- <el-input v-model="item.integralUseDiscountControlLower" @focus="inputFocus(item)" @keyup.native="formatInput($event)"></el-input> --> <!-- <el-input v-model="item.integralUseDiscountControlLower" @focus="inputFocus(item)" @keyup.native="formatInput($event)"></el-input> -->
<el-input-number <el-input-number
v-model="item.integralUseDiscountControlLower" v-model="item.integralUseDiscountControlLower"
...@@ -144,6 +149,7 @@ ...@@ -144,6 +149,7 @@
<el-form-item label="适用商品:" class="margin-20"> <el-form-item label="适用商品:" class="margin-20">
<el-select <el-select
:disabled="opendisabled1"
class="w215" class="w215"
v-model="item.channelRelationProType" v-model="item.channelRelationProType"
placeholder="请选择" placeholder="请选择"
...@@ -158,18 +164,21 @@ ...@@ -158,18 +164,21 @@
</el-select> </el-select>
<!-- 二级 --> <!-- 二级 -->
<span <span
:disabled="opendisabled1"
class="span-txt" class="span-txt"
ref="treeinput" ref="treeinput"
v-if="item.channelRelationProType == 2" v-if="item.channelRelationProType == 2"
@click="toggle('wx')" @click="toggle('wx')"
>已选择 {{ item.goodsRelationIds ? item.goodsRelationIds.length : 0 }} 个品牌</span> >已选择 {{ item.goodsRelationIds ? item.goodsRelationIds.length : 0 }} 个品牌</span>
<span <span
:disabled="opendisabled1"
class="span-txt" class="span-txt"
ref="treeinput" ref="treeinput"
v-if="item.channelRelationProType == 3" v-if="item.channelRelationProType == 3"
@click="toggle('wx')" @click="toggle('wx')"
>已选择 {{ item.goodsRelationIds ? item.goodsRelationIds.length : 0 }} 个品类</span> >已选择 {{ item.goodsRelationIds ? item.goodsRelationIds.length : 0 }} 个品类</span>
<treeselect <treeselect
:disabled="opendisabled1"
v-if="item.channelRelationProType == 2 || item.channelRelationProType == 3" v-if="item.channelRelationProType == 2 || item.channelRelationProType == 3"
placeholder placeholder
noOptionsText="暂无数据" noOptionsText="暂无数据"
...@@ -185,16 +194,17 @@ ...@@ -185,16 +194,17 @@
/> />
<!--model=item.strategyGoodsRelationIds和上一个相同会有问题 --> <!--model=item.strategyGoodsRelationIds和上一个相同会有问题 -->
<el-button <el-button
:disabled="opendisabled1"
v-if="item.channelRelationProType == 4" v-if="item.channelRelationProType == 4"
@click="showGoodsDialog" @click="showGoodsDialog"
>已选0件商品</el-button> >已选0件商品</el-button>
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="margin-20 padding-bottom-20"> <el-form-item label="折扣控制:" prop="region" class="margin-20 padding-bottom-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent1">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(1)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk1" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<!-- <el-input v-model="item.integralUseDiscountControlLower" @focus="inputFocus(item)" @keyup.native="formatInput($event)"></el-input> --> <!-- <el-input v-model="item.integralUseDiscountControlLower" @focus="inputFocus(item)" @keyup.native="formatInput($event)"></el-input> -->
<el-input-number <el-input-number
v-model="item.integralUseDiscountControlLower" v-model="item.integralUseDiscountControlLower"
...@@ -283,21 +293,21 @@ ...@@ -283,21 +293,21 @@
</el-form-item> </el-form-item>
<el-form-item label="选择店铺:" class="margin-20"> <el-form-item label="选择店铺:" class="margin-20">
<el-select v-model="storeValue" v-if="!isJinHua" class="w215"> <el-select v-model="storeValue" v-if="!isJinHua" class="w215">
<el-option label="所有门店:" value=""></el-option> <el-option label="所有门店" value=""></el-option>
</el-select> </el-select>
<vue-gic-store-new v-else :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new> <vue-gic-store-new :disabled="opendisabled9" v-else :scenesVal="scencs" :options="options" :isAdd="isAdd" :uuid.sync="wmuuid" ref="wmstoreGroup"></vue-gic-store-new>
</el-form-item> </el-form-item>
<el-form-item label="微盟商品:" class="margin-20"> <el-form-item label="微盟商品:" class="margin-20">
<el-select v-model="item.channelRelationProType" placeholder="请选择" class="w215"> <el-select :disabled="opendisabled9" v-model="item.channelRelationProType" placeholder="请选择" class="w215">
<el-option v-for="item in wMGoodOption" :key="item.value" :label="item.label" :value="item.value"> </el-option> <el-option v-for="item in wMGoodOption" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20"> <el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent2">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(2)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk2" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
...@@ -321,10 +331,10 @@ ...@@ -321,10 +331,10 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20"> <el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent3">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(3)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk3" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
...@@ -348,10 +358,10 @@ ...@@ -348,10 +358,10 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20"> <el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent4">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(4)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk4" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
...@@ -375,10 +385,10 @@ ...@@ -375,10 +385,10 @@
</el-form-item> </el-form-item>
<el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20"> <el-form-item label="折扣控制:" prop="region" class="input-margin-b margin-20 padding-bottom-20">
<div class="radio-cell"> <div class="radio-cell">
<el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEvent5">所有折扣商品都适用</el-radio> <el-radio v-model="item.integralUseDiscountControl" label="1" @change="radioEventN(5)">所有折扣商品都适用</el-radio>
</div> </div>
<div class="radio-cell margin-20"> <div class="radio-cell margin-20">
<el-radio v-model="item.integralUseDiscountControl" label="2">折扣</el-radio> <el-radio class="zk5" v-model="item.integralUseDiscountControl" label="2">折扣</el-radio>
<el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlLower" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
<label></label> <label></label>
<el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number> <el-input-number v-model="item.integralUseDiscountControlUpper" placeholder="请输入" :precision="2" :controls="false" :max="10.0" :min="1"></el-input-number>
...@@ -393,11 +403,11 @@ ...@@ -393,11 +403,11 @@
<dm-sub-title text="规则配置" type="fill" style="margin: 40px 0 20px"></dm-sub-title> <dm-sub-title text="规则配置" type="fill" style="margin: 40px 0 20px"></dm-sub-title>
<el-form-item label="适用对象:" prop="useCrowd" class="margin-20"> <el-form-item label="适用对象:" prop="useCrowd" class="margin-20">
<el-radio-group v-model="ruleForm.useCrowd"> <el-radio-group v-model="ruleForm.useCrowd">
<el-radio v-for="item in applyObjOption" :key="item.value" :label="item.value">{{ item.label }}</el-radio> <el-radio :disabled="true" v-for="item in applyObjOption" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="人群定向" v-if="ruleForm.useCrowd == 2" prop="" class="padding-0"> <el-form-item label="人群定向" v-if="ruleForm.useCrowd == 2" prop="" class="padding-0">
<el-button style="width: 214px;" @click="showPeople">已设置{{ selectCount }}项筛选</el-button> <el-button :disabled="true" style="width: 214px;" @click="showPeople">已设置{{ selectCount }}项筛选</el-button>
</el-form-item> </el-form-item>
<el-form-item label="获取规则:" prop="integralGetStatus"> <el-form-item label="获取规则:" prop="integralGetStatus">
<div> <div>
...@@ -421,8 +431,109 @@ ...@@ -421,8 +431,109 @@
<label>自获取之日起</label><el-input v-model="ruleForm.integralGetFreezeDays" @keyup.native="formatInputNum($event)"></el-input><label></label> <label>自获取之日起</label><el-input v-model="ruleForm.integralGetFreezeDays" @keyup.native="formatInputNum($event)"></el-input><label></label>
<span style="font-size: 12px;color: #828282;line-height: 1;padding-left: 10px;">仅对通过订单获取的积分生效,活动类获取的积分没有冻结期</span> <span style="font-size: 12px;color: #828282;line-height: 1;padding-left: 10px;">仅对通过订单获取的积分生效,活动类获取的积分没有冻结期</span>
</el-form-item> </el-form-item>
<el-form-item label="积分有效期:" v-if="ruleForm.integralGetStatus == 1" prop="integralGetEffectiveDays"> <el-form-item label="积分有效期:" prop="userGeneralIntegralExpireRule">
<label>自获取之日起</label><el-input v-model="ruleForm.integralGetEffectiveDays" @keyup.native="formatInputNum($event)"></el-input><label></label> <el-radio v-model="ruleForm.userGeneralIntegralExpireRule" @change="radiouserGeneralIntegralExpireRule" :label="1">通用积分策略有效期</el-radio>
<el-radio v-model="ruleForm.userGeneralIntegralExpireRule" @change="radiouserGeneralIntegralExpireRule" :label="0">自定义有效期
<el-tooltip placement="right" effect="light">
<div slot="content" style="line-height:20px">
<p style="color:#595959 font-size:14px;font-weight:600">规则说明:</p>
<p style="color:#e6a23c">
仅GIC计算积分时,配置的积分有效期才会生效,<br/>
ERP计算积分时,此配置项不生效;
</p>
<ul>
<li>1、永久有效:客户获取的积分永久有效,系统不会清零;</li>
<li>2、按年失效:在第X年的X月X日失效:例:设置第二年的12月1日失效,则2021年获取的所有积分在2022年12月1日失效;</li>
<li>3、按月失效:在第X个月的X日失效:例:设置第二月的1日失效,则3月获取的所有积分在4月1日失效;</li>
<li>4、按天失效:每天获取的所有积分在获取之日起365天后失效:例:设置365天,则2022年12月1号获取的积分在2023年12月1号失效;</li>
<li>5、修改积分有效期后,已经获取的积分有效期不变,后续获取的积分按照修改后的积分有效期生效;</li>
</ul>
</div>
<i class="iconfont icon-QuestionCircleOutlined" style="font-size:12px;color:#606266;"></i>
</el-tooltip>
</el-radio>
<!-- 通用积分有效期 -->
<div v-if="ruleForm.userGeneralIntegralExpireRule == 1">
<div class="radio-cell" v-if="timeType == 1">
<el-radio v-model="ruleForm.integralExpireType" label="1" @change="radioExpireType1" disabled="true">永久有效</el-radio>
</div>
<div class="radio-cell" v-else-if="timeType == 2">
<el-radio v-model="ruleForm.integralExpireType" label="2" disabled="true"><label>按年失效:</label></el-radio>
<label>每年获取的所有积分,在</label>
<el-select v-model="yearYT" placeholder="请选择" style="width:120px;margin-right:20px" disabled="true">
<el-option v-for="n in yearList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="yearMT" placeholder="请选择" style="width:120px;margin-right:20px" disabled="true">
<el-option v-for="n in 12" :key="n" :label="n" :value="n"></el-option>
</el-select>
<label></label>
<el-select v-model="yearDT" placeholder="请选择" style="width:120px;margin-right:20px" disabled="true">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<div class="radio-cell" v-else-if="timeType == 3">
<el-radio v-model="ruleForm.integralExpireType" label="3" disabled="true"><label>按月失效:</label></el-radio>
<label>每月获取的所有积分,在</label>
<el-select v-model="mouthMT" placeholder="请选择" style="width:120px;margin-right:20px" disabled="true">
<el-option v-for="n in mouthList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="mouthDT" placeholder="请选择" style="width:120px; margin-right:20px" disabled="true">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<div class="radio-cell" v-else-if="timeType == 0 || timeType == null">
<el-radio v-model="ruleForm.integralExpireType" label="0" disabled="true">
<label>每天获取的所有积分,在获取之日起</label></el-radio>
<el-input placeholder="请输入" style="width:115px" v-model="effectiveDays" @keyup.native="formatInput($event)" disabled="true"></el-input>
<label>天后失效</label>
<span style="font-size: 12px;color: #909399;line-height: 1;padding-left: 10px;">建议不超过3年(1095天)</span>
</div>
<div class="radio-cell" v-else>
<p style="color:red;">还未配置通用积分策略,请先配置通用积分策略再选择「通用积分策略有效期」</p>
</div>
</div>
<!-- 自定义有效期 -->
<div class="form-child" style="padding:20px" v-if="ruleForm.userGeneralIntegralExpireRule == 0">
<div class="radio-cell mb20">
<el-radio v-model="ruleForm.integralExpireType" :label="2" @change="radioExpireType1">按年失效:</el-radio>
<label>每年获取的所有积分,在</label>
<el-select v-model="yearY" placeholder="请选择" class="selectwm">
<el-option v-for="n in yearList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="yearM" placeholder="请选择" class="selectwm">
<el-option v-for="n in 12" :key="n" :label="n" :value="n"></el-option>
</el-select>
<label></label>
<el-select v-model="yearD" placeholder="请选择" class="selectwm">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<div class="radio-cell mb20">
<el-radio v-model="ruleForm.integralExpireType" :label="3" @change="radioExpireType1">按月失效:</el-radio>
<label>每月获取的所有积分,在</label>
<el-select v-model="mouthM" placeholder="请选择" class="selectwm">
<el-option v-for="n in mouthList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label></label>
<el-select v-model="mouthD" placeholder="请选择" class="selectwm">
<el-option v-for="n in dayList" :key="n.key" :label="n.value" :value="n.key"></el-option>
</el-select>
<label>日失效</label>
</div>
<div class="radio-cell">
<el-radio v-model="ruleForm.integralExpireType" :label="0" @change="radioExpireType1">按天失效:</el-radio>
<label>每天获取的所有积分,在获取之日起</label>
<el-input placeholder="请输入" style="width:115px" v-model="ruleForm.integralGetEffectiveDays" @keyup.native="formatInput($event)"></el-input>
<label>天后失效</label>
<span style="font-size: 12px;color: #909399;line-height: 1;padding-left: 10px;">建议不超过3年(1095天)</span>
</div>
</div>
</el-form-item> </el-form-item>
<!-- 新增策略有效期配置 --> <!-- 新增策略有效期配置 -->
<el-form-item label="策略有效期:" prop="perpetualFlag"> <el-form-item label="策略有效期:" prop="perpetualFlag">
...@@ -480,8 +591,8 @@ ...@@ -480,8 +591,8 @@
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-row> <el-row>
<el-button @click="dialogVisiblePeople = false">取 消</el-button> <el-button :disabled="true" @click="dialogVisiblePeople = false">取 消</el-button>
<el-button type="primary" @click="getPeopleData">确 定</el-button> <el-button :disabled="true" type="primary" @click="getPeopleData">确 定</el-button>
</el-row> </el-row>
</span> </span>
</el-dialog> </el-dialog>
...@@ -500,6 +611,7 @@ import { postRequest, postJson } from '@/api/api'; ...@@ -500,6 +611,7 @@ import { postRequest, postJson } from '@/api/api';
import strLength from '@/common/js/strlen'; import strLength from '@/common/js/strlen';
import { log } from '@/utils/index.js'; import { log } from '@/utils/index.js';
import wmMixins from './strategy.js'; import wmMixins from './strategy.js';
import { scrollToError } from '@/utils/validate';
const timeStramp = { const timeStramp = {
year: new Date().getFullYear(), year: new Date().getFullYear(),
...@@ -511,7 +623,52 @@ export default { ...@@ -511,7 +623,52 @@ export default {
name: 'editPointSytem', name: 'editPointSytem',
mixins: [wmMixins], mixins: [wmMixins],
data() { data() {
// 天数
const dayList = ()=> {
let arr = []
for(let i = 1; i < 28; i++){
arr.push({key: i,value: i})
}
arr.push({key: 0, value: '月末'})
return arr;
}
// 月数
const mouthList = ()=> {
let arr = []
for(let i = 2; i < 37; i++){
arr.push({key: i,value: `第${i}个月`})
}
return arr;
}
// 年数
const yearList = ()=> {
let arr = []
for(let i = 2; i < 5; i++){
arr.push({key: i,value: `第${i}年`})
}
return arr;
}
return { return {
scrollToError,
opendisabled3: false,
opendisabled1: false,
opendisabled9: false,
yearYT: '', //按年失效 年
yearMT: '', //按年失效 月
yearDT: '', //按年失效 日
mouthMT: '', //按月失效 月
mouthDT: '', //按月失效 月
effectiveDays: undefined,
timeType: '',
timeRuleType: '',
dayList: dayList(),
mouthList: mouthList(),
mouthM: '', //按月失效 月
mouthD: '', //按月失效 月
yearList: yearList(),
yearY: '', //按年失效 年
yearM: '', //按年失效 月
yearD: '', //按年失效 日
repProjectName: 'gic-clique', repProjectName: 'gic-clique',
navpath: [ navpath: [
{ {
...@@ -660,11 +817,14 @@ export default { ...@@ -660,11 +817,14 @@ export default {
useCrowd: { required: true, message: '请选择适用对象', trigger: 'blur' }, useCrowd: { required: true, message: '请选择适用对象', trigger: 'blur' },
integralGetStatus: { required: true, message: '请选择获取规则', trigger: 'blur' }, integralGetStatus: { required: true, message: '请选择获取规则', trigger: 'blur' },
integralGetFreezeDays: { required: true, message: '请输入积分冻结期', trigger: 'blur' }, integralGetFreezeDays: { required: true, message: '请输入积分冻结期', trigger: 'blur' },
integralGetEffectiveDays: { required: true, message: '请输入积分有效期', trigger: 'blur' }, userGeneralIntegralExpireRule: { required: true, message: '请输入有效期类型', trigger: 'blur' },
perpetualFlag: { required: true, message: '请选择策略有效期', trigger: 'blur' } perpetualFlag: { required: true, message: '请选择策略有效期', trigger: 'blur' }
}, },
ruleForm: { ruleForm: {
userGeneralIntegralExpireRule: 1,
integralExpireType: '1', //积分有效期类型 0 未默认滚动到期 1永久 2 按年失效 3按月失效
integralExpireRule: '', //积分有效期规则 年 x(年),x(月),x(日,为0标识月末) 月,x(月),x(日,为0标识月末)
// 积分获取规则 // 积分获取规则
integralStrategyId: 'ff80808163a7a09b0163b01171e202db', //策略id integralStrategyId: 'ff80808163a7a09b0163b01171e202db', //策略id
enterpriseId: 'ff8080815dacd3a2015dacd3ef5c0000', enterpriseId: 'ff8080815dacd3a2015dacd3ef5c0000',
...@@ -676,7 +836,7 @@ export default { ...@@ -676,7 +836,7 @@ export default {
integralGet: { fee: undefined, integral: undefined }, integralGet: { fee: undefined, integral: undefined },
integralGetStrategy: '1', // 取整策略 1四舍五入 2抹零 3向上取整 integralGetStrategy: '1', // 取整策略 1四舍五入 2抹零 3向上取整
integralGetFreezeDays: 1, // 获取积分冻结天数 integralGetFreezeDays: 1, // 获取积分冻结天数
integralGetEffectiveDays: 1, // 获取积分有效天 integralGetEffectiveDays: '', // 获取积分有效天
integralUseStatus: 0, // 积分抵现开启 1是0否 integralUseStatus: 0, // 积分抵现开启 1是0否
// integralUse: { fee: undefined, integral: undefined }, // 积分抵现 {fee:5,integral:5} // integralUse: { fee: undefined, integral: undefined }, // 积分抵现 {fee:5,integral:5}
perpetualFlag: 1, perpetualFlag: 1,
...@@ -722,34 +882,66 @@ export default { ...@@ -722,34 +882,66 @@ export default {
}, },
methods: { methods: {
radioEvent0() { radiouserGeneralIntegralExpireRule(e) {
this.ruleForm.channelList[0].integralUseDiscountControlLower = undefined; if(e==1) {
this.ruleForm.channelList[0].integralUseDiscountControlUpper = undefined; this.getPointInfo();
}, }
radioEvent1() {
this.ruleForm.channelList[1].integralUseDiscountControlLower = undefined;
this.ruleForm.channelList[1].integralUseDiscountControlUpper = undefined;
},
radioEvent2() {
this.ruleForm.channelList[2].integralUseDiscountControlLower = undefined;
this.ruleForm.channelList[2].integralUseDiscountControlUpper = undefined;
},
radioEvent3() {
this.ruleForm.channelList[3].integralUseDiscountControlLower = undefined;
this.ruleForm.channelList[3].integralUseDiscountControlUpper = undefined;
}, },
radioEvent4() { // 获取通用积分策略
this.ruleForm.channelList[4].integralUseDiscountControlLower = undefined; getPointInfo() {
this.ruleForm.channelList[4].integralUseDiscountControlUpper = undefined; var that = this
postRequest('/api-admin/get-member-integral-setting',{requestProject: that.projectName})
.then((res) => {
var resData = res.data
if(resData.errorCode == 0) {
this.timeType = resData.result.memberIntegral.integralExpireType;
this.timeRuleType = resData.result.memberIntegral.integralExpireRule.split(',');
if(this.timeType ==2) {
this.yearYT = Number(this.timeRuleType[0])
this.yearMT = Number(this.timeRuleType[1])
this.yearDT = Number(this.timeRuleType[2])
}else if(this.timeType == 3) {
this.mouthMT = Number(this.timeRuleType[0])
this.mouthDT = Number(this.timeRuleType[1])
} else if (this.timeType == 0 || this.timeType == null) {
this.effectiveDays = resData.result.memberIntegral.effectiveTime;
}
}
})
}, },
radioEvent5() { radioEventN(n) {
this.ruleForm.channelList[5].integralUseDiscountControlLower = undefined; this.ruleForm.channelList[n].integralUseDiscountControlLower = undefined;
this.ruleForm.channelList[5].integralUseDiscountControlUpper = undefined; this.ruleForm.channelList[n].integralUseDiscountControlUpper = undefined;
}, },
radioEvent() { radioEvent() {
this.ruleForm.integralGet.fee = undefined; this.ruleForm.integralGet.fee = undefined;
this.ruleForm.integralGet.integral = undefined; this.ruleForm.integralGet.integral = undefined;
}, },
radioExpireType1(e) {
if(e==0){
this.yearY='';
this.yearM='';
this.yearD='';
this.mouthM='';
this.mouthD='';
}else if(e==1) {
this.yearY='';
this.yearM='';
this.yearD='';
this.mouthM='';
this.mouthD='';
this.ruleForm.integralGetEffectiveDays = '';
}else if (e==2) {
this.mouthM='';
this.mouthD='';
this.ruleForm.integralGetEffectiveDays = '';
} else if (e == 3) {
this.yearY='';
this.yearM='';
this.yearD='';
this.ruleForm.integralGetEffectiveDays = '';
}
},
// 返回 // 返回
goBack() { goBack() {
this.$router.go(-1); this.$router.go(-1);
...@@ -797,10 +989,12 @@ export default { ...@@ -797,10 +989,12 @@ export default {
if (data.channelList[i].integralUseDiscountControl == 2) { if (data.channelList[i].integralUseDiscountControl == 2) {
if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) { if (!data.channelList[i].integralUseDiscountControlUpper || !data.channelList[i].integralUseDiscountControlLower) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '请填写折扣'; obj.text = '请填写折扣';
} }
if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) { if (parseInt(data.channelList[i].integralUseDiscountControlUpper) > 10 || parseInt(data.channelList[i].integralUseDiscountControlLower) > 10 || Number(data.channelList[i].integralUseDiscountControlUpper) <= Number(data.channelList[i].integralUseDiscountControlLower)) {
obj.flag = false; obj.flag = false;
this.scrollToError(this, `zk${i}`);
obj.text = '折扣格式有误'; obj.text = '折扣格式有误';
} }
} }
...@@ -859,26 +1053,40 @@ export default { ...@@ -859,26 +1053,40 @@ export default {
} }
let flag = !data.integralGet.fee || String(data.integralGet.integral) == ''; let flag = !data.integralGet.fee || String(data.integralGet.integral) == '';
if (data.integralGetStatus == 1 && flag) { if (data.integralGetStatus == 1 && flag) {
this.scrollToError(this, 'integralGet');
showMsg.showmsg('请填写获取规则', 'error'); showMsg.showmsg('请填写获取规则', 'error');
return; return;
} }
if (data.integralGetStatus == 1) { if (data.integralGetStatus == 1) {
if (!Number(data.integralGet.fee)) { if (!Number(data.integralGet.fee)) {
this.scrollToError(this, 'integralGet');
showMsg.showmsg('获取规则中的消费金额不能为0', 'error'); showMsg.showmsg('获取规则中的消费金额不能为0', 'error');
return; return;
} }
if (!Number(data.integralGet.integral)) { if (!Number(data.integralGet.integral)) {
this.scrollToError(this, 'integralGet');
showMsg.showmsg('获取规则中的获取积分不能为0', 'error'); showMsg.showmsg('获取规则中的获取积分不能为0', 'error');
return; return;
} }
} }
if (data.integralGetStatus == 1 && !Number(data.integralGetFreezeDays) && data.integralGetFreezeDays != '0') { if (data.integralGetStatus == 1 && !Number(data.integralGetFreezeDays) && data.integralGetFreezeDays != '0') {
showMsg.showmsg('请填写积分冻结期', 'error'); showMsg.showmsg('请设置积分有效期', 'error');
return; return;
} }
if (data.integralGetStatus == 1 && !Number(data.integralGetEffectiveDays)) { if (data.userGeneralIntegralExpireRule == 0) {
showMsg.showmsg('请填写积分有效期', 'error'); if(data.integralExpireType ==3 && (this.mouthM == '' || this.mouthD == -1)) {
return; this.scrollToError(this, 'mouthM');
showMsg.showmsg('请完善积分有效期信息','error')
return;
}else if(data.integralExpireType ==2 && (this.yearY == '' || this.yearM == '' || this.yearD == -1 )) {
this.scrollToError(this, 'yearY');
showMsg.showmsg('请完善积分有效期信息','error')
return;
} else if (data.integralExpireType ==0 && !Number(data.integralGetEffectiveDays)) {
this.scrollToError(this, 'integralGetEffectiveDays');
showMsg.showmsg('请完善积分有效期信息','error')
return;
}
} }
that.checkListValue(data).then(res => { that.checkListValue(data).then(res => {
if (!res.flag) { if (!res.flag) {
...@@ -935,11 +1143,33 @@ export default { ...@@ -935,11 +1143,33 @@ export default {
data.endValidTime = data.perpetualDate[1]; data.endValidTime = data.perpetualDate[1];
} }
delete data.perpetualDate; delete data.perpetualDate;
if(data.userGeneralIntegralExpireRule == 1) {
data.integralExpireType = this.timeType
if(this.timeType==0 || this.timeType == null){
data.integralGetEffectiveDays = this.effectiveDays
}else {
data.integralExpireRule = this.timeRuleType.toString()
}
}else if (data.userGeneralIntegralExpireRule == 0) {
if(data.integralExpireType == 0) {
data.integralExpireRule = ''
}else if(data.integralExpireType == 1) {
data.integralExpireRule = ''
data.integralGetEffectiveDays = ''
} else if(data.integralExpireType == 2) {
data.integralExpireRule = `${this.yearY},${this.yearM},${this.yearD}`
data.integralGetEffectiveDays = ''
}else if(data.integralExpireType == 3) {
data.integralExpireRule = `${this.mouthM},${this.mouthD}`
data.integralGetEffectiveDays = ''
}
}
that.saveForm(data); that.saveForm(data);
} }
}); });
} else { } else {
log('error submit!!'); this.scrollToError(this);
showMsg.showmsg('表单信息未填写完整','error')
return false; return false;
} }
}); });
...@@ -1220,11 +1450,67 @@ export default { ...@@ -1220,11 +1450,67 @@ export default {
// 对channelList进行排序 // 对channelList进行排序
const channelListSort = [3, 1, 9, 8, 11, 10] const channelListSort = [3, 1, 9, 8, 11, 10]
let channelList = channelListSort.map(el => item.channelList.find(item => item.channelType == el)); let channelList = channelListSort.map(el => {
let result = item.channelList.find(item => item.channelType == el);
if (!result) {
switch(el) {
case 11:
result = {
integralStrategyChannelId: "", //id
enterpriseId: "",
integralStrategyId: "", //策略id
channelType: "11", //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫 11抖音
openStatus: 0, //渠道配置是否启用 1启用 0停用
channelRelationEnterpriseType: "1", // 策略关联企业 1所有企业 2部分企业
channelRelationStoreType: "1", //策略关联门店类型 1所有门店 2门店分组 3部分门店
channelStoreType: "-1", // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
channelRelationProType: "1", // 策略关联商品类型 1所有商品 2商品品牌 3商品类目 4部分商品
integralUseDiscountControl: "1", // 折扣控制 1所有折扣商品适用 2折扣范围
integralUseDiscountControlUpper: undefined,
integralUseDiscountControlLower: undefined,
useProportionalRestriction: "0.0", // 抵现比例限制
strategyGoodsRelationIdArr: [], // 商品
storeRelationIdArr: [], //门店
enterpriseRelationIdArr: [] //商户
}
break;
case 10:
result = {
integralStrategyChannelId: "", //id
enterpriseId: "",
integralStrategyId: "", //策略id
channelType: "10", //渠道类型 1微信 3:线下 5淘宝 6京东 7唯品会 8天猫 9微盟 10其他 11抖音
openStatus: 0, //渠道配置是否启用 1启用 0停用
channelRelationEnterpriseType: "1", // 策略关联企业 1所有企业 2部分企业
channelRelationStoreType: "1", //策略关联门店类型 1所有门店 2门店分组 3部分门店
channelStoreType: "-1", // 策略选择门店类型 (-1:所有 0:自营 1:联营 2:加盟,3代销4托管)
channelRelationProType: "1", // 策略关联商品类型 1所有商品 2商品品牌 3商品类目 4部分商品
integralUseDiscountControl: "1", // 折扣控制 1所有折扣商品适用 2折扣范围
integralUseDiscountControlUpper: undefined,
integralUseDiscountControlLower: undefined,
useProportionalRestriction: "0.0", // 抵现比例限制
strategyGoodsRelationIdArr: [], // 商品
storeRelationIdArr: [], //门店
enterpriseRelationIdArr: [] //商户
}
break;
}
}
return result
});
// 将channelListSort中不存在的渠道拼到channelList上 // 将channelListSort中不存在的渠道拼到channelList上
channelList = channelList.concat(item.channelList.filter(el => !channelListSort.some(item => el.channelType == item))); channelList = channelList.concat(item.channelList.filter(el => !channelListSort.some(item => el.channelType == item)));
item.channelList = channelList; item.channelList = channelList;
item.channelList.forEach(item => { item.channelList.forEach(item => {
if(item.openStatus == true) {
if(item.channelType==3) {
this.opendisabled3 = true;
}else if(item.channelType==1) {
this.opendisabled1 = true;
}else if(item.channelType==9) {
this.opendisabled9 = true;
}
}
if(item.openStatus == false) { if(item.openStatus == false) {
item.integralUseDiscountControl == 1 item.integralUseDiscountControl == 1
} }
...@@ -1238,6 +1524,40 @@ export default { ...@@ -1238,6 +1524,40 @@ export default {
that.ruleForm.integralGet.fee = undefined; that.ruleForm.integralGet.fee = undefined;
that.ruleForm.integralGet.integral = undefined; that.ruleForm.integralGet.integral = undefined;
} }
// 积分有效期
// 当有效期类型为null时判断有效期天数是否为null 不为null 有效期类型为0 为null 无选中状态
if(that.ruleForm.integralExpireType==null) {
if(that.ruleForm.integralGetEffectiveDays != null) {
this.ruleForm.integralExpireType = 0;
}else {
this.ruleForm.integralExpireType = -1;
}
}
// 积分有效期
that.ruleForm.integralExpireRule = that.ruleForm.integralExpireRule.split(',')
if(that.ruleForm.userGeneralIntegralExpireRule==0){
// 当有效期类型为null时判断有效期天数是否为null 不为null 有效期类型为0 为null 无选中状态
if(that.ruleForm.integralExpireType==null) {
if(that.ruleForm.integralGetEffectiveDays != null) {
this.ruleForm.integralExpireType = 0;
}else {
this.ruleForm.integralExpireType = -1;
}
}else if(that.ruleForm.integralExpireType==2){
this.yearY = Number(that.ruleForm.integralExpireRule[0]);
this.yearM = Number(that.ruleForm.integralExpireRule[1]);
this.yearD = Number(that.ruleForm.integralExpireRule[2]);
that.ruleForm.integralGetEffectiveDays = '';
}else if(that.ruleForm.integralExpireType==3){
this.mouthM = Number(that.ruleForm.integralExpireRule[0]);
this.mouthD = Number(that.ruleForm.integralExpireRule[1]);
that.ruleForm.integralGetEffectiveDays = '';
}
}else if(that.ruleForm.userGeneralIntegralExpireRule==1){
this.getPointInfo();
}
that.$set(that.ruleForm, 'perpetualDate', []); that.$set(that.ruleForm, 'perpetualDate', []);
that.ruleForm.perpetualDate[1] = this.ruleForm.endValidTime; that.ruleForm.perpetualDate[1] = this.ruleForm.endValidTime;
...@@ -1542,6 +1862,13 @@ export default { ...@@ -1542,6 +1862,13 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.selectwm {
width:120px;
margin:0 10px;
}
.mb20 {
margin-bottom: 20px;
}
.bottom{ .bottom{
position: fixed; position: fixed;
bottom: 0px; bottom: 0px;
......
...@@ -113,6 +113,7 @@ ...@@ -113,6 +113,7 @@
{{ scope.row.perpetualFlag | normalizeStatus(scope.row.endValidTime) }} {{ scope.row.perpetualFlag | normalizeStatus(scope.row.endValidTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createUserName" label="创建人" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" min-width="100px"> <el-table-column label="操作" min-width="100px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button @click="handleEditClick(scope.row, 'edit')" type="text">编辑</el-button> <el-button @click="handleEditClick(scope.row, 'edit')" type="text">编辑</el-button>
...@@ -226,6 +227,7 @@ ...@@ -226,6 +227,7 @@
{{ scope.row.perpetualFlag | normalizeStatus(scope.row.endValidTime) }} {{ scope.row.perpetualFlag | normalizeStatus(scope.row.endValidTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createUserName" label="创建人" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" min-width="100px"> <el-table-column label="操作" min-width="100px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button @click="handleEditClick2(scope.row)" type="text">编辑</el-button> <el-button @click="handleEditClick2(scope.row)" type="text">编辑</el-button>
...@@ -332,6 +334,23 @@ export default { ...@@ -332,6 +334,23 @@ export default {
this.pageNum1 = 1; this.pageNum1 = 1;
this.getIntefralInfo(); this.getIntefralInfo();
}, },
handleSizeChange(pageSize) {
if (this.activeName == 'second') {
this.pageSize = pageSize;
} else if (this.activeName == 'third') {
this.pageSize1 = pageSize;
}
this.handleCurrentChange(1);
},
handleCurrentChange(pageNum) {
if (this.activeName == 'second') {
this.pageNum = pageNum;
this.getPointInfo();
} else if (this.activeName == 'third') {
this.pageNum1 = pageNum;
this.getIntefralInfo();
}
},
// 新增 // 新增
handleAdd(flag) { handleAdd(flag) {
if (!this.tpnEditBool) { if (!this.tpnEditBool) {
...@@ -395,6 +414,8 @@ export default { ...@@ -395,6 +414,8 @@ export default {
let param = { let param = {
requestProject: that.projectName, requestProject: that.projectName,
keyword: that.keywords, keyword: that.keywords,
currPage: this.pageNum,
pageSize: this.pageSize,
strategyType: 1 strategyType: 1
}; };
// postRequest('/api-admin/get-member-integral-setting', param) // postRequest('/api-admin/get-member-integral-setting', param)
...@@ -423,8 +444,6 @@ export default { ...@@ -423,8 +444,6 @@ export default {
// 6月迭代抖音修改 // 6月迭代抖音修改
that.totalCount = resData.result.totalCount; that.totalCount = resData.result.totalCount;
that.pageSize = resData.result.pageSize;
that.pageNum = resData.result.pageNum;
that.achieveTableData = resData.result.result; that.achieveTableData = resData.result.result;
that.achieveTableData.forEach((ele,index)=>{ that.achieveTableData.forEach((ele,index)=>{
ele.integralGet = JSON.parse(ele.integralGet); ele.integralGet = JSON.parse(ele.integralGet);
...@@ -444,6 +463,8 @@ export default { ...@@ -444,6 +463,8 @@ export default {
var params = { var params = {
requestProject: that.projectName, requestProject: that.projectName,
keyword: that.keywords1, keyword: that.keywords1,
currPage: this.pageNum1,
pageSize: this.pageSize1,
strategyType: 2 strategyType: 2
} }
postRequest('/api-admin/query-integral-setting',params) postRequest('/api-admin/query-integral-setting',params)
...@@ -453,8 +474,6 @@ export default { ...@@ -453,8 +474,6 @@ export default {
if (resData.errorCode == 0) { if (resData.errorCode == 0) {
// 6月迭代修改 // 6月迭代修改
that.totalCount1 = resData.result.totalCount; that.totalCount1 = resData.result.totalCount;
that.pageSize1 = resData.result.pageSize;
that.pageNum1 = resData.result.pageNum;
that.exchangeTableData = resData.result.result; that.exchangeTableData = resData.result.result;
that.exchangeTableData.forEach((ele,index)=>{ that.exchangeTableData.forEach((ele,index)=>{
ele.integralGet = JSON.parse(ele.integralGet); ele.integralGet = JSON.parse(ele.integralGet);
...@@ -480,6 +499,8 @@ export default { ...@@ -480,6 +499,8 @@ export default {
item.integralGetDiscountControlLower = String(item.integralGetDiscountControlLower); item.integralGetDiscountControlLower = String(item.integralGetDiscountControlLower);
item.integralUseDiscountControlUpper = String(item.integralUseDiscountControlUpper); item.integralUseDiscountControlUpper = String(item.integralUseDiscountControlUpper);
item.integralUseDiscountControlLower = String(item.integralUseDiscountControlLower); item.integralUseDiscountControlLower = String(item.integralUseDiscountControlLower);
item.integralExpireType = String(item.integralExpireType);
item.integralExpireRule = String(item.integralExpireRule);
// item.integralGet = JSON.parse(item.integralGet); // item.integralGet = JSON.parse(item.integralGet);
// item.integralUse = JSON.parse(item.integralUse); // item.integralUse = JSON.parse(item.integralUse);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment