Explorar el Código

Merge branch 'sit'

xiaodai2022 hace 2 años
padre
commit
3993535cb5
Se han modificado 64 ficheros con 1921 adiciones y 80 borrados
  1. 28 3
      dist/index.html
  2. BIN
      dist/static/axios@0.21.0.min.js.gz
  3. 0 0
      dist/static/css/app.d591449c.css
  4. BIN
      dist/static/css/app.d591449c.css.gz
  5. 0 0
      dist/static/css/chunk-0b1e8cbe.d9ad6e7c.css
  6. 0 0
      dist/static/css/chunk-0dbfd7f3.703ceb31.css
  7. 0 0
      dist/static/css/chunk-15caf0ce.90844b8e.css
  8. 0 1
      dist/static/css/chunk-25ffc4de.11a605cd.css
  9. 0 1
      dist/static/css/chunk-415aa836.15c23872.css
  10. 0 1
      dist/static/css/chunk-4d8c5f0a.149d0cab.css
  11. 0 1
      dist/static/css/chunk-5ce8d4ba.41b5526a.css
  12. 0 0
      dist/static/css/chunk-77ff69ab.ce188cd1.css
  13. 0 0
      dist/static/css/chunk-7a946667.e34c6e64.css
  14. 0 1
      dist/static/css/chunk-96c7fd04.68d53367.css
  15. 0 0
      dist/static/css/chunk-ee636058.1c4ea3cf.css
  16. 0 1
      dist/static/css/chunk-elementUI.6e808e7d.css
  17. 0 0
      dist/static/css/chunk-libs.ccf2a586.css
  18. BIN
      dist/static/css/chunk-libs.ccf2a586.css.gz
  19. BIN
      dist/static/dingtalk.open.2.10.3.js.gz
  20. 10 0
      dist/static/js/0.js
  21. 10 0
      dist/static/js/app.js
  22. 0 0
      dist/static/js/chunk-0b1e8cbe.3a5cef83.js
  23. 0 0
      dist/static/js/chunk-0dbfd7f3.afd6d87c.js
  24. 0 1
      dist/static/js/chunk-15caf0ce.91994102.js
  25. 0 1
      dist/static/js/chunk-25ffc4de.102650f2.js
  26. 0 0
      dist/static/js/chunk-415aa836.1ee825d2.js
  27. 0 0
      dist/static/js/chunk-4d8c5f0a.b06f9677.js
  28. 0 1
      dist/static/js/chunk-5ce8d4ba.b627d305.js
  29. 0 0
      dist/static/js/chunk-77ff69ab.dc190969.js
  30. BIN
      dist/static/js/chunk-77ff69ab.dc190969.js.gz
  31. 0 0
      dist/static/js/chunk-7a946667.0416b483.js
  32. BIN
      dist/static/js/chunk-7a946667.0416b483.js.gz
  33. 0 0
      dist/static/js/chunk-96c7fd04.5ccd872b.js
  34. 0 0
      dist/static/js/chunk-ee636058.8c5bccda.js
  35. 0 0
      dist/static/js/chunk-elementUI.f0821104.js
  36. BIN
      dist/static/js/chunk-elementUI.f0821104.js.gz
  37. 20 0
      dist/static/js/chunk-elementUI.js
  38. 0 0
      dist/static/js/chunk-libs.f3a1b9cd.js
  39. BIN
      dist/static/js/chunk-libs.f3a1b9cd.js.gz
  40. 58 0
      dist/static/js/chunk-libs.js
  41. 223 0
      dist/static/js/runtime.js
  42. BIN
      dist/static/vue-router.min.js.gz
  43. BIN
      dist/static/vue.min.js.gz
  44. 5 2
      src/apis/components/show-goods-data-table.js
  45. 40 0
      src/apis/service/goodStore/goodsRepertory/index.js
  46. 85 1
      src/components/globalComponents/show-goods-data-table/ShowDataTableColumns.js
  47. 98 7
      src/components/globalComponents/show-goods-data-table/main.vue
  48. 88 0
      src/components/show-goods-data-table-modal/columns.js
  49. 68 0
      src/components/show-goods-data-table-modal/index.vue
  50. 0 0
      src/components/show-goods-data-table-modal/商品信息弹窗
  51. 173 0
      src/views/goodStore/goodsRepertory/columns.js
  52. 587 0
      src/views/goodStore/goodsRepertory/index.vue
  53. 0 0
      src/views/goodStore/goodsRepertory/商品库存查询
  54. 2 2
      src/views/goodStore/sort/addEdit.vue
  55. 95 39
      src/views/goodStore/sort/addEditRate.vue
  56. 5 3
      src/views/purchaseIn/workbench/detail.vue
  57. 6 5
      src/views/sellOut/project/components/addForm.vue
  58. 42 0
      src/views/sellOut/project/components/backGoodShow.vue
  59. 8 2
      src/views/sellOut/salesOrder/components/addForm.vue
  60. 12 5
      src/views/sellOut/zixunOrder/columns.js
  61. 1 0
      src/views/sellOut/zixunOrder/components/addEditForm.vue
  62. 87 0
      src/views/sellOut/zixunOrder/components/addEditGoodModal.vue
  63. 95 0
      src/views/sellOut/zixunOrder/components/editForm.vue
  64. 75 2
      src/views/sellOut/zixunOrder/components/feedbackList.vue

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 28 - 3
dist/index.html


BIN
dist/static/axios@0.21.0.min.js.gz


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/app.d591449c.css


BIN
dist/static/css/app.d591449c.css.gz


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/chunk-0b1e8cbe.d9ad6e7c.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/chunk-0dbfd7f3.703ceb31.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/chunk-15caf0ce.90844b8e.css


+ 0 - 1
dist/static/css/chunk-25ffc4de.11a605cd.css

@@ -1 +0,0 @@
-.dingLoading[data-v-17af7bec]{text-align:center;width:100%}.dingLoading img[data-v-17af7bec]{display:inline-block;width:152px;margin:0 auto;padding-top:100px}

+ 0 - 1
dist/static/css/chunk-415aa836.15c23872.css

