增加报表管理模块

Tento commit je obsažen v:
朱菊兰 2023-05-30 09:00:50 +08:00
rodič 2ae3d3f3e7
revize de0a6c45e0
93 změnil soubory, kde provedl 950 přidání a 1070 odebrání

1
dist/css/1909.65f8bc12.css vendorováno Normální soubor
Zobrazit soubor

@ -0,0 +1 @@
.reportView[data-v-6dc52bd4]{margin:0 16px 0 16px;width:98.5%;height:calc(100vh - 205px)}.reportView .mainIframe[data-v-6dc52bd4]{width:100%;height:100%}

Zobrazit soubor

Zobrazit soubor

@ -1 +0,0 @@
.substrate-glass-quality-box[data-v-42531d47]{height:calc(100vh - 203px);padding:12px 16px;margin:0 16px;border-radius:8px;background-color:#fff}

Zobrazit soubor

@ -1 +0,0 @@
.reportView[data-v-710dfb7b]{margin:0 16px 0 16px;width:98.5%;height:calc(100vh - 205px)}.reportView .mainIframe[data-v-710dfb7b]{width:100%;height:100%}

Zobrazit soubor

@ -1 +1 @@
.production-report-box[data-v-b4666666]{height:calc(100vh - 203px);padding:12px 16px;margin:0 16px;border-radius:8px;background-color:#fff}
.production-report-box[data-v-7865de37]{height:calc(100vh - 203px);padding:12px 16px;margin:0 16px;border-radius:8px;background-color:#fff}

Zobrazit soubor

@ -1 +0,0 @@
.thickness-detection-box[data-v-b5a752ea]{margin:0 16px}.thickness-detection-box .search-box[data-v-b5a752ea]{height:62px;padding:8px 16px;margin-bottom:8px;border-radius:8px;background-color:#fff}.thickness-detection-box .table-box[data-v-b5a752ea]{width:100%}.thickness-detection-box .table-box .boxL[data-v-b5a752ea],.thickness-detection-box .table-box .boxR[data-v-b5a752ea]{padding:16px;border-radius:8px;height:calc(100vh - 272px);background-color:#fff}.thickness-detection-box .table-box .boxL .table-button[data-v-b5a752ea]{display:inline-block;height:30px;width:100%;text-align:center;padding-top:4px;margin-bottom:16px;font-size:14px;color:#0b58ff;border-radius:4px;border:1px dotted #0b58ff;cursor:pointer}.thickness-detection-box .table-box .boxR .tip[data-v-b5a752ea]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}.thickness-detection-box .table-box .boxR .tip[data-v-b5a752ea]{display:inline-block;font-size:14px;margin-bottom:12px}

Zobrazit soubor

@ -1 +0,0 @@
.reportDesign[data-v-1c79afe0]{margin:0 16px 0 16px;width:98.5%;height:calc(100vh - 205px)}.reportDesign .mainIframe[data-v-1c79afe0]{width:100%;height:100%}

Zobrazit soubor

Zobrazit soubor

@ -1 +1 @@
.plan-maintenance[data-v-d565ab3a]{height:calc(100vh - 203px);padding:12px 16px;margin:0 16px;border-radius:8px;background-color:#fff}
.plan-maintenance[data-v-2348839c]{height:calc(100vh - 203px);padding:12px 16px;margin:0 16px;border-radius:8px;background-color:#fff}

1
dist/css/5271.3daf5a00.css vendorováno Normální soubor
Zobrazit soubor

@ -0,0 +1 @@
.finalInspectionData[data-v-6bd3173e]{width:100%}.finalInspectionData .box-top[data-v-6bd3173e]{width:100%;padding:8px 16px 0}.finalInspectionData .box-top .search-box[data-v-6bd3173e]{height:62px;padding:10px 16px;box-sizing:border-box;border-radius:8px;background-color:#fff}.finalInspectionData .box[data-v-6bd3173e]{width:100%;padding:8px 8px 0 16px}.finalInspectionData .box .left-box[data-v-6bd3173e],.finalInspectionData .box .right-box[data-v-6bd3173e]{height:calc(100vh - 220px);padding:16px;border-radius:8px;background-color:#fff}.finalInspectionData .box .left-box .table-box[data-v-6bd3173e],.finalInspectionData .box .right-box .table-box[data-v-6bd3173e]{margin-top:16px;height:calc(100vh - 290px);overflow:auto}.finalInspectionData .box .left-box .table-button[data-v-6bd3173e]{display:inline-block;height:30px;width:100%;text-align:center;padding-top:4px;margin-bottom:16px;font-size:14px;color:#0b58ff;border-radius:4px;border:1px dotted #0b58ff;cursor:pointer}.finalInspectionData .box .right-box .title[data-v-6bd3173e]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}

Zobrazit soubor

1
dist/css/5797.81598d88.css vendorováno Normální soubor
Zobrazit soubor

@ -0,0 +1 @@
.reportDesign[data-v-436e48a9]{margin:0 16px 0 16px;width:98.5%;height:calc(100vh - 205px)}.reportDesign .mainIframe[data-v-436e48a9]{width:100%;height:100%}

Zobrazit soubor

@ -1 +0,0 @@
.finalInspectionData[data-v-6863655e]{width:100%}.finalInspectionData .box-top[data-v-6863655e]{width:100%;padding:8px 16px 0}.finalInspectionData .box-top .search-box[data-v-6863655e]{height:62px;padding:10px 16px;box-sizing:border-box;border-radius:8px;background-color:#fff}.finalInspectionData .box[data-v-6863655e]{width:100%;padding:8px 8px 0 16px}.finalInspectionData .box .left-box[data-v-6863655e],.finalInspectionData .box .right-box[data-v-6863655e]{height:calc(100vh - 220px);padding:16px;border-radius:8px;background-color:#fff}.finalInspectionData .box .left-box .table-box[data-v-6863655e],.finalInspectionData .box .right-box .table-box[data-v-6863655e]{margin-top:16px;height:calc(100vh - 290px);overflow:auto}.finalInspectionData .box .left-box .table-button[data-v-6863655e]{display:inline-block;height:30px;width:100%;text-align:center;padding-top:4px;margin-bottom:16px;font-size:14px;color:#0b58ff;border-radius:4px;border:1px dotted #0b58ff;cursor:pointer}.finalInspectionData .box .right-box .title[data-v-6863655e]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}

1
dist/css/868.775f6802.css vendorováno
Zobrazit soubor

@ -1 +0,0 @@
.generate-reports-box .el-menu{background-color:#f2f4f9}.generate-reports-box .el-menu.el-menu--horizontal{border-bottom:none;width:100%;display:flex;justify-content:space-between;padding:8px 8px}.generate-reports-box .el-menu.el-menu--horizontal .el-menu-item{height:48px;line-height:48px;width:32.5%;border-radius:8px;background-color:#fff;font-size:16px;color:hsla(0,0%,9%,.65);text-align:center}.generate-reports-box .el-tabs__active-bar{display:none}

Zobrazit soubor

2
dist/index.html vendorováno
Zobrazit soubor

@ -1 +1 @@
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>tft-mes</title><script defer="defer" src="/js/chunk-vendors.a42f8636.js"></script><script defer="defer" src="/js/app.e2f493b2.js"></script><link href="/css/app.68cbc19b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but tft-mes doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>tft-mes</title><script defer="defer" src="/js/chunk-vendors.a42f8636.js"></script><script defer="defer" src="/js/app.8a6daf4f.js"></script><link href="/css/app.68cbc19b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but tft-mes doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Zobrazit soubor

@ -1 +1 @@
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[3366],{3366:function(t,e,r){r.r(e),r.d(e,{default:function(){return l}});var n=function(){var t=this,e=t._self._c;return e("div",{staticClass:"reportView",attrs:{id:"reportView"}},[e("iframe",{attrs:{src:t.url,width:"100%",height:"100%"}})])},s=[],i={name:"ReportView",data(){return{url:"http://tft.mes.picaiba.com/ureport/preview"}},mounted(){const t=this,{name:e}=this.$route.params;this.url+=e?"?_u=db:"+this.$route.params.name:"";const r=document.getElementById("reportView");r.onload=function(){console.log("加载完成"),t.loading=!1}}},a=i,o=r(1001),u=(0,o.Z)(a,n,s,!1,null,"710dfb7b",null),l=u.exports}}]);
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[1909],{1909:function(t,e,r){r.r(e),r.d(e,{default:function(){return c}});var n=function(){var t=this,e=t._self._c;return e("div",{staticClass:"reportView",attrs:{id:"reportView"}},[e("iframe",{attrs:{src:t.url,width:"100%",height:"100%"}})])},s=[],i={name:"ReportView",data(){return{url:"http://tft.mes.picaiba.com/ureport/preview"}},mounted(){const t=this,{name:e}=this.$route.params;this.url+=e?"?_u=db:"+this.$route.params.name:"";const r=document.getElementById("reportView");r.onload=function(){console.log("加载完成"),t.loading=!1}}},a=i,o=r(1001),u=(0,o.Z)(a,n,s,!1,null,"6dc52bd4",null),c=u.exports}}]);

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/2413.b0006aaf.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/2413.e3256bbf.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/2740.0ffcbd63.js vendorováno Normální soubor
Zobrazit soubor

@ -0,0 +1 @@
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[2740],{2740:function(t,r,e){e.r(r),e.d(r,{default:function(){return l}});var o=function(){var t=this,r=t._self._c;return r("div",{staticClass:"reoprtManager"},[r("div",{staticClass:"report"},[t._m(0),r("div",{staticClass:"numBox"},[r("div",[r("div",{staticClass:"reportNum"},[r("div",{staticClass:"num"},[t._v(t._s(t.totalReports))]),t._m(1)]),r("div",{staticClass:"detail",on:{click:function(r){return t.toDetail()}}},[t._v("了解详情")])])])]),t._l(t.reportList,(function(e,o){return r("div",{key:o,staticClass:"reportDesc"},[r("div",[r("div",{staticClass:"reportNum"},[r("div",{staticClass:"num"},[t._v(t._s(e.quantity))]),r("div",{staticClass:"text"},[r("p",{staticClass:"font"},[t._v(t._s(e.name))]),r("p",{staticClass:"letter"},[t._v("Reports")])])]),r("div",{staticClass:"detail",on:{click:function(r){return t.toDetail(e.id)}}},[t._v("了解详情")])])])}))],2)},n=[function(){var t=this,r=t._self._c;return r("div",{staticClass:"imgBox"},[r("img",{attrs:{src:e(5002),alt:"",width:"355px",height:"314px"}})])},function(){var t=this,r=t._self._c;return r("div",{staticClass:"text"},[r("p",{staticClass:"font"},[t._v("全部报表")]),r("p",{staticClass:"letter"},[t._v("Reports")])])}],s=e(6527),a={name:"ReportList",data(){return{totalReports:0,reportList:[]}},mounted(){this.getList()},methods:{getList(){(0,s.J_)({}).then((t=>{if(0===t.code&&t.data.length>0){this.totalReports=0;for(let r=0;r<t.data.length;r++)this.totalReports+=t.data[r].quantity;this.reportList=t.data}else this.totalReports=0,this.reportList=[]}))},toDetail(t){this.$router.push({name:"reportListDetail",params:{categoryId:t||""}})}}},u=a,i=e(1001),p=(0,i.Z)(u,o,n,!1,null,null,null),l=p.exports},6527:function(t,r,e){e.d(r,{AT:function(){return y},Hg:function(){return d},J_:function(){return n},QL:function(){return i},W0:function(){return f},a:function(){return c},an:function(){return _},bu:function(){return g},fL:function(){return C},kB:function(){return s},m3:function(){return l},oR:function(){return v},sy:function(){return a},uW:function(){return h},uj:function(){return m},wy:function(){return u},yk:function(){return p}});var o=e(8859);function n(t){return(0,o.Z)({url:"/report/report-sheet-category/list",method:"post",data:t})}function s(t){return(0,o.Z)({url:"/report/report-sheet/page",method:"post",data:t})}function a(t){return(0,o.Z)({url:"/report/report-sheet/update",method:"post",data:t})}function u(t){return(0,o.Z)({url:"/report/report-sheet/delete",method:"post",data:t})}function i(t){return(0,o.Z)({url:"/report/report-sheet/get",method:"post",data:t})}function p(t){return(0,o.Z)({url:"/report/report-sheet-category/page",method:"post",data:t})}function l(t){return(0,o.Z)({url:"/report/report-sheet-category/add",method:"post",data:t})}function c(t){return(0,o.Z)({url:"/report/report-sheet-category/update",method:"post",data:t})}function d(t){return(0,o.Z)({url:"/report/report-sheet-category/get",method:"post",data:t})}function f(t){return(0,o.Z)({url:"/report/report-sheet-category/delete",method:"post",data:t})}function h(t){return(0,o.Z)({url:"/report/GlassReport/listGlass",method:"post",data:t})}function m(t){return(0,o.Z)({url:"/report/GlassReport/qualityReport",method:"post",data:t})}function v(t){return(0,o.Z)({url:"/report/GlassReport/qualityReportexport",method:"post",responseType:"blob",data:t})}function g(t){return(0,o.Z)({url:"/report/GlassReport/thickReport",method:"post",data:t})}function _(t){return(0,o.Z)({url:"/report/GlassReport/thickReportexport",method:"post",responseType:"blob",data:t})}function y(t){return(0,o.Z)({url:"/quality/finalpackaging/queryGlassData",method:"post",data:t})}function C(t){return(0,o.Z)({url:"/quality/finalpackaging/claGlassData",method:"post",data:t})}},5002:function(t,r,e){t.exports=e.p+"img/report.b2b3c253.png"}}]);

1
dist/js/2801.7cc1950e.js vendorováno
Zobrazit soubor

@ -1 +0,0 @@
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[2801],{2801:function(e,a,t){t.r(a),t.d(a,{default:function(){return d}});var l=function(){var e=this,a=e._self._c;return a("div",{staticClass:"substrate-glass-quality-box"},[a("search-bar",{ref:"searchBarForm",attrs:{formConfigs:e.formConfig},on:{headBtnClick:e.buttonClick}}),a("base-table",{attrs:{page:e.listQuery.current,limit:e.listQuery.size,"table-props":e.tableProps,"table-data":e.tableData,"max-height":e.tableH}})],1)},i=[],r=t(475);const o=[{prop:"time",label:"检测时间",minWidth:100},{prop:"glassID",label:"玻璃ID",minWidth:100},{prop:"lineA",label:"加工条件",align:"center",children:[{prop:"workTime",label:"托盘ID"},{prop:"workTimeRate",label:"研磨类型"}]},{prop:"lineB",label:"检测数据",align:"center",children:[{prop:"downTime",label:"灵敏度"},{prop:"downTimeRate",label:"颗粒总数"},{prop:"downTime1",label:"锡点"},{prop:"downTimeRate2",label:"变形"},{prop:"downTime3",label:"拖尾"},{prop:"downTimeRate4",label:"气泡"},{prop:"downTime5",label:"锡尺寸"},{prop:"downTimeRate6",label:"结石"},{prop:"downTime7",label:"划伤"},{prop:"downTimeRate8",label:"面检总数"}]},{prop:"lineC",label:"研磨电流A",align:"center",children:[{prop:"faultTime",label:"A机台"},{prop:"faultTimeRate",label:"B机台"},{prop:"faultTime1",label:"C机台"},{prop:"faultTimeRate1",label:"总电流"}]},{prop:"lineD",label:"研磨时间S",align:"center",children:[{prop:"faultTime",label:"A机台"},{prop:"faultTimeRate",label:"B机台"},{prop:"faultTime1",label:"C机台"},{prop:"faultTimeRate1",label:"总研磨时间",minWidth:100}]},{prop:"lineE",label:"工艺符合性",minWidth:100}];var p={name:"substrateGlassQuality",data(){return{formConfig:[{type:"select",label:"产线",selectOptions:JSON.parse(localStorage.getItem("publicList")).proLineVoList,param:"proLineId",defaultSelect:"",width:120},{type:"select",label:"白班",selectOptions:JSON.parse(localStorage.getItem("publicList")).proLineVoList,labelField:"dataName",valueField:"dataCode",param:"type",defaultSelect:"",width:100},{type:"datePicker",label:"上架时间",dateType:"datetimerange",format:"yyyy-MM-dd HH:mm:ss",valueFormat:"yyyy-MM-ddTHH:mm:ss",rangeSeparator:"-",startPlaceholder:"开始时间",endPlaceholder:"结束时间",param:"timeVal",width:350},{type:"button",btnName:"查询",name:"search",color:"primary"},{type:"separate"},{type:"button",btnName:"导出",name:"export",color:"primary",plain:!0}],listQuery:{current:1,size:20},tableProps:o,tableData:[],tableH:(0,r.NC)(329)}},mounted(){window.addEventListener("resize",(()=>{this.tableH=(0,r.NC)(329)})),this.tableData=[{equipmentName:"设备1",workTime:100,workTimeRate:.5,downTime:5,downTimeRate:.02,faultTime:0,faultTimeRate:0,actualProcessingSpeed:10,theoreticalProcessingSpeed:10,speedActuationRate:.3},{equipmentName:"设备2",workTime:100,workTimeRate:.5,downTime:5,downTimeRate:.02,faultTime:0,faultTimeRate:0,actualProcessingSpeed:10,theoreticalProcessingSpeed:10,speedActuationRate:.3},{equipmentName:"设备3",workTime:100,workTimeRate:.5,downTime:5,downTimeRate:.02,faultTime:0,faultTimeRate:0,actualProcessingSpeed:10,theoreticalProcessingSpeed:10,speedActuationRate:.3}]},methods:{buttonClick(e){console.log(e)}}},n=p,m=t(1001),s=(0,m.Z)(n,l,i,!1,null,"42531d47",null),d=s.exports}}]);

1
dist/js/2949.d1630ea2.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/2990.145272cf.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/2990.9f7bfdd4.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/3813.435d2e60.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/3813.dc300e60.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/3899.4bd3c5c8.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/3899.8d6b4056.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/4048.0faf667a.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/4048.f4813ceb.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/4093.94763922.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Zobrazit soubor

@ -1 +1 @@
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[7552],{7552:function(e,t,n){n.r(t),n.d(t,{default:function(){return m}});var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"report-management"},[t("el-menu",{attrs:{"default-active":e.activeName,mode:"horizontal"},on:{select:e.handleSelect}},[t("el-menu-item",{attrs:{index:"reportList"}},[e._v("报表列表")]),t("el-menu-item",{attrs:{index:"reportDesign"}},[e._v("报表设计")]),t("el-menu-item",{attrs:{index:"reportClassification"}},[e._v("报表分类")])],1),t("section",[t("router-view")],1)],1)},r=[],i={name:"ReportManagement",data(){return{activeName:""}},mounted(){this.activeName=this.$route.name},methods:{handleSelect(e){this.$router.push({name:e})}},watch:{$route:{handler:function(e){this.activeName=e.name}}}},s=i,u=n(1001),l=(0,u.Z)(s,a,r,!1,null,null,null),m=l.exports}}]);
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[4350],{4350:function(e,t,n){n.r(t),n.d(t,{default:function(){return m}});var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"report-management"},[t("el-menu",{attrs:{"default-active":e.activeName,mode:"horizontal"},on:{select:e.handleSelect}},[t("el-menu-item",{attrs:{index:"reportList"}},[e._v("报表列表")]),t("el-menu-item",{attrs:{index:"reportDesign"}},[e._v("报表设计")]),t("el-menu-item",{attrs:{index:"reportClassification"}},[e._v("报表分类")])],1),t("section",[t("router-view")],1)],1)},r=[],i={name:"ReportManagement",data(){return{activeName:""}},mounted(){this.activeName=this.$route.name},methods:{handleSelect(e){this.$router.push({name:e})}},watch:{$route:{handler:function(e){this.activeName=e.name}}}},s=i,u=n(1001),l=(0,u.Z)(s,a,r,!1,null,null,null),m=l.exports}}]);

