caiqiebaogong.vue 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283
  1. <template>
  2. <div>
  3. <layout>
  4. <layout-content >
  5. <div class="gva-table-box">
  6. <div style="display: flex; align-items: baseline; margin-bottom: 10px;">
  7. <h1 style="margin: 0;">{{_code}}完工报工</h1>
  8. </div>
  9. <el-row :gutter="10" style="align-items: center; margin-bottom: 20px;">
  10. <!-- 子订单编号输入框 -->
  11. <el-col :span="4" style="padding: 0px;margin: 0px;">
  12. <el-input v-model="add_searchInfo" placeholder="请扫描子订单编号条码"@keyup.enter="add_onSubmit" id="searchInput" style="width: 100%; height: 50px;"/>
  13. </el-col>
  14. <!-- 查询按钮 -->
  15. <el-col :span="1.5" style="padding: 0px;margin: 0px;">
  16. <el-button type="primary" icon="search" @click="add_onSubmit"style="height: 50px;width: 80px;">查询</el-button>
  17. </el-col>
  18. <el-col :span="1.5" style="padding: 0px;margin: 0px;">
  19. <el-text style="font-size: 30px;">机台号</el-text>
  20. </el-col>
  21. <!-- 机台号输入框 -->
  22. <el-col :span="2"><el-input v-model="add_formData['机台号']" readonly style="width: 100%; height: 40px;"/></el-col>
  23. <el-col :span="1.5" style="padding: 0px;margin: 0px;">
  24. <el-text style="font-size: 30px;">工序</el-text>
  25. </el-col>
  26. <!-- 工序输入框 -->
  27. <el-col :span="2"><el-input v-model="add_formData['工序']" readonly style="width: 100%; height: 40px;" /></el-col>
  28. <el-col :span="1.5" style="padding: 0px;margin: 0px;">
  29. <el-text style="font-size: 30px;">组别</el-text>
  30. </el-col>
  31. <!-- 组别输入框 -->
  32. <el-col :span="2"><el-input v-model="add_formData['组别']" readonly style="width: 100%; height: 40px;" /></el-col>
  33. <el-col :span="1.5" style="padding: 0px;margin: 0px;">
  34. <el-text style="font-size: 30px;">人员</el-text>
  35. </el-col>
  36. <!-- 人员输入框 -->
  37. <el-col :span="2"><el-input v-model="add_formData['人员']" readonly style="width: 100%; height: 40px;"/></el-col>
  38. </el-row>
  39. <el-row :gutter="0">
  40. <el-col :span="2.5">
  41. <el-text style="font-size: 24px; margin-left: 70px;">尺 码&nbsp;</el-text>
  42. </el-col>
  43. <el-col v-for="(item, index) in 10" :key="index" :span="1"
  44. :style="{
  45. padding: '0',
  46. margin:
  47. index < 1 ? '0px 0px 0px 0px':
  48. index < 2 ? '0px 0px 0px 0px':
  49. index < 3 ? '0px 0px 0px 0px':
  50. index < 4 ? '0px 20px 0px 0px':
  51. index < 5 ? '0px 27px 0px 0px':
  52. index < 6 ? '0px 30px 0px 0px':
  53. index < 7 ? '0px 30px 0px 0px':
  54. '0px 20px 0px 0px'
  55. }"
  56. >
  57. <el-input v-model="cmformdata[`cm${index + 1}`]" :id="`cm${index + 1}`" readonly
  58. :style="{
  59. width:
  60. index < 2 ? '70px' :
  61. index < 3 ? '73px' :
  62. index < 4 ? '90px' :
  63. '100px',
  64. height: '40px'
  65. }"
  66. />
  67. </el-col>
  68. <el-col :span="1"><el-input v-model="cmformdata.cmtotal" id="cmtotal" readonly style="width: 80px;height: 40px;" /></el-col>
  69. </el-row>
  70. <el-row :gutter="0">
  71. <el-col :span="2.5">
  72. <el-text style="font-size: 24px; margin-left: 53px;">制单数&nbsp;</el-text>
  73. </el-col>
  74. <el-col v-for="(item, index) in 10" :key="index" :span="1"
  75. :style="{
  76. padding: '0',
  77. margin:
  78. index < 1 ? '0px 0px 0px 0px':
  79. index < 2 ? '0px 0px 0px 0px':
  80. index < 3 ? '0px 0px 0px 0px':
  81. index < 4 ? '0px 20px 0px 0px':
  82. index < 5 ? '0px 27px 0px 0px':
  83. index < 6 ? '0px 30px 0px 0px':
  84. index < 7 ? '0px 30px 0px 0px':
  85. '0px 20px 0px 0px'
  86. }"
  87. >
  88. <el-input v-model="cmslformdata[`cmsl${index + 1}`]" :id="`cmsl${index + 1}`" readonly
  89. :style="{
  90. width:
  91. index < 2 ? '70px' :
  92. index < 3 ? '73px' :
  93. index < 4 ? '90px' :
  94. '100px',
  95. height: '40px'
  96. }"
  97. />
  98. </el-col>
  99. <el-col :span="1"><el-input v-model="cmslformdata.zdtotal" id="zdtotal" readonly style="width: 80px;height: 40px;" /></el-col>
  100. </el-row>
  101. <el-row :gutter="0">
  102. <el-col :span="2.5">
  103. <el-text style="font-size: 24px; margin-left: 12px;">新增实裁数</el-text>
  104. </el-col>
  105. <el-col v-for="(item, index) in 10" :key="index" :span="1"
  106. :style="{
  107. padding: '0',
  108. margin:
  109. index < 1 ? '0px 0px 0px 0px':
  110. index < 2 ? '0px 0px 0px 0px':
  111. index < 3 ? '0px 0px 0px 0px':
  112. index < 4 ? '0px 20px 0px 0px':
  113. index < 5 ? '0px 27px 0px 0px':
  114. index < 6 ? '0px 30px 0px 0px':
  115. index < 7 ? '0px 30px 0px 0px':
  116. '0px 20px 0px 0px'
  117. }"
  118. >
  119. <el-input v-model="scsformdata[`scs${index + 1}`]" :id="`scs${index + 1}`" @input="updateTotal"
  120. :style="{
  121. width:
  122. index < 2 ? '70px' :
  123. index < 3 ? '73px' :
  124. index < 4 ? '90px' :
  125. '100px',
  126. height: '40px'
  127. }"
  128. />
  129. </el-col>
  130. <el-col :span="1"><el-input v-model="scsformdata.sctotal" id="sctotal" readonly style="width: 80px;height: 40px;" /></el-col>
  131. </el-row>
  132. <el-main>
  133. <!-- 表格数据 -->
  134. <el-tabs v-model="activeName">
  135. <el-tab-pane label="报工历史记录" @click="showTable('报工历史记录')" name="first">
  136. <el-table ref="multipleTable" style="width: 100%;height: 52vh" tooltip-effect="dark"
  137. :row-style="{ height: '50px' }" :header-cell-style="{ padding: '5px', fontSize: '20px' }"
  138. :cell-style="{ padding: '10px', fontSize: '20px' }" :header-row-style="{ height: '20px' }"
  139. :data="bgjdhz_tableData" border row-key="ID"
  140. size="small"
  141. highlight-current-row="true" @row-dblclick="updateCompanyFunc"
  142. @row-click="tableRowClick" :show-overflow-tooltip="true"
  143. @selection-change="selectionChange">
  144. <el-table-column type="selection" width="60" />
  145. <el-table-column align="left" label="报工时间" prop="sys_rq" width="150"/>
  146. <el-table-column align="left" label="子订单编号" prop="子订单编号" width="130"/>
  147. <el-table-column align="left" label="生产款号" prop="款号" width="120"/>
  148. <el-table-column align="left" label="款式" prop="款式" width="100"/>
  149. <el-table-column align="left" label="组别" prop="sczl_jtbh" width="80"/>
  150. <el-table-column align="left" label="尺码" prop="尺码" width="70"/>
  151. <el-table-column align="left" label="实裁数量" prop="数量" width="100"/>
  152. </el-table>
  153. </el-tab-pane>
  154. <el-tab-pane label="产量进度汇总记录" @click="showTable('产量进度汇总记录')" name="two">
  155. <el-table ref="multipleTable" style="width: 100%;height: 52vh" tooltip-effect="dark"
  156. :row-style="{ height: '50px' }" :header-cell-style="{ padding: '5px', fontSize: '20px' }"
  157. :cell-style="{ padding: '10px', fontSize: '20px' }" :header-row-style="{ height: '20px' }"
  158. :data="jdhz_tableData" border row-key="ID"
  159. size="small"
  160. show-summary :summary-method="getSummaries"
  161. highlight-current-row="true" @row-dblclick="updateCompanyFunc"
  162. @row-click="tableRowClick" :show-overflow-tooltip="true"
  163. @selection-change="handleSelectionChange">
  164. <el-table-column align="left" label="订单子编号" prop="子订单编号" width="130"/>
  165. <el-table-column align="left" label="款号" prop="款号" width="140" />
  166. <el-table-column align="left" label="色系名称" prop="颜色" width="100" />
  167. <el-table-column v-for="item in sizeDatas" :key="item" align="left" :label="item" :prop="item" width="60" :cell-style="cellStyle">
  168. <template v-slot="scope">
  169. <div style="width: 80px;" @click="handleSizeClick(scope.$index, item, scope.row)">
  170. {{ scope.row[item] }}
  171. </div>
  172. </template>
  173. </el-table-column>
  174. <el-table-column align="left" label="实裁总数" prop="裁剪数" width="90" />
  175. <!-- <el-table-column align="left" label="上报时间" prop="上报时间" width="160" /> -->
  176. </el-table>
  177. </el-tab-pane>
  178. <el-tab-pane label="订单资料附件" name="third">
  179. <el-table ref="multipleTable"
  180. :row-style="{ height: '30px' }"
  181. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '30px' }"
  182. :header-cell-style="{ padding: '0px' }"
  183. :show-overflow-tooltip="true"
  184. :cell-class-name="planUsageCellClass"
  185. highlight-current-row="true"
  186. @row-dblclick="gdbomupdateCompanyFunc"
  187. style="width: 100%;height: 36vh" border tooltip-effect="dark" :data="ddtableData" row-key="ID"
  188. @selection-change="fjSelectionChange">
  189. <el-table-column align="left" label="关联编号" prop="关联编号" width="115"/>
  190. <el-table-column align="left" label="备注" prop="附件备注" width="110"/>
  191. <el-table-column align="left" label="文件类型" prop="附件类型" width="100"/>
  192. <el-table-column align="left" label="建档时间" prop="sys_rq" width="160"/>
  193. <el-table-column align="left" label="建档用户" prop="sys_id" width="200"/>
  194. <el-table-column align="left" label="操作"width="100"fixed="right">
  195. <template #default="scope">
  196. <el-button type="success" size="small" :data="ddtableData" @click="showPdf(scope.row)" >PDF预览</el-button>
  197. </template>
  198. </el-table-column>
  199. </el-table>
  200. </el-tab-pane>
  201. <el-tab-pane label="技术附件" @click="showTable('技术附件')" name="fourth">
  202. <el-table ref="multipleTable"
  203. :row-style="{ height: '30px' }"
  204. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '30px' }"
  205. :header-cell-style="{ padding: '0px' }"
  206. :show-overflow-tooltip="true"
  207. :cell-class-name="planUsageCellClass"
  208. highlight-current-row="true"
  209. @row-dblclick="ExcelShow"
  210. style="width: 100%;height: 36vh" border tooltip-effect="dark" :data="jstableData" row-key="ID" @selection-change="fjSelectionChange">
  211. <el-table-column align="left" label="关联编号" prop="关联编号" width="115"/>
  212. <el-table-column align="left" label="备注" prop="附件备注" width="110"/>
  213. <el-table-column align="left" label="文件类型" prop="附件类型" width="100"/>
  214. <el-table-column align="left" label="建档时间" prop="sys_rq" width="160"/>
  215. <el-table-column align="left" label="建档用户" prop="sys_id" width="200"/>
  216. <el-table-column align="left" label="操作"width="100"fixed="right">
  217. <template #default="scope">
  218. <el-button type="success" size="small" :data="ddtableData" @click="showPdf(scope.row)" >PDF预览</el-button>
  219. </template>
  220. </el-table-column>
  221. </el-table>
  222. </el-tab-pane>
  223. </el-tabs>
  224. <el-button type="danger" icon="delete" @click="del_delclick"
  225. v-if="delall === true" :disabled="Selection === ''"
  226. :style="{
  227. backgroundColor: Selection === '' ? '' : 'red',
  228. borderColor: Selection === '' ? '' : 'red',
  229. color: Selection === '' ? '' : '#fff'
  230. }"
  231. style="width: 150px; height: 40px; font-size: 20px; margin-left: 10px;">删除报工</el-button>
  232. <el-button type="primary" @click="cp_gdprintonClick" style="width: 150px; height: 40px; font-size: 20px; margin-left: 10px;" > 子订单详情页 </el-button>
  233. <el-button type="primary" @click="add_Dialog" style="width: 100px; height: 40px; font-size: 20px; margin-left: 10px;" >报工</el-button>
  234. <el-button type="primary" @click="return_Dialog" style="width: 100px; height: 40px; font-size: 20px; margin-left: 10px;" >退还</el-button>
  235. </el-main>
  236. </div>
  237. <!-- 是否订单尾包确认弹窗 -->
  238. <el-dialog v-model="DialogVisible" title="是否订单尾包" destroy-on-close width="30%" style="top: 20%;">
  239. <h3>请再次确认是否该订单产品已全部报工,该批为订单尾包?</h3>
  240. <div class="dialog-footer" style="text-align: right;">
  241. <el-button @click="confirmDialogVisible">取消</el-button>
  242. <el-button type="primary" @click="handleConfirm">确认</el-button>
  243. </div>
  244. </el-dialog>
  245. <!-- 退还 -->
  246. <el-dialog v-model="res_bomdialogFormVisible" :before-close="res_bomcloseDialog" title="报工退还" width="100%" top="2%" destroy-on-close>
  247. <div class="dialog-footer">
  248. <el-button @click="res_bomcloseDialog" style="height: 40px;font-size: 20px;">关 闭</el-button>
  249. <el-button type="primary" @click="res_bomenterDialog" style="height: 40px;font-size: 20px;">退 还</el-button>
  250. </div>
  251. <el-divider style="margin: 10px 0px 20px;" ><span style="font-size: 18px;color:red;font-weight: bold;margin-left: 20px;">绿色部分填写领用数量</span></el-divider>
  252. <el-descriptions class="margin-top" :column="4" :size="size" border>
  253. <el-descriptions-item label="订单编号" class="ddh">{{ ddhformData['ddh'] }}</el-descriptions-item>
  254. <el-descriptions-item label="客户">{{ ddhformData['kh'] }}</el-descriptions-item>
  255. <el-descriptions-item label="生产款号">{{ ddhformData['sckh'] }}</el-descriptions-item>
  256. <el-descriptions-item label="款式">{{ ddhformData['ks'] }}</el-descriptions-item>
  257. </el-descriptions>
  258. <div>
  259. <el-table ref="paichengRef"
  260. :show-overflow-tooltip="true"
  261. highlight-current-row="true"
  262. :row-style="{ height: '0px' }"
  263. :cell-style="{ padding: '0px' }" :header-row-style="{ height: '0px' }"
  264. :header-cell-style="{ padding: '0px' }"
  265. style="width: 100%;height: 60vh" border tooltip-effect="dark"
  266. :data="resbomtableData" row-key="ID"
  267. :cell-class-name="scfjfpxsCellClass">
  268. <template v-for="(item, idx) in resbom_tableColumns">
  269. <el-table-column #default="{ row, column, $index }" align="left" :label="item.label" :width="item.width" >
  270. <div v-if="['退还'].includes(item.prop)">
  271. <el-input v-model="row[item.prop]" :clearable="false"
  272. :id="`input${idx}${$index}`" @keyup="resbom_handleKeyDown($event, idx, $index, item.prop)"/>
  273. </div>
  274. <div v-else>{{ row[item.prop] }}</div>
  275. </el-table-column>
  276. </template>
  277. </el-table>
  278. </div>
  279. </el-dialog>
  280. </layout-content>
  281. </layout>
  282. <SubOrderPage ref="SubOrderPageRef" />
  283. <PrintPage ref="printPageRef" />
  284. <!-- 子订单详情页 -->
  285. <luckyexcelPage ref="luckyexcelPageRef" />
  286. </div>
  287. </template>
  288. <script>
  289. export default {
  290. data() {
  291. return {
  292. currentTable: '', // 当前展示的表格
  293. activeName: 'first',
  294. dialogFormVisible: false,
  295. formDataTest: {
  296. imageUrl: '' // 添加一个字段来保存上传的图片路径
  297. },
  298. rule: {} // 初始化rule对象
  299. };
  300. },
  301. methods: {
  302. handleKeyDown(event, prevId, currentId, nextId) {
  303. const currentElement = document.getElementById(currentId);
  304. const isEmpty = currentElement.value === '';
  305. const atStart = currentElement.selectionStart === 0;
  306. const atEnd = currentElement.selectionStart === currentElement.value.length;
  307. switch (event.keyCode) {
  308. case 13: // Enter
  309. case 40: // 向下箭头
  310. if (nextId) {
  311. document.getElementById(nextId).focus();
  312. }
  313. break;
  314. case 38: // 向上箭头
  315. if (prevId) {
  316. document.getElementById(prevId).focus();
  317. }
  318. break;
  319. case 8: // 删除键
  320. if (prevId && (isEmpty || atStart)) {
  321. document.getElementById(prevId).focus();
  322. }
  323. break;
  324. case 37: // 向左箭头
  325. if (prevId && atStart) {
  326. document.getElementById(prevId).focus();
  327. }
  328. break;
  329. case 39: // 向右箭头
  330. if (nextId && atEnd) {
  331. document.getElementById(nextId).focus();
  332. }
  333. break;
  334. default:
  335. break;
  336. }
  337. },
  338. },
  339. };
  340. </script>
  341. <script setup>
  342. // 全量引入格式化工具 请按需保留
  343. import $script from 'scriptjs'
  344. import $ from 'jquery';
  345. import LuckyExcel from 'luckyexcel';
  346. import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
  347. import {ref, reactive} from 'vue';
  348. import {getSpotList,getInfo,OrderAttachments,getTabByGdbh,search,spotcheckdel,SubWorkOrderStatusList,Mabaolist,orderBomList,outReport,OutOrderSearch} from '@/api/mes/job';
  349. import {getMachineMac} from '@/api/jixiaoguanli/jitairibaobiao'
  350. import {getMac} from '@/api/jixiaoguanli/baogong'
  351. import {ElMessage,ElMessageBox} from "element-plus";
  352. import PrintPage from '../yunyin/shengchanguanli/components/print.vue';
  353. import luckyexcelPage from '../yunyin/shengchanguanli/components/luckyexcel.vue';
  354. import SubOrderPage from '../yunyin/shengchanguanli/components/SubOrder.vue';
  355. import { useUserStore } from '@/pinia/modules/user';
  356. defineOptions({name: 'Company'})
  357. const path = `${import.meta.env.VITE_BASE_PATH}:${import.meta.env.VITE_UPLOADS_PORT}`
  358. console.log(path)
  359. //定义跳转页面
  360. const SubOrderPageRef = ref()//子订单详情页
  361. const printPageRef = ref()//打印预览
  362. const luckyexcelPageRef = ref()//pdf预览
  363. //获取登录用户信息
  364. const userStore = useUserStore()
  365. const _username = ref('')
  366. _username.value = userStore.userInfo.userName + '/' + userStore.userInfo.nickName
  367. console.log('获取用户名称',_username.value)
  368. //全局获取当前日期
  369. const today = new Date();
  370. const year = today.getFullYear();
  371. const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要补零
  372. const day = String(today.getDate()).padStart(2, '0');
  373. const hours = String(today.getHours()).padStart(2, '0');
  374. const minutes = String(today.getMinutes()).padStart(2, '0');
  375. const seconds = String(today.getSeconds()).padStart(2, '0');
  376. const currentDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  377. const currentDates = `${year}-${month}-${day}`;
  378. const add_searchInfo = ref('')
  379. //全局获取code,接口接收code
  380. const _code = '裁剪'
  381. //全局接口接受的物理地址
  382. const Machine = ref('')
  383. //全局获取UniqId
  384. const UniqId = ref('')
  385. //物理地址获取机台编号
  386. const getMachineMacdata = async () => {
  387. try {
  388. const data = await getMachineMac({sys_sbID:Machine.value});
  389. if (data.data === null) {
  390. // ElMessage({
  391. // type: 'error',
  392. // message: '未获取到机台编号请确认MAC地址或与管理员联系'
  393. // })
  394. add_formData['机台号'] = '测试机台'
  395. add_formData['工序'] = _code
  396. add_formData['组别'] = "测试"
  397. add_formData['人员'] = "测试"
  398. return;
  399. }
  400. add_formData['机台号'] = data.data['机台号']
  401. add_formData['工序'] = data.data['生产工序']
  402. add_formData['组别'] = data.data['组别']
  403. add_formData['人员'] = data.data['组长']
  404. setTimeout(() => {
  405. const inputElement = document.getElementById('searchInput');
  406. if (inputElement) {
  407. inputElement.focus();
  408. }
  409. }, 100); // 延迟100毫秒
  410. } catch (error) {
  411. console.error(error)
  412. }
  413. }
  414. //自动获取物理地址
  415. const GetAddr = () => {
  416. var xmlhttp = null;
  417. var res;
  418. if (window.XMLHttpRequest) {
  419. xmlhttp = new XMLHttpRequest();
  420. } else if (window.ActiveXObject) {
  421. xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  422. }
  423. // 2. 设置回调函数
  424. xmlhttp.onreadystatechange = function() {
  425. if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  426. res = eval('('+xmlhttp.response+')');
  427. let result = ''
  428. for (let i = 0; i < res.macAddress.length; i++) {
  429. if (i % 2 === 0 && i !== 0) {
  430. result += '-' // 根据实际需求修改分隔符
  431. }
  432. result += res.macAddress[i]
  433. }
  434. Machine.value = result
  435. getMachineMacdata(Machine.value)
  436. }
  437. }
  438. // 3. 打开一个连接
  439. xmlhttp.open("get", "http://127.0.0.1:8090/init")
  440. // 5. 发送
  441. xmlhttp.send();
  442. }
  443. // getMachineMacdata();
  444. GetAddr()
  445. // PDF预览
  446. const showPdf = async (row) => {
  447. luckyexcelPageRef.value.open(row)
  448. }
  449. const add_formData = reactive({
  450. 机台号: '',
  451. 工序: '',
  452. 组别: '',
  453. 人员: '',
  454. 尺码: '',
  455. 数量: '',
  456. 是否订单尾包: '',
  457. });
  458. //清空对象的属性值
  459. const gd_clearFormData = () => {
  460. Object.keys(add_formData).forEach(key => {
  461. add_formData[key] = '';
  462. });
  463. };
  464. // 尺码
  465. const cmformdata = reactive({
  466. cm1:'',
  467. cm2:'',
  468. cm3:'',
  469. cm4:'',
  470. cm5:'',
  471. cm6:'',
  472. cm7:'',
  473. cm8:'',
  474. cm9:'',
  475. cm10:'',
  476. cm11:'',
  477. cm12:'',
  478. cmtotal:'合计',
  479. });
  480. // 制单数
  481. const cmslformdata = reactive({
  482. cmsl1: '',
  483. cmsl2: '',
  484. cmsl3: '',
  485. cmsl4: '',
  486. cmsl5: '',
  487. cmsl6: '',
  488. cmsl7: '',
  489. cmsl8: '',
  490. cmsl9: '',
  491. cmsl10: '',
  492. zdtotal: ''
  493. });
  494. // 实裁数
  495. const scsformdata = reactive({
  496. scs1:'',
  497. scs2:'',
  498. scs3:'',
  499. scs4:'',
  500. scs5:'',
  501. scs6:'',
  502. scs7:'',
  503. scs8:'',
  504. scs9:'',
  505. scs10:'',
  506. sctotal:'',
  507. });
  508. //实裁相加
  509. function updateTotal() {
  510. // 直接指定要累加的属性名
  511. const relevantKeys = ['scs1', 'scs2', 'scs3', 'scs4', 'scs5', 'scs6', 'scs7', 'scs8', 'scs9', 'scs10'];
  512. const values = relevantKeys.map(key => parseInt(scsformdata[key], 10) || 0);
  513. scsformdata.sctotal = values.reduce((sum, value) => sum + value, 0);
  514. }
  515. //进度汇总表格数据
  516. const add_tableData = reactive([]);
  517. const jdhz_tableData = reactive([]);
  518. const bgjdhz_tableData = reactive([]);
  519. const _order = ref('');
  520. const _UniqId = ref('');
  521. //尺寸列表
  522. const sizeDatas = reactive([])
  523. //技术附件
  524. const jstableData = reactive([])
  525. const ddtableData = reactive([])
  526. const _list = ref('');
  527. //查询
  528. const add_onSubmit = async ()=>{
  529. if(add_searchInfo.value === '' || add_searchInfo.value === undefined){
  530. const WorkListdata = [];
  531. // add_tableData.splice(0,add_tableData.length,...WorkListdata);
  532. jdhz_tableData.splice(0,jdhz_tableData.length,...WorkListdata);
  533. ElMessage({type: 'warning',message: '搜索内容不能为空' })
  534. return;
  535. }
  536. // 如果没有以"DC"开头,自动补充添加DC
  537. if (!add_searchInfo.value.startsWith('DC')) {
  538. add_searchInfo.value = 'DC' + add_searchInfo.value;
  539. }
  540. sizeDatas.length = 0;
  541. _order.value = add_searchInfo.value;
  542. //进度汇总表格数据
  543. const getSpotLists = await getSpotList({order:_order.value,code:_code});
  544. if(add_searchInfo.value === ''){
  545. //光标跳转搜索框
  546. _searchInput()
  547. }else{
  548. setTimeout(() => {
  549. const inputElement = document.getElementById('scs1');
  550. if (inputElement) {
  551. inputElement.focus();
  552. }
  553. }, 100);//100毫秒
  554. }
  555. sizeDatas.splice(0, getSpotLists.data.headers.length, ...getSpotLists.data.headers);
  556. jdhz_tableData.splice(0, jdhz_tableData.length, ...getSpotLists.data.table);
  557. bgjdhz_tableData.splice(0, bgjdhz_tableData.length, ...getSpotLists.data.bgtable);
  558. //xlsx附件
  559. const searchValue = add_searchInfo.value.split('-')[0];
  560. const jsOrderAttachments = await OrderAttachments({order:searchValue,desc:'技术附件'})
  561. const ddOrderAttachments = await OrderAttachments({order:searchValue,desc:'订单资料附件'})
  562. jstableData.splice(0,jsOrderAttachments.data.length,...jsOrderAttachments.data);
  563. ddtableData.splice(0,ddOrderAttachments.data.length,...ddOrderAttachments.data);
  564. _list.value = getSpotLists.data.list
  565. _UniqId.value = getSpotLists.data.list.UniqId
  566. const keys1 = ['cm1', 'cm2', 'cm3', 'cm4','cm5','cm6','cm7','cm8','cm9','cm10',];
  567. const keys2 = ['cmsl1', 'cmsl2', 'cmsl3', 'cmsl4','cmsl5','cmsl6','cmsl7','cmsl8','cmsl9','cmsl10','zdtotal',];
  568. if(_order.value.includes('-')){
  569. for (let key of keys1) {
  570. if (getSpotLists.data.list.hasOwnProperty(key)) { // 确保键存在于对象中
  571. cmformdata[key] = getSpotLists.data.list[key];
  572. }
  573. }
  574. for (let key of keys2) {
  575. if (getSpotLists.data.list.hasOwnProperty(key)) { // 确保键存在于对象中
  576. cmslformdata[key] = getSpotLists.data.list[key];
  577. }
  578. }
  579. }else{
  580. for (let key of keys1) {
  581. cmformdata[key] = '';
  582. }
  583. for (let key of keys2) {
  584. cmslformdata[key] = '';
  585. }
  586. }
  587. };
  588. //总数量合计
  589. const getSummaries = (param) => {
  590. const { columns, data } = param;
  591. const sums = {};
  592. const summableLabels = [...sizeDatas, "实裁总数"];
  593. columns.forEach((column, index) => {
  594. if (index === 1) {
  595. sums[index] = '总数量合计';
  596. return;
  597. }
  598. if (summableLabels.includes(column.label)) {
  599. const values = data.map(item => Number(item[column.property]));
  600. // 检查数组中是否所有值都是 NaN
  601. if (!values.every(value => isNaN(value))) {
  602. sums[index] = values.reduce((prev, curr) => {
  603. const value = Number(curr);
  604. if (!isNaN(value)) {
  605. return prev + value;
  606. }
  607. return prev;
  608. }, 0);
  609. // 如果需要,可以在这里添加单位
  610. // sums[index] += ' 件';
  611. } else {
  612. sums[index] = '';
  613. }
  614. }
  615. });
  616. return sums;
  617. };
  618. //表格行点击
  619. const tableRowClick = async (row)=>{
  620. add_searchInfo.value = row.子订单编号
  621. _order.value = row.子订单编号
  622. }
  623. //复选框选择
  624. const ckSelection = ref('')
  625. const handleSelectionChange = (selection, type) => {
  626. const ids = selection.map(item => {
  627. return item.子订单编号
  628. })
  629. ckSelection.value = ids.join(',')
  630. console.log(ckSelection.value)
  631. }
  632. const _searchInput = async ()=>{
  633. setTimeout(() => {
  634. const inputElement = document.getElementById('searchInput');
  635. if (inputElement) {
  636. inputElement.focus();
  637. }
  638. }, 100);
  639. }
  640. //子订单详情页
  641. const cp_gdprintonClick = async () => {
  642. if(add_searchInfo.value === '' || add_searchInfo.value === null){
  643. ElMessage({ type: 'warning', message: '请扫描子订单(条码)后再查看' });
  644. return false;
  645. }
  646. SubOrderPageRef.value.open(add_searchInfo.value,add_formData['工序'])
  647. }
  648. // 标志变量,用于控制按钮的可点击状态
  649. let isClickable = true;
  650. const add_Dialog = async () => {
  651. // 如果按钮不可点击,直接返回
  652. if (!isClickable) {
  653. return;
  654. }
  655. // 禁用按钮
  656. isClickable = false;
  657. // 设置定时器,2 秒后重新启用按钮
  658. setTimeout(() => {
  659. isClickable = true;
  660. }, 2000);
  661. if(add_formData['机台号'] === '测试机台'){
  662. ElMessage({ type: 'warning', message: '测试机台禁止报工' });
  663. return;
  664. }
  665. if (!add_formData['机台号']) {
  666. ElMessage({ type: 'warning', message: '未获取到机台' });
  667. return false;
  668. }
  669. if (!_order.value) {
  670. ElMessage({ type: 'warning', message: '请扫描子订单(条码)后,在进行报工' });
  671. return;
  672. }
  673. if (!add_searchInfo.value) {
  674. ElMessage({ type: 'warning', message: '请扫描子订单(条码)后,在进行报工' });
  675. return;
  676. }
  677. // 检查新增实裁数是否都为空
  678. const isAllEmpty = Array.from({ length: 10 }, (_, i) => scsformdata[`scs${i + 1}`]).every(value => !value);
  679. if (isAllEmpty) {
  680. ElMessage({ type: 'warning', message: '请至少填写一个报工数据' });
  681. return;
  682. }
  683. //尺码
  684. let cmArray = [cmformdata.cm1, cmformdata.cm2, cmformdata.cm3, cmformdata.cm4, cmformdata.cm5, cmformdata
  685. .cm6, cmformdata.cm7, cmformdata.cm8, cmformdata.cm9, cmformdata.cm10
  686. ];
  687. //制单数
  688. let zdsl1Array = [cmslformdata.cmsl1, cmslformdata.cmsl2, cmslformdata.cmsl3, cmslformdata.cmsl4,
  689. cmslformdata.cmsl5, cmslformdata.cmsl6, cmslformdata.cmsl7, cmslformdata.cmsl8, cmslformdata
  690. .cmsl9, cmslformdata.cmsl10
  691. ];
  692. //上报数量
  693. let scArray = [scsformdata.scs1, scsformdata.scs2, scsformdata.scs3, scsformdata.scs4, scsformdata.scs5, scsformdata.scs6, scsformdata.scs7, scsformdata.scs8, scsformdata.scs9, scsformdata.scs10
  694. ];
  695. let resultArrays = [];
  696. for (let i = 0; i < scArray.length; i++) {
  697. // 创建一个新数组来存储当前索引下的所有值
  698. let currentValues = [add_formData['机台号'], cmArray[i], zdsl1Array[i], scArray[i]];
  699. // 添加到结果数组中
  700. resultArrays.push(currentValues);
  701. }
  702. let paramsList = [];
  703. for (let i = 0; i < resultArrays.length; i++) {
  704. if (scArray[i]) {
  705. let params = {};
  706. params.order_id = add_searchInfo.value;
  707. params.sczl_jtbh = add_formData['机台号'];
  708. params.gxmc = add_formData['工序'];
  709. params.sys_id = add_formData['人员'];
  710. params.sczl_bh = add_formData['组别'];
  711. params.cm = resultArrays[i][1];
  712. params.sl = resultArrays[i][3];
  713. params.sys_rq = currentDates;
  714. params.code = _code;
  715. paramsList.push(params);
  716. }
  717. }
  718. if (paramsList.length === 0) {
  719. ElMessage({type: 'info',message: '请填写实裁数'});
  720. return;
  721. }
  722. let allSuccess = true;
  723. for (let i = 0; i < paramsList.length; i++) {
  724. const cf_gettab = await search(paramsList[i]);
  725. console.log('新增产量计酬返回信息',cf_gettab)
  726. if (cf_gettab.code !== 0) {
  727. allSuccess = false;
  728. break;
  729. }
  730. }
  731. //报工修改印件资料一条数据
  732. if (_order.value.indexOf('-') !== -1) {
  733. let params = {}
  734. params.scsl1 = scsformdata.scs1
  735. params.scsl2 = scsformdata.scs2
  736. params.scsl3 = scsformdata.scs3
  737. params.scsl4 = scsformdata.scs4
  738. params.scsl5 = scsformdata.scs5
  739. params.scsl6 = scsformdata.scs6
  740. params.scsl7 = scsformdata.scs7
  741. params.scsl8 = scsformdata.scs8
  742. params.scsl9 = scsformdata.scs9
  743. params.scsl10 = scsformdata.scs10
  744. params.sctotal = scsformdata['sctotal']
  745. params.order_id = add_searchInfo.value;//子订单编号
  746. params.rq = currentDates;//时间
  747. params.UniqId = _UniqId.value
  748. console.log(params)
  749. const baogong_getInfo = await getInfo(params);
  750. if (baogong_getInfo.code === 0) {
  751. ElMessage({ type: 'success', message: '报工成功' });
  752. //查询更新数据
  753. add_onSubmit()
  754. //光标跳转input
  755. _searchInput()
  756. // // 清空搜索信息
  757. // add_searchInfo.value = '';
  758. // 批量清空新增实裁数input数据
  759. if (scsformdata) {
  760. for (let i = 1; i <= 10; i++) {
  761. scsformdata[`scs${i}`] = '';
  762. }
  763. scsformdata.sctotal = '';
  764. } else {
  765. console.error('scsformdata 未定义');
  766. }
  767. } else {
  768. ElMessage({ type: 'error', message: '报工失败' });
  769. }
  770. }
  771. }
  772. const gd_yulan = () => {
  773. if(add_searchInfo.value === '' || add_searchInfo.value === null){
  774. ElMessage({type: 'warning',message: '请选择具体的工单后,再操作此功能'})
  775. return false;
  776. }else{
  777. const order = add_searchInfo.value.split('-')[0]
  778. printPageRef.value.open(order)
  779. }
  780. }
  781. //报工删除
  782. const delall = ref(true)
  783. const Selection = ref('')
  784. const select_jtbh = ref('')
  785. const selectionChange = (selection, type) => {
  786. console.log(selection)
  787. const ids = selection.map(item => {
  788. return item.UniqId
  789. })
  790. const zbs = selection.map(item => {
  791. return item.sczl_jtbh
  792. })
  793. Selection.value = ids.join(',')
  794. select_jtbh.value = zbs.join(',')
  795. console.log(Selection.value)
  796. }
  797. const del_delclick = async () => {
  798. // 检查机台号是否匹配
  799. const selectedJtbhArray = select_jtbh.value.split(','); // 将逗号分隔的字符串转换为数组
  800. const isAllMatch = selectedJtbhArray.every(jtbh => jtbh === add_formData['机台号']); // 检查所有值是否匹配
  801. if (!isAllMatch) {
  802. ElMessage({ type: 'warning', message: '请选择与机台号相同的记录' });
  803. return false;
  804. }
  805. try {
  806. // 显示确认弹窗
  807. const confirmResult = await ElMessageBox.confirm('确定要删除这条记录吗?', '提示', {
  808. confirmButtonText: '确定',
  809. cancelButtonText: '取消',
  810. type: 'warning',
  811. });
  812. // 如果用户点击了确定
  813. if (confirmResult === 'confirm') {
  814. console.log(Selection.value);
  815. console.log(add_formData['组别']);
  816. const res1 = await spotcheckdel({ UniqId: Selection.value, sys_id: add_formData['组别'] });
  817. if (res1.code === 0) {
  818. ElMessage.success('删除成功');
  819. Selection.value = '';
  820. add_onSubmit();
  821. }
  822. }
  823. } catch (error) {
  824. // 用户点击了取消或关闭了弹窗
  825. ElMessage.info('删除操作已取消');
  826. }
  827. };
  828. const _orderid = ref('')//订单子编号
  829. const _kh = ref('')//生产款号
  830. //===========报工==========
  831. const res_bomdialogFormVisible = ref(false)
  832. const resbomtableData = ref([]);
  833. const ddhformData = reactive({
  834. ddh: '',
  835. kh:'',
  836. sckh:'',
  837. ks:'',
  838. });
  839. const resbom_tableColumns = ref(
  840. [
  841. // { label: '订单编号', prop: '订单编号', width: '90' },
  842. // { label: '客户', prop: '客户编号', width: '70' },
  843. // { label: '生产款号', prop: '生产款号', width: '100' },
  844. // { label: '款式', prop: '款式', width: '100' },
  845. { label: '物料名称', prop: '物料名称', width: '160' },
  846. { label: '计划用料', prop: '计划用料', width: '105' },
  847. { label: '定额用料', prop: '定额用料', width: '100' },
  848. { label: '门封', prop: '门封', width: '80' },
  849. { label: '裁床实际用料', prop: '裁床实际用料', width: '115' },
  850. { label: '裁床领用面料', prop: '裁床领用面料', width: '115' },
  851. { label: '裁床退回仓库面料', prop: '裁床退回仓库面料', width: '150' },
  852. { label: '入库总量', prop: '入库总量', width: '90' },
  853. { label: '面料结余', prop: '面料结余', width: '90' },
  854. { label: '退还', prop: '退还', width: '110' },
  855. // { label: '备注', prop: '备注', width: '120' },
  856. { label: '投料单位', prop: '投料单位', width: '90' },
  857. // { label: 'UNIQID', prop: 'UNIQID', width: '80' },
  858. ]
  859. )
  860. //退还按钮
  861. const return_Dialog = async ()=>{
  862. _orderid.value = add_searchInfo.value.split('-')[0]
  863. if(_orderid.value === '' || _orderid.value === null){
  864. ElMessage({type: 'warning',message: '请扫描订单后,再操作此功能'})
  865. }else{
  866. const orderSearchdata = await OutOrderSearch({search:_orderid.value});
  867. console.log(orderSearchdata)
  868. _kh.value = orderSearchdata.data[0].生产款号
  869. res_bomdialogFormVisible.value = true
  870. ddhformData.ddh = _orderid.value
  871. ddhformData.kh = _kh.value
  872. ddhformData.sckh = orderSearchdata.data[0].客户编号
  873. ddhformData.ks = orderSearchdata.data[0].款式
  874. const orderBomListlsit = await orderBomList({order:_orderid.value});
  875. console.log(orderBomListlsit)
  876. _TestCoefficient();
  877. }
  878. }
  879. //bom数据获取
  880. const _TestCoefficient = async ()=>{
  881. try {
  882. const orderBomListdata = await orderBomList({order:_orderid.value});
  883. console.log(orderBomListdata)
  884. resbomtableData.value = orderBomListdata.data;
  885. const formattedData = orderBomListdata.data.map(item=>{
  886. item.物料名称 = item.物料名称;
  887. item.计划用料 = item.计划用料;
  888. item.定额用料 = item.定额用料;
  889. item.裁床实际用料 = item.裁床实际用料;
  890. item.裁床领用面料 = item.裁床领用面料;
  891. item.裁床退回仓库面料 = item.裁床退回仓库面料;
  892. item.备注 = item.备注;
  893. item.UNIQID = item.UNIQID;
  894. item.领用 = '';
  895. return item
  896. });
  897. } catch (error) {
  898. console.error(error);
  899. }
  900. }
  901. const resbom_handleKeyDown = (event, x, y, prop) => {
  902. const currentElement = document.getElementById(`input${x}${y}`);
  903. if (currentElement === null && currentElement === undefined) return
  904. let move = 0
  905. switch (event.keyCode) {
  906. case 13: // Enter
  907. case 40: // 向下箭头
  908. if (y < resbomtableData.value.length )
  909. document.getElementById(`input${x}${y + 1}`).focus();
  910. break;
  911. case 38: // 向上箭头
  912. if ( y > 0) {
  913. document.getElementById(`input${x}${y - 1}`).focus();
  914. }
  915. break;
  916. case 39: // 向左箭头
  917. if (x >= 0 && x <=6) {
  918. move = x + 1
  919. }
  920. document.getElementById(`input${move}${y}`).focus();
  921. break;
  922. case 37: // 向右箭头
  923. if (x = 0 && x <=6) {
  924. move = x - 1
  925. }
  926. document.getElementById(`input${move}${y}`).focus();
  927. break;
  928. default:
  929. break;
  930. }
  931. }
  932. //质检废品系数颜色
  933. const scfjfpxsCellClass = ({row, column, rowIndex, columnIndex}) =>{
  934. if (column.label === '退还') {
  935. return 'background-plan-usage-low';
  936. }
  937. }
  938. // 确定
  939. const res_bomenterDialog = async() => {
  940. const rawValueArray = resbomtableData._rawValue;
  941. const formattedData = rawValueArray.map(item => {
  942. return {
  943. order_id: ddhformData.ddh,
  944. 款号: ddhformData.kh,
  945. 物料名称: item.物料名称 ? item.物料名称 : "",
  946. number: item.退还 ? item.退还 : "",
  947. rq: currentDate,
  948. name: "退还",
  949. sys_id: _username.value,
  950. // receipt_number:danhao.value,
  951. // recipient:_username.value
  952. }
  953. });
  954. console.log(formattedData);
  955. const add_outReport = await outReport(formattedData);
  956. if (add_outReport.code === 0) {
  957. res_bomdialogFormVisible.value = false;
  958. ElMessage({type: 'success',message: '退还成功'})
  959. } else {
  960. ElMessage({ type: 'error',message: '退还失败'})
  961. }
  962. }
  963. // 取消
  964. const res_bomcloseDialog = () => {
  965. res_bomdialogFormVisible.value = false;
  966. }
  967. // =========== 分页 ===========
  968. // 分页相关的响应式变量
  969. const page = ref(1)
  970. const total = ref(0)
  971. const pageSize = ref(10)
  972. // 分页
  973. const handleCurrentChange = (val) => {
  974. page.value = val;
  975. _getStaffList();
  976. };
  977. // 修改页面容量 点击多少条/页
  978. const handleSizeChange = (val) => {
  979. page.value = 10;//默认显示
  980. pageSize.value = val;
  981. _getStaffList();
  982. };
  983. </script>
  984. <style scoped>
  985. .form-container {
  986. display: flex;
  987. flex-wrap: wrap;
  988. }
  989. .form-column {
  990. /*flex: 1;*/
  991. margin-right: 15px; /* 调整列之间的间距 */
  992. }
  993. /* 左侧输入框宽度调整 */
  994. .form-column .el-form-item .el-input {
  995. width: 150px; /* 调整左侧输入框的宽度 */
  996. }
  997. /* 媒体查询,根据需要调整断点 */
  998. @media screen and (max-width: 768px) {
  999. .form-column {
  1000. flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
  1001. margin-right: 0;
  1002. }
  1003. }
  1004. /*:deep(.el-table td .cell) {*/
  1005. /* line-height: 30px !important;*/
  1006. /*}*/
  1007. .JKWTree-container {
  1008. display: flex;
  1009. }
  1010. .JKWTree-tree {
  1011. /*width: 300px;*/
  1012. background-color: #fff;
  1013. padding: 10px;
  1014. margin-right: 20px;
  1015. }
  1016. .JKWTree-tree h3 {
  1017. font-size: 15px;
  1018. font-weight: 700;
  1019. margin: 10px 0;
  1020. }
  1021. .JKWTree-content {
  1022. flex: 1;
  1023. }
  1024. /* 图片上传 */
  1025. .upload-box {
  1026. width: 200px;
  1027. height: 200px;
  1028. border: 2px dashed #e2e2e2;
  1029. display: flex;
  1030. justify-content: center;
  1031. align-items: center;
  1032. position: relative;
  1033. cursor: pointer;
  1034. }
  1035. .uploaded-image {
  1036. width: 100%;
  1037. height: 100%;
  1038. object-fit: cover;
  1039. }
  1040. .upload-icon {
  1041. font-size: 40px;
  1042. color: #c0c4cc;
  1043. }
  1044. .file-input {
  1045. display: none;
  1046. }
  1047. .el-table .warning-row {
  1048. background: oldlace;
  1049. }
  1050. /*bom参数背景*/
  1051. :deep(.el-table__body .background-plan-usage-low div div div) {
  1052. background: #80FA80 !important;
  1053. }
  1054. /* 选中某行时的背景色 */
  1055. :deep(.el-table__body tr.current-row) > td {
  1056. background: #ff80ff !important;
  1057. }
  1058. </style>
  1059. <style scoped>
  1060. :deep(.el-table td .cell) {
  1061. line-height: 20px !important;
  1062. }
  1063. :deep(.el-tabs__header){
  1064. margin-bottom: 0;
  1065. }
  1066. .search{
  1067. margin-left: 0px !important;
  1068. margin-right: 10px !important;
  1069. }
  1070. .bt{
  1071. margin-left: 2px !important;
  1072. padding: 3px !important;
  1073. font-size: 12px;
  1074. }
  1075. .el-tabs__header{
  1076. margin: 0px !important;
  1077. }
  1078. .gva-table-box{
  1079. padding: 0px !important;
  1080. margin-left: -10px !important;
  1081. }
  1082. .mab{
  1083. margin-bottom: 5px;
  1084. }
  1085. /* 搜索样式 */
  1086. ::v-deep .el-input__wrapper #searchInput {
  1087. font-size: 16px;
  1088. }
  1089. ::v-deep .el-input__wrapper #jitaihao {
  1090. font-size: 18px;
  1091. }
  1092. ::v-deep .el-input__wrapper #gongxu {
  1093. font-size: 18px;
  1094. }
  1095. ::v-deep .el-input__wrapper #zubie {
  1096. font-size: 18px;
  1097. }
  1098. ::v-deep .el-input__wrapper #renyuan {
  1099. font-size: 18px;
  1100. }
  1101. ::v-deep .el-input__wrapper #shuliang {
  1102. font-size: 18px;
  1103. color: red;
  1104. }
  1105. ::v-deep .el-input__wrapper #chima {
  1106. font-size: 18px;
  1107. }
  1108. /* 尺码/制单数合计样式 */
  1109. ::v-deep .el-input__wrapper #cm1{
  1110. font-size: 20px;
  1111. }
  1112. ::v-deep .el-input__wrapper #cm2{
  1113. font-size: 20px;
  1114. }
  1115. ::v-deep .el-input__wrapper #cm3{
  1116. font-size: 20px;
  1117. }
  1118. ::v-deep .el-input__wrapper #cm4{
  1119. font-size: 20px;
  1120. }
  1121. ::v-deep .el-input__wrapper #cm5{
  1122. font-size: 20px;
  1123. }
  1124. ::v-deep .el-input__wrapper #cm6{
  1125. font-size: 20px;
  1126. }
  1127. ::v-deep .el-input__wrapper #cm7{
  1128. font-size: 20px;
  1129. }
  1130. ::v-deep .el-input__wrapper #cm8{
  1131. font-size: 20px;
  1132. }
  1133. ::v-deep .el-input__wrapper #cm9{
  1134. font-size: 20px;
  1135. }
  1136. ::v-deep .el-input__wrapper #cm10{
  1137. font-size: 20px;
  1138. }
  1139. ::v-deep .el-input__wrapper #cm11{
  1140. font-size: 20px;
  1141. }
  1142. ::v-deep .el-input__wrapper #cm12{
  1143. font-size: 20px;
  1144. }
  1145. ::v-deep .el-input__wrapper #cmtotal{
  1146. font-size: 20px;
  1147. }
  1148. /* 本次实裁新增样式 */
  1149. ::v-deep .el-input__wrapper #cmsl1{
  1150. font-size: 20px;
  1151. color: red !important;
  1152. }
  1153. ::v-deep .el-input__wrapper #cmsl2{
  1154. font-size: 20px;
  1155. color: red !important;
  1156. }
  1157. ::v-deep .el-input__wrapper #cmsl3{
  1158. font-size: 20px;
  1159. color: red !important;
  1160. }
  1161. ::v-deep .el-input__wrapper #cmsl4{
  1162. font-size: 20px;
  1163. color: red !important;
  1164. }
  1165. ::v-deep .el-input__wrapper #cmsl5{
  1166. font-size: 20px;
  1167. color: red !important;
  1168. }
  1169. ::v-deep .el-input__wrapper #cmsl6{
  1170. font-size: 20px;
  1171. color: red !important;
  1172. }
  1173. ::v-deep .el-input__wrapper #cmsl7{
  1174. font-size: 20px;
  1175. color: red !important;
  1176. }
  1177. ::v-deep .el-input__wrapper #cmsl8{
  1178. font-size: 20px;
  1179. color: red !important;
  1180. }
  1181. ::v-deep .el-input__wrapper #cmsl9{
  1182. font-size: 20px;
  1183. color: red !important;
  1184. }
  1185. ::v-deep .el-input__wrapper #cmsl10{
  1186. font-size: 20px;
  1187. color: red !important;
  1188. }
  1189. ::v-deep .el-input__wrapper #cmsl11{
  1190. font-size: 20px;
  1191. color: red !important;
  1192. }
  1193. ::v-deep .el-input__wrapper #cmsl12{
  1194. font-size: 20px;
  1195. color: red !important;
  1196. }
  1197. ::v-deep .el-input__wrapper #zdtotal{
  1198. font-size: 20px;
  1199. color: red !important;
  1200. }
  1201. /* 表格复选框大小调整 */
  1202. :deep(.el-checkbox.el-checkbox--small .el-checkbox__inner) {
  1203. width: 30px;
  1204. /* 复选框宽度 */
  1205. height: 20px;
  1206. /* 复选框高度 */
  1207. }
  1208. :deep(.el-checkbox.el-checkbox--small.is-checked .el-checkbox__inner::after) {
  1209. transform: scale(1.2) rotate(45deg);
  1210. /* 调整选中后的对勾大小 */
  1211. top: 5%;
  1212. /* 调整对勾位置 */
  1213. left: 40%;
  1214. /* 调整对勾位置 */
  1215. width: 5px;
  1216. /* 调整对勾宽度 */
  1217. height: 9px;
  1218. /* 调整对勾高度 */
  1219. }
  1220. </style>