sampling.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870
  1. <template>
  2. <div>
  3. <el-container>
  4. <el-scrollbar max-height="75vh">
  5. <el-aside>
  6. <div class="JKWTree-tree">
  7. <h3> 工单抽检记录维护</h3>
  8. <el-tree
  9. :data="treeData"
  10. :props="defaultProps"
  11. @node-click="handleNodeClick"
  12. />
  13. </div>
  14. </el-aside>
  15. </el-scrollbar>
  16. <el-container>
  17. <!-- <el-header>dd</el-header>-->
  18. <el-main>
  19. <div class="gva-search-box">
  20. <el-form
  21. ref="elSearchFormRef"
  22. :inline="true"
  23. :model="searchInfo"
  24. class="demo-form-inline"
  25. :rules="searchRule"
  26. >
  27. <el-form-item>
  28. <el-input
  29. v-model="searchInfo"
  30. :clearable="true"
  31. placeholder="输入工单编号"
  32. />
  33. </el-form-item>
  34. <el-form-item>
  35. <el-button
  36. type="primary"
  37. icon="search"
  38. @click="handlerSearch"
  39. >查询</el-button>
  40. <el-button
  41. type="primary"
  42. :icon="Search"
  43. @click="handleShowAdd"
  44. >新增
  45. </el-button>
  46. </el-form-item>
  47. </el-form>
  48. </div>
  49. <div class="gva-table-box">
  50. <!-- <div class="gva-btn-list">
  51. <el-button type="primary" icon="plus" @click="openDialog">新增</el-button>
  52. <el-popover v-model:visible="deleteVisible" :disabled="!multipleSelection.length" placement="top" width="160">
  53. <p>确定要删除吗?</p>
  54. <div style="text-align: right; margin-top: 8px;">
  55. <el-button type="primary" link @click="deleteVisible = false">取消</el-button>
  56. <el-button type="primary" @click="onDelete">确定</el-button>
  57. </div>
  58. <template #reference>
  59. <el-button icon="delete" style="margin-left: 10px;" :disabled="!multipleSelection.length" @click="deleteVisible = true">删除</el-button>
  60. </template>
  61. </el-popover>
  62. </div> -->
  63. <el-table
  64. ref="multipleTable"
  65. border
  66. style="width: 100%"
  67. tooltip-effect="dark"
  68. :data="tableData"
  69. row-key="ID"
  70. highlight-current-row
  71. :show-overflow-tooltip="true"
  72. :row-style="{ height: '20px' }"
  73. :cell-style="{ padding: '0px' }"
  74. :header-row-style="{ height: '20px' }"
  75. :header-cell-style="{ padding: '0px' }"
  76. @selection-change="handleSelectionChange"
  77. @row-dblclick="getDetailData"
  78. @row-click="handleSelectChange"
  79. >
  80. <el-table-column
  81. type="selection"
  82. width="55"
  83. />
  84. <el-table-column
  85. align="center"
  86. label="日期"
  87. prop="Sczl_rq"
  88. width="100"
  89. sortable
  90. />
  91. <el-table-column
  92. align="left"
  93. label="员工编号"
  94. prop="Sczl_bh"
  95. width="90"
  96. sortable
  97. />
  98. <el-table-column
  99. align="left"
  100. label="员工姓名"
  101. prop="name"
  102. width="90"
  103. sortable
  104. />
  105. <el-table-column
  106. align="left"
  107. label="工单编号"
  108. prop="Sczl_gdbh"
  109. width="90"
  110. sortable
  111. />
  112. <el-table-column
  113. align="left"
  114. label="产品名称"
  115. prop="Gd_cpmc"
  116. width="130"
  117. sortable
  118. />
  119. <el-table-column
  120. align="left"
  121. label="工序名称"
  122. prop="Sczl_gxmc"
  123. width="95"
  124. sortable
  125. />
  126. <el-table-column
  127. align="left"
  128. label="印件号"
  129. prop="sczl_yjno"
  130. width="70"
  131. sortable
  132. />
  133. <el-table-column
  134. align="left"
  135. label="工序号"
  136. prop="sczl_gxh"
  137. width="70"
  138. sortable
  139. />
  140. <el-table-column
  141. align="left"
  142. label="流程单号"
  143. prop="Sczl_num"
  144. width="85"
  145. sortable
  146. />
  147. <el-table-column
  148. align="left"
  149. label="抽检数"
  150. prop="Sczl_抽检数"
  151. width="70"
  152. sortable
  153. />
  154. <el-table-column
  155. align="left"
  156. label="A类废"
  157. prop="sczl_A类废"
  158. width="70" sortable
  159. />
  160. <el-table-column
  161. align="left"
  162. label="B类废"
  163. prop="sczl_B类废"
  164. width="70" sortable
  165. />
  166. <el-table-column
  167. align="left"
  168. label="C类废"
  169. prop="sczl_C类废"
  170. width="70" sortable
  171. />
  172. <el-table-column
  173. align="left"
  174. label="备注"
  175. prop="Sczl_desc"
  176. width="80" sortable
  177. />
  178. <el-table-column
  179. align="left"
  180. label="创建用户"
  181. prop="Sys_id"
  182. width="120" sortable
  183. />
  184. <el-table-column
  185. align="left"
  186. label="创建时间"
  187. prop="Sys_rq"
  188. width="160" sortable
  189. />
  190. <el-table-column
  191. align="left"
  192. label="修改时间"
  193. prop="Mod_rq"
  194. width="120" sortable
  195. />
  196. <el-table-column
  197. align="left"
  198. label="UNIQID"
  199. prop="UniqId"
  200. width="75" sortable
  201. />
  202. </el-table>
  203. <div class="gva-pagination">
  204. <el-pagination
  205. v-model:current-page="page"
  206. v-model:page-size="pageSize"
  207. layout="total, sizes, prev, pager, next, jumper"
  208. :page-sizes="[10, 30, 50, 100]"
  209. :total="total"
  210. @current-change="handleCurrentChange"
  211. @size-change="handleSizeChange"
  212. />
  213. </div>
  214. </div>
  215. <el-dialog
  216. v-model="dialogFormVisible"
  217. :before-close="closeDialog"
  218. :title="type"
  219. destroy-on-close
  220. width="800"
  221. >
  222. <!-- <el-scrollbar height="340px">-->
  223. <el-form
  224. ref="elFormRef"
  225. :model="detailData"
  226. :inline="true"
  227. label-position="right"
  228. :rules="rule"
  229. label-width="75px"
  230. >
  231. <el-form-item
  232. label="员工编号:"
  233. prop="address"
  234. >
  235. <el-input
  236. v-model="detailData.Sczl_bh"
  237. :clearable="true"
  238. @keyup.enter="handleGetYg"
  239. />
  240. </el-form-item>
  241. <el-form-item prop="image">
  242. <el-input
  243. v-model="detailData.name"
  244. :clearable="true"
  245. placeholder="请输入员工姓名"
  246. />
  247. </el-form-item>
  248. </el-form>
  249. <el-form
  250. ref="elFormRef"
  251. :model="detailData"
  252. :inline="true"
  253. label-position="right"
  254. :rules="rule"
  255. label-width="75px"
  256. >
  257. <el-form-item
  258. label="班组:"
  259. prop="address"
  260. >
  261. <!-- <el-input
  262. v-model="detailData.sczl_bzdh"
  263. :clearable="true"
  264. placeholder="请输入班组"
  265. /> -->
  266. <el-select v-model="detailData.sczl_bzdh" placeholder="" style="width: 70px"
  267. >
  268. <el-option label="A班" value="A班"></el-option>
  269. <el-option label="B班" value="B班"></el-option>
  270. </el-select>
  271. </el-form-item>
  272. <el-form-item
  273. label="日期:"
  274. prop="image"
  275. >
  276. <el-input
  277. v-model="detailData.Sczl_rq"
  278. :clearable="true"
  279. placeholder="请输入日期"
  280. />
  281. </el-form-item>
  282. </el-form>
  283. <el-form
  284. ref="elFormRef"
  285. :model="detailData"
  286. :inline="true"
  287. label-position="right"
  288. :rules="rule"
  289. label-width="75px"
  290. >
  291. <el-form-item
  292. label="工单编号:"
  293. prop="address"
  294. >
  295. <el-input
  296. v-model="detailData.Sczl_gdbh"
  297. :clearable="true"
  298. placeholder="请输入工单编号"
  299. />
  300. </el-form-item>
  301. <el-form-item prop="image">
  302. <el-input
  303. v-model="detailData.Gd_cpmc"
  304. :clearable="true"
  305. placeholder="请输入产品名称"
  306. />
  307. </el-form-item>
  308. </el-form>
  309. <el-form
  310. ref="elFormRef"
  311. :model="detailData"
  312. :inline="true"
  313. label-position="right"
  314. :rules="rule"
  315. label-width="75px"
  316. >
  317. <el-form-item
  318. label="工序名称:"
  319. prop="address"
  320. >
  321. <el-input
  322. v-model="detailData.Sczl_gxmc"
  323. :clearable="true"
  324. placeholder="请输入工序名称"
  325. style="width: 140px;"
  326. />
  327. </el-form-item>
  328. <el-form-item prop="image">
  329. <el-input
  330. v-model="detailData.sczl_gxh"
  331. :clearable="true"
  332. placeholder="请输入工序号"
  333. style="width: 140px;"
  334. />
  335. </el-form-item>
  336. <el-form-item
  337. label="流程单号:"
  338. prop="address"
  339. >
  340. <el-input
  341. v-model="detailData.Sczl_num"
  342. :clearable="true"
  343. placeholder="请输入流程单号"
  344. style="width: 140px;"
  345. />
  346. </el-form-item>
  347. </el-form>
  348. <el-form
  349. ref="elFormRef"
  350. :model="detailData"
  351. :inline="true"
  352. label-position="right"
  353. :rules="rule"
  354. label-width="75px"
  355. >
  356. <el-form-item
  357. label="抽检数量:"
  358. prop="address"
  359. >
  360. <el-input
  361. v-model="detailData.Sczl_抽检数"
  362. :clearable="true"
  363. placeholder="请输入抽检数量"
  364. style="width: 123px;"
  365. />
  366. </el-form-item>
  367. </el-form>
  368. <el-form
  369. ref="elFormRef"
  370. :model="detailData"
  371. :inline="true"
  372. label-position="right"
  373. :rules="rule"
  374. label-width="75px"
  375. >
  376. <el-form-item
  377. label="A类废品:"
  378. prop="address"
  379. >
  380. <el-input
  381. v-model="detailData.Sczl_A类废"
  382. :clearable="true"
  383. placeholder="请输入A类废品"
  384. style="width: 123px;"
  385. />
  386. </el-form-item>
  387. <el-form-item
  388. label="B类废品:"
  389. prop="image"
  390. >
  391. <el-input
  392. v-model="detailData.Sczl_B类废"
  393. :clearable="true"
  394. placeholder="请输入B类废品"
  395. style="width: 123px;"
  396. />
  397. </el-form-item>
  398. <el-form-item
  399. label="C类废品:"
  400. prop="address"
  401. >
  402. <el-input
  403. v-model="detailData.Sczl_C类废"
  404. :clearable="true"
  405. placeholder="请输入C类废品"
  406. style="width: 123px;"
  407. />
  408. </el-form-item>
  409. </el-form>
  410. <el-form
  411. ref="elFormRef"
  412. :model="detailData"
  413. label-position="right"
  414. :rules="rule"
  415. label-width="80px"
  416. >
  417. <el-form-item
  418. label="其他备注:"
  419. prop="address"
  420. >
  421. <el-input
  422. v-model="detailData.Sczl_desc"
  423. :clearable="true"
  424. placeholder="请输入其他备注"
  425. />
  426. </el-form-item>
  427. </el-form>
  428. <!-- </el-scrollbar>-->
  429. <template #footer>
  430. <div class="dialog-footer">
  431. <el-button @click="closeDialog">取 消</el-button>
  432. <el-button
  433. type="primary"
  434. @click="enterDialog"
  435. >确 定</el-button>
  436. </div>
  437. </template>
  438. </el-dialog>
  439. <!-- <el-dialog
  440. v-model="detailShow"
  441. style="width: 800px"
  442. lock-scroll
  443. :before-close="closeDetailShow"
  444. title="查看详情"
  445. destroy-on-close
  446. >
  447. <el-scrollbar height="550px">
  448. <el-descriptions
  449. column="1"
  450. border
  451. >
  452. <el-descriptions-item label="address字段">
  453. {{ formData.address }}
  454. </el-descriptions-item>
  455. <el-descriptions-item label="image字段">
  456. {{ formData.image }}
  457. </el-descriptions-item>
  458. <el-descriptions-item label="name字段">
  459. {{ formData.name }}
  460. </el-descriptions-item>
  461. </el-descriptions>
  462. </el-scrollbar>
  463. </el-dialog>-->
  464. </el-main>
  465. </el-container>
  466. </el-container>
  467. </div>
  468. </template>
  469. <script setup>
  470. import { getSpotList, getSpotTab, getSpotLocal, getSpotInfo, updateSpotData,add } from '@/api/mes/job'
  471. import { createCompany, deleteCompany, deleteCompanyByIds, findCompany, updateCompany } from '@/api/company'
  472. import{getYg}from '@/api/mes_api_gty/myapi'
  473. // 全量引入格式化工具 请按需保留
  474. import { ElMessage, ElMessageBox } from 'element-plus'
  475. import { reactive, ref } from 'vue'
  476. defineOptions({
  477. name: 'Sampling'
  478. })
  479. const treeData = ref([])
  480. const SpotTab = async() => {
  481. const getSpotTabs = await getSpotTab()
  482. if (getSpotTabs.code === 0) {
  483. treeData.value = getSpotTabs.data.map(item => ({
  484. label: `${item.date.replace(/-/g, '.')}【单据数: ${item.counts}张】`,
  485. children: item.sys.map(sysItem => ({
  486. label: `${sysItem.Sys_id} 【记录数: ${sysItem.count}张】`,
  487. params: {
  488. date: item.date.replace(/\./g, '-'),
  489. sys_id: sysItem.sys_id,
  490. total: sysItem.count,
  491. },
  492. })),
  493. }))
  494. }
  495. }
  496. SpotTab()
  497. const handleNodeClick = (node, check) => {
  498. // 存放当前节点的nodeId
  499. if (node.params) {
  500. params.date = node.params.date
  501. params.sys_id = node.params.sys_id
  502. params.type = 'getTableData'
  503. page.value = 1
  504. handleCurrentChange()
  505. }
  506. }
  507. // 自动化生成的字典(可能为空)以及字段
  508. const formData = ref({
  509. address: '',
  510. image: '',
  511. name: '',
  512. })
  513. const handleGetYg = async() => {
  514. try {
  515. const res = await getYg({ sczl_bh: detailData.Sczl_bh })
  516. if (res.code === 0) {
  517. detailData.name = res.data.ygxm
  518. }
  519. } catch (e) {
  520. console.log(e)
  521. }
  522. }
  523. // 验证规则
  524. const rule = reactive({
  525. })
  526. /* const searchRule = reactive({
  527. createdAt: [
  528. { validator: (rule, value, callback) => {
  529. if (searchInfo.value.startCreatedAt && !searchInfo.value.endCreatedAt) {
  530. callback(new Error('请填写结束日期'))
  531. } else if (!searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt) {
  532. callback(new Error('请填写开始日期'))
  533. } else if (searchInfo.value.startCreatedAt && searchInfo.value.endCreatedAt && (searchInfo.value.startCreatedAt.getTime() === searchInfo.value.endCreatedAt.getTime() || searchInfo.value.startCreatedAt.getTime() > searchInfo.value.endCreatedAt.getTime())) {
  534. callback(new Error('开始日期应当早于结束日期'))
  535. } else {
  536. callback()
  537. }
  538. }, trigger: 'change' }
  539. ],
  540. }) */
  541. const elFormRef = ref()
  542. const elSearchFormRef = ref()
  543. // =========== 表格控制部分 ===========
  544. const page = ref(1)
  545. const total = ref(0)
  546. const pageSize = ref(10)
  547. const tableData = reactive([])
  548. const searchInfo = ref('')
  549. const params = {
  550. date: '',
  551. sys_id: '',
  552. search: '',
  553. type: '',
  554. }
  555. const minUniqId = ref('')
  556. // 获取表格数据
  557. const getTableData = async() => {
  558. const { date, sys_id } = params
  559. const res = await getSpotList({ date, sys_id,
  560. page: page.value.toString(), limit: pageSize.value.toString() })
  561. if (res.code === 0) {
  562. tableData.splice(0, tableData.length, ...res.data.rows)
  563. total.value = res.data.total
  564. minUniqId.value= Math.min(...tableData.map(row => row.UniqId));
  565. }
  566. }
  567. const getLocal = async() => {
  568. const res = await getSpotLocal({
  569. search: params.search,
  570. page: page.value.toString(),
  571. limit: pageSize.value.toString()
  572. })
  573. if (res.code === 0) {
  574. tableData.splice(0, tableData.length, ...res.data.rows)
  575. total.value = res.data.total
  576. }
  577. }
  578. // 分页
  579. const handleSizeChange = () => {
  580. switch (params.type) {
  581. case 'getTableData':
  582. getTableData()
  583. break
  584. case 'getLocal':
  585. getLocal()
  586. break
  587. default:
  588. break
  589. }
  590. }
  591. // 修改页面容量
  592. const handleCurrentChange = () => {
  593. switch (params.type) {
  594. case 'getTableData':
  595. getTableData()
  596. break
  597. case 'getLocal':
  598. getLocal()
  599. break
  600. default:
  601. break
  602. }
  603. }
  604. // 搜索
  605. const handlerSearch = () => {
  606. params.search = searchInfo.value
  607. params.type = 'getLocal'
  608. page.value = 1
  609. handleCurrentChange()
  610. }
  611. // 新增数据
  612. const handleShowAdd = async () => {
  613. type.value = '新增';
  614. console.log(currentRow.value);
  615. const res = await getSpotInfo({ UniqId: minUniqId.value });
  616. if (res.code === 0) {
  617. let sczl_rq = new Date();
  618. sczl_rq.setDate(sczl_rq.getDate() - 0); // 今天的前N天的日期,N自定义
  619. res.data[0].Sczl_rq = `${sczl_rq.getFullYear()}-${sczl_rq.getMonth() + 1}-${sczl_rq.getDate()}`;
  620. Object.assign(detailData, res.data[0]);
  621. detailData.UniqId = currentRow.value;
  622. dialogFormVisible.value = true
  623. }
  624. };
  625. // type.value='add'
  626. // Object.assign(detailData);
  627. // dialogFormVisible.value = true
  628. // };
  629. // ============== 详情展示 ===============
  630. const detailData = reactive({})
  631. // 展示详情
  632. const getDetailData = async(row) => {
  633. console.log(row.UniqId)
  634. const { UniqId } = row
  635. type.value='查改'
  636. const res = await getSpotInfo({ UniqId })
  637. if (res.code === 0) {
  638. Object.assign(detailData, res.data[0])
  639. detailData.UniqId = UniqId
  640. dialogFormVisible.value = true
  641. }
  642. }
  643. const currentRow = ref()
  644. const handleSelectChange = (row, column, event) => {
  645. currentRow.value = row.UniqId
  646. }
  647. // 弹窗确定更新数据
  648. const enterDialog = async() => {
  649. // const obj = { ...detailData }
  650. console.log(type.value)
  651. if (type.value === '查改') {
  652. updateDetailData()
  653. } else if (type.value === '新增') {
  654. addDetailData()
  655. }else {
  656. console.log(type)
  657. }
  658. }
  659. const addDetailData = async() => {
  660. const obj = {}
  661. Object.assign(obj, detailData)
  662. delete obj.name
  663. delete obj.Gd_cpmc
  664. delete obj.sczl_gxh
  665. const res = await add(obj)
  666. if (res.code === 0) {
  667. ElMessage({
  668. type: 'success',
  669. message: '新增成功'
  670. })
  671. dialogFormVisible.value = false
  672. }
  673. }
  674. const updateDetailData = async() => {
  675. const obj = {}
  676. Object.assign(obj, detailData)
  677. delete obj.name
  678. delete obj.Gd_cpmc
  679. delete obj.sczl_gxh
  680. const res = await updateSpotData(obj)
  681. if (res.code === 0) {
  682. ElMessage({
  683. type: 'success',
  684. message: '更新成功'
  685. })
  686. dialogFormVisible.value = false
  687. }
  688. }
  689. // 获取需要的字典 可能为空 按需保留
  690. const setOptions = async() => {
  691. }
  692. // 获取需要的字典 可能为空 按需保留
  693. setOptions()
  694. // 多选数据
  695. const multipleSelection = ref([])
  696. // 多选
  697. const handleSelectionChange = (val) => {
  698. multipleSelection.value = val
  699. }
  700. // 删除行
  701. const deleteRow = (row) => {
  702. ElMessageBox.confirm('确定要删除吗?', '提示', {
  703. confirmButtonText: '确定',
  704. cancelButtonText: '取消',
  705. type: 'warning'
  706. }).then(() => {
  707. deleteCompanyFunc(row)
  708. })
  709. }
  710. // 批量删除控制标记
  711. const deleteVisible = ref(false)
  712. // 多选删除
  713. const onDelete = async() => {
  714. const ids = []
  715. if (multipleSelection.value.length === 0) {
  716. ElMessage({
  717. type: 'warning',
  718. message: '请选择要删除的数据'
  719. })
  720. return
  721. }
  722. multipleSelection.value &&
  723. multipleSelection.value.map(item => {
  724. ids.push(item.ID)
  725. })
  726. const res = await deleteCompanyByIds({ ids })
  727. if (res.code === 0) {
  728. ElMessage({
  729. type: 'success',
  730. message: '删除成功'
  731. })
  732. if (tableData.value.length === ids.length && page.value > 1) {
  733. page.value--
  734. }
  735. deleteVisible.value = false
  736. getTableData()
  737. }
  738. }
  739. // 行为控制标记(弹窗内部需要增还是改)
  740. const type = ref('')
  741. // 更新行
  742. // 删除行
  743. const deleteCompanyFunc = async(row) => {
  744. const res = await deleteCompany({ ID: row.ID })
  745. if (res.code === 0) {
  746. ElMessage({
  747. type: 'success',
  748. message: '删除成功'
  749. })
  750. if (tableData.value.length === 1 && page.value > 1) {
  751. page.value--
  752. }
  753. getTableData()
  754. }
  755. }
  756. // 弹窗控制标记
  757. const dialogFormVisible = ref(false)
  758. // 查看详情控制标记
  759. const detailShow = ref(false)
  760. // 打开详情弹窗
  761. const openDetailShow = () => {
  762. detailShow.value = true
  763. }
  764. // 打开详情
  765. const getDetails = async(row) => {
  766. // 打开弹窗
  767. const res = await findCompany({ ID: row.ID })
  768. if (res.code === 0) {
  769. formData.value = res.data.recompany
  770. openDetailShow()
  771. }
  772. }
  773. // 关闭详情弹窗
  774. const closeDetailShow = () => {
  775. detailShow.value = false
  776. formData.value = {
  777. address: '',
  778. image: '',
  779. name: '',
  780. }
  781. }
  782. // 打开弹窗
  783. const openDialog = () => {
  784. type.value = 'create'
  785. dialogFormVisible.value = true
  786. }
  787. // 关闭弹窗
  788. const closeDialog = () => {
  789. dialogFormVisible.value = false
  790. formData.value = {
  791. address: '',
  792. image: '',
  793. name: '',
  794. }
  795. }
  796. </script>
  797. <style scoped>
  798. .JKWTree-container {
  799. display: flex;
  800. }
  801. .JKWTree-tree {
  802. width: 300px;
  803. background-color: #fff;
  804. padding: 10px;
  805. margin-right: 20px;
  806. }
  807. .JKWTree-tree h3 {
  808. font-size: 15px;
  809. font-weight: 700;
  810. margin: 10px 0;
  811. }
  812. .JKWTree-content {
  813. flex: 1;
  814. }
  815. /* 选中某行时的背景色 */
  816. :deep(.el-table__body tr.current-row) > td {
  817. background: #ff80ff !important;
  818. }
  819. :deep(.el-table td .cell) {
  820. line-height: 30px !important;
  821. }
  822. </style>