1
dist/js/4922.6d343695.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/5096.4cb05e81.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/5096.efa7f846.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/5271.8199e756.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/5286.4812cac9.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/5748.94b73395.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Zobrazit soubor

@ -1 +1 @@
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[4238],{4238:function(t,e,r){r.r(e),r.d(e,{default:function(){return c}});var n=function(){var t=this,e=t._self._c;return e("div",{staticClass:"reportDesign",attrs:{id:"reportDesign"}},[e("iframe",{attrs:{src:t.url,width:"100%",height:"100%"}})])},s=[],a={name:"ReportDesign",data(){return{url:"http://tft.mes.picaiba.com/ureport/designer"}},mounted(){const t=this,{name:e}=this.$route.params;this.url+=e?"?_u=db:"+this.$route.params.name:"";const r=document.getElementById("reportDesign");r.onload=function(){console.log("加载完成"),t.loading=!1}}},i=a,o=r(1001),u=(0,o.Z)(i,n,s,!1,null,"1c79afe0",null),c=u.exports}}]);
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[5797],{5797:function(t,e,r){r.r(e),r.d(e,{default:function(){return l}});var n=function(){var t=this,e=t._self._c;return e("div",{staticClass:"reportDesign",attrs:{id:"reportDesign"}},[e("iframe",{attrs:{src:t.url,width:"100%",height:"100%"}})])},s=[],a={name:"ReportDesign",data(){return{url:"http://tft.mes.picaiba.com/ureport/designer"}},mounted(){const t=this,{name:e}=this.$route.params;this.url+=e?"?_u=db:"+this.$route.params.name:"";const r=document.getElementById("reportDesign");r.onload=function(){console.log("加载完成"),t.loading=!1}}},i=a,o=r(1001),u=(0,o.Z)(i,n,s,!1,null,"436e48a9",null),l=u.exports}}]);

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/6234.864ef5ee.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/8311.74c6e8f9.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/868.2820c60e.js vendorováno
Zobrazit soubor

