gongdanziliao.vue 101 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716
  1. <template>
  2. <div>
  3. <layout>
  4. <layout-header>
  5. <div class="">
  6. <!--按钮部分-->
  7. <el-form ref="elSearchFormRef" class="demo-form-inline" >
  8. <el-form-item>
  9. <el-input v-model="searchInfo" placeholder="搜索订单编号" style="width: 180px;" @keyup.enter="onSubmit()"></el-input>
  10. <el-button type="primary" icon="search" @click="onSubmit" title="搜索" ></el-button>
  11. <el-button type="primary" icon="edit" @click="cp_gdprintonClick" class="bt" title="打印生产订单" >订单打印</el-button>
  12. <el-button type="primary" class="bt" icon="edit" @click="jsfjClick">附件上传</el-button>
  13. <el-button type="primary" icon="edit" @click="addgd_onclick" class="bt" title="新增工单资料">新增订单资料</el-button>
  14. <el-button type="primary" icon="edit" @click="addgdyj_onclick" class="bt" title="新增颜色资料">新增颜色资料</el-button>
  15. <el-button type="primary" icon="edit" @click="addgdgy_onclick" class="bt" title="新增工序资料" >新增工序资料</el-button>
  16. <el-button type="primary" icon="edit" @click="del_ddzlClick" v-if="table_del=== true" :disabled="table_Selection === ''" class="bt" title="删除订单资料" >删除订单资料</el-button>
  17. <el-button type="primary" icon="edit" @click="delgd_delclick" v-if="delall=== true" :disabled="ysSelection === '' && gySelection === ''" class="bt" >删除颜色工艺资料</el-button>
  18. </el-form-item>
  19. </el-form>
  20. </div>
  21. </layout-header>
  22. <layout>
  23. <!-- 左侧树形结构 -->
  24. <layout-sider :resize-directions="['right']" :width="190" style="margin: 0px;">
  25. <div class="JKWTree-tree" style="height: 200px">
  26. <h3>客户编号</h3>
  27. <el-tree :data="treeData" class="treecolor" @node-click="handleNodeClick"></el-tree>
  28. </div>
  29. </layout-sider>
  30. <!-- 右侧内容区域 -->
  31. <layout-content >
  32. <el-main>
  33. <!-- 订单表格列表 -->
  34. <div class="gva-table-box">
  35. <el-table ref="multipleTable" style="width: 100%;height: 28vh"
  36. :row-style="{ height: '20px' }" :header-cell-style="{ padding: '0px' }"
  37. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  38. border tooltip-effect="dark" :data="tableData" row-key="ID"
  39. highlight-current-row="true"
  40. :cell-class-name="tableDataCellClass"
  41. @row-click="tableRowClick" @row-dblclick="updateCompanyFunc"
  42. @selection-change="ddzlSelectionChange" :show-overflow-tooltip="true">
  43. <el-table-column align="center" type="selection" width="30"/>
  44. <el-table-column align="center" label="附件状态" prop="status" width="100" />
  45. <el-table-column align="left" sortable label="订单编号" prop="订单编号" width="105" />
  46. <el-table-column align="left" sortable label="客户" prop="客户编号" width="80" />
  47. <el-table-column align="left" sortable label="生产款号" prop="生产款号" width="110" />
  48. <el-table-column align="left" sortable label="款式" prop="款式" width="100"/>
  49. <el-table-column align="left" sortable label="订单数量" prop="订单数量" width="105" />
  50. <el-table-column align="left" sortable label="落货日期" prop="落货日期" width="120" />
  51. <el-table-column align="left" sortable label="船样合计" prop="船样合计" width="105" />
  52. <el-table-column align="left" sortable label="船样描述" prop="船样描述" width="140" />
  53. <el-table-column align="left" sortable label="单位" prop="单位" width="80" />
  54. <el-table-column align="left" sortable label="面料" prop="面料" width="130" />
  55. <el-table-column align="left" sortable label="备注" prop="要求" width="130" />
  56. <el-table-column align="left" sortable label="粘衬" prop="粘衬" width="80" />
  57. <el-table-column align="left" sortable label="箱唛要求" prop="箱唛要求" width="110" />
  58. <el-table-column align="left" sortable label="制单人" prop="Sys_id" width="160" />
  59. <el-table-column align="left" sortable label="制单日期" prop="Sys_rq" width="160" />
  60. </el-table>
  61. <!-- 分页 -->
  62. <div class="gva-pagination" style='height: 30px;margin-right: 10px;'>
  63. <el-pagination
  64. @size-change="handleSizeChange"
  65. @current-change="handleCurrentChange"
  66. :current-page="page"
  67. :page-sizes="[10, 30, 50, 100]"
  68. layout="total"
  69. :total="total">
  70. </el-pagination>
  71. </div>
  72. </div>
  73. <!-- 颜色资料列表、工艺资料列表、BOM资料列表 -->
  74. <el-tabs v-model="activeName" @tab-click="handleClick">
  75. <el-tab-pane label="颜色资料" @click="showTable('颜色资料')" name="first">
  76. <el-table ref="multipleTable"
  77. :row-style="{ height: '20px' }"
  78. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  79. :header-cell-style="{ padding: '0px' }"
  80. :show-overflow-tooltip="true"
  81. highlight-current-row="true"
  82. @row-click="ystableclick"
  83. @row-dblclick="ysupdateCompanyFunc"
  84. @selection-change="selectionChange($event, '颜色资料')"
  85. style="width: 100%;height: 36vh" border show-summary
  86. :summary-method="getSummaries" tooltip-effect="dark" :data="ystableData" row-key="ID" >
  87. <el-table-column type="selection" width="30" />
  88. <el-table-column align="left" sortable label="子订单编号" prop="子订单编号" width="140"/>
  89. <el-table-column align="left" sortable label="PO号 " prop="款号" width="180"/>
  90. <el-table-column align="left" sortable label="颜色备注" prop="颜色备注" width="105"/>
  91. <el-table-column align="left" sortable label="色系名称" prop="颜色" width="105"/>
  92. <el-table-column align="left" sortable label="船样" prop="船样" width="80"/>
  93. <!-- 尺码列表 -->
  94. <template v-for="item in sizeDatas">
  95. <el-table-column align="left" sortable :label=item :prop=item width="80"/>
  96. </template>
  97. <el-table-column align="left" sortable label="制单总数" prop="zdtotal" width="110"/>
  98. <el-table-column align="left" sortable label="建档用户" prop="Sys_id" width="160"/>
  99. <el-table-column align="left" sortable label="建档时间" prop="Sys_rq" width="160"/>
  100. <el-table-column align="left" sortable label="更新时间" prop="更新时间" width="110"/>
  101. </el-table>
  102. </el-tab-pane>
  103. <el-tab-pane label="工艺资料" @click="showTable('工艺资料')" name="second">
  104. <el-table ref="multipleTable"
  105. :row-style="{ height: '20px' }"
  106. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '20px' }"
  107. :header-cell-style="{ padding: '0px' }"
  108. highlight-current-row="true"
  109. :show-overflow-tooltip="true"
  110. size="small"
  111. :cell-class-name="gysatusCellClass"
  112. @row-dblclick="gdgyupdateCompanyFunc"
  113. @row-click="clickybupdate2"
  114. :row-class-name="rowClassStyle2"
  115. @selection-change="selectionChange($event, '工艺资料')"
  116. style="width: 100%;height: 36vh" border tooltip-effect="dark" :data="gytableData" row-key="ID">
  117. <el-table-column type="selection" width="30" />
  118. <el-table-column align="left" label="完工状态" prop="完工状态" width="75"/>
  119. <el-table-column align="left" label="工序名称" prop="工序名称" width="280"/>
  120. <el-table-column align="left" label="计划产量" prop="计划产量" width="80"/>
  121. <el-table-column align="left" label="建档用户" prop="建档用户" width="90"/>
  122. <el-table-column align="left" label="建档日期" prop="建档日期" width="150"/>
  123. </el-table>
  124. </el-tab-pane>
  125. <el-tab-pane label="订单资料附件" name="third">
  126. <el-table ref="multipleTable"
  127. :row-style="{ height: '30px' }"
  128. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '30px' }"
  129. :header-cell-style="{ padding: '0px' }"
  130. :show-overflow-tooltip="true"
  131. :cell-class-name="planUsageCellClass"
  132. highlight-current-row="true"
  133. @row-dblclick="gdbomupdateCompanyFunc"
  134. style="width: 100%;height: 36vh" border tooltip-effect="dark" :data="ddtableData" row-key="ID"
  135. @selection-change="fjSelectionChange">
  136. <el-table-column align="left" label="关联编号" prop="关联编号" width="115"/>
  137. <el-table-column align="left" label="备注" prop="附件备注" width="110"/>
  138. <el-table-column align="left" label="文件类型" prop="附件类型" width="100"/>
  139. <el-table-column align="left" label="建档时间" prop="sys_rq" width="160"/>
  140. <el-table-column align="left" label="建档用户" prop="sys_id" width="200"/>
  141. </el-table>
  142. </el-tab-pane>
  143. <el-tab-pane label="技术附件" @click="showTable('技术附件')" name="fourth">
  144. <el-table ref="multipleTable"
  145. :row-style="{ height: '30px' }"
  146. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '30px' }"
  147. :header-cell-style="{ padding: '0px' }"
  148. :show-overflow-tooltip="true"
  149. :cell-class-name="planUsageCellClass"
  150. highlight-current-row="true"
  151. @row-dblclick="ExcelShow"
  152. style="width: 100%;height: 36vh" border tooltip-effect="dark" :data="jstableData" row-key="ID" @selection-change="fjSelectionChange">
  153. <el-table-column align="left" label="关联编号" prop="关联编号" width="115"/>
  154. <el-table-column align="left" label="备注" prop="附件备注" width="110"/>
  155. <el-table-column align="left" label="文件类型" prop="附件类型" width="100"/>
  156. <el-table-column align="left" label="建档时间" prop="sys_rq" width="160"/>
  157. <el-table-column align="left" label="建档用户" prop="sys_id" width="200"/>
  158. </el-table>
  159. </el-tab-pane>
  160. </el-tabs>
  161. <!-- 修改颜色资料弹窗 -->
  162. <el-dialog v-model="dialogFormVisible" :before-close="edit_closeDialog"
  163. style="width: 80%; max-height: 80%; overflow-y: auto; margin-top: 4%;"
  164. title="颜色资料修改" destroy-on-close >
  165. <el-row :gutter="20" class="form-row">
  166. <el-col :span="10">
  167. <div style="display: flex; gap: 0px;">
  168. <h3 style="color:red;font-size: 24px;margin:-5px 0px 8px 12px;">订单编号&nbsp;&nbsp;&nbsp;{{_ddhval}}</h3>
  169. </div>
  170. </el-col>
  171. <el-col :span="10">
  172. <div style="display: flex; gap: 0px;">
  173. <el-form-item label="订单子编号:" class="mab" prop="keyOrder" label-width='110'>
  174. <el-input v-model="edit_formData['子订单编号']" disabled style="width: 250px;" id="订单子编号" />
  175. </el-form-item>
  176. </div>
  177. </el-col>
  178. </el-row>
  179. <el-row :gutter="20">
  180. <el-col :span="10">
  181. <div style="display: flex; gap: 0px;">
  182. <el-form-item label="色系名称:" class="mab" prop="keyOrder" label-width='110'>
  183. <el-select
  184. v-model=" edit_formData['颜色']" style="width: 150px;" id="色系名称"
  185. @keydown="add_gdzlent($event, '', '色系名称', '款号:')">
  186. <el-option
  187. v-for="color in getSuborderscolor.colorlist"
  188. :key="color.id"
  189. :label="color.colorname"
  190. :value="color.colorname"
  191. @click="xg_sxhandleSizeChange(color.colorname,color.colorcode)">
  192. </el-option>
  193. </el-select>
  194. </el-form-item>
  195. </div>
  196. </el-col>
  197. <el-col :span="10">
  198. <el-form-item label="PO号:" prop="deliveryDate" class="mab" label-width="110px" style="">
  199. <el-input v-model="edit_formData['款号']" style="width: 250px;" id="生产款号" />
  200. </el-form-item>
  201. </el-col>
  202. </el-row>
  203. <el-row :gutter="20">
  204. <el-col :span="8">
  205. <el-form-item label="颜色备注:" prop="joinDate" label-width='110'>
  206. <el-input v-model="edit_formData['颜色备注']" style="width: 250px;" id ='颜色备注' @keydown="add_gdzlent($event, '款号:', '颜色备注', '是否船样')"/>
  207. </el-form-item>
  208. </el-col>
  209. <el-col :span="10">
  210. <div style="display: flex; gap: 0px;">
  211. <el-form-item label="是否船样:" prop="joinDate" label-width='200'>
  212. <el-select v-model="edit_formData['船样']" style="width: 150px;" id="是否船样" @keydown="add_gdzlent($event, '尺码规格', '是否船样', 'zds1')">
  213. <el-option label="是" value="是" @click="edit_cyChange('是')"></el-option>
  214. <el-option label="否" value="否" @click="edit_cyChange('否')"></el-option>
  215. </el-select>
  216. </el-form-item>
  217. </div>
  218. </el-col>
  219. </el-row>
  220. <el-row class="form-row">
  221. <el-col :span="20">
  222. <div style="display: flex; gap: 0px;">
  223. <el-form-item label="尺码:" class="mab" prop="keyOrder" label-width='110'>
  224. <el-input v-model="edit_cmformdata.cm1" readonly style="width: 80px;" />
  225. <el-input v-model="edit_cmformdata.cm2" readonly style="width: 80px;" />
  226. <el-input v-model="edit_cmformdata.cm3" readonly style="width: 80px;" />
  227. <el-input v-model="edit_cmformdata.cm4" readonly style="width: 80px;" />
  228. <el-input v-model="edit_cmformdata.cm5" readonly style="width: 80px;" />
  229. <el-input v-model="edit_cmformdata.cm6" readonly style="width: 80px;" />
  230. <el-input v-model="edit_cmformdata.cm7" readonly style="width: 80px;" />
  231. <el-input v-model="edit_cmformdata.cm8" readonly style="width: 80px;" />
  232. <el-input v-model="edit_cmformdata.cm9" readonly style="width: 80px;" />
  233. <el-input v-model="edit_cmformdata.cm10" readonly style="width: 80px;" />
  234. </el-form-item>
  235. </div>
  236. </el-col>
  237. </el-row>
  238. <el-row class="form-row">
  239. <el-col :span="20">
  240. <div style="display: flex; gap: 0px;">
  241. <el-form-item label="制单数:" class="mab" prop="keyOrder" label-width='110'>
  242. <el-input v-model="edit_zdsformdata.zds1" @input="updateTotal" style="width: 80px;" id="zds1" @keydown="add_gdzlent($event, '是否船样', 'zds1', 'zds2')" />
  243. <el-input v-model="edit_zdsformdata.zds2" @input="updateTotal" style="width: 80px;" id="zds2" @keydown="add_gdzlent($event, 'zds1', 'zds2', 'zds3')" />
  244. <el-input v-model="edit_zdsformdata.zds3" @input="updateTotal" style="width: 80px;" id="zds3" @keydown="add_gdzlent($event, 'zds2', 'zds3', 'zds4')" />
  245. <el-input v-model="edit_zdsformdata.zds4" @input="updateTotal" style="width: 80px;" id="zds4" @keydown="add_gdzlent($event, 'zds3', 'zds4', 'zds5')" />
  246. <el-input v-model="edit_zdsformdata.zds5" @input="updateTotal" style="width: 80px;" id="zds5" @keydown="add_gdzlent($event, 'zds4', 'zds5', 'zds6')" />
  247. <el-input v-model="edit_zdsformdata.zds6" @input="updateTotal" style="width: 80px;" id="zds6" @keydown="add_gdzlent($event, 'zds5', 'zds6', 'zds7')" />
  248. <el-input v-model="edit_zdsformdata.zds7" @input="updateTotal" style="width: 80px;" id="zds7" @keydown="add_gdzlent($event, 'zds6', 'zds7', 'zds8')" />
  249. <el-input v-model="edit_zdsformdata.zds8" @input="updateTotal" style="width: 80px;" id="zds8" @keydown="add_gdzlent($event, 'zds7', 'zds8', 'zds9')" />
  250. <el-input v-model="edit_zdsformdata.zds9" @input="updateTotal" style="width: 80px;" id="zds9" @keydown="add_gdzlent($event, 'zds8', 'zds9', '色系名称')" />
  251. <el-input v-model="edit_zdsformdata.zds10" readonly style="width: 80px;" />
  252. </el-form-item>
  253. </div>
  254. </el-col>
  255. </el-row>
  256. <template #footer>
  257. <div class="dialog-footer" style="display: flex; justify-content: flex-end; margin-top: 20px;">
  258. <el-button @click="ys_edit_closeDialog" style="margin-left: 10px;">取消</el-button>
  259. <el-button type="primary" @click="ys_edit_Dialog" style="margin-left: 10px;">确认</el-button>
  260. </div>
  261. </template>
  262. </el-dialog>
  263. <!-- 新增订单资料弹窗 -->
  264. <el-dialog v-model="add_gddialogFormVisible" :before-close="add_gdcloseDialog"
  265. title="新增订单资料" width="70%" top="3%" destroy-on-close>
  266. <div style="display: flex; justify-content: space-between;">
  267. <div style="flex: 2;">
  268. <el-form :model="add_gdscgdformData">
  269. <div style="display: flex;">
  270. <div style="flex: 1; margin-right: 20px;">
  271. <el-form-item label="订单编号" label-width="100px">
  272. <el-input v-model="add_gdscgdformData.订单编号" disabled />
  273. </el-form-item>
  274. <el-form-item label="生产款号" label-width="100px">
  275. <el-input
  276. v-model="add_gdscgdformData['生产款号']" id="生产款号"
  277. @keydown="add_gdzlent($event, '粘衬', '生产款号', '订单数量')"
  278. />
  279. </el-form-item>
  280. <el-form-item label="款式" label-width="100px">
  281. <el-input
  282. v-model="add_gdscgdformData['款式']" id="款式"
  283. @keydown="add_gdzlent($event, '订单数量', '款式', '落货日期')"
  284. />
  285. </el-form-item>
  286. </div>
  287. <div style="flex: 1;">
  288. <el-form-item label="客户编号" label-width="100px">
  289. <el-input v-model="add_gdscgdformData.客户编号" disabled />
  290. </el-form-item>
  291. <el-form-item label="订单数量" label-width="100px">
  292. <el-input v-model="add_gdscgdformData.订单数量" id="订单数量"
  293. @keydown="add_gdzlent($event, '生产款号', '订单数量', '款式')"
  294. />
  295. </el-form-item>
  296. <el-form-item label="落货日期" label-width="100px">
  297. <el-date-picker
  298. v-model="add_gdscgdformData['落货日期']" id="落货日期"
  299. type="date"
  300. @keydown="add_gdzlent($event, '款式', '落货日期', '面料')"
  301. />
  302. </el-form-item>
  303. </div>
  304. </div>
  305. <!-- 面料部分 -->
  306. <el-form-item label="面料" label-width="100px">
  307. <el-input
  308. type="textarea"
  309. v-model="add_gdscgdformData['面料']" id="面料"
  310. rows="2"
  311. resize="none"
  312. @keydown="add_gdzlent($event, '落货日期', '面料', '箱唛要求')"
  313. />
  314. </el-form-item>
  315. <!-- 箱唛要求 -->
  316. <el-form-item label="箱唛要求" label-width="100px">
  317. <el-input
  318. type="textarea"
  319. v-model="add_gdscgdformData['箱唛要求']" id="箱唛要求"
  320. @keydown="add_gdzlent($event, '面料', '箱唛要求', '备注')"
  321. rows="2"
  322. resize="none"
  323. />
  324. </el-form-item>
  325. <!-- 备注 -->
  326. <el-form-item label="备注" label-width="100px">
  327. <el-input
  328. type="textarea"
  329. v-model="add_gdscgdformData['备注']" id="备注"
  330. @keydown="add_gdzlent($event, '箱唛要求', '备注', '船样描述')"
  331. rows="2"
  332. resize="none"
  333. />
  334. </el-form-item>
  335. <!-- 船样描述 -->
  336. <el-form-item label="船样描述" label-width="100px">
  337. <el-input
  338. type="textarea"
  339. v-model="add_gdscgdformData['船样描述']" id="船样描述"
  340. rows="2"
  341. resize="none"
  342. @keydown="add_gdzlent($event, '备注', '船样描述', '船样合计')"
  343. />
  344. </el-form-item>
  345. </el-form>
  346. </div>
  347. <!-- 右侧部分 -->
  348. <div style="flex: 1; margin-left: 20px;">
  349. <div style="display: flex; align-items: center;">
  350. <el-upload
  351. ref="uploadRef"
  352. class="upload-demo"
  353. :action="uploadUrl"
  354. :http-request="customUpload"
  355. :headers="uploadHeaders"
  356. list-type="picture-card"
  357. :on-preview="handlePreview"
  358. :on-remove="handleRemove"
  359. :before-upload="beforeUpload"
  360. :on-success="handleSuccess"
  361. :on-error="handleError"
  362. :file-list="fileList"
  363. :limit="1"
  364. accept="image/jpeg,image/png"
  365. style="margin-left: 20px;"
  366. >
  367. <i class="el-icon-plus"></i>
  368. </el-upload>
  369. </div>
  370. <h4 style="font-size: 18px; margin-left: 150px;">上传图片</h4>
  371. <el-form>
  372. <el-form-item label="制单人" label-width="120px">
  373. <el-input v-model="add_gdscgdformData['Sys_id']" disabled />
  374. </el-form-item>
  375. <el-form-item label="制单日期" label-width="120px">
  376. <el-date-picker
  377. v-model="add_gdscgdformData['制单日期']"
  378. disabled
  379. type="date"
  380. />
  381. </el-form-item>
  382. </el-form>
  383. </div>
  384. </div>
  385. <!-- 底部部分 -->
  386. <div style="display: flex; justify-content: space-between; margin-top: 10px;">
  387. <el-form :model="add_gdscgdformData" style="flex: 1;">
  388. <div style="display: flex;">
  389. <div style="flex: 1; margin-right: 20px;">
  390. <el-form-item label="船样合计" label-width="100px">
  391. <el-input v-model="add_gdscgdformData['船样合计']" id="船样合计"
  392. @keydown="add_gdzlent($event, '船样描述', '船样合计', '粘衬')"
  393. />
  394. </el-form-item>
  395. </div>
  396. <div style="flex: 1;">
  397. <el-form-item label="粘衬" label-width="100px">
  398. <el-input v-model="add_gdscgdformData['粘衬']" id="粘衬"
  399. @keydown="add_gdzlent($event, '船样合计', '粘衬', '单位')"
  400. />
  401. </el-form-item>
  402. </div>
  403. <div style="flex: 1;">
  404. <el-form-item label="单位" label-width="100px">
  405. <el-input v-model="add_gdscgdformData['单位']" id="单位"
  406. @keydown="add_gdzlent($event, '粘衬', '单位', '生产款号')"
  407. />
  408. </el-form-item>
  409. </div>
  410. </div>
  411. </el-form>
  412. </div>
  413. <!-- 底部操作按钮 -->
  414. <template #footer>
  415. <div class="dialog-footer" style="text-align: right;">
  416. <el-button @click="add_gdcloseDialog">取消</el-button>
  417. <el-button type="primary" @click="add_gdenterDialog">确定</el-button>
  418. </div>
  419. </template>
  420. </el-dialog>
  421. <el-dialog
  422. v-model="ddzl_dialogFormVisible"
  423. :before-close="dd_closeDialog"
  424. title="修改订单资料"
  425. width="70%"
  426. top="3%"
  427. destroy-on-close
  428. >
  429. <!-- 主布局,分为左右两部分 -->
  430. <el-row>
  431. <!-- 左侧部分,包括第一列和第二列 -->
  432. <el-col :span="16">
  433. <el-row>
  434. <!-- 第一列 -->
  435. <el-col :span="12">
  436. <el-form :model="edit_ddformData">
  437. <el-form-item label="订单编号" label-width="100px">
  438. <el-input v-model="edit_ddformData['订单编号']" disabled />
  439. </el-form-item>
  440. <el-form-item label="生产款号" label-width="100px">
  441. <el-input
  442. v-model="edit_ddformData['生产款号']" id='生产款号'
  443. @keydown="add_gdzlent($event, '单位', '生产款号', '订单数量')"
  444. />
  445. </el-form-item>
  446. <el-form-item label="款式" label-width="100px">
  447. <el-input
  448. v-model="edit_ddformData['款式']"id='款式'
  449. @keydown="add_gdzlent($event, '订单数量', '款式', '落货日期')"
  450. />
  451. </el-form-item>
  452. </el-form>
  453. </el-col>
  454. <!-- 第二列 -->
  455. <el-col :span="12">
  456. <el-form>
  457. <el-form-item label="客户编号" label-width="100px">
  458. <el-input v-model="edit_ddformData['客户编号']" disabled />
  459. </el-form-item>
  460. <el-form-item label="订单数量" label-width="100px">
  461. <el-input v-model="edit_ddformData['订单数量']" id='订单数量'
  462. @keydown="add_gdzlent($event, '生产款号', '订单数量', '款式')"
  463. />
  464. </el-form-item>
  465. <el-form-item label="落货日期" label-width="100px">
  466. <el-date-picker
  467. v-model="edit_ddformData['落货日期']"
  468. type="date"id='落货日期'
  469. @keydown="add_gdzlent($event, '款式', '落货日期', '面料')"
  470. />
  471. </el-form-item>
  472. </el-form>
  473. </el-col>
  474. </el-row>
  475. <!-- 面料,独占两列宽度,继续在左侧布局 -->
  476. <el-row>
  477. <el-col :span="24">
  478. <el-form-item label="面料" label-width="100px">
  479. <el-input
  480. type="textarea"
  481. v-model="edit_ddformData['面料']"
  482. rows="2"
  483. resize="none" id='面料'
  484. @keydown="add_gdzlent($event, '落货日期', '面料', '箱唛要求')"
  485. />
  486. </el-form-item>
  487. </el-col>
  488. </el-row>
  489. <!-- 其他表单项 -->
  490. <el-row>
  491. <el-col :span="24">
  492. <el-form-item label="箱唛要求" label-width="100px">
  493. <el-input
  494. type="textarea" id='箱唛要求'
  495. v-model="edit_ddformData['箱唛要求']"
  496. @keydown="add_gdzlent($event, '面料', '箱唛要求', '要求')"
  497. rows="2"
  498. resize="none"
  499. />
  500. </el-form-item>
  501. </el-col>
  502. </el-row>
  503. <el-row>
  504. <el-col :span="24">
  505. <el-form-item label="备注" label-width="100px">
  506. <el-input
  507. type="textarea"
  508. v-model="edit_ddformData['要求']" id='要求'
  509. @keydown="add_gdzlent($event, '箱唛要求', '要求', '船样描述')"
  510. rows="2"
  511. resize="none"
  512. />
  513. </el-form-item>
  514. </el-col>
  515. </el-row>
  516. <el-row>
  517. <el-col :span="24">
  518. <el-form-item label="船样描述" label-width="100px">
  519. <el-input
  520. type="textarea" id='船样描述'
  521. @keydown="add_gdzlent($event, '要求', '船样描述', '船样合计')"
  522. v-model="edit_ddformData['船样描述']"
  523. rows="2"
  524. resize="none"
  525. />
  526. </el-form-item>
  527. </el-col>
  528. </el-row>
  529. </el-col>
  530. <!-- 右侧部分,第三列 -->
  531. <el-col :span="8">
  532. <el-form>
  533. <div style="display: flex; align-items: center;">
  534. <el-upload
  535. ref="uploadRef"
  536. class="upload-demo"
  537. :action="uploadUrl"
  538. :http-request="customUpload"
  539. :headers="uploadHeaders"
  540. list-type="picture-card"
  541. :on-preview="handlePreview"
  542. :on-remove="handleRemove"
  543. :before-upload="beforeUpload"
  544. :on-success="handleSuccess"
  545. :on-error="handleError"
  546. :file-list="fileList"
  547. :limit="1"
  548. accept="image/jpeg,image/png"
  549. style="margin-left: 20px;"
  550. >
  551. <i class="el-icon-plus"></i>
  552. </el-upload>
  553. </div>
  554. <h4 style="font-size: 18px; margin-left: 150px;">上传图片</h4>
  555. <!-- 独立的制单信息 -->
  556. <el-form-item label="制单人" label-width="120px">
  557. <el-input v-model="edit_ddformData['Sys_id']" disabled />
  558. </el-form-item>
  559. <el-form-item label="制单日期" label-width="120px">
  560. <el-date-picker
  561. v-model="edit_ddformData['Sys_rq']" id='制单日期'
  562. disabled
  563. type="date"
  564. />
  565. </el-form-item>
  566. </el-form>
  567. </el-col>
  568. </el-row>
  569. <!-- 底部其他表单项 -->
  570. <div style="display: flex; justify-content: space-between; margin-top: 10px;">
  571. <el-form :model="edit_ddformData" style="flex: 1;">
  572. <div style="display: flex;">
  573. <div style="flex: 1; margin-right: 20px;">
  574. <el-form-item label="船样合计" label-width="100px">
  575. <el-input v-model="edit_ddformData['船样合计']" id="船样合计"
  576. @keydown="add_gdzlent($event, '船样描述', '船样合计', '粘衬')"
  577. />
  578. </el-form-item>
  579. </div>
  580. <div style="flex: 1;">
  581. <el-form-item label="粘衬" label-width="100px">
  582. <el-input v-model="edit_ddformData['粘衬']" id="粘衬"
  583. @keydown="add_gdzlent($event, '船样合计', '粘衬', '单位')"
  584. />
  585. </el-form-item>
  586. </div>
  587. <div style="flex: 1;">
  588. <el-form-item label="单位" label-width="100px">
  589. <el-input v-model="edit_ddformData['单位']" id="单位"
  590. @keydown="add_gdzlent($event, '粘衬', '单位', '生产款号')"
  591. />
  592. </el-form-item>
  593. </div>
  594. </div>
  595. </el-form>
  596. </div>
  597. <!-- 底部操作按钮 -->
  598. <template #footer>
  599. <div class="dialog-footer" style="text-align: right;">
  600. <el-button @click="dd_closeDialog">取消</el-button>
  601. <el-button type="primary" @click="dd_edit_Dialog">确定</el-button>
  602. </div>
  603. </template>
  604. </el-dialog>
  605. <!-- 新增颜色资料弹窗 -->
  606. <el-dialog
  607. v-model="add_gdyjdialogFormVisible"
  608. :before-close="add_gdyjcloseDialog"
  609. style="width: 66%; max-height: 80%; overflow-y: auto; margin-top: 4%;"
  610. :title="'新增颜色资料'"
  611. destroy-on-close>
  612. <el-form label-width="100px" :model="add_yszlformdata">
  613. <el-row :gutter="24" class="form-row">
  614. <el-col :span="10">
  615. <div style="display: flex; gap: 0px;">
  616. <h3 style="color:red;font-size: 24px;margin:-5px 0px 8px 12px;" >订单编号&nbsp;&nbsp;&nbsp;{{_ddhval}}</h3>
  617. </div>
  618. </el-col>
  619. <el-col :span="10">
  620. <el-form-item label="订单子编号:" class="mab" prop="keyOrder" id ='订单子编号' label-width='110'>
  621. <el-input v-model="add_yszlformdata.ddzbh" disabled style="width: 250px;" />
  622. </el-form-item>
  623. </el-col>
  624. </el-row>
  625. <el-row :gutter="24" class="form-row">
  626. <el-col :span="10">
  627. <el-form-item label="色系名称:" class="mab" prop="keyOrder" label-width='110'>
  628. <el-select
  629. v-model="add_yszlformdata.sxmc" style="width: 150px;" id="色系名称"
  630. @keydown="add_gdzlent($event, '', '色系名称', '款号:')">
  631. <el-option
  632. v-for="color in getSuborderscolor.colorlist"
  633. :key="color.id"
  634. :label="color.colorname"
  635. :value="color.colorname"
  636. @click="xz_sxhandleSizeChange(color.colorname,color.colorcode)">
  637. </el-option>
  638. </el-select>
  639. </el-form-item>
  640. </el-col>
  641. <el-col :span="10">
  642. <el-form-item label="PO号:" class="mab" prop="keyOrder" label-width="110">
  643. <el-input v-model="add_yszlformdata.kh" style="width: 250px;" id ='款号:' @keydown="add_gdzlent($event, '色系名称', '款号:', '颜色备注')"/>
  644. </el-form-item>
  645. </el-col>
  646. </el-row>
  647. <el-row :gutter="24" class="form-row">
  648. <el-col :span="8">
  649. <el-form-item label="颜色备注:" prop="joinDate" label-width='110'>
  650. <el-input v-model="add_yszlformdata.ysbz" style="width: 250px;" id ='颜色备注' @keydown="add_gdzlent($event, '款号:', '颜色备注', '是否船样')"/>
  651. </el-form-item>
  652. </el-col>
  653. <el-col :span="8">
  654. <el-form-item label="是否船样:" prop="joinDate" label-width='200'>
  655. <el-select v-model="add_yszlformdata.sfcy" style="width: 150px;" id ='是否船样' @keydown="add_gdzlent($event, '颜色备注', '是否船样', 'cm1')">
  656. <el-option label="是" value="是" @click="cyChange('是')"></el-option>
  657. <el-option label="否" value="否" @click="cyChange('否')"></el-option>
  658. </el-select>
  659. </el-form-item>
  660. </el-col>
  661. </el-row>
  662. <el-row :gutter="24" class="form-row">
  663. <el-col :span="24">
  664. <el-form-item label="尺码:" class="mab" prop="keyOrder" label-width='110'>
  665. <el-input v-model="cmformdata.cm1" style="width: 80px;" id ='cm1' @keydown="add_gdzlent($event, '是否船样', 'cm1', 'cm2')"/>
  666. <el-input v-model="cmformdata.cm2" style="width: 80px;" id ='cm2' @keydown="add_gdzlent($event, 'cm1', 'cm2', 'cm3')"/>
  667. <el-input v-model="cmformdata.cm3" style="width: 80px;" id ='cm3' @keydown="add_gdzlent($event, 'cm2', 'cm3', 'cm4')"/>
  668. <el-input v-model="cmformdata.cm4" style="width: 80px;" id ='cm4' @keydown="add_gdzlent($event, 'cm3', 'cm4', 'cm5')"/>
  669. <el-input v-model="cmformdata.cm5" style="width: 80px;" id ='cm5' @keydown="add_gdzlent($event, 'cm4', 'cm5', 'cm6')"/>
  670. <el-input v-model="cmformdata.cm6" style="width: 80px;" id ='cm6' @keydown="add_gdzlent($event, 'cm5', 'cm6', 'cm7')"/>
  671. <el-input v-model="cmformdata.cm7" style="width: 80px;" id ='cm7' @keydown="add_gdzlent($event, 'cm6', 'cm7', 'cm8')"/>
  672. <el-input v-model="cmformdata.cm8" style="width: 80px;" id ='cm8' @keydown="add_gdzlent($event, 'cm7', 'cm8', 'cm9')"/>
  673. <el-input v-model="cmformdata.cm9" style="width: 80px;" id ='cm9' @keydown="add_gdzlent($event, 'cm8', 'cm9', 'zds1')"/>
  674. <el-input v-model="cmformdata.cm10" style="width: 80px;"/>
  675. </el-form-item>
  676. </el-col>
  677. </el-row>
  678. <el-row :gutter="24" class="form-row">
  679. <el-col :span="24">
  680. <el-form-item label="制单数:" class="mab" prop="keyOrder" label-width='110'>
  681. <el-input v-model="zdsformdata.zds1" @input="updateTotal" style="width: 80px;" id ='zds1' @keydown="add_gdzlent($event, 'cm9', 'zds1', 'zds2')"/>
  682. <el-input v-model="zdsformdata.zds2" @input="updateTotal" style="width: 80px;" id ='zds2' @keydown="add_gdzlent($event, 'zds1', 'zds2', 'zds3')"/>
  683. <el-input v-model="zdsformdata.zds3" @input="updateTotal" style="width: 80px;" id ='zds3' @keydown="add_gdzlent($event, 'zds2', 'zds3', 'zds4')"/>
  684. <el-input v-model="zdsformdata.zds4" @input="updateTotal" style="width: 80px;" id ='zds4' @keydown="add_gdzlent($event, 'zds3', 'zds4', 'zds5')"/>
  685. <el-input v-model="zdsformdata.zds5" @input="updateTotal" style="width: 80px;" id ='zds5' @keydown="add_gdzlent($event, 'zds4', 'zds5', 'zds6')"/>
  686. <el-input v-model="zdsformdata.zds6" @input="updateTotal" style="width: 80px;" id ='zds6' @keydown="add_gdzlent($event, 'zds5', 'zds6', 'zds7')"/>
  687. <el-input v-model="zdsformdata.zds7" @input="updateTotal" style="width: 80px;" id ='zds7' @keydown="add_gdzlent($event, 'zds6', 'zds7', 'zds8')"/>
  688. <el-input v-model="zdsformdata.zds8" @input="updateTotal" style="width: 80px;" id ='zds8' @keydown="add_gdzlent($event, 'zds7', 'zds8', 'zds9')"/>
  689. <el-input v-model="zdsformdata.zds9" @input="updateTotal" style="width: 80px;" id ='zds9' @keydown="add_gdzlent($event, 'zds8', 'zds9', '色系名称')"/>
  690. <el-input v-model="zdsformdata.zds10" readonly style="width: 80px;" />
  691. </el-form-item>
  692. </el-col>
  693. </el-row>
  694. </el-form>
  695. <template #footer>
  696. <div class="dialog-footer" style="display: flex; justify-content: flex-end; padding: 10px;">
  697. <el-button type="primary" @click="add_dyjcloseDialog">取消</el-button>
  698. <el-button type="primary" @click="add_gdyjenterDialog">确定</el-button>
  699. </div>
  700. </template>
  701. </el-dialog>
  702. <!-- 新增工序资料-->
  703. <el-dialog v-model="visible" :before-close="()=> visible = false" style="width: 25%;margin: 10% auto" :title="'新增工序资料'" destroy-on-close>
  704. <el-form>
  705. <div>
  706. <div style="display: flex; gap: 0px;">
  707. <h3 style="color:red;font-size: 24px;margin:0px 0px 0px 15px;">订单号&nbsp;&nbsp;&nbsp;{{_ddhval}}</h3>
  708. </div>
  709. <div style="display: flex; gap: 0px;">
  710. <el-form-item label="仓库出库:" class="mab" prop="isBanciSelected" label-width="110">
  711. <el-checkbox v-model="form['仓库出库']"></el-checkbox>
  712. </el-form-item>
  713. </div>
  714. <div style="display: flex; gap: 0px;">
  715. <el-form-item label="裁切:" class="mab" prop="isBanciSelected" label-width="110">
  716. <el-checkbox v-model="form['裁切']"></el-checkbox>
  717. </el-form-item>
  718. </div>
  719. <div style="display: flex; gap: 0px;">
  720. <el-form-item label="车缝:" class="mab" prop="isBanciSelected" label-width="110">
  721. <el-checkbox v-model="form['车缝']"></el-checkbox>
  722. </el-form-item>
  723. </div>
  724. <div style="display: flex; gap: 0px;">
  725. <el-form-item label="后道收样:" class="mab" prop="isBanciSelected" label-width="110">
  726. <el-checkbox v-model="form['后道收样']"></el-checkbox>
  727. </el-form-item>
  728. </div>
  729. <div style="display: flex; gap: 0px;">
  730. <el-form-item label="大烫:" class="mab" prop="isBanciSelected" label-width="110">
  731. <el-checkbox v-model="form['大烫']"></el-checkbox>
  732. </el-form-item>
  733. </div>
  734. <div style="display: flex; gap: 0px;">
  735. <el-form-item label="总检:" class="mab" prop="isBanciSelected" label-width="110">
  736. <el-checkbox v-model="form['总检']"></el-checkbox>
  737. </el-form-item>
  738. </div>
  739. <div style="display: flex; gap: 0px;">
  740. <el-form-item label="包装:" class="mab" prop="isBanciSelected" label-width="110">
  741. <el-checkbox v-model="form['包装']"></el-checkbox>
  742. </el-form-item>
  743. </div>
  744. </div>
  745. </el-form>
  746. <template #footer>
  747. <div class="dialog-footer" style="text-align: right;top: auto;">
  748. <el-button @click="add_gxcloseDialog">取 消</el-button>
  749. <el-button type="primary" @click="add_gxenterDialog">确 定</el-button>
  750. </div>
  751. </template>
  752. </el-dialog>
  753. <!-- 技术附件 -->
  754. <el-dialog v-model="jsfjdialogFormVisible" :before-close="jsfjcloseDialog" :title="产品技术附件资料"
  755. style="margin-top: 40px" height="500px" width="700px" destroy-on-close>
  756. <el-form :model="jsfjformdata" label-position="right" ref="elFormRef" :rules="rule" label-width="90px">
  757. <el-row :gutter="24">
  758. <el-col :span="10">
  759. <div style="display: flex; gap: 0px;">
  760. <h3 style="color:red;font-size: 24px;margin:-5px 0px 8px 12px;" >订单编号&nbsp;&nbsp;&nbsp;{{_ddhval}}</h3>
  761. </div>
  762. </el-col>
  763. </el-row>
  764. <br />
  765. <el-row :gutter="24">
  766. <el-col :span="16">
  767. <el-form-item label="附件备注:" prop="address" class="mab">
  768. <el-select v-model="jsfjformdata.附件备注" placeholder="请选择附件类型" id="附件备注">
  769. <el-option label="订单附件" value="订单资料附件"></el-option>
  770. <el-option label="技术附件" value="技术附件"></el-option>
  771. </el-select>
  772. </el-form-item>
  773. </el-col>
  774. </el-row>
  775. <el-row :gutter="24">
  776. <el-col :span="8">
  777. <br>
  778. <p>附件文件类型必须是"XLSX"格式</p>
  779. </el-col>
  780. <el-col :span="12">
  781. <br>
  782. <input style="font-size:16px;" type="file" @change="uploadExcel" >
  783. </el-col>
  784. <el-col :span="4">
  785. <br>
  786. <el-button @click="yulan">预览</el-button>
  787. </el-col>
  788. </el-row>
  789. </el-form>
  790. <template #footer>
  791. <br>
  792. <div class="dialog-footer">
  793. <el-button @click="jsfjcloseDialog">取 消</el-button>
  794. <el-button type="primary" @click="jsfjenterDialog">确 定</el-button>
  795. </div>
  796. </template>
  797. </el-dialog>
  798. <!-- 技术附件预览弹窗 -->
  799. <el-dialog v-model="luckyexcelVisible" :before-close="luckyexcelCloseDialog" width="100%" top="0vh">
  800. <div id="luckyexcel" style="width: 100%;height: 100vh;"></div>
  801. </el-dialog>
  802. </el-main>
  803. </layout-content>
  804. </layout>
  805. </layout>
  806. <PrintPage ref="printPageRef" />
  807. <!-- <div class="print-section">
  808. <link href="https://cdn.jsdelivr.net/npm/vue-plugin-hiprint@1.0.0/dist/print-lock.css" rel="stylesheet" media="print">
  809. <link href="https://unpkg.com/vue-plugin-hiprint@1.0.0/dist/print-lock.css" rel="stylesheet">
  810. </div> -->
  811. <div id="preview"></div>
  812. </div>
  813. </template>
  814. <script>
  815. //点击按钮显示下方表格
  816. export default {
  817. data() {
  818. return {
  819. currentTable: '', // 当前展示的表格
  820. activeName: 'first',
  821. _ddhval:'',
  822. add_gddialogFormVisible: true,
  823. };
  824. },
  825. methods: {
  826. }
  827. };
  828. </script>
  829. <script setup>
  830. // 全量引入格式化工具 请按需保留
  831. import $script from 'scriptjs'
  832. import $ from 'jquery';
  833. import LuckyExcel from 'luckyexcel';
  834. import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
  835. import { ElMessage, ElMessageBox,ElUpload, ElButton } from 'element-plus'
  836. import { ref, reactive, computed, nextTick, watch,onMounted,onBeforeUnmount } from 'vue'
  837. import axios from 'axios';
  838. import * as XLSX from 'xlsx';
  839. import jsPDF from 'jspdf';
  840. import {Datalist,WorkOrderList,WorkOrderAdd,PrintListData,
  841. printDetailAdd,PrintDetailDel,orderDataDel,getWorkOrder,
  842. getSuborder,PrintDataEdit,WorkOrderEdit,gdAnnexAdd,upload,OrderAttachments,getPonumber} from '@/api/mes/job'
  843. import PrintPage from './components/print.vue'
  844. import AddGongYi from './components/addGongYi.vue'
  845. import { useUserStore } from '@/pinia/modules/user';
  846. defineOptions({name: 'Company'})
  847. //定义打印跳转页面
  848. const printPageRef = ref()
  849. //获取登录用户信息
  850. const userStore = useUserStore()
  851. const _username = ref('')
  852. _username.value = userStore.userInfo.userName + '/' + userStore.userInfo.nickName
  853. console.log('获取用户名称',_username.value)
  854. //全局获取当前日期
  855. const today = new Date();
  856. const year = today.getFullYear();
  857. const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
  858. const day = String(today.getDate()).padStart(2, '0');
  859. const hours = String(today.getHours()).padStart(2, '0');
  860. const minutes = String(today.getMinutes()).padStart(2, '0');
  861. const seconds = String(today.getSeconds()).padStart(2, '0');
  862. const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  863. const currentDates = `${year}-${month}-${day}`;
  864. //==============图片上传=============
  865. // const uploadUrl = ref('http://mes-dacheng-api:8083/index.php/api/work_order/ImgUpload')
  866. // 上传的URL
  867. const uploadUrl = ref('http://192.168.28.22:8082/api/work_order/ImgUpload');
  868. const uploadHeaders = { 'Content-Type': 'multipart/form-data' };
  869. const fileList = reactive([]);
  870. const uploadRef = ref(null);
  871. // 预览图片
  872. const handlePreview = (file) => {
  873. console.log('预览文件:', file);
  874. };
  875. // 移除图片
  876. const handleRemove = (file, fileList) => {
  877. console.log('移除文件:', file, '剩余文件:', fileList);
  878. };
  879. // 上传错误处理
  880. const handleError = (err, file, fileList) => {
  881. console.error('上传失败:', err);
  882. ElMessage.error(`图片上传失败: ${err.message || '未知错误'}`);
  883. };
  884. // 上传前的检查与图片压缩
  885. const beforeUpload = (file) => {
  886. const isJPGOrPNG = file.type === 'image/jpeg' || file.type === 'image/png';
  887. const isLt500K = file.size / 1024 < 500;
  888. if (!isJPGOrPNG) {
  889. ElMessage.error('上传图片只能是 JPG 或 PNG 格式!');
  890. return false;
  891. }
  892. if (!isLt500K) {
  893. ElMessage.error('上传图片大小不能超过 500KB!');
  894. return false;
  895. }
  896. // 图片格式和大小符合,压缩图片
  897. return new Promise((resolve, reject) => {
  898. const reader = new FileReader();
  899. reader.readAsDataURL(file);
  900. reader.onload = () => {
  901. const img = new Image();
  902. img.src = reader.result;
  903. img.onload = () => {
  904. const canvas = document.createElement('canvas');
  905. const ctx = canvas.getContext('2d');
  906. const fixedWidth = 300;
  907. const fixedHeight = 300;
  908. canvas.width = fixedWidth;
  909. canvas.height = fixedHeight;
  910. ctx.drawImage(img, 0, 0, fixedWidth, fixedHeight);
  911. canvas.toBlob((blob) => {
  912. const compressedFile = new File([blob], file.name, { type: file.type });
  913. resolve(compressedFile);
  914. }, file.type);
  915. };
  916. };
  917. reader.onerror = (error) => {
  918. ElMessage.error('图片处理失败');
  919. reject(error);
  920. };
  921. });
  922. };
  923. // 上传成功处理
  924. const handleSuccess = (response, file, fileList) => {
  925. console.log('上传成功:', response, file, fileList);
  926. // ElMessage.success('图片上传成功');
  927. };
  928. // 自定义上传逻辑
  929. const customUpload = async (options) => {
  930. try {
  931. const formData = new FormData();
  932. formData.append('image', options.file);
  933. const response = await axios.post(uploadUrl.value, formData, {
  934. headers: uploadHeaders,
  935. onUploadProgress: (progressEvent) => {
  936. options.onProgress({
  937. percent: Math.round((progressEvent.loaded * 100) / progressEvent.total),
  938. });
  939. },
  940. });
  941. if (response.data.code === 0) {
  942. options.onSuccess(response.data);
  943. ElMessage.success('图片上传成功');
  944. add_gdscgdformData.img = response.data.data.url;
  945. edit_ddformData.img = response.data.data.url;
  946. } else {
  947. throw new Error(response.data.msg);
  948. }
  949. } catch (error) {
  950. console.error('上传失败:', error);
  951. options.onError(error);
  952. ElMessage.error(`上传失败: ${error.message}`);
  953. }
  954. };
  955. // =========== 左侧树侧形结构 ===========
  956. const treeData = ref([])
  957. const tableData = ref([])
  958. const _Gd_khdh = ref(null)
  959. const defaultProps = {
  960. children: 'children',
  961. label: 'label'
  962. };
  963. const Datalistdata = async () => {
  964. try {
  965. const Datalists = await Datalist();
  966. Datalists.data.forEach(id => {
  967. treeData.value.push({
  968. label: id,
  969. });
  970. });
  971. } catch (error) {
  972. console.error(error);
  973. }
  974. };
  975. Datalistdata();
  976. //点击左侧树形获取编号
  977. const handleNodeClick = async (node) => {
  978. ystableData.splice(0, ystableData.length);
  979. gytableData.splice(0, gytableData.length);
  980. ddtableData.splice(0, ddtableData.length);
  981. jstableData.splice(0, jstableData.length);
  982. // 取消所有节点的颜色
  983. const allNodes = document.querySelectorAll('.treecolor .el-tree-node');
  984. allNodes.forEach(node => {
  985. node.querySelector('.el-tree-node__label').style.color = '';
  986. });
  987. // 获取点击的节点 给当前点击的节点改变颜色【红色】
  988. const clickedNodeId = node['$treeNodeId'];
  989. const clickedNode = document.querySelector(`.treecolor .el-tree-node[data-key="${clickedNodeId}"]`);
  990. if (clickedNode) {
  991. clickedNode.querySelector('.el-tree-node__label').style.color = 'red';
  992. }
  993. // console.log(node)
  994. ystableData.length = 0
  995. searchInfo.value = '';
  996. _Gd_khdh.value = node.label.split('【')[0];
  997. _WorkList_page();
  998. };
  999. //调用订单资料列表
  1000. const _WorkList_page = async () => {
  1001. console.log("page",page.value)
  1002. console.log("pageSize",pageSize.value)
  1003. try {
  1004. //通过客户编号获取
  1005. const WorkListdata = await WorkOrderList({search:_Gd_khdh.value,page:1,limit:100});
  1006. tableData.value = WorkListdata.data.data
  1007. total.value = WorkListdata.data.total
  1008. } catch (error) {
  1009. console.error(error);
  1010. }
  1011. };
  1012. //调用订单资料列表
  1013. const page_WorkList_page = async () => {
  1014. console.log("page",page.value)
  1015. console.log("pageSize",pageSize.value)
  1016. try {
  1017. //通过客户编号获取
  1018. // const WorkListdata = await WorkOrderList({search:_Gd_khdh.value,page:page.value,limit:pageSize.value});
  1019. const WorkListdata = await WorkOrderList({search:_Gd_khdh.value,page:page.value,limit:pageSize.value});
  1020. tableData.value = WorkListdata.data.data
  1021. total.value = WorkListdata.data.total
  1022. } catch (error) {
  1023. console.error(error);
  1024. }
  1025. };
  1026. //============订单资料============
  1027. //订单资料修改
  1028. const ddzl_dialogFormVisible = ref(false)
  1029. const edit_ddformData = ref({})
  1030. // 双击订单表格
  1031. const updateCompanyFunc = async (row) => {
  1032. ddzl_dialogFormVisible.value = true;
  1033. Object.assign(edit_ddformData.value,row);
  1034. }
  1035. //订单资料修改确认
  1036. const dd_edit_Dialog = async () => {
  1037. //日期转换
  1038. let lhrq_formattedDeliveryDate = '';
  1039. if (edit_ddformData.value.落货日期) {
  1040. const date = new Date(edit_ddformData.value.落货日期);
  1041. lhrq_formattedDeliveryDate = `${date.getFullYear()}-${('0' + (date.getMonth() + 1)).slice(-2)}-${('0' + date.getDate()).slice(-2)}`;
  1042. }
  1043. let params = {};
  1044. params.订单编号 = edit_ddformData.value.订单编号
  1045. params.生产款号 = edit_ddformData.value.生产款号
  1046. params.客户编号 = edit_ddformData.value.客户编号
  1047. params.款式 = edit_ddformData.value.款式
  1048. params.箱唛要求 = edit_ddformData.value.箱唛要求
  1049. params.面料 = edit_ddformData.value.面料
  1050. params.要求 = edit_ddformData.value.要求
  1051. params.船样描述 = edit_ddformData.value.船样描述
  1052. params.船样合计 = edit_ddformData.value.船样合计
  1053. params.粘衬 = edit_ddformData.value.粘衬
  1054. params.订单数量 = edit_ddformData.value.订单数量
  1055. params.单位 = edit_ddformData.value.单位
  1056. params.接单日期 = edit_ddformData.value.接单日期
  1057. params.落货日期 = lhrq_formattedDeliveryDate
  1058. params.Sys_id = edit_ddformData.value.Sys_id
  1059. params.id = edit_ddformData.value.Uniqid
  1060. params.img = edit_ddformData.img
  1061. console.log(params)
  1062. // return;
  1063. //订单资料修改接口
  1064. const WorkOrderEdit_list = await WorkOrderEdit(params);
  1065. if(WorkOrderEdit_list.code === 0){
  1066. ddzl_dialogFormVisible.value = false;
  1067. //修改成功调用接口更新表格数据
  1068. _WorkList_page()
  1069. ElMessage({type: 'success',message: '修改成功'})
  1070. }else{
  1071. ElMessage({type: 'error',message: '修改失败'})
  1072. }
  1073. }
  1074. //订单资料修改取消
  1075. const dd_closeDialog = async () => {
  1076. ddzl_dialogFormVisible.value = false;
  1077. }
  1078. //=============颜色资料============
  1079. //颜色资料修改
  1080. const dialogFormVisible = ref(false)
  1081. //尺码
  1082. const edit_cmformdata = reactive({
  1083. cm1:'',
  1084. cm2:'',
  1085. cm3:'',
  1086. cm4:'',
  1087. cm5:'',
  1088. cm6:'',
  1089. cm7:'',
  1090. cm8:'',
  1091. cm9:'',
  1092. cm10:'总计',
  1093. });
  1094. //制单数
  1095. const edit_zdsformdata = reactive({
  1096. zds1:'',
  1097. zds2:'',
  1098. zds3:'',
  1099. zds4:'',
  1100. zds5:'',
  1101. zds6:'',
  1102. zds7:'',
  1103. zds8:'',
  1104. zds9:'',
  1105. zds10:'',
  1106. });
  1107. const Uniqid = ref('')//颜色资料Uniqid
  1108. //颜色资料表格双击
  1109. const ysupdateCompanyFunc = async (row) => {
  1110. dialogFormVisible.value = true;
  1111. edit_formData.value = { ...row };
  1112. console.log(row)
  1113. edit_formData['子订单编号'] = row['子订单编号']
  1114. edit_formData['颜色备注'] = row['颜色备注']
  1115. edit_formData['款号'] = row['款号']
  1116. edit_formData['船样'] = row['船样']
  1117. edit_formData['颜色'] = row['颜色']
  1118. edit_colorcode.value =row['color_id']
  1119. Uniqid.value = row['Uniqid']
  1120. //获取色系名称列表
  1121. const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'否',colorname:edit_formData['颜色']});
  1122. getSuborderscolor.colorlist = getSuborders.data.colorlist;
  1123. let index = 1;
  1124. // 创建一个函数来构建尺码和数量的映射
  1125. function buildSizeQuantitiesMap(sizes, formData) {
  1126. const sizeQuantitiesMap = {};
  1127. sizes.forEach(size => {
  1128. // 使用逻辑或操作符确保所有尺码都有数量(默认为0,但如果有值则使用那个值)
  1129. const quantity = formData[size] || 0;
  1130. sizeQuantitiesMap[size] = quantity;
  1131. });
  1132. return sizeQuantitiesMap;
  1133. }
  1134. // 使用函数构建映射
  1135. let sizeQuantitiesMap = buildSizeQuantitiesMap(sizeDatas, edit_formData.value);
  1136. let edit_params = {};
  1137. for (const [size, quantity] of Object.entries(sizeQuantitiesMap)) {
  1138. edit_params[`cm${index}`] = size;
  1139. edit_params[`cmsl${index++}`] = quantity;
  1140. }
  1141. for (let i = 1; i <= 9; i++) {
  1142. edit_cmformdata[`cm${i}`] = edit_params[`cm${i}`] || '';
  1143. edit_zdsformdata[`zds${i}`] = (edit_params[`cmsl${i}`] === 0 || edit_params[`cmsl${i}`] === null) ? '' : edit_params[`cmsl${i}`];
  1144. }
  1145. //计算尺码数量总数合计
  1146. updateTotal()
  1147. };
  1148. //自动计算制单数总计
  1149. function updateTotal() {
  1150. // 直接指定要累加的属性名
  1151. const relevantKeys = ['zds1', 'zds2', 'zds3', 'zds4', 'zds5', 'zds6', 'zds7', 'zds8', 'zds9'];
  1152. const values = relevantKeys.map(key => parseInt(zdsformdata[key], 10) || 0); // 使用 || 0 来处理可能的 NaN 或 undefined/null
  1153. zdsformdata.zds10 = values.reduce((sum, value) => sum + value, 0);
  1154. const valuess = relevantKeys.map(key => parseInt(edit_zdsformdata[key], 10) || 0); // 使用 || 0 来处理可能的 NaN 或 undefined/null
  1155. edit_zdsformdata.zds10 = valuess.reduce((sum, value) => sum + value, 0);
  1156. }
  1157. //点击是否船样 改变子订单编号
  1158. const edit_cyChange = async (value) => {
  1159. if (value === '是') {
  1160. const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'是',colorname:edit_formData['颜色']});
  1161. edit_formData['子订单编号'] = getSuborders.data;
  1162. }else if(value === '否'){
  1163. const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'否',colorname:edit_formData['颜色']});
  1164. edit_formData['子订单编号'] = getSuborders.data.order;
  1165. }
  1166. };
  1167. //修改颜色资料确认
  1168. const ys_edit_Dialog = async () => {
  1169. // console.log(edit_formData)
  1170. if (!edit_formData.value) return;
  1171. function buildSizeQuantitiesMap(sizes, formData) {
  1172. const sizeQuantitiesMap = {};
  1173. sizes.forEach(size => {
  1174. const quantity = formData[size] || 0; // 使用逻辑或操作符确保所有尺码的数量
  1175. sizeQuantitiesMap[size] = quantity;
  1176. });
  1177. return sizeQuantitiesMap;
  1178. }
  1179. // 使用函数构建映射
  1180. const sizeQuantitiesMap = buildSizeQuantitiesMap(sizeDatas, edit_formData.value);
  1181. let index = 1;
  1182. const params = {
  1183. 订单编号: edit_formData.value.订单编号,
  1184. 子订单编号: edit_formData.子订单编号,
  1185. 款号: edit_formData.款号,
  1186. 颜色备注: edit_formData.颜色备注,
  1187. 船样: edit_formData.船样 === '是' ? '1' : '0', // 转换船样字段
  1188. 颜色: edit_formData.颜色,
  1189. color_id:edit_colorcode.value,
  1190. zdtotal: edit_zdsformdata.zds10,
  1191. Sys_id: edit_formData.value.Sys_id,
  1192. id: Uniqid.value,
  1193. };
  1194. for (const [size, quantity] of Object.entries(sizeQuantitiesMap)) {
  1195. params[`cm${index}`] = size;
  1196. const cmslValue = +edit_zdsformdata[`zds${index}`]; // 获取对应的数量
  1197. params[`cmsl${index++}`] = cmslValue === 0 ? "" : cmslValue; // 如果为0,赋值为空字符串
  1198. }
  1199. // console.log(params); return;
  1200. const PrintDataEdit_list = await PrintDataEdit(params);
  1201. if(PrintDataEdit_list.code === 0){
  1202. dialogFormVisible.value = false;
  1203. ElMessage({type: 'success',message: '修改成功'})
  1204. //数据列表显示
  1205. const PrintListDatas = await PrintListData({order:_Gd_gdbh.value})
  1206. const jsOrderAttachments = await OrderAttachments({order:_Gd_gdbh.value,desc:'技术附件'})
  1207. const ddOrderAttachments = await OrderAttachments({order:_Gd_gdbh.value,desc:'订单资料附件'})
  1208. //颜色资料
  1209. if(PrintListDatas.data.列表.length === 0 ){
  1210. ystableData.length = 0
  1211. }else{
  1212. sizeDatas.splice(0,PrintListDatas.data.型号.length,...PrintListDatas.data.型号);//型号数据
  1213. ystableData.splice(0,PrintListDatas.data.列表.length,...PrintListDatas.data.列表);//表格数据
  1214. // 使用 map 方法创建一个新数组,并转换船样字段
  1215. const newData = PrintListDatas.data.列表.map(item => ({
  1216. ...item,
  1217. 船样: item.船样 === 1 ? '是' : '否'
  1218. }));
  1219. // 将新数组赋值给 ystableData,这会触发视图更新,清空旧数据(可选,如果不需要保留旧数据的话)
  1220. ystableData.length = 0;
  1221. ystableData.push(...newData);
  1222. }
  1223. tableRowClick(params)
  1224. }else{
  1225. ElMessage({type: 'error',message: '修改失败'})
  1226. }
  1227. };
  1228. //颜色资料修改取消
  1229. const ys_edit_closeDialog = async (row) => {
  1230. dialogFormVisible.value = false;
  1231. };
  1232. // 分页
  1233. const page = ref(1)
  1234. const total = ref(0)
  1235. const pageSize = ref(10)
  1236. const handleCurrentChange = (val) => {
  1237. console.log("handleCurrentChange",val)
  1238. page.value = val;
  1239. // page_WorkList_page();
  1240. };
  1241. // 修改页面容量 点击多少条/页
  1242. const handleSizeChange = (val) => {
  1243. console.log("handleSizeChange",val)
  1244. pageSize.value = val;
  1245. // page_WorkList_page();
  1246. };
  1247. // =========== 新增订单资料 ===========
  1248. const add_gdscgdformData = reactive({
  1249. 订单编号: '',
  1250. 生产款号: '',
  1251. 款式: '',
  1252. 客户编号: '',
  1253. 落货日期: '',
  1254. 箱唛要求: '',
  1255. 面料: '',
  1256. 要求: '',
  1257. 船样描述: '',
  1258. 船样合计: '',
  1259. 粘衬: '',
  1260. 订单数量: '',
  1261. 单位: '件',
  1262. Sys_id: '',
  1263. 制单日期: '',
  1264. 审核日期: '',
  1265. });
  1266. const add_gddialogFormVisible = ref(false)
  1267. //点击新增订单资料按钮
  1268. const addgd_onclick = async () => {
  1269. console.log("用户信息", _username.value);
  1270. // 判断客户代号是否为空
  1271. if (!_Gd_khdh.value) {
  1272. ElMessage({ type: 'warning', message: '请选择具体的订单后,再操作此功能' });
  1273. return false;
  1274. }
  1275. add_gddialogFormVisible.value = true
  1276. //获取订单编号接口
  1277. const getWorkOrder_list = await getWorkOrder();
  1278. add_gdscgdformData['订单编号'] = getWorkOrder_list.data;
  1279. add_gdscgdformData['客户编号'] = _Gd_khdh.value
  1280. add_gdscgdformData['Sys_id'] = _username.value
  1281. add_gdscgdformData['制单日期'] = currentDates
  1282. add_gdscgdformData['生产款号'] = ''
  1283. add_gdscgdformData['款式'] = ''
  1284. add_gdscgdformData['落货日期'] = ''
  1285. add_gdscgdformData['面料'] = ''
  1286. add_gdscgdformData['要求'] = ''
  1287. add_gdscgdformData['船样描述'] = ''
  1288. add_gdscgdformData['船样合计'] = ''
  1289. add_gdscgdformData['箱唛要求'] = ''
  1290. add_gdscgdformData['粘衬'] = ''
  1291. add_gdscgdformData['订单数量'] = ''
  1292. }
  1293. //新增工单资料确定
  1294. const add_gdenterDialog = async ()=>{
  1295. // 定义需要校验的字段和对应的提示信息
  1296. const fields = [
  1297. { key: '款式', message: '款式不能为空' },
  1298. { key: '订单编号', message: '网络异常, 请重新打开' },
  1299. { key: '客户编号', message: '网络异常, 请重新打开' },
  1300. { key: '落货日期', message: '落货日期不能为空' },
  1301. { key: '订单数量', message: '订单数量不能为空' }
  1302. ];
  1303. // 遍历每个字段,进行非空或未定义校验
  1304. for (const field of fields) {
  1305. if (!add_gdscgdformData[field.key]) {
  1306. ElMessage({ type: 'warning', message: field.message });
  1307. return false;
  1308. }
  1309. }
  1310. // 校验制单日期
  1311. if (!add_gdscgdformData['制单日期']) {
  1312. ElMessage({ type: 'warning', message: '制单日期不能为空' });
  1313. return false;
  1314. }
  1315. //日期转换
  1316. let lhrq_formattedDeliveryDate = '';
  1317. if (add_gdscgdformData['落货日期']) {
  1318. const date = new Date(add_gdscgdformData['落货日期']);
  1319. lhrq_formattedDeliveryDate = `${date.getFullYear()}-${('0' + (date.getMonth() + 1)).slice(-2)}-${('0' + date.getDate()).slice(-2)}`;
  1320. }
  1321. // let zdrq_formattedDeliveryDate = '';
  1322. // if (add_gdscgdformData['制单日期']) {
  1323. // const date = new Date(add_gdscgdformData['制单日期']);
  1324. // zdrq_formattedDeliveryDate = `${date.getFullYear()}-${('0' + (date.getMonth() + 1)).slice(-2)}-${('0' + date.getDate()).slice(-2)}`;
  1325. // }
  1326. const formattedData = {
  1327. 订单编号: add_gdscgdformData['订单编号'],
  1328. 生产款号: add_gdscgdformData['生产款号'],
  1329. 款式: add_gdscgdformData['款式'],
  1330. 客户编号: add_gdscgdformData['客户编号'],
  1331. 落货日期: lhrq_formattedDeliveryDate,
  1332. 箱唛要求: add_gdscgdformData['箱唛要求'],
  1333. 面料: add_gdscgdformData['面料'],
  1334. 要求: add_gdscgdformData['备注'],
  1335. 船样描述: add_gdscgdformData['船样描述'],
  1336. 船样合计: add_gdscgdformData['船样合计'],
  1337. 粘衬: add_gdscgdformData['粘衬'],
  1338. 订单数量: add_gdscgdformData['订单数量'],
  1339. 单位: add_gdscgdformData['单位'],
  1340. Sys_id: _username.value,
  1341. 接单日期: currentDates,
  1342. img: add_gdscgdformData.img,
  1343. };
  1344. console.log(formattedData)
  1345. // return;
  1346. const edit_gdformdata_list = await WorkOrderAdd(formattedData);
  1347. if (edit_gdformdata_list.code === 0) {
  1348. add_gddialogFormVisible.value = false;
  1349. ElMessage({type: 'success',message: '新增成功'})
  1350. const WorkListdata = await WorkOrderList({search:_Gd_khdh.value,page:1,limit:1});
  1351. tableData.value=WorkListdata.data.data
  1352. } else {
  1353. ElMessage({ type: 'error',message: '新增失败'})
  1354. }
  1355. }
  1356. //新增工单资料取消
  1357. const add_gdcloseDialog = () => {
  1358. add_gddialogFormVisible.value = false
  1359. }
  1360. // =========== 新增颜色资料 ===========
  1361. //默认弹窗关闭
  1362. const add_gdyjdialogFormVisible = ref(false)
  1363. const add_yszlformdata = reactive({
  1364. ddh: '',
  1365. ddzbh: '',
  1366. sxmc: '',
  1367. cmgg: '',
  1368. sfcy: '',
  1369. ysbz: '',
  1370. });
  1371. const cmformdata = reactive({
  1372. cm1:'32',
  1373. cm2:'34',
  1374. cm3:'36',
  1375. cm4:'38',
  1376. cm5:'40',
  1377. cm6:'42',
  1378. cm7:'44',
  1379. cm8:'46',
  1380. cm9:'48',
  1381. cm10:'总计',
  1382. });
  1383. const zdsformdata = reactive({
  1384. zds1:'',
  1385. zds2:'',
  1386. zds3:'',
  1387. zds4:'',
  1388. zds5:'',
  1389. zds6:'',
  1390. zds7:'',
  1391. zds8:'',
  1392. zds9:'',
  1393. zds10:'',
  1394. });
  1395. //记录色系编号
  1396. const add_colorcode = ref('')
  1397. //选择色系名称获取子订单编号
  1398. const xz_sxhandleSizeChange = async (value,color_id) => {
  1399. //获取子订单编号
  1400. const getPonumberdata = await getSuborder({colorname:value,order:_ddhval.value,cy:add_yszlformdata.sfcy});
  1401. console.log("获取子订单编号",getPonumberdata)
  1402. add_yszlformdata.ddzbh = getPonumberdata.data.order ? getPonumberdata.data.order : getPonumberdata.data;
  1403. console.log(value)
  1404. console.log(color_id)
  1405. if (value === '红色系') {
  1406. add_yszlformdata.sxmc = value
  1407. add_colorcode.value = color_id
  1408. } else if(value === '黄色系'){
  1409. add_yszlformdata.sxmc = value
  1410. add_colorcode.value = color_id
  1411. }else if(value === '蓝色系'){
  1412. add_yszlformdata.sxmc = value
  1413. add_colorcode.value = color_id
  1414. }else if(value === '绿色系'){
  1415. add_yszlformdata.sxmc = value
  1416. add_colorcode.value = color_id
  1417. }else if(value === '紫色系'){
  1418. add_yszlformdata.sxmc = value
  1419. add_colorcode.value = color_id
  1420. }else if(value === '灰色系'){
  1421. add_yszlformdata.sxmc = value
  1422. add_colorcode.value = color_id
  1423. }else if(value === '咖啡色系'){
  1424. add_yszlformdata.sxmc = value
  1425. add_colorcode.value = color_id
  1426. }else if(value === '黑白色系'){
  1427. add_yszlformdata.sxmc = value
  1428. add_colorcode.value = color_id
  1429. }else if(value === '经典色系'){
  1430. add_yszlformdata.sxmc = value
  1431. add_colorcode.value = color_id
  1432. }
  1433. };
  1434. const edit_formData = reactive({
  1435. '颜色': ''
  1436. });
  1437. //记录色系编号
  1438. const edit_colorcode = ref('')
  1439. const xg_sxhandleSizeChange = async (value,color_id) => {
  1440. const getPonumberdata = await getSuborder({colorname:value,order:_ddhval.value,cy:edit_formData['船样']});
  1441. console.log(edit_formData.value)
  1442. if(edit_formData.value['颜色'] === edit_formData['颜色']){
  1443. edit_formData['子订单编号'] = edit_formData.value['子订单编号']
  1444. }else{
  1445. edit_formData['子订单编号'] = getPonumberdata.data.order ? getPonumberdata.data.order : getPonumberdata.data;
  1446. }
  1447. if (value === '红色系') {
  1448. edit_formData['颜色'] = value
  1449. edit_colorcode.value = color_id
  1450. } else if(value === '黄色系'){
  1451. edit_formData['颜色'] = value
  1452. edit_colorcode.value = color_id
  1453. }else if(value === '蓝色系'){
  1454. edit_formData['颜色'] = value
  1455. edit_colorcode.value = color_id
  1456. }else if(value === '绿色系'){
  1457. edit_formData['颜色'] = value
  1458. edit_colorcode.value = color_id
  1459. }else if(value === '紫色系'){
  1460. edit_formData['颜色'] = value
  1461. edit_colorcode.value = color_id
  1462. }else if(value === '灰色系'){
  1463. edit_formData['颜色'] = value
  1464. edit_colorcode.value = color_id
  1465. }else if(value === '咖啡色系'){
  1466. edit_formData['颜色'] = value
  1467. edit_colorcode.value = color_id
  1468. }else if(value === '黑白色系'){
  1469. edit_formData['颜色'] = value
  1470. edit_colorcode.value = color_id
  1471. }else if(value === '经典色系'){
  1472. edit_formData['颜色'] = value
  1473. }
  1474. };
  1475. const cmhandleSizeChange = (value) => {
  1476. // console.log(value)
  1477. if (value === '尺码数') {
  1478. cmformdata.cm1 = '32';
  1479. cmformdata.cm2 = '34';
  1480. cmformdata.cm3 = '36';
  1481. cmformdata.cm4 = '38';
  1482. cmformdata.cm5 = '40';
  1483. cmformdata.cm6 = '42';
  1484. cmformdata.cm7 = '44';
  1485. cmformdata.cm8 = '46';
  1486. cmformdata.cm9 = '48';
  1487. cmformdata.cm10 = '总计';
  1488. } else if (value === '尺码') {
  1489. cmformdata.cm1 = 'S';
  1490. cmformdata.cm2 = 'M';
  1491. cmformdata.cm3 = 'L';
  1492. cmformdata.cm4 = 'XL';
  1493. cmformdata.cm5 = 'XXL';
  1494. cmformdata.cm6 = '3XL';
  1495. cmformdata.cm7 = '4XL';
  1496. cmformdata.cm8 = '';
  1497. cmformdata.cm9 = '';
  1498. cmformdata.cm10 = '总计';
  1499. }
  1500. };
  1501. //清空对象的属性值
  1502. const gdyj_clearFormData = () => {
  1503. Object.keys(zdsformdata).forEach(key => {
  1504. zdsformdata[key] = '';
  1505. });
  1506. };
  1507. //点击是否船样 改变子订单编号
  1508. const cyChange = async (value) => {
  1509. if (value === '是') {
  1510. add_yszlformdata.ddzbh = _Gd_gdbh.value + '-99'
  1511. const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'是',colorname:add_yszlformdata['sxmc']});
  1512. add_yszlformdata['ddzbh'] = getSuborders.data;
  1513. }else if(value === '否'){
  1514. const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'否',colorname:add_yszlformdata['sxmc']});
  1515. add_yszlformdata['ddzbh'] = getSuborders.data.order;
  1516. }
  1517. };
  1518. const getSuborderscolor = reactive({
  1519. colorlist: []
  1520. });
  1521. //新增颜色资料按钮
  1522. const addgdyj_onclick = async () => {
  1523. if(_Gd_gdbh.value === '' || _Gd_gdbh.value === null){
  1524. ElMessage({type: 'warning',message: '请选择具体的工单后,再操作此功能'})
  1525. return false;
  1526. }else{
  1527. add_gdyjdialogFormVisible.value = true
  1528. add_yszlformdata['sxmc'] = '红色系';
  1529. const getSuborders = await getSuborder({order:_Gd_gdbh.value,cy:'否',colorname:'红色系'});
  1530. console.log(getSuborders)
  1531. getSuborderscolor.colorlist = getSuborders.data.colorlist;
  1532. add_yszlformdata['ddzbh'] = getSuborders.data.order;
  1533. // 假设获取的数据是 getSuborders.data
  1534. if (getSuborders.data.cm) {
  1535. // 判断并赋值
  1536. cmformdata.cm1 = getSuborders.data.cm.cm1 || '';
  1537. cmformdata.cm2 = getSuborders.data.cm.cm2 || '';
  1538. cmformdata.cm3 = getSuborders.data.cm.cm3 || '';
  1539. cmformdata.cm4 = getSuborders.data.cm.cm4 || '';
  1540. cmformdata.cm5 = getSuborders.data.cm.cm5 || '';
  1541. cmformdata.cm6 = getSuborders.data.cm.cm6 || '';
  1542. cmformdata.cm7 = getSuborders.data.cm.cm7 || '';
  1543. cmformdata.cm8 = getSuborders.data.cm.cm8 || '';
  1544. cmformdata.cm9 = getSuborders.data.cm.cm9 || '';
  1545. cmformdata.cm10 = '合计';
  1546. }
  1547. add_yszlformdata['ddh'] = _Gd_gdbh.value;
  1548. add_yszlformdata['ys'] = '';
  1549. add_yszlformdata['kh'] = '';
  1550. // add_yszlformdata['sxmc'] = '';
  1551. add_yszlformdata['cmgg'] = '32~46';
  1552. add_yszlformdata['sfcy'] = '否';
  1553. add_yszlformdata['kdy'] = _username.value;
  1554. gdyj_clearFormData();
  1555. }
  1556. }
  1557. const child_order = ref('')
  1558. //单机颜色资料表格
  1559. const ystableclick = async (row) => {
  1560. console.log(row.子订单编号)
  1561. child_order.value = row.子订单编号
  1562. }
  1563. //新增颜色资料确定
  1564. const add_gdyjenterDialog = async () => {
  1565. //必填
  1566. if(add_yszlformdata['kh'] === ''){
  1567. ElMessage({type: 'warning',message: '款号不能为空'})
  1568. return false;
  1569. }
  1570. if(add_yszlformdata['ysbz'] === ''){
  1571. ElMessage({type: 'warning',message: '颜色备注不能为空'})
  1572. return false;
  1573. }
  1574. if(add_yszlformdata['sxmc'] === ''){
  1575. ElMessage({type: 'warning',message: '色系名称不能为空'})
  1576. return false;
  1577. }
  1578. let cy = '';
  1579. if(add_yszlformdata['sfcy'] === '是'){
  1580. cy = '1'
  1581. }else if(add_yszlformdata['sfcy'] === '否'){
  1582. cy = '0'
  1583. }
  1584. const addyszltable = {
  1585. 订单编号: add_yszlformdata['ddh'],
  1586. 子订单编号: add_yszlformdata['ddzbh'],
  1587. 颜色: add_yszlformdata['sxmc'],
  1588. 款号: add_yszlformdata['kh'],
  1589. 颜色备注:add_yszlformdata.ysbz,
  1590. 船样: cy,
  1591. Sys_id:add_yszlformdata['kdy'],
  1592. color_id:add_colorcode.value,
  1593. //尺码
  1594. cm1: cmformdata['cm1'],
  1595. cm2: cmformdata['cm2'],
  1596. cm3: cmformdata['cm3'],
  1597. cm4: cmformdata['cm4'],
  1598. cm5: cmformdata['cm5'],
  1599. cm6: cmformdata['cm6'],
  1600. cm7: cmformdata['cm7'],
  1601. cm8: cmformdata['cm8'],
  1602. cm9: cmformdata['cm9'],
  1603. //尺码数量
  1604. cmsl1: zdsformdata['zds1'],
  1605. cmsl2: zdsformdata['zds2'],
  1606. cmsl3: zdsformdata['zds3'],
  1607. cmsl4: zdsformdata['zds4'],
  1608. cmsl5: zdsformdata['zds5'],
  1609. cmsl6: zdsformdata['zds6'],
  1610. cmsl7: zdsformdata['zds7'],
  1611. cmsl8: zdsformdata['zds8'],
  1612. cmsl9: zdsformdata['zds9'],
  1613. zdtotal: zdsformdata['zds10'],
  1614. };
  1615. console.log(addyszltable)
  1616. // return;
  1617. const printDetailAdds = await printDetailAdd(addyszltable);
  1618. if (printDetailAdds.code === 0) {
  1619. add_gdyjdialogFormVisible.value = false;
  1620. ElMessage({type: 'success',message: '新增成功'})
  1621. }
  1622. const PrintListDatas = await PrintListData({order:_Gd_gdbh.value})
  1623. if(PrintListDatas.data.列表.length === 0){
  1624. ystableData.length = 0
  1625. }else{
  1626. sizeDatas.splice(0,PrintListDatas.data.型号.length,...PrintListDatas.data.型号);
  1627. ystableData.splice(0,PrintListDatas.data.列表.length,...PrintListDatas.data.列表);
  1628. }
  1629. }
  1630. //新增颜色资料取消
  1631. const add_dyjcloseDialog = () => {
  1632. add_gdyjdialogFormVisible.value = false
  1633. }
  1634. //键盘input框跳转
  1635. const add_gdzlent = async (event,id1,id2,id3,idx) => {
  1636. if(event.keyCode === 40){
  1637. if(id3!=''){
  1638. document.getElementById(id3).focus()
  1639. }
  1640. }else if (event.keyCode === 13) { // Enter 或向下箭头
  1641. if(id3!=''){
  1642. document.getElementById(id3).focus()
  1643. }
  1644. } else if (event.keyCode === 38) { // 向上箭头
  1645. if(id1!=''){
  1646. document.getElementById(id1).focus()
  1647. }
  1648. }else if (event.keyCode === 8) { // 删除箭头
  1649. if(id1!='' && document.getElementById(id2).value==''){
  1650. document.getElementById(id1).focus()
  1651. }
  1652. }else if (event.keyCode === 37) { // 向左箭头
  1653. if(id1!='' && document.getElementById(id2).selectionStart==0){
  1654. document.getElementById(id1).focus()
  1655. }
  1656. }else if (event.keyCode === 39) { // 向右箭头
  1657. if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
  1658. document.getElementById(id3).focus()
  1659. }
  1660. }
  1661. }
  1662. // =========== 新增工序资料 ===========
  1663. const visible = ref(false)
  1664. const form = reactive({
  1665. '仓库出库':true,
  1666. '裁剪':true,
  1667. '车缝':true,
  1668. '手工':true,
  1669. '大烫':true,
  1670. '总检':true,
  1671. '包装':true,
  1672. })
  1673. //新增工序资料按钮
  1674. const addgdgy_onclick = () => {
  1675. if(_Gd_gdbh.value === '' || _Gd_gdbh.value === null){
  1676. ElMessage({type: 'warning',message: '请选择具体的工单后,再操作此功能'})
  1677. return false;
  1678. }else{
  1679. visible.value = true;
  1680. }
  1681. }
  1682. //新增工序资料确定按钮
  1683. const add_gxenterDialog = () => {
  1684. console.log(form)
  1685. const formattedData = {
  1686. ckck: form['仓库出库'],
  1687. cq: form['裁剪'],
  1688. cf: form['车缝'],
  1689. hdsy: form['手工'],
  1690. dt: form['大烫'],
  1691. zj: form['总检'],
  1692. bz: form['包装']
  1693. };
  1694. // true 选择 fasle 未选择
  1695. for (let key in formattedData) {
  1696. if (formattedData[key] === true) {
  1697. formattedData[key] = 1;
  1698. } else if (formattedData[key] === false) {
  1699. formattedData[key] = 2;
  1700. }
  1701. }
  1702. console.log(formattedData)
  1703. }
  1704. //新增工序资料取消按钮
  1705. const add_gxcloseDialog = () => {
  1706. visible.value = false;
  1707. }
  1708. // =========== 订单打印 ===========
  1709. const cp_gdprintonClick = () => {
  1710. if(_Gd_gdbh.value === '' || _Gd_gdbh.value === null){
  1711. ElMessage({type: 'warning',message: '请选择具体的工单后,再操作此功能'})
  1712. return false;
  1713. }else{
  1714. console.log(_Gd_gdbh.value)
  1715. if(ystableData.length >=1){
  1716. printPageRef.value.open(_Gd_gdbh.value)
  1717. }else{
  1718. ElMessage({type: 'warning',message: '请新增颜色资料,再操作此功能'})
  1719. return false;
  1720. }
  1721. }
  1722. }
  1723. //点击表格行获取下方表格数据列表
  1724. // =========== 颜色资料、工艺资料、技术资料附件 ===========
  1725. //全局调用订单号编号
  1726. const _Gd_gdbh = ref('')
  1727. const _ddhval = ref('')
  1728. //颜色资料
  1729. const ystableData = reactive([])
  1730. //尺寸列表
  1731. const sizeDatas = reactive([])
  1732. //工艺资料
  1733. const gytableData = reactive([])
  1734. //订单资料表
  1735. const ddtableData = reactive([])
  1736. //技术附件
  1737. const jstableData = reactive([])
  1738. //点击订单资料行
  1739. const tableRowClick = async (row) => {
  1740. //清空尺寸列表、颜色资料、工艺资料、订单资料附件、技术附件
  1741. sizeDatas.length = 0
  1742. ystableData.splice(0, ystableData.length);
  1743. gytableData.splice(0, gytableData.length);
  1744. ddtableData.splice(0, ddtableData.length);
  1745. jstableData.splice(0, jstableData.length);
  1746. _Gd_gdbh.value = row.订单编号
  1747. _ddhval.value = row.订单编号
  1748. try {
  1749. //数据列表显示
  1750. const PrintListDatas = await PrintListData({order:_Gd_gdbh.value})
  1751. const jsOrderAttachments = await OrderAttachments({order:_Gd_gdbh.value,desc:'技术附件'})
  1752. const ddOrderAttachments = await OrderAttachments({order:_Gd_gdbh.value,desc:'订单资料附件'})
  1753. //颜色资料
  1754. if(PrintListDatas.data.列表.length === 0 ){
  1755. ystableData.length = 0
  1756. }else{
  1757. sizeDatas.splice(0,PrintListDatas.data.型号.length,...PrintListDatas.data.型号);//表格尺码投数据
  1758. ystableData.splice(0,PrintListDatas.data.列表.length,...PrintListDatas.data.列表);//表格数据
  1759. const newData = PrintListDatas.data.列表.map(item => ({
  1760. ...item,
  1761. 船样: item.船样 === 1 ? '是' : '否'
  1762. }));
  1763. ystableData.length = 0;
  1764. ystableData.push(...newData);
  1765. }
  1766. //技术附件
  1767. if(jsOrderAttachments.data === ''){
  1768. const WorkListdata = [];
  1769. jstableData.splice(0,jstableData.length,...WorkListdata);
  1770. }
  1771. if(jsOrderAttachments.code === 0 && ddOrderAttachments.code === 0){
  1772. jstableData.splice(0,jsOrderAttachments.data.length,...jsOrderAttachments.data);
  1773. ddtableData.splice(0,ddOrderAttachments.data.length,...ddOrderAttachments.data);
  1774. }
  1775. } catch (error) {
  1776. console.error(error);
  1777. }
  1778. }
  1779. //pdf
  1780. const showPdfModal = ref(false);
  1781. const pdfContainer = ref(null);
  1782. const closeModal = () => {
  1783. showPdfModal.value = false;
  1784. };
  1785. const fetchAndConvertFile = async () => {
  1786. try {
  1787. // 从后端获取 Base64 编码的 XLSX 文件数据
  1788. const responses = await OrderAttachments({order:_Gd_gdbh.value,desc:'技术附件'});
  1789. const response= responses.data[0].附件内容
  1790. const base64Data = response.match(/base64,(.*)$/)?.[1];
  1791. if (!base64Data) {
  1792. throw new Error('Invalid Base64 data');
  1793. }
  1794. const binaryString = atob(base64Data);
  1795. const binaryLen = binaryString.length;
  1796. const bytes = new Uint8Array(binaryLen);
  1797. for (let i = 0; i < binaryLen; i++) {
  1798. bytes[i] = binaryString.charCodeAt(i);
  1799. }
  1800. // 解析 XLSX 文件
  1801. const workbook = XLSX.read(bytes, { type: 'array' });
  1802. const worksheet = workbook.Sheets[workbook.SheetNames[0]];
  1803. console.log(121212,worksheet)
  1804. const jsonData = XLSX.utils.sheet_to_json(worksheet);
  1805. let base64 = XLSX.write(worksheet, { type: 'base64' });
  1806. generatePdf(base64);
  1807. } catch (error) {
  1808. console.error('Error fetching and converting file:', error);
  1809. }
  1810. };
  1811. const generatePdf = (data) => {
  1812. // let yPosition = 10;
  1813. // data.forEach((row) => {
  1814. // const doc = new jsPDF();
  1815. // doc.text(10, yPosition, JSON.stringify(row));
  1816. // yPosition += 10;
  1817. // });
  1818. // const pdfBlob = doc.output('blob');
  1819. // previewPdf(pdfBlob);
  1820. // downloadPdf(pdfBlob);
  1821. console/log('pdf data', data)
  1822. const pdfDoc = new jsPDF()
  1823. pdfDoc.text(data)
  1824. pdfDoc.save(a4.pdf)
  1825. };
  1826. const previewPdf = (blob) => {
  1827. const fileURL = URL.createObjectURL(blob);
  1828. // 通过 ref 引用 pdfContainer 来在指定容器中显示 PDF
  1829. const iframe = document.createElement('iframe');
  1830. iframe.src = fileURL;
  1831. iframe.width = '100%';
  1832. iframe.height = '600px';
  1833. if (pdfContainer.value) {
  1834. pdfContainer.value.innerHTML = ''; // 清空之前的内容
  1835. pdfContainer.value.appendChild(iframe);
  1836. }
  1837. };
  1838. //表格复选框
  1839. const table_del = ref(true)//删除订单资料
  1840. const table_Selection = ref('')//存储选中Uniqid
  1841. const ddzlSelectionChange = (selection, type) => {
  1842. const ids = selection.map(item => {
  1843. return item.Uniqid
  1844. })
  1845. table_Selection.value = ids.join(',')
  1846. console.log(table_Selection.value)
  1847. }
  1848. //删除按钮
  1849. const del_ddzlClick = async () => {
  1850. console.log(table_Selection._value)
  1851. let params = {};
  1852. params.Uniqid = table_Selection._value;
  1853. console.log(params)
  1854. const res1 = await orderDataDel(params)
  1855. res1.code === 0 && ElMessage.success('删除成功')
  1856. const WorkListdata = await WorkOrderList({search:_Gd_khdh.value,page:"1",limit:"10"});
  1857. tableData.value= WorkListdata.data.data
  1858. ystableData.splice(0, ystableData.length);//颜色资料清空
  1859. gytableData.splice(0, gytableData.length);//工艺资料情空
  1860. ddtableData.splice(0, ddtableData.length);//订单资料附件清空
  1861. jstableData.splice(0, jstableData.length);//技术附件清空
  1862. }
  1863. const delall = ref(true)
  1864. //颜色复选框
  1865. const ysSelection = ref('')
  1866. //工艺复选框
  1867. const gySelection = ref('')
  1868. // 颜色资料多选、工艺资料多选
  1869. const selectionChange = (selection, type) => {
  1870. console.log(selection)
  1871. const ids = selection.map(item => {
  1872. if(type === '颜色资料'){
  1873. return type === '颜色资料' ? item.Uniqid: item.Uniqid
  1874. }
  1875. if(type === '工艺资料'){
  1876. return type === '工艺资料' ? item.Uniqid: item.Uniqid
  1877. }
  1878. })
  1879. if (type === '颜色资料') {
  1880. ysSelection.value = ids.join(',')
  1881. }
  1882. if (type === '工艺资料') {
  1883. gySelection.value = ids.join(',')
  1884. }
  1885. }
  1886. // ===========删除颜色资料、工艺资料 ===========
  1887. const delgd_delclick = async () => {
  1888. if (ysSelection.value !== '') {
  1889. try {
  1890. const res1 = await PrintDetailDel({UniqId: ysSelection.value})
  1891. res1.code === 0 && ElMessage.success('颜色资料删除成功')
  1892. } catch(err) {
  1893. ElMessage.error(err)
  1894. }
  1895. }
  1896. if (gySelection.value !== ''){
  1897. try {
  1898. const res2 = await PrintDetailDel({UniqId: gySelection.value})
  1899. if(res2.code === 0){
  1900. ElMessage.success('工艺资料删除成功')
  1901. const PrintListDatas = await PrintListData({order:_Gd_gdbh.value})
  1902. sizeDatas.splice(0,PrintListDatas.data.型号.length,...PrintListDatas.data.型号);
  1903. ystableData.splice(0,PrintListDatas.data.列表.length,...PrintListDatas.data.列表);
  1904. }else{
  1905. console.log('?')
  1906. }
  1907. } catch(err) {
  1908. ElMessage.error(err)
  1909. }
  1910. }
  1911. }
  1912. const fj_Selection = ref('')//存储选中Uniqid
  1913. const fjSelection = ref('')
  1914. const fjdelall = ref(true)
  1915. const fjSelectionChange = (selection, type) => {
  1916. console.log(selection)
  1917. const ids = selection.map(item => {
  1918. return item.UniqId
  1919. })
  1920. fj_Selection.value = ids.join(',')
  1921. console.log("附件复选框",fj_Selection.value)
  1922. }
  1923. // //删除附件按钮
  1924. const fj_delclick = async () => {
  1925. console.log(fj_Selection._value)
  1926. let params = {};
  1927. params.UniqId = fj_Selection._value;
  1928. console.log(params)
  1929. // const res1 = await orderDataDel(params)
  1930. res1.code === 0 && ElMessage.success('删除成功')
  1931. }
  1932. //合计
  1933. const getSummaries = (param) => {
  1934. const { columns, data } = param;
  1935. const sums = {};
  1936. //选择你希望合计的列
  1937. const summableLabels = [...sizeDatas, "制单总数"];
  1938. columns.forEach((column, index) => {
  1939. if (index === 1) {
  1940. sums[index] = '总数量合计';
  1941. return;
  1942. }
  1943. if (summableLabels.includes(column.label)) {
  1944. const values = data.map(item => Number(item[column.property]));
  1945. // 检查数组中是否所有值都是 NaN
  1946. if (!values.every(value => isNaN(value))) {
  1947. sums[index] = values.reduce((prev, curr) => {
  1948. const value = Number(curr);
  1949. if (!isNaN(value)) {
  1950. return prev + value;
  1951. }
  1952. return prev;
  1953. }, 0);
  1954. // 如果需要,可以在这里添加单位
  1955. // sums[index] += ' 件';
  1956. } else {
  1957. sums[index] = 'N/A';
  1958. }
  1959. }
  1960. });
  1961. return sums;
  1962. };
  1963. //=========查询========
  1964. const searchInfo = ref('')
  1965. //查询按钮
  1966. const onSubmit = async () => {
  1967. if(searchInfo.value === ''){
  1968. ElMessage({type: 'warning',message: '请输入搜索的订单编号'})
  1969. return false;
  1970. }else{
  1971. const WorkListdata = await WorkOrderList({search:searchInfo.value,page:"1",limit:"1"});
  1972. tableData.value= WorkListdata.data.data
  1973. ystableData.splice(0, ystableData.length);//颜色资料清空
  1974. gytableData.splice(0, gytableData.length);//工艺资料情空
  1975. ddtableData.splice(0, ddtableData.length);//订单资料附件清空
  1976. jstableData.splice(0, jstableData.length);//技术附件清空
  1977. }
  1978. };
  1979. // 调用查询数据接口
  1980. const _cha_WorkList = async (node) => {
  1981. if(searchInfo.value === ''){
  1982. ElMessage({type: 'warning',message: '请输入搜索的信息'})
  1983. return false;
  1984. }
  1985. const search = searchInfo.value;
  1986. var regex = /^[a-zA-Z0-9]+$/;
  1987. try {
  1988. if (regex.test(search)) {
  1989. // 符合条件,执行搜索操作
  1990. console.log('搜索内容为纯数字加字母');
  1991. // const WorkListdata = await WorkList({search:search,limit:100,page:1});//接口调用函数
  1992. if(WorkListdata.data.total === 0){
  1993. ElMessage({type: 'warning',message: '未搜索具体查询条件'})
  1994. }
  1995. tableData.splice(0,tableData.length,...WorkListdata.data.data);//表格数据
  1996. total.value = WorkListdata.data.total;//共多少条
  1997. } else {
  1998. // 不符合条件,给出提示
  1999. console.log('搜索内容包含非字母和数字的字符');
  2000. // const WorkListdata = await WorkList({Gd_khdh:'',search:search,limit:100,page:1});//接口调用函数
  2001. if(WorkListdata.data.total === 0){
  2002. ElMessage({type: 'warning',message: '未搜索具体查询条件'})
  2003. }
  2004. tableData.splice(0,tableData.length,...WorkListdata.data.data);//表格数据
  2005. total.value = WorkListdata.data.total;//共多少条
  2006. }
  2007. } catch (error) {
  2008. console.error(error);
  2009. }
  2010. };
  2011. //===============附件上传===============
  2012. //附件上传按钮
  2013. const jsfjClick = () => {
  2014. if(_Gd_gdbh.value === '' || _Gd_gdbh.value === null){
  2015. ElMessage({type: 'warning',message: '请选择具体的工单后,再操作此功能'})
  2016. }else{
  2017. jsfjdialogFormVisible.value = true
  2018. initJsfjformdata();
  2019. jsfjformdata.value.关联编号 = _Gd_gdbh.value
  2020. }
  2021. }
  2022. //技术附件弹窗
  2023. const jsfjdialogFormVisible = ref(false)
  2024. const jsfjformdata = ref({
  2025. sys_id: _username.value,
  2026. 附件备注: '',
  2027. 附件内容: '',
  2028. 附件类型: '',
  2029. 关联编号: '',
  2030. });
  2031. //技术附件弹窗取消
  2032. const initJsfjformdata = () => {
  2033. jsfjformdata.value = {
  2034. sys_id: _username.value,
  2035. 附件备注: '',
  2036. 附件内容: '',
  2037. 附件类型: '',
  2038. 关联编号: '',
  2039. }
  2040. }
  2041. //技术附件弹窗取消
  2042. const jsfjcloseDialog = () => {
  2043. jsfjdialogFormVisible.value = false
  2044. }
  2045. const uploadExcel = (event) =>{
  2046. const files = event.target.files;
  2047. let suffixArr = name.split("."), suffix = suffixArr[suffixArr.length-1];
  2048. jsfjformdata.value.附件内容 = files[0]
  2049. jsfjformdata.value.附件类型 = 'XLSX'
  2050. }
  2051. //技术附件预览
  2052. const yulan = (event) =>{
  2053. if(!jsfjformdata.value.附件内容) return
  2054. $.getScript('/luckysheet/plugins/js/plugin.js', () => {
  2055. $script('/luckysheet/luckysheet.umd.js', () => {
  2056. luckyexcelVisible.value = true
  2057. LuckyExcel.transformExcelToLucky(jsfjformdata.value.附件内容, function(exportJson, luckysheetfile){
  2058. console.log('jsfjformdata.value.附件内容', jsfjformdata.value.附件内容)
  2059. if(exportJson.sheets==null || exportJson.sheets.length==0){
  2060. alert("Failed to read the content of the excel file, currently does not support xls files!");
  2061. return;
  2062. }
  2063. if(luckyExcel) luckyExcel.destroy();
  2064. luckysheet.create({
  2065. container: 'luckyexcel', //容器的ID
  2066. data: exportJson.sheets,
  2067. title: exportJson.info.name, // 工作簿名称
  2068. lang: "zh", // 设定表格语言 国际化设置,允许设置表格的语言,支持中文("zh")和英文("en")
  2069. showtoolbar: false, // 是否显示工具栏
  2070. showinfobar: false, // 是否显示顶部信息栏
  2071. allowEdit: false, // 是否允许前台编辑
  2072. enableAddRow: false, // 允许增加行
  2073. enableAddCol: false, // 允许增加列
  2074. userInfo: false, // 右上角的用户信息展示样式
  2075. showRowBar: false, // 是否显示行号区域
  2076. showColumnBar: false, // 是否显示列号区域
  2077. sheetFormulaBar: false, // 是否显示公式栏
  2078. enableAddBackTop: false,//返回头部按钮
  2079. });
  2080. luckyExcel = luckysheet;
  2081. })
  2082. })
  2083. })
  2084. $('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', '/luckysheet/plugins/css/pluginsCss.css'));
  2085. $('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', '/luckysheet/plugins/plugins.css'));
  2086. $('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', '/luckysheet/css/luckysheet.css'));
  2087. $('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', '/luckysheet/assets/iconfont/iconfont.css'));
  2088. }
  2089. const jsfj_del = (row) =>{
  2090. ElMessageBox.confirm('确定要删除吗?', '提示', {
  2091. confirmButtonText: '确定',
  2092. cancelButtonText: '取消',
  2093. type: 'warning'
  2094. }).then(() => {
  2095. gdAnnexDel({'UniqId':row.UniqId,'gdbh':_Gd_gdbh.value}).then(response => {
  2096. if(response.code==0){
  2097. ElMessage({
  2098. type: 'success',
  2099. message: '删除成功',
  2100. })
  2101. let row = {
  2102. '订单编号':_Gd_gdbh.value,
  2103. // '产品代号':_Gd_cpdh.value,
  2104. // '产品名称':_Gd_cpmc.value,
  2105. }
  2106. tableRowClick (row)
  2107. }
  2108. })
  2109. })
  2110. }
  2111. //技术附件弹窗确定
  2112. const jsfjenterDialog = () => {
  2113. if(jsfjformdata.value.附件备注==''){
  2114. ElMessage({
  2115. type: 'error',
  2116. message: '请填写附件备注'
  2117. });
  2118. return;
  2119. }
  2120. if(jsfjformdata.value.附件内容==''){
  2121. ElMessage({
  2122. type: 'error',
  2123. message: '请上传文件'
  2124. });
  2125. return;
  2126. }
  2127. if(jsfjformdata.value.关联编号==''){
  2128. ElMessage({
  2129. type: 'error',
  2130. message: '请填写关联编号'
  2131. });
  2132. return;
  2133. }
  2134. let fr = new FileReader();
  2135. fr.readAsDataURL(jsfjformdata.value.附件内容);
  2136. fr.onload = function () {
  2137. const restoredData = new FormData();
  2138. restoredData.append('sys_id', jsfjformdata.value.sys_id);
  2139. restoredData.append('附件备注', jsfjformdata.value.附件备注);
  2140. restoredData.append('附件内容', fr.result);
  2141. restoredData.append('附件类型', jsfjformdata.value.附件类型);
  2142. restoredData.append('关联编号', jsfjformdata.value.关联编号);
  2143. //将restoredDta数据新增到接口
  2144. gdAnnexAdd(restoredData).then(response => {
  2145. if(response.code==0){
  2146. ElMessage({
  2147. type: 'success',
  2148. message: '新增成功',
  2149. })
  2150. jsfjdialogFormVisible.value = false
  2151. let row = {
  2152. '订单编号':_Gd_gdbh.value,
  2153. // '产品代号':_Gd_cpdh.value,
  2154. // '产品名称':_Gd_cpmc.value,
  2155. }
  2156. tableRowClick (row)
  2157. }
  2158. })
  2159. }
  2160. }
  2161. //订单资料附件 - 预览
  2162. const gdbomupdateCompanyFunc = (row) => {
  2163. // 加载插件和样式
  2164. const loadScriptsAndStyles = () => {
  2165. // 加载插件脚本
  2166. $.getScript('/luckysheet/plugins/js/plugin.js', () => {
  2167. $script('/luckysheet/luckysheet.umd.js', () => {
  2168. initializeLuckysheet(); // 加载完成后初始化 Luckysheet
  2169. });
  2170. });
  2171. // 定义样式文件路径
  2172. const styles = [
  2173. '/luckysheet/plugins/css/pluginsCss.css',
  2174. '/luckysheet/plugins/plugins.css',
  2175. '/luckysheet/css/luckysheet.css',
  2176. '/luckysheet/assets/iconfont/iconfont.css'
  2177. ];
  2178. // 添加样式文件到页面
  2179. styles.forEach(style => {
  2180. $('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', style));
  2181. });
  2182. };
  2183. // 初始化 Luckysheet
  2184. const initializeLuckysheet = () => {
  2185. const callback = (exportJson, luckysheetfile) => {
  2186. if (!exportJson.sheets || exportJson.sheets.length === 0) {
  2187. alert("无法读取Excel文件内容,目前不支持xls文件格式!");
  2188. return;
  2189. }
  2190. if (luckyExcel) luckyExcel.destroy(); // 销毁之前的实例
  2191. luckysheet.create({
  2192. container: 'luckyexcel',
  2193. data: exportJson.sheets,
  2194. title: exportJson.info.name,
  2195. lang: "zh",
  2196. showtoolbar: false,
  2197. showinfobar: false,
  2198. allowEdit: false,
  2199. enableAddRow: false,
  2200. enableAddCol: false,
  2201. userInfo: false,
  2202. showRowBar: false,
  2203. showColumnBar: false,
  2204. sheetFormulaBar: false,
  2205. enableAddBackTop: false,
  2206. });
  2207. luckyExcel = luckysheet; // 存储实例
  2208. };
  2209. if (row['url'] === null || row['url'] === '') {
  2210. // 转换Base64数据为Blob对象
  2211. const blob = dataURLtoBlob(row.附件内容);
  2212. luckyexcelVisible.value = true; // 控制页面展示
  2213. LuckyExcel.transformExcelToLucky(blob, callback);
  2214. } else {
  2215. // 文件路径处理
  2216. const excelPath = `/${row.url.replace(/\\/g, "/")}`;
  2217. const excelName = excelPath.split('/').pop();
  2218. luckyexcelVisible.value = true;
  2219. LuckyExcel.transformExcelToLuckyByUrl(excelPath, excelName, callback);
  2220. }
  2221. };
  2222. // 将Data URL转换为Blob对象
  2223. const dataURLtoBlob = (dataUrl) => {
  2224. const byteString = atob(dataUrl.split(',')[1]);
  2225. const ab = new ArrayBuffer(byteString.length);
  2226. const ia = new Uint8Array(ab);
  2227. for (let i = 0; i < byteString.length; i++) {
  2228. ia[i] = byteString.charCodeAt(i);
  2229. }
  2230. return new Blob([ab], { type: 'application/octet-stream' });
  2231. };
  2232. loadScriptsAndStyles(); // 开始加载插件和样式
  2233. };
  2234. // const gdbomupdateCompanyFunc = (row) => {
  2235. // // 加载插件和样式
  2236. // const loadScriptsAndStyles = () => {
  2237. // $.getScript('/luckysheet/plugins/js/plugin.js', () => {
  2238. // $script('/luckysheet/luckysheet.umd.js', () => {
  2239. // initializeLuckysheet();
  2240. // });
  2241. // });
  2242. // const styles = [
  2243. // '/luckysheet/plugins/css/pluginsCss.css',
  2244. // '/luckysheet/plugins/plugins.css',
  2245. // '/luckysheet/css/luckysheet.css',
  2246. // '/luckysheet/assets/iconfont/iconfont.css'
  2247. // ];
  2248. // styles.forEach(style => {
  2249. // $('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', style));
  2250. // });
  2251. // };
  2252. // // 初始化 Luckysheet
  2253. // const initializeLuckysheet = () => {
  2254. // const callback = (exportJson, luckysheetfile) => {
  2255. // if (!exportJson.sheets || exportJson.sheets.length === 0) {
  2256. // alert("Failed to read the content of the excel file, currently does not support xls files!");
  2257. // return;
  2258. // }
  2259. // if (luckyExcel) luckyExcel.destroy();
  2260. // luckysheet.create({
  2261. // container: 'luckyexcel',
  2262. // data: exportJson.sheets,
  2263. // title: exportJson.info.name,
  2264. // lang: "zh",
  2265. // showtoolbar: false,
  2266. // showinfobar: false,
  2267. // allowEdit: false,
  2268. // enableAddRow: false,
  2269. // enableAddCol: false,
  2270. // userInfo: false,
  2271. // showRowBar: false,
  2272. // showColumnBar: false,
  2273. // sheetFormulaBar: false,
  2274. // enableAddBackTop: false,
  2275. // });
  2276. // luckyExcel = luckysheet;
  2277. // };
  2278. // if (row['url'] === null || row['url'] === '') {
  2279. // const blob = dataURLtoBlob(row.附件内容);
  2280. // luckyexcelVisible.value = true;
  2281. // LuckyExcel.transformExcelToLucky(blob, callback);
  2282. // } else {
  2283. // const excelPath = `/${row.url.replace(/\\/g, "/")}`;
  2284. // const excelName = excelPath.split('/').pop();
  2285. // luckyexcelVisible.value = true;
  2286. // LuckyExcel.transformExcelToLuckyByUrl(excelPath, excelName, callback);
  2287. // }
  2288. // };
  2289. // // Data URL 转 Blob
  2290. // const dataURLtoBlob = (dataUrl) => {
  2291. // const byteString = atob(dataUrl.split(',')[1]);
  2292. // const ab = new ArrayBuffer(byteString.length);
  2293. // const ia = new Uint8Array(ab);
  2294. // for (let i = 0; i < byteString.length; i++) {
  2295. // ia[i] = byteString.charCodeAt(i);
  2296. // }
  2297. // return new Blob([ab], { type: 'application/octet-stream' });
  2298. // };
  2299. // loadScriptsAndStyles();
  2300. // };
  2301. //技术资料excel展示
  2302. const ExcelShow = (row) =>{
  2303. // 加载插件和样式
  2304. const loadScriptsAndStyles = () => {
  2305. $.getScript('/luckysheet/plugins/js/plugin.js', () => {
  2306. $script('/luckysheet/luckysheet.umd.js', () => {
  2307. initializeLuckysheet();
  2308. });
  2309. });
  2310. const styles = [
  2311. '/luckysheet/plugins/css/pluginsCss.css',
  2312. '/luckysheet/plugins/plugins.css',
  2313. '/luckysheet/css/luckysheet.css',
  2314. '/luckysheet/assets/iconfont/iconfont.css'
  2315. ];
  2316. styles.forEach(style => {
  2317. $('head').append($('<link rel="stylesheet" type="text/css" />').attr('href', style));
  2318. });
  2319. };
  2320. // 初始化 Luckysheet
  2321. const initializeLuckysheet = () => {
  2322. const callback = (exportJson, luckysheetfile) => {
  2323. if (!exportJson.sheets || exportJson.sheets.length === 0) {
  2324. alert("Failed to read the content of the excel file, currently does not support xls files!");
  2325. return;
  2326. }
  2327. if (luckyExcel) luckyExcel.destroy();
  2328. luckysheet.create({
  2329. container: 'luckyexcel',
  2330. data: exportJson.sheets,
  2331. title: exportJson.info.name,
  2332. lang: "zh",
  2333. showtoolbar: false,
  2334. showinfobar: false,
  2335. allowEdit: false,
  2336. enableAddRow: false,
  2337. enableAddCol: false,
  2338. userInfo: false,
  2339. showRowBar: false,
  2340. showColumnBar: false,
  2341. sheetFormulaBar: false,
  2342. enableAddBackTop: false,
  2343. });
  2344. luckyExcel = luckysheet;
  2345. };
  2346. if (row['url'] === null || row['url'] === '') {
  2347. const blob = dataURLtoBlob(row.附件内容);
  2348. luckyexcelVisible.value = true;
  2349. LuckyExcel.transformExcelToLucky(blob, callback);
  2350. } else {
  2351. const excelPath = `/${row.url.replace(/\\/g, "/")}`;
  2352. const excelName = excelPath.split('/').pop();
  2353. luckyexcelVisible.value = true;
  2354. LuckyExcel.transformExcelToLuckyByUrl(excelPath, excelName, callback);
  2355. }
  2356. };
  2357. // Data URL 转 Blob
  2358. const dataURLtoBlob = (dataUrl) => {
  2359. const byteString = atob(dataUrl.split(',')[1]);
  2360. const ab = new ArrayBuffer(byteString.length);
  2361. const ia = new Uint8Array(ab);
  2362. for (let i = 0; i < byteString.length; i++) {
  2363. ia[i] = byteString.charCodeAt(i);
  2364. }
  2365. return new Blob([ab], { type: 'application/octet-stream' });
  2366. };
  2367. loadScriptsAndStyles();
  2368. }
  2369. let luckyExcel = null
  2370. const luckyexcelVisible = ref(false)
  2371. const luckyexcelCloseDialog = () => {
  2372. luckyexcelVisible.value = false
  2373. }
  2374. </script>
  2375. <style scoped>
  2376. /* 在样式表中使用媒体查询 */
  2377. @media (max-width: 768px) {
  2378. /* 在小屏幕下的样式设置 */
  2379. .dialog-footer {
  2380. text-align: center;
  2381. }
  2382. }
  2383. /*背景颜色*/
  2384. /*印件背景颜色变黄*/
  2385. :deep(.el-table__body .warning-row) {
  2386. background: #FFFF80 !important;
  2387. }
  2388. /*修正工单核算参数背景*/
  2389. :deep(.el-table__body .background-plan-usage-low div div div) {
  2390. background: #80FA80 !important;
  2391. }
  2392. /* 选中某行时的背景色 */
  2393. :deep(.el-table__body tr.current-row) > td {
  2394. background: #ff80ff !important;
  2395. }
  2396. :deep(.statusy-plan-usage-low div) {
  2397. color: #8c939d !important;
  2398. }
  2399. /* 在样式表中添加以下样式 */
  2400. .el-input__textarea {
  2401. resize: none; /* 禁止调整大小 */
  2402. }
  2403. .JKWTree-container {
  2404. display: flex;
  2405. }
  2406. .JKWTree-tree {
  2407. /*width: 300px;*/
  2408. background-color: #fff;
  2409. padding: 10px;
  2410. margin-right: 20px;
  2411. }
  2412. .JKWTree-tree h3 {
  2413. font-size: 15px;
  2414. font-weight: 700;
  2415. margin: 10px 0;
  2416. }
  2417. .JKWTree-content {
  2418. flex: 1;
  2419. }
  2420. /*关闭拖拽功能*/
  2421. .el-textarea textarea {
  2422. resize: none !important;
  2423. }
  2424. </style>
  2425. <style scoped>
  2426. :deep(.el-table td .cell) {
  2427. line-height: 20px !important;
  2428. }
  2429. :deep(.el-tabs__header){
  2430. margin-bottom: 0;
  2431. }
  2432. .search{
  2433. margin-left: 0px !important;
  2434. margin-right: 10px !important;
  2435. }
  2436. .bt{
  2437. margin-left: 2px !important;
  2438. padding: 3px !important;
  2439. font-size: 12px;
  2440. }
  2441. .el-tabs__header{
  2442. margin: 0px !important;
  2443. }
  2444. .gva-table-box{
  2445. padding: 0px !important;
  2446. }
  2447. .el-pagination{
  2448. margin-top: 0px !important;
  2449. }
  2450. /* .upload-demo .el-upload {
  2451. border: 1px dashed #d9d9d9;
  2452. border-radius: 6px;
  2453. cursor: pointer;
  2454. position: relative;
  2455. overflow: hidden;
  2456. }
  2457. .upload-demo .el-upload:hover {
  2458. border-color: #409EFF;
  2459. } */
  2460. .mab{
  2461. margin-bottom: 5px;
  2462. }
  2463. ::v-deep(.input_style .el-input__inner) {
  2464. font-size: 18px;
  2465. }
  2466. ::v-deep(.el-form-item__label) {
  2467. font-size: 18px;
  2468. }
  2469. ::v-deep(.el-upload-list--picture-card) {
  2470. margin-left: 100px;
  2471. }
  2472. </style>