sampling.vue 23 KB

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