index.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809
  1. <template>
  2. <div class="mainContentBox">
  3. <avue-crud
  4. ref="crudRef"
  5. v-model:search="search"
  6. v-model="form"
  7. :data="data"
  8. :option="option"
  9. v-model:page="page"
  10. @row-save="createRow"
  11. @row-update="updateRow"
  12. @row-del="deleteRow"
  13. @search-change="searchChange"
  14. @search-reset="resetChange"
  15. @size-change="dataList"
  16. @current-change="dataList"
  17. @selection-change="selectionChange"
  18. >
  19. <template #menu-left="{ size }">
  20. <el-button
  21. type="primary"
  22. icon="el-icon-plus"
  23. :size="size"
  24. @click="openDialog(0, null)"
  25. >新增</el-button
  26. >
  27. <el-button
  28. :disabled="toDeleteIds.length < 1"
  29. type="danger"
  30. icon="el-icon-delete"
  31. :size="size"
  32. @click="multipleDelete"
  33. >删除</el-button
  34. >
  35. </template>
  36. <template #menu="{ size, row, index }">
  37. <el-button type="primary" link size="small" @click="openDialog(1, row)"
  38. ><i-ep-view />查看</el-button
  39. >
  40. <el-button type="primary" link size="small" @click="openDialog(2, row)"
  41. ><i-ep-edit />{{ row.state === "0" ? "编辑" : "流程" }}</el-button
  42. >
  43. </template>
  44. </avue-crud>
  45. <el-dialog
  46. v-model="dialog.visible"
  47. :title="dialog.title"
  48. width="75%"
  49. @close="dialog.visible = false"
  50. >
  51. <template #header="{ close, titleId, titleClass }">
  52. <el-button
  53. v-if="dialogType === 1"
  54. type="primary"
  55. @click="printPage"
  56. size="small"
  57. >打印</el-button
  58. >
  59. </template>
  60. <div style="width:100%; height: 30px;">
  61. <!-- <el-steps :active="1" finish-status="success">-->
  62. <el-steps :active="form.state === '8' ? 3: (form.state === '9' ? 2 : 1)" finish-status="success">
  63. <el-step :title="form.sendOrg" />
  64. <el-step title="运输中" />
  65. <el-step :title="form.applyOrg" />
  66. </el-steps>
  67. </div>
  68. <div class="card-container">
  69. <el-card style="width: 70%;margin-top:30px;" shadow="always">
  70. <div ref="toPrintRef">
  71. <el-row style="text-align: center">
  72. <el-col :span="24"
  73. ><el-text tag="b">零、部(组)件领用单</el-text></el-col
  74. >
  75. </el-row>
  76. <el-row>
  77. <el-col :span="14"></el-col>
  78. <el-col :span="5"
  79. ><el-text tag="p" v-if="form.applyCode">{{
  80. form.applyCode
  81. }}</el-text></el-col
  82. >
  83. <el-col :span="5"></el-col>
  84. </el-row>
  85. <el-row style="width: 100%; height: 30px"></el-row>
  86. <el-row>
  87. <el-col :span="2"><el-text tag="p">领用单位:</el-text></el-col>
  88. <el-col :span="6">
  89. <el-text tag="p" v-if="dialogType === 1 || form.state > 0">{{
  90. form.applyOrg
  91. }}</el-text>
  92. <el-input
  93. v-else
  94. size="small"
  95. style="width: 150px; padding-bottom: 5px"
  96. v-model="form.applyOrg"
  97. />
  98. </el-col>
  99. <el-col :span="2"><el-text tag="p">发件单位: </el-text></el-col>
  100. <el-col :span="6">
  101. <el-text tag="p" v-if="dialogType === 1 || form.state > 0"
  102. >{{ form.sendOrg }}
  103. </el-text>
  104. <el-input
  105. v-else
  106. size="small"
  107. style="width: 150px; padding-bottom: 5px"
  108. v-model="form.sendOrg"
  109. />
  110. </el-col>
  111. <el-col :span="2"><el-text tag="p">工单编号:</el-text></el-col>
  112. <el-col :span="6">
  113. <el-text tag="p" v-if="dialogType === 1 || form.state > 0">{{
  114. form.workOrderCode
  115. }}</el-text>
  116. <el-select
  117. v-else
  118. size="small"
  119. v-model="form.workOrderCode"
  120. placeholder="请选择工单号"
  121. clearable
  122. style="width: 150px; padding-bottom: 5px"
  123. filterable
  124. @change="changeOrder"
  125. >
  126. <el-option
  127. v-for="option in orderList"
  128. :key="option.workOrderCode"
  129. :label="option.workOrderCode"
  130. :value="option.workOrderCode"
  131. />
  132. </el-select>
  133. </el-col>
  134. </el-row>
  135. <el-table
  136. class="print-table"
  137. v-loading="loading"
  138. :data="tableDataList"
  139. border
  140. >
  141. <el-table-column label="序号" type="index" width="60" />
  142. <el-table-column label="工作令号" prop="workCode">
  143. <template v-slot="{ row }">
  144. <el-text v-if="dialogType === 1 || form.state > 0">{{
  145. row.workCode
  146. }}</el-text>
  147. <el-input v-else v-model="row.workCode" />
  148. </template>
  149. </el-table-column>
  150. <el-table-column label="零、部(组)件图号" prop="materialCode" />
  151. <el-table-column label="名称" prop="materialName" />
  152. <el-table-column label="数量" align="num">
  153. <template v-slot="{ row }">
  154. <el-text v-if="dialogType === 1 || form.state > 0">{{
  155. row.num
  156. }}</el-text>
  157. <el-input v-else v-model="row.num" type="number" />
  158. </template>
  159. </el-table-column>
  160. <el-table-column
  161. label="实际接收"
  162. align="receiveNum"
  163. v-if="form.state === '6' || form.state === '8'"
  164. >
  165. <template v-slot="{ row }">
  166. <el-text>{{ row.receiveNum }}</el-text>
  167. </template>
  168. </el-table-column>
  169. <el-table-column label="备注" align="remark">
  170. <template v-slot="{ row }">
  171. <el-text v-if="dialogType === 1 || form.state > 0">{{
  172. row.remark
  173. }}</el-text>
  174. <el-input v-else v-model="row.remark" />
  175. </template>
  176. </el-table-column>
  177. <el-table-column
  178. label="操作"
  179. align="remark"
  180. v-if="dialogType !== 1 && form.state === '0'"
  181. >
  182. <template v-slot="{ row, index }">
  183. <el-button
  184. type="danger"
  185. @click="minusItem(row)"
  186. icon="el-icon-minus"
  187. style="margin-left: 15px; width: 25px; height: 25px"
  188. circle
  189. />
  190. </template>
  191. </el-table-column>
  192. </el-table>
  193. <el-row>
  194. <el-col :span="2"><el-text tag="p">领用人:</el-text></el-col>
  195. <el-col :span="4"
  196. ><el-text tag="p">{{ form.applyUser }}</el-text></el-col
  197. >
  198. <el-col :span="2"><el-text tag="p">审核: </el-text></el-col>
  199. <el-col :span="4"
  200. ><el-text tag="p">{{ form.auditUser }} </el-text></el-col
  201. >
  202. <!-- <el-col :span="2" ><el-text tag="p">会签:</el-text></el-col>
  203. <el-col :span="4" ><el-text tag="p" >{{form.countersignUser}}</el-text></el-col>-->
  204. <el-col :span="2"><el-text tag="p">批准:</el-text></el-col>
  205. <el-col :span="4"
  206. ><el-text tag="p">{{ form.approveUser }}</el-text></el-col
  207. >
  208. </el-row>
  209. </div>
  210. </el-card>
  211. <el-card style="width: 28%;margin-top:30px;" shadow="always">
  212. <template #header>
  213. <div class="card-header">
  214. <span>领用流程</span>
  215. </div>
  216. <el-timeline style="max-width: 500px">
  217. <el-timeline-item center type="success" placement="top">
  218. <el-card>
  219. <h4>申请</h4>
  220. <el-form
  221. ref="maintenanceInfoForm2"
  222. size="small"
  223. :model="form"
  224. label-width="auto"
  225. style="max-width: 400px"
  226. >
  227. <el-form-item label="领用人员" prop="auditUser">
  228. <el-text
  229. tag="p"
  230. v-if="dialogType === 1 || form.state > 0"
  231. >{{ form.applyUser }}</el-text
  232. >
  233. <el-select
  234. v-else
  235. size="small"
  236. filterable
  237. v-model="form.applyUser"
  238. placeholder="请选择领用人员"
  239. clearable
  240. >
  241. <el-option
  242. v-for="option in userList"
  243. :key="option.userName"
  244. :label="option.nickName"
  245. :value="option.userName"
  246. />
  247. </el-select>
  248. </el-form-item>
  249. <el-form-item label="审核人员" v-if="form.state === '0'">
  250. <el-text
  251. tag="p"
  252. v-if="dialogType === 1 || form.state > 0"
  253. >{{ form.auditUser }}</el-text
  254. >
  255. <el-select
  256. v-else
  257. size="small"
  258. filterable
  259. v-model="form.auditUser"
  260. placeholder="请选择审核人员"
  261. clearable
  262. >
  263. <el-option
  264. v-for="option in userList"
  265. :key="option.userName"
  266. :label="option.nickName"
  267. :value="option.userName"
  268. />
  269. </el-select>
  270. </el-form-item>
  271. <el-form-item label="申请时间" v-if="form.state > 0">
  272. <el-text tag="p">{{ form.created }}</el-text>
  273. </el-form-item>
  274. <el-form-item
  275. style="margin-left: 28%"
  276. v-if="dialogType !== 1"
  277. >
  278. <el-button
  279. type="primary"
  280. @click="saveForm(1)"
  281. v-if="form.state === '0'"
  282. >申 请</el-button
  283. >
  284. <el-button
  285. type="success"
  286. @click="saveForm(0)"
  287. v-if="form.state === '0'"
  288. >保 存</el-button
  289. >
  290. </el-form-item>
  291. </el-form>
  292. </el-card>
  293. </el-timeline-item>
  294. <el-timeline-item
  295. center
  296. placement="top"
  297. :type="form.state > 1 ? 'success' : 'primary'"
  298. >
  299. <el-card>
  300. <h4>审核</h4>
  301. <el-form
  302. v-if="form.state >= 1"
  303. size="small"
  304. :model="form"
  305. label-width="auto"
  306. style="max-width: 400px"
  307. >
  308. <el-form-item label="审核人员" prop="auditUser">
  309. <el-text tag="p">{{ form.auditUser }}</el-text>
  310. </el-form-item>
  311. <el-form-item label="处理结果">
  312. <el-text
  313. tag="p"
  314. v-if="dialogType === 1 || form.state !== '1'"
  315. >{{
  316. form.state === "1"
  317. ? "待审核"
  318. : form.auditState === 0
  319. ? "通过"
  320. : "未通过"
  321. }}</el-text
  322. >
  323. <el-text
  324. tag="p"
  325. v-else-if="form.auditUser !== username"
  326. >{{
  327. form.auditState
  328. ? form.auditState === 0
  329. ? "通过"
  330. : "未通过"
  331. : "待审核"
  332. }}</el-text
  333. >
  334. <el-radio-group v-else v-model="form.auditState">
  335. <el-radio :value="0">通过</el-radio>
  336. <el-radio :value="1">不通过</el-radio>
  337. </el-radio-group>
  338. </el-form-item>
  339. <el-form-item
  340. label="审批人员"
  341. v-if="
  342. dialogType !== 1 &&
  343. form.state === '1' &&
  344. form.auditUser === username
  345. "
  346. >
  347. <el-select
  348. size="small"
  349. filterable
  350. v-model="form.approveUser"
  351. placeholder="请选择审批人员"
  352. clearable
  353. >
  354. <el-option
  355. v-for="option in userList"
  356. :key="option.userName"
  357. :label="option.nickName"
  358. :value="option.userName"
  359. />
  360. </el-select>
  361. </el-form-item>
  362. <el-form-item
  363. label="审核时间"
  364. v-if="form.audit && form.audit.time"
  365. >
  366. <el-text tag="p">{{ form.audit.time }}</el-text>
  367. </el-form-item>
  368. <el-form-item style="margin-left: 35%">
  369. <el-button
  370. type="primary"
  371. @click="saveForm(2)"
  372. v-if="
  373. dialogType !== 1 &&
  374. form.state === '1' &&
  375. form.auditUser === username
  376. "
  377. >审 核</el-button
  378. >
  379. </el-form-item>
  380. </el-form>
  381. </el-card>
  382. </el-timeline-item>
  383. <!-- <el-timeline-item center placement="top" :type="form.state > 3 ? 'success' : 'primary'">
  384. <el-card>
  385. <h4>会签</h4>
  386. <el-form v-if="form.state >= 3" size="small" :model="form" label-width="auto" style="max-width: 400px">
  387. <el-form-item v-for="item of form.countersign" label="会签人员:">
  388. <el-text tag="p" >{{item.user}}&#45;&#45;</el-text>
  389. <el-text tag="p" v-if="dialogType === 1 || item.user !== username">{{item.state === -1 ? '未审核' : item.state === 0 ? '通过' : '未通过'}}</el-text>
  390. <el-text tag="p" v-else-if="item.state !== -1 && item.user === username">{{item.state === 0 ? '通过' : '未通过'}}</el-text>
  391. <el-radio-group v-model="form.countersignState" v-if="dialogType !== 1 && item.state === -1 && item.user === username">
  392. <el-radio :value=0>通过</el-radio>
  393. <el-radio :value=1>不通过</el-radio>
  394. </el-radio-group>
  395. </el-form-item>
  396. <el-form-item label="批准人员" v-if="dialogType !== 1 && form.countersignOk && form.state === '3'">
  397. <el-select
  398. size="small"
  399. v-model="form.approveUser"
  400. placeholder="请选择批准人员"
  401. clearable >
  402. <el-option
  403. v-for="option in userList"
  404. :key="option.userName"
  405. :label="option.nickName"
  406. :value="option.userName" />
  407. </el-select>
  408. </el-form-item>
  409. <el-form-item label="通过时间" v-if="form.countersignInfo && form.countersignInfo.time">
  410. <el-text tag="p" >{{form.countersignInfo.time}}</el-text>
  411. </el-form-item>
  412. <el-form-item style="margin-left: 35%">
  413. <el-button type="primary" v-if="dialogType !== 1 && form.state === '3' && form.countersignUser.includes(username) && form.countersignBtn" @click="saveForm(3)">审 核</el-button>
  414. </el-form-item>
  415. </el-form>
  416. </el-card>
  417. </el-timeline-item>-->
  418. <el-timeline-item
  419. center
  420. placement="top"
  421. :type="form.state > 5 ? 'success' : 'primary'"
  422. >
  423. <el-card>
  424. <h4>批准</h4>
  425. <el-form
  426. v-if="form.state >= 5"
  427. size="small"
  428. :model="form"
  429. label-width="auto"
  430. style="max-width: 400px"
  431. >
  432. <el-form-item label="审批人" v-if="form.state > 5">
  433. <el-text tag="p">{{ form.approve.user }}</el-text>
  434. </el-form-item>
  435. <el-form-item label="审批结果">
  436. <el-text
  437. tag="p"
  438. v-if="
  439. dialogType === 1 ||
  440. form.state === '6' ||
  441. form.state === '7'
  442. "
  443. >{{
  444. form.state === "5"
  445. ? "待审批"
  446. : form.state === "6"
  447. ? "通过"
  448. : "未通过"
  449. }}</el-text
  450. >
  451. <el-text tag="p" v-else-if="form.approveUser !== username"
  452. >待审批</el-text
  453. >
  454. <el-radio-group v-else v-model="form.approveState">
  455. <el-radio :value="0">通过</el-radio>
  456. <el-radio :value="1">不通过</el-radio>
  457. </el-radio-group>
  458. </el-form-item>
  459. <el-form-item label="审批时间" v-if="form.state > 5">
  460. <el-text tag="p">{{ form.approve.time }}</el-text>
  461. </el-form-item>
  462. <el-form-item style="margin-left: 35%">
  463. <el-button
  464. type="primary"
  465. @click="saveForm(4)"
  466. v-if="
  467. dialogType !== 1 &&
  468. form.state === '5' &&
  469. form.approveUser === username
  470. "
  471. >审 核</el-button
  472. >
  473. </el-form-item>
  474. </el-form>
  475. </el-card>
  476. </el-timeline-item>
  477. </el-timeline>
  478. </template>
  479. </el-card>
  480. </div>
  481. </el-dialog>
  482. </div>
  483. </template>
  484. <script setup>
  485. import { useUserStoreHook } from "@/store/index";
  486. import { ref, getCurrentInstance } from "vue";
  487. import { html2CanvasPrint } from "@/utils/common";
  488. import { useCrud } from "@/hooks/userCrud";
  489. import dictDataUtil from "@/common/configs/dictDataUtil";
  490. import {
  491. queryApplyInfoDetails,
  492. queryWorkOrderList,
  493. saveApplyInfoDetails,
  494. auditApplyInfoDetails,
  495. } from "@/api/order";
  496. import { getUserList } from "@/api/system/user";
  497. import { useCommonStoreHook } from "@/store";
  498. const { isShowTable, tableType } = toRefs(useCommonStoreHook());
  499. const test = () => {
  500. isShowTable.value = true;
  501. tableType.value = tableType.value == 1 ? 2 : 1;
  502. };
  503. // 1.定义ref
  504. const toPrintRef = ref(null);
  505. // 传入一个url,后面不带/
  506. const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
  507. useCrud({
  508. src: "/api/v1/plan/requisition",
  509. });
  510. const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
  511. Methords; //增删改查
  512. const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
  513. const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
  514. const { username } = useUserStoreHook().user;
  515. const minusItem = (row) => {
  516. tableDataList.value = tableDataList.value.filter(
  517. (item) => item.id !== row.id
  518. );
  519. };
  520. const changeOrder = (val) => {
  521. queryApplyInfoDetails({ workOrderCode: val }).then((data) => {
  522. tableDataList.value = data.data;
  523. });
  524. };
  525. const saveForm = (type) => {
  526. let state = type;
  527. let step = null;
  528. let nextUsers = "";
  529. if (type === 1 || type === 0) {
  530. if (tableDataList.value.length === 0) {
  531. ElMessage.error("当前没有申请的物料信息");
  532. return;
  533. }
  534. for (let item of tableDataList.value) {
  535. if (!item.workCode) {
  536. ElMessage.error("工作令号不能为空");
  537. return;
  538. }
  539. if (!item.num || item.num <= 0) {
  540. ElMessage.error("物料数量不正确");
  541. return;
  542. }
  543. }
  544. if (!form.value.applyUser) {
  545. ElMessage.error("领用人员不能为空");
  546. return;
  547. }
  548. if (!form.value.auditUser) {
  549. ElMessage.error("审核人员不能为空");
  550. return;
  551. }
  552. const params = {
  553. ...form.value,
  554. state: state,
  555. details: tableDataList.value,
  556. };
  557. saveApplyInfoDetails(params).then((data) => {
  558. if (data.code === "200") {
  559. ElMessage.success(data.msg);
  560. dialog.visible = false;
  561. dataList();
  562. } else {
  563. ElMessage.error(data.msg);
  564. }
  565. });
  566. return;
  567. }
  568. step = "audit";
  569. if (type === 2) {
  570. if (form.value.auditState != undefined) {
  571. if (form.value.auditState === 0 && !form.value.approveUser) {
  572. ElMessage.error("审批人员不能为空");
  573. return;
  574. }
  575. } else {
  576. if (!form.value.auditState) {
  577. ElMessage.error("请选择处理结果");
  578. return;
  579. }
  580. }
  581. nextUsers = form.value.approveUser;
  582. state = form.value.auditState;
  583. }
  584. /*if(type === 3){
  585. step = "countersign";
  586. if(!form.value.approveUser && form.value.countersignOk){
  587. ElMessage.error("请选择审批人员")
  588. return;
  589. }
  590. if(form.value.countersignState === undefined){
  591. ElMessage.error("请选择处理结果")
  592. return;
  593. }
  594. nextUsers = form.value.approveUser
  595. state = form.value.countersignState
  596. }*/
  597. if (type === 4) {
  598. step = "approve";
  599. if (form.value.approveState === undefined) {
  600. ElMessage.error("请选择处理结果");
  601. return;
  602. }
  603. state = form.value.approveState;
  604. }
  605. const params = {
  606. id: form.value.id,
  607. state: state,
  608. currentStep: step,
  609. nextUser: nextUsers,
  610. };
  611. auditApplyInfoDetails(params).then((data) => {
  612. if (data.code === "200") {
  613. ElMessage.success(data.msg);
  614. dialog.visible = false;
  615. dataList();
  616. } else {
  617. ElMessage.error(data.msg);
  618. }
  619. });
  620. };
  621. const loading = ref(false);
  622. const crudRef = ref(null); //crudRef.value 获取avue-crud对象
  623. const userList = ref([]);
  624. const orderList = ref([]);
  625. const dialogType = ref(false);
  626. const dialog = reactive({
  627. title: "领用单",
  628. visible: false,
  629. });
  630. const tableDataList = ref([]);
  631. const openDialog = (type, row) => {
  632. dialogType.value = type;
  633. tableDataList.value = [];
  634. form.value = {};
  635. form.value.sendOrg = "周转库";
  636. form.value.applyOrg = "制造中心";
  637. form.value.state = "0";
  638. if (type !== 0) {
  639. queryApplyInfoDetails({ applyCode: row.applyCode }).then((data) => {
  640. tableDataList.value = data.data;
  641. });
  642. form.value = row;
  643. }
  644. form.value.countersign = [];
  645. if (row && row.flowInfo) {
  646. let json = JSON.parse(row.flowInfo);
  647. let auditInfo = json.audit;
  648. if (auditInfo) {
  649. form.value.audit = auditInfo.info;
  650. form.value.auditState = form.value.audit.state;
  651. }
  652. if (row.countersignUser) {
  653. form.value.countersignUsers = row.countersignUser.split(",");
  654. }
  655. form.value.countersignBtn = false;
  656. if (json.countersign) {
  657. form.value.countersign = json.countersign.list;
  658. form.value.countersignInfo = json.countersign.info;
  659. //当断当前是否最后一个
  660. let isOk = true;
  661. for (let obj of form.value.countersign) {
  662. if (obj.state === -1 && obj.user === username) {
  663. form.value.countersignBtn = true;
  664. }
  665. if (obj.user !== username && obj.state === -1) {
  666. isOk = false;
  667. }
  668. }
  669. form.value.countersignOk = isOk;
  670. }
  671. if (json.approve) {
  672. form.value.approve = json.approve.info;
  673. }
  674. form.value.approveUser = row.approveUser;
  675. }
  676. dialog.visible = true;
  677. getUserList({}).then((data) => {
  678. userList.value = data.data;
  679. });
  680. };
  681. const printPage = () => {
  682. html2CanvasPrint(toPrintRef.value);
  683. };
  684. // 设置表格列或者其他自定义的option
  685. option.value = Object.assign(option.value, {
  686. delBtn: false,
  687. addBtn: false,
  688. editBtn: false,
  689. viewBtn: false,
  690. selection: true,
  691. column: [
  692. {
  693. label: "领用单号",
  694. prop: "applyCode",
  695. search: true,
  696. width: 150,
  697. overHidden: true,
  698. },
  699. {
  700. label: "工单单号",
  701. prop: "workOrderCode",
  702. search: true,
  703. width: 150,
  704. overHidden: true,
  705. },
  706. {
  707. label: "订单编号",
  708. prop: "orderCode",
  709. search: true,
  710. width: 150,
  711. overHidden: true,
  712. },
  713. {
  714. label: "领用单位",
  715. prop: "applyOrg",
  716. width: 150,
  717. overHidden: true,
  718. },
  719. {
  720. label: "发件单位",
  721. prop: "sendOrg",
  722. width: 150,
  723. overHidden: true,
  724. },
  725. {
  726. label: "领用人员",
  727. prop: "applyUser",
  728. width: 150,
  729. overHidden: true,
  730. search: true,
  731. },
  732. {
  733. label: "审核人员",
  734. prop: "auditUser",
  735. width: 150,
  736. overHidden: true,
  737. },
  738. /* {
  739. label: "会签人员",
  740. width: 150,
  741. overHidden: true,
  742. prop: "countersignUser",
  743. },*/
  744. {
  745. label: "审批人员",
  746. width: 150,
  747. overHidden: true,
  748. prop: "approveUser",
  749. },
  750. {
  751. label: "状态",
  752. prop: "state",
  753. width: 150,
  754. type: "select",
  755. dicUrl:
  756. dictDataUtil.request_url + dictDataUtil.TYPE_CODE.requisition_state,
  757. props: {
  758. label: "dictLabel", // 下拉菜单显示的字段
  759. value: "dictValue", // 下拉菜单值的字
  760. },
  761. },
  762. {
  763. label: "创建时间",
  764. prop: "created",
  765. width: 160,
  766. display: false,
  767. },
  768. ],
  769. });
  770. onMounted(() => {
  771. let url = window.location.href;
  772. if (url.includes("workOrderCode")) {
  773. search.value.workOrderCode = url.substring(
  774. url.indexOf("workOrderCode") + 14
  775. );
  776. }
  777. queryWorkOrderList({}).then((data) => {
  778. if (!data.data) {
  779. ElMessage.warning("请维护物料BOM");
  780. }
  781. orderList.value = data.data;
  782. });
  783. // console.log("crudRef", crudRef)
  784. dataList();
  785. });
  786. </script>
  787. <style scoped>
  788. :deep(.card-container .el-form-item) {
  789. display: flex;
  790. justify-content: center;
  791. align-items: center;
  792. height: 15px; /* 根据需要调整高度 */
  793. }
  794. :deep(.el-timeline-item) {
  795. padding-bottom: 0px;
  796. position: relative;
  797. }
  798. .card-container {
  799. display: flex;
  800. justify-content: space-around;
  801. }
  802. </style>