Modelchange.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839
  1. <template>
  2. <div>
  3. <layout>
  4. <layout-header>
  5. <div class="">
  6. <!-- 按钮部分-->
  7. <el-form ref="elSearchFormRef" class="demo-form-inline" :rules="searchRule" >
  8. <el-form-item>
  9. <!-- <el-input v-model="searchInfo" placeholder="搜索工单编号" clearable style="width: 200px;margin: 5px"></el-input> -->
  10. </el-form-item>
  11. </el-form>
  12. </div>
  13. </layout-header>
  14. <layout>
  15. <!-- 左侧树侧形结构-->
  16. <layout-sider :resize-directions="['right']" :width="190" style="margin-right: 10px;">
  17. <div class="JKWTree-tree" style="height: 200px">
  18. <h3>换型换版维护</h3>
  19. <el-tree :data="treeData" class="treecolor" :props="defaultProps" @node-click="handleNodeClick" @node-expand="handleNodeExpand">
  20. </el-tree>
  21. </div>
  22. </layout-sider>
  23. <!-- 右侧区域 -->
  24. <layout-content >
  25. <div class="gva-table-box">
  26. <!-- 表格数据 -->
  27. <el-table ref="multipleTable" style="width: 100%;height: 70vh" tooltip-effect="dark"
  28. :row-style="{ height: '0px' }" :header-cell-style="{ padding: '0px' }"
  29. :cell-style="{ padding: '5px' }" :header-row-style="{ height: '0px' }"
  30. :data="hxhb_tableData" border row-key="ID"
  31. size="small"
  32. :cell-class-name="gxbgCellClass"
  33. highlight-current-row="true" @row-dblclick="updateCompanyFunc"
  34. @row-click="tableRowClick" :show-overflow-tooltip="true"
  35. @selection-change="handleSelectionChange">
  36. <el-table-column align="center" label="工单编号" prop="工单编号" width="110" />
  37. <el-table-column align="center" label="机台编号" prop="机台编号" width="100" />
  38. <el-table-column align="center" label="印件号" prop="印件号" width="70" />
  39. <el-table-column align="center" label="工序号" prop="工序号" width="70" />
  40. <el-table-column align="center" label="工序名称" prop="工序名称" width="150" />
  41. <el-table-column align="center" label="装版类型" prop="装版类型" width="80" />
  42. <el-table-column align="center" label="装版总工时" prop="装版总工时" width="90" />
  43. <el-table-column align="center" label="装版联拼数" prop="装版联拼数" width="90" />
  44. <el-table-column align="center" label="系数" prop="系数" width="60" />
  45. <el-table-column align="center" label="装版补产工时" prop="装版补产工时" width="110" />
  46. <el-table-column align="center" label="班组长确认状态" prop="班组长确认状态" width="130" />
  47. <el-table-column align="center" label="统计确认状态" prop="统计确认状态" width="130" />
  48. <el-table-column align="center" label="班组长" prop="班组长" width="140" />
  49. <el-table-column align="center" label="班组长确认时间" prop="班组长确认时间" width="160" />
  50. <el-table-column align="center" label="统计人员" prop="统计人员" width="160" />
  51. <el-table-column align="center" label="统计确认时间" prop="统计确认时间" width="160" />
  52. <el-table-column align="center" label="上报机台" prop="上报机台" width="220" />
  53. <el-table-column align="center" label="开始时间" prop="开始时间" width="150" />
  54. <el-table-column align="center" label="结束时间" prop="结束时间" width="150" />
  55. <el-table-column align="center" label="创建时间" prop="创建时间" width="160" />
  56. <el-table-column align="center" label="Uniqid" prop="Uniqid" width="100" />
  57. <el-table-column align="center" label="关联ID" prop="关联ID" width="100" />
  58. <el-table-column fixed="right" align="center" label="操作" width="210">
  59. <template #default="scope">
  60. <el-button
  61. type="primary"
  62. size="small"
  63. @click="handleLeaderAudit(scope.row)"
  64. style="margin-right: 5px; padding: 2px 8px; font-size: 12px;"
  65. >
  66. 班组长审核
  67. </el-button>
  68. <el-button
  69. type="success"
  70. size="small"
  71. @click="handleStatAudit(scope.row)"
  72. style="padding: 2px 8px; font-size: 12px;"
  73. >
  74. 统计员审核
  75. </el-button>
  76. </template>
  77. </el-table-column>
  78. </el-table>
  79. <!-- 分页 -->
  80. <div class="gva-pagination">
  81. <el-pagination layout="total" :current-page="page" :page-size="pageSize"
  82. :total="total" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
  83. </div>
  84. </div>
  85. </layout-content>
  86. </layout>
  87. </layout>
  88. </div>
  89. <!-- 班组长审核 -->
  90. <el-dialog
  91. v-model="leaderAuditDialog"
  92. title="班组长审核"
  93. width="700px"
  94. @close="closeLeaderAudit"
  95. >
  96. <div class="detail-form">
  97. <el-row :gutter="20">
  98. <el-col :span="12">
  99. <el-form-item label="工单编号">
  100. <el-input v-model="detailData.工单编号" placeholder="-" disabled/>
  101. </el-form-item>
  102. </el-col>
  103. <el-col :span="12">
  104. <el-form-item label="印件号">
  105. <el-input v-model="detailData.印件号" placeholder="-" disabled/>
  106. </el-form-item>
  107. </el-col>
  108. <el-col :span="12">
  109. <el-form-item label="工序号" label-width="70px">
  110. <el-input v-model="detailData.工序号" placeholder="-" disabled/>
  111. </el-form-item>
  112. </el-col>
  113. <el-col :span="12">
  114. <el-form-item label="工序名称">
  115. <el-input v-model="detailData.工序名称" placeholder="-" disabled/>
  116. </el-form-item>
  117. </el-col>
  118. <el-col :span="12">
  119. <el-form-item label="机台编号">
  120. <el-input v-model="detailData.机台编号" placeholder="-" disabled/>
  121. </el-form-item>
  122. </el-col>
  123. <el-col :span="24">
  124. <el-form-item label="班组长" style="width: 33.33%; float: left; margin-right: 0;" label-width="70px">
  125. <el-input v-model="detailData.班组长" placeholder="-" disabled/>
  126. </el-form-item>
  127. <el-form-item label="班组长确认状态" style="width: 33.33%; float: left; margin-right: 0;">
  128. <el-input v-model="detailData.班组长确认状态" placeholder="-" disabled />
  129. </el-form-item>
  130. <el-form-item label="班组长确认时间" style="width: 33.33%; float: left; margin-right: 0;">
  131. <el-input v-model="detailData.班组长确认时间" placeholder="-" disabled/>
  132. </el-form-item>
  133. </el-col>
  134. <el-col :span="24" style="clear: both;">
  135. <el-form-item label="统计人员" style="width: 33.33%; float: left; margin-right: 0;">
  136. <el-input v-model="detailData.统计人员" placeholder="-" disabled/>
  137. </el-form-item>
  138. <el-form-item label="统计确认状态" style="width: 33.33%; float: left; margin-right: 0;">
  139. <el-input v-model="detailData.统计确认状态" placeholder="-" disabled />
  140. </el-form-item>
  141. <el-form-item label="统计确认时间" style="width: 33.33%; float: left; margin-right: 0;">
  142. <el-input v-model="detailData.统计确认时间" placeholder="-" disabled/>
  143. </el-form-item>
  144. </el-col>
  145. <el-col :span="12">
  146. <el-form-item label="系数">
  147. <el-input v-model="leaderForm.coefficient" placeholder="请输入系数" />
  148. </el-form-item>
  149. </el-col>
  150. <el-col :span="12">
  151. <el-form-item label="换版联拼数">
  152. <el-input v-model="leaderForm.换版联拼数" placeholder="请输入换版联拼数" />
  153. </el-form-item>
  154. </el-col>
  155. <el-col :span="12">
  156. <el-form-item label="换版总工时">
  157. <el-input v-model="leaderForm.换版总工时" placeholder="请输入换版总工时" />
  158. </el-form-item>
  159. </el-col>
  160. <el-col :span="12">
  161. <el-form-item label="换版类型">
  162. <el-select v-model="leaderForm.换版类型" placeholder="请选择换版类型">
  163. <el-option label="装新版" value="装新版" />
  164. <el-option label="装旧版" value="装旧版" />
  165. <el-option label="换版" value="换版" />
  166. </el-select>
  167. </el-form-item>
  168. </el-col>
  169. <el-col :span="12">
  170. <el-form-item label="开始时间">
  171. <el-input v-model="detailData.开始时间" placeholder="-" disabled/>
  172. </el-form-item>
  173. </el-col>
  174. <el-col :span="12">
  175. <el-form-item label="结束时间">
  176. <el-input v-model="detailData.结束时间" placeholder="-" disabled/>
  177. </el-form-item>
  178. </el-col>
  179. <el-col :span="12">
  180. <el-form-item label="上报机台">
  181. <el-input v-model="detailData.上报机台" placeholder="-" disabled/>
  182. </el-form-item>
  183. </el-col>
  184. </el-row>
  185. </div>
  186. <template #footer>
  187. <span class="dialog-footer">
  188. <el-button @click="closeLeaderAudit">取消</el-button>
  189. <el-button type="primary" @click="submitLeaderAudit">确认</el-button>
  190. </span>
  191. </template>
  192. </el-dialog>
  193. <!-- 统计员审核 -->
  194. <el-dialog
  195. v-model="statAuditDialog"
  196. title="统计员审核"
  197. width="700px"
  198. @close="closeStatAudit"
  199. >
  200. <div class="detail-form">
  201. <el-row :gutter="20">
  202. <el-col :span="12">
  203. <el-form-item label="工单编号">
  204. <el-input v-model="detailData.工单编号" placeholder="-" disabled/>
  205. </el-form-item>
  206. </el-col>
  207. <el-col :span="12">
  208. <el-form-item label="印件号">
  209. <el-input v-model="detailData.印件号" placeholder="-" disabled/>
  210. </el-form-item>
  211. </el-col>
  212. <el-col :span="12">
  213. <el-form-item label="工序号" label-width="70px">
  214. <el-input v-model="detailData.工序号" placeholder="-" disabled/>
  215. </el-form-item>
  216. </el-col>
  217. <el-col :span="12">
  218. <el-form-item label="工序名称">
  219. <el-input v-model="detailData.工序名称" placeholder="-" disabled/>
  220. </el-form-item>
  221. </el-col>
  222. <el-col :span="12">
  223. <el-form-item label="机台编号">
  224. <el-input v-model="detailData.机台编号" placeholder="-" disabled/>
  225. </el-form-item>
  226. </el-col>
  227. <el-col :span="12">
  228. <el-form-item label="系数">
  229. <el-input v-model="detailData.系数" placeholder="-" disabled/>
  230. </el-form-item>
  231. </el-col>
  232. <el-col :span="24">
  233. <el-form-item label="班组长" style="width: 33.33%; float: left; margin-right: 0;" label-width="70px">
  234. <el-input v-model="detailData.班组长" placeholder="-" disabled/>
  235. </el-form-item>
  236. <el-form-item label="班组长确认状态" style="width: 33.33%; float: left; margin-right: 0;">
  237. <el-input v-model="detailData.班组长确认状态" placeholder="-" disabled />
  238. </el-form-item>
  239. <el-form-item label="班组长确认时间" style="width: 33.33%; float: left; margin-right: 0;">
  240. <el-input v-model="detailData.班组长确认时间" placeholder="-" disabled/>
  241. </el-form-item>
  242. </el-col>
  243. <el-col :span="24" style="clear: both;">
  244. <el-form-item label="统计人员" style="width: 33.33%; float: left; margin-right: 0;">
  245. <el-input v-model="detailData.统计人员" placeholder="-" disabled/>
  246. </el-form-item>
  247. <el-form-item label="统计确认状态" style="width: 33.33%; float: left; margin-right: 0;">
  248. <el-input v-model="detailData.统计确认状态" placeholder="-" disabled />
  249. </el-form-item>
  250. <el-form-item label="统计确认时间" style="width: 33.33%; float: left; margin-right: 0;">
  251. <el-input v-model="detailData.统计确认时间" placeholder="-" disabled/>
  252. </el-form-item>
  253. </el-col>
  254. <el-col :span="12">
  255. <el-form-item label="装版总工时">
  256. <el-input v-model="detailData.装版总工时" placeholder="-" disabled/>
  257. </el-form-item>
  258. </el-col>
  259. <el-col :span="12">
  260. <el-form-item label="装版类型">
  261. <el-input v-model="detailData.装版类型" placeholder="-" disabled/>
  262. </el-form-item>
  263. </el-col>
  264. <el-col :span="12">
  265. <el-form-item label="装版联拼数">
  266. <el-input v-model="detailData.装版联拼数" placeholder="-" disabled/>
  267. </el-form-item>
  268. </el-col>
  269. <el-col :span="12">
  270. <el-form-item label="装版补产工时">
  271. <el-input v-model="statForm.装版补产工时" placeholder="请输入装版补产工时" />
  272. </el-form-item>
  273. </el-col>
  274. <el-col :span="12">
  275. <el-form-item label="开始时间">
  276. <el-input v-model="detailData.开始时间" placeholder="-" disabled/>
  277. </el-form-item>
  278. </el-col>
  279. <el-col :span="12">
  280. <el-form-item label="结束时间">
  281. <el-input v-model="detailData.结束时间" placeholder="-" disabled/>
  282. </el-form-item>
  283. </el-col>
  284. <el-col :span="12">
  285. <el-form-item label="上报机台">
  286. <el-input v-model="detailData.上报机台" placeholder="-" disabled/>
  287. </el-form-item>
  288. </el-col>
  289. </el-row>
  290. </div>
  291. <template #footer>
  292. <span class="dialog-footer">
  293. <el-button @click="closeStatAudit">取消</el-button>
  294. <el-button type="primary" @click="submitStatAudit">确认</el-button>
  295. </span>
  296. </template>
  297. </el-dialog>
  298. <!-- 明细数据对话框 -->
  299. <el-dialog
  300. v-model="detailDialogVisible"
  301. title="明细详情数据"
  302. width="700px"
  303. @close="closeDetailDialog"
  304. >
  305. <div class="detail-form">
  306. <el-row :gutter="20">
  307. <el-col :span="12">
  308. <el-form-item label="工单编号">
  309. <el-input v-model="detailData.工单编号" placeholder="-" disabled/>
  310. </el-form-item>
  311. </el-col>
  312. <el-col :span="12">
  313. <el-form-item label="印件号">
  314. <el-input v-model="detailData.印件号" placeholder="-" disabled/>
  315. </el-form-item>
  316. </el-col>
  317. <el-col :span="12">
  318. <el-form-item label="工序号" label-width="70px">
  319. <el-input v-model="detailData.工序号" placeholder="-" disabled/>
  320. </el-form-item>
  321. </el-col>
  322. <el-col :span="12">
  323. <el-form-item label="工序名称">
  324. <el-input v-model="detailData.工序名称" placeholder="-" disabled/>
  325. </el-form-item>
  326. </el-col>
  327. <el-col :span="12">
  328. <el-form-item label="机台编号">
  329. <el-input v-model="detailData.机台编号" placeholder="-" disabled/>
  330. </el-form-item>
  331. </el-col>
  332. <el-col :span="12">
  333. <el-form-item label="系数">
  334. <el-input v-model="detailData.系数" placeholder="-" disabled/>
  335. </el-form-item>
  336. </el-col>
  337. <el-col :span="24">
  338. <el-form-item label="班组长" style="width: 33.33%; float: left; margin-right: 0;" label-width="70px">
  339. <el-input v-model="detailData.班组长" placeholder="-" disabled/>
  340. </el-form-item>
  341. <el-form-item label="班组长确认状态" style="width: 33.33%; float: left; margin-right: 0;">
  342. <el-input v-model="detailData.班组长确认状态" placeholder="-" disabled />
  343. </el-form-item>
  344. <el-form-item label="班组长确认时间" style="width: 33.33%; float: left; margin-right: 0;">
  345. <el-input v-model="detailData.班组长确认时间" placeholder="-" disabled/>
  346. </el-form-item>
  347. </el-col>
  348. <el-col :span="24" style="clear: both;">
  349. <el-form-item label="统计人员" style="width: 33.33%; float: left; margin-right: 0;">
  350. <el-input v-model="detailData.统计人员" placeholder="-" disabled/>
  351. </el-form-item>
  352. <el-form-item label="统计确认状态" style="width: 33.33%; float: left; margin-right: 0;">
  353. <el-input v-model="detailData.统计确认状态" placeholder="-" disabled />
  354. </el-form-item>
  355. <el-form-item label="统计确认时间" style="width: 33.33%; float: left; margin-right: 0;">
  356. <el-input v-model="detailData.统计确认时间" placeholder="-" disabled/>
  357. </el-form-item>
  358. </el-col>
  359. <el-col :span="12">
  360. <el-form-item label="装版总工时">
  361. <el-input v-model="detailData.装版总工时" placeholder="-" disabled/>
  362. </el-form-item>
  363. </el-col>
  364. <el-col :span="12">
  365. <el-form-item label="装版类型">
  366. <el-input v-model="detailData.装版类型" placeholder="-" disabled/>
  367. </el-form-item>
  368. </el-col>
  369. <el-col :span="12">
  370. <el-form-item label="装版联拼数">
  371. <el-input v-model="detailData.装版联拼数" placeholder="-" disabled/>
  372. </el-form-item>
  373. </el-col>
  374. <el-col :span="12">
  375. <el-form-item label="装版补产工时">
  376. <el-input v-model="detailData.装版补产工时" placeholder="-" disabled/>
  377. </el-form-item>
  378. </el-col>
  379. <el-col :span="12">
  380. <el-form-item label="开始时间">
  381. <el-input v-model="detailData.开始时间" placeholder="-" disabled/>
  382. </el-form-item>
  383. </el-col>
  384. <el-col :span="12">
  385. <el-form-item label="结束时间">
  386. <el-input v-model="detailData.结束时间" placeholder="-" disabled/>
  387. </el-form-item>
  388. </el-col>
  389. </el-row>
  390. </div>
  391. <template #footer>
  392. <span class="dialog-footer">
  393. <el-button @click="closeDetailDialog">取消</el-button>
  394. <el-button type="primary" @click="closeDetailDialog">确认</el-button>
  395. </span>
  396. </template>
  397. </el-dialog>
  398. </template>
  399. <script setup>
  400. // 全量引入格式化工具 请按需保留
  401. import { Layout, LayoutSider, LayoutContent } from '@arco-design/web-vue';
  402. import {
  403. Mount_Hours_getTab,
  404. getMountList,
  405. leaderConfirm,
  406. statisticsConfirm,
  407. } from "@/api/mes/job";
  408. import {ref, reactive, onMounted} from 'vue'
  409. import { exportExcelFile } from '@/utils/excel'
  410. import {ElMessage} from "element-plus";
  411. defineOptions({name: 'Company'})
  412. import { useUserStore } from '@/pinia/modules/user'
  413. const userStore = useUserStore()
  414. const sys_id='['+userStore.userInfo.userName+'/'+userStore.userInfo.nickName+']'
  415. //响应式数据
  416. const searchInfo = ref('')
  417. const page = ref(1)
  418. const pageSize = ref(10)
  419. const total = ref(0)
  420. const hxhb_tableData = ref([])
  421. const mxtableData = ref([])
  422. // 树结构相关数据
  423. const treeData = ref([])
  424. const defaultProps = {
  425. children: 'children',
  426. label: 'label'
  427. }
  428. // 审核对话框相关数据
  429. const leaderAuditDialog = ref(false)
  430. const statAuditDialog = ref(false)
  431. const currentRow = ref(null)
  432. const leaderForm = reactive({
  433. coefficient: '',
  434. leader: '',
  435. Uniqid: '',
  436. 换版联拼数: '',
  437. 换版总工时: '',
  438. 换版类型: ''
  439. })
  440. const statForm = reactive({
  441. 装版补产工时: '',
  442. statistics: '',
  443. Uniqid: '',
  444. yieldUid: ''
  445. })
  446. // 明细对话框相关数据
  447. const detailDialogVisible = ref(false)
  448. const detailData = ref({})
  449. // =========== 获取左侧树结构数据 ===========
  450. const getTreeData = async () => {
  451. try {
  452. const res = await Mount_Hours_getTab()
  453. if (res.code === 0 && res.data) {
  454. const data = res.data
  455. const newTreeData = []
  456. // 处理接口返回的数据,构建树结构
  457. for (const yearMonth in data) {
  458. // 年份月份节点
  459. const yearMonthNode = {
  460. label: yearMonth,
  461. children: []
  462. }
  463. const workshops = data[yearMonth]
  464. for (const workshopName in workshops) {
  465. // 车间节点
  466. const workshopNode = {
  467. label: workshopName,
  468. children: []
  469. }
  470. // 日期节点
  471. workshops[workshopName].forEach(date => {
  472. workshopNode.children.push({
  473. label: date,
  474. value: {
  475. yearMonth: yearMonth,
  476. workshop: workshopName,
  477. date: date
  478. }
  479. })
  480. })
  481. yearMonthNode.children.push(workshopNode)
  482. }
  483. newTreeData.push(yearMonthNode)
  484. }
  485. treeData.value = newTreeData
  486. } else {
  487. ElMessage.error('获取树结构数据失败')
  488. }
  489. } catch (error) {
  490. console.error('获取树结构数据异常:', error)
  491. ElMessage.error('获取树结构数据异常')
  492. }
  493. }
  494. // 加载详情数据
  495. const loadDetailData = async (params) => {
  496. try {
  497. const { date, workshop } = params
  498. const res = await getMountList({ day: date, sist: workshop })
  499. if (res.code === 0 && res.data) {
  500. // 更新表格数据
  501. hxhb_tableData.value = res.data
  502. total.value = res.data.length
  503. } else {
  504. hxhb_tableData.value = []
  505. total.value = 0
  506. ElMessage.warning('暂无数据')
  507. }
  508. } catch (error) {
  509. console.error('获取详情数据异常:', error)
  510. ElMessage.error('获取详情数据异常')
  511. }
  512. }
  513. // 节点点击事件
  514. const handleNodeClick = (data, node, component) => {
  515. // 取消所有节点的颜色
  516. const allNodes = document.querySelectorAll('.treecolor .el-tree-node');
  517. allNodes.forEach(node => {
  518. node.querySelector('.el-tree-node__label').style.color = '';
  519. });
  520. // 获取点击的节点
  521. console.log(node)
  522. const clickedNodeId = node['id'];
  523. const clickedNode = document.querySelector(`.treecolor .el-tree-node[data-key="${clickedNodeId}"]`);
  524. if (clickedNode) {
  525. // 给当前点击的节点改变颜色
  526. clickedNode.querySelector('.el-tree-node__label').style.color = 'red';
  527. }
  528. // 只有叶子节点(日期)才执行查询
  529. if (!data.children && data.value) {
  530. console.log('点击了日期节点:', data.value)
  531. // 调用接口获取详情数据
  532. loadDetailData(data.value)
  533. }
  534. }
  535. // 节点展开事件
  536. const handleNodeExpand = (data, node, component) => {
  537. console.log('展开节点:', data)
  538. }
  539. // 表格行点击事件
  540. const tableRowClick = (row) => {
  541. console.log('表格行点击:', row)
  542. }
  543. // 选择变化事件
  544. const handleSelectionChange = (selection) => {
  545. console.log('选择变化:', selection)
  546. }
  547. // 分页变化事件
  548. const handleCurrentChange = (val) => {
  549. page.value = val
  550. }
  551. const handleSizeChange = (val) => {
  552. pageSize.value = val
  553. page.value = 1
  554. }
  555. // 双击事件 - 显示明细数据
  556. const updateCompanyFunc = (row) => {
  557. console.log('双击行:', row)
  558. // 设置明细数据
  559. detailData.value = { ...row }
  560. // 打开明细对话框
  561. detailDialogVisible.value = true
  562. }
  563. // 单元格样式类
  564. const gxbgCellClass = ({row, column, rowIndex, columnIndex}) => {
  565. // 可以根据需要为特定列设置样式
  566. if (column.property === '装版类型') {
  567. if (row['装版类型'] === '装新版') {
  568. return 'new-plate'
  569. } else if (row['装版类型'] === '装旧版') {
  570. return 'old-plate'
  571. }
  572. }
  573. return ''
  574. }
  575. // 班组长审核处理
  576. const handleLeaderAudit = (row) => {
  577. currentRow.value = row
  578. // 设置审核表单数据
  579. leaderForm.换版联拼数 = row['装版联拼数']
  580. leaderForm.换版总工时 = row['装版总工时']
  581. leaderForm.换版类型 = row['装版类型']
  582. leaderForm.coefficient = row['系数']
  583. leaderForm.leader = sys_id
  584. leaderForm.Uniqid = row['Uniqid']
  585. // 设置明细数据
  586. detailData.value = { ...row }
  587. // 打开对话框
  588. leaderAuditDialog.value = true
  589. }
  590. // 统计员审核处理
  591. const handleStatAudit = (row) => {
  592. currentRow.value = row
  593. // 初始化表单数据
  594. statForm.装版补产工时 = row['装版补产工时']
  595. statForm.statistics = sys_id
  596. statForm.Uniqid = row['Uniqid']
  597. statForm.yieldUid = row['关联ID']
  598. // 设置明细数据
  599. detailData.value = { ...row }
  600. // 打开对话框
  601. statAuditDialog.value = true
  602. }
  603. // 班组长审核提交
  604. const submitLeaderAudit = async () => {
  605. try {
  606. // 调用实际的班组长审核接口
  607. console.log('提交班组长审核参数:', leaderForm)
  608. const res = await leaderConfirm(leaderForm)
  609. if (res.code === 0) {
  610. ElMessage.success('班组长审核成功')
  611. // 更新当前行的状态
  612. if (currentRow.value) {
  613. currentRow.value['班组长确认状态'] = '已确认'
  614. currentRow.value['班组长确认时间'] = new Date().toLocaleString()
  615. currentRow.value['班组长'] = leaderForm.leader
  616. currentRow.value['系数'] = leaderForm.coefficient
  617. currentRow.value['装版联拼数'] = leaderForm.换版联拼数
  618. currentRow.value['装版总工时'] = leaderForm.换版总工时
  619. currentRow.value['装版类型'] = leaderForm.换版类型
  620. }
  621. // 关闭对话框
  622. leaderAuditDialog.value = false
  623. } else {
  624. ElMessage.error(res.msg || '班组长审核失败')
  625. }
  626. } catch (error) {
  627. console.error('班组长审核失败:', error)
  628. ElMessage.error('班组长审核失败')
  629. }
  630. }
  631. // 统计员审核提交
  632. const submitStatAudit = async () => {
  633. try {
  634. // 调用实际的统计员审核接口
  635. console.log('提交统计员审核参数:', statForm)
  636. const res = await statisticsConfirm(statForm)
  637. if (res.code === 0) {
  638. ElMessage.success('统计员审核成功')
  639. // 更新当前行的状态
  640. if (currentRow.value) {
  641. currentRow.value['统计确认状态'] = '已确认'
  642. currentRow.value['统计确认时间'] = new Date().toLocaleString()
  643. currentRow.value['统计人员'] = statForm.statistics
  644. currentRow.value['装版补产工时'] = statForm.装版补产工时
  645. }
  646. // 关闭对话框
  647. statAuditDialog.value = false
  648. } else {
  649. ElMessage.error(res.msg || '统计员审核失败')
  650. }
  651. } catch (error) {
  652. console.error('统计员审核失败:', error)
  653. ElMessage.error('统计员审核失败')
  654. }
  655. }
  656. // 关闭班组长审核对话框
  657. const closeLeaderAudit = () => {
  658. leaderAuditDialog.value = false
  659. }
  660. // 关闭统计员审核对话框
  661. const closeStatAudit = () => {
  662. statAuditDialog.value = false
  663. }
  664. // 关闭明细对话框
  665. const closeDetailDialog = () => {
  666. detailDialogVisible.value = false
  667. }
  668. // 页面挂载时获取数据
  669. onMounted(() => {
  670. getTreeData()
  671. })
  672. </script>
  673. <style scoped>
  674. .form-container {
  675. display: flex;
  676. flex-wrap: wrap;
  677. }
  678. .form-column {
  679. /*flex: 1;*/
  680. margin-right: 15px; /* 调整列之间的间距 */
  681. }
  682. /* 左侧输入框宽度调整 */
  683. .form-column .el-form-item .el-input {
  684. width: 150px; /* 调整左侧输入框的宽度 */
  685. }
  686. /* 明细对话框样式 */
  687. .detail-form .el-form-item {
  688. margin-bottom: 15px;
  689. }
  690. .detail-form .el-form-item__label {
  691. font-weight: bold;
  692. color: #606266;
  693. }
  694. :deep(.hui-plan-usage-lows div) {
  695. color: #8c939d !important;
  696. }
  697. :deep(.lan-plan-usage-lows div) {
  698. color: blue !important;
  699. font-weight: bold;
  700. }
  701. /* 媒体查询,根据需要调整断点 */
  702. @media screen and (max-width: 768px) {
  703. .form-column {
  704. flex: 1 0 100%; /* 在小屏幕下变成单列布局 */
  705. margin-right: 0;
  706. }
  707. }
  708. .JKWTree-container {
  709. display: flex;
  710. }
  711. .JKWTree-tree {
  712. /*width: 300px;*/
  713. background-color: #fff;
  714. padding: 10px;
  715. margin-right: 20px;
  716. }
  717. .JKWTree-tree h3 {
  718. font-size: 15px;
  719. font-weight: 700;
  720. margin: 10px 0;
  721. }
  722. .JKWTree-content {
  723. flex: 1;
  724. }
  725. /* 选中某行时的背景色 */
  726. :deep(.el-table__body tr.current-row) > td {
  727. background: #ff80ff !important;
  728. }
  729. /* 装版类型样式 */
  730. /* :deep(.new-plate) {
  731. background-color: #e6f7ff !important;
  732. color: #1890ff;
  733. }
  734. :deep(.old-plate) {
  735. background-color: #f6ffed !important;
  736. color: #52c41a;
  737. } */
  738. </style>
  739. <style scoped>
  740. :deep(.el-table td .cell) {
  741. line-height: 20px !important;
  742. }
  743. :deep(.el-tabs__header){
  744. margin-bottom: 0;
  745. }
  746. .search{
  747. margin-left: 0px !important;
  748. margin-right: 10px !important;
  749. }
  750. .bt{
  751. margin-left: 2px !important;
  752. padding: 3px !important;
  753. font-size: 12px;
  754. }
  755. .el-tabs__header{
  756. margin: 0px !important;
  757. }
  758. .gva-table-box{
  759. padding: 0px !important;
  760. }
  761. .mab{
  762. margin-bottom: 5px;
  763. }
  764. </style>