@ -1 +0,0 @@
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[868],{868:function(e,t,n){n.r(t),n.d(t,{default:function(){return o}});var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"generate-reports-box"},[t("el-menu",{attrs:{"default-active":e.activeName,mode:"horizontal"},on:{select:e.handleSelect}},[t("el-menu-item",{attrs:{index:"productionReport"}},[e._v("生产报表")]),t("el-menu-item",{attrs:{index:"substrateGlassQuality"}},[e._v("基板玻璃品质")]),t("el-menu-item",{attrs:{index:"thicknessDetection"}},[e._v("厚度检测")])],1),t("section",[t("router-view")],1)],1)},s=[],r={name:"GenerateReports",data(){return{activeName:""}},mounted(){this.activeName=this.$route.name},methods:{handleSelect(e){this.$router.push({name:e})}},watch:{$route:{handler:function(e){this.activeName=e.name}}}},i=r,u=n(1001),l=(0,u.Z)(i,a,s,!1,null,null,null),o=l.exports}}]);

1
dist/js/889.5b9672f6.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/889.fda67dfe.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/897.6b02e069.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/9707.b2783b7b.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/app.8a6daf4f.js vendorováno Normální soubor

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

1
dist/js/app.e2f493b2.js vendorováno

Rozdílový obsah nebyl zobrazen, protože některé řádky jsou příliš dlouhá

Zobrazit soubor

