payMoney.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774
  1. <template>
  2. <div>
  3. <div
  4. class="dialogTableTitle flex a-center jlr"
  5. style="
  6. display: flex;
  7. justify-content: space-between;
  8. align-items: center;
  9. margin: 10px 0;
  10. "
  11. >
  12. <div>
  13. <el-button
  14. type="primary"
  15. :disabled="browseStatus"
  16. @click.prevent="addpayment()"
  17. size="small"
  18. >新行
  19. </el-button>
  20. <el-button
  21. type="primary"
  22. size="small"
  23. @click="saveForm"
  24. :disabled="browseStatus"
  25. >保 存</el-button
  26. >
  27. <el-button
  28. type="danger"
  29. size="small"
  30. @click.prevent="handleSelect"
  31. >作业费协议</el-button
  32. >
  33. <el-button
  34. type="primary"
  35. size="small"
  36. v-if="browseStatus"
  37. @click="feeChange"
  38. >
  39. 费用变更
  40. </el-button>
  41. </div>
  42. </div>
  43. <el-table
  44. :data="warehouseCrList"
  45. ref="table"
  46. tooltip-effect="dark"
  47. border
  48. stripe
  49. show-summary
  50. :summary-method="warehouseDrSummaries"
  51. >
  52. <el-table-column type="selection" width="55" align="center" />
  53. <el-table-column label="序号" type="index" width="80"> </el-table-column>
  54. <el-table-column
  55. prop="fCorpid"
  56. header-align="center"
  57. align="center"
  58. width="300px"
  59. label="客户名称"
  60. >
  61. <template slot-scope="scope">
  62. <el-select
  63. v-model="scope.row.fCorpid"
  64. filterable
  65. clearable
  66. placeholder="客户名称"
  67. :disabled="browseStatus || scope.row.fBillstatus == 6"
  68. >
  69. <el-option
  70. v-for="(item, index) in fMblnoOptions"
  71. :key="index.fId"
  72. :label="item.fName"
  73. :value="item.fId"
  74. ></el-option>
  75. </el-select>
  76. </template>
  77. </el-table-column>
  78. <el-table-column
  79. prop="fFeeid"
  80. header-align="center"
  81. align="center"
  82. width="240px"
  83. label="费用名称"
  84. >
  85. <template slot-scope="scope">
  86. <el-select
  87. v-model="scope.row.fFeeid"
  88. clearable
  89. filterable
  90. placeholder="费用名称"
  91. :disabled="browseStatus || scope.row.fBillstatus == 6"
  92. >
  93. <el-option
  94. v-for="(item, index) in fCNameOptions"
  95. :key="index.fId"
  96. :label="item.fName"
  97. :value="item.fId"
  98. ></el-option>
  99. </el-select>
  100. </template>
  101. </el-table-column>
  102. <el-table-column
  103. prop="fBusinessType"
  104. header-align="center"
  105. align="center"
  106. width="180px"
  107. label="作业类型"
  108. >
  109. <template slot-scope="scope">
  110. <el-select
  111. style="width: 80%"
  112. v-model="scope.row.fBusinessType"
  113. filterable
  114. disabled
  115. >
  116. <el-option
  117. v-for="(item, index) in businessTypeOption"
  118. :key="index.dictValue"
  119. :label="item.dictLabel"
  120. :value="item.dictValue"
  121. ></el-option>
  122. </el-select>
  123. </template>
  124. </el-table-column>
  125. <el-table-column
  126. prop="fFeeUnitid"
  127. header-align="center"
  128. align="center"
  129. width="180px"
  130. label="计价单位"
  131. >
  132. <template slot-scope="scope">
  133. <el-select
  134. v-model="scope.row.fFeeUnitid"
  135. placeholder="请选择计价单位"
  136. clearable
  137. :disabled="browseStatus || scope.row.fBillstatus == 6"
  138. @change="changeFeeUnit(scope.row)"
  139. >
  140. <el-option
  141. v-for="(item, index) in fFeetUnitOptions"
  142. :key="index.dictValue"
  143. :label="item.dictLabel"
  144. :value="item.dictValue"
  145. />
  146. </el-select>
  147. </template>
  148. </el-table-column>
  149. <el-table-column
  150. prop="fQty"
  151. header-align="center"
  152. align="center"
  153. width="150px"
  154. label="数量"
  155. >
  156. <template slot-scope="scope">
  157. <el-input
  158. oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/, "$1$2.$3")'
  159. v-model="scope.row.fQty"
  160. :disabled="browseStatus || scope.row.fBillstatus == 6"
  161. @change="changeContractAmt(scope.row)"
  162. placeholder="数量"
  163. show-word-limit
  164. />
  165. </template>
  166. </el-table-column>
  167. <el-table-column
  168. prop="fUnitprice"
  169. header-align="center"
  170. align="center"
  171. width="150px"
  172. label="单价"
  173. >
  174. <template slot-scope="scope">
  175. <el-input
  176. oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
  177. v-model="scope.row.fUnitprice"
  178. :disabled="browseStatus || scope.row.fSrcTypeId !== 0 || scope.row.fBillstatus == 6"
  179. @change="changeContractAmt(scope.row)"
  180. placeholder="单价"
  181. show-word-limit
  182. />
  183. </template>
  184. </el-table-column>
  185. <el-table-column
  186. prop="fAmount"
  187. header-align="center"
  188. align="center"
  189. width="150px"
  190. label="金额"
  191. >
  192. <template slot-scope="scope">
  193. <el-input
  194. disabled
  195. oninput='this.value=this.value.replace(/[^\-?\d.]/g,"").replace(/^(\-)*(\d+)\.(\d\d).*$/, "$1$2.$3")'
  196. v-model="scope.row.fAmount"
  197. placeholder="金额"
  198. show-word-limit
  199. />
  200. </template>
  201. </el-table-column>
  202. <el-table-column
  203. prop="fStltypeid"
  204. header-align="center"
  205. align="center"
  206. width="130px"
  207. label="结算方式"
  208. >
  209. <template slot-scope="scope">
  210. <el-select
  211. v-model="scope.row.fStltypeid"
  212. placeholder="请选择结算表票结、月结"
  213. :disabled="browseStatus || scope.row.fBillstatus == 6"
  214. >
  215. <el-option
  216. v-for="(item, index) in fStltypeOptions"
  217. :key="index.dictValue"
  218. :label="item.dictLabel"
  219. :value="item.dictValue"
  220. ></el-option>
  221. </el-select>
  222. </template>
  223. </el-table-column>
  224. <el-table-column
  225. prop="fCurrency"
  226. header-align="center"
  227. align="center"
  228. width="150px"
  229. label="币别"
  230. >
  231. <template slot-scope="scope">
  232. <el-input
  233. v-model="scope.row.fCurrency"
  234. :disabled="browseStatus || scope.row.fBillstatus == 6"
  235. placeholder="币别"
  236. show-word-limit
  237. />
  238. </template>
  239. </el-table-column>
  240. <el-table-column
  241. prop="fExrate"
  242. header-align="center"
  243. align="center"
  244. width="150px"
  245. label="汇率"
  246. >
  247. <template slot-scope="scope">
  248. <el-input
  249. v-model="scope.row.fExrate"
  250. :disabled="browseStatus || scope.row.fBillstatus == 6"
  251. placeholder="汇率"
  252. show-word-limit
  253. />
  254. </template>
  255. </el-table-column>
  256. <el-table-column
  257. prop="fTaxrate"
  258. header-align="center"
  259. align="center"
  260. width="150px"
  261. label="税率"
  262. >
  263. <template slot-scope="scope">
  264. <el-input
  265. v-model="scope.row.fTaxrate"
  266. :disabled="browseStatus || scope.row.fBillstatus == 6"
  267. placeholder="税率"
  268. show-word-limit
  269. />
  270. </template>
  271. </el-table-column>
  272. <el-table-column
  273. prop="fMblno"
  274. header-align="center"
  275. align="center"
  276. width="130px"
  277. label="提单号"
  278. >
  279. <template slot-scope="scope">
  280. <el-input
  281. v-model="scope.row.fMblno"
  282. :disabled="browseStatus || scope.row.fBillstatus == 6"
  283. placeholder="提单号"
  284. show-word-limit
  285. />
  286. </template>
  287. </el-table-column>
  288. <el-table-column
  289. prop="fProductName"
  290. header-align="center"
  291. align="center"
  292. width="140px"
  293. label="品名"
  294. >
  295. <template slot-scope="scope">
  296. <el-input
  297. v-model="scope.row.fProductName"
  298. :disabled="browseStatus || scope.row.fBillstatus == 6"
  299. placeholder="品名"
  300. show-word-limit
  301. />
  302. </template>
  303. </el-table-column>
  304. <el-table-column
  305. prop="fMarks"
  306. header-align="center"
  307. align="center"
  308. width="130px"
  309. label="品牌"
  310. >
  311. <template slot-scope="scope">
  312. <el-input
  313. v-model="scope.row.fMarks"
  314. :disabled="browseStatus || scope.row.fBillstatus == 6"
  315. placeholder="品牌"
  316. show-word-limit
  317. />
  318. </template>
  319. </el-table-column>
  320. <el-table-column
  321. prop="fSrcTypeId"
  322. header-align="center"
  323. align="center"
  324. width="130px"
  325. label="来源"
  326. >
  327. <template slot-scope="scope">
  328. <span v-if="scope.row.fSrcTypeId === 0">录入</span>
  329. <span v-if="scope.row.fSrcTypeId == 1">协议</span>
  330. <span v-if="scope.row.fSrcTypeId == 10">变更</span>
  331. </template>
  332. </el-table-column>
  333. <el-table-column
  334. prop="remark"
  335. header-align="center"
  336. align="center"
  337. width="150px"
  338. label="备注"
  339. >
  340. <template slot-scope="scope">
  341. <el-input
  342. v-model="scope.row.remark"
  343. :disabled="browseStatus || scope.row.fBillstatus == 6"
  344. placeholder="备注"
  345. show-word-limit
  346. />
  347. </template>
  348. </el-table-column>
  349. <el-table-column
  350. header-align="center"
  351. align="center"
  352. width="200px"
  353. label="操作"
  354. fixed="right"
  355. >
  356. <template slot-scope="scope">
  357. <!-- <el-button size="small">审核费用</el-button> -->
  358. <el-button
  359. @click.native.prevent="deleteRow(scope.$index, warehouseCrList)"
  360. size="small"
  361. :disabled="browseStatus || scope.row.fBillstatus == 6"
  362. >移除</el-button
  363. >
  364. <el-button
  365. size="small"
  366. @click="listCheck(scope.row)"
  367. v-if="scope.row.fBillstatus < 6"
  368. >请核</el-button>
  369. <el-button
  370. size="small"
  371. @click="revokeListCheck(scope.row)"
  372. v-if="scope.row.fBillstatus == 6"
  373. >撤销请核</el-button>
  374. </template>
  375. </el-table-column>
  376. </el-table>
  377. <!-- 选择作业费协议数据 -->
  378. <el-dialog
  379. v-dialogDrag
  380. title="作业费协议"
  381. :close-on-click-modal="false"
  382. :modal="false"
  383. style="box-shadow: 0 1px 3px rgba(0, 0, 0, 0) !important"
  384. :visible.sync="warehousingagreements"
  385. width="70%"
  386. >
  387. <template slot="作业费协议">
  388. <div class="avue-crud__dialog__header">
  389. <span class="el-dialog__title">
  390. <span
  391. style="
  392. display: inline-block;
  393. width: 3px;
  394. height: 20px;
  395. margin-right: 5px;
  396. float: left;
  397. margin-top: 2px;
  398. "
  399. ></span>
  400. </span>
  401. </div>
  402. </template>
  403. <el-menu
  404. :default-active="activeIndex"
  405. v-if="Navigation === true"
  406. class="el-menu-demo"
  407. mode="horizontal"
  408. @select="handleSelect"
  409. >
  410. <el-menu-item index="1">车队作业费</el-menu-item>
  411. <el-menu-item index="2">劳务作业费</el-menu-item>
  412. </el-menu>
  413. <el-table
  414. :data="tasklegList"
  415. ref="table"
  416. tooltip-effect="dark"
  417. width="100%"
  418. border
  419. stripe
  420. @selection-change="whgenlegSelectionChange"
  421. >
  422. <el-table-column type="selection" width="55"> </el-table-column>
  423. <el-table-column label="行号" type="index" width="80">
  424. </el-table-column>
  425. <el-table-column
  426. prop="fCorpname"
  427. header-align="center"
  428. align="center"
  429. label="客户名称"
  430. />
  431. <el-table-column
  432. prop="fName"
  433. header-align="center"
  434. align="center"
  435. label="费用名称"
  436. />
  437. <el-table-column
  438. prop="fFeeUnitid"
  439. header-align="center"
  440. align="center"
  441. width="180px"
  442. label="计价单位"
  443. >
  444. <template slot-scope="scope">
  445. <el-select
  446. v-model="scope.row.fFeeUnitid"
  447. placeholder="请选择计价单位"
  448. @change="changeFeeUnit(scope.row)"
  449. disabled
  450. clearable
  451. >
  452. <el-option
  453. v-for="(dict, index) in fFeetUnitOptions"
  454. :key="index.dictValue"
  455. :label="dict.dictLabel"
  456. :value="dict.dictValue"
  457. />
  458. </el-select>
  459. </template>
  460. </el-table-column>
  461. <el-table-column
  462. prop="fPrice"
  463. header-align="center"
  464. align="center"
  465. label="单价"
  466. width="100px"
  467. />
  468. <el-table-column
  469. prop="remark"
  470. header-align="center"
  471. align="center"
  472. label="备注"
  473. />
  474. </el-table>
  475. <pagination
  476. v-show="whgenlegTotal > 0"
  477. :total="whgenlegTotal"
  478. :page.sync="pageNum"
  479. :limit.sync="pageSize"
  480. @pagination="getWhgenlegList"
  481. />
  482. <div slot="footer" class="dialog-footer">
  483. <el-button type="primary" @click="zhgenlegData" :disabled="browseStatus">导 入</el-button>
  484. <el-button
  485. @click="
  486. warehousingagreements = false;
  487. Navigation = false;
  488. "
  489. >取 消</el-button
  490. >
  491. </div>
  492. </el-dialog>
  493. </div>
  494. </template>
  495. <script>
  496. import { operationAgreement } from "@/api/agreement/agreement";
  497. import {feesCheck,revokefeeCheck} from "@/api/warehouseBusiness/warehouseInStock";
  498. export default {
  499. name: 'payMoney',
  500. props: {
  501. browseStatus: {
  502. type: Boolean,
  503. default: false,
  504. },
  505. warehouseCrList: {
  506. type: Array,
  507. default: [],
  508. },
  509. businessTypeOption: {
  510. type: Array,
  511. default: [],
  512. },
  513. fMblnoOptions: {
  514. type: Array,
  515. default: [],
  516. },
  517. fCNameOptions: {
  518. type: Array,
  519. default: [],
  520. },
  521. fFeetUnitOptions: {
  522. type: Array,
  523. default: [],
  524. },
  525. fStltypeOptions: {
  526. type: Array,
  527. default: [],
  528. },
  529. fGrossweight: {
  530. type: Number,
  531. default: null,
  532. },
  533. fQty: {
  534. type: Number,
  535. default: null,
  536. },
  537. fNetweight: {
  538. type: Number,
  539. default: null,
  540. },
  541. fCntqty: {
  542. type: Number,
  543. default: null,
  544. },
  545. form: {
  546. type: Object,
  547. default: null,
  548. },
  549. },
  550. data() {
  551. return {
  552. warehousingagreements: false,
  553. dialogWhgenlegList: [],
  554. whgenlegTotal: 0,
  555. Navigation: false,
  556. tasklegList: [],
  557. // dialogWhgenlegList: [],
  558. pageNum: 1,
  559. pageSize: 10,
  560. };
  561. },
  562. methods: {
  563. feeChange() {
  564. this.$emit("feeChangeC", 'C');
  565. },
  566. saveForm() {
  567. this.$emit("chiSave");
  568. },
  569. addpayment() {
  570. this.$emit("chiAdd");
  571. },
  572. // 付款合计
  573. warehouseDrSummaries(param) {
  574. const { columns, data } = param;
  575. const sums = [];
  576. columns.forEach((column, index) => {
  577. if (index === 0) {
  578. sums[index] = "合计";
  579. return;
  580. }
  581. const values = data.map((item) => Number(item[column.property]));
  582. if (
  583. column.property === "fAmount"
  584. // column.property === "fUnitprice" ||
  585. // column.property === "fAmount" ||
  586. // column.property === "fQty"
  587. ) {
  588. sums[index] = values.reduce((prev, curr) => {
  589. const value = Number(curr);
  590. if (!isNaN(value)) {
  591. return prev + curr;
  592. } else {
  593. return prev;
  594. }
  595. }, 0);
  596. sums[index] = sums[index].toFixed(2);
  597. }
  598. });
  599. return sums;
  600. },
  601. deleteRow(index, rows) {
  602. rows.splice(index, 1);
  603. },
  604. // 变更计价单位
  605. changeFeeUnit(row) {
  606. if (!row.fFeeUnitid) {
  607. return false;
  608. }
  609. if (row.fFeeUnitid === "2") {
  610. this.$set(row, "fQty", (this.fGrossweight / 1000).toFixed(2));
  611. } else if (row.fFeeUnitid === "1") {
  612. this.$set(row, "fQty", this.fQty.toFixed(2));
  613. } else if (row.fFeeUnitid === "3") {
  614. this.$set(row, "fQty", (this.fNetweight / 1000).toFixed(2));
  615. } else if (row.fFeeUnitid === "7") {
  616. this.$set(row, "fQty", this.fCntqty);
  617. } else {
  618. this.$set(row, "fQty", 0);
  619. }
  620. if (row.fUnitprice) {
  621. this.$set(
  622. row,
  623. "fAmount",
  624. parseFloat(Number(row.fUnitprice) * Number(row.fQty)).toFixed(2)
  625. );
  626. }
  627. },
  628. // 数量计算
  629. changeContractAmt(row) {
  630. let fQty = 0;
  631. let fUnitprice = 0;
  632. if (row.fUnitprice) {
  633. fUnitprice = row.fUnitprice;
  634. }
  635. if (row.fQty) {
  636. fQty = row.fQty;
  637. }
  638. this.$set(row, "fAmount", Number(fUnitprice) * Number(fQty)).toFixed(2);
  639. },
  640. handleSelect() {
  641. if (!this.form.fCorpid) {
  642. this.$message({
  643. message: "请维护客户",
  644. type: "warning",
  645. });
  646. } else if (this.form.fProductName == undefined) {
  647. this.$message({
  648. message: "请维护入库明细品名",
  649. type: "warning",
  650. });
  651. } else {
  652. this.pageNum = 1;
  653. this.pageSize = 10;
  654. this.dialogWhgenlegList = [];
  655. this.whgenlegTotal = 0;
  656. this.warehousingagreements = true;
  657. this.getWhgenlegList();
  658. }
  659. },
  660. // 查询作业费信息
  661. getWhgenlegList() {
  662. let data = {};
  663. this.Navigation = false;
  664. data = {
  665. pageNum: this.pageNum,
  666. pageSize: this.pageSize,
  667. fTaskType: 1,
  668. fFleet: this.form.fFleet,
  669. };
  670. operationAgreement(data).then((response) => {
  671. response.rows.map((e) => {
  672. if (e.fFeeUnitid) {
  673. e.fFeeUnitid = e.fFeeUnitid.toString();
  674. }
  675. });
  676. this.tasklegList = response.rows;
  677. this.whgenlegTotal = response.total;
  678. });
  679. },
  680. // 库存总账多选框
  681. whgenlegSelectionChange(selection) {
  682. this.dialogWhgenlegList = selection;
  683. },
  684. //导入收付款信息明细
  685. zhgenlegData() {
  686. if (this.dialogWhgenlegList.length === 0) {
  687. this.$message({
  688. message: "请选择需要导入的数据",
  689. type: "warning",
  690. });
  691. } else {
  692. this.dialogWhgenlegList.map((e) => {
  693. let qty = 1;
  694. if (e.fFeeUnitid == 1) {
  695. qty = this.fQty;
  696. } else if (e.fFeeUnitid == 2) {
  697. qty = (this.fGrossweight / 1000).toFixed(2);
  698. } else if (e.fFeeUnitid == 3) {
  699. qty = (this.fNetweight / 1000).toFixed(2);
  700. } else if (e.fFeeUnitid == 7) {
  701. qty = this.fCntqty;
  702. }
  703. let fAmount = 0;
  704. fAmount = e.fPrice * qty;
  705. this.warehouseCrList.push({
  706. fQty: qty,
  707. fCorpid: e.fCorpid,
  708. fFeeid: e.feeFId,
  709. fFeeUnitid: e.fFeeUnitid,
  710. fUnitprice: e.fPrice,
  711. fCurrency: "RMB",
  712. fExrate: 1,
  713. fAmount: fAmount,
  714. fTaxrate: this.fTaxrate,
  715. fMblno: this.form.fMblno,
  716. fProductName: this.form.fProductName,
  717. fMarks: this.form.fMarks,
  718. fBusinessType: this.form.fBusinessType,
  719. fSrcTypeId: 1,
  720. });
  721. });
  722. this.warehousingagreements = false;
  723. }
  724. },
  725. // 费用明细请核
  726. listCheck(row) {
  727. feesCheck(row.fId).then(res => {
  728. this.$message.success('请核成功')
  729. res.data.fFeeUnitid = res.data.fFeeunitid.toString();
  730. if (res.data.fDc == 'D') {
  731. let index = this.warehouseDrList.findIndex(item => item.fId == res.data.fId)
  732. this.warehouseDrList.splice(index, 1, res.data)
  733. } else {
  734. let index = this.warehouseCrList.findIndex(item => item.fId == res.data.fId)
  735. this.warehouseCrList.splice(index, 1, res.data)
  736. }
  737. })
  738. },
  739. // 费用明细撤销请核
  740. revokeListCheck(row) {
  741. revokefeeCheck(row.fId).then(res => {
  742. this.$message.success('操作成功')
  743. res.data.fFeeUnitid = res.data.fFeeunitid.toString();
  744. if (res.data.fDc == 'D') {
  745. let index = this.warehouseDrList.findIndex(item => item.fId == res.data.fId)
  746. this.warehouseDrList.splice(index, 1, res.data)
  747. } else {
  748. let index = this.warehouseCrList.findIndex(item => item.fId == res.data.fId)
  749. this.warehouseCrList.splice(index, 1, res.data)
  750. }
  751. })
  752. },
  753. },
  754. watch: {
  755. browseStatus(val) {
  756. this.browseStatus = val;
  757. },
  758. warehouseCrList(val) {
  759. this.warehouseCrList = val;
  760. },
  761. },
  762. };
  763. </script>
  764. <style scoped lang="scss">
  765. </style>