Dayreports.vue 64 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932
  1. <template>
  2. <div>
  3. <!-- 左侧树形结构 -->
  4. <el-container>
  5. <el-aside width="250px">
  6. <div class="JKWTree-tree">
  7. <h3>机台生产日报表维护</h3>
  8. <el-tree :data="treeData" :props="defaultProps" highlight-current="true"
  9. @node-click="handleNodeClick"></el-tree>
  10. </div>
  11. </el-aside>
  12. <el-container>
  13. <el-main>
  14. <!-- 按钮区域 -->
  15. <div class="gva-table-box">
  16. <el-form-item>
  17. <el-input v-model="positionvalue" placeholder="输入工单编号或产品名称" style="width: 180px;" />
  18. <el-button type="primary" class="search" icon="search" @click="onSearch"></el-button>
  19. <el-button type="primary" class="bt" icon="copy-document" @click="onCountByGdbh">切换显示方式</el-button>
  20. <el-button type="primary" class="bt" icon="plus" @click="onAdd">新增</el-button>
  21. <el-button type="primary" class="bt" icon="delete" @click="onDel">删除</el-button>
  22. <div style="margin-left: auto;">
  23. <el-button type="primary" class="bt" icon="download" @click="exportExcel">导出到Excel</el-button>
  24. </div>
  25. </el-form-item>
  26. <!-- 数据展示 -->
  27. <el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
  28. highlight-current-row="true" border
  29. :row-style="{ height: '0px' }"
  30. :header-row-style="{ height: '20px' }"
  31. :header-cell-style="{ padding: '0px' }"
  32. :show-overflow-tooltip="true" @row-click="Click"
  33. @selection-change="handleSelectionChange" @row-dblclick="doubleClick">
  34. <!-- <el-table-column type="selection" width="55" /> -->
  35. <el-table-column fixed align="left" label="工单编号" prop="sczl_gdbh" width="90"/>
  36. <el-table-column fixed align="left" label="产品名称" prop="Gd_cpmc" width="250"/>
  37. <el-table-column align="left" label="印件及工序" prop="jyno_gxmc" width="120"/>
  38. <el-table-column align="left" label="生产日期" prop="sczl_rq" width="100"/>
  39. <el-table-column align="left" label="机台" prop="sczl_jtbh" width="80"/>
  40. <el-table-column align="left" label="班组" prop="sczl_bzdh" width="60"/>
  41. <el-table-column align="left" label="流程单" prop="sczl_num" width="80"/>
  42. <el-table-column align="left" label="车头产量" prop="sczl_cl" width="100"/>
  43. <el-table-column align="left" label="色度数" prop="sczl_ms" width="80" />
  44. <el-table-column align="left" label="制程废" prop="sczl_zcfp" width="80" />
  45. <el-table-column align="left" label="次品" prop="sczl_zccp" width="80"/>
  46. <el-table-column align="left" label="来料异常" prop="incomingerror" width="90"/>
  47. <el-table-column align="left" label="装版工时" prop="sczl_装版工时" width="90"/>
  48. <el-table-column align="left" label="保养工时" prop="sczl_保养工时" width="90"/>
  49. <el-table-column align="left" label="打样工时" prop="sczl_打样工时" width="90"/>
  50. <el-table-column align="left" label="异常停机工时" prop="sczl_异常停机工时" width="120"/>
  51. <el-table-column align="left" label="设备运行工时" prop="sczl_设备运行工时" width="120"/>
  52. <el-table-column align="left" label="组员编号1" prop="sczl_bh1" width="100"/>
  53. <el-table-column align="left" label="组员姓名1" prop="name1" width="100"/>
  54. <el-table-column align="left" label="组员编号2" prop="sczl_bh2" width="100"/>
  55. <el-table-column align="left" label="组员姓名2" prop="name1" width="100" />
  56. <el-table-column align="left" label="组员编号3" prop="sczl_bh3" width="100"/>
  57. <el-table-column align="left" label="组员姓名3" prop="name3" width="100"/>
  58. <el-table-column align="left" label="组员编号4" prop="sczl_bh4" width="100"/>
  59. <el-table-column align="left" label="组员姓名4" prop="name4"width="100" />
  60. <el-table-column align="left" label="组员编号5" prop="sczl_bh5" width="100"/>
  61. <el-table-column align="left" label="组员姓名5" prop="name5" width="100"/>
  62. <el-table-column align="left" label="组员编号6" prop="sczl_bh6"width="100" />
  63. <el-table-column align="left" label="组员姓名6" prop="name6" width="100"/>
  64. <el-table-column align="left" label="拆片联拼系数" prop="拆片联拼系数" width="120"/>
  65. <el-table-column align="left" label="拆片条小盒系数" prop="拆片条小盒系数" width="130"/>
  66. <el-table-column align="left" label="工价系数" prop="sczl_工价系数" width="100"/>
  67. <el-table-column align="left" label="日定额" prop="日定额" width="80"/>
  68. <el-table-column align="left" label="千件工价" prop="piecesprice " width="100"/>
  69. <el-table-column align="left" label="补产标准" prop="addstandards " width="100"/>
  70. <el-table-column align="left" label="创建用户" prop="sys_id" width="120"/>
  71. <el-table-column align="left" label="创建时间" prop="sys_rq" width="160"/>
  72. <el-table-column align="left" label="修改时间" prop="mod_rq" width="160"/>
  73. <el-table-column align="left" label="UNIQID" prop="UniqId" width="100"/>
  74. <!-- <el-table-column align="left" label="table_type" prop="table_type" width="120"/> -->
  75. <tbody>
  76. <tr v-for="row in filteredRows" :key="row.sczl_gdbh">
  77. <td>{{ row.sczl_gdbh }}</td>
  78. <td>{{ row.sczl_rq }}</td>
  79. <td>{{ row.sczl_bzdh }}</td>
  80. <td>{{ row.sczl_cl }}</td>
  81. <!-- 其他列 -->
  82. </tr>
  83. </tbody>
  84. </el-table>
  85. <!-- 分页 -->
  86. <div class="gva-pagination">
  87. <el-pagination layout="total, sizes, prev, pager, next, jumper" v-model:current-page="page"
  88. v-model:page-size="limit"
  89. :page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
  90. @size-change="handleSizeChange" />
  91. </div>
  92. </div>
  93. <!-- 弹出框 -->
  94. <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type === 'create' ? '新增' : '修改'"
  95. destroy-on-close width="1200px">
  96. <!-- <el-scrollbar height="500px"> -->
  97. <el-form :model="formData" label-position="right" ref="elFormRef" label-width="120px" :rules="rule">
  98. <el-row :gutter="24">
  99. <el-col :span="6">
  100. <el-form-item label="工单编号:" prop="flatFeed" class="mab">
  101. <el-input v-model="formData.sczl_gdbh" id="工单编号" @blur="getCPMCsubmit()" @keydown="ent1($event)" :clearable="true" />
  102. </el-form-item>
  103. </el-col>
  104. <el-col :span="18">
  105. <el-form-item label="产品名称:" prop="perTenThousand" class="mab" label-width="150">
  106. <el-input v-model="formData.Gd_cpmc" id="产品名称" :readonly=true :clearable="true" />
  107. </el-form-item>
  108. </el-col>
  109. </el-row>
  110. <el-row :gutter="24">
  111. <el-col :span="6">
  112. <el-form-item label="印件号:" prop="flatFeed" class="mab">
  113. <el-input v-model="formData.sczl_yjno" id="印件号" @focus="yjnoHandleFocus()" @blur="getYJMCsubmit()" @keydown="ent1($event)" :clearable="true" />
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="18">
  117. <el-form-item label="印件名称:" prop="perTenThousand" class="mab" label-width="150">
  118. <el-input v-model="formData.yj_yjmc" id="印件名称" :readonly=true :clearable="true" />
  119. </el-form-item>
  120. </el-col>
  121. </el-row>
  122. <el-row :gutter="24">
  123. <el-col :span="14">
  124. <el-form-item label="工序名称:" prop="flatFeed" class="mab">
  125. <el-input v-model="formData.sczl_gxmc" id="工序名称" @focus="gxmcHandleFocus()" @blur="getGXsubmit()" @keydown="ent1($event)" :clearable="true" style="width: 350px;" />
  126. <el-input v-model="formData.sczl_gxh" id="工序号" :readonly=true :clearable="true" style="width: 50px; margin-left: 10px;" />
  127. </el-form-item>
  128. </el-col>
  129. <el-col :span="10">
  130. <el-form-item label="工艺名称:" prop="perTenThousand" class="mab">
  131. <el-input v-model="formData.sczl_type" id="工艺名称" :readonly=true :clearable="true" style="width: 200px;" />
  132. </el-form-item>
  133. </el-col>
  134. </el-row>
  135. <el-row :gutter="24">
  136. <el-col :span="6">
  137. <el-form-item label="日期:" prop="flatFeed" class="mab">
  138. <el-input type="date" max="9999-12-31" v-model="formData.sczl_rq" id="日期" @focus="rqHandleFocus()" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  139. </el-form-item>
  140. </el-col>
  141. <el-col :span="8">
  142. <el-form-item label="机器:" prop="flatFeed" class="mab">
  143. <el-input v-model="formData.sczl_jtbh" id="机器" @keydown="ent1($event)" @blur="getJtbhsubmit()" :clearable="true" style="width: 100px;" />
  144. </el-form-item>
  145. </el-col>
  146. <el-col :span="10">
  147. <el-form-item label="组别:" prop="flatFeed" class="mab">
  148. <el-input v-model="formData.sczl_bzdh" id="组别" @keydown="ent1($event)" @blur="getBzsubmit()" :clearable="true" style="width: 200px;" />
  149. </el-form-item>
  150. </el-col>
  151. </el-row>
  152. <el-row :gutter="24">
  153. <el-col :span="6">
  154. <el-form-item label="墨色:" prop="flatFeed" class="mab">
  155. <el-input v-model="formData.sczl_ms" id="墨色" :readonly=true @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  156. </el-form-item>
  157. </el-col>
  158. <el-col :span="8">
  159. <el-form-item label="加工联数:" prop="flatFeed" class="mab" >
  160. <el-input v-model="formData.sczl_ls" id="加工联数" @keydown="ent1($event)" :clearable="true" style="width: 100px; margin-right: 30px;" />
  161. <el-input v-model="mult1" id="mult1" @keydown="ent1($event)" @blur="mult()" style="width: 50px;" />X
  162. <el-input v-model="mult2" id="mult2" @keydown="ent1($event)" @blur="mult()" style="width: 60px;" />
  163. </el-form-item>
  164. </el-col>
  165. <el-col :span="5">
  166. <el-form-item label="产量:" prop="flatFeed" class="mab">
  167. <el-input v-model="formData.sczl_cl" id="产量" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  168. </el-form-item>
  169. </el-col>
  170. <el-col :span="5">
  171. <el-form-item label="制程废品:" prop="flatFeed" class="mab">
  172. <el-input v-model="formData.sczl_zcfp" id="制程废品" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  173. </el-form-item>
  174. </el-col>
  175. </el-row>
  176. <el-row :gutter="24">
  177. <el-col :span="6">
  178. <el-form-item label="装版总工时:" prop="flatFeed" class="mab">
  179. <el-input v-model="formData.sczl_装版总工时" id="装版总工时" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  180. </el-form-item>
  181. </el-col>
  182. <el-col :span="8">
  183. <el-form-item label="装版补产工时:" prop="flatFeed" class="mab">
  184. <el-input v-model="formData.sczl_装版工时" id="装版补产工时" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  185. </el-form-item>
  186. </el-col>
  187. <el-col :span="5">
  188. <el-form-item label="保养工时:" prop="flatFeed" class="mab">
  189. <el-input v-model="formData.sczl_保养工时" id="保养工时" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  190. </el-form-item>
  191. </el-col>
  192. <el-col :span="5">
  193. <el-form-item label="异常停机:" prop="flatFeed" class="mab">
  194. <el-input v-model="formData.sczl_异常停机工时" id="异常停机" @keydown="ent1($event)" :clearable="true" style="width: 200px;" />
  195. </el-form-item>
  196. </el-col>
  197. </el-row>
  198. <el-row :gutter="24">
  199. <el-col :span="6">
  200. <el-form-item label="打样总工时:" prop="flatFeed" class="mab">
  201. <el-input v-model="formData.sczl_打样总工时" id="打样总工时" @keydown="ent1($event)" :clearable="true"style="width: 200px;" />
  202. </el-form-item>
  203. </el-col>
  204. <el-col :span="8">
  205. <el-form-item label="打样补产工时:" prop="flatFeed" class="mab">
  206. <el-input v-model="formData.sczl_打样工时" id="打样补产工时" @keydown="ent1($event, '打样总工时', '打样补产工时', '通电时间')" :clearable="true" style="width: 200px;" />
  207. </el-form-item>
  208. </el-col>
  209. <el-col :span="10">
  210. <el-form-item label="通电时间:" prop="flatFeed" class="mab">
  211. <el-input v-model="formData.sczl_设备运行工时" id="通电时间" @keydown="ent1($event, '打样补产工时', '通电时间', '拆片联拼系数')" :clearable="true" style="width: 200px;" />
  212. </el-form-item>
  213. </el-col>
  214. </el-row>
  215. <el-row :gutter="24" style="height:40px">
  216. <el-col :span="14" v-if="showFormItems">
  217. <el-form-item label="拆片联拼系数:" prop="flatFeed" class="mab" label-width="417px">
  218. <el-input v-model="formData.拆片联拼系数" id="拆片联拼系数" @keydown="ent1($event, '通电时间', '拆片联拼系数', '拆片条小盒系数')" :clearable="true" style="width: 200px;" />
  219. </el-form-item>
  220. </el-col>
  221. <el-col :span="10" v-if="showFormItems">
  222. <el-form-item label="拆片条小盒系数:" prop="flatFeed" class="mab">
  223. <el-input v-model="formData.拆片条小盒系数" id="拆片条小盒系数" @keydown="ent1($event, '拆片联拼系数', '拆片条小盒系数', '定额代号')" :clearable="true" style="width: 200px;" />
  224. </el-form-item>
  225. </el-col>
  226. </el-row>
  227. <el-row :gutter="24">
  228. <el-col :span="14">
  229. <el-form-item label="定额代号:" prop="flatFeed" class="mab" label-width="417px">
  230. <el-input v-model="formData.sczl_dedh" id="定额代号" @keydown="ent1($event, '拆片条小盒系数', '定额代号', '工价系数')" @blur="getDedhsubmit()" :clearable="true" style="width: 200px;" />
  231. </el-form-item>
  232. </el-col>
  233. <el-col :span="5">
  234. <el-form-item label="工价系数:" v-if="showFormItems" prop="flatFeed" class="mab">
  235. <el-input v-model="formData.sczl_工价系数" id="工价系数" @keydown="ent1($event, '定额代号', '工价系数', '计产系数')" :clearable="true" style="width: 200px;" />
  236. </el-form-item>
  237. </el-col>
  238. <el-col :span="5">
  239. <el-form-item label="计产系数:" v-if="showFormItems" prop="flatFeed" class="mab">
  240. <el-input v-model="formData.sczl_计产系数" id="计产系数" @keydown="ent1($event, '工价系数', '计产系数', 'sczl_bh1')" :clearable="true" style="width: 200px;" />
  241. </el-form-item>
  242. </el-col>
  243. </el-row>
  244. <el-row :gutter="22" style="margin-top: 10px;">
  245. <el-col :span="2"></el-col>
  246. <el-col :span="2"><span>员工姓名1</span></el-col>
  247. <el-col :span="2"><span>员工姓名2</span></el-col>
  248. <el-col :span="2"><span>员工姓名3</span></el-col>
  249. <el-col :span="2"><span>员工姓名4</span></el-col>
  250. <el-col :span="2"><span>员工姓名5</span></el-col>
  251. <el-col :span="2"><span>员工姓名6</span></el-col>
  252. <el-col :span="2"><span>员工姓名7</span></el-col>
  253. <el-col :span="2"><span>员工姓名8</span></el-col>
  254. <el-col :span="2"><span>员工姓名9</span></el-col>
  255. <el-col :span="2"><span><b>特殊组员</b></span></el-col>
  256. </el-row>
  257. <el-row :gutter="22" style="margin-top: 10px;">
  258. <el-col :span="2"><span>班组成员</span></el-col>
  259. <el-col :span="2">
  260. <el-input v-model="formData.sczl_bh1" id="sczl_bh1" @blur="GetYg($event, '1')" @keydown="getGxMcsubmit($event, '1')" />
  261. </el-col>
  262. <el-col :span="2">
  263. <el-input v-model="formData.sczl_bh2" id="sczl_bh2" @blur="GetYg($event, '2')" @keydown="getGxMcsubmit($event, '2')" />
  264. </el-col>
  265. <el-col :span="2">
  266. <el-input v-model="formData.sczl_bh3" id="sczl_bh3" @blur="GetYg($event, '3')" @keydown="getGxMcsubmit($event, '3')" />
  267. </el-col>
  268. <el-col :span="2">
  269. <el-input v-model="formData.sczl_bh4" id="sczl_bh4" @blur="GetYg($event, '4')" @keydown="getGxMcsubmit($event, '4')" />
  270. </el-col>
  271. <el-col :span="2">
  272. <el-input v-model="formData.sczl_bh5" id="sczl_bh5" @blur="GetYg($event, '5')" @keydown="getGxMcsubmit($event, '5')" />
  273. </el-col>
  274. <el-col :span="2">
  275. <el-input v-model="formData.sczl_bh6" id="sczl_bh6" @blur="GetYg($event, '6')" @keydown="getGxMcsubmit($event, '6')" />
  276. </el-col>
  277. <el-col :span="2">
  278. <el-input v-model="formData.sczl_bh7" id="sczl_bh7" @blur="GetYg($event, '7')" @keydown="getGxMcsubmit($event, '7')" />
  279. </el-col>
  280. <el-col :span="2">
  281. <el-input v-model="formData.sczl_bh8" id="sczl_bh8" @blur="GetYg($event, '8')" @keydown="getGxMcsubmit($event, '8')" />
  282. </el-col>
  283. <el-col :span="2">
  284. <el-input v-model="formData.sczl_bh9" id="sczl_bh9" @blur="GetYg($event, '9')" @keydown="getGxMcsubmit($event, '9')" />
  285. </el-col>
  286. <el-col :span="2">
  287. <el-input v-model="formData.sczl_bh10" id="sczl_bh10" @blur="GetYg($event, '10')" @keydown="getGxMcsubmit($event, '10')" />
  288. </el-col>
  289. </el-row>
  290. </el-form>
  291. <el-row :gutter="22" style="margin-top: 10px;">
  292. <el-col :span="2"></el-col>
  293. <el-col :span="2">
  294. <el-input v-model="formData.sczl_bh1_name" id="name1" :readonly=true />
  295. </el-col>
  296. <el-col :span="2">
  297. <el-input v-model="formData.sczl_bh2_name" id="name2" :readonly=true />
  298. </el-col>
  299. <el-col :span="2">
  300. <el-input v-model="formData.sczl_bh3_name" id="name3" :readonly=true />
  301. </el-col>
  302. <el-col :span="2">
  303. <el-input v-model="formData.sczl_bh4_name" id="name4" :readonly=true />
  304. </el-col>
  305. <el-col :span="2">
  306. <el-input v-model="formData.sczl_bh5_name" id="name5" :readonly=true />
  307. </el-col>
  308. <el-col :span="2">
  309. <el-input v-model="formData.sczl_bh6_name" id="name6" :readonly=true />
  310. </el-col>
  311. <el-col :span="2">
  312. <el-input v-model="formData.sczl_bh7_name" id="name7" :readonly=true />
  313. </el-col>
  314. <el-col :span="2">
  315. <el-input v-model="formData.sczl_bh8_name" id="name8" :readonly=true />
  316. </el-col>
  317. <el-col :span="2">
  318. <el-input v-model="formData.sczl_bh9_name" id="name9" :readonly=true />
  319. </el-col>
  320. <el-col :span="2">
  321. <el-input v-model="formData.sczl_bh10_name" id="name10" :readonly=true />
  322. </el-col>
  323. </el-row>
  324. <el-row :gutter="22" style="margin-top: 10px;">
  325. <el-col :span="2"></el-col>
  326. <el-col :span="2">
  327. <el-input v-model="formData.sczl_rate1" id="rate1" @keydown="rate($event, '1')" />
  328. </el-col>
  329. <el-col :span="2">
  330. <el-input v-model="formData.sczl_rate2" id="rate2" @keydown="rate($event, '2')" />
  331. </el-col>
  332. <el-col :span="2">
  333. <el-input v-model="formData.sczl_rate3" id="rate3" @keydown="rate($event, '3')" />
  334. </el-col>
  335. <el-col :span="2">
  336. <el-input v-model="formData.sczl_rate4" id="rate4" @keydown="rate($event, '4')" />
  337. </el-col>
  338. <el-col :span="2">
  339. <el-input v-model="formData.sczl_rate5" id="rate5" @keydown="rate($event, '5')" />
  340. </el-col>
  341. <el-col :span="2">
  342. <el-input v-model="formData.sczl_rate6" id="rate6" @keydown="rate($event, '6')" />
  343. </el-col>
  344. <el-col :span="2">
  345. <el-input v-model="formData.sczl_rate7" id="rate7" @keydown="rate($event, '7')" />
  346. </el-col>
  347. <el-col :span="2">
  348. <el-input v-model="formData.sczl_rate8" id="rate8" @keydown="rate($event, '8')" />
  349. </el-col>
  350. <el-col :span="2">
  351. <el-input v-model="formData.sczl_rate9" id="rate9" @keydown="rate($event, '9')" />
  352. </el-col>
  353. <el-col :span="2">
  354. <el-input v-model="formData.sczl_rate10" id="rate10" @keydown="rate($event, '10')" />
  355. </el-col>
  356. </el-row>
  357. <template #footer>
  358. <div class="dialog-footer">
  359. <el-button @click="closeDialog">取 消</el-button>
  360. <el-button type="primary" @click="enterDialog">确 定</el-button>
  361. </div>
  362. </template>
  363. </el-dialog>
  364. <el-dialog
  365. v-model="GetDedhVisible"
  366. title="选择"
  367. destroy-on-close
  368. width="600px"
  369. >
  370. <el-aside width="250px">
  371. <div class="JKWTree-tree">
  372. <el-tree :data="GetDedhtreeData" :props="defaultProps" highlight-current="true"
  373. @node-click="GetDedhhandleNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
  374. </div>
  375. </el-aside>
  376. </el-dialog>
  377. <el-dialog v-model="GXVisible" title="选择" destroy-on-close width="800px" >
  378. <el-table ref="tableRef" tooltip-effect="dark" :data="selectData" row-key="ID"
  379. highlight-current-row="true" border style="width:100%"
  380. @row-dblclick="SelectClick"
  381. >
  382. <el-table-column prop="sczl_gxmc" label="工序名称" width="750" />
  383. </el-table>
  384. </el-dialog>
  385. <el-dialog v-model="JtbhVisible" title="选择" destroy-on-close width="800px" >
  386. <el-table tooltip-effect="dark" :data="selectDataJtbh" row-key="ID"
  387. highlight-current-row="true" border style="width:100%"
  388. @row-dblclick="SelectClickJtbh"
  389. >
  390. <el-table-column prop="jtbh" label="设备编号" width="150" />
  391. <el-table-column prop="设备名称" label="设备名称" width="600" />
  392. </el-table>
  393. </el-dialog>
  394. <el-dialog v-model="BzVisible" title="选择" destroy-on-close width="200px" >
  395. <el-table tooltip-effect="dark" :data="selectDataBz" row-key="ID"
  396. highlight-current-row="true" border style="width:100%"
  397. @row-dblclick="SelectClickBz"
  398. >
  399. <el-table-column prop="sczl_bzdh" label="班组" width="150" />
  400. </el-table>
  401. </el-dialog>
  402. </el-main>
  403. </el-container>
  404. </el-container>
  405. </div>
  406. </template>
  407. <script setup>
  408. import {
  409. getproductionCount,
  410. getproductionList,
  411. productionlocate,
  412. productionByGdbh,
  413. productionInfo,
  414. productionGdmc,
  415. productionYjmc,
  416. productionGx,
  417. productionDedh,
  418. productionedit,
  419. productiondel,
  420. getYg,
  421. productionadd,
  422. reportGetJtbh,
  423. dedhGetRate
  424. } from '@/api/jixiaoguanli/jitairibaobiao'
  425. // 全量引入格式化工具 请按需保留
  426. import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
  427. import { ElMessage, ElMessageBox } from 'element-plus'
  428. import { Search, Refresh, Download } from '@element-plus/icons-vue'
  429. import { ref, reactive, nextTick, onMounted, onBeforeMount } from 'vue'
  430. import { getPackingSideTable, getPackingTable } from '@/api/mes_api_gty/myapi'
  431. defineOptions({
  432. name: '06-packingDocuments'
  433. })
  434. const GetDedhVisible = ref(false)
  435. // 侧边栏数据请求
  436. const treeData = reactive([]);
  437. const getTabdata = async () => {
  438. //接口调用函数
  439. const response = await getproductionCount();
  440. const transformedData = response.data.map(item => ({
  441. label: `${item.date.replace(/-/g, '.')}【单据数: ${item.counts}张】`,
  442. children: Object.keys(item.sys).map(sysItem => {
  443. const matchResult = sysItem.match(/\[(.*?)\]/);
  444. const sysLabel = matchResult ? matchResult[1] : "";
  445. return {
  446. label: `${sysLabel}【记录数: ${item.sys[sysItem]}张】`,
  447. params: {
  448. date: item.date.replace(/\./g, '-'),
  449. sys_id: sysItem,
  450. total: item.sys[sysItem],
  451. },
  452. };
  453. }),
  454. }));
  455. treeData.splice(0, treeData.length, ...transformedData);
  456. displayMod.value = 'date'
  457. }
  458. getTabdata();
  459. const mult1 = ref('0.00');
  460. const mult2 = ref('0.000');
  461. // 自动化生成的字典(可能为空)以及字段
  462. const formData = ref({
  463. sczl_gdbh: '',
  464. Gd_cpmc: '',
  465. sczl_yjno: '',
  466. yj_yjmc: '',
  467. sczl_gxmc: '',
  468. sczl_gxh: '',
  469. sczl_type: '',
  470. sczl_rq: '',
  471. sczl_jtbh: '',
  472. sczl_bzdh: '',
  473. sczl_ms: '',
  474. sczl_ls: '',
  475. sczl_cl: '0.0',
  476. sczl_zcfp: '0',
  477. sczl_装版总工时: '0.00',
  478. sczl_装版工时: '0.00',
  479. sczl_保养工时: '0.00',
  480. sczl_异常停机工时: '0.00',
  481. sczl_打样总工时: '',
  482. sczl_打样工时: '0.00',
  483. sczl_设备运行工时: '0.00',
  484. 拆片联拼系数: '',
  485. 拆片条小盒系数: '',
  486. sczl_dedh: '',
  487. sczl_工价系数: '',
  488. sczl_计产系数: '',
  489. sczl_bh1: '',
  490. sczl_bh2: '',
  491. sczl_bh3: '',
  492. sczl_bh4: '',
  493. sczl_bh5: '',
  494. sczl_bh6: '',
  495. sczl_bh7: '',
  496. sczl_bh8: '',
  497. sczl_bh9: '',
  498. sczl_bh10: '',
  499. sczl_rate1: '',
  500. sczl_rate2: '',
  501. sczl_rate3: '',
  502. sczl_rate4: '',
  503. sczl_rate5: '',
  504. sczl_rate6: '',
  505. sczl_rate7: '',
  506. sczl_rate8: '',
  507. sczl_rate9: '',
  508. sczl_rate10: '',
  509. sczl_bh1_name: '',
  510. sczl_bh2_name: '',
  511. sczl_bh3_name: '',
  512. sczl_bh4_name: '',
  513. sczl_bh5_name: '',
  514. sczl_bh6_name: '',
  515. sczl_bh7_name: '',
  516. sczl_bh8_name: '',
  517. sczl_bh9_name: '',
  518. sczl_bh10_name: '',
  519. })
  520. const initFormData = () => {
  521. formData.value = {
  522. sczl_gdbh: '',
  523. Gd_cpmc: '',
  524. sczl_yjno: '',
  525. yj_yjmc: '',
  526. sczl_gxmc: '',
  527. sczl_gxh: '',
  528. sczl_type: '',
  529. sczl_rq: '',
  530. sczl_jtbh: '',
  531. sczl_bzdh: '',
  532. sczl_ms: '',
  533. sczl_ls: '',
  534. sczl_cl: '0.0',
  535. sczl_zcfp: '0',
  536. sczl_装版总工时: '0.00',
  537. sczl_装版工时: '0.00',
  538. sczl_保养工时: '0.00',
  539. sczl_异常停机工时: '0.00',
  540. sczl_打样总工时: '',
  541. sczl_打样工时: '0.00',
  542. sczl_设备运行工时: '0.00',
  543. 拆片联拼系数: '',
  544. 拆片条小盒系数: '',
  545. sczl_dedh: '',
  546. sczl_工价系数: '',
  547. sczl_计产系数: '',
  548. sczl_bh1: '',
  549. sczl_bh2: '',
  550. sczl_bh3: '',
  551. sczl_bh4: '',
  552. sczl_bh5: '',
  553. sczl_bh6: '',
  554. sczl_bh7: '',
  555. sczl_bh8: '',
  556. sczl_bh9: '',
  557. sczl_bh10: '',
  558. sczl_rate1: '',
  559. sczl_rate2: '',
  560. sczl_rate3: '',
  561. sczl_rate4: '',
  562. sczl_rate5: '',
  563. sczl_rate6: '',
  564. sczl_rate7: '',
  565. sczl_rate8: '',
  566. sczl_rate9: '',
  567. sczl_rate10: '',
  568. sczl_bh1_name: '',
  569. sczl_bh2_name: '',
  570. sczl_bh3_name: '',
  571. sczl_bh4_name: '',
  572. sczl_bh5_name: '',
  573. sczl_bh6_name: '',
  574. sczl_bh7_name: '',
  575. sczl_bh8_name: '',
  576. sczl_bh9_name: '',
  577. sczl_bh10_name: '',
  578. };
  579. }
  580. // 验证规则
  581. const rule = reactive({
  582. sczl_gdbh : [{
  583. required: true,
  584. message: '',
  585. trigger: [],
  586. }],
  587. sczl_yjno : [{
  588. required: true,
  589. message: '',
  590. trigger: [],
  591. }],
  592. sczl_gxmc: [{
  593. required: true,
  594. message: '',
  595. trigger: [],
  596. }],
  597. sczl_gxh: [{
  598. required: true,
  599. message: '',
  600. trigger: [],
  601. }],
  602. sczl_type: [{
  603. required: true,
  604. message: '',
  605. trigger: [],
  606. }],
  607. sczl_rq: [{
  608. required: true,
  609. message: '',
  610. trigger: [],
  611. }],
  612. sczl_bzdh: [{
  613. required: true,
  614. message: '',
  615. trigger: [],
  616. }],
  617. sczl_cl: [{
  618. required: true,
  619. message: '',
  620. trigger: [],
  621. }],
  622. sczl_dedh: [{
  623. required: true,
  624. message: '',
  625. trigger: [],
  626. }],
  627. })
  628. const elFormRef = ref()
  629. const elSearchFormRef = ref()
  630. // =========== 表格控制部分 ===========
  631. const tableData = reactive([])
  632. const detailData = reactive([])
  633. const total = ref(0)
  634. const page = ref(1)
  635. const limit = ref(10)
  636. const searchInfo = ref('')
  637. const params = {
  638. type: '',
  639. date: '',
  640. sys_id: '',
  641. gdbh: '',
  642. }
  643. // 分页设置
  644. const handleSizeChange = (val) => {
  645. switch (params.type) {
  646. case 'getTableData':
  647. getTableData()
  648. break
  649. case 'getLocateTable':
  650. GetLocate()
  651. break
  652. default:
  653. break
  654. }
  655. }
  656. // 页面跳转
  657. const handleCurrentChange = (val) => {
  658. switch (params.type) {
  659. case 'getTableData':
  660. getTableData()
  661. break
  662. case 'getLocateTable':
  663. GetLocate()
  664. break
  665. default:
  666. break
  667. }
  668. }
  669. //定位
  670. const GetLocate = async () => {
  671. const response = await productionlocate({
  672. gdbh: params.gdbh,
  673. page: page.value.toString(), limit: limit.value.toString(),
  674. })
  675. if (response.code === 0) {
  676. console.log(response)
  677. const processedData = response.data.rows.map(item => {
  678. return {
  679. ...item,
  680. combinedProp: item.sczl_gdbh + '--'+item.yj_yjmc,
  681. combinedProp2: item.sczl_yjgx + '-'+item.sczl_gxmc
  682. };
  683. });
  684. total.value = response.data.total
  685. tableData.splice(0, tableData.length, ...processedData);
  686. }
  687. }
  688. let positionvalue=ref()
  689. //获取列表
  690. const getTableData = async() => {
  691. const response = await getproductionList({date: params.date, sys_id: params.sys_id,
  692. page: page.value.toString(), limit: limit.value.toString()});
  693. if (response.code === 0) {
  694. tableData.splice(0, tableData.length, ...response.data.rows);
  695. }
  696. }
  697. const handleNodeClick = (node,check) => {
  698. //存放当前节点的nodeId
  699. if (node.params) {
  700. params.date = node.params.date;
  701. params.sys_id = node.params.sys_id;
  702. params.type = 'getTableData'
  703. total.value = node.params.total;
  704. page.value = 1
  705. getTableData();
  706. }
  707. }
  708. //键盘 input框跳转
  709. // const ent = (event,id1,id2,id3) => {
  710. // if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  711. // if(id3!=''){
  712. // document.getElementById(id3).focus()
  713. // }
  714. // } else if (event.keyCode === 38) { // 向上箭头
  715. // if(id1!=''){
  716. // document.getElementById(id1).focus()
  717. // }
  718. // }else if (event.keyCode === 8) { // 删除箭头
  719. // if(id1!='' && document.getElementById(id2).value===''){
  720. // document.getElementById(id1).focus()
  721. // }
  722. // }else if (event.keyCode === 37) { // 向左箭头
  723. // if(id1!='' && document.getElementById(id2).selectionStart==0){
  724. // document.getElementById(id1).focus()
  725. // }
  726. // }else if (event.keyCode === 39) { // 向右箭头
  727. // if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
  728. // document.getElementById(id3).focus()
  729. // }
  730. // }
  731. // }
  732. const ent1 = (event) => {
  733. const inputs = document.getElementsByTagName('input');
  734. const currentIndex = Array.from(inputs).indexOf(event.target);
  735. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  736. for (let i = currentIndex + 1; i < inputs.length; i++) {
  737. if (!inputs[i].readOnly) {
  738. nextTick(()=>{
  739. inputs[i].focus();
  740. inputs[i].select();
  741. })
  742. break;
  743. }
  744. }
  745. } else if (event.keyCode === 38) { // 向上箭头
  746. for (let i = currentIndex - 1; i >= 0; i--) {
  747. if (!inputs[i].readOnly) {
  748. nextTick(()=>{
  749. inputs[i].focus();
  750. inputs[i].select();
  751. })
  752. break;
  753. }
  754. }
  755. } else if (event.keyCode === 8) { // 删除箭头
  756. if (event.target.selectionStart === 0) {
  757. for (let i = currentIndex - 1; i >= 0; i--) {
  758. if (!inputs[i].readOnly) {
  759. nextTick(()=>{
  760. inputs[i].focus();
  761. inputs[i].setSelectionRange(0, 0);
  762. })
  763. break;
  764. }
  765. }
  766. }
  767. } else if (event.keyCode === 37) { // 向左箭头
  768. if (event.target.selectionStart === 0) {
  769. for (let i = currentIndex - 1; i >= 0; i--) {
  770. if (!inputs[i].readOnly) {
  771. nextTick(()=>{
  772. inputs[i].focus();
  773. inputs[i].select();
  774. })
  775. break;
  776. }
  777. }
  778. }
  779. } else if (event.keyCode === 39) { // 向右箭头
  780. if (event.target.selectionStart === event.target.value.length) {
  781. for (let i = currentIndex + 1; i < inputs.length; i++) {
  782. if (!inputs[i].readOnly) {
  783. nextTick(()=>{
  784. inputs[i].focus();
  785. inputs[i].select();
  786. })
  787. break;
  788. }
  789. }
  790. }
  791. }
  792. }
  793. //追加字体颜色和不可输入
  794. const setColorReadonly = (id) => {
  795. const newInput = document.getElementById(id)
  796. newInput.style.color = 'red';
  797. newInput.setAttribute('readonly', true);
  798. }
  799. //追加字体颜色和可输入
  800. const unsetColorReadonly = (id) => {
  801. const newInput = document.getElementById(id)
  802. newInput.style.color = 'black';
  803. newInput.removeAttribute('readonly');
  804. }
  805. //工单编号回车事件
  806. const getCPMCsubmit = () => {
  807. if(formData.value.sczl_gdbh!=''){
  808. productionGdmc({gdbh:formData.value.sczl_gdbh}).then(response=>{
  809. if (response.code === 0) {
  810. formData.value.Gd_cpmc = response.data.Gd_cpmc
  811. yjnoArr.value = response.data.yjno;
  812. document.getElementById('产品名称').style.color = 'red';
  813. }else{
  814. formData.value.sczl_gdbh = '';
  815. formData.value.Gd_cpmc = '';
  816. gxmc.value = '';
  817. document.getElementById('产品名称').style.color = 'black';
  818. }
  819. });
  820. }else{
  821. ElMessage({
  822. type: 'error',
  823. message: '请注意, 工单编号输入空置, 除非有特殊需要!'
  824. })
  825. gxmc.value = '';
  826. document.getElementById('产品名称').style.color = 'black';
  827. }
  828. }
  829. //印件号数组
  830. const yjnoArr = ref([0])
  831. //印件号获得焦点事件
  832. const yjnoHandleFocus = () =>{
  833. if(yjnoArr.value[0] == 0){
  834. formData.value.sczl_yjno = 1;
  835. }else{
  836. formData.value.sczl_yjno = yjnoArr.value[0];
  837. }
  838. }
  839. //印件号失去焦点事件
  840. const getYJMCsubmit = () => {
  841. if(formData.value.sczl_gdbh!='' && formData.value.sczl_yjno!=''){
  842. //获取印件名称
  843. productionYjmc({gdbh:formData.value.sczl_gdbh,yjno:formData.value.sczl_yjno}).then(response=>{
  844. if (response.code === 0) {
  845. formData.value.yj_yjmc = response.data.yj_yjmc
  846. gxmc.value = response.data.gxmc
  847. formData.value.sczl_gxmc = gxmc.value.sczl_gxmc;
  848. setColorReadonly('印件名称')
  849. }else{
  850. ElMessage({
  851. type: 'error',
  852. message: '印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!'
  853. })
  854. formData.value.sczl_yjno = yjnoArr.value[0];
  855. formData.value.yj_yjmc = '';
  856. gxmc.value = '';
  857. }
  858. });
  859. }else{
  860. ElMessage({
  861. type: 'error',
  862. message: '印件编号不存在, 将恢复默认值, 请仔细确认数据准确性!'
  863. })
  864. formData.value.sczl_yjno = yjnoArr.value[0];
  865. formData.value.yj_yjmc = '';
  866. gxmc.value = '';
  867. }
  868. }
  869. //工序数组
  870. const gxmc = ref('')
  871. const showFormItems = ref(true)
  872. const tableRef = ref()
  873. //工序数组
  874. const gxArr = ref({})
  875. //工序名称获得焦点事件
  876. const gxmcHandleFocus = () =>{
  877. if(gxmc.value != ''){
  878. formData.value.sczl_gxmc = gxmc.value.sczl_gxmc;
  879. }else{
  880. formData.value.sczl_gxmc = '';
  881. }
  882. }
  883. //工序失去焦点事件
  884. const getGXsubmit = () => {
  885. setColorReadonly('工序号')
  886. setColorReadonly('工艺名称')
  887. //工序名称为空
  888. if(formData.value.sczl_gxmc==''){
  889. formData.value.sczl_gxh = 0;
  890. formData.value.sczl_type = '';
  891. formData.value.sczl_ls = 0;
  892. //设置字体和输入
  893. unsetColorReadonly('制程废品')
  894. unsetColorReadonly('装版总工时')
  895. unsetColorReadonly('装版补产工时')
  896. unsetColorReadonly('保养工时')
  897. unsetColorReadonly('异常停机')
  898. unsetColorReadonly('打样补产工时')
  899. unsetColorReadonly('通电时间')
  900. }else{
  901. //工序名称为印件默认值
  902. if(formData.value.sczl_gxmc == gxmc.value.sczl_gxmc){
  903. formData.value.sczl_gxh = gxmc.value.sczl_gxh;
  904. formData.value.sczl_type = gxmc.value.sczl_type;
  905. formData.value.sczl_ls = gxmc.value.sczl_ls;
  906. formData.value.sczl_jtbh = '';
  907. formData.value.sczl_zcfp = 0;
  908. formData.value.sczl_装版总工时 = 0;
  909. formData.value.sczl_装版工时 = 0;
  910. formData.value.sczl_保养工时 = 0;
  911. formData.value.sczl_异常停机工时 = 0;
  912. formData.value.sczl_打样工时 = 0;
  913. formData.value.sczl_设备运行工时 = 0;
  914. //设置字体和输入
  915. setColorReadonly('机器')
  916. setColorReadonly('制程废品')
  917. setColorReadonly('装版总工时')
  918. setColorReadonly('装版补产工时')
  919. setColorReadonly('保养工时')
  920. setColorReadonly('异常停机')
  921. setColorReadonly('打样总工时')
  922. setColorReadonly('打样补产工时')
  923. setColorReadonly('通电时间')
  924. //显示联拼
  925. showFormItems.value = true
  926. }else{
  927. //弹出选择
  928. productionGx({gdbh:formData.value.sczl_gdbh,yjno:formData.value.sczl_yjno}).then(response=>{
  929. if (response.code === 0) {
  930. selectData.splice(0, selectData.length, ...response.data)
  931. GXVisible.value=true
  932. // nextTick(()=>{
  933. // console.log(tableRef)
  934. // console.log(selectData)
  935. // tableRef.value.setCurrentRow(selectData[0]);
  936. // tableRef.value.focus();
  937. // });
  938. }
  939. })
  940. }
  941. }
  942. }
  943. //工序选择JtbhVisible
  944. const selectData = reactive([])
  945. const GXVisible = ref(false)
  946. const SelectClick = (row, column, event) => {
  947. const {sczl_gxmc } = row
  948. if(row.sczl_type=='拆片'){
  949. formData.value.sczl_type=row.sczl_type
  950. formData.value.sczl_gxmc=row.sczl_gxmc
  951. formData.value.sczl_gxh=row.sczl_gxh
  952. formData.value.sczl_ls = row.sczl_ls;
  953. formData.value.sczl_jtbh = '';
  954. formData.value.sczl_zcfp = 0;
  955. formData.value.sczl_装版总工时 = 0;
  956. formData.value.sczl_装版工时 = 0;
  957. formData.value.sczl_保养工时 = 0;
  958. formData.value.sczl_异常停机工时 = 0;
  959. formData.value.sczl_打样工时 = 0;
  960. formData.value.sczl_设备运行工时 = 0;
  961. //设置字体和输入
  962. setColorReadonly('机器')
  963. setColorReadonly('制程废品')
  964. setColorReadonly('装版总工时')
  965. setColorReadonly('装版补产工时')
  966. setColorReadonly('保养工时')
  967. setColorReadonly('异常停机')
  968. setColorReadonly('打样总工时')
  969. setColorReadonly('打样补产工时')
  970. setColorReadonly('通电时间')
  971. //显示联拼
  972. showFormItems.value = true
  973. }else{
  974. formData.value.sczl_type=row.sczl_type
  975. formData.value.sczl_gxmc=row.sczl_gxmc
  976. formData.value.sczl_gxh=row.sczl_gxh
  977. formData.value.sczl_ls = row.sczl_ls;
  978. formData.value.sczl_ms = 0;
  979. //设置字体和输入
  980. unsetColorReadonly('机器')
  981. unsetColorReadonly('制程废品')
  982. unsetColorReadonly('装版总工时')
  983. unsetColorReadonly('装版补产工时')
  984. unsetColorReadonly('保养工时')
  985. unsetColorReadonly('异常停机')
  986. unsetColorReadonly('打样总工时')
  987. unsetColorReadonly('打样补产工时')
  988. unsetColorReadonly('通电时间')
  989. //隐藏联拼
  990. showFormItems.value = false
  991. }
  992. GXVisible.value = false
  993. }
  994. const rqHandleFocus = () =>{
  995. if(formData.value.sczl_rq==''){
  996. formData.value.sczl_rq = new Date().toISOString().split('T')[0]
  997. }
  998. }
  999. const rqsubmit = () =>{
  1000. }
  1001. //机台失去焦点事件
  1002. const getJtbhsubmit = () => {
  1003. //弹出选择
  1004. reportGetJtbh({sczl_type:formData.value.sczl_type,key_word:''}).then(response=>{
  1005. if (response.code === 0) {
  1006. if(response.data.length!=0 && !response.data.some(item => item.jtbh === formData.value.sczl_jtbh)){
  1007. selectDataJtbh.splice(0, selectDataJtbh.length, ...response.data)
  1008. JtbhVisible.value=true
  1009. }
  1010. }
  1011. })
  1012. }
  1013. //机台选择
  1014. const selectDataJtbh = reactive([])
  1015. const JtbhVisible = ref(false)
  1016. const SelectClickJtbh = (row, column, event) => {
  1017. const {jtbh,设备编号 } = row
  1018. formData.value.sczl_jtbh=row.jtbh
  1019. JtbhVisible.value = false
  1020. }
  1021. //班组失去焦点事件
  1022. const getBzsubmit = () => {
  1023. //弹出选择
  1024. const data = [{'sczl_bzdh':'A班'},{'sczl_bzdh':'B班'}]
  1025. selectDataBz.splice(0, selectDataBz.length, ...data)
  1026. if(!JtbhVisible.value){
  1027. BzVisible.value=true
  1028. }
  1029. }
  1030. //班组选择
  1031. const selectDataBz = reactive([])
  1032. const BzVisible = ref(false)
  1033. const SelectClickBz = (row, column, event) => {
  1034. const {sczl_bzdh } = row
  1035. formData.value.sczl_bzdh=row.sczl_bzdh
  1036. BzVisible.value = false
  1037. }
  1038. //mult失去焦点事件
  1039. const mult = () => {
  1040. formData.value.sczl_cl = parseFloat(mult1.value*mult2.value)
  1041. }
  1042. let GetDedhtreeData = reactive([]);
  1043. //定额代号回车事件
  1044. const getDedhsubmit = () => {
  1045. //弹出选择
  1046. let treeData = [];
  1047. productionDedh({sczl_jtbh:formData.value.sczl_jtbh}).then(response=>{
  1048. if (response.code === 0) {
  1049. if(formData.value.sczl_jtbh==''){
  1050. const data = response.data;
  1051. // 递归函数来构建树形结构
  1052. const buildTree = (node) => {
  1053. const treeNode = {
  1054. label: node.sys_bh + '【' + node.sys_mc+'】',
  1055. children: []
  1056. };
  1057. // 如果存在子节点,递归地添加它们
  1058. if (node.bh_mc && Array.isArray(node.bh_mc)) {
  1059. node.bh_mc.forEach(childNode => {
  1060. treeNode.children.push(buildTree(childNode)); // 递归调用
  1061. });
  1062. }
  1063. return treeNode;
  1064. };
  1065. // 构建树形结构的根节点
  1066. const treeData = data.bh_mc.map(buildTree);
  1067. GetDedhtreeData = treeData; // 假设这是外部可访问的变量
  1068. GetDedhVisible.value = true; // 假设这是一个响应式引用
  1069. }else{
  1070. formData.value.sczl_dedh = response.data['sys_bh']
  1071. }
  1072. }
  1073. })
  1074. }
  1075. //定额代号树形结构单机
  1076. const GetDedhhandleNodeClick = (nodeData, node, component) => {
  1077. //存放当前节点的nodeId
  1078. //存放当前节点的nodeId
  1079. if (!nodeData.children || nodeData.children.length === 0) {
  1080. // 如果节点没有子节点,打印节点名称
  1081. formData.value.sczl_dedh=nodeData.label.split("【")[0]
  1082. dedhGetRate({dedh:nodeData.label.split("【")[0]}).then(response=>{
  1083. if (response.code === 0) {
  1084. //设置比例
  1085. formData.value.sczl_rate1 = response.data.sczl_rate1;
  1086. formData.value.sczl_rate2 = response.data.sczl_rate2;
  1087. formData.value.sczl_rate3 = response.data.sczl_rate3;
  1088. formData.value.sczl_rate4 = response.data.sczl_rate4;
  1089. formData.value.sczl_rate5 = response.data.sczl_rate5;
  1090. formData.value.sczl_rate6 = response.data.sczl_rate6;
  1091. formData.value.sczl_rate7 = response.data.sczl_rate7;
  1092. formData.value.sczl_rate8 = response.data.sczl_rate8;
  1093. formData.value.sczl_rate9 = response.data.sczl_rate9;
  1094. formData.value.sczl_rate10 = response.data.sczl_rate10;
  1095. }
  1096. })
  1097. GetDedhVisible.value = false
  1098. }
  1099. }
  1100. //员工编号回车事件
  1101. const getGxMcsubmit = (event, inputName) => {
  1102. // const sczl_bh = document.getElementById('sczl_bh'+inputName).value
  1103. // if(sczl_bh.length==7){
  1104. // getYg({sczl_bh:sczl_bh}).then(response=>{
  1105. // if (response.code === 0) {
  1106. // //设置比例
  1107. // formData.value['sczl_bh'+inputName+'_name'] = response.data.ygxm;
  1108. // //设置光标
  1109. // document.getElementById('rate'+inputName).focus()
  1110. // document.getElementById('rate'+inputName).select()
  1111. // return false
  1112. // }
  1113. // })
  1114. // }
  1115. if(event.target.value!=''){
  1116. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  1117. //设置光标
  1118. document.getElementById('rate'+inputName).focus()
  1119. document.getElementById('rate'+inputName).select()
  1120. } else if (event.keyCode === 38) { // 向上箭头
  1121. if(inputName==1){
  1122. //设置光标
  1123. document.getElementById('定额代号').focus()
  1124. document.getElementById('定额代号').select()
  1125. }else if(inputName==10){
  1126. for(var i=9;i>=1;i--){
  1127. if(formData.value['sczl_bh'+i]!=''){
  1128. document.getElementById('rate'+(parseInt(inputName)+1)).focus()
  1129. document.getElementById('rate'+(parseInt(inputName)+1)).select()
  1130. break;
  1131. }else{
  1132. if(i ==1){
  1133. document.getElementById('sczl_bh1').focus()
  1134. document.getElementById('sczl_bh1').select()
  1135. break;
  1136. }
  1137. }
  1138. }
  1139. }else {
  1140. document.getElementById('rate'+(parseInt(inputName)-1)).focus()
  1141. document.getElementById('rate'+(parseInt(inputName)-1)).select()
  1142. }
  1143. } else if (event.keyCode === 8) { // 删除箭头
  1144. if (event.target.selectionStart === 0) {
  1145. if(inputName==1){
  1146. //设置光标
  1147. document.getElementById('定额代号').focus()
  1148. document.getElementById('定额代号').setSelectionRange(0, 0)
  1149. }else if(inputName==10){
  1150. for(var i=9;i>=1;i--){
  1151. if(formData.value['sczl_bh'+i]!=''){
  1152. document.getElementById('rate'+(parseInt(inputName)+1)).focus()
  1153. document.getElementById('rate'+(parseInt(inputName)+1)).setSelectionRange(0, 0)
  1154. break;
  1155. }else{
  1156. if(i ==1){
  1157. document.getElementById('sczl_bh1').focus()
  1158. document.getElementById('sczl_bh1').setSelectionRange(0,0)
  1159. break;
  1160. }
  1161. }
  1162. }
  1163. }else {
  1164. document.getElementById('rate'+(parseInt(inputName)-1)).focus()
  1165. document.getElementById('rate'+(parseInt(inputName)-1)).setSelectionRange(0, 0)
  1166. }
  1167. }
  1168. } else if (event.keyCode === 37) { // 向左箭头
  1169. if (event.target.selectionStart === 0) {
  1170. if(inputName==1){
  1171. //设置光标
  1172. document.getElementById('定额代号').focus()
  1173. document.getElementById('定额代号').select()
  1174. }else if(inputName==10){
  1175. for(var i=9;i>=1;i--){
  1176. if(formData.value['sczl_bh'+i]!=''){
  1177. document.getElementById('rate'+(parseInt(inputName)+1)).focus()
  1178. document.getElementById('rate'+(parseInt(inputName)+1)).select()
  1179. break;
  1180. }else{
  1181. if(i ==1){
  1182. document.getElementById('sczl_bh1').focus()
  1183. document.getElementById('sczl_bh1').select()
  1184. break;
  1185. }
  1186. }
  1187. }
  1188. }else{
  1189. document.getElementById('rate'+(parseInt(inputName)-1)).focus()
  1190. document.getElementById('rate'+(parseInt(inputName)-1)).select()
  1191. }
  1192. }
  1193. } else if (event.keyCode === 39) { // 向右箭头
  1194. if (event.target.selectionStart === event.target.value.length) {
  1195. //设置光标
  1196. document.getElementById('rate'+inputName).focus()
  1197. document.getElementById('rate'+inputName).select()
  1198. }
  1199. }
  1200. }else{
  1201. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  1202. if(inputName==10){
  1203. //设置光标
  1204. document.getElementById('rate'+inputName).focus()
  1205. document.getElementById('rate'+inputName).select()
  1206. }else{
  1207. //设置光标
  1208. document.getElementById('sczl_bh10').focus()
  1209. document.getElementById('sczl_bh10').select()
  1210. }
  1211. } else if (event.keyCode === 38) { // 向上箭头
  1212. if(inputName==1){
  1213. //设置光标
  1214. document.getElementById('定额代号').focus()
  1215. document.getElementById('定额代号').select()
  1216. }else if(inputName==10){
  1217. for(var i=9;i>=1;i--){
  1218. if(formData.value['sczl_bh'+i]!=''){
  1219. document.getElementById('sczl_bh'+(parseInt(inputName)+1)).focus()
  1220. document.getElementById('sczl_bh'+(parseInt(inputName)+1)).select()
  1221. break;
  1222. }else{
  1223. if(i ==1){
  1224. document.getElementById('sczl_bh1').focus()
  1225. document.getElementById('sczl_bh1').select()
  1226. break;
  1227. }
  1228. }
  1229. }
  1230. }else{
  1231. document.getElementById('rate'+(parseInt(inputName)-1)).focus()
  1232. document.getElementById('rate'+(parseInt(inputName)-1)).select()
  1233. }
  1234. } else if (event.keyCode === 8) { // 删除箭头
  1235. if (event.target.selectionStart === 0) {
  1236. if(inputName==1){
  1237. //设置光标
  1238. document.getElementById('定额代号').focus()
  1239. document.getElementById('定额代号').setSelectionRange(0, 0)
  1240. }else if(inputName==10){
  1241. for(var i=9;i>=1;i--){
  1242. if(formData.value['sczl_bh'+i]!=''){
  1243. document.getElementById('sczl_bh'+(parseInt(inputName)+1)).focus()
  1244. document.getElementById('sczl_bh'+(parseInt(inputName)+1)).setSelectionRange(0, 0)
  1245. break;
  1246. }else{
  1247. if(i ==1){
  1248. document.getElementById('sczl_bh1').focus()
  1249. document.getElementById('sczl_bh1').setSelectionRange(0,0)
  1250. break;
  1251. }
  1252. }
  1253. }
  1254. }else{
  1255. document.getElementById('rate'+(parseInt(inputName)-1)).focus()
  1256. document.getElementById('rate'+(parseInt(inputName)-1)).setSelectionRange(0, 0)
  1257. }
  1258. }
  1259. } else if (event.keyCode === 37) { // 向左箭头
  1260. if (event.target.selectionStart === 0) {
  1261. if(inputName==1){
  1262. //设置光标
  1263. document.getElementById('定额代号').focus()
  1264. document.getElementById('定额代号').select()
  1265. }else if(inputName==10){
  1266. for(var i=9;i>=1;i--){
  1267. if(formData.value['sczl_bh'+i]!=''){
  1268. document.getElementById('sczl_bh'+(parseInt(inputName)+1)).focus()
  1269. document.getElementById('sczl_bh'+(parseInt(inputName)+1)).select()
  1270. break;
  1271. }else{
  1272. if(i ==1){
  1273. document.getElementById('sczl_bh1').focus()
  1274. document.getElementById('sczl_bh1').select()
  1275. break;
  1276. }
  1277. }
  1278. }
  1279. }else{
  1280. document.getElementById('rate'+(parseInt(inputName)-1)).focus()
  1281. document.getElementById('rate'+(parseInt(inputName)-1)).select()
  1282. }
  1283. }
  1284. } else if (event.keyCode === 39) { // 向右箭头
  1285. if (event.target.selectionStart === event.target.value.length) {
  1286. if(inputName==10){
  1287. //设置光标
  1288. document.getElementById('rate'+inputName).focus()
  1289. document.getElementById('rate'+inputName).select()
  1290. }else{
  1291. //设置光标
  1292. document.getElementById('sczl_bh10').focus()
  1293. document.getElementById('sczl_bh10').select()
  1294. }
  1295. }
  1296. }
  1297. }
  1298. }
  1299. //获取员工信息
  1300. const GetYg = (event,inputName) => {
  1301. if(formData.value['sczl_bh'+inputName]!=''){
  1302. getYg({sczl_bh:event.target.value}).then(response=>{
  1303. if (response.code === 0) {
  1304. //设置比例
  1305. formData.value['sczl_bh'+inputName+'_name'] = response.data.ygxm;
  1306. }else{
  1307. formData.value['sczl_bh'+inputName+'_name'] = '';
  1308. }
  1309. })
  1310. }
  1311. }
  1312. //比例失去焦点
  1313. const rate = (event,inputName) => {
  1314. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  1315. if(inputName==10){
  1316. ElMessageBox.confirm('数据存盘?', '提示', {
  1317. confirmButtonText: '确定',
  1318. cancelButtonText: '取消',
  1319. type: 'warning'
  1320. }).then(() => {
  1321. enterDialog()
  1322. })
  1323. }else{
  1324. //设置光标
  1325. document.getElementById('sczl_bh'+(parseInt(inputName)+1)).focus()
  1326. document.getElementById('sczl_bh'+(parseInt(inputName)+1)).select()
  1327. }
  1328. } else if (event.keyCode === 38) { // 向上箭头
  1329. document.getElementById('sczl_bh'+inputName).focus()
  1330. document.getElementById('sczl_bh'+inputName).select()
  1331. } else if (event.keyCode === 8) { // 删除箭头
  1332. if (event.target.selectionStart === 0) {
  1333. document.getElementById('sczl_bh'+inputName).focus()
  1334. document.getElementById('sczl_bh'+inputName).setSelectionRange(0, 0)
  1335. }
  1336. } else if (event.keyCode === 37) { // 向左箭头
  1337. if (event.target.selectionStart === 0) {
  1338. document.getElementById('sczl_bh'+inputName).focus()
  1339. document.getElementById('sczl_bh'+inputName).select()
  1340. }
  1341. } else if (event.keyCode === 39) { // 向右箭头
  1342. if (event.target.selectionStart === event.target.value.length) {
  1343. if(inputName==10){
  1344. //设置光标
  1345. }else{
  1346. document.getElementById('sczl_bh'+inputName).focus()
  1347. document.getElementById('sczl_bh'+inputName).select()
  1348. }
  1349. }
  1350. }
  1351. }
  1352. // 搜索
  1353. function onSearch() {
  1354. params.gdbh = positionvalue.value
  1355. params.type = 'getLocateTable'
  1356. page.value = 1
  1357. GetLocate()
  1358. }
  1359. const ADD=ref('0')
  1360. //新增
  1361. function onAdd() {
  1362. ADD.value='新增'
  1363. type.value = 'create'
  1364. if(typeof(lastCellValue)=='number'){
  1365. GetInfo(lastCellValue)
  1366. }
  1367. initFormData()
  1368. dialogFormVisible.value = true
  1369. // Productionadd()
  1370. }
  1371. //新增
  1372. const Productionadd = async () => {
  1373. const response = await productionadd();
  1374. if (response.code === 0) {
  1375. }
  1376. getTableData()
  1377. }
  1378. //删除
  1379. function onDel() {
  1380. Del()
  1381. }
  1382. //删除
  1383. const Del = async () => {
  1384. const response = await productiondel({UniqId:lastCellValue});
  1385. if (response.code === 0) {
  1386. ElMessage({
  1387. type: 'success',
  1388. message: '删除成功',
  1389. })
  1390. }
  1391. getTableData()
  1392. }
  1393. const displayMod = ref('')
  1394. // 按工单显示
  1395. function onCountByGdbh() {
  1396. if (displayMod.value === 'date') {
  1397. displayMod.value = 'gd'
  1398. CountByGdbh()
  1399. } else {
  1400. getTabdata()
  1401. }
  1402. }
  1403. //按工单显示
  1404. const CountByGdbh = async () => {
  1405. const response = await productionByGdbh();
  1406. if (response.code === 0) {
  1407. // console.log(displayMod.value)
  1408. treeData.splice(0, treeData.length);
  1409. // 遍历接口返回的数据
  1410. response.data.forEach(item => {
  1411. // 创建父节点
  1412. treeData[item.sczl_gdbh] = {
  1413. label: item.sczl_gdbh+'【'+item.yj_yjmc+'】',
  1414. children: [],
  1415. params:{
  1416. date: item.sczl_gdbh,
  1417. sys_id:'' ,
  1418. total: '',
  1419. }
  1420. };
  1421. // 添加子节点
  1422. for (const key in item.sys) {
  1423. const childNode = {
  1424. name: key,
  1425. label: key+' 【记录数'+item.sys[key]+'张】',
  1426. params:{
  1427. date: item.sczl_gdbh,
  1428. sys_id:key ,
  1429. total: item.sys[key],
  1430. }
  1431. };
  1432. treeData[item.sczl_gdbh].children.push(childNode);
  1433. }
  1434. });
  1435. // console.log(treeData)
  1436. // // // 打印树形结构
  1437. // console.log(JSON.stringify(tree, null, 2));
  1438. // // 将父子关系转换为数组
  1439. // const transformedData = Object.values(tree);
  1440. // console.log(transformedData);
  1441. // treeData = transformedData;
  1442. }
  1443. // // 将父子关系转换为数组
  1444. // const transformedData = Object.values(tree);
  1445. // console.log(transformedData)
  1446. // treeData = transformedData;
  1447. // getTableData()
  1448. }
  1449. // ============== 表格控制部分结束 ===============
  1450. // 获取需要的字典 可能为空 按需保留
  1451. const setOptions = async () => {
  1452. }
  1453. // 获取需要的字典 可能为空 按需保留
  1454. setOptions()
  1455. // 多选数据
  1456. const multipleSelection = ref([])
  1457. // 多选
  1458. const handleSelectionChange = (val) => {
  1459. // multipleSelection.value = val
  1460. if(val.length>0){
  1461. // multipleSelection.value = val
  1462. const lenth=val.length
  1463. // ScrapFactor.gdbh=val[lenth-1].combinedProp.split('-')[0];
  1464. // const parts = val[lenth-1].combinedProp2.split('-')
  1465. // ScrapFactor.yjno=parts[0];
  1466. // ScrapFactor.gxh=parts[1];
  1467. // ScrapFactor.type=val[lenth-1].sczl_检验类别
  1468. // console.log(ScrapFactor)
  1469. lastCellValue=val[lenth-1].UniqId
  1470. // console.log(val)
  1471. val.splice(0, val.length); // 清空 val 数组
  1472. console.log(lastCellValue)
  1473. }
  1474. }
  1475. // 批量删除控制标记
  1476. const deleteVisible = ref(false)
  1477. // 多选删除
  1478. const onDelete = async () => {
  1479. const ids = []
  1480. if (multipleSelection.value.length === 0) {
  1481. ElMessage({
  1482. type: 'warning',
  1483. message: '请选择要删除的数据'
  1484. })
  1485. return
  1486. }
  1487. multipleSelection.value &&
  1488. multipleSelection.value.map(item => {
  1489. ids.push(item.ID)
  1490. })
  1491. const res = await deleteCompanyByIds({ ids })
  1492. if (res.code === 0) {
  1493. ElMessage({
  1494. type: 'success',
  1495. message: '删除成功'
  1496. })
  1497. if (tableData.value.length === ids.length && page.value > 1) {
  1498. page.value--
  1499. }
  1500. deleteVisible.value = false
  1501. getTableData()
  1502. }
  1503. }
  1504. // 行为控制标记(弹窗内部需要增还是改)
  1505. // const type = ref('')
  1506. // 更新行
  1507. const updateCompanyFunc = async (row) => {
  1508. const res = await findCompany({ ID: row.ID })
  1509. type.value = 'update'
  1510. if (res.code === 0) {
  1511. formData.value = res.data.recompany
  1512. dialogFormVisible.value = true
  1513. }
  1514. }
  1515. // 弹窗控制标记
  1516. const dialogFormVisible = ref(false)
  1517. // 打开弹窗
  1518. const openDialog = () => {
  1519. type.value = 'create'
  1520. dialogFormVisible.value = true
  1521. }
  1522. // 关闭弹窗
  1523. const closeDialog = () => {
  1524. dialogFormVisible.value = false
  1525. }
  1526. // 弹窗确定
  1527. const enterDialog = async () => {
  1528. //弹窗提示确认
  1529. ElMessageBox.confirm('数据存盘?', '提示', {
  1530. confirmButtonText: '确定',
  1531. cancelButtonText: '取消',
  1532. type: 'warning'
  1533. }).then(() => {
  1534. if(formData.value.sczl_gdbh==''){
  1535. ElMessage({
  1536. type: 'error',
  1537. message: '请填写工单编号'
  1538. });
  1539. document.getElementById('工单编号').focus()
  1540. document.getElementById('工单编号').select()
  1541. return;
  1542. }
  1543. if(formData.value.sczl_yjno==''){
  1544. ElMessage({
  1545. type: 'error',
  1546. message: '请填写印件号'
  1547. });
  1548. document.getElementById('印件号').focus()
  1549. document.getElementById('印件号').select()
  1550. return;
  1551. }
  1552. if(formData.value.sczl_gxmc==''){
  1553. ElMessage({
  1554. type: 'error',
  1555. message: '请填写工序名称'
  1556. });
  1557. document.getElementById('工序名称').focus()
  1558. document.getElementById('工序名称').select()
  1559. return;
  1560. }
  1561. if(formData.value.sczl_rq==''){
  1562. ElMessage({
  1563. type: 'error',
  1564. message: '请填写日期'
  1565. });
  1566. document.getElementById('日期').focus()
  1567. document.getElementById('日期').select()
  1568. return;
  1569. }
  1570. if(formData.value.sczl_bzdh==''){
  1571. ElMessage({
  1572. type: 'error',
  1573. message: '请选择班组'
  1574. });
  1575. document.getElementById('组别').focus()
  1576. document.getElementById('组别').select()
  1577. return;
  1578. }
  1579. if(formData.value.sczl_cl==''){
  1580. ElMessage({
  1581. type: 'error',
  1582. message: '请填写产量'
  1583. });
  1584. document.getElementById('产量').focus()
  1585. document.getElementById('产量').select()
  1586. return;
  1587. }
  1588. if(formData.value.sczl_dedh==''){
  1589. ElMessage({
  1590. type: 'error',
  1591. message: '请选择定额代号'
  1592. });
  1593. document.getElementById('定额代号').focus()
  1594. document.getElementById('定额代号').select()
  1595. return;
  1596. }
  1597. updateDetailData()
  1598. });
  1599. // elFormRef.value?.validate(async (valid) => {
  1600. // if (!valid) return
  1601. // let res
  1602. // switch (type.value) {
  1603. // case 'create':
  1604. // res = await createCompany(formData.value)
  1605. // break
  1606. // case 'update':
  1607. // res = await updateCompany(formData.value)
  1608. // break
  1609. // default:
  1610. // res = await createCompany(formData.value)
  1611. // break
  1612. // }
  1613. // if (res.code === 0) {
  1614. // ElMessage({
  1615. // type: 'success',
  1616. // message: '创建/更改成功'
  1617. // })
  1618. // closeDialog()
  1619. // getTableData()
  1620. // }
  1621. // updateDetailData()
  1622. // })
  1623. }
  1624. // 更新数据
  1625. const updateDetailData = async() => {
  1626. const restoredData = {
  1627. UniqId: lastCellValue,
  1628. sczl_gdbh: formData.value.sczl_gdbh,
  1629. Gd_cpmc: formData.value.Gd_cpmc,
  1630. sczl_yjno: formData.value.sczl_yjno,
  1631. yj_yjmc: formData.value.yj_yjmc,
  1632. sczl_gxmc: formData.value.sczl_gxmc,
  1633. sczl_gxh: formData.value.sczl_gxh,
  1634. sczl_type: formData.value.sczl_type,
  1635. sczl_rq: formData.value.sczl_rq,
  1636. sczl_jtbh: formData.value.sczl_jtbh,
  1637. sczl_bzdh: formData.value.sczl_bzdh,
  1638. sczl_ms: formData.value.sczl_ms,
  1639. sczl_ls: formData.value.sczl_ls,
  1640. sczl_cl: formData.value.sczl_cl,
  1641. sczl_fp: formData.value.sczl_zcfp,
  1642. sczl_装版总工时: formData.value.sczl_装版总工时,
  1643. sczl_装版工时: formData.value.sczl_装版工时,
  1644. sczl_保养工时: formData.value.sczl_保养工时,
  1645. sczl_异常停机工时: formData.value.sczl_异常停机工时,
  1646. sczl_打样总工时: formData.value.sczl_打样总工时,
  1647. sczl_打样工时: formData.value.sczl_打样工时,
  1648. sczl_设备运行工时: formData.value.sczl_设备运行工时,
  1649. 拆片联拼系数: formData.value.拆片联拼系数,
  1650. 拆片条小盒系数: formData.value.拆片条小盒系数,
  1651. sczl_dedh: formData.value.sczl_dedh,
  1652. sczl_工价系数: formData.value.sczl_工价系数,
  1653. sczl_计产系数: formData.value.sczl_计产系数,
  1654. sczl_bh1: formData.value.sczl_bh1,
  1655. sczl_bh2: formData.value.sczl_bh2,
  1656. sczl_bh3: formData.value.sczl_bh3,
  1657. sczl_bh4: formData.value.sczl_bh4,
  1658. sczl_bh5: formData.value.sczl_bh5,
  1659. sczl_bh6: formData.value.sczl_bh6,
  1660. sczl_bh7: formData.value.sczl_bh7,
  1661. sczl_bh8: formData.value.sczl_bh8,
  1662. sczl_bh9: formData.value.sczl_bh9,
  1663. sczl_bh10: formData.value.sczl_bh10,
  1664. sczl_rate1: formData.value.sczl_rate1,
  1665. sczl_rate2: formData.value.sczl_rate2,
  1666. sczl_rate3: formData.value.sczl_rate3,
  1667. sczl_rate4: formData.value.sczl_rate4,
  1668. sczl_rate5: formData.value.sczl_rate5,
  1669. sczl_rate6: formData.value.sczl_rate6,
  1670. sczl_rate7: formData.value.sczl_rate7,
  1671. sczl_rate8: formData.value.sczl_rate8,
  1672. sczl_rate9: formData.value.sczl_rate9,
  1673. sczl_rate10: formData.value.sczl_rate10,
  1674. sys_id:'[1002/郑小丽]',
  1675. }
  1676. // detailData.table.forEach((item, index, array) => {
  1677. // const num = index + 1
  1678. // restoredData[`sczl_gdbh${num}`] = item.sczl_gdbh
  1679. // restoredData[`sczl_yjGx${num}`] = item.sczl_yjGx
  1680. // restoredData[`sczl_gxmc${num}`] = item.sczl_gxmc
  1681. // // restoredData[`Gd_cpmc${num}`] = item.Gd_cpmc
  1682. // restoredData[`sczl_cl${num}`] = item.sczl_cl
  1683. // restoredData[`sczl_PgCl${num}`] = item.sczl_PgCl
  1684. // restoredData[`sczl_clAdd${num}`] = item.sczl_clAdd
  1685. // })
  1686. if(ADD.value=='新增'){
  1687. // console.log('新增')
  1688. const response = await productionadd(restoredData);
  1689. // ADD.value='1'
  1690. // console.log(ADD.value)
  1691. ADD.value='0'
  1692. if(response.code==0){
  1693. ElMessage({
  1694. type: 'success',
  1695. message: '新增成功',
  1696. })
  1697. }
  1698. dialogFormVisible.value = false
  1699. }else{
  1700. const response = await productionedit(restoredData);
  1701. if(response.code==0){
  1702. ElMessage({
  1703. type: 'success',
  1704. message: '更新成功',
  1705. })
  1706. }
  1707. dialogFormVisible.value = false
  1708. // ADD.value='0'
  1709. // console.log(ADD.value)
  1710. }
  1711. formData.value = []
  1712. // console.log(restoredData)
  1713. // console.log(lastCellValue)
  1714. // formData.value.UniqId=lastCellValue
  1715. // console.log(formData)
  1716. // restoredData.UniqId='5'
  1717. // console.log(FormData)
  1718. }
  1719. let table=ref(5);
  1720. let lastCellValue=ref()
  1721. // 双击表格操作
  1722. const type = ref('')
  1723. function doubleClick(row, column, event) {
  1724. type.value = 'update';
  1725. lastCellValue= row['UniqId'];
  1726. table.value=lastCellValue
  1727. if(row['table_type']=='db_sczl'){
  1728. dialogFormVisible.value = true
  1729. GetInfo(table.value)
  1730. }else{
  1731. console.log('此数据不展示详细信息')
  1732. }
  1733. }
  1734. // 单击表格操作
  1735. function Click(row, column, event) {
  1736. lastCellValue= row['UniqId'];
  1737. // if(row['table_type']=='db_sczl'){
  1738. // dialogFormVisible.value = true
  1739. // GetInfo(table.value)
  1740. // }else{
  1741. // console.log('此数据不展示详细信息')
  1742. // }
  1743. }
  1744. //获取详细信息
  1745. const GetInfo = async (value) => {
  1746. const response = await productionInfo({UniqId:value});
  1747. if (response.code === 0) {
  1748. formData.value=response.data;
  1749. }
  1750. }
  1751. // 导出excel
  1752. function exportExcel() {
  1753. console.log('导出到excel');
  1754. }
  1755. // 生命周期钩子
  1756. onMounted(async () => {
  1757. });
  1758. </script>
  1759. <style>
  1760. .JKWTree-container {
  1761. display: flex;
  1762. }
  1763. .JKWTree-tree {
  1764. width: 300px;
  1765. background-color: #fff;
  1766. padding: 10px;
  1767. margin-right: 20px;
  1768. }
  1769. .JKWTree-tree h3 {
  1770. font-size: 15px;
  1771. font-weight: 700;
  1772. margin: 10px 0;
  1773. }
  1774. .JKWTree-content {
  1775. flex: 1;
  1776. }
  1777. /* 选中某行时的背景色*/
  1778. .el-table__body tr.current-row>td {
  1779. background: #ff80ff !important;
  1780. /* 背景颜色 */
  1781. }
  1782. </style>
  1783. <style scoped>
  1784. :deep(.el-table td .cell) {
  1785. line-height: 20px !important;
  1786. }
  1787. :deep(.el-tabs__header){
  1788. margin-bottom: 0;
  1789. }
  1790. .search{
  1791. margin-left: 0px !important;
  1792. margin-right: 10px !important;
  1793. }
  1794. .bt{
  1795. margin-left: 2px !important;
  1796. padding: 3px !important;
  1797. font-size: 12px;
  1798. }
  1799. .el-tabs__header{
  1800. margin: 0px !important;
  1801. }
  1802. .gva-table-box{
  1803. padding: 0px !important;
  1804. }
  1805. .mab{
  1806. margin-bottom: 5px;
  1807. }
  1808. </style>