@ -221,84 +221,3 @@ export function getEqCode(data) {
data
})
}
// 报表管理
export function getReportCategorylist(data) {
return request({
url: '/report/report-sheet-category/list',
method: 'post',
data
})
}
export function getReportlist(data) {
return request({
url: '/report/report-sheet/page',
method: 'post',
data
})
}
export function updateReportlist(data) {
return request({
url: '/report/report-sheet/update',
method: 'post',
data
})
}
export function delReportlist(data) {
return request({
url: '/report/report-sheet/delete',
method: 'post',
data
})
}
// by id
export function getReport(data) {
return request({
url: '/report/report-sheet/get',
method: 'post',
data
})
}
// 报表管理--报表分类
export function getReportCategory(data) {
return request({
url: '/report/report-sheet-category/page',
method: 'post',
data
})
}
export function reportCategoryAdd(data) {
return request({
url: '/report/report-sheet-category/add',
method: 'post',
data
})
}
export function reportCategoryUpdate(data) {
return request({
url: '/report/report-sheet-category/update',
method: 'post',
data
})
}
export function getReportCategoryById(data) {
return request({
url: '/report/report-sheet-category/get',
method: 'post',
data
})
}
export function reportCategoryDelete(data) {
return request({
url: '/report/report-sheet-category/delete',
method: 'post',
data
})
}

Zobrazit soubor