@@ -1 +0,0 @@
-.my-messagge-page{text-align:center;background:#f2f2f2;min-height:100%;width:100%;height:100%;overflow:hidden;position:absolute;z-index:2;-webkit-box-sizing:border-box;box-sizing:border-box}.my-messagge-page .change{padding:0 8% 0 0}.my-messagge-page .change .title{border-width:0;height:170px;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:400;font-style:normal;font-size:22px;text-align:left;padding:0;padding:60px 0 0 100px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.my-messagge-page .change-main{width:370px;margin:0 auto;text-align:left}.my-messagge-page .infor{padding:0 0 40px 0}.my-messagge-page .infor .tr{text-align:right;padding:0 15px 0 0}@supports (-webkit-mask:none) and (not (cater-color:#fff)){.my-messagge .el-input input{color:#fff}}.my-messagge[data-v-27685a3c]{min-height:100%;width:100%;height:100%;background-color:#f2f2f2;overflow:hidden;position:absolute;z-index:2;background:#fff}.my-messagge .login-form[data-v-27685a3c]{position:relative;width:415px;max-width:100%;height:100%;padding:50px 35px 150px 35px;margin:0 auto;overflow:hidden}.my-messagge .login-form .el-form-item__label[data-v-27685a3c]{height:49px;line-height:49px}.my-messagge .tips[data-v-27685a3c]{font-size:14px;color:#fff;margin-bottom:10px}.my-messagge .tips span[data-v-27685a3c]:first-of-type{margin-right:16px}.my-messagge .svg-container[data-v-27685a3c]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.my-messagge .show-pwd[data-v-27685a3c]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.my-messagge .thirdparty-button[data-v-27685a3c]{position:absolute;right:0;bottom:6px}@media only screen and (max-width:470px){.my-messagge .thirdparty-button[data-v-27685a3c]{display:none}}

+ 0 - 1
dist/static/css/chunk-4d8c5f0a.149d0cab.css

@@ -1 +0,0 @@
-.change{padding:0 18% 0 0;background:#f2f2f2;min-height:100%;height:100%;overflow:hidden;position:absolute;z-index:2}.change,.change .title{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.change .title{border-width:0;height:140px;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:400;font-style:normal;font-size:22px;text-align:left;padding:0;padding:60px 0 0 100px}.change-mobile{background:#f2f2f2}@supports (-webkit-mask:none) and (not (cater-color:#fff)){.change-mobile .el-input input{color:#fff}}.change-mobile .el-input input{color:#000}.change-mobile .el-form-item{border:1px solid hsla(0,0%,100%,.1);color:#454545}.change-mobile[data-v-64208de8]{min-height:100%;width:100%;height:100%;background-color:#f2f2f2;overflow:hidden;position:absolute;z-index:2;background:#fff}.change-mobile .login-form[data-v-64208de8]{position:relative;width:415px;max-width:100%;height:100%;padding:50px 35px 150px 35px;margin:0 auto;overflow:hidden}.change-mobile .login-form .el-form-item__label[data-v-64208de8]{height:49px;line-height:49px}.change-mobile .login-form .el-form-item__content[data-v-64208de8]:after,.change-mobile .login-form .el-form-item__content[data-v-64208de8]:before{content:"";display:block;clear:both}.change-mobile .tips[data-v-64208de8]{font-size:14px;color:#fff;margin-bottom:10px}.change-mobile .tips span[data-v-64208de8]:first-of-type{margin-right:16px}.change-mobile .svg-container[data-v-64208de8]{padding:6px 5px 6px 15px;color:#889aa4;vertical-align:middle;width:30px;display:inline-block}.change-mobile .show-pwd[data-v-64208de8]{position:absolute;right:10px;top:7px;font-size:16px;color:#889aa4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.change-mobile .thirdparty-button[data-v-64208de8]{position:absolute;right:0;bottom:6px}@media only screen and (max-width:470px){.change-mobile .thirdparty-button[data-v-64208de8]{display:none}}

+ 0 - 1
dist/static/css/chunk-5ce8d4ba.41b5526a.css

@@ -1 +0,0 @@
-.dashboard-container[data-v-6bdd809c]{padding:0 0 0 0;position:relative;width:100%;min-height:calc(100vh - 50px);display:inline-block;background-color:#e3e3e3}.emptyGif[data-v-6bdd809c]{display:block;width:100%;margin:0 auto}.dashboard-editor-container[data-v-6bdd809c]{position:relative;min-height:100%;width:100%;padding:0 6% 0 0;text-align:center}.dashboard-editor-container .info-container[data-v-6bdd809c]{display:block;width:60%;text-align:center;margin:0 auto;padding:10vh 0 0 0}.dashboard-editor-container .info-container .welcome-title[data-v-6bdd809c]{vertical-align:top;padding:0;margin:0 0 0 18px;color:#97a8be;display:inline-block;height:130px;line-height:130px;font-size:45px}.dashboard-editor-container img[data-v-6bdd809c]{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/chunk-77ff69ab.ce188cd1.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/chunk-7a946667.e34c6e64.css


+ 0 - 1
dist/static/css/chunk-96c7fd04.68d53367.css

@@ -1 +0,0 @@
-.change-password{background:#f2f2f2;min-height:100%;width:100%;height:100%;overflow:hidden;position:absolute;z-index:2;-webkit-box-sizing:border-box;box-sizing:border-box}.change-password .change{padding:0 18% 0 0}.change-password .change .title{border-width:0;height:140px;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:400;font-style:normal;font-size:22px;text-align:left;padding:0;padding:60px 0 0 100px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.change-password[data-v-47333433]{min-height:100%;width:100%;height:100%;overflow:hidden;position:absolute;z-index:2}.change-password .login-form[data-v-47333433]{position:relative;width:415px;max-width:100%;height:100%;padding:50px 35px 150px 35px;margin:0 auto;overflow:hidden}.change-password .login-form .el-form-item__label[data-v-47333433]{height:49px;line-height:49px}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/chunk-ee636058.1c4ea3cf.css


+ 0 - 1
dist/static/css/chunk-elementUI.6e808e7d.css

@@ -1 +0,0 @@
-@media only screen and (max-width:767px){.hidden-xs-only{display:none!important}}@media only screen and (min-width:768px){.hidden-sm-and-up{display:none!important}}@media only screen and (min-width:768px) and (max-width:991px){.hidden-sm-only{display:none!important}}@media only screen and (max-width:991px){.hidden-sm-and-down{display:none!important}}@media only screen and (min-width:992px){.hidden-md-and-up{display:none!important}}@media only screen and (min-width:992px) and (max-width:1199px){.hidden-md-only{display:none!important}}@media only screen and (max-width:1199px){.hidden-md-and-down{display:none!important}}@media only screen and (min-width:1200px){.hidden-lg-and-up{display:none!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.hidden-lg-only{display:none!important}}@media only screen and (max-width:1919px){.hidden-lg-and-down{display:none!important}}@media only screen and (min-width:1920px){.hidden-xl-only{display:none!important}}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/css/chunk-libs.ccf2a586.css


BIN
dist/static/css/chunk-libs.ccf2a586.css.gz


BIN
dist/static/dingtalk.open.2.10.3.js.gz


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 10 - 0
dist/static/js/0.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 10 - 0
dist/static/js/app.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-0b1e8cbe.3a5cef83.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-0dbfd7f3.afd6d87c.js


+ 0 - 1
dist/static/js/chunk-15caf0ce.91994102.js

@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-15caf0ce"],{"1db4":function(t,s,i){"use strict";i.r(s);var c=[function(){var t=this.$createElement;t=this._self._c||t;return t("div",{staticClass:"pic-404"},[t("img",{staticClass:"pic-404__parent",attrs:{src:i("a36b"),alt:"404"}}),t("img",{staticClass:"pic-404__child left",attrs:{src:i("26fc"),alt:"404"}}),t("img",{staticClass:"pic-404__child mid",attrs:{src:i("26fc"),alt:"404"}}),t("img",{staticClass:"pic-404__child right",attrs:{src:i("26fc"),alt:"404"}})])}],a={name:"Page404",computed:{message:function(){return"访问的页面不存在..."}},methods:{goto:function(){window.vm.$router.push({path:"/welcome/dashboard"})}}},e=(i("e894"),i("2877"));e=Object(e.a)(a,(function(){var t=this,s=t.$createElement;s=t._self._c||s;return s("div",{staticClass:"wscn-http404-container"},[s("div",{staticClass:"wscn-http404"},[t._m(0),s("div",{staticClass:"bullshit"},[s("div",{staticClass:"bullshit__oops"},[t._v("哎呀!")]),s("div",{staticClass:"bullshit__headline"},[t._v(t._s(t.message))]),s("div",{staticClass:"bullshit__info"},[t._v(" 请检查您输入的网址是否正确,或单击下面的按钮返回主页. ")]),s("el-button",{attrs:{type:"primary",round:""},on:{click:function(s){return t.goto()}}},[t._v("回到首页")])],1)])])}),c,!1,null,"82eac96e",null);s.default=e.exports},"26fc":function(t,s,i){t.exports=i.p+"static/img/404_cloud.0f4bc32b.png"},"44e6":function(t,s,i){},a36b:function(t,s,i){t.exports=i.p+"static/img/404.a57b6f31.png"},e894:function(t,s,i){"use strict";i("44e6")}}]);

+ 0 - 1
dist/static/js/chunk-25ffc4de.102650f2.js

@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-25ffc4de"],{"04c0":function(t,n,e){"use strict";e("efa6")},"7e10":function(t,n,e){"use strict";e.r(n);var a=[function(){var t=this.$createElement;t=this._self._c||t;return t("div",{staticClass:"dingLoading"},[t("img",{attrs:{src:e("f8b2"),alt:""}})])}],c={name:"loadingPage",data:function(){return{}},mounted:function(){}},i=(e("04c0"),e("2877"));i=Object(i.a)(c,(function(){var t=this;t.$createElement;return t._self._c,t._m(0)}),a,!1,null,"17af7bec",null);n.default=i.exports},efa6:function(t,n,e){},f8b2:function(t,n,e){t.exports=e.p+"static/img/loading.190c78aa.gif"}}]);

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-415aa836.1ee825d2.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-4d8c5f0a.b06f9677.js


+ 0 - 1
dist/static/js/chunk-5ce8d4ba.b627d305.js

@@ -1 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([["chunk-5ce8d4ba"],{9406:function(t,a,i){"use strict";i.r(a);var c=i("5530"),e=i("2f62");c={name:"dashboard",data:function(){return{emptyGif:i("ff1f")}},computed:Object(c.a)({},Object(e.b)(["avatar"])),mounted:function(){}},i("9d69"),e=i("2877"),e=Object(e.a)(c,(function(){var t=this,a=t.$createElement;a=t._self._c||a;return a("div",{staticClass:"dashboard-container"},[a("div",{staticClass:"dashboard-editor-container"},[a("div",{staticClass:"info-container clearfix"},[a("pan-thumb",{attrs:{image:t.avatar,width:"130px",height:"130px"}}),a("span",{staticClass:"welcome-title"},[t._v("欢迎登录采销平台")])],1),a("img",{staticStyle:{width:"60%",margin:"-30px auto 0 auto"},attrs:{src:t.emptyGif}})])])}),[],!1,null,"6bdd809c",null);a.default=e.exports},"9cf7":function(t,a,i){},"9d69":function(t,a,i){"use strict";i("9cf7")},ff1f:function(t,a,i){t.exports=i.p+"static/img/welcome.6cf0f25b.gif"}}]);

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-77ff69ab.dc190969.js


BIN
dist/static/js/chunk-77ff69ab.dc190969.js.gz


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-7a946667.0416b483.js


BIN
dist/static/js/chunk-7a946667.0416b483.js.gz


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-96c7fd04.5ccd872b.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-ee636058.8c5bccda.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-elementUI.f0821104.js


BIN
dist/static/js/chunk-elementUI.f0821104.js.gz


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 20 - 0
dist/static/js/chunk-elementUI.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
dist/static/js/chunk-libs.f3a1b9cd.js


BIN
dist/static/js/chunk-libs.f3a1b9cd.js.gz


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 58 - 0
dist/static/js/chunk-libs.js


+ 223 - 0
dist/static/js/runtime.js

@@ -0,0 +1,223 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// install a JSONP callback for chunk loading
+/******/ 	function webpackJsonpCallback(data) {
+/******/ 		var chunkIds = data[0];
+/******/ 		var moreModules = data[1];
+/******/ 		var executeModules = data[2];
+/******/
+/******/ 		// add "moreModules" to the modules object,
+/******/ 		// then flag all "chunkIds" as loaded and fire callback
+/******/ 		var moduleId, chunkId, i = 0, resolves = [];
+/******/ 		for(;i < chunkIds.length; i++) {
+/******/ 			chunkId = chunkIds[i];
+/******/ 			if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
+/******/ 				resolves.push(installedChunks[chunkId][0]);
+/******/ 			}
+/******/ 			installedChunks[chunkId] = 0;
+/******/ 		}
+/******/ 		for(moduleId in moreModules) {
+/******/ 			if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
+/******/ 				modules[moduleId] = moreModules[moduleId];
+/******/ 			}
+/******/ 		}
+/******/ 		if(parentJsonpFunction) parentJsonpFunction(data);
+/******/
+/******/ 		while(resolves.length) {
+/******/ 			resolves.shift()();
+/******/ 		}
+/******/
+/******/ 		// add entry modules from loaded chunk to deferred list
+/******/ 		deferredModules.push.apply(deferredModules, executeModules || []);
+/******/
+/******/ 		// run deferred modules when all chunks ready
+/******/ 		return checkDeferredModules();
+/******/ 	};
+/******/ 	function checkDeferredModules() {
+/******/ 		var result;
+/******/ 		for(var i = 0; i < deferredModules.length; i++) {
+/******/ 			var deferredModule = deferredModules[i];
+/******/ 			var fulfilled = true;
+/******/ 			for(var j = 1; j < deferredModule.length; j++) {
+/******/ 				var depId = deferredModule[j];
+/******/ 				if(installedChunks[depId] !== 0) fulfilled = false;
+/******/ 			}
+/******/ 			if(fulfilled) {
+/******/ 				deferredModules.splice(i--, 1);
+/******/ 				result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
+/******/ 			}
+/******/ 		}
+/******/
+/******/ 		return result;
+/******/ 	}
+/******/
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// object to store loaded and loading chunks
+/******/ 	// undefined = chunk not loaded, null = chunk preloaded/prefetched
+/******/ 	// Promise = chunk loading, 0 = chunk loaded
+/******/ 	var installedChunks = {
+/******/ 		"runtime": 0
+/******/ 	};
+/******/
+/******/ 	var deferredModules = [];
+/******/
+/******/ 	// script path function
+/******/ 	function jsonpScriptSrc(chunkId) {
+/******/ 		return __webpack_require__.p + "static/js/" + ({}[chunkId]||chunkId) + ".js"
+/******/ 	}
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/ 	// This file contains only the entry chunk.
+/******/ 	// The chunk loading function for additional chunks
+/******/ 	__webpack_require__.e = function requireEnsure(chunkId) {
+/******/ 		var promises = [];
+/******/
+/******/
+/******/ 		// JSONP chunk loading for javascript
+/******/
+/******/ 		var installedChunkData = installedChunks[chunkId];
+/******/ 		if(installedChunkData !== 0) { // 0 means "already installed".
+/******/
+/******/ 			// a Promise means "currently loading".
+/******/ 			if(installedChunkData) {
+/******/ 				promises.push(installedChunkData[2]);
+/******/ 			} else {
+/******/ 				// setup Promise in chunk cache
+/******/ 				var promise = new Promise(function(resolve, reject) {
+/******/ 					installedChunkData = installedChunks[chunkId] = [resolve, reject];
+/******/ 				});
+/******/ 				promises.push(installedChunkData[2] = promise);
+/******/
+/******/ 				// start chunk loading
+/******/ 				var script = document.createElement('script');
+/******/ 				var onScriptComplete;
+/******/
+/******/ 				script.charset = 'utf-8';
+/******/ 				script.timeout = 120;
+/******/ 				if (__webpack_require__.nc) {
+/******/ 					script.setAttribute("nonce", __webpack_require__.nc);
+/******/ 				}
+/******/ 				script.src = jsonpScriptSrc(chunkId);
+/******/
+/******/ 				// create error before stack unwound to get useful stacktrace later
+/******/ 				var error = new Error();
+/******/ 				onScriptComplete = function (event) {
+/******/ 					// avoid mem leaks in IE.
+/******/ 					script.onerror = script.onload = null;
+/******/ 					clearTimeout(timeout);
+/******/ 					var chunk = installedChunks[chunkId];
+/******/ 					if(chunk !== 0) {
+/******/ 						if(chunk) {
+/******/ 							var errorType = event && (event.type === 'load' ? 'missing' : event.type);
+/******/ 							var realSrc = event && event.target && event.target.src;
+/******/ 							error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
+/******/ 							error.name = 'ChunkLoadError';
+/******/ 							error.type = errorType;
+/******/ 							error.request = realSrc;
+/******/ 							chunk[1](error);
+/******/ 						}
+/******/ 						installedChunks[chunkId] = undefined;
+/******/ 					}
+/******/ 				};
+/******/ 				var timeout = setTimeout(function(){
+/******/ 					onScriptComplete({ type: 'timeout', target: script });
+/******/ 				}, 120000);
+/******/ 				script.onerror = script.onload = onScriptComplete;
+/******/ 				document.head.appendChild(script);
+/******/ 			}
+/******/ 		}
+/******/ 		return Promise.all(promises);
+/******/ 	};
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "/";
+/******/
+/******/ 	// on error function for async loading
+/******/ 	__webpack_require__.oe = function(err) { console.error(err); throw err; };
+/******/
+/******/ 	var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
+/******/ 	var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
+/******/ 	jsonpArray.push = webpackJsonpCallback;
+/******/ 	jsonpArray = jsonpArray.slice();
+/******/ 	for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
+/******/ 	var parentJsonpFunction = oldJsonpFunction;
+/******/
+/******/
+/******/ 	// run deferred modules from other chunks
+/******/ 	checkDeferredModules();
+/******/ })
+/************************************************************************/
+/******/ ([]);

BIN
dist/static/vue-router.min.js.gz


BIN
dist/static/vue.min.js.gz


+ 5 - 2
src/apis/components/show-goods-data-table.js

@@ -3,8 +3,11 @@ const api = "admin/";
 export default {
     // 上线商品详情
     online_detail: (data, params) => http(api + "goodinfo", data, "post", params),
-    // 采返商品详情
-    re_detail: (data, params) => http(api + "goodzxinfo", data, "post", params),
+
     //商品成本详情
     cost_detail: (data, params) => http(api + "goodupinfo", data, "post", params),
+    // 采返商品详情 订单生成后
+    re_detail: (data, params) => http(api + "goodzxinfo", data, "post", params),
+    // 采返商品详情 订单生成前
+    cove_detail: (data, params) => http(api + "getgoodzxinfobynotzixun", data, "post", params),
 };

+ 40 - 0
src/apis/service/goodStore/goodsRepertory/index.js

@@ -0,0 +1,40 @@
+// 物业管理员
+import http from "@/apis/axios";
+const api = "admin/";
+export default {
+  //价格区间筛选列表
+  listbyladder: (data, params) => http(api + "goodlistbyladder", data, "post", params),
+  // 分页查询
+  list: (data, params) => http(api + "goodlist", data, "post", params),
+  // 添加
+  add: (data, params) => http(api + "gooduponline", data, "post", params),
+  // 详情
+  detail: (data, params) => http(api + "goodinfo", data, "post", params),
+  // 产品部门审核
+  goodupexam: (data, params) => http(api + "goodupexam", data, "post", params),
+  // 更新状态
+  status: (data, params) => http(api + "goodupexam", data, "post", params),
+
+  // 定价岗定价
+  ladderOne: (data, params) => http(api + "goodupeditladder", data, "post", params),
+  // 删除
+  delete: (data, params) => http(api + "gooddel", data, "post", params),
+  // 重新发起审核流程
+  againonline: (data, params) => http(api + "againonline", data, "post", params),
+  // 获取系统售价
+  goodupprice: (data, params) => http(api + "goodupprice", data, "post", params),
+
+  // 复制
+  copy: (data, params) => http(api + "goodcopy", data, "post", params),
+  // 获取全部分类
+  catAll: (data, params) => http(api + "catAll", data, "post", params),
+  // 获取全部品牌
+  brandAll: (data, params) => http(api + "brandall", data, "post", params),
+  // 获取全部供应商账号
+  supplierAll: (data, params) => http(api + "supplierall", data, "post", params),
+  // 商品种类ID换取规格值
+  specByCat: (data, params) => http(api + "SpecByCat", data, "post", params),
+  // 规格属性值新建
+  specinfoadd: (data, params) => http(api + "specinfoadd", data, "post", params),
+
+};

+ 85 - 1
src/components/globalComponents/show-goods-data-table/ShowDataTableColumns.js

@@ -71,6 +71,90 @@ const reColumns = [
 
 
 
+]
+const coveColumns = [
+  {
+    prop: "good_name",
+    label: "商品名称",
+    _slot_: "good_name",
+    span: 24,
+  },
+
+  {
+    prop: "cat",
+    label: "分类",
+    span: 8,
+  },
+
+  {
+    prop: "brand_name",
+    label: "品牌",
+    span: 6,
+  },
+
+
+  {
+    prop: "unit",
+    label: "单位",
+    span: 4,
+  },
+  {
+    prop: "send_way",
+    label: "发货方式",
+    _slot_: "send_way",
+    span: 6,
+  },
+
+  {
+    prop: "tax",
+    label: "税点",
+    append: '%',
+    span: 4,
+  },
+  {
+    prop: "pay_way",
+    label: "付款方式",
+    _slot_: "pay_way",
+    span: 4,
+  },
+
+
+  {
+    prop: "weight",
+    label: "商品总克重",
+    append: 'g',
+    span: 6,
+  },
+  {
+    prop: "creater",
+    label: "反馈人",
+    span: 4,
+  },
+  {
+    prop: "addtime",
+    label: "反馈时间",
+    span: 6,
+  },
+  {
+    prop: "noble",
+    _slot_: "noble",
+    label: "贵金属信息",
+    span: 24,
+  },
+  {
+    prop: "craft_desc",
+    label: "工艺说明",
+    span: 24,
+  },
+  {
+    prop: "remark",
+    label: "采返备注",
+    span: 24,
+  },
+
+
+  
+
 ]
 const onlineColumns = [
   {
@@ -558,5 +642,5 @@ const options9 = [
   { id: "2", name: "双月清" },
 ]
 
-export { onlineColumns, reColumns, costColumns,options1, options2, options3, options4, options5, options6, options7, options8, options9 }
+export { onlineColumns, reColumns, costColumns, coveColumns, options1, options2, options3, options4, options5, options6, options7, options8, options9 }
 

+ 98 - 7
src/components/globalComponents/show-goods-data-table/main.vue

@@ -264,10 +264,86 @@
     </show-data-table>
     <show-data-table
       v-else-if="
-        (type === '3' || type === '4') && this.sitem && this.sitem.addtime
+        (type === '3' || type === '4') &&
+        this.sitem &&
+        this.sitem.addtime &&
+        !iscgd
       "
       :sitem="sitem"
-      :columns="reColumns"
+      :columns="coveColumns"
+      :border="border"
+    >
+      <template slot="good_name">
+        <img
+          v-viewer
+          style="width: 23px; height: 23px; margin: 0 5px 0 0"
+          class="fl"
+          v-if="sitem.good_img"
+          :src="sitem.good_img"
+          alt=""
+        />
+        <span>{{ sitem.good_name }}</span>
+        <span v-for="(si, i) in sitem.specinfo" :key="si.spec_id + i">
+          <span v-if="i !== 0">-</span>
+          <span v-else>_</span>
+          <span>{{ si.spec_name }}[{{ si.spec_value_name }}]</span>
+        </span>
+        <el-popover placement="top" width="300" trigger="hover">
+          <ul>
+            <li>
+              <span>商品编号:</span><span>{{ sitem.spuCode }}</span>
+            </li>
+          </ul>
+          <i class="el-icon-warning-outline fr" slot="reference"></i>
+        </el-popover>
+      </template>
+      <template slot="send_way">
+        <span>{{ sitem.send_way === "1" ? "供应商包邮" : "公司自提" }}</span>
+      </template>
+
+      <template slot="good_type">
+        <el-tag
+          :size="'mini'"
+          v-text="
+            (options1.find((item) => item.id == sitem.good_type) || {}).name ||
+            '--'
+          "
+        />
+        <span v-if="sitem.good_type === '1'" style="padding: 0 0 0 5px"
+          >{{ sitem.moq }}起订/工期{{ sitem.customized }}天</span
+        >
+      </template>
+      <template slot="pay_way">
+        <el-tag
+          :size="'mini'"
+          v-text="
+            (options9.find((item) => item.id == sitem.pay_way) || {}).name ||
+            '--'
+          "
+        />
+      </template>
+      <template slot="noble">
+        <span v-if="sitem.noble_name"
+          >{{ sitem.noble_weight ? sitem.noble_weight : "0" }}g-{{
+            sitem.noble_name
+          }}-{{ sitem.gold_price ? sitem.gold_price : "0" }}元/g-{{
+            sitem.is_gold_price === "0" ? "不" : ""
+          }}启用实时金价-{{ sitem.is_diff === "1" ? "有" : "无" }}工差-{{
+            sitem.config
+          }}-{{ sitem.other_config }}</span
+        >
+        <span v-else>--</span>
+      </template>
+    </show-data-table>
+    <show-data-table
+      v-else-if="
+        (type === '3' || type === '4') &&
+        this.sitem &&
+        this.sitem.addtime &&
+        iscgd
+      "
+      :sitem="sitem"
+      :columns="coveColumns"
       :border="border"
     >
       <template slot="good_name">
@@ -342,6 +418,7 @@ import {
   onlineColumns,
   reColumns,
   costColumns,
+  coveColumns,
   options1,
   options2,
   options3,
@@ -398,6 +475,7 @@ export default {
       onlineColumns,
       reColumns,
       costColumns,
+      coveColumns,
     };
   },
   watch: {
@@ -413,6 +491,9 @@ export default {
 
   methods: {
     async initForm() {
+      console.log(
+        `${this.type}---${this.skucode}---${this.spucode}---${this.iscgd}`
+      );
       this.columns = [];
       this.loading = true;
       if (this.type) {
@@ -428,9 +509,15 @@ export default {
             });
           }
         } else {
-          res = await asyncRequest.re_detail({
-            spuCode: this.spucode,
-          });
+          if (this.iscgd) {
+            res = await asyncRequest.cove_detail({
+              spuCode: this.spucode,
+            });
+          } else {
+            res = await asyncRequest.re_detail({
+              spuCode: this.spucode,
+            });
+          }
         }
         const { code, message, data } = res;
         this.loading = false;
@@ -445,8 +532,12 @@ export default {
           }
           this.sitem.cat = cat;
           //线上商品字段转换
-          this.sitem.good_img = this.sitem.good_img.split(",");
-          this.sitem.good_info_img = this.sitem.good_info_img.split(",");
+          if (this.sitem && this.sitem.good_img) {
+            this.sitem.good_img = this.sitem.good_img.split(",");
+          }
+          if (this.sitem && this.sitem.good_info_img) {
+            this.sitem.good_info_img = this.sitem.good_info_img.split(",");
+          }
         } else if (code >= 100 && code <= 104) {
           await this.logout();
         } else {

+ 88 - 0
src/components/show-goods-data-table-modal/columns.js

@@ -0,0 +1,88 @@
+export default [
+  { type: "selection", fixed: "left", _noset_: true, width: "45", align: "center" },
+  {
+    prop: "spuCode",
+    label: "商品编码",
+    width: "158",
+  },
+  {
+    prop: "good_name",
+    label: "商品名称",
+    _slot_: "good_name",
+    "min-width": "200",
+  },
+  {
+    prop: "class_cat",
+    label: "分类",
+    "width": "170",
+  },
+  {
+    prop: "brand_name",
+    label: "品牌",
+    "width": "100",
+  },
+  {
+    prop: "unit",
+    label: "单位",
+    width: "50",
+  },
+  {
+    prop: "usable_stock",
+    label: "可用库存",
+    width: "110",
+  },
+  // {
+  //   prop: "gys_code",
+  //   label: "供应商编码",
+  //   width: "142",
+  // },
+
+  // {
+  //   prop: "supplier_name",
+  //   label: "供货商",
+  //   "min-width": "160",
+  // },
+  // {
+  //   prop: "cg_saler",
+  //   label: "采购员",
+  //   width: "60",
+  // },
+  // {
+  //   prop: "usable_stock",
+  //   label: "商品库存",
+  //   width: "70",
+  // },
+
+  // {
+  //   prop: "bstatus",
+  //   label: "当前状态",
+  //   _slot_: "status",
+  //   width: "80px",
+  // },
+
+
+  // {
+  //   prop: "classArr",
+  //   label: "商品类别",
+  // },
+
+
+  // {
+  //   prop: "good_type",
+  //   label: "商品类型",
+  // },
+  // {后端有接口但是没有值。
+  //   prop: "specs",
+  //   label: "商品规格",
+  // },
+
+  // {
+  //   prop: "",
+  //   label: "操作",
+  //   width: "80px",
+  //   fixed: "right",
+  //   _noset_: true,
+  //   _slot_: "operation",
+  // },
+
+]

+ 68 - 0
src/components/show-goods-data-table-modal/index.vue

@@ -0,0 +1,68 @@
+<template>
+  <el-dialog
+    :title="title"
+    :center="true"
+    align="left"
+    top="8vh"
+    width="1040px"
+    @close="showModelThis = false"
+    :close-on-click-modal="false"
+    :visible.sync="showModelThis"
+    v-loading="loading"
+    element-loading-text="拼命加载中"
+    element-loading-spinner="el-icon-loading"
+    element-loading-background="rgba(0, 0, 0, 0.8)"
+    append-to-body
+  >
+    <show-goods-data-table style="margin:-20px 0 0 0"
+      :newTime="newTime"
+      v-if="newTime !== ''"
+      :type="type"
+      :skucode="skuCode"
+      :spucode="spuCode"
+      :iscgd="iscgd"
+      :border="true"
+    >
+    </show-goods-data-table>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  name: "showGoodsDataTableModal",
+  props: ["showModel", 'title',"type", "skuCode", "spuCode", "iscgd"],
+
+
+  data() {
+    return {
+      newTime: "",
+      loading: true,
+      showModelThis:this.showModel
+    };
+  },
+  watch: {
+    showModel: function (val) {
+      this.showModelThis = val;
+      if (val) {
+        this.loading = true;
+        this.getNewTime();
+      }
+    },
+    showModelThis(val) {
+      if (!val) {
+        this.$emit("cancel");
+      }
+    },
+  },
+
+  methods: {
+    getNewTime() {
+      this.newTime = new Date().valueOf() + "";
+      this.loading = false;
+    },
+  },
+};
+</script>
+
+<style>
+</style>

+ 0 - 0
src/components/show-goods-data-table-modal/商品信息弹窗


+ 173 - 0
src/views/goodStore/goodsRepertory/columns.js

@@ -0,0 +1,173 @@
+
+//是否定制
+const options1 = [
+  { id: "0", name: "否" },
+  { id: "1", name: "是" },
+]
+//专属类型
+const options2 = [
+  { id: "0", name: "非泰康" },
+  { id: "1", name: "泰康" },
+]
+//销售权限
+const options3 = [
+  { id: "0", name: "无销售权限" },
+  { id: "1", name: "有销售权限" },
+]
+
+//是否库存品
+const options4 = [
+  { id: "0", name: "非库存品" },
+  { id: "1", name: "库存品" },
+]
+//是否启用实时金价
+const options5 = [
+  { id: "0", name: "否" },
+  { id: "1", name: "是" },
+]
+//供货区域
+const options6 = [
+  { id: "1", name: "全国" },
+  { id: "2", name: "全国除偏远" },
+]
+//是否启用阶梯
+const options7 = [
+  { id: "0", name: "否" },
+  { id: "1", name: "是" },
+]
+const options8 = [
+  // { id: "0", name: "待提交" },
+  { id: "1", name: "待完善成本" },
+  { id: "2", name: "待产品审核" },
+  { id: "3", name: "待财务定价" },
+  { id: "4", name: "待财务审核定价" },
+  { id: "5", name: "待上线" },
+  { id: "6", name: "上线成功" },
+  { id: "7", name: "审核失败" },
+  { id: "8", name: "已下线" },
+]
+const listCol = [
+  {
+    prop: "skuCode",
+    label: "编号",
+    fixed: "left",
+    width: "160px",
+  },
+  {
+    prop: "good_thumb_img",
+    label: "图片",
+    _slot_: "good_thumb_img",
+    width: "45px",
+  },
+  {
+    prop: "good_name",
+    label: "名称",
+    "min-width": "160px",
+  },
+  // {
+  //   prop: "platform_code_en",
+  //   label: "平台编号",
+  //   width: "170px",
+  // },
+  {
+    prop: "platform_name",
+    label: "平台名称",
+    width: "100px",
+  },
+
+  {
+    prop: "status",
+    label: "状态",
+    _slot_: "status",
+    width: "118px",
+  },
+  {
+    prop: "cat_name",
+    label: "分类",
+    width: "118px",
+  },
+  {
+    prop: "good_type",
+    label: "是否定制",
+    _slot_: "good_type",
+    width: "70px",
+  },
+  {
+    prop: "brand_name",
+    label: "品牌",
+  },
+  {
+    prop: "companyNo",
+    label: "业务公司编号",
+    width: "160px",
+  },
+  {
+    prop: "company",
+    label: "业务公司名称",
+    width: "150px",
+  },
+  {
+    prop: "plat_code",
+    label: "平台商品编号",
+    width: "150px",
+  },
+  {
+    prop: "plat_code",
+    label: "起订量",
+    width: "70px",
+  },
+  {
+    prop: "plat_code",
+    label: "售价",
+    width: "70px",
+  },
+  {
+    prop: "purchase",
+    label: "采购员",
+    width: "70px",
+  },
+  {
+    prop: "creater",
+    label: "创建人",
+    width: "70px",
+  },
+  {
+    prop: "addtime",
+    label: "创建时间",
+    width: "140px",
+  },
+  {
+    prop: "",
+    label: "操作",
+    fixed: "right",
+    _noset_: true,
+    width: "50px",
+    _slot_: "operation",
+  },
+]
+const rules = {
+  platform: [
+    {
+      required: true,
+      message: "请选择所属平台",
+      trigger: "change",
+    },
+  ],
+  online_reason: [
+    {
+      required: true,
+      message: "上线原因不能为空",
+      trigger: "blur",
+    },
+  ],
+  online_remark: [
+    {
+      required: true,
+      message: "上线备注不能为空",
+      trigger: "blur",
+    },
+  ],
+
+}
+
+export { options1, options2, options3, options4, options5, options6, options7, options8, listCol, rules }

+ 587 - 0
src/views/goodStore/goodsRepertory/index.vue

@@ -0,0 +1,587 @@
+<template>
+  <div class="goodsOnline pagePadding">
+    <ex-table
+      v-loading="loading"
+      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
+      :table="table"
+      :data="tableData"
+      :columns="columns"
+      :page="pageInfo"
+      :size="size"
+      @page-curr-change="handlePageChange"
+      @page-size-change="handleSizeChange"
+      @screen-reset="
+        pageInfo.curr = 1;
+        parmValue.page = 1;
+        searchList();
+      "
+      @screen-submit="
+        pageInfo.curr = 1;
+        parmValue.page = 1;
+        searchList();
+      "
+    >
+      <template #table-header="{}">
+        <div style="width: 100%">
+          <el-row style="padding: 0 0 10px 80px">
+            <el-col :span="4" style="width: 120px">
+              <el-select
+                v-model="parmValue.good_type"
+                filterable
+                clearable
+                :size="searchSize"
+                placeholder="是否定制"
+                style="width: 100%"
+                @change="
+                  pageInfo.curr = 1;
+                  parmValue.page = 1;
+                  searchList();
+                "
+              >
+                <el-option
+                  v-for="item in options1"
+                  :key="'good_type' + item.id"
+                  :label="item.name"
+                  :value="item.id"
+                />
+              </el-select>
+            </el-col>
+            <el-col :span="6" style="width: 303px; padding: 0 0 0 10px">
+              <period-date-picker
+                :type="1"
+                :width="'135px'"
+                :size="searchSize"
+                :start="parmValue.start"
+                :end="parmValue.end"
+                @timeReturned="handleTime"
+              />
+            </el-col>
+
+            <el-col :span="6" style="width: 310px; padding: 0 0 0 10px">
+              <good-class
+                :value="parmValue.cat_id"
+                @handleChange="goods_class_change"
+                :disabled="false"
+                :size="searchSize"
+                :isDetail="false"
+                :placeholder="'分类'"
+              />
+            </el-col>
+
+            <el-col
+              :span="3"
+              class="fr"
+              style="width: 66px; padding: 0 0 0 10px"
+            >
+              <el-button type="primary" :size="searchSize" @click="searchList">
+                刷新
+              </el-button>
+            </el-col>
+            <el-col
+              :span="3"
+              class="fr"
+              style="width: 66px; padding: 0 0 0 10px"
+            >
+              <el-button type="warning" :size="searchSize" @click="restSearch">
+                重置
+              </el-button>
+            </el-col>
+          </el-row>
+
+          <el-row>
+            <el-col :span="4" style="width: 200px">
+              <el-select
+                v-model="parmValue.exam_status"
+                filterable
+                clearable
+                :size="searchSize"
+                placeholder="状态"
+                style="width: 100%"
+                @change="
+                  pageInfo.curr = 1;
+                  parmValue.page = 1;
+                  searchList();
+                "
+              >
+                <el-option
+                  v-for="item in options8"
+                  :key="'status' + item.id"
+                  :label="item.name"
+                  :value="item.id"
+                />
+              </el-select>
+            </el-col>
+            <el-col :span="4" style="width: 240px; padding: 0 0 0 10px">
+              <search-brand
+                :value="brandid"
+                :disabled="type === 'view' || type === 'editCoin'"
+                :size="'mini'"
+                :isDetail="type !== 'add'"
+                :names="brand_name"
+                :placeholder="'商品品牌'"
+                @searchChange="brandidsearchChange"
+              />
+            </el-col>
+
+            <el-col :span="4" style="width: 470px; padding: 0 0 0 10px">
+              <el-input
+                :size="searchSize"
+                v-model="sinput"
+                :maxlength="40"
+                @blur="
+                  pageInfo.curr = 1;
+                  parmValue.page = 1;
+                  searchList();
+                "
+                placeholder="关键字"
+                ><el-select
+                  v-model="select"
+                  slot="prepend"
+                  :size="searchSize"
+                  style="width: 140px"
+                  placeholder="关键字类型"
+                >
+                  <el-option label="商品名称" value="1" />
+                  <el-option label="商品编号" value="2" />
+                  <!-- <el-option label="平台编号" value="3" /> -->
+                  <!-- <el-option label="供应商编号" value="4" /> -->
+                  <el-option label="业务企业编号" value="5" />
+                  <el-option label="平台商品编号" value="6" />
+                  <el-option label="创建人" value="7" /> </el-select
+              ></el-input>
+            </el-col>
+            <el-col
+              :span="3"
+              class="fr"
+              style="width: 66px; padding: 0 0 0 10px"
+              v-if="powers.some((item) => item == '003')"
+            >
+              <el-button
+                :size="searchSize"
+                type="success"
+                style="float: right"
+                @click="routeGoto('goodsOnlineAdd', {})"
+              >
+                添加
+              </el-button>
+            </el-col>
+          </el-row>
+        </div></template
+      >
+      <template #good_thumb_img="{ scope }">
+        <div
+          v-if="scope.row.good_thumb_img"
+          style="width: 20px; height: 20px"
+          class="hover"
+          v-viewer
+        >
+          <img
+            :src="scope.row.good_thumb_img"
+            style="display: inline-block; width: 100%; height: 100%"
+            alt=""
+          />
+        </div>
+      </template>
+      <template #status="{ scope }">
+        <el-tag
+          :size="tablebtnSize"
+          :type="
+            scope.row.status == '6'
+              ? ''
+              : scope.row.status == '7'
+              ? 'danger'
+              : 'warning'
+          "
+          v-text="
+            (options8.find((item) => item.id == scope.row.status) || {}).name ||
+            '--'
+          "
+        ></el-tag>
+      </template>
+      <template #good_type="{ scope }">
+        <el-tag
+          :size="tablebtnSize"
+          :type="scope.row.good_type == '0' ? 'warning' : ''"
+          v-text="
+            (options1.find((item) => item.id == scope.row.good_type) || {})
+              .name || '--'
+          "
+        ></el-tag>
+      </template>
+
+      <template #operation="{ scope }">
+        <el-tooltip
+          v-if="powers.some((item) => item == '007')"
+          effect="dark"
+          content="详情"
+          placement="top"
+        >
+          <i
+            class="el-icon-view tb-icon"
+            @click="openDilog(scope.row)"
+          ></i>
+        </el-tooltip>
+        <el-tooltip
+          v-if="
+            powers.some((item) => item == '078') &&
+            (scope.row.status === '7' || scope.row.status === '8')
+          "
+          effect="dark"
+          content="重新发起上线流程"
+          placement="top"
+        >
+          <i
+            class="el-icon-upload tb-icon"
+            @click="get_againonline(scope.row.skuCode)"
+          ></i>
+        </el-tooltip>
+      </template>
+    </ex-table>
+    <no-auth v-else></no-auth>
+    <!-- 弹窗 新增/修改 -->
+    <add-edit
+      :id="modelId"
+      :show-model="showModel"
+      :sitem="sitem"
+      @refresh="searchList"
+      @cancel="showModel = false"
+    />
+
+
+    <el-dialog title="详细信息" :visible.sync="visible">
+        <show-goods-data-table
+          :newTime="row.newTime"
+          v-if="row.newTime !== ''"
+          type="1"
+          :skucode="row.skuCode"
+          :spucode="row.spuCode"
+          :iscgd="false"
+        >
+        </show-goods-data-table>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import asyncRequest from "@/apis/service/goodStore/goodsRepertory";
+import mixinPage from "@/mixins/elPaginationHandle";
+import { mapGetters } from "vuex";
+import resToken from "@/mixins/resToken";
+import { listCol, options1, options8 } from "./columns";
+export default {
+  name: "goodsOnline",
+  mixins: [mixinPage, resToken],
+  computed: {
+    //组件SIZE设置
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      let tran =
+        this.$store.getters.btnList.find(
+          (item) => item.menu_route == "goodsOnline"
+        ) || {};
+      if (tran && tran.action && tran.action.length > 0) {
+        return tran.action;
+      } else {
+        return [];
+      }
+    },
+  },
+  data() {
+    return {
+        row:{},
+        visible:false,
+      options1: options1,
+      options8: options8,
+      loading: false,
+      parmValue: {
+        good_name: "", //商品名称
+        spucode: "", //商品编号
+        cat_id: "", //商品分类
+        start: "", //开始日期
+        end: "", //结束日期
+        platform_code: "", //平台编码
+        is_stock: "", //是否库存品
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+        supplierNo: "", //供应商编号
+        good_type: "", //是否定制
+        brand_id: "", //品牌
+        companyNo: "", //业务企业编号
+        exam_status: "", //审核状态
+        plat_code: "", //平台商品编号
+        creater: "", //
+      },
+
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: listCol,
+      cat_id: [],
+      brandid: [],
+      select: "1",
+      sinput: "",
+    };
+  },
+  mounted() {
+    this.cat_id = [];
+    this.brandid = [];
+    this.searchList();
+  },
+  methods: {
+    //打开弹窗
+      openDilog(row){
+          this.visible = true;
+          this.row = row
+          console.log(this.row)
+      },
+
+    restSearch() {
+      this.cat_id = [];
+      this.brandid = [];
+      // 表格 - 分页
+      this.pageInfo = {
+        size: 15,
+        curr: 1,
+        total: 0,
+      };
+      this.parmValue = {
+        good_name: "", //商品名称
+        spucode: "", //商品编号
+        cat_id: "", //商品分类
+        start: "", //开始日期
+        end: "", //结束日期
+        platform_code: "", //平台编码
+        is_stock: "", //是否库存品
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+        supplierNo: "", //供应商编号
+        good_type: "", //是否定制
+        brand_id: "", //品牌
+        companyNo: "", //业务企业编号
+        exam_status: "", //审核状态
+        plat_code: "", //平台商品编号
+        creater: "", //
+      };
+      this.searchList();
+    },
+    //商品品牌选择
+    async brandidsearchChange(e) {
+      const { id, code, label } = e;
+      if (id) {
+        this.brandid = [id];
+      } else {
+        this.brandid = [];
+      }
+      this.parmValue.brand_id = this.brandid.toString();
+      this.pageInfo.curr = 1;
+      this.parmValue.page = 1;
+      await this.searchList();
+    },
+    // 时间
+    async handleTime(e) {
+      this.parmValue.start = e.startTime || "";
+      this.parmValue.end = e.endTime || "";
+      if (
+        (this.parmValue.start !== "" && this.parmValue.end !== "") ||
+        (this.parmValue.start === "" && this.parmValue.end === "")
+      ) {
+        this.pageInfo.curr = 1;
+        this.parmValue.page = 1;
+        await this.searchList();
+      }
+    },
+    /**
+     * 商品重新上线
+     * @param {String} id id
+     * @param {String} status 0-禁用 1-启用
+     */
+    async get_againonline(skuCode) {
+      await this.$confirm(`确定要重新发起上线流程?`, {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          this.loading = true;
+          const model = {
+            skuCode: skuCode,
+          };
+          const res = await asyncRequest.againonline(model);
+          if (res && res.code === 0) {
+            this.loading = false;
+            this.$notify.success({
+              title: "重新发起上线流程成功!",
+              message: "",
+            });
+            await this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.loading = false;
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    /**
+     * 商品下线
+     * @param {String} id id
+     * @param {String} status 0-禁用 1-启用
+     */
+    async get_donline(skuCode) {
+      await this.$confirm(`确定要下线商品?`, {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          this.loading = true;
+          const model = {
+            skuCode: skuCode,
+            exam_status: "8",
+          };
+          const res = await asyncRequest.status(model);
+          if (res && res.code === 0) {
+            this.loading = false;
+            this.$notify.success({
+              title: "下线商品成功!",
+              message: "",
+            });
+            await this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.loading = false;
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    /**
+     * 启用/禁用
+     * @param {String} id id
+     * @param {String} status 0-禁用 1-启用
+     */
+    async changeStatus(id, status) {
+      await this.$confirm(`确定要改为${status === "1" ? "禁用" : "启用"}?`, {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          this.loading = true;
+          const model = {
+            id: id,
+            status: status === "1" ? "0" : "1",
+          };
+          const res = await asyncRequest.status(model);
+          if (res && res.code === 0) {
+            this.loading = false;
+            this.$notify.success({
+              title: "状态修改成功!",
+              message: "",
+            });
+            await this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.loading = false;
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    async deleteItem(code) {
+      await this.$confirm("确定要删除?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          const model = {
+            codes: [code],
+          };
+          const res = await asyncRequest.delete(model);
+          if (res && res.code === 0) {
+            this.$notify.success({
+              title: "删除成功",
+              message: "",
+            });
+            this.searchList();
+          } else if (res && res.code >= 100 && res.code <= 104) {
+            await this.logout();
+          } else {
+            this.$message.warning(res.message);
+          }
+        })
+        .catch(() => {
+          console.log("取消");
+        });
+    },
+    // 刷新表格
+    async searchList() {
+      this.loading = true;
+      let model = JSON.parse(JSON.stringify(this.parmValue));
+      model.good_name = this.select === "1" ? this.sinput : ""; //商品名称
+      model.spucode = this.select === "2" ? this.sinput : ""; //商品编号
+      // model.platform_code = this.select === "1" ? this.sinput : ""; //平台编码
+      // model.supplierNo = this.select === "1" ? this.sinput : ""; //供应商编号
+      model.companyNo = this.select === "5" ? this.sinput : ""; //业务企业编号
+      // model.exam_status = this.select === "1" ? this.sinput : ""; //审核状态
+      model.plat_code = this.select === "6" ? this.sinput : ""; //平台商品编号
+      model.creater = this.select === "7" ? this.sinput : ""; //
+      const res = await asyncRequest.list(model);
+      if (res && res.code === 0 && res.data) {
+        this.tableData = res.data.list;
+        this.tableData.forEach((a) => {
+          a.cat_name = "";
+          let list = a.cat_info || [];
+          list.forEach((b, i) => {
+            a.cat_name += i == 0 ? b.name : "/" + b.name;
+          });
+        });
+        this.pageInfo.total = Number(res.data.count);
+      } else if (res && res.code >= 100 && res.code <= 104) {
+        await this.logout();
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    },
+    //商品分类选择
+    async goods_class_change(e) {
+      this.cat_id = e;
+      this.parmValue.cat_id =
+        this.cat_id.length === 0 ? "" : this.cat_id[this.cat_id.length - 1];
+      this.pageInfo.curr = 1;
+      this.parmValue.page = 1;
+      await this.searchList();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+/deep/ .el-dialog{
+  width: 1024px;
+}
+</style>
+

+ 0 - 0
src/views/goodStore/goodsRepertory/商品库存查询


+ 2 - 2
src/views/goodStore/sort/addEdit.vue

@@ -53,14 +53,14 @@
                 </el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="财务核算码" prop="fund_code">
+            <!-- <el-form-item label="财务核算码" prop="fund_code">
               <el-input
                 v-model="ruleForm.fund_code"
                 :disabled="id == '007'"
                 placeholder="财务核算码"
                 maxlength="50"
               />
-            </el-form-item>
+            </el-form-item> -->
             <el-form-item label="售后说明" prop="cat_desc">
               <el-input
                 v-model="ruleForm.cat_desc"

+ 95 - 39
src/views/goodStore/sort/addEditRate.vue

@@ -55,7 +55,7 @@
                 :size="'mini'"
                 :controls="false"
                 :append="'%'"
-                @reschange="order_rate_change"
+                @reschange="rate_change($event, 'order_rate')"
               />
             </el-form-item>
             <el-form-item label="成本→售价" prop="sale_rate">
@@ -69,13 +69,14 @@
                 :size="'mini'"
                 :controls="false"
                 :append="'%'"
-                @reschange="sale_rate_change"
+                @reschange="rate_change($event, 'sale_rate')"
               />
             </el-form-item>
-            <el-form-item label="最低毛利" prop="lower_rate">
+
+            <el-form-item label="主管利率" prop="rate">
               <digital-input
-                :values="ruleForm.lower_rate"
-                :placeholder="'最低毛利'"
+                :values="ruleForm.rate"
+                :placeholder="'主管利率'"
                 :min="-100"
                 :max="100000000000"
                 :position="'right'"
@@ -83,13 +84,27 @@
                 :size="'mini'"
                 :controls="false"
                 :append="'%'"
-                @reschange="lower_rate_change"
+                @reschange="rate_change($event, 'rate')"
               />
             </el-form-item>
-            <el-form-item label="单品修改下限" prop="rate">
+            <el-form-item label="财务利率" prop="money_rate">
               <digital-input
-                :values="ruleForm.rate"
-                :placeholder="'单品修改下限'"
+                :values="ruleForm.money_rate"
+                :placeholder="'财务利率'"
+                :min="-100"
+                :max="100000000000"
+                :position="'right'"
+                :precision="2"
+                :size="'mini'"
+                :controls="false"
+                :append="'%'"
+                @reschange="rate_change($event, 'money_rate')"
+              />
+            </el-form-item>
+            <el-form-item label="项目最低毛利" prop="low_rate">
+              <digital-input
+                :values="ruleForm.low_rate"
+                :placeholder="'项目最低毛利'"
                 :min="-100"
                 :max="100000000000"
                 :position="'right'"
@@ -97,7 +112,21 @@
                 :size="'mini'"
                 :controls="false"
                 :append="'%'"
-                @reschange="rate_change"
+                @reschange="rate_change($event, 'low_rate')"
+              />
+            </el-form-item>
+            <el-form-item label="BOSS毛利率" prop="lower_rate">
+              <digital-input
+                :values="ruleForm.lower_rate"
+                :placeholder="'BOSS毛利率'"
+                :min="-100"
+                :max="100000000000"
+                :position="'right'"
+                :precision="2"
+                :size="'mini'"
+                :controls="false"
+                :append="'%'"
+                @reschange="rate_change($event, 'lower_rate')"
               />
             </el-form-item>
           </el-form>
@@ -126,30 +155,51 @@ export default {
   props: ["showModel", "id", "sitem", "titleList"],
   mixins: [resToken],
   data() {
+    const validate_rate = (rule, value, callback) => {
+      const { required } = rule;
+      if (value === "" && required) {
+        callback(new Error("主管利率毛利率不能为空!"));
+      } else {
+        callback();
+      }
+    };
     const validate_order_rate = (rule, value, callback) => {
-      if (value === "") {
+      const { required } = rule;
+      if (value === "" && required) {
         callback(new Error("预算→成本毛利率不能为空!"));
       } else {
         callback();
       }
     };
     const validate_sale_rate = (rule, value, callback) => {
-      if (value === "") {
+      const { required } = rule;
+      if (value === "" && required) {
         callback(new Error("成本→售价毛利率不能为空!"));
       } else {
         callback();
       }
     };
+
     const validate_lower_rate = (rule, value, callback) => {
-      if (value === "") {
-        callback(new Error("最低毛利率不能为空!"));
+      const { required } = rule;
+      if (value === "" && required) {
+        callback(new Error("BOSS毛利率不能为空!"));
       } else {
         callback();
       }
     };
-    const validate_rate = (rule, value, callback) => {
-      if (value === "") {
-        callback(new Error("单品修改下限毛利率不能为空!"));
+    const validate_low_rate = (rule, value, callback) => {
+      const { required } = rule;
+      if (value === "" && required) {
+        callback(new Error("项目最低毛利率不能为空!"));
+      } else {
+        callback();
+      }
+    };
+    const validate_money_rate = (rule, value, callback) => {
+      const { required } = rule;
+      if (value === "" && required) {
+        callback(new Error("财务毛利率不能为空!"));
       } else {
         callback();
       }
@@ -165,6 +215,8 @@ export default {
         sale_rate: "0",
         lower_rate: "0",
         rate: "0",
+        low_rate: "0",
+        money_rate: "0",
       },
       rulesThis: this.rules,
       rules: {
@@ -175,9 +227,16 @@ export default {
           { required: true, validator: validate_sale_rate, trigger: "blur" },
         ],
         lower_rate: [
-          { required: true, validator: validate_lower_rate, trigger: "blur" },
+          { required: false, validator: validate_lower_rate, trigger: "blur" },
         ],
         rate: [{ required: true, validator: validate_rate, trigger: "blur" }],
+
+        low_rate: [
+          { required: true, validator: validate_low_rate, trigger: "blur" },
+        ],
+        money_rate: [
+          { required: true, validator: validate_money_rate, trigger: "blur" },
+        ],
       },
     };
   },
@@ -222,6 +281,8 @@ export default {
             lower_rate,
             rate,
             fund_code,
+            low_rate,
+            money_rate,
           } = this.sitem;
           this.ruleForm = {
             pid: pid || "",
@@ -232,31 +293,22 @@ export default {
             sale_rate: sale_rate || "0",
             lower_rate: lower_rate || "0",
             rate: rate || "0",
+            low_rate: low_rate || "0",
+            money_rate: money_rate || "0",
           };
         }
       });
     },
-    order_rate_change(e) {
-      this.ruleForm.order_rate = e + "";
-      this.$refs.ruleForm.validateField("order_rate");
-    },
-    sale_rate_change(e) {
-      this.ruleForm.sale_rate = e + "";
-      this.$refs.ruleForm.validateField("sale_rate");
-    },
-    lower_rate_change(e) {
-      this.ruleForm.lower_rate = e + "";
-      this.$refs.ruleForm.validateField("lower_rate");
-    },
-    rate_change(e) {
-      this.ruleForm.rate = e + "";
-      this.$refs.ruleForm.validateField("rate");
+    rate_change(e, key) {
+      this.ruleForm[key] = e + "";
+      this.$refs.ruleForm.validateField(key);
     },
 
     async initData() {
-      const res = await asyncRequest.detail({ id: this.sitem.id });
-      if (res && res.code === 0 && res.data) {
-        console.log(res.data);
+      const { code, data, message } = await asyncRequest.detail({
+        id: this.sitem.id,
+      });
+      if (code === 0) {
         const {
           pid,
           id,
@@ -266,7 +318,9 @@ export default {
           lower_rate,
           rate,
           fund_code,
-        } = res.data;
+          low_rate,
+          money_rate,
+        } = data;
         this.ruleForm = {
           pid: pid || "",
           id: id || "",
@@ -276,11 +330,13 @@ export default {
           sale_rate: sale_rate || "0",
           lower_rate: lower_rate || "0",
           rate: rate || "0",
+          low_rate: low_rate || "0",
+          money_rate: money_rate || "0",
         };
-      } else if (res && res.code >= 100 && res.code <= 104) {
+      } else if (code >= 100 && code <= 104) {
         await this.logout();
       } else {
-        this.$message.warning(res.message);
+        this.$message.warning(message);
       }
     },
     async submitForm() {

+ 5 - 3
src/views/purchaseIn/workbench/detail.vue

@@ -94,12 +94,14 @@
                   {{ sitem.metal_name }}
                 </li>
 
-                <li>工艺说明:</li>
-                <li>{{ sitem.cost_desc }}</li>
+                <li v-if="sitem && sitem.cost_desc">工艺说明:</li>
+                <li v-if="sitem && sitem.cost_desc">{{ sitem.cost_desc }}</li>
                 <li>产品用途:</li>
                 <li>{{ sitem.use_desc }}</li>
                 <li>商品备注:</li>
                 <li>{{ sitem.remark }}</li>
+                <li>商品附件:</li>
+                <li v-if="sitem && sitem.enclosure_file "><a :href="sitem.enclosure_file" download="附件" class="fl" >点击下载附件</a></li>
               </ul>
             </div>
           </div>
@@ -162,7 +164,7 @@
               show-overflow-tooltip
             />
             <el-table-column
-              prop="sale_price"
+              prop="total_fee"
               label="成本合计"
               width="110"
               show-overflow-tooltip

+ 6 - 5
src/views/sellOut/project/components/addForm.vue

@@ -381,8 +381,9 @@ export default {
       if (index + "" === "-1") {
         this.ruleForm.ladder.push(item);
       } else {
+        console.log(item);
         this.ruleForm.ladder.forEach((i, findex) => {
-          if (i.id === id && findex === parseInt(i.index)) {
+          if (findex === parseInt(index)) {
             this.ruleForm.ladder[findex].id = id;
             this.ruleForm.ladder[findex].budget_price = budget_price;
             this.ruleForm.ladder[findex].num = num;
@@ -420,9 +421,9 @@ export default {
     },
     //平台选择
     platform_codesearchChange(e) {
-        const { id, code, label } = e;
-        this.ruleForm.platform = id||"";
-        this.$refs.ruleForm.validateField("platform");
+      const { id, code, label } = e;
+      this.ruleForm.platform = id || "";
+      this.$refs.ruleForm.validateField("platform");
     },
     //销售方公司选择
     company_idsearchChange(e) {
@@ -506,7 +507,7 @@ export default {
           this.platform_name = platform_name || "";
           this.ruleForm = {
             name: project_name || "",
-            platform: platform_id ||"",
+            platform: platform_id || "",
             companyNo: companyNo || "",
             khNo: khNo ? [khNo] : [],
             customer_name: khName || "",

+ 42 - 0
src/views/sellOut/project/components/backGoodShow.vue

@@ -126,6 +126,17 @@
             </template>
 
             <template #operation="{ scope }">
+              <el-tooltip
+                v-if="powers.some((item) => item == '007')"
+                effect="dark"
+                content="详情"
+                placement="top"
+              >
+                <i
+                  class="el-icon-view tb-icon"
+                  @click="show_view(scope.row)"
+                ></i>
+              </el-tooltip>
               <el-tooltip
                 effect="dark"
                 content="删除"
@@ -148,6 +159,16 @@
       @cancel="showModel = false"
       @submitRes="resetFormData"
     />
+
+    <show-goods-data-table-modal
+      :showModel="visible"
+      :type="row.data_type_source"
+      :title="row.dtitle"
+      :skuCode="row.skuCode"
+      :spuCode="row.spuCode"
+      :iscgd="row.iscgd"
+      @cancel="visible = false"
+    />
   </div>
 </template>
 <script>
@@ -155,12 +176,14 @@ import asyncRequest from "@/apis/service/sellOut/project";
 import resToken from "@/mixins/resToken";
 import columnsForm from "./columnsForm";
 import searchGoodOnlineTableModal from "./search-good-online-table-modal";
+import showGoodsDataTableModal from "@/components/show-goods-data-table-modal";
 export default {
   name: "backGoodShow",
   props: ["showModel", "sitem", "id", "type", " newTime"],
   mixins: [resToken],
   components: {
     searchGoodOnlineTableModal,
+    showGoodsDataTableModal,
   },
   computed: {
     powers() {
@@ -190,6 +213,8 @@ export default {
   },
   data() {
     return {
+      row: {},
+      visible: false,
       showModel: false,
       searchItem: {},
       loading: false,
@@ -213,6 +238,20 @@ export default {
     this.initForm();
   },
   methods: {
+    show_view(keyRow) {
+      const { data_source } = keyRow;
+      this.row = keyRow;
+      if (data_source == 2) {
+        this.row.data_type_source = "3";
+        this.row.dtitle = "采返商品详情";
+        this.row.iscgd = true;
+      } else {
+        this.row.data_type_source = "1";
+        this.row.dtitle = "平台商品详情";
+        this.row.iscgd = false;
+      }
+      this.visible = true;
+    },
     //初始化整个组件
     async initForm() {
       this.loading = true;
@@ -389,4 +428,7 @@ export default {
     }
   }
 }
+/deep/ .el-dialog {
+  width: 1024px;
+}
 </style>

+ 8 - 2
src/views/sellOut/salesOrder/components/addForm.vue

@@ -271,6 +271,7 @@
                 <el-col :span="12">
                   <el-form-item label="销售数量" prop="good_num">
                     <digital-input
+                      
                       :values="ruleForm.good_num"
                       :name="'ruleForm.good_num'"
                       :placeholder="'销售数量'"
@@ -283,6 +284,7 @@
                       :controls="false"
                       :append="''"
                       @reschange="number_change($event, 'good_num')"
+                      
                     />
                   </el-form-item>
                 </el-col>
@@ -545,6 +547,7 @@
                 </el-tooltip>
               </template>
               <template slot-scope="scope">
+
                 <el-tooltip
                   effect="dark"
                   content="编辑"
@@ -563,6 +566,7 @@
                   v-if="scope.row.edit"
                   placement="top"
                 >
+
                   <i
                     class="el-icon-circle-check tb-icon"
                     @click="checkRow(scope.$index)"
@@ -594,7 +598,8 @@
           @searchChange="resvoucher"
         /> -->
       </el-col>
-      <el-col :span="24" style="text-align: right; padding: 0 0 20px 0">
+      <el-col :span="24" style="text-align: right; padding: 0 0 20px 0; display:flex; justify-content: space-between;">
+        <p>订单总金额:{{ruleForm.good_num*ruleForm.good_price || 0}}</p>
         <el-button :size="'mini'" type="primary" @click="submitForm"
           >保 存
         </el-button>
@@ -625,7 +630,7 @@ export default {
       if (val) {
         this.initForm();
       }
-    },
+    }
   },
   computed: {
     powers() {
@@ -1330,6 +1335,7 @@ export default {
 </script>
    <style lang="scss" scoped>
 .salesOrderDetail {
+  
 }
 </style>
    

+ 12 - 5
src/views/sellOut/zixunOrder/columns.js

@@ -133,7 +133,7 @@ const rules = {
   ],
   total_weight: [
     {
-      required: true,
+      required: false,
       validator: validate_total_weight,
       trigger: "blur",
     },
@@ -183,7 +183,7 @@ const rules = {
   ],
   cost_desc: [
     {
-      required: true,
+      required: false,
       message: "工艺说明不能为空",
       trigger: "blur",
     },
@@ -216,6 +216,13 @@ const rules = {
       trigger: "blur",
     },
   ],
+  enclosure_file: [
+    {
+      required: false,
+      message: "请上传附件",
+      trigger: "change",
+    },
+  ],
 };
 const edutRules = {
   companyNo: [
@@ -393,7 +400,7 @@ const edutRules = {
   ],
   cost_desc: [
     {
-      required: true,
+      required: false,
       message: "工艺说明不能为空",
       trigger: "blur",
     },
@@ -488,7 +495,7 @@ const feedbackListCol = [
     label: "负责人",
     "width": "60"
   },
-  
+
   {
     prop: "addtime",
     label: "添加时间",
@@ -500,7 +507,7 @@ const feedbackListCol = [
     fixed: "right",
     _noset_: true,
     _slot_: "operation",
-    width: 120,
+    width: 155,
   },
 ]
 

+ 1 - 0
src/views/sellOut/zixunOrder/components/addEditForm.vue

@@ -662,6 +662,7 @@ export default {
               pgNo: e.pgNo,
               total_weight: e.total_weight,
               is_gold_price: e.is_gold_price,
+              enclosure_file:e.enclosure_file,
               specinfo: [],
             };
             e.specinfo.forEach((a) => {

+ 87 - 0
src/views/sellOut/zixunOrder/components/addEditGoodModal.vue

@@ -334,6 +334,46 @@
                       </div>
                     </el-form-item>
                   </el-col>
+                  <el-col :span="8" class="clear">
+                    <el-form-item
+                      label="附件"
+                      prop="enclosure_file"
+                      class="activity-upload"
+                    >
+                      <div v-if="ruleForm&&ruleForm.enclosure_file" class="clearfix tl">
+                        <a :href="ruleForm.enclosure_file" download="附件" class="fl" >点击下载</a>
+
+                        <el-link
+                          :underline="false"
+                          @click="deleteUrl()"
+                          type="warning"
+                          style="margin: 0 0 0 16px"
+                          class="fr"
+                          >删除</el-link
+                        >
+                      </div>
+
+                      <div class="activity-upload" v-else>
+                        <div class="btnupload" style="position: relative">
+                          <i class="el-icon-plus avatar-uploader-icon"></i>
+                          <file-upload-pdf
+                            class="Upload"
+                            :accept="'.zip,.rar,.7z'"
+                            :multiple="false"
+                            :uploadcondition="beforeOtherUpload"
+                            @UploadErrorEvent="UploadErrorOtherenclosure_file"
+                            @UploadSuccessEvent="
+                              UploadSuccessOtherenclosure_file
+                            "
+                          />
+                        </div>
+                        <div class="txt-tips fl">
+                          <p>建议大小:小于5MB</p>
+                          <p>文件格式:.zip,.rar,.7z</p>
+                        </div>
+                      </div>
+                    </el-form-item>
+                  </el-col>
                   <el-col :span="8" v-if="is_noble">
                     <el-form-item label="金属种类" prop="metal_id">
                       <search-metal-kind
@@ -465,6 +505,7 @@ export default {
         remark: "",
         metal_id: "",
         gold_price: "0",
+        enclosure_file: "",
       },
       rulesThis: this.rules,
       rules: rules,
@@ -572,6 +613,7 @@ export default {
             specinfo,
             cat_id_name,
             cat_arr_id,
+            enclosure_file,
           } = this.sitem;
           console.log(this.sitem);
           // console.log(p_cat_info);
@@ -625,6 +667,7 @@ export default {
             gold_price: gold_price || "0",
             unit: unit ? unit : [],
             unit_name: unit_name ? unit_name : "",
+            enclosure_file: enclosure_file || "",
           };
           this.is_noble = false;
           if (cat_arr_id && cat_arr_id.length > 0) {
@@ -767,6 +810,50 @@ export default {
         this.$refs.ruleForm.validateField("good_img");
       }
     },
+    //其他文件上传失败
+    UploadErrorOtherenclosure_file(res) {
+      if (res !== "break") {
+        this.$refs.ruleForm.validateField("enclosure_file");
+      }
+    },
+
+    //判断其他文件规格
+    beforeOtherUpload(file) {
+      let isJPG = false;
+      if (file.type === "application/x-zip-compressed") {
+        isJPG = true;
+      }
+      let name = file.name;
+      let list = name.split(".");
+      if (list[list.length - 1] === "rar" || list[list.length - 1] === "7z") {
+        isJPG = true;
+      }
+
+      const isLt2M = file.size / 1024 / 1024 < 5;
+      if (!isJPG) {
+        this.$message.error("文件格式不正确!");
+      }
+      if (!isLt2M) {
+        this.$message.error("文件大小不能超过 5MB!");
+      }
+      return isJPG && isLt2M;
+    },
+
+    deleteUrl() {
+      this.ruleForm.enclosure_file = "";
+      this.$refs.ruleForm.validateField("enclosure_file");
+    },
+    // 其他文件上传成功
+    async UploadSuccessOtherenclosure_file(data) {
+      const { url } = data;
+    console.log(url);
+      if (url === "noToken") {
+        await this.logout();
+      } else {
+        this.ruleForm.enclosure_file = url;
+        this.$message.success("附件上传成功!");
+      }
+    },
   },
 };
 </script>

+ 95 - 0
src/views/sellOut/zixunOrder/components/editForm.vue

@@ -549,6 +549,55 @@
                       </div>
                     </el-form-item>
                   </el-col>
+                  <el-col :span="8" class="clear">
+                    <el-form-item
+                      label="附件"
+                      prop="enclosure_file"
+                      class="activity-upload"
+                    >
+                      <div
+                        v-if="ruleForm && ruleForm.enclosure_file"
+                        class="clearfix tl"
+                      >
+                        <a
+                          :href="ruleForm.enclosure_file"
+                          download="附件"
+                          class="fl"
+                          >点击下载</a
+                        >
+
+                        <el-link
+                          :underline="false"
+                          v-if="type !== 'view'"
+                          @click="deleteUrl()"
+                          type="warning"
+                          style="margin: 0 0 0 16px"
+                          class="fr"
+                          >删除</el-link
+                        >
+                      </div>
+
+                      <div class="activity-upload" v-else>
+                        <div class="btnupload" style="position: relative">
+                          <i class="el-icon-plus avatar-uploader-icon"></i>
+                          <file-upload-pdf
+                            class="Upload"
+                            :accept="'.zip,.rar,.7z'"
+                            :multiple="false"
+                            :uploadcondition="beforeOtherUpload"
+                            @UploadErrorEvent="UploadErrorOtherenclosure_file"
+                            @UploadSuccessEvent="
+                              UploadSuccessOtherenclosure_file
+                            "
+                          />
+                        </div>
+                        <div class="txt-tips fl">
+                          <p>建议大小:小于5MB</p>
+                          <p>文件格式:.zip,.rar,.7z</p>
+                        </div>
+                      </div>
+                    </el-form-item>
+                  </el-col>
                   <el-col :span="8" v-show="is_noble">
                     <el-form-item label="金属种类" prop="metal_id">
                       <search-metal-kind
@@ -846,6 +895,7 @@ export default {
             p_good_img,
             p_arrtime,
             specinfo,
+            enclosure_file,
           } = JSON.parse(JSON.stringify(this.sitem));
           this.unit_name = unit_name;
           this.brand_name = brand;
@@ -908,6 +958,7 @@ export default {
             metal_id: metal_id || "",
             gold_price: gold_price || "",
             unit: unit ? [unit] : [],
+            enclosure_file: enclosure_file || "",
           };
           if (this.ruleForm.projectNo && this.ruleForm.projectNo.length === 1) {
             await this.selectChange(this.ruleForm.projectNo);
@@ -1228,6 +1279,50 @@ export default {
         this.$refs.ruleForm.validateField("good_img");
       }
     },
+    //其他文件上传失败
+    UploadErrorOtherenclosure_file(res) {
+      if (res !== "break") {
+        this.$refs.ruleForm.validateField("enclosure_file");
+      }
+    },
+
+    //判断其他文件规格
+    beforeOtherUpload(file) {
+      let isJPG = false;
+      if (file.type === "application/x-zip-compressed") {
+        isJPG = true;
+      }
+      let name = file.name;
+      let list = name.split(".");
+      if (list[list.length - 1] === "rar" || list[list.length - 1] === "7z") {
+        isJPG = true;
+      }
+
+      const isLt2M = file.size / 1024 / 1024 < 5;
+      if (!isJPG) {
+        this.$message.error("文件格式不正确!");
+      }
+      if (!isLt2M) {
+        this.$message.error("文件大小不能超过 5MB!");
+      }
+      return isJPG && isLt2M;
+    },
+
+    deleteUrl() {
+      this.ruleForm.enclosure_file = "";
+      this.$refs.ruleForm.validateField("enclosure_file");
+    },
+    // 其他文件上传成功
+    async UploadSuccessOtherenclosure_file(data) {
+      const { url } = data;
+      console.log(url);
+      if (url === "noToken") {
+        await this.logout();
+      } else {
+        this.ruleForm.enclosure_file = url;
+        this.$message.success("附件上传成功!");
+      }
+    },
   },
 };
 </script>

+ 75 - 2
src/views/sellOut/zixunOrder/components/feedbackList.vue

@@ -1,6 +1,7 @@
 <template>
   <div class="zixunOrder pagePadding">
     <!-- <div>{{ powers }}---{{ is_project }}</div> -->
+
     <ex-table
       v-loading="loading"
       :table="table"
@@ -66,6 +67,25 @@
         >
           <i class="el-icon-view tb-icon" @click="show_view(scope.row)"></i>
         </el-tooltip>
+        <el-tooltip
+          v-if="
+            powers &&
+            powers.length > 0 &&
+            powers.some((item) => item == '068') &&
+            is_project === '0' &&
+            scope.row.reject &&
+            scope.row.reject.id
+          "
+          effect="dark"
+          content="上次议价驳回原因"
+          placement="top"
+        >
+          <i
+            class="el-icon-warning tb-icon"
+            @click="show_reject(scope.row)"
+          ></i>
+        </el-tooltip>
+
         <!-- {{ status }}-- {{ scope.row.status }} -->
         <el-tooltip
           v-if="
@@ -139,6 +159,33 @@
       @cancel="bayGoodShowModel = false"
       @refresh="(bayGoodShowModel = false), $emit('resGoodOk')"
     />
+
+    <show-goods-data-table-modal
+      :showModel="visible"
+      :type="'3'"
+      :title="'采返商品详情'"
+      :skuCode="row.skuCode"
+      :spuCode="row.spuCode"
+      :iscgd="true"
+      @cancel="visible = false"
+    />
+
+    <el-dialog
+      title="上次议价驳回原因"
+      :visible.sync="show_reject_model"
+      width="30%"
+      @close="show_reject_model = false"
+      append-to-body
+    >
+      <ul v-for="(item, index) in show_reject_item" :key="item.id + index" style="margin:-20px 0 0 0">
+        <li style="line-height: 20px; padding:  0 0 16px 0 ">
+          驳回节点:{{
+            (baoptions.find((it) => it.id == item.status) || {}).label || "--"
+          }}
+        </li>
+        <li>驳回理由:{{ item.remark }}</li>
+      </ul>
+    </el-dialog>
   </div>
 </template>
    <script>
@@ -149,7 +196,7 @@ import { feedbackListCol } from "../columns";
 import { mapGetters } from "vuex";
 import addEditBargain from "./addEditBargain";
 import buyGoodModal from "./buyGoodModal";
-
+import showGoodsDataTableModal from "@/components/show-goods-data-table-modal";
 export default {
   name: "zixunOrder",
   mixins: [mixinPage, resToken],
@@ -157,6 +204,7 @@ export default {
   components: {
     addEditBargain,
     buyGoodModal,
+    showGoodsDataTableModal,
   },
   computed: {
     ...mapGetters(["tablebtnSize", "searchSize", "size"]),
@@ -184,6 +232,8 @@ export default {
   },
   data() {
     return {
+      row: {},
+      visible: false,
       view_spuCode: "",
       view_show: false,
       wantBmodel: false,
@@ -195,6 +245,15 @@ export default {
       bayGoodItem: {},
       is_project: false,
       customerCode: [], //客户公司code
+      baoptions: [
+        { id: "1", label: "待业务主管审批" },
+        { id: "2", label: "待财务专员审批" },
+        { id: "3", label: "待财务主管审批" },
+        { id: "4", label: "审批通过" },
+        { id: "5", label: "业务主管驳回" },
+        { id: "6", label: "财务主管驳回" },
+        { id: "7", label: "已取消议价" },
+      ],
       options: [
         { id: "0", label: "待发布竞标" },
         { id: "1", label: "招标进行中" },
@@ -220,6 +279,8 @@ export default {
       loading: true,
       showModel: false,
       isDetail: false,
+      show_reject_item: null,
+      show_reject_model: false,
       modelId: 0,
       parmValue: {
         zxNo: "",
@@ -256,6 +317,10 @@ export default {
   },
 
   methods: {
+    show_view(row) {
+      this.row = row;
+      this.visible = true;
+    },
     restSearch() {
       this.parmValue = {
         zxNo: "",
@@ -273,7 +338,11 @@ export default {
       };
       this.searchList();
     },
-
+    show_reject(row) {
+      this.show_reject_item = [];
+      this.show_reject_item.push(row.reject);
+      this.show_reject_model = true;
+    },
     wantBargaining(row) {
       this.wantBsitem = row;
       this.wantBmodel = true;
@@ -411,5 +480,9 @@ export default {
    <style lang="scss" scoped>
 .zixunOrder {
 }
+
+/deep/ .el-dialog {
+  width: 1024px;
+}
 </style>
    

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio