MachineDocuments.vue 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260
  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. <layout-sider :resize-directions="['right']" :width="220" style="margin-right: 10px;" >
  13. <div class="JKWTree-tree" style="height: 70vh;" >
  14. <h3>机器检验计件单据维护</h3>
  15. <el-tree :data="treeData" highlight-current @node-click="handleNodeClick" />
  16. </div>
  17. </layout-sider>
  18. <el-container>
  19. <el-main>
  20. <!-- 按钮区域 -->
  21. <div class="gva-table-box">
  22. <el-form-item>
  23. <el-input v-model="positionvalue" placeholder="输入工单编号或产品名称" style="width: 180px;" />
  24. <el-button type="primary" class="search" icon="search" @click="onSearch"></el-button>
  25. <el-button type="primary" class="bt" icon="plus" @click="onAdd">新增</el-button>
  26. <el-button type="primary" class="bt" icon="copy-document" @click="onCountByGdbh">切换显示方式</el-button>
  27. <el-button type="primary" class="bt" icon="refresh" @click="onRefresh">刷新质检系数</el-button>
  28. <el-button type="primary" class="bt" icon="delete" @click="onDel">删除</el-button>
  29. <div style="margin-left: auto;">
  30. <el-button type="primary" :icon="Download" @click="exportExcel">导出到Excel</el-button>
  31. </div>
  32. </el-form-item>
  33. <!-- 数据展示 -->
  34. <el-table ref="multipleTable" style="width: 100%" tooltip-effect="dark" :data="tableData" row-key="ID"
  35. highlight-current-row="true" border @selection-change="handleSelectionChange" @row-click="Click"
  36. :show-overflow-tooltip="true" @row-dblclick="doubleClick">
  37. <el-table-column align="left" sortable label="分类" prop="sczl_单据类型" width="77"/>
  38. <el-table-column align="left" sortable label="工单印件" prop="combinedProp"width="250"/>
  39. <el-table-column align="left" sortable label="印件工序" prop="combinedProp2" width="120"/>
  40. <el-table-column align="left" sortable label="机台编号" prop="sczl_jtbh" width="105"/>
  41. <el-table-column align="left" sortable label="机台" prop="sczl_jtbh" width="77"/>
  42. <el-table-column align="left" sortable label="日期" prop="sczl_rq" width="105"/>
  43. <el-table-column align="left" sortable label="计件产量" prop="sczl_cl" width="105"/>
  44. <el-table-column align="left" sortable label="检验类别" prop="sczl_检验类别" width="105"/>
  45. <el-table-column align="left" sortable label="废品率系数" prop="sczl_废品率系数" width="120"/>
  46. <el-table-column align="left" sortable label="日定额" prop="日定额" width="91"/>
  47. <el-table-column align="left" sortable label="员工姓名1" prop="sczl_bh1_name" width="113"/>
  48. <el-table-column align="left" sortable label="员工姓名2" prop="sczl_bh2_name"width="113" />
  49. <el-table-column align="left" sortable label="员工姓名3" prop="sczl_bh3_name" width="113"/>
  50. <el-table-column align="left" sortable label="员工姓名4" prop="sczl_bh4_name"width="113" />
  51. <el-table-column align="left" sortable label="班组代号" prop="sczl_bzdh" width="105"/>
  52. <el-table-column align="left" sortable label="千件工价" prop="千件工价" width="105"/>
  53. <el-table-column align="left" sortable label="日通电工时" prop="sczl_设备运行工时" width="120"/>
  54. <el-table-column align="left" sortable label="流程单备注" prop="qczl_NumDesc" width="120"/>
  55. <el-table-column align="left" sortable label="创建用户" prop="sys_id" width="120"/>
  56. <el-table-column align="left" sortable label="创建时间" prop="sys_rq" width="160"/>
  57. <el-table-column align="left" sortable label="修改时间" prop="mod_rq" width="160"/>
  58. <el-table-column align="left" sortable label="UNIQID" prop="UniqId" width="120"/>
  59. </el-table>
  60. <!-- 分页 -->
  61. <div class="gva-pagination">
  62. <el-pagination layout="total, sizes, prev, pager, next, jumper" v-model:current-page="page"
  63. v-model:page-size="limit"
  64. :page-sizes="[10, 30, 50, 100]" :total="total" @current-change="handleCurrentChange"
  65. @size-change="handleSizeChange" />
  66. </div>
  67. </div>
  68. <!-- 弹出框 -->
  69. <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="type === 'create' ? '添加' : '修改'"
  70. destroy-on-close width="1000px">
  71. <!-- <el-scrollbar height="500px"> -->
  72. <el-form :model="formData" label-position="right" ref="elFormRef" :rules="rule" label-width="70px" >
  73. <el-row :gutter="24">
  74. <el-col :span="4">
  75. <el-form-item label="日期" prop="id" class="mab">
  76. <el-input type="date" max="9999-12-31" v-model="formData.sczl_rq" id="日期" @keydown="ent1($event, '其他备注', '日期', '组别')" />
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="4">
  80. <el-form-item label="组别" prop="name" label-width="90px" class="mab">
  81. <el-input v-model="formData.sczl_bzdh" id="组别" @keydown="ent1($event, '日期', '组别', '工单编号')" />
  82. </el-form-item>
  83. </el-col>
  84. </el-row>
  85. <el-row :gutter="24">
  86. <el-col :span="24">
  87. <el-form-item label="工单编号" prop="id" class="mab">
  88. <el-input v-model="formData.sczl_gdbh" id="工单编号" @keydown="ent1($event, '每箱数', '工单编号', 'yjgx')" @blur="getGxMcsubmit" style="width: 118px; margin-right: 5px;"/>
  89. <el-input v-model="formData.sczl_yjgx" id="yjgx" @keydown="ent1($event, '工单编号', 'yjgx', 'gxmc')" style="width: 80px; margin-right: 5px;"/>
  90. <el-input v-model="formData.sczl_gxmc" id="gxmc" @keydown="ent1($event, 'yjgx', 'gxmc', 'yjmc')" style="width: 135px; margin-right: 5px;"/>
  91. <el-input v-model="formData.yj_yjmc" id="yjmc" @keydown="ent1($event, 'gxmc', 'yjmc', '产量合计')" style="width: 542px;"/>
  92. </el-form-item>
  93. </el-col>
  94. </el-row>
  95. <el-row :gutter="24">
  96. <el-col :span="6">
  97. <el-form-item label="机台编号" prop="id" class="mab">
  98. <el-input v-model="formData.sczl_jtbh" id="机台编号" @keydown="ent1($event, 'yj_yjmc', '机台编号', '检验类型')" @keyup.enter.native="getJtbhsubmit" style="width: 80px;" />
  99. </el-form-item>
  100. </el-col>
  101. <el-col :span="6">
  102. <el-form-item label="检验类型" prop="id" class="mab">
  103. <el-input v-model="formData.sczl_单据类型" id="检验类型" @keydown="ent1($event, '机台编号', '检验类型', '检验类别')" style="width: 150px;" />
  104. </el-form-item>
  105. </el-col>
  106. <el-col :span="6">
  107. <el-form-item label="检验类别" prop="name" class="mab">
  108. <el-input v-model="formData.sczl_检验类别" id="检验类别" @keydown="ent1($event, '检验类型', '检验类别', '废品率系数')" style="width: 150px;" />
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="6">
  112. <el-form-item label="废品率系数" prop="name" class="mab" label-width="100px">
  113. <el-input v-model="formData.sczl_废品率系数" id="废品率系数" @keydown="ent1($event, '检验类别', '废品率系数', '计件箱数')" style="width: 150px;" />
  114. </el-form-item>
  115. </el-col>
  116. </el-row>
  117. <el-row :gutter="24">
  118. <el-col :span="6">
  119. <el-form-item label="计件箱数" prop="id" class="mab">
  120. <el-input v-model="formData.sczl_cl" id="计件箱数" @keydown="ent1($event, '废品率系数', '计件箱数', '每箱数量')" style="width: 118px;"/>
  121. </el-form-item>
  122. </el-col>
  123. <el-col :span="6">
  124. <el-form-item label="每箱数量" prop="name" class="mab">
  125. <el-input v-model="formData.sczl_PgCl" id="每箱数量" @keydown="ent1($event, '计件箱数', '每箱数量', '定额代号')" />
  126. </el-form-item>
  127. </el-col>
  128. <el-col :span="6">
  129. <el-form-item label="定额代号" prop="id" class="mab">
  130. <el-input v-model="formData.sczl_dedh" id="定额代号" @keydown="ent1($event, '产量合计', '定额代号', '检验类别')" @blur="getDedhsubmit" style="width: 150px;" />
  131. </el-form-item>
  132. </el-col>
  133. </el-row>
  134. <el-row :gutter="24">
  135. <el-col :span="17">
  136. <el-form-item label="流程单号" prop="id" class="mab">
  137. <!-- <el-input v-model="formData.address" id="流程单号" @keydown="ent1($event, '定额代号', '流程单号', '流程单号1')" style="width: 60px; margin-right: 5px;"/> -->
  138. <el-input v-model="formData.流程单号1" id="流程单号1" @keydown="ent1($event, '冲月定额', '流程单号1', '流程单号2')" style="width: 60px; margin-right: 5px;"/>
  139. <el-input v-model="formData.流程单号2" id="流程单号2" @keydown="ent1($event, '流程单号1', '流程单号2', '流程单号3')" style="width: 60px; margin-right: 5px;"/>
  140. <el-input v-model="formData.流程单号3" id="流程单号3" @keydown="ent1($event, '流程单号2', '流程单号3', '流程单号4')" style="width: 60px; margin-right: 5px;"/>
  141. <el-input v-model="formData.流程单号4" id="流程单号4" @keydown="ent1($event, '流程单号3', '流程单号4', '流程单号5')" style="width: 60px; margin-right: 5px;"/>
  142. <el-input v-model="formData.流程单号5" id="流程单号5" @keydown="ent1($event, '流程单号4', '流程单号5', '流程单号6')" style="width: 60px; margin-right: 5px;"/>
  143. <el-input v-model="formData.流程单号6" id="流程单号6" @keydown="ent1($event, '流程单号5', '流程单号6', '流程单号7')" style="width: 60px; margin-right: 5px;"/>
  144. <el-input v-model="formData.流程单号7" id="流程单号7" @keydown="ent1($event, '流程单号6', '流程单号7', '流程单号8')" style="width: 60px; margin-right: 5px;"/>
  145. <el-input v-model="formData.流程单号8" id="流程单号8" @keydown="ent1($event, '流程单号7', '流程单号8', '流程单号9')" style="width: 60px; margin-right: 5px;"/>
  146. <el-input v-model="formData.流程单号9" id="流程单号9" @keydown="ent1($event, '流程单号8', '流程单号9', '备注')" style="width: 60px;"/>
  147. </el-form-item>
  148. </el-col>
  149. <el-col :span="7">
  150. <el-form-item label="备注" prop="id" class="mab" label-width="50px">
  151. <el-input v-model="formData.qczl_NumDesc" id="备注" @keydown="ent1($event, '流程单号9', '备注', 'bh1')" />
  152. </el-form-item>
  153. </el-col>
  154. </el-row>
  155. <el-row :gutter="24">
  156. <el-col :span="6">
  157. <el-form-item label="换模补产工时" prop="id" class="mab" label-width="96px">
  158. <el-input v-model="formData.sczl_装版工时" id="换模补产工时" @keydown="ent1($event, '备注', '换模补产工时', '设备保养工时')" />
  159. </el-form-item>
  160. </el-col>
  161. <el-col :span="6">
  162. <el-form-item label="设备保养工时" prop="id" class="mab" label-width="100px">
  163. <el-input v-model="formData.sczl_保养工时" id="设备保养工时" @keydown="ent1($event, '换模补产工时', '设备保养工时', '异常停机')" />
  164. </el-form-item>
  165. </el-col>
  166. <el-col :span="6">
  167. <el-form-item label="异常停机" prop="name" class="mab" >
  168. <el-input v-model="formData.sczl_异常停机工时" id="异常停机" @keydown="ent1($event, '设备保养工时', '异常停机', '设备通电工时')" />
  169. </el-form-item>
  170. </el-col>
  171. <el-col :span="6">
  172. <el-form-item label="设备通电工时" prop="name" class="mab" label-width="100px">
  173. <el-input v-model="formData.sczl_设备运行工时" id="设备通电工时" @keydown="ent1($event, '异常停机', '设备通电工时', 'sczl_bh1')" />
  174. </el-form-item>
  175. </el-col>
  176. </el-row>
  177. <el-row :gutter="24" class="mab" >
  178. <el-col :span="2"><span>组员信息</span></el-col>
  179. <div v-for="index in 8" :key="index">
  180. <div style="width: 50px;margin-right: 50px;">
  181. <el-input style="width: 90px; margin-right: 5px; margin-bottom: 5px;" v-model="formData['sczl_bh' + index]" :id="'bh' + index" @keydown="ent1($event, index.toString())" />
  182. <el-input style="width: 90px; margin-right: 5px; margin-bottom: 5px; color: red;" :readonly="true" :value="formData['sczl_bh' + index + '_name']" :id="'name' + index" @keydown="ent1($event)"/>
  183. <el-input style="width: 90px; margin-right: 5px;" v-model="formData['sczl_rate' + index]" :id="'rate' + index" @keydown="ent1($event)"/>
  184. </div>
  185. </div>
  186. </el-row>
  187. <el-row :gutter="24">
  188. <el-col :span="24">
  189. <el-form-item label="其他备注" prop="id">
  190. <el-input v-model="formData.sczl_desc" id="其他备注" @keydown="ent1($event, 'NumDesc8', '其他备注', '日期')" />
  191. </el-form-item>
  192. </el-col>
  193. </el-row>
  194. </el-form>
  195. <template #footer>
  196. <div class="dialog-footer">
  197. <el-button @click="closeDialog">取 消</el-button>
  198. <el-button type="primary" @click="enterDialog">确 定</el-button>
  199. </div>
  200. </template>
  201. </el-dialog>
  202. <el-dialog
  203. v-model="dialogSelectVisible"
  204. title="选择"
  205. destroy-on-close
  206. width="600px"
  207. >
  208. <el-table
  209. tooltip-effect="dark"
  210. :data="selectData"
  211. row-key="ID"
  212. highlight-current-row="true"
  213. border
  214. style="width:100%"
  215. @row-dblclick="handleSelectClick"
  216. >
  217. <el-table-column
  218. prop="Gd_cpmc"
  219. label="印件名称"
  220. width="340"
  221. />
  222. <el-table-column
  223. prop="jyGx"
  224. label="检验工序"
  225. width="150"
  226. />
  227. <el-table-column
  228. prop="Gy0_gxmc"
  229. label="工序名称"
  230. width="150"
  231. />
  232. </el-table>
  233. </el-dialog>
  234. <el-dialog
  235. v-model="GetMachineDedhVisible"
  236. title="选择"
  237. destroy-on-close
  238. width="600px"
  239. >
  240. <el-aside width="250px">
  241. <div class="JKWTree-tree">
  242. <el-tree :data="GetMachineDedhtreeData" :props="defaultProps" highlight-current="true"
  243. @node-click="GetMachineDedhhandleNodeClick" @node-dblclick="handleNodeDoubleClick"></el-tree>
  244. </div>
  245. </el-aside>
  246. </el-dialog>
  247. <el-dialog
  248. v-model="GetjtbhVisible"
  249. title="选择"
  250. destroy-on-close
  251. width="600px"
  252. >
  253. <el-table
  254. tooltip-effect="dark"
  255. :data="JTBHselectData"
  256. row-key="ID"
  257. highlight-current-row="true"
  258. border
  259. style="width:100%"
  260. @row-dblclick="JTBHSelectClick"
  261. >
  262. <el-table-column
  263. prop="jtbh"
  264. label="机台编号"
  265. width="150"
  266. />
  267. <el-table-column
  268. prop="jtmc"
  269. label="机台名称"
  270. width="400"
  271. />
  272. </el-table>
  273. </el-dialog>
  274. </el-main>
  275. </el-container>
  276. </el-container>
  277. </div>
  278. </template>
  279. <script setup>
  280. import {
  281. getMachineCount,
  282. getDateMachine,
  283. machineLocate,
  284. MachineInfo,
  285. getYg,
  286. getMachineGxMc,
  287. getMachineDedh,
  288. getMachineScrapFactor,
  289. getJtbh,
  290. machineEdit,
  291. machineDel,
  292. getMachineCountByGdbh,
  293. machineAdd
  294. } from '@/api/jixiaoguanli/jitairibaobiao'
  295. // 全量引入格式化工具 请按需保留
  296. import { getDictFunc, formatDate, formatBoolean, filterDict, ReturnArrImg, onDownloadFile } from '@/utils/format'
  297. import { ElMessage, ElMessageBox } from 'element-plus'
  298. import { Search, Refresh, Download } from '@element-plus/icons-vue'
  299. import { ref, reactive, nextTick, onMounted, onBeforeMount } from 'vue'
  300. import { getPackingSideTable, getPackingTable } from '@/api/mes_api_gty/myapi'
  301. import { login } from '@/api/user'
  302. import { Layout, LayoutContent, LayoutHeader, LayoutSider } from '@arco-design/web-vue'
  303. defineOptions({
  304. name: '06-packingDocuments'
  305. })
  306. // 侧边栏数据请求
  307. const treeData = reactive([]);
  308. let GetMachineDedhtreeData = reactive([]);
  309. const getTabdata = async () => {
  310. //接口调用函数
  311. const response = await getMachineCount();
  312. console.log(response)
  313. //根据日期获取侧边栏
  314. const transformedData = response.data.map(item => ({
  315. label: `${item.sys_rq.replace(/-/g, '.')}【单据数: ${item.count}张】`,
  316. children: item.sys.map(sysItem => ({
  317. label: `${sysItem.sys_id} 【记录数: ${sysItem.count}张】`,
  318. params: {
  319. date: item.sys_rq.replace(/\./g, '-'),
  320. sys_id: sysItem.sys_id,
  321. total: sysItem.count,
  322. },
  323. })),
  324. }));
  325. treeData.splice(0, treeData.length, ...transformedData);
  326. displayMod.value = 'date'
  327. }
  328. getTabdata();
  329. // 自动化生成的字典(可能为空)以及字段
  330. const formData = ref({
  331. sczl_gdbh: '',
  332. sczl_yjgx: '',
  333. sczl_gxmc: '',
  334. sczl_jtbh: '',
  335. sczl_bzdh: '',
  336. sczl_rq: '',
  337. sczl_cl: '',
  338. sczl_PgCl: '',
  339. sczl_单据类型: '',
  340. sczl_dedh: '',
  341. sczl_装版工时: '',
  342. sczl_保养工时: '',
  343. sczl_异常停机工时: '',
  344. sczl_设备运行工时: '',
  345. sczl_废品率系数: '',
  346. sczl_检验类别: '',
  347. 流程单号1 :'',
  348. 流程单号2: '',
  349. 流程单号3: '',
  350. 流程单号4: '',
  351. 流程单号5: '',
  352. 流程单号6: '',
  353. 流程单号7: '',
  354. 流程单号8: '',
  355. 流程单号9:'',
  356. qczl_NumDesc:'',
  357. sczl_bh1: '',
  358. sczl_bh2: '',
  359. sczl_bh3: '',
  360. sczl_bh4: '',
  361. sczl_bh5: '',
  362. sczl_bh6: '',
  363. sczl_bh7: '',
  364. sczl_bh8: '',
  365. sczl_bh1_name:'',
  366. sczl_bh2_name:'',
  367. sczl_bh3_name: '',
  368. sczl_bh4_name: '',
  369. sczl_bh5_name: '',
  370. sczl_bh6_name: '',
  371. sczl_bh7_name: '',
  372. sczl_bh8_name: '',
  373. sczl_rate1: '',
  374. sczl_rate2: '',
  375. sczl_rate3: '',
  376. sczl_rate4: '',
  377. sczl_rate5: '',
  378. sczl_rate6: '',
  379. sczl_rate7: '',
  380. sczl_rate8: '',
  381. sczl_desc:'',
  382. yj_yjmc: '',
  383. })
  384. // 验证规则
  385. const rule = reactive({
  386. })
  387. const elFormRef = ref()
  388. const elSearchFormRef = ref()
  389. // =========== 表格控制部分 ===========
  390. const tableData = reactive([])
  391. const total = ref(0)
  392. const page = ref(1)
  393. const limit = ref(10)
  394. const searchInfo = ref('')
  395. const params = {
  396. type: '',
  397. date: '',
  398. sys_id: '',
  399. gdbh: '',
  400. }
  401. // 分页设置
  402. const handleSizeChange = (val) => {
  403. switch (params.type) {
  404. case 'getTableData':
  405. getTableData()
  406. break
  407. case 'getLocateTable':
  408. GetmachineLocate()
  409. break
  410. default:
  411. break
  412. }
  413. }
  414. // 页面跳转
  415. const handleCurrentChange = (val) => {
  416. switch (params.type) {
  417. case 'getTableData':
  418. getTableData()
  419. break
  420. case 'getLocateTable':
  421. GetmachineLocate()
  422. break
  423. default:
  424. break
  425. }
  426. }
  427. const getTableData = async() => {
  428. const response = await getDateMachine({
  429. date: params.date, sys_id: params.sys_id,
  430. page: page.value.toString(), limit: limit.value.toString(),
  431. })
  432. if (response.code === 0) {
  433. console.log(response)
  434. const processedData = response.data.data.map(item => {
  435. return {
  436. ...item,
  437. combinedProp: item.sczl_gdbh + '--'+item.yj_yjmc,
  438. combinedProp2: item.sczl_yjgx + '-'+item.sczl_gxmc
  439. };
  440. });
  441. tableData.splice(0, tableData.length, ...processedData);
  442. }
  443. // const response = await getDateMachine(params);
  444. // console.log(response)
  445. // if (response.code === 0) {
  446. // const processedData = response.data.data.map(item => {
  447. // return {
  448. // ...item,
  449. // combinedProp: item.sczl_gdbh + '--'+item.yj_yjmc,
  450. // combinedProp2: item.sczl_yjgx + '-'+item.sczl_gxmc
  451. // };
  452. // });
  453. // tableData.splice(0, tableData.length, ...processedData);
  454. // }
  455. }
  456. //定位
  457. const GetmachineLocate = async () => {
  458. const response = await machineLocate({
  459. gdbh: params.gdbh,
  460. page: page.value.toString(), limit: limit.value.toString(),
  461. })
  462. console.log(response)
  463. if (response.code === 0) {
  464. const processedData = response.data.rows.map(item => {
  465. return {
  466. ...item,
  467. combinedProp: item.sczl_gdbh + '--'+item.yj_yjmc,
  468. combinedProp2: item.sczl_yjgx + '-'+item.sczl_gxmc
  469. };
  470. });
  471. total.value = response.data.total
  472. tableData.splice(0, tableData.length, ...processedData);
  473. }
  474. // if (response.code === 0) {
  475. // total.value = response.data.total
  476. // tableData.splice(0, tableData.length, ...response.data.rows)
  477. // }
  478. // const response = await machineLocate(locatevalue);
  479. // console.log(locatevalue)
  480. // console.log(response)
  481. // if (response.code === 0) {
  482. // tableData.splice(0, tableData.length, ...response.data.rows);
  483. // }
  484. }
  485. //获取详细信息
  486. const GetMachineInfo = async (value) => {
  487. const response = await MachineInfo({UniqId:value});
  488. console.log(response)
  489. if (response.code === 0) {
  490. formData.value=response.data;
  491. }
  492. }
  493. //键盘 input框跳转
  494. const ent1 = (event) => {
  495. const inputs = document.getElementsByTagName('input');
  496. const currentIndex = Array.from(inputs).indexOf(event.target);
  497. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  498. if(event.target.id=='其他备注'){
  499. ElMessageBox.confirm('数据存盘?', '提示', {
  500. confirmButtonText: '确定',
  501. cancelButtonText: '取消',
  502. type: 'warning'
  503. }).then(() => {
  504. enterDialog()
  505. })
  506. }
  507. for (let i = currentIndex + 1; i < inputs.length; i++) {
  508. if (!inputs[i].readOnly) {
  509. nextTick(()=>{
  510. inputs[i].focus();
  511. inputs[i].select();
  512. })
  513. break;
  514. }
  515. }
  516. if(event.target.id.substring(0, 2)=='cl' || event.target.id.substring(0, 2)=='fp'){
  517. ent_sum()
  518. }
  519. } else if (event.keyCode === 38) { // 向上箭头
  520. for (let i = currentIndex - 1; i >= 0; i--) {
  521. if (!inputs[i].readOnly) {
  522. nextTick(()=>{
  523. inputs[i].focus();
  524. inputs[i].select();
  525. })
  526. break;
  527. }
  528. }
  529. if(event.target.id.substring(0, 2)=='cl' || event.target.id.substring(0, 2)=='fp'){
  530. ent_sum()
  531. }
  532. } else if (event.keyCode === 8) { // 删除箭头
  533. if (event.target.selectionStart === 0) {
  534. for (let i = currentIndex - 1; i >= 0; i--) {
  535. if (!inputs[i].readOnly) {
  536. nextTick(()=>{
  537. inputs[i].focus();
  538. inputs[i].setSelectionRange(0, 0);
  539. })
  540. break;
  541. }
  542. }
  543. if(event.target.id.substring(0, 2)=='cl' || event.target.id.substring(0, 2)=='fp'){
  544. ent_sum()
  545. }
  546. }
  547. } else if (event.keyCode === 37) { // 向左箭头
  548. if (event.target.selectionStart === 0) {
  549. for (let i = currentIndex - 1; i >= 0; i--) {
  550. if (!inputs[i].readOnly) {
  551. nextTick(()=>{
  552. inputs[i].focus();
  553. inputs[i].select();
  554. })
  555. break;
  556. }
  557. }
  558. if(event.target.id.substring(0, 2)=='cl' || event.target.id.substring(0, 2)=='fp'){
  559. ent_sum()
  560. }
  561. }
  562. } else if (event.keyCode === 39) { // 向右箭头
  563. if(event.target.id=='其他备注'){
  564. ElMessageBox.confirm('数据存盘?', '提示', {
  565. confirmButtonText: '确定',
  566. cancelButtonText: '取消',
  567. type: 'warning'
  568. }).then(() => {
  569. enterDialog()
  570. })
  571. }
  572. if (event.target.selectionStart === event.target.value.length) {
  573. for (let i = currentIndex + 1; i < inputs.length; i++) {
  574. if (!inputs[i].readOnly) {
  575. nextTick(()=>{
  576. inputs[i].focus();
  577. inputs[i].select();
  578. })
  579. break;
  580. }
  581. }
  582. }
  583. if(event.target.id.substring(0, 2)=='cl' || event.target.id.substring(0, 2)=='fp'){
  584. ent_sum()
  585. }
  586. }
  587. }
  588. //获取员工信息
  589. const GetYg = async (value,inputName) => {
  590. const response = await getYg({sczl_bh:value});
  591. console.log(response)
  592. if (response.code === 0) {
  593. console.log(response.data.ygxm)
  594. let Bname = 'sczl_bh' + inputName+'_name';
  595. formData.value[Bname]=response.data.ygxm
  596. // console.log(formData.value[Bname])
  597. }
  598. }
  599. //员工编号回车事件
  600. const getGxMcsubmit = (event, inputName) => {
  601. console.log(inputName)
  602. let combinedString = 'sczl_bh' + inputName;
  603. console.log(combinedString)
  604. // let variableName = 'sczl_gdbh'+inputName;
  605. let variableValue = eval('formData.value.' + combinedString);
  606. console.log(variableValue)
  607. GetYg(variableValue,inputName)
  608. }
  609. const dialogSelectVisible = ref(false)
  610. const GetMachineDedhVisible = ref(false)
  611. const selectData = reactive([])
  612. const GetjtbhVisible = ref(false)
  613. const JTBHselectData = reactive([])
  614. //查询印件工序及产品名称
  615. const GetMachineGxMc = async () => {
  616. console.log(formData.value.sczl_gdbh)
  617. const response = await getMachineGxMc({gdbh:formData.value.sczl_gdbh});
  618. console.log(response)
  619. if (response.code === 0) {
  620. if(response.data.length==1){
  621. const { Gd_cpmc, Gy0_yjno, Gy0_gxh, Gy0_gxmc,jyGx} = response.data[0]
  622. formData.value.yj_yjmc=Gd_cpmc
  623. formData.value.sczl_gxmc=Gy0_gxmc
  624. formData.value.sczl_yjgx=jyGx
  625. console.log(Gy0_gxmc)
  626. console.log(formData.value.sczl_gxmc)
  627. }else{
  628. selectData.splice(0, selectData.length, ...response.data)
  629. dialogSelectVisible.value=true
  630. }
  631. // console.log(response.data.ygxm)
  632. // let Bname = 'sczl_bh' + inputName+'_name';
  633. // formData.value[Bname]=response.data.ygxm
  634. // // console.log(formData.value[Bname])
  635. // console.log(response.data.length)
  636. }
  637. }
  638. //工单编号回车事件
  639. const getMachineGxMcsubmit = async() => {
  640. console.log(formData.value.sczl_gdbh)
  641. GetMachineGxMc()
  642. }
  643. // 处理选择框
  644. const handleSelectClick = (row, column, event) => {
  645. const { Gd_cpmc, Gy0_yjno, Gy0_gxh, Gy0_gxmc,jyGx } = row
  646. formData.value.yj_yjmc=Gd_cpmc
  647. formData.value.sczl_gxmc=Gy0_gxmc
  648. formData.value.sczl_yjgx=jyGx
  649. dialogSelectVisible.value = false
  650. }
  651. //获取定额代号
  652. const GetMachineDedh = async (value) => {
  653. const response = await getMachineDedh();
  654. console.log(response)
  655. const treeData = {};
  656. if(response.code==0){
  657. // 遍历接口返回的数据,构建父子关系
  658. response.data.bh_mc.forEach(item => {
  659. if (item.sys_bh === response.data.sys_bh) {
  660. if (!treeData[item.sys_bh]) {
  661. treeData[item.sys_bh] = { label: item.sys_bh, children: [] };
  662. }
  663. treeData[item.sys_bh].children.push({ label: item.sys_bh + item.sys_mc, params: { sys_bh: item.sys_bh } });
  664. } else if (item.sys_bh.startsWith(response.data.sys_bh)) {
  665. if (!treeData[response.data.sys_bh]) {
  666. treeData[response.data.sys_bh] = { label: response.data.sys_bh, children: [] };
  667. }
  668. treeData[response.data.sys_bh].children.push({ label: item.sys_bh + item.sys_mc, params: { sys_bh: item.sys_bh } });
  669. }
  670. });
  671. // 将父子关系转换为数组
  672. const transformedData = Object.values(treeData);
  673. console.log(transformedData)
  674. GetMachineDedhtreeData = transformedData;
  675. // const treeData = fillDataToTree(response);
  676. // console.log(treeData)
  677. // // GetMachineDedhtreeData=treeData
  678. // GetMachineDedhtreeData.splice(0, GetMachineDedhtreeData.length, ...treeData);
  679. // const GetMachineDedhtreeData=
  680. GetMachineDedhVisible.value=true
  681. console.log(formData)
  682. }
  683. }
  684. //定额代号树形结构单机
  685. const GetMachineDedhhandleNodeClick = (node,check,nodeData) => {
  686. //存放当前节点的nodeId
  687. //存放当前节点的nodeId
  688. if (node.params) {
  689. // 点击的是父节点
  690. // 执行相应的父节点单击事件处理逻辑
  691. console.log(node.params)
  692. formData.value.sczl_dedh=node.params.sys_bh
  693. console.log(formData.value.sczl_dedh)
  694. GetMachineDedhVisible.value=false
  695. } else {
  696. // 点击的是子节点
  697. // 执行相应的子节点单击事件处理逻辑
  698. console.log('11111');
  699. console.log(node.params)
  700. // 例如,您可以在这里执行子节点单击事件触发的操作
  701. }
  702. }
  703. const GetJtbh = async () => {
  704. const response = await getJtbh({sys_mc:'检验车间'});
  705. if(response.code==0){
  706. if(response.data.length==1){
  707. // const { Gd_cpmc, Gy0_yjno, Gy0_gxh, Gy0_gxmc,jyGx} = response.data[0]
  708. // formData.value.yj_yjmc=Gd_cpmc
  709. // formData.value.sczl_gxmc=Gy0_gxmc
  710. // formData.value.sczl_yjgx=jyGx
  711. // console.log(Gy0_gxmc)
  712. // console.log(formData.value.sczl_gxmc)
  713. }else{
  714. JTBHselectData.splice(0, selectData.length, ...response.data)
  715. GetjtbhVisible.value=true
  716. }
  717. }
  718. console.log(response)
  719. }
  720. const JTBHSelectClick = (row, column, event) => {
  721. const { jtbh, jtmc } = row
  722. formData.value.sczl_jtbh=jtbh
  723. GetjtbhVisible.value = false
  724. }
  725. const getJtbhsubmit = () => {
  726. GetJtbh()
  727. }
  728. //定额代号回车事件
  729. const getMachineDedhsubmit = () => {
  730. GetMachineDedh()
  731. }
  732. //刷新废品率系数
  733. const GetMachineScrapFactor = async (value) => {
  734. const response = await getMachineScrapFactor(value);
  735. if(response.code==0){
  736. console.log(response.data.num)
  737. const rowIndex = tableData.findIndex(row => row.UniqId === lastCellValue);
  738. console.log(rowIndex)
  739. tableData[rowIndex].sczl_废品率系数 = response.data.num;
  740. }
  741. // console.log(response)
  742. // const rowIndex = tableData.findIndex(row => row.UniqId === 123);
  743. }
  744. // 更新数据
  745. const updateDetailData = async() => {
  746. const restoredData = {
  747. UniqId: lastCellValue,
  748. sczl_rq: formData.value.sczl_rq,
  749. sczl_bzdh: formData.value.sczl_bzdh,
  750. sczl_gdbh: formData.value.sczl_gdbh,
  751. sczl_yjgx: formData.value.sczl_yjgx,
  752. sczl_gxmc: formData.value.sczl_gxmc,
  753. sczl_jtbh: formData.value.sczl_jtbh,
  754. sczl_单据类型: formData.value.sczl_单据类型,
  755. sczl_检验类别: formData.value.sczl_检验类别,
  756. sczl_废品率系数: formData.value.sczl_废品率系数,
  757. sczl_cl: formData.value.sczl_cl,
  758. sczl_PgCl: formData.value.sczl_PgCl,
  759. sczl_dedh: formData.value.sczl_dedh,
  760. qczl_Num: formData.value.流程单号1,
  761. qczl_NumDesc1: formData.value.流程单号2,
  762. qczl_NumDesc2: formData.value.流程单号3,
  763. qczl_NumDesc3: formData.value.流程单号4,
  764. qczl_NumDesc4: formData.value.流程单号5,
  765. qczl_NumDesc5: formData.value.流程单号6,
  766. qczl_NumDesc6: formData.value.流程单号7,
  767. qczl_NumDesc7: formData.value.流程单号8,
  768. qczl_NumDesc8: formData.value.流程单号9,
  769. qczl_NumDesc: formData.value.qczl_NumDesc,
  770. sczl_装版工时: formData.value.sczl_装版工时,
  771. sczl_保养工时: formData.value.sczl_保养工时,
  772. sczl_异常停机工时: formData.value.sczl_异常停机工时,
  773. sczl_设备运行工时: formData.value.sczl_设备运行工时,
  774. sczl_bh1: formData.value.sczl_bh1,
  775. sczl_bh2: formData.value.sczl_bh2,
  776. sczl_bh3: formData.value.sczl_bh3,
  777. sczl_bh4: formData.value.sczl_bh4,
  778. sczl_bh5: formData.value.sczl_bh5,
  779. sczl_bh6: formData.value.sczl_bh6,
  780. sczl_bh7: formData.value.sczl_bh7,
  781. sczl_bh8: formData.value.sczl_bh8,
  782. sczl_rate1: formData.value.sczl_rate1,
  783. sczl_rate2: formData.value.sczl_rate2,
  784. sczl_rate3: formData.value.sczl_rate3,
  785. sczl_rate4: formData.value.sczl_rate4,
  786. sczl_rate5: formData.value.sczl_rate5,
  787. sczl_rate6: formData.value.sczl_rate6,
  788. sczl_rate7: formData.value.sczl_rate7,
  789. sczl_rate8: formData.value.sczl_rate8,
  790. sczl_desc: formData.value.sczl_desc,
  791. sys_id:'[1008/姜剑娟]',
  792. }
  793. // detailData.table.forEach((item, index, array) => {
  794. // const num = index + 1
  795. // restoredData[`sczl_gdbh${num}`] = item.sczl_gdbh
  796. // restoredData[`sczl_yjGx${num}`] = item.sczl_yjGx
  797. // restoredData[`sczl_gxmc${num}`] = item.sczl_gxmc
  798. // // restoredData[`Gd_cpmc${num}`] = item.Gd_cpmc
  799. // restoredData[`sczl_cl${num}`] = item.sczl_cl
  800. // restoredData[`sczl_PgCl${num}`] = item.sczl_PgCl
  801. // restoredData[`sczl_clAdd${num}`] = item.sczl_clAdd
  802. // })
  803. if(ADD.value=='新增'){
  804. // console.log('新增')
  805. console.log('新增')
  806. console.log(ADD.value)
  807. console.log(restoredData)
  808. const response = await machineAdd(restoredData);
  809. // ADD.value='1'
  810. // console.log(ADD.value)
  811. ADD.value='0'
  812. console.log(response)
  813. if(response.code==0){
  814. ElMessage({
  815. type: 'success',
  816. message: '新增成功',
  817. })
  818. }
  819. dialogFormVisible.value = false
  820. }else{
  821. console.log(restoredData)
  822. console.log(lastCellValue)
  823. formData.value.UniqId=lastCellValue
  824. console.log(formData)
  825. restoredData.UniqId='5'
  826. const res = await machineEdit(restoredData);
  827. // console.log(FormData)
  828. console.log(res)
  829. if(res.code==0){
  830. ElMessage({
  831. type: 'success',
  832. message: '更新成功',
  833. })
  834. }
  835. dialogFormVisible.value = false
  836. }
  837. }
  838. //删除
  839. const MachineDel = async () => {
  840. const response = await machineDel({UniqId:lastCellValue});
  841. if (response.code === 0) {
  842. ElMessage({
  843. type: 'success',
  844. message: '删除成功',
  845. })
  846. }
  847. getTableData()
  848. }
  849. const handleNodeClick = (node,check) => {
  850. //存放当前节点的nodeId
  851. //存放当前节点的nodeId
  852. if (node.params) {
  853. params.date = node.params.date;
  854. params.sys_id = node.params.sys_id;
  855. total.value = node.params.total;
  856. params.type = 'getTableData'
  857. page.value = 1
  858. getTableData();
  859. }
  860. }
  861. const locatevalue={
  862. gdbh:'',
  863. cpmc:'',
  864. page:'5',
  865. limit:'10',
  866. }
  867. let positionvalue=ref()
  868. // 搜索
  869. function onSearch() {
  870. params.gdbh = positionvalue.value
  871. params.type = 'getLocateTable'
  872. page.value = 1
  873. GetmachineLocate()
  874. }
  875. // 刷新废品率系数
  876. function onRefresh() {
  877. GetMachineScrapFactor(ScrapFactor)
  878. }
  879. const ADD=ref('0')
  880. //新增
  881. function onAdd() {
  882. ADD.value='新增'
  883. type.value = 'create'
  884. if(typeof(lastCellValue)=='number'){
  885. GetMachineInfo(lastCellValue)
  886. }
  887. dialogFormVisible.value = true
  888. // Productionadd()
  889. }
  890. //删除
  891. function onDel() {
  892. MachineDel()
  893. }
  894. const displayMod = ref('')
  895. // 按工单显示
  896. function onCountByGdbh() {
  897. console.log(displayMod.value)
  898. if (displayMod.value === 'date') {
  899. displayMod.value = 'gd'
  900. CountByGdbh()
  901. console.log(displayMod.value)
  902. } else {
  903. getTabdata()
  904. }
  905. // CountByGdbh()
  906. }
  907. //按工单显示
  908. const CountByGdbh = async () => {
  909. const response = await getMachineCountByGdbh();
  910. // console.log(response)
  911. treeData.splice(0, treeData.length);
  912. if (response.code === 0) {
  913. console.log(response)
  914. const transformedData = response.data.map(item => ({
  915. label: `${item.sczl_gdbh+item.cpmc}`,
  916. children: item.sys.map(sysItem => ({
  917. label: `${sysItem.sys_id} 【记录数: ${sysItem.count}张】`,
  918. params: {
  919. date: item.sczl_gdbh,
  920. sys_id: sysItem.sys_id,
  921. total: sysItem.count,
  922. },
  923. })),
  924. }));
  925. treeData.splice(0, treeData.length, ...transformedData);
  926. }
  927. // getTableData()
  928. }
  929. // ============== 表格控制部分结束 ===============
  930. // 获取需要的字典 可能为空 按需保留
  931. const setOptions = async () => {
  932. }
  933. // 获取需要的字典 可能为空 按需保留
  934. setOptions()
  935. // 多选数据
  936. const multipleSelection = ref([
  937. ])
  938. // 多选
  939. const ScrapFactor={
  940. gdbh:'',
  941. yjno:'',
  942. gxh:'',
  943. type:'',
  944. }
  945. const handleSelectionChange = (val) => {
  946. // multipleSelection.value = val
  947. if(val.length>0){
  948. multipleSelection.value = val
  949. const lenth=val.length
  950. ScrapFactor.gdbh=val[lenth-1].combinedProp.split('-')[0];
  951. const parts = val[lenth-1].combinedProp2.split('-')
  952. ScrapFactor.yjno=parts[0];
  953. ScrapFactor.gxh=parts[1];
  954. ScrapFactor.type=val[lenth-1].sczl_检验类别
  955. console.log(ScrapFactor)
  956. lastCellValue=val[lenth-1].UniqId
  957. console.log(val)
  958. val.splice(0, val.length); // 清空 val 数组
  959. console.log(lastCellValue)
  960. }
  961. }
  962. // 批量删除控制标记
  963. const deleteVisible = ref(false)
  964. // 多选删除
  965. const onDelete = async () => {
  966. const ids = []
  967. if (multipleSelection.value.length === 0) {
  968. ElMessage({
  969. type: 'warning',
  970. message: '请选择要删除的数据'
  971. })
  972. return
  973. }
  974. multipleSelection.value &&
  975. multipleSelection.value.map(item => {
  976. ids.push(item.ID)
  977. })
  978. const res = await deleteCompanyByIds({ ids })
  979. if (res.code === 0) {
  980. ElMessage({
  981. type: 'success',
  982. message: '删除成功'
  983. })
  984. if (tableData.value.length === ids.length && page.value > 1) {
  985. page.value--
  986. }
  987. deleteVisible.value = false
  988. getTableData()
  989. }
  990. }
  991. // 行为控制标记(弹窗内部需要增还是改)
  992. const type = ref('')
  993. // 更新行
  994. const updateCompanyFunc = async (row) => {
  995. const res = await findCompany({ ID: row.ID })
  996. type.value = 'update'
  997. if (res.code === 0) {
  998. formData.value = res.data.recompany
  999. dialogFormVisible.value = true
  1000. }
  1001. }
  1002. // 弹窗控制标记
  1003. const dialogFormVisible = ref(false)
  1004. // 打开弹窗
  1005. const openDialog = () => {
  1006. type.value = 'create'
  1007. dialogFormVisible.value = true
  1008. }
  1009. // 关闭弹窗
  1010. const closeDialog = () => {
  1011. dialogFormVisible.value = false
  1012. formData.value = {
  1013. address: '',
  1014. image: '',
  1015. name: '',
  1016. }
  1017. }
  1018. // 弹窗确定
  1019. const enterDialog = async () => {
  1020. // elFormRef.value?.validate(async (valid) => {
  1021. // if (!valid) return
  1022. // let res
  1023. // switch (type.value) {
  1024. // case 'create':
  1025. // res = await createCompany(formData.value)
  1026. // break
  1027. // case 'update':
  1028. // res = await updateCompany(formData.value)
  1029. // break
  1030. // default:
  1031. // res = await createCompany(formData.value)
  1032. // break
  1033. // }
  1034. // if (res.code === 0) {
  1035. // ElMessage({
  1036. // type: 'success',
  1037. // message: '创建/更改成功'
  1038. // })
  1039. // closeDialog()
  1040. // getTableData()
  1041. // }
  1042. // })
  1043. updateDetailData()
  1044. }
  1045. //键盘 input框跳转
  1046. const ent = (event,id1,id2,id3) => {
  1047. if (event.keyCode === 13 || event.keyCode === 40) { // Enter 或向下箭头
  1048. const idMap = {
  1049. 'bh0': '0',
  1050. 'bh1': '1',
  1051. 'bh2': '2',
  1052. 'bh3': '3',
  1053. 'bh4': '4',
  1054. 'bh5': '5',
  1055. 'bh6': '6',
  1056. 'bh7': '7',
  1057. 'bh8': '8',
  1058. };
  1059. if(id2=='工单编号'&&event.keyCode === 13){
  1060. getMachineGxMcsubmit()
  1061. }else if(id2=='机台编号'&&event.keyCode === 13){
  1062. getJtbhsubmit()
  1063. }else if(id2=='定额代号'&&event.keyCode === 13){
  1064. getMachineDedhsubmit()
  1065. }else if (idMap.hasOwnProperty(id2) && event.keyCode === 13) {
  1066. getGxMcsubmit('', idMap[id2]);
  1067. }else if(id3!=''){
  1068. document.getElementById(id3).focus()
  1069. }
  1070. } else if (event.keyCode === 38) { // 向上箭头
  1071. if(id1!=''){
  1072. document.getElementById(id1).focus()
  1073. }
  1074. }else if (event.keyCode === 8) { // 删除箭头
  1075. if(id1!='' && document.getElementById(id2).value==''){
  1076. document.getElementById(id1).focus()
  1077. }
  1078. console.log(document.getElementById(id2).value)
  1079. }else if (event.keyCode === 37) { // 向左箭头
  1080. if(id1!='' && document.getElementById(id2).selectionStart==0){
  1081. document.getElementById(id1).focus()
  1082. }
  1083. }else if (event.keyCode === 39) { // 向右箭头
  1084. if(id3!='' && document.getElementById(id2).selectionStart == document.getElementById(id2).value.length){
  1085. document.getElementById(id3).focus()
  1086. }
  1087. }
  1088. }
  1089. let table=ref(5);
  1090. let lastCellValue=ref()
  1091. // 双击表格操作
  1092. function doubleClick(row, column, event) {
  1093. type.value = 'update';
  1094. lastCellValue= row['UniqId'];
  1095. console.log(lastCellValue)
  1096. table.value=lastCellValue
  1097. dialogFormVisible.value = true
  1098. // dialogSelectVisible.value = true
  1099. GetMachineInfo(table.value)
  1100. }
  1101. // 单击表格操作
  1102. function Click(row, column, event) {
  1103. lastCellValue= row['UniqId'];
  1104. console.log(lastCellValue)
  1105. // if(row['table_type']=='db_sczl'){
  1106. // dialogFormVisible.value = true
  1107. // GetInfo(table.value)
  1108. // }else{
  1109. // console.log('此数据不展示详细信息')
  1110. // }
  1111. }
  1112. // 导出excel
  1113. function exportExcel() {
  1114. console.log('导出到excel');
  1115. }
  1116. // 生命周期钩子
  1117. onMounted(async () => {
  1118. });
  1119. </script>
  1120. <style>
  1121. .JKWTree-container {
  1122. display: flex;
  1123. }
  1124. .JKWTree-tree {
  1125. width: 300px;
  1126. background-color: #fff;
  1127. padding: 10px;
  1128. margin-right: 20px;
  1129. }
  1130. .JKWTree-tree h3 {
  1131. font-size: 15px;
  1132. font-weight: 700;
  1133. margin: 10px 0;
  1134. }
  1135. .JKWTree-content {
  1136. flex: 1;
  1137. }
  1138. /* 选中某行时的背景色*/
  1139. .el-table__body tr.current-row>td {
  1140. background: #ff80ff !important;
  1141. /* 背景颜色 */
  1142. }
  1143. </style>
  1144. <style scoped>
  1145. :deep(.el-table td .cell) {
  1146. line-height: 20px !important;
  1147. }
  1148. :deep(.el-tabs__header){
  1149. margin-bottom: 0;
  1150. }
  1151. .search{
  1152. margin-left: 0px !important;
  1153. margin-right: 10px !important;
  1154. }
  1155. .bt{
  1156. margin-left: 2px !important;
  1157. padding: 3px !important;
  1158. font-size: 12px;
  1159. }
  1160. .el-tabs__header{
  1161. margin: 0px !important;
  1162. }
  1163. .gva-table-box{
  1164. padding: 0px !important;
  1165. }
  1166. .mab{
  1167. margin-bottom: 5px;
  1168. }
  1169. </style>