@ -99,24 +99,6 @@ export function workOrderImportTemplate(data) {
export const uploadPath = '/api/order/workOrder/import'
// 生产报表
export function pageThickness(data) {
return request({
url: '/order/proReport/pageThickness',
method: 'post',
data
})
}
export function proReport(data) {
return request({
url: '/order/proReport/genTable',
method: 'post',
formState: true,
data
})
}
// 下架包装
export function unloadPalletPage(data) {
return request({

Zobrazit soubor

@ -164,65 +164,6 @@ export function drawThickness(val) {
})
}
// 终检数据-获取玻璃列表数据
export function listGlass(data) {
return request({
url: '/report/GlassReport/listGlass',
method: 'post',
data
})
}
// 终检数据-基板品质报表查询
export function qualityReport(data) {
return request({
url: '/report/GlassReport/qualityReport',
method: 'post',
data
})
}
// 终检数据-基板品质报表导出
export function qualityReportexport(data) {
return request({
url: '/report/GlassReport/qualityReportexport',
method: 'post',
responseType: 'blob',
data
})
}
// 终检数据-厚度汇总报表查询
export function thickReport(data) {
return request({
url: '/report/GlassReport/thickReport',
method: 'post',
data
})
}
// 终检数据-厚度汇总报表导出
export function thickReportexport(data) {
return request({
url: '/report/GlassReport/thickReportexport',
method: 'post',
responseType: 'blob',
data
})
}
// 终检数据-终检下片包装报表查询
export function queryGlassData(data) {
return request({
url: '/quality/finalpackaging/queryGlassData',
method: 'post',
data
})
}
// 终检数据-终检下片包装报表计算
export function claGlassData(data) {
return request({
url: '/quality/finalpackaging/claGlassData',
method: 'post',
data
})
}
// 产品追溯-获取分页产品追溯
export function productTrace(data) {
return request({

140
src/api/reportManagement.js Normální soubor
Zobrazit soubor

@ -0,0 +1,140 @@
import request from './request'
// 报表工具
export function getReportCategorylist(data) {
return request({
url: '/report/report-sheet-category/list',
method: 'post',
data
})
}
export function getReportlist(data) {
return request({
url: '/report/report-sheet/page',
method: 'post',
data
})
}
export function updateReportlist(data) {
return request({
url: '/report/report-sheet/update',
method: 'post',
data
})
}
export function delReportlist(data) {
return request({
url: '/report/report-sheet/delete',
method: 'post',
data
})
}
// by id
export function getReport(data) {
return request({
url: '/report/report-sheet/get',
method: 'post',
data
})
}
// 报表管理--报表分类
export function getReportCategory(data) {
return request({
url: '/report/report-sheet-category/page',
method: 'post',
data
})
}
export function reportCategoryAdd(data) {
return request({
url: '/report/report-sheet-category/add',
method: 'post',
data
})
}
export function reportCategoryUpdate(data) {
return request({
url: '/report/report-sheet-category/update',
method: 'post',
data
})
}
export function getReportCategoryById(data) {
return request({
url: '/report/report-sheet-category/get',
method: 'post',
data
})
}
export function reportCategoryDelete(data) {
return request({
url: '/report/report-sheet-category/delete',
method: 'post',
data
})
}
// 终检数据-获取玻璃列表数据
export function listGlass(data) {
return request({
url: '/report/GlassReport/listGlass',
method: 'post',
data
})
}
// 终检数据-基板品质报表查询
export function qualityReport(data) {
return request({
url: '/report/GlassReport/qualityReport',
method: 'post',
data
})
}
// 终检数据-基板品质报表导出
export function qualityReportexport(data) {
return request({
url: '/report/GlassReport/qualityReportexport',
method: 'post',
responseType: 'blob',
data
})
}
// 终检数据-厚度汇总报表查询
export function thickReport(data) {
return request({
url: '/report/GlassReport/thickReport',
method: 'post',
data
})
}
// 终检数据-厚度汇总报表导出
export function thickReportexport(data) {
return request({
url: '/report/GlassReport/thickReportexport',
method: 'post',
responseType: 'blob',
data
})
}
// 终检数据-终检下片包装报表查询
export function queryGlassData(data) {
return request({
url: '/quality/finalpackaging/queryGlassData',
method: 'post',
data
})
}
// 终检数据-终检下片包装报表计算
export function claGlassData(data) {
return request({
url: '/quality/finalpackaging/claGlassData',
method: 'post',
data
})
}

binární
src/assets/home/reportManagement.png Normální soubor

Binární soubor nebyl zobrazen.

Za

Šířka:  |  Výška:  |  Velikost: 3.5 KiB

Zobrazit soubor

Před

Šířka:  |  Výška:  |  Velikost: 59 KiB

Za

Šířka:  |  Výška:  |  Velikost: 59 KiB

Zobrazit soubor

@ -112,45 +112,6 @@ export const routes = [
// },
// component: () => import('../views/productionScheduling/taskDcheduling')
// },
{
path: 'generateReports',
name: 'generateReports',
meta: {
title: '生产报表'
},
component: () =>
import('../views/productionScheduling/generateReports'),
redirect: '/productionScheduling/generateReports/productionReport',
children: [
{
path: 'productionReport',
name: 'productionReport',
meta: {
title: '生产报表'
},
component: () =>
import('../views/productionScheduling/productionReport')
},
{
path: 'substrateGlassQuality',
name: 'substrateGlassQuality',
meta: {
title: '基板玻璃品质'
},
component: () =>
import('../views/productionScheduling/substrateGlassQuality')
},
{
path: 'thicknessDetection',
name: 'thicknessDetection',
meta: {
title: '厚度检测'
},
component: () =>
import('../views/productionScheduling/thicknessDetection')
}
]
},
{
path: 'productionData',
name: 'productionData',
@ -521,15 +482,6 @@ export const routes = [
component: () =>
import('../views/qualityManagement/productTraceability')
},
{
path: 'finalInspectionData',
name: 'finalInspectionData',
meta: {
title: '终检数据'
},
component: () =>
import('../views/qualityManagement/finalInspectionData')
},
{
path: 'finalInspectionDailyReport',
name: 'finalInspectionDailyReport',
@ -541,6 +493,91 @@ export const routes = [
}
]
},
{
path: '/reportManagement',
component: Layout,
name: 'reportManagement',
meta: {
title: '报表管理'
},
children: [
{
path: 'productionReport',
name: 'productionReport',
meta: {
title: '后工程日报表'
},
component: () => import('../views/reportManagement/productionReport')
},
{
path: 'finalInspectionData',
name: 'finalInspectionData',
meta: {
title: '终检数据'
},
component: () => import('../views/reportManagement/finalInspectionData')
},
{
path: 'reportTools',
name: 'reportTools',
meta: {
title: '报表工具'
},
component: () => import('../views/reportManagement/reportTools'),
redirect: '/reportManagement/reportTools/reportList',
children: [
{
path: 'reportList',
name: 'reportList',
meta: {
title: '报表列表'
},
component: () =>
import('../views/reportManagement/reportTools/reportList')
},
{
path: 'reportListDetail',
name: 'reportListDetail',
hidden: true,
meta: {
title: '报表列表明细'
},
component: () =>
import('../views/reportManagement/reportTools/reportListDetail')
},
{
path: 'reportView',
name: 'reportView',
meta: {
title: '报表预览'
},
component: () =>
import('../views/reportManagement/reportTools/reportView')
},
{
path: 'reportDesign',
name: 'reportDesign',
meta: {
title: '报表设计'
},
component: () =>
import('../views/reportManagement/reportTools/reportDesign')
},
{
path: 'reportClassification',
name: 'reportClassification',
meta: {
title: '报表分类'
},
component: () =>
import(
'../views/reportManagement/reportTools/reportClassification'
)
}
]
}
]
},
{
path: '/basicConfig',
component: Layout,
@ -588,65 +625,6 @@ export const routes = [
title: '设备配置'
},
component: () => import('../views/basicConfig/deviceConfig')
},
{
path: 'reportManagement',
name: 'reportManagement',
meta: {
title: '报表管理'
},
component: () => import('../views/basicConfig/reportManagement'),
redirect: '/basicConfig/reportManagement/reportList',
children: [
{
path: 'reportList',
name: 'reportList',
meta: {
title: '报表列表'
},
component: () =>
import('../views/basicConfig/reportManagement/reportList')
},
{
path: 'reportListDetail',
name: 'reportListDetail',
hidden: true,
meta: {
title: '报表列表明细'
},
component: () =>
import('../views/basicConfig/reportManagement/reportListDetail')
},
{
path: 'reportView',
name: 'reportView',
meta: {
title: '报表预览'
},
component: () =>
import('../views/basicConfig/reportManagement/reportView')
},
{
path: 'reportDesign',
name: 'reportDesign',
meta: {
title: '报表设计'
},
component: () =>
import('../views/basicConfig/reportManagement/reportDesign')
},
{
path: 'reportClassification',
name: 'reportClassification',
meta: {
title: '报表分类'
},
component: () =>
import(
'../views/basicConfig/reportManagement/reportClassification'
)
}
]
}
]
},

Zobrazit soubor

@ -172,17 +172,12 @@ const tableBtn = [
type: 'edit',
btnName: '编辑',
showParam: {
type: '|',
type: '&',
data: [
{
type: 'unequal',
name: 'status',
value: '未完成'
},
{
type: 'unequal',
name: 'status',
value: '已超时'
}
]
}
@ -332,7 +327,7 @@ export default {
console.log(val)
switch (val.type) {
case 'edit':
if (val.data.status === '未派工') {
if (val.data.status === '未派工' || val.data.status === '已超时') {
this.addAndEdit = '编辑'
this.centervisibleAdd = true
this.$nextTick(() => {

Zobrazit soubor

@ -1,266 +0,0 @@
<template>
<div class="substrate-glass-quality-box">
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick"
/>
<base-table
:page="listQuery.current"
:limit="listQuery.size"
:table-props="tableProps"
:table-data="tableData"
:max-height="tableH"
/>
</div>
</template>
<script>
import { tableHeight } from '@/utils/index'
const tableProps = [
{
prop: 'time',
label: '检测时间',
minWidth: 100
},
{
prop: 'glassID',
label: '玻璃ID',
minWidth: 100
},
{
prop: 'lineA',
label: '加工条件',
align: 'center',
children: [
{
prop: 'workTime',
label: '托盘ID'
},
{
prop: 'workTimeRate',
label: '研磨类型'
}
]
},
{
prop: 'lineB',
label: '检测数据',
align: 'center',
children: [
{
prop: 'downTime',
label: '灵敏度'
},
{
prop: 'downTimeRate',
label: '颗粒总数'
},
{
prop: 'downTime1',
label: '锡点'
},
{
prop: 'downTimeRate2',
label: '变形'
},
{
prop: 'downTime3',
label: '拖尾'
},
{
prop: 'downTimeRate4',
label: '气泡'
},
{
prop: 'downTime5',
label: '锡尺寸'
},
{
prop: 'downTimeRate6',
label: '结石'
},
{
prop: 'downTime7',
label: '划伤'
},
{
prop: 'downTimeRate8',
label: '面检总数'
}
]
},
{
prop: 'lineC',
label: '研磨电流A',
align: 'center',
children: [
{
prop: 'faultTime',
label: 'A机台'
},
{
prop: 'faultTimeRate',
label: 'B机台'
},
{
prop: 'faultTime1',
label: 'C机台'
},
{
prop: 'faultTimeRate1',
label: '总电流'
}
]
},
{
prop: 'lineD',
label: '研磨时间S',
align: 'center',
children: [
{
prop: 'faultTime',
label: 'A机台'
},
{
prop: 'faultTimeRate',
label: 'B机台'
},
{
prop: 'faultTime1',
label: 'C机台'
},
{
prop: 'faultTimeRate1',
label: '总研磨时间',
minWidth: 100
}
]
},
{
prop: 'lineE',
label: '工艺符合性',
minWidth: 100
}
]
export default {
name: 'substrateGlassQuality',
data() {
return {
formConfig: [
{
type: 'select',
label: '产线',
selectOptions: JSON.parse(localStorage.getItem('publicList'))
.proLineVoList,
param: 'proLineId',
defaultSelect: '',
width: 120
},
{
type: 'select',
label: '白班',
selectOptions: JSON.parse(localStorage.getItem('publicList'))
.proLineVoList,
labelField: 'dataName',
valueField: 'dataCode',
param: 'type',
defaultSelect: '',
width: 100
},
{
type: 'datePicker',
label: '上架时间',
dateType: 'datetimerange',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-ddTHH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
param: 'timeVal',
width: 350
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary'
},
{
type: 'separate'
},
{
type: 'button',
btnName: '导出',
name: 'export',
color: 'primary',
plain: true
}
],
listQuery: {
current: 1,
size: 20
},
tableProps,
tableData: [],
tableH: tableHeight(329)
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(329)
})
this.tableData = [
{
equipmentName: '设备1',
workTime: 100,
workTimeRate: 0.5,
downTime: 5,
downTimeRate: 0.02,
faultTime: 0,
faultTimeRate: 0,
actualProcessingSpeed: 10,
theoreticalProcessingSpeed: 10,
speedActuationRate: 0.3
},
{
equipmentName: '设备2',
workTime: 100,
workTimeRate: 0.5,
downTime: 5,
downTimeRate: 0.02,
faultTime: 0,
faultTimeRate: 0,
actualProcessingSpeed: 10,
theoreticalProcessingSpeed: 10,
speedActuationRate: 0.3
},
{
equipmentName: '设备3',
workTime: 100,
workTimeRate: 0.5,
downTime: 5,
downTimeRate: 0.02,
faultTime: 0,
faultTimeRate: 0,
actualProcessingSpeed: 10,
theoreticalProcessingSpeed: 10,
speedActuationRate: 0.3
}
]
},
methods: {
buttonClick(val) {
console.log(val)
}
}
}
</script>
<style lang="scss" scoped>
.substrate-glass-quality-box {
height: calc(100vh - 203px);
padding: 12px 16px;
margin: 0px 16px;
border-radius: 8px;
background-color: #fff;
}
</style>

Zobrazit soubor

@ -1,254 +0,0 @@
<template>
<div class="thickness-detection-box">
<div class="search-box">
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick"
/>
</div>
<div class="table-box">
<el-row :gutter="8">
<el-col :span="8">
<div class="boxL">
<span class="table-button" @click="createReport">生成表格</span>
<base-table
:selectWidth="40"
:table-props="tablePropsL"
:table-data="tableDataL"
:max-height="tableHL"
@selection-change="selectChange"
/>
</div>
</el-col>
<el-col :span="16">
<div class="boxR">
<span class="tip">在线厚度检查机厚度汇总报表</span>
<base-table
:page="listQuery.current"
:limit="listQuery.size"
:table-props="tablePropsR"
:table-data="tableDataR"
:max-height="tableHR"
/>
</div>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import { tableHeight, timeFormatter } from '@/utils/index'
import moment from 'moment'
import { pageThickness, proReport } from '@/api/productionScheduling'
const tablePropsL = [
{
prop: 'glassId',
label: 'ID',
minWidth: 100
},
{
prop: 'testTime',
label: '检测时间',
filter: timeFormatter,
minWidth: 150
}
]
const tablePropsR = [
{
prop: 'glassId',
label: '玻璃ID',
minWidth: 120
},
{
prop: 'testTime',
label: '检测时间',
filter: timeFormatter,
minWidth: 150
},
{
prop: 'palletId',
label: '托盘ID',
minWidth: 100
},
{
prop: 'grindType',
label: '研磨类型',
minWidth: 100
},
{
prop: 'minValue',
label: '最小值',
minWidth: 100
},
{
prop: 'avgValue',
label: '平均值',
minWidth: 100
},
{
prop: 'ttvValue',
label: '厚薄差',
minWidth: 100
}
]
export default {
name: 'thicknessDetection',
data() {
return {
formConfig: [
{
type: 'datePicker',
label: '时间范围',
dateType: 'datetimerange',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-ddTHH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始时间',
endPlaceholder: '结束时间',
placeholder: '时间范围',
param: 'timeStr',
defaultSelect: [],
width: 350
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary'
},
{
type: 'separate'
},
{
type: 'button',
btnName: '导出',
name: 'export',
color: 'primary',
plain: true
}
],
listQuery: {
current: 1,
size: 1000,
startTime: '',
endTime: ''
},
tablePropsL,
tableDataL: [],
tablePropsR,
tableDataR: [],
tableHL: tableHeight(350),
tableHR: tableHeight(335),
selectId: []
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableHL = tableHeight(350)
this.tableHR = tableHeight(335)
})
this.formConfig[0].defaultSelect = [
moment().format('yyyy-MM-DD') + 'T00:00:00',
moment().format('yyyy-MM-DD') + 'T23:59:59'
]
this.listQuery.startTime = moment().format('yyyy-MM-DD') + 'T00:00:00'
this.listQuery.endTime = moment().format('yyyy-MM-DD') + 'T23:59:59'
this.getList()
},
methods: {
getList() {
pageThickness({ ...this.listQuery }).then((res) => {
this.tableDataL = res.data
})
},
getReport() {
proReport(this.selectId).then((res) => {
console.log(res)
this.tableDataR = res.data
})
},
selectChange(val) {
console.log(val)
this.selectId = []
if (val.length > 0) {
for (let i = 0; i < val.length; i++) {
this.selectId.push(val[i].glassId)
}
}
},
createReport() {
if (this.selectId.length === 0) {
this.$message({
message: '请先勾选左侧表格的数据',
type: 'warning'
})
return false
}
this.getReport()
},
buttonClick(val) {
console.log(val)
if (val.btnName === 'search') {
this.listQuery.startTime = val.timeStr ? val.timeStr[0] : ''
this.listQuery.endTime = val.timeStr ? val.timeStr[1] : ''
this.getList()
}
}
}
}
</script>
<style lang="scss" scoped>
.thickness-detection-box {
margin: 0 16px;
.search-box {
height: 62px;
padding: 8px 16px;
margin-bottom: 8px;
border-radius: 8px;
background-color: #fff;
}
.table-box {
width: 100%;
.boxL,
.boxR {
padding: 16px;
border-radius: 8px;
height: calc(100vh - 272px);
background-color: #fff;
}
.boxL {
.table-button {
display: inline-block;
height: 30px;
width: 100%;
text-align: center;
padding-top: 4px;
margin-bottom: 16px;
font-size: 14px;
color: #0b58ff;
border-radius: 4px;
border: 1px dotted #0b58ff;
cursor: pointer;
}
}
.boxR {
.tip::before {
content: '';
display: inline-block;
width: 4px;
height: 16px;
background: #0b58ff;
border-radius: 1px;
margin-right: 8px;
vertical-align: middle;
}
.tip {
display: inline-block;
font-size: 14px;
margin-bottom: 12px;
}
}
}
}
</style>

Zobrazit soubor

@ -1,229 +0,0 @@
<template>
<div class="finalInspectionData">
<el-row class="box-top">
<el-col>
<div class="search-box">
<search-bar :formConfigs="formConfig" @headBtnClick="buttonClick" />
</div>
</el-col>
</el-row>
<el-row :gutter="8" class="box">
<el-col :span="9">
<div class="left-box">
<span class="table-button">生成表格</span>
<base-table
:selectWidth="40"
:table-props="tablePropsL"
:table-data="tableDataL"
:max-height="tableHL"
/>
</div>
</el-col>
<el-col :span="15">
<div class="right-box">
<div>
<span class="title">成品玻璃基本缺陷统计</span>
</div>
<ul class="tip">
<li>单位um</li>
<li>玻璃ID26522322323</li>
<li>生产日期2022.12.24 15:56:24</li>
<li>等级G1</li>
</ul>
<div class="table-box">
<final-data-table />
</div>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import { tableHeight } from '@/utils/index'
import finalDataTable from './components/finalDataTable'
const tablePropsL = [
{
prop: 'id',
label: 'ID',
minWidth: 100
},
{
prop: 'time',
label: '检测时间',
minWidth: 100
},
{
prop: 'type',
label: '研磨类型',
minWidth: 100
}
]
export default {
name: 'FinalInspectionData',
components: { finalDataTable },
data() {
return {
formConfig: [
{
type: 'datePicker',
label: '检验时间',
dateType: 'datetime',
format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
placeholder: '检验时间',
param: 'testTime',
width: 200
},
{
type: 'select',
label: '玻璃架',
selectOptions: [
{ id: '1', name: '521321545' },
{ id: '2', name: '932234561' },
{ id: '3', name: '542121212' },
{ id: '4', name: '354855321' }
],
param: 'fullInspectionType',
defaultSelect: '',
width: 150
},
{
type: 'select',
label: '报表类型',
selectOptions: [
{ id: '1', name: '单片玻璃基板缺陷统计' },
{ id: '2', name: '终检下片包装' },
{ id: '3', name: '厚度检查机报表' },
{ id: '4', name: '厚度汇总报表' }
],
param: 'fullInspectionType1',
defaultSelect: '',
width: 150
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary'
},
{
type: 'separate'
},
{
type: 'button',
btnName: '导出',
name: 'export',
color: 'primary',
plain: true
}
],
tablePropsL,
tableDataL: [],
tableHL: tableHeight(300)
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableHL = tableHeight(300)
})
this.getList()
},
methods: {
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.getList()
break
default:
alert('导出')
}
},
getList() {
let arr = []
for (let i = 0; i < 30; i++) {
let obj = {}
obj.type = i
arr.push(obj)
}
this.tableDataL = arr
}
}
}
</script>
<style lang="scss" scoped>
.finalInspectionData {
width: 100%;
.box-top {
width: 100%;
padding: 8px 16px 0;
.search-box {
height: 62px;
padding: 10px 16px;
box-sizing: border-box;
border-radius: 8px;
background-color: #fff;
}
}
.box {
width: 100%;
padding: 8px 8px 0 16px;
.left-box,
.right-box {
height: calc(100vh - 220px);
padding: 16px;
border-radius: 8px;
background-color: #fff;
.table-box {
height: calc(100vh - 352px);
overflow: auto;
}
}
.left-box {
.table-button {
display: inline-block;
height: 30px;
width: 100%;
text-align: center;
padding-top: 4px;
margin-bottom: 16px;
font-size: 14px;
color: #0b58ff;
border-radius: 4px;
border: 1px dotted #0b58ff;
cursor: pointer;
}
}
.right-box {
.title::before {
content: '';
display: inline-block;
width: 4px;
height: 16px;
background: #0b58ff;
border-radius: 1px;
margin-right: 8px;
vertical-align: middle;
}
.tip {
display: flex;
flex-flow: row wrap;
height: 40px;
margin: 16px 0 20px;
li {
width: 25%;
font-size: 14px;
font-weight: 500;
text-align: center;
padding-top: 10px;
border-top: 1px solid #e8e8e8;
border-bottom: 1px solid #e8e8e8;
border-left: 1px solid #e8e8e8;
}
:last-child {
border-right: 1px solid #e8e8e8;
}
}
}
}
}
</style>

Zobrazit soubor

@ -10,7 +10,7 @@ import {
reportCategoryAdd,
reportCategoryUpdate,
getReportCategoryById
} from '@/api/basicConfig'
} from '@/api/reportManagement'
export default {
name: 'ReportClassAdd',
data() {

Zobrazit soubor

@ -6,7 +6,7 @@
</el-form>
</template>
<script>
import { getReport, updateReportlist } from '@/api/basicConfig'
import { getReport, updateReportlist } from '@/api/reportManagement'
export default {
name: 'ReportNameEdit',
data() {

Zobrazit soubor

@ -29,7 +29,7 @@
<div v-if="reportTitle">
<span class="title">{{ reportTitle }}</span>
</div>
<div class="table-box" v-if="reportTitle === '单片玻璃基板缺陷统计'">
<div class="table-box" v-if="reportTitle === '玻璃基板缺陷统计'">
<glass-quality-report :tableData="glassQualityArr" />
</div>
<div class="table-box" v-if="reportTitle === '厚度汇总报表'">
@ -56,7 +56,7 @@ import {
thickReportexport,
queryGlassData,
claGlassData
} from '@/api/qualityManagement'
} from '@/api/reportManagement'
import glassQualityReport from './finalInspectionDataReport/glassQualityReport.vue'
import glassThickReport from './finalInspectionDataReport/glassThickReport.vue'
import glassPackReport from './finalInspectionDataReport/glassPackReport.vue'
@ -112,7 +112,7 @@ export default {
type: 'select',
label: '报表类型',
selectOptions: [
{ id: '单片玻璃基板缺陷统计', name: '单片玻璃基板缺陷统计' },
{ id: '玻璃基板缺陷统计', name: '玻璃基板缺陷统计' },
{ id: '终检下片包装', name: '终检下片包装' },
{ id: '厚度汇总报表', name: '厚度汇总报表' }
],
@ -220,7 +220,7 @@ export default {
for (let i of this.selectArr) {
arr.push(i.glassId)
}
if (this.reportTitle === '单片玻璃基板缺陷统计') {
if (this.reportTitle === '玻璃基板缺陷统计') {
this.exportGlassReport(arr)
} else if (this.reportTitle === '厚度汇总报表') {
this.exportThickReport(arr)
@ -258,7 +258,7 @@ export default {
arr.push(i.glassId)
}
switch (this.reportTitle) {
case '单片玻璃基板缺陷统计':
case '玻璃基板缺陷统计':
this.getGlassReport(arr)
break
case '厚度汇总报表':

Zobrazit soubor

@ -0,0 +1,188 @@
<template>
<div class="report-classification">
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick"
/>
<base-table
:page="listQuery.current"
:limit="listQuery.size"
:table-props="tableProps"
:table-data="tableData"
:max-height="tableH"
>
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="80"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
/>
</base-table>
<pagination
:page.sync="listQuery.current"
:limit.sync="listQuery.size"
:total="total"
@pagination="getList()"
/>
<!-- 新增 -->
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="centervisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<report-class-add ref="reportClass" @successSubmit="successSubmit" />
</base-dialog>
</div>
</template>
<script>
import { tableHeight } from '@/utils/index'
import ReportClassAdd from './../components/reportClassAdd.vue'
import { getReportCategory, reportCategoryDelete } from '@/api/reportManagement'
const tableProps = [
{
prop: 'name',
label: '报表分类名'
}
]
const tableBtn = [
{
type: 'edit',
btnName: '编辑'
},
{
type: 'delete',
btnName: '删除'
}
]
export default {
name: 'ReportClassification',
components: { ReportClassAdd },
data() {
return {
formConfig: [
{
type: 'input',
label: '关键字',
placeholder: '报表分类名',
param: 'name',
width: 300
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary'
},
{
type: 'separate'
},
{
type: 'button',
btnName: '新增',
name: 'add',
color: 'success',
plain: true
}
],
tableProps,
tableData: [],
tableBtn,
tableH: tableHeight(330),
total: 0,
listQuery: {
current: 1,
size: 20,
name: ''
},
centervisible: false,
addOrEditTitle: '' //title
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(265)
})
this.getList()
},
methods: {
getList() {
getReportCategory({ ...this.listQuery }).then((res) => {
if (res.code === 0 && res.data) {
this.tableData = res.data.records
this.total = res.data.total
} else {
this.tableData = []
this.total = 0
}
})
},
handleClick(val) {
if (val.type === 'edit') {
this.addOrEditTitle = '编辑'
this.$nextTick(() => {
this.$refs.reportClass.init(val.data.id)
})
this.centervisible = true
} else {
this.$confirm('确认删除报表分类名"' + val.data.name + '"吗?', {
type: 'warning'
})
.then(() => {
reportCategoryDelete({ id: val.data.id }).then(() => {
this.$message({
message: '工单删除成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
this.listQuery.current = 1
this.getList()
})
})
.catch(() => {})
}
},
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.name = val.name
this.listQuery.current = 1
this.getList()
break
default:
this.addOrEditTitle = '新增'
this.centervisible = true
this.$nextTick(() => {
this.$refs.reportClass.init()
})
}
},
handleCancel() {
this.$refs.reportClass.formClear()
this.centervisible = false
this.addOrEditTitle = ''
},
handleConfirm() {
this.$refs.reportClass.submitForm()
},
successSubmit() {
this.handleCancel()
this.getList()
}
}
}
</script>
<style lang="scss">
.report-classification {
height: calc(100vh - 203px);
padding: 12px 16px;
margin: 0px 16px;
border-radius: 8px;
background-color: #fff;
}
</style>

Zobrazit soubor

@ -0,0 +1,36 @@
<template>
<div id="reportDesign" class="reportDesign">
<iframe :src="url" width="100%" height="100%"></iframe>
</div>
</template>
<script>
export default {
name: 'ReportDesign',
data() {
return {
url: process.env.VUE_APP_REPORT_DESIGN_URL
}
},
mounted() {
const vm = this
const { name } = this.$route.params
this.url += name ? '?_u=db:' + this.$route.params.name : ''
const ifream = document.getElementById('reportDesign')
ifream.onload = function () {
console.log('加载完成')
vm.loading = false
}
}
}
</script>
<style lang="scss" scoped>
.reportDesign {
margin: 0px 16px 0 16px;
width: 98.5%;
height: calc(100vh - 205px);
.mainIframe {
width: 100%;
height: 100%;
}
}
</style>

Zobrazit soubor

@ -0,0 +1,149 @@
<template>
<div class="reoprtManager">
<div class="report">
<div class="imgBox">
<img
src="./../../../assets/reportManagement/report.png"
alt=""
width="355px"
height="314px"
/>
</div>
<div class="numBox">
<div>
<div class="reportNum">
<div class="num">{{ totalReports }}</div>
<div class="text">
<p class="font">全部报表</p>
<p class="letter">Reports</p>
</div>
</div>
<div class="detail" @click="toDetail()">了解详情</div>
</div>
</div>
</div>
<div class="reportDesc" v-for="(item, i) in reportList" :key="i">
<div>
<div class="reportNum">
<div class="num">{{ item.quantity }}</div>
<div class="text">
<p class="font">{{ item.name }}</p>
<p class="letter">Reports</p>
</div>
</div>
<div class="detail" @click="toDetail(item.id)">了解详情</div>
</div>
</div>
</div>
</template>
<script>
import { getReportCategorylist } from '@/api/reportManagement'
export default {
name: 'ReportList',
data() {
return {
totalReports: 0,
reportList: []
}
},
mounted() {
this.getList()
},
methods: {
getList() {
getReportCategorylist({}).then((res) => {
if (res.code === 0 && res.data.length > 0) {
this.totalReports = 0
for (let i = 0; i < res.data.length; i++) {
this.totalReports += res.data[i].quantity
}
this.reportList = res.data
} else {
this.totalReports = 0
this.reportList = []
}
})
},
toDetail(id) {
this.$router.push({
// path: '/basicConfig/reportManagement/reportListDetail',
name: 'reportListDetail',
params: { categoryId: id ? id : '' }
})
}
}
}
</script>
<style lang="scss">
.reoprtManager {
padding-left: 16px;
padding-top: 8px;
display: flex;
flex-flow: row wrap;
height: calc(100vh - 210px);
align-content: flex-start;
overflow: auto;
.report {
width: 768px;
height: 456px;
background: #fff;
border-radius: 4px;
margin: 0 16px 16px 0;
position: relative;
.imgBox {
display: inline-block;
width: 480px;
height: 100%;
padding: 80px 0 0 80px;
}
.numBox {
position: absolute;
display: inline-block;
height: 100%;
top: 120px;
}
}
.reportDesc {
width: 376px;
height: 456px;
background: #fff;
border-radius: 4px;
text-align: center;
padding-top: 120px;
margin: 0 16px 16px 0;
}
.reportNum {
.num {
display: inline-block;
font-size: 80px;
font-weight: 600;
color: #161616;
margin-right: 36px;
}
.text {
display: inline-block;
.font {
font-size: 18px;
letter-spacing: 2px;
margin-bottom: 5px;
}
.letter {
font-size: 32px;
font-weight: 300;
}
}
}
.detail {
width: 200px;
height: 30px;
font-size: 14px;
line-height: 30px;
text-align: center;
color: #fff;
background: #0b58ff;
border-radius: 4px;
margin: 139px auto 0;
cursor: pointer;
}
}
</style>

Zobrazit soubor

@ -0,0 +1,271 @@
<template>
<div class="report-classification">
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick"
/>
<base-table
:page="listQuery.current"
:limit="listQuery.size"
:table-props="tableProps"
:table-data="tableData"
:max-height="tableH"
@emitFun="categoryChange"
>
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="180"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
/>
</base-table>
<pagination
:page.sync="listQuery.current"
:limit.sync="listQuery.size"
:total="total"
@pagination="getList()"
/>
<!-- 编辑 -->
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="centervisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<report-name-edit ref="reportNameEdit" @successSubmit="successSubmit" />
</base-dialog>
</div>
</template>
<script>
import ReportNameEdit from './../components/reportNameEdit.vue'
import {
getReportlist,
delReportlist,
getReportCategorylist,
updateReportlist
} from '@/api/reportManagement'
import { tableHeight, timeFormatter } from '@/utils'
import categorySelect from './../components/categorySelect.vue'
const tableProps = [
{
prop: 'fileName',
label: '报表名称'
},
{
prop: 'category',
label: '报表分类',
subcomponent: categorySelect
},
{
prop: 'createTime',
label: '添加时间',
filter: timeFormatter
}
]
const tableBtn = [
{
type: 'view',
btnName: '预览'
},
{
type: 'design',
btnName: '设计'
},
{
type: 'edit',
btnName: '编辑'
},
{
type: 'delete',
btnName: '删除'
}
]
export default {
name: 'ReportListDetail',
components: { ReportNameEdit },
data() {
return {
formConfig: [
{
type: 'input',
label: '关键字',
placeholder: '报表名称',
param: 'name',
width: 200
},
{
type: 'select',
label: '报表分类',
selectOptions: [],
param: 'category',
labelField: 'name',
valueField: 'id',
defaultSelect: '',
width: 200
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary'
},
{
type: 'separate'
},
{
type: 'button',
btnName: '新增',
name: 'add',
color: 'success',
plain: true
}
],
tableProps,
tableData: [],
tableBtn,
tableH: tableHeight(330),
total: 0,
listQuery: {
current: 1,
size: 20,
name: '',
category: ''
},
typeList: [],
centervisible: false,
addOrEditTitle: '' //title
}
},
created() {
this.getCategorylist()
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(265)
})
this.formConfig[1].defaultSelect = this.$route.params.categoryId || ''
this.listQuery.category = this.$route.params.categoryId || ''
},
methods: {
getList() {
getReportlist({ ...this.listQuery }).then((res) => {
if (res.code === 0 && res.data) {
this.tableData = res.data.records
this.total = res.data.total
} else {
this.tableData = []
this.total = 0
}
})
},
getCategorylist() {
getReportCategorylist({}).then((res) => {
if (res.code === 0 && res.data.length > 0) {
localStorage.setItem('reportCategory', JSON.stringify(res.data))
this.formConfig[1].selectOptions = res.data
} else {
localStorage.setItem('reportCategory', '')
}
this.getList()
})
},
handleClick(val) {
switch (val.type) {
case 'view':
this.$router.push({
// path: '/basicConfig/reportManagement/reportView',
name: 'reportView',
params: { name: val.data.name }
})
break
case 'design':
this.$router.push({
// path: '/basicConfig/reportManagement/reportDesign',
name: 'reportDesign',
params: { name: val.data.name }
})
break
case 'edit':
this.addOrEditTitle = '编辑'
this.centervisible = true
this.$nextTick(() => {
this.$refs.reportNameEdit.init(val.data.id)
})
break
default:
this.$confirm('确认删除报表"' + val.data.name + '"吗?', {
type: 'warning'
})
.then(() => {
delReportlist({ id: val.data.id }).then(() => {
this.$message({
message: '报表删除成功',
type: 'success',
duration: 1500,
onClose: () => {}
})
this.listQuery.current = 1
this.getList()
})
})
.catch(() => {})
}
},
buttonClick(val) {
switch (val.btnName) {
case 'search':
this.listQuery.name = val.name
this.listQuery.category = val.category
this.listQuery.current = 1
this.getList()
break
default:
this.$router.push({
path: '/basicConfig/reportManagement/reportDesign'
})
}
},
handleCancel() {
this.$refs.reportNameEdit.formClear()
this.centervisible = false
this.addOrEditTitle = ''
},
handleConfirm() {
this.$refs.reportNameEdit.submitForm()
},
successSubmit() {
this.handleCancel()
this.getList()
},
categoryChange(val) {
updateReportlist({
fileName: val.injectData.fileName,
id: val.injectData.id,
category: val.categoryId
}).then((res) => {
if (res.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500
})
this.getList()
}
})
}
}
}
</script>
<style lang="scss">
.report-classification {
height: calc(100vh - 203px);
padding: 12px 16px;
margin: 0px 16px;
border-radius: 8px;
background-color: #fff;
}
</style>

Zobrazit soubor

@ -0,0 +1,36 @@
<template>
<div id="reportView" class="reportView">
<iframe :src="url" width="100%" height="100%"></iframe>
</div>
</template>
<script>
export default {
name: 'ReportView',
data() {
return {
url: process.env.VUE_APP_REPORT_VIEW_URL
}
},
mounted() {
const vm = this
const { name } = this.$route.params
this.url += name ? '?_u=db:' + this.$route.params.name : ''
const ifream = document.getElementById('reportView')
ifream.onload = function () {
console.log('加载完成')
vm.loading = false
}
}
}
</script>
<style lang="scss" scoped>
.reportView {
margin: 0px 16px 0 16px;
width: 98.5%;
height: calc(100vh - 205px);
.mainIframe {
width: 100%;
height: 100%;
}
}
</style>