permitAdd.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818
  1. <template>
  2. <ele-modal
  3. :title="dialogTitle"
  4. :visible.sync="visible"
  5. :before-close="handleClose"
  6. :close-on-click-modal="false"
  7. :close-on-press-escape="false"
  8. width="80%"
  9. :maxable="true"
  10. >
  11. <el-form
  12. label-width="115px"
  13. :model="formData"
  14. :rules="formRules"
  15. ref="formRef"
  16. >
  17. <el-row>
  18. <el-col :span="8">
  19. <el-form-item label="记录规则类型" prop="classify" required>
  20. <el-select
  21. style="width: 100%"
  22. v-model="formData.classify"
  23. placeholder="请选择"
  24. >
  25. <el-option
  26. v-for="item in recordSheet"
  27. :key="item.value"
  28. :label="item.label"
  29. :value="item.value"
  30. >
  31. </el-option>
  32. </el-select>
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="8">
  36. <el-form-item label="记录规则编码" prop="code">
  37. <el-input
  38. v-model="formData.code"
  39. size="small"
  40. :disabled="true"
  41. placeholder="系统自动生成"
  42. ></el-input>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="8">
  46. <el-form-item label="记录规则版本" prop="version">
  47. <el-input
  48. :value="versionText"
  49. size="small"
  50. disabled
  51. placeholder="系统自动生成"
  52. ></el-input>
  53. </el-form-item>
  54. </el-col>
  55. <el-col :span="8">
  56. <el-form-item label="记录规则名称" prop="name">
  57. <el-input
  58. v-model="formData.name"
  59. placeholder="请输入"
  60. size="small"
  61. ></el-input>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="8">
  65. <el-form-item label="启用时间" required prop="startDate">
  66. <el-date-picker
  67. v-model="formData.startDate"
  68. type="date"
  69. placeholder="请选择启用时间"
  70. size="small"
  71. style="width: 100%"
  72. ></el-date-picker>
  73. </el-form-item>
  74. </el-col>
  75. <el-col :span="8">
  76. <el-form-item label="停止时间" required prop="stopDate">
  77. <el-date-picker
  78. v-model="formData.stopDate"
  79. type="date"
  80. placeholder="请选择停止时间"
  81. size="small"
  82. style="width: 100%"
  83. />
  84. </el-form-item>
  85. </el-col>
  86. <el-col v-if="formData.classify == 3" :span="8">
  87. <el-form-item label="关联设备" prop="deviceName" required>
  88. <el-input
  89. v-model="formData.deviceName"
  90. placeholder="请选择设备"
  91. size="small"
  92. :readonly="true"
  93. >
  94. <template #append>
  95. <el-button size="small" @click="selectDeviceId"
  96. >选择设备</el-button
  97. >
  98. </template>
  99. </el-input>
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="24">
  103. <el-form-item label="周期" prop="frequencyValue" required>
  104. <rule-cycle
  105. ref="cycleMultipleRef"
  106. :formData="formData"
  107. pageType="add"
  108. />
  109. </el-form-item>
  110. </el-col>
  111. </el-row>
  112. <ele-pro-table
  113. ref="table"
  114. :columns="bankColumns"
  115. :datasource="formData.recordRulesDetailList"
  116. :need-page="false"
  117. row-key="id"
  118. class="table_list"
  119. >
  120. <template v-slot:toolbar>
  121. <el-button
  122. size="small"
  123. type="primary"
  124. icon="el-icon-plus"
  125. class="ele-btn-icon"
  126. @click="addRow"
  127. >
  128. 新建
  129. </el-button>
  130. </template>
  131. <template v-slot:paramType="{ row }">
  132. <el-select
  133. v-model="row.paramType"
  134. placeholder="请选择参数类型"
  135. size="mini"
  136. required
  137. >
  138. <el-option label="数值" :value="1" />
  139. <el-option label="选择" :value="2" />
  140. <el-option label="上下限" :value="3" />
  141. <el-option label="规格" :value="4" />
  142. <el-option label="时间" :value="5" />
  143. <el-option label="范围" :value="6" />
  144. <el-option label="文本" :value="7" />
  145. <!-- <el-option label="枚举" :value="8" /> -->
  146. </el-select>
  147. </template>
  148. <template v-slot:paramValue="{ row }">
  149. <!-- 根据参数类型渲染不同的输入组件 -->
  150. <el-input
  151. v-model="row.paramValue"
  152. placeholder="请输入参数内容"
  153. size="mini"
  154. ></el-input>
  155. </template>
  156. <template v-slot:defaultValue="{ row }">
  157. <el-row>
  158. <el-col :span="12">
  159. <!-- <el-select
  160. v-if="row.paramType != 7"
  161. v-model="row.symbol"
  162. placeholder="请选择"
  163. size="mini"
  164. >
  165. <el-option label=">" value=">"> </el-option>
  166. <el-option label="<" value="<"> </el-option>
  167. <el-option label="!=" value="!="> </el-option>
  168. <el-option label=">=" value=">="> </el-option>
  169. <el-option label="<=" value="<="> </el-option>
  170. <el-option label="~~" value="~~"> </el-option>
  171. <el-option label="+-" value="+-"> </el-option>
  172. <el-option label="......" value="......"> </el-option>
  173. </el-select> -->
  174. <DictSelection
  175. v-if="row.paramType != 7"
  176. clearable
  177. dictName="数学字符"
  178. v-model="row.numberOperator"
  179. placeholder="请选择逻辑"
  180. size="mini"
  181. ></DictSelection>
  182. </el-col>
  183. <el-col :span="row.paramType != 7 ? 12 : 24">
  184. <el-input
  185. v-model="row.defaultValue"
  186. placeholder="请输入默认值"
  187. size="mini"
  188. ></el-input>
  189. </el-col>
  190. </el-row>
  191. </template>
  192. <template v-slot:maxValue="{ row }">
  193. <el-input
  194. v-if="row.paramType == 3 || row.paramType == 6"
  195. v-model="row.maxValue"
  196. placeholder="请输入参数上限"
  197. size="mini"
  198. ></el-input>
  199. </template>
  200. <template v-slot:minValue="{ row }">
  201. <el-input
  202. v-if="row.paramType == 3 || row.paramType == 6"
  203. v-model="row.minValue"
  204. placeholder="请输入参数下限"
  205. size="mini"
  206. ></el-input>
  207. </template>
  208. <template v-slot:unitName="{ row }">
  209. <!-- <el-input
  210. v-model="row.unitName"
  211. placeholder="请输入参数单位"
  212. size="mini"
  213. ></el-input> -->
  214. <DictSelection
  215. v-if="row.paramType != 7"
  216. dictName="工艺参数单位"
  217. clearable
  218. filterable
  219. v-model="row.unitName"
  220. size="mini"
  221. >
  222. </DictSelection>
  223. </template>
  224. <template v-slot:toolName="{ row }">
  225. <el-link :underline="false" style="cursor: pointer">
  226. <div class="ele-cell">
  227. <!-- class="ele-elip" style="width: 90px" -->
  228. <div @click="handleAdd(row)">
  229. {{
  230. row.tools && row.tools.length > 0
  231. ? row.tools.map((i) => i.toolName).join(',')
  232. : '请选择'
  233. }}
  234. </div>
  235. <i
  236. v-if="row.tools.length == 0"
  237. class="el-icon-arrow-down"
  238. @click="handleAdd(row)"
  239. ></i>
  240. <i v-else class="el-icon-close" @click="clearTool(row)"></i>
  241. </div>
  242. </el-link>
  243. </template>
  244. <template v-slot:toolCodes="{ row }">
  245. <el-input
  246. :value="
  247. row.tools && row.tools.length > 0
  248. ? row.tools.map((i) => i.toolCode).join(',')
  249. : ''
  250. "
  251. placeholder="工具自动带出"
  252. disabled
  253. size="mini"
  254. ></el-input>
  255. </template>
  256. <template v-slot:remark="{ row }">
  257. <el-input
  258. v-model="row.remark"
  259. placeholder="请输入"
  260. size="mini"
  261. ></el-input>
  262. </template>
  263. <template v-slot:action="{ row }">
  264. <el-link
  265. type="danger"
  266. :underline="false"
  267. icon="el-icon-delete"
  268. @click="deleteRow(row)"
  269. >
  270. 删除
  271. </el-link>
  272. </template>
  273. </ele-pro-table>
  274. </el-form>
  275. <template v-slot:footer>
  276. <el-button :loading="btnLoading" type="primary" @click="saveAndPublish">
  277. 保存并发布
  278. </el-button>
  279. <el-button :loading="btnLoading" type="primary" @click="confirm">
  280. 保存
  281. </el-button>
  282. <el-button :loading="btnLoading" @click="handleClose">取消</el-button>
  283. </template>
  284. <ProductModal ref="productRefs" @chooseModal="chooseModal" />
  285. <MaterialAdd
  286. ref="deviceSelectDialog"
  287. selectType="single"
  288. @chooseEquipment="chooseEquipment"
  289. />
  290. </ele-modal>
  291. </template>
  292. <script>
  293. import { getByCode } from '@/api/system/dictionary-data';
  294. // import RuleCycle from '../../matterRules/components/rule-cycle.vue';
  295. import RuleCycle from './rule-cycle.vue';
  296. import OperationGuideDialog from '@/views/rulesManagement/matterRules/components/operationGuideDialog.vue';
  297. import Details from './details.vue';
  298. import dictMixins from '@/mixins/dictMixins';
  299. import ProductModal from './ProductModal.vue';
  300. import MaterialAdd from '../../components/MaterialAdd.vue';
  301. import {
  302. recordrulesSave,
  303. recordrulesDetailPage,
  304. recordrulesUpdate,
  305. recordrulesPublish,
  306. recordrulesSaveAndPublish,
  307. recordrulesUpdateVersion,
  308. recordrulesCyclePage
  309. } from '@/api/recordrules/index';
  310. export default {
  311. components: {
  312. OperationGuideDialog,
  313. RuleCycle,
  314. Details,
  315. ProductModal,
  316. MaterialAdd
  317. },
  318. mixins: [dictMixins],
  319. computed: {
  320. bankColumns() {
  321. return [
  322. {
  323. width: 110,
  324. type: 'index',
  325. columnKey: 'index',
  326. align: 'center',
  327. label: '序号'
  328. },
  329. {
  330. prop: 'paramType',
  331. label: '参数类型',
  332. align: 'center',
  333. slot: 'paramType',
  334. minWidth: 110
  335. },
  336. {
  337. prop: 'paramValue',
  338. label: '参数内容',
  339. align: 'center',
  340. slot: 'paramValue',
  341. minWidth: 180
  342. },
  343. {
  344. prop: 'defaultValue',
  345. label: '默认值',
  346. align: 'center',
  347. slot: 'defaultValue',
  348. minWidth: 150
  349. },
  350. {
  351. prop: 'maxValue',
  352. label: '参数上限',
  353. align: 'center',
  354. slot: 'maxValue',
  355. minWidth: 110
  356. },
  357. {
  358. prop: 'minValue',
  359. label: '参数下限',
  360. align: 'center',
  361. slot: 'minValue',
  362. minWidth: 110
  363. },
  364. {
  365. prop: 'unitName',
  366. label: '参数单位',
  367. align: 'center',
  368. slot: 'unitName',
  369. minWidth: 110
  370. },
  371. {
  372. prop: 'toolName',
  373. label: '工具名称',
  374. align: 'center',
  375. slot: 'toolName',
  376. minWidth: 110
  377. },
  378. {
  379. prop: 'toolCodes',
  380. label: '工具编码',
  381. align: 'center',
  382. slot: 'toolCodes',
  383. minWidth: 110
  384. },
  385. {
  386. prop: 'remark',
  387. label: '备注',
  388. align: 'center',
  389. slot: 'remark',
  390. minWidth: 110
  391. },
  392. {
  393. columnKey: 'action',
  394. label: '操作',
  395. width: 110,
  396. align: 'center',
  397. resizable: false,
  398. slot: 'action'
  399. }
  400. ];
  401. },
  402. versionText() {
  403. return this.formData.version
  404. ? `V${this.formData.version.toFixed(1)}`
  405. : 'V1.0';
  406. }
  407. },
  408. data() {
  409. return {
  410. dialogTitle: '',
  411. visible: false,
  412. formData: {
  413. id: null,
  414. classify: null,
  415. deviceId: null,
  416. deviceName: '',
  417. frequencyUnit: 2,
  418. frequencyValue: null,
  419. name: '',
  420. recordRulesDetailList: [
  421. {
  422. id: 0,
  423. defaultValue: '',
  424. maxValue: null,
  425. minValue: null,
  426. paramType: null,
  427. paramValue: null,
  428. remark: '',
  429. symbol: null,
  430. tools: [],
  431. unitName: null
  432. }
  433. ],
  434. recordRulesCycleList: [],
  435. startDate: null,
  436. stopDate: null,
  437. version: 1,
  438. code: '',
  439. fromId: null
  440. },
  441. formRules: {
  442. name: [
  443. { required: true, message: '请输入规则名称', trigger: 'blur' }
  444. ],
  445. frequencyValue: [
  446. { required: true, message: '请选择周期', trigger: 'blur' },
  447. { required: true, message: '请选择周期', trigger: 'change' }
  448. ],
  449. frequencyUnit: [
  450. { required: true, message: '请选择频率单位', trigger: 'change' }
  451. ],
  452. classify: [
  453. { required: true, message: '请选择规则类型', trigger: 'change' }
  454. ],
  455. // startDate 启用时间要大于当前时间
  456. // stopDate 停用时间要大于当前时间并且大于启用时间
  457. startDate: [
  458. { required: true, message: '请选择启用时间', trigger: 'change' },
  459. { validator: this.validateStartDate, trigger: 'change' }
  460. ],
  461. stopDate: [
  462. { required: true, message: '请选择停用时间', trigger: 'change' },
  463. { validator: this.validateStopDate, trigger: 'change' }
  464. ],
  465. deviceName: [
  466. { required: true, message: '请输入选择设备', trigger: 'blur' }
  467. ]
  468. },
  469. recordSheet: [], // 记录表
  470. current: {},
  471. dataIndex: null,
  472. showEdit: false,
  473. btnLoading: false,
  474. currentRow: null
  475. };
  476. },
  477. mounted() {
  478. this.getByCodeData();
  479. },
  480. methods: {
  481. open(row, type, title) {
  482. this.visible = true;
  483. this.dialogTitle = title;
  484. this.type = type;
  485. console.log('type', type, row);
  486. if (type == 'edit') {
  487. this.$util.assignObject(this.formData, row);
  488. this.formData.startDate = new Date(row.startDate);
  489. this.formData.stopDate = new Date(row.stopDate);
  490. this.recordrulesDetailPage(row);
  491. this.recordrulesCyclePage(row);
  492. console.log('this.formData', this.formData, this.formData.version);
  493. }
  494. if (type == 'clone') {
  495. this.$util.assignObject(this.formData, row);
  496. this.formData.name = this.formData.name + '-副本';
  497. this.formData.version += 1;
  498. this.formData.fromId = row.id;
  499. this.formData.id = null;
  500. this.formData.startDate = new Date(row.startDate);
  501. this.formData.stopDate = new Date(row.stopDate);
  502. this.recordrulesDetailPage(row);
  503. this.recordrulesCyclePage(row);
  504. }
  505. if (type == 'add') {
  506. this.formData.version = 1;
  507. // 停用日期 默认为 2099-12-31
  508. this.formData.stopDate = new Date('2099-12-31 00:00:00');
  509. }
  510. },
  511. async getByCodeData() {
  512. let res = await getByCode('record_sheet');
  513. let list = res.data.map((item) => {
  514. let values = Object.keys(item);
  515. return {
  516. value: values[0],
  517. label: item[values[0]]
  518. };
  519. });
  520. this.recordSheet = list;
  521. },
  522. itemDel(index) {
  523. this.formData.recordRulesDetailList.splice(index, 1);
  524. },
  525. /* 打开操作手册编辑款 */
  526. openOperationGuideDialogDialog(row, index) {
  527. this.$refs.operationGuideDialog.open(row, index);
  528. },
  529. handleClose() {
  530. this.visible = false;
  531. this.$refs['formRef'].resetFields();
  532. // 清空表单数据
  533. this.formData = {
  534. id: null,
  535. classify: null,
  536. deviceId: null,
  537. deviceName: '',
  538. frequencyUnit: null,
  539. frequencyValue: null,
  540. name: '',
  541. recordRulesDetailList: [
  542. {
  543. id: 0,
  544. defaultValue: '',
  545. maxValue: null,
  546. minValue: null,
  547. paramType: null,
  548. paramValue: null,
  549. remark: '',
  550. symbol: null,
  551. toolCodes: null,
  552. tools: []
  553. }
  554. ],
  555. recordRulesCycleList: [],
  556. startDate: null,
  557. stopDate: null,
  558. version: 1,
  559. code: '',
  560. fromId: null
  561. };
  562. },
  563. // 保存
  564. confirm() {
  565. console.log('this.formData', this.formData);
  566. // 验证表单规则
  567. this.$refs.formRef.validate(async (valid) => {
  568. if (!valid) {
  569. return false;
  570. }
  571. if (this.formData.recordRulesDetailList.length == 0) {
  572. return this.$message.warning('至少条件一条规则项');
  573. }
  574. try {
  575. this.btnLoading = true;
  576. this.formData.recordRulesCycleList =
  577. this.$refs.cycleMultipleRef.recordRulesCycleList.map(
  578. (i, index) => {
  579. return { ...i, sortNum: index + 1 };
  580. }
  581. );
  582. const body = { ...this.formData };
  583. body.startDate = this.$util.toDateString(
  584. body.startDate,
  585. 'yyyy-MM-dd HH:mm:ss'
  586. );
  587. body.stopDate = this.$util.toDateString(
  588. body.stopDate,
  589. 'yyyy-MM-dd HH:mm:ss'
  590. );
  591. if (this.type == 'add') {
  592. await recordrulesSave(body);
  593. } else if (this.type == 'clone') {
  594. await recordrulesUpdateVersion(body);
  595. } else {
  596. // 编辑
  597. body.fromId = null;
  598. await recordrulesUpdate(body);
  599. }
  600. this.btnLoading = false;
  601. this.$message.success('操作成功');
  602. this.handleClose();
  603. this.$emit('reload');
  604. } catch (error) {
  605. this.btnLoading = false;
  606. }
  607. });
  608. },
  609. // 保存并发布
  610. saveAndPublish() {
  611. // 验证表单规则
  612. this.$refs.formRef.validate(async (valid) => {
  613. if (!valid) {
  614. return false;
  615. }
  616. if (this.formData.recordRulesDetailList.length == 0) {
  617. return this.$message.warning('至少条件一条规则项');
  618. }
  619. try {
  620. this.btnLoading = true;
  621. this.formData.recordRulesCycleList =
  622. this.$refs.cycleMultipleRef.recordRulesCycleList.map(
  623. (i, index) => {
  624. return { ...i, sortNum: index + 1 };
  625. }
  626. );
  627. const body = { ...this.formData };
  628. body.startDate = this.$util.toDateString(
  629. body.startDate,
  630. 'yyyy-MM-dd HH:mm:ss'
  631. );
  632. body.stopDate = this.$util.toDateString(
  633. body.stopDate,
  634. 'yyyy-MM-dd HH:mm:ss'
  635. );
  636. await recordrulesSaveAndPublish(body);
  637. this.btnLoading = false;
  638. this.$message.success('操作成功');
  639. this.handleClose();
  640. this.$emit('reload');
  641. } catch (error) {
  642. this.btnLoading = false;
  643. }
  644. });
  645. },
  646. // startDate 启用时间要大于当前时间
  647. validateStartDate(rule, value, callback) {
  648. const startDate = this.formData.startDate;
  649. if (!startDate) {
  650. return callback(new Error('启用时间不能为空'));
  651. }
  652. callback();
  653. },
  654. // stopDate 停用时间要大于当前时间并且大于启用时间
  655. validateStopDate(rule, value, callback) {
  656. const startDate = this.formData.startDate;
  657. const stopDate = this.formData.stopDate;
  658. if (
  659. stopDate &&
  660. startDate &&
  661. new Date(stopDate) <= new Date(startDate)
  662. ) {
  663. return callback(new Error('停用时间必须大于启用时间'));
  664. }
  665. callback();
  666. },
  667. // 去选择设备
  668. selectDeviceId() {
  669. this.$refs.deviceSelectDialog.open([]);
  670. },
  671. // 选择设备回调
  672. chooseEquipment(data, index, categoryId) {
  673. console.log('data', data, index, categoryId);
  674. this.formData.deviceId = data[0]?.id || null;
  675. this.formData.deviceName = data[0]?.name || '';
  676. },
  677. // 添加
  678. addRow() {
  679. this.formData.recordRulesDetailList.push({
  680. id: new Date().getTime(),
  681. defaultValue: '',
  682. maxValue: null,
  683. minValue: null,
  684. paramType: null,
  685. paramValue: null,
  686. remark: '',
  687. symbol: null,
  688. tools: [],
  689. unitName: null
  690. });
  691. },
  692. deleteRow(row) {
  693. const index = this.formData.recordRulesDetailList.indexOf(row);
  694. if (index !== -1) {
  695. this.formData.recordRulesDetailList.splice(index, 1);
  696. }
  697. },
  698. handleAdd(row) {
  699. this.currentRow = row;
  700. this.$refs.productRefs.open(row.toolCodes);
  701. },
  702. chooseModal(data) {
  703. console.log('data', data);
  704. this.currentRow.tools = data.map((i) => {
  705. return {
  706. toolCode: i.code,
  707. toolName: i.name
  708. // rulesDetailId: this.currentRow.id,
  709. // rulesId: this.formData.id
  710. };
  711. });
  712. },
  713. // 规则明细表
  714. async recordrulesDetailPage(row) {
  715. const { list } = await recordrulesDetailPage({
  716. // deptId: row.deptId,
  717. pageNum: 1,
  718. rulesId: row.id,
  719. size: 9999
  720. });
  721. console.log('list 数据', list);
  722. this.formData.recordRulesDetailList = list;
  723. },
  724. // 清空工具
  725. clearTool(row) {
  726. row.tools = [];
  727. },
  728. // 查询 recordrulesCyclePage
  729. async recordrulesCyclePage(row) {
  730. const { list } = await recordrulesCyclePage({
  731. pageNum: 1,
  732. size: 9999,
  733. recordRulesId: row.id,
  734. orderBy: 'descending'
  735. });
  736. console.log('list 周期数据', list);
  737. this.formData.recordRulesCycleList = list;
  738. this.$nextTick(() => {
  739. this.$refs.cycleMultipleRef.setRecordRulesCycleList(list);
  740. });
  741. }
  742. }
  743. };
  744. </script>
  745. <style scoped lang="scss">
  746. .operationGuide_box {
  747. width: 100%;
  748. height: 48px;
  749. display: flex;
  750. overflow: hidden;
  751. cursor: pointer;
  752. box-sizing: border-box;
  753. padding: 5px 10px;
  754. .left_content {
  755. width: 50%;
  756. padding: 10px;
  757. box-sizing: border-box;
  758. border: 1px solid #c0c4cc;
  759. border-radius: 10px;
  760. margin-right: 10px;
  761. overflow-y: auto;
  762. }
  763. .right_content {
  764. flex: 1;
  765. padding: 10px;
  766. box-sizing: border-box;
  767. border: 1px solid #c0c4cc;
  768. border-radius: 10px;
  769. overflow-y: auto;
  770. }
  771. }
  772. ::v--deep .table_list {
  773. .el-form-item {
  774. .el-form-item__content {
  775. margin-left: 0;
  776. }
  777. }
  778. }
  779. </style>