Ligature.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806
  1. <template>
  2. <div class="JoinLine">
  3. <div class="main">
  4. <div style="text-align: center">{{ curQue.title }}</div>
  5. <div :id="'container' + number" class="container">
  6. <div class="left">
  7. <ul>
  8. <div>{{ curQue.conTitle }}</div>
  9. <li
  10. :class="'left' + index + number"
  11. v-for="(item, index) in curQue.con"
  12. :key="'left' + index"
  13. >
  14. <!-- :style="{
  15. background:
  16. JSON.stringify(data).indexOf(item.nodeId) != -1
  17. ? '#F0F0F0'
  18. : '',
  19. }" -->
  20. <div>
  21. <img
  22. v-if="item.img_list.length > 0"
  23. :src="item.img_list[0].id"
  24. alt=""
  25. @load="conImageload"
  26. />
  27. <div
  28. class="text"
  29. :class="'left' + index"
  30. v-if="
  31. item.detail.wordsList.length > 0 || item.detail.sentence
  32. "
  33. >
  34. <!-- 大于0就说明分词了 -->
  35. <template v-if="item.detail.wordsList.length > 0">
  36. <div
  37. v-for="(it, wordIndex) in item.detail.wordsList"
  38. :key="'word' + wordIndex"
  39. >
  40. <template v-if="item.detail.pyPosition == 'top'">
  41. <p
  42. style="
  43. font-family: 'GB-PINYINOK-B';
  44. font-size: 14px;
  45. line-height: 20px;
  46. "
  47. >
  48. {{ it.pinyin }}
  49. </p>
  50. <p
  51. style="
  52. font-family: 'FZJCGFKTK';
  53. font-size: 20px;
  54. line-height: 150%;
  55. "
  56. >
  57. {{ it.chs }}
  58. </p>
  59. </template>
  60. <template v-else>
  61. <p
  62. style="
  63. font-family: 'FZJCGFKTK';
  64. font-size: 20px;
  65. line-height: 150%;
  66. "
  67. >
  68. {{ it.chs }}
  69. </p>
  70. <p
  71. style="
  72. font-family: 'GB-PINYINOK-B';
  73. font-size: 14px;
  74. line-height: 20px;
  75. "
  76. >
  77. {{ it.pinyin }}
  78. </p>
  79. </template>
  80. </div>
  81. </template>
  82. <template v-else>
  83. {{ item.detail.sentence }}
  84. </template>
  85. </div>
  86. </div>
  87. <span>{{ item.Number }}</span>
  88. <img
  89. v-if="JSON.stringify(data).indexOf(item.nodeId) == -1"
  90. name="source"
  91. :id="item.nodeId"
  92. src="../../../assets/adult/LineImg.png"
  93. alt=""
  94. />
  95. <img
  96. v-else
  97. :id="item.nodeId"
  98. name="target"
  99. src="../../../assets/adult/LineImg-select.png"
  100. alt=""
  101. />
  102. </li>
  103. </ul>
  104. </div>
  105. <div class="right">
  106. <ul>
  107. <div>{{ curQue.optionTitle }}</div>
  108. <li
  109. :class="'right' + index + number"
  110. v-for="(item, index) in curQue.option"
  111. :key="'right' + index"
  112. >
  113. <!-- :style="{
  114. background:
  115. JSON.stringify(data).indexOf(item.nodeId) != -1
  116. ? '#F0F0F0'
  117. : '',
  118. }" -->
  119. <img
  120. v-if="JSON.stringify(data).indexOf(item.nodeId) == -1"
  121. name="source"
  122. :id="item.nodeId"
  123. src="../../../assets/adult/LineImg.png"
  124. alt=""
  125. />
  126. <img
  127. v-else
  128. :id="item.nodeId"
  129. name="target"
  130. src="../../../assets/adult/LineImg-select.png"
  131. alt=""
  132. />
  133. <span>{{ item.Number }}</span>
  134. <div>
  135. <img
  136. v-if="item.img_list.length > 0"
  137. :src="item.img_list[0].id"
  138. alt=""
  139. @load="conImageload"
  140. />
  141. <div
  142. class="text"
  143. :class="'right' + index"
  144. v-if="
  145. item.detail.wordsList.length > 0 || item.detail.sentence
  146. "
  147. >
  148. <!-- 大于0就说明分词了 -->
  149. <template v-if="item.detail.wordsList.length > 0">
  150. <div
  151. v-for="(it, wordIndex) in item.detail.wordsList"
  152. :key="'word' + wordIndex"
  153. >
  154. <template v-if="item.detail.pyPosition == 'top'">
  155. <p
  156. style="
  157. font-family: 'GB-PINYINOK-B';
  158. font-size: 14px;
  159. line-height: 20px;
  160. "
  161. >
  162. {{ it.pinyin }}
  163. </p>
  164. <p
  165. style="
  166. font-family: 'FZJCGFKTK';
  167. font-size: 20px;
  168. line-height: 150%;
  169. "
  170. >
  171. {{ it.chs }}
  172. </p>
  173. </template>
  174. <template v-else>
  175. <p
  176. style="
  177. font-family: 'FZJCGFKTK';
  178. font-size: 20px;
  179. line-height: 150%;
  180. "
  181. >
  182. {{ it.chs }}
  183. </p>
  184. <p
  185. style="
  186. font-family: 'GB-PINYINOK-B';
  187. font-size: 14px;
  188. line-height: 20px;
  189. "
  190. >
  191. {{ it.pinyin }}
  192. </p>
  193. </template>
  194. </div>
  195. </template>
  196. <template v-else>
  197. {{ item.detail.sentence }}
  198. </template>
  199. </div>
  200. </div>
  201. </li>
  202. </ul>
  203. </div>
  204. </div>
  205. </div>
  206. <!-- 清除所有连线及连线的状态 -->
  207. <div class="fuwei" :class="[TaskModel == 'ANSWER' ? 'notAllow' : '']">
  208. <div @click="clearLine">
  209. <img src="../../../assets/adult/fuwei.png" alt="" />
  210. 复位
  211. </div>
  212. </div>
  213. </div>
  214. </template>
  215. <script>
  216. //这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  217. //例如:import 《组件名称》from ‘《组件路径》';
  218. export default {
  219. //import引入的组件需要注入到对象中才能使用
  220. components: {},
  221. props: ["curQue", "TaskModel", "number"],
  222. data() {
  223. //这里存放数据
  224. return {
  225. data: [],
  226. leftList: [
  227. {
  228. text: "Arrive at the airport ahead of time ______",
  229. nodeId: "left_1",
  230. },
  231. {
  232. text: "Arrive at the airport ahead of time ______",
  233. nodeId: "left_2",
  234. },
  235. {
  236. text: "Arrive at the airport ahead of time ______",
  237. nodeId: "left_3",
  238. },
  239. {
  240. text: "Arrive at the airport ahead of time ______",
  241. nodeId: "left_4",
  242. },
  243. {
  244. text: "Arrive at the airport ahead of time ______",
  245. nodeId: "left_5",
  246. },
  247. {
  248. text: "Arrive at the airport ahead of time ______",
  249. nodeId: "left_6",
  250. },
  251. {
  252. text: "Arrive at the airport ahead of time ______",
  253. nodeId: "left_7",
  254. },
  255. ],
  256. rightList: [
  257. { text: "把来访者直接送到宾馆", en: "a", nodeId: "right_1" },
  258. { text: "把来访者直接送到宾馆", en: "b", nodeId: "right_2" },
  259. { text: "把来访者直接送到宾馆", en: "c", nodeId: "right_3" },
  260. { text: "把来访者直接送到宾馆", en: "d", nodeId: "right_4" },
  261. { text: "把来访者直接送到宾馆", en: "e", nodeId: "right_5" },
  262. { text: "把来访者直接送到宾馆", en: "f", nodeId: "right_6" },
  263. { text: "把来访者直接送到宾馆", en: "g", nodeId: "right_7" },
  264. ],
  265. allimgnumber: 0,
  266. lodimgnumber: 0,
  267. };
  268. },
  269. //计算属性 类似于data概念
  270. computed: {},
  271. //监控data中数据变化
  272. watch: {
  273. curQue(val, oldval) {
  274. this.$forceUpdate(); //触发更新函数更新高度
  275. },
  276. },
  277. //方法集合
  278. methods: {
  279. // 清除所有连线
  280. clearLine() {
  281. if (!this.TaskModel || this.TaskModel != "ANSWER") {
  282. this.data.forEach((item) => {
  283. if (item.source) {
  284. if (item.source.indexOf("Isexample") == -1) {
  285. item.source = null;
  286. item.target = null;
  287. if (
  288. Object.prototype.toString.call(item.answer).indexOf("Number") !=
  289. -1
  290. ) {
  291. item.userAnswerJudge = "[JUDGE##F##JUDGE]";
  292. }
  293. }
  294. }
  295. });
  296. this.jsPlumb.deleteEveryConnection(); //清除连线方法
  297. this.$set(
  298. this.curQue,
  299. "Bookanswer",
  300. JSON.parse(JSON.stringify(this.data))
  301. );
  302. this.data.forEach((item) => {
  303. this.jsPlumb.connect({
  304. source: item.source,
  305. target: item.target,
  306. });
  307. });
  308. }
  309. },
  310. showPlumb() {
  311. this.jsPlumb = this.$jsPlumb.getInstance({
  312. Container: "container" + this.number, // 选择器id
  313. EndpointStyle: { radius: 1, fill: "#74B5CA" }, // 端点样式
  314. PaintStyle: { stroke: "#DE4444", strokeWidth: 2 }, // 绘画样式,默认8px线宽 #456
  315. HoverPaintStyle: { stroke: "#18A0FB", strokeWidth: null }, // 默认悬停样式 默认为null
  316. ConnectionOverlays: [
  317. // // 此处可以设置所有箭头的样式
  318. // [
  319. // "Arrow",
  320. // {
  321. // // 设置参数可以参考中文文档
  322. // location: 1,
  323. // length: 12,
  324. // paintStyle: {
  325. // stroke: "#7663EC",
  326. // fill: "#7663EC",
  327. // },
  328. // },
  329. // ],
  330. // [
  331. // "Label",
  332. // {
  333. // location: 0.1,
  334. // cssClass: "aLabel", //hover时label的样式名
  335. // events: {
  336. // click: (info) => {
  337. // console.log(info);
  338. // },
  339. // },
  340. // visible: true,
  341. // },
  342. // ],
  343. ],
  344. Connector: ["Straight"], // 要使用的默认连接器的类型:直线,折线,曲线等
  345. DrapOptions: { cursor: "crosshair", zIndex: 2000 },
  346. });
  347. this.jsPlumb.batch(() => {
  348. for (let i = 0; i < this.curQue.con.length; i++) {
  349. this.initLeaf(this.curQue.con[i].nodeId, "source");
  350. }
  351. for (let j = 0; j < this.curQue.option.length; j++) {
  352. this.initLeaf(this.curQue.option[j].nodeId, "target");
  353. }
  354. });
  355. this.setjsPlumb(true, true);
  356. //点击连线
  357. this.jsPlumb.bind("click", (conn, originalEvent) => {
  358. let index = conn.sourceId.indexOf("Isexample");
  359. if (index != -1) {
  360. return;
  361. }
  362. if (!this.TaskModel || this.TaskModel != "ANSWER") {
  363. // 删除点击的线
  364. this.curQue.con.forEach((item, i) => {
  365. if (item.nodeId == conn.sourceId) {
  366. this.$set(this.data[i], "source", null);
  367. this.$set(this.data[i], "target", null);
  368. if (
  369. Object.prototype.toString
  370. .call(item.AnswerList)
  371. .indexOf("Number") != -1
  372. ) {
  373. this.$set(this.data[i], "userAnswerJudge", "[JUDGE##F##JUDGE]");
  374. }
  375. }
  376. });
  377. let node = document.getElementById(conn.sourceId);
  378. this.jsPlumb.removeAllEndpoints(node);
  379. sessionStorage.setItem("LineData", JSON.stringify(this.data));
  380. this.$set(
  381. this.curQue,
  382. "Bookanswer",
  383. JSON.parse(JSON.stringify(this.data))
  384. );
  385. }
  386. });
  387. //连线时触发
  388. this.jsPlumb.bind("connection", (conn, originalEvent) => {
  389. if (!this.TaskModel || this.TaskModel != "ANSWER") {
  390. let fig = false;
  391. this.data.forEach((item) => {
  392. if (item.source == conn.sourceId && item.target == conn.targetId) {
  393. fig = true;
  394. }
  395. });
  396. if (!fig) {
  397. this.curQue.con.forEach((item, i) => {
  398. if (conn.sourceId == item.nodeId) {
  399. this.$set(this.data[i], "source", conn.sourceId);
  400. this.$set(this.data[i], "target", conn.targetId);
  401. if (
  402. Object.prototype.toString
  403. .call(item.AnswerList)
  404. .indexOf("Number") != -1
  405. ) {
  406. if (
  407. conn.targetId == this.curQue.option[item.AnswerList].nodeId
  408. ) {
  409. this.$set(
  410. this.data[i],
  411. "userAnswerJudge",
  412. "[JUDGE##T##JUDGE]"
  413. );
  414. } else {
  415. this.$set(
  416. this.data[i],
  417. "userAnswerJudge",
  418. "[JUDGE##F##JUDGE]"
  419. );
  420. }
  421. }
  422. }
  423. });
  424. // this.data.push({
  425. // source: conn.sourceId,
  426. // target: conn.targetId,
  427. // });
  428. sessionStorage.setItem("LineData", JSON.stringify(this.data));
  429. this.$set(
  430. this.curQue,
  431. "Bookanswer",
  432. JSON.parse(JSON.stringify(this.data))
  433. );
  434. }
  435. }
  436. });
  437. //右键触发
  438. this.jsPlumb.bind("contextmenu", (conn, originalEvent) => {
  439. console.log(conn, originalEvent);
  440. });
  441. },
  442. // 初始化规则使其可以连线、拖拽
  443. initLeaf(id, type) {
  444. const ins = this.jsPlumb;
  445. const elem = document.getElementById(id);
  446. if (type === "source") {
  447. ins.makeSource(elem, {
  448. anchor: [1, 0.5, 0.5, 0.5], // 左 上 右 下 数字我调不太准确 可改成left right
  449. allowLoopback: false, //允许回连
  450. maxConnections: 1, //最大连接数(-1表示不限制)
  451. });
  452. } else {
  453. ins.makeTarget(elem, {
  454. anchor: [0, 0.5, 0, 0],
  455. allowLoopback: false,
  456. maxConnections: 1,
  457. });
  458. }
  459. },
  460. setjsPlumb(sourceFlag, targetFlag) {
  461. const source = document.getElementsByName("source");
  462. const target = document.getElementsByName("target");
  463. this.jsPlumb.setSourceEnabled(source, sourceFlag);
  464. this.jsPlumb.setTargetEnabled(target, targetFlag);
  465. this.jsPlumb.setDraggable(source, false); // 是否支持拖拽
  466. this.jsPlumb.setDraggable(target, false); // 是否支持拖拽
  467. },
  468. conImageload() {
  469. this.lodimgnumber++;
  470. let _this = this;
  471. if (_this.lodimgnumber == _this.allimgnumber) {
  472. _this.curQue.option.forEach((item, index) => {
  473. for (let i = 0; i < this.curQue.con.length; i++) {
  474. let nodeleft = document.getElementsByClassName(
  475. `left${i + this.number}`
  476. )[0];
  477. let noderight = document.getElementsByClassName(
  478. `right${index + this.number}`
  479. )[0];
  480. if (nodeleft.offsetHeight > noderight.offsetHeight) {
  481. noderight.style.height = nodeleft.offsetHeight + "px";
  482. } else {
  483. nodeleft.style.height = noderight.offsetHeight + "px";
  484. }
  485. }
  486. });
  487. }
  488. },
  489. },
  490. //生命周期 - 创建完成(可以访问当前this实例)
  491. created() {
  492. let sData = null;
  493. if (!this.curQue.Bookanswer) {
  494. // sData = JSON.parse(sessionStorage.getItem("LineData"));
  495. sData = [];
  496. } else {
  497. sData = JSON.parse(this.curQue.Bookanswer);
  498. }
  499. this.data = [];
  500. if (sData) {
  501. this.data = sData;
  502. }
  503. this.curQue.con.forEach((item, i) => {
  504. let nodeId = item.Isexample
  505. ? "left_" + i + this.number + "Isexample"
  506. : "left_" + i + this.number;
  507. item.nodeId = nodeId;
  508. if (item.img_list.length > 0) {
  509. this.allimgnumber++;
  510. }
  511. if (item.Isexample) {
  512. this.data.push({
  513. id: item.nodeId,
  514. source: item.nodeId,
  515. target: "right_" + item.AnswerList + this.number,
  516. index: i,
  517. answer: item.AnswerList,
  518. userAnswerJudge: "",
  519. });
  520. }
  521. });
  522. this.curQue.option.forEach((item, i) => {
  523. let nodeId = item.Isexample
  524. ? "right_" + i + this.number + "Isexample"
  525. : "right_" + i + this.number;
  526. item.nodeId = nodeId;
  527. if (item.img_list.length > 0) {
  528. this.allimgnumber++;
  529. }
  530. });
  531. this.curQue.con.forEach((item, i) => {
  532. if (!item.Isexample) {
  533. this.data.push({
  534. answer: item.AnswerList,
  535. index: i,
  536. source: null,
  537. target: null,
  538. userAnswerJudge:
  539. Object.prototype.toString.call(item.AnswerList).indexOf("Number") ==
  540. -1
  541. ? ""
  542. : "[JUDGE##F##JUDGE]",
  543. });
  544. }
  545. });
  546. },
  547. //生命周期 - 挂载完成(可以访问DOM元素)
  548. mounted() {
  549. this.showPlumb();
  550. // 根据记录自动连起来
  551. if (this.allimgnumber == 0) {
  552. for (let i = 0; i < this.curQue.con.length; i++) {
  553. let nodeleft = document.getElementsByClassName(
  554. `left${i + this.number}`
  555. )[0];
  556. let noderight = document.getElementsByClassName(
  557. `right${i + this.number}`
  558. )[0];
  559. if (nodeleft && noderight) {
  560. if (nodeleft.offsetHeight > noderight.offsetHeight) {
  561. noderight.style.height = nodeleft.offsetHeight + "px";
  562. } else {
  563. nodeleft.style.height = noderight.offsetHeight + "px";
  564. }
  565. }
  566. }
  567. }
  568. setTimeout(() => {
  569. if (this.data.length > 0) {
  570. this.data.forEach((item) => {
  571. this.jsPlumb.connect({
  572. source: item.source,
  573. target: item.target,
  574. });
  575. });
  576. }
  577. }, 1000);
  578. },
  579. //生命周期-创建之前
  580. beforeCreated() {},
  581. //生命周期-挂载之前
  582. beforeMount() {},
  583. //生命周期-更新之前
  584. beforUpdate() {},
  585. //生命周期-更新之后
  586. updated() {
  587. for (let i = 0; i < this.curQue.con.length; i++) {
  588. let nodeleft = document.getElementsByClassName(`left${i}`)[0];
  589. let noderight = document.getElementsByClassName(`right${i}`)[0];
  590. if (nodeleft && noderight) {
  591. if (nodeleft.offsetHeight > noderight.offsetHeight) {
  592. noderight.style.height = nodeleft.offsetHeight + "px";
  593. } else {
  594. nodeleft.style.height = noderight.offsetHeight + "px";
  595. }
  596. }
  597. }
  598. },
  599. //生命周期-销毁之前
  600. beforeDestory() {},
  601. //生命周期-销毁完成
  602. destoryed() {},
  603. //如果页面有keep-alive缓存功能,这个函数会触发
  604. activated() {},
  605. };
  606. </script>
  607. <style lang="scss" scoped>
  608. /* @import url(); 引入css类 */
  609. .JoinLine {
  610. width: 100%;
  611. .main {
  612. background: #f7f7f7;
  613. border: 1px solid rgba(0, 0, 0, 0.1);
  614. box-sizing: border-box;
  615. border-radius: 8px;
  616. padding: 24px 40px;
  617. }
  618. .container {
  619. position: relative;
  620. display: flex;
  621. justify-content: center;
  622. ul {
  623. list-style: none;
  624. li {
  625. // width: 333px;
  626. // // height: 64px;
  627. // background: #ffffff;
  628. // border: 1px solid rgba(0, 0, 0, 0.1);
  629. // box-sizing: border-box;
  630. // border-radius: 8px;
  631. margin-bottom: 16px;
  632. display: flex;
  633. align-items: center;
  634. > img {
  635. width: 24px;
  636. height: 24px;
  637. }
  638. }
  639. }
  640. .left {
  641. width: 50%;
  642. ul {
  643. > div {
  644. text-align: center;
  645. font-weight: bold;
  646. font-size: 16px;
  647. line-height: 150%;
  648. color: #000000;
  649. margin-bottom: 16px;
  650. }
  651. li {
  652. padding: 8px 0;
  653. display: flex;
  654. justify-content: flex-end; //右对齐
  655. > div {
  656. font-size: 16px;
  657. line-height: 150%;
  658. color: #000000;
  659. img {
  660. max-width: 238px;
  661. height: 158px;
  662. }
  663. .text {
  664. max-width: 200px;
  665. width: 100%;
  666. padding: 8px 16px;
  667. background: #ffffff;
  668. border: 1px solid rgba(0, 0, 0, 0.1);
  669. box-sizing: border-box;
  670. border-radius: 8px;
  671. display: flex;
  672. flex-wrap: wrap;
  673. p {
  674. margin: 0;
  675. }
  676. }
  677. }
  678. span {
  679. width: 24px;
  680. height: 24px;
  681. font-family: "robot";
  682. font-style: normal;
  683. font-weight: normal;
  684. font-size: 16px;
  685. line-height: 150%;
  686. text-align: center;
  687. color: #ffffff;
  688. background: #a7a7a7;
  689. border-radius: 50%;
  690. margin-left: 8px;
  691. margin-right: 12px;
  692. }
  693. > img {
  694. cursor: pointer;
  695. width: 24px;
  696. height: 24px;
  697. }
  698. }
  699. }
  700. }
  701. .right {
  702. width: 50%;
  703. margin-left: 88px;
  704. ul {
  705. > div {
  706. width: 334px;
  707. text-align: center;
  708. font-weight: bold;
  709. font-size: 16px;
  710. line-height: 150%;
  711. color: #000000;
  712. margin-bottom: 16px;
  713. }
  714. li {
  715. padding: 8px 0;
  716. > img {
  717. margin-left: 16px;
  718. width: 24px;
  719. height: 24px;
  720. }
  721. > span {
  722. width: 24px;
  723. height: 24px;
  724. font-family: "robot";
  725. font-style: normal;
  726. font-weight: normal;
  727. font-size: 16px;
  728. line-height: 150%;
  729. text-align: center;
  730. color: #ffffff;
  731. background: #a7a7a7;
  732. border-radius: 50%;
  733. margin-left: 12px;
  734. margin-right: 8px;
  735. }
  736. div {
  737. img {
  738. max-width: 238px;
  739. height: 158px;
  740. }
  741. .text {
  742. max-width: 200px;
  743. padding: 8px 16px;
  744. background: #ffffff;
  745. border: 1px solid rgba(0, 0, 0, 0.1);
  746. box-sizing: border-box;
  747. border-radius: 8px;
  748. display: flex;
  749. align-items: center;
  750. flex-wrap: wrap;
  751. p {
  752. margin: 0;
  753. }
  754. }
  755. }
  756. }
  757. }
  758. }
  759. }
  760. .fuwei {
  761. margin-top: 16px;
  762. height: 40px;
  763. &.notAllow {
  764. > div {
  765. cursor: not-allowed;
  766. }
  767. }
  768. > div {
  769. float: right;
  770. width: 72px;
  771. height: 40px;
  772. background: #ffffff;
  773. border: 1px solid rgba(0, 0, 0, 0.1);
  774. box-sizing: border-box;
  775. border-radius: 8px;
  776. display: flex;
  777. align-items: center;
  778. font-weight: bold;
  779. font-size: 16px;
  780. line-height: 150%;
  781. display: flex;
  782. align-items: center;
  783. text-align: center;
  784. color: #000000;
  785. cursor: pointer;
  786. img {
  787. margin-left: 8px;
  788. width: 24px;
  789. height: 24px;
  790. }
  791. }
  792. }
  793. }
  794. </style>
  795. <style lang="scss">
  796. .jtk-connector {
  797. path {
  798. cursor: pointer;
  799. }
  800. }
  801. </style>