You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1797 lines
40 KiB

  1. <template>
  2. <div class="pages">
  3. <div class="app-titel" style="height: auto; padding: 26px 0">
  4. <div class="screeningbox">
  5. <div class="screeningboxlebl">提交时间:</div>
  6. <el-radio-group
  7. v-model="params.dateType"
  8. size="small"
  9. @change="tabtimetap"
  10. >
  11. <el-radio-button label="">全部</el-radio-button>
  12. <el-radio-button label="0">今日</el-radio-button>
  13. <el-radio-button label="1">昨日</el-radio-button>
  14. <el-radio-button label="2">近一周</el-radio-button>
  15. </el-radio-group>
  16. <div style="margin-left: 26px">
  17. <el-date-picker
  18. style="width: 250px; height: 32px; line-height: 32px"
  19. @change="confirmtime()"
  20. v-model="customtime"
  21. type="daterange"
  22. range-separator="至"
  23. value-format="yyyy-MM-dd"
  24. start-placeholder="开始日期"
  25. end-placeholder="结束日期"
  26. >
  27. </el-date-picker>
  28. </div>
  29. <div class="screeningboxlebl" style="margin-left: 20px">项目:</div>
  30. <div style="height: 32px">
  31. <el-select
  32. v-model="params.projectId"
  33. collapse-tags
  34. filterable
  35. clearable
  36. placeholder="请选择"
  37. >
  38. <el-option
  39. v-for="item in projectList"
  40. :key="item.id"
  41. :label="item.propertyName"
  42. :value="item.id"
  43. >
  44. </el-option>
  45. </el-select>
  46. </div>
  47. <div class="screeningboxlebl">关键词:</div>
  48. <el-input
  49. class="inputbox"
  50. v-model="params.keywords"
  51. placeholder="客户名称/手机号/顾问名称"
  52. ></el-input>
  53. <div class="screeningboxlebl"></div>
  54. <button class="button1" @click="getPageList()">筛选</button>
  55. <button
  56. style="background: #ffffff; color: #606775"
  57. class="button1"
  58. @click="Emptycondition()"
  59. >
  60. 清空筛选条件
  61. </button>
  62. </div>
  63. </div>
  64. <div class="elmenus">
  65. <el-menu
  66. :default-active="auditStatusListIndex"
  67. class="el-menu-demo"
  68. mode="horizontal"
  69. @select="handleSelect"
  70. >
  71. <el-menu-item
  72. v-for="(data, index) in auditStatusList"
  73. :key="index"
  74. :index="data.value"
  75. >{{ data.title }}
  76. </el-menu-item>
  77. </el-menu>
  78. </div>
  79. <div class="app-box">
  80. <el-table
  81. :data="tableData"
  82. stripe
  83. :load="loading"
  84. :header-cell-style="{
  85. background: '#F7F8FA',
  86. borderColor: '#E0E0E0',
  87. color: '#606775',
  88. }"
  89. style="width: 100%"
  90. >
  91. <el-table-column
  92. width="180"
  93. prop="createTime"
  94. label="提交开始时间"
  95. align="center"
  96. >
  97. </el-table-column>
  98. <el-table-column prop="projectName" label="项目名称" align="center">
  99. </el-table-column>
  100. <el-table-column prop="name" label="客户" align="center">
  101. </el-table-column>
  102. <el-table-column prop="phone" width="180" label="手机" align="center">
  103. </el-table-column>
  104. <el-table-column
  105. prop="agentName"
  106. width="180"
  107. label="顾问"
  108. align="center"
  109. >
  110. </el-table-column>
  111. <el-table-column
  112. prop="assignedTime"
  113. label="接待时间"
  114. width="180"
  115. align="center"
  116. >
  117. </el-table-column>
  118. <el-table-column
  119. width="180"
  120. prop="invalidReason"
  121. label="无效原因"
  122. align="center"
  123. >
  124. </el-table-column>
  125. <el-table-column
  126. width="180"
  127. prop="auditStatus"
  128. label="审核状态"
  129. align="center"
  130. >
  131. <template slot-scope="{ row }">
  132. {{ row.auditStatus | statusText }}
  133. </template>
  134. </el-table-column>
  135. <el-table-column
  136. width="180"
  137. prop="rejectReason"
  138. label="驳回原因"
  139. align="center"
  140. >
  141. </el-table-column>
  142. <el-table-column
  143. width="180"
  144. prop="auditor"
  145. label="审核人"
  146. align="center"
  147. >
  148. </el-table-column>
  149. <el-table-column prop="updateTime" label="审核时间" align="center">
  150. </el-table-column>
  151. <el-table-column label="操作" fixed="right" width="120" align="center">
  152. <template slot-scope="scope">
  153. <div
  154. v-if="permissions['invalid_watch_audit']"
  155. style="color: #2671e2; cursor: pointer"
  156. @click="Toview(scope)"
  157. >
  158. 查看
  159. </div>
  160. </template>
  161. </el-table-column>
  162. </el-table>
  163. </div>
  164. <div class="block">
  165. <div class="blockbox">
  166. <el-pagination
  167. @size-change="handleSizeChange"
  168. @current-change="handleCurrentChange"
  169. :current-page="params.pageNum"
  170. :page-sizes="[10, 20, 30, 40, 50, 100]"
  171. :page-size="params.pageSize"
  172. layout="total, sizes, prev, pager, next, jumper"
  173. :total="total"
  174. >
  175. </el-pagination>
  176. </div>
  177. </div>
  178. <el-dialog
  179. title="无效审核"
  180. :visible.sync="dialogTableVisible"
  181. :close-on-click-modal="false"
  182. :show-close="true"
  183. top="5vh"
  184. custom-class="hahaha"
  185. >
  186. <div class="appcenter" v-loading="digloading">
  187. <div class="info">
  188. <p v-if="scopeInfo.invalidReason">
  189. <span>无效原因:</span
  190. ><span style="color: red">{{ scopeInfo.invalidReason }}</span>
  191. </p>
  192. <p
  193. style="margin-top: 10px; display: inline-flex; align-items: center"
  194. >
  195. <span style="margin: 0 10px 0 0"
  196. >项目名称:{{ scopeInfo.projectName }}</span
  197. >
  198. <span style="margin: 0 10px 0 0"
  199. >客户:{{ scopeInfo.name }} {{ scopeInfo.phone }}</span
  200. >
  201. <span style="margin: 0 10px 0 0"
  202. >接待顾问:{{ scopeInfo.agentName }}</span
  203. >
  204. <span style="margin: 0 10px 0 0"
  205. >接待时间:{{ scopeInfo.assignedTime }}</span
  206. >
  207. </p>
  208. </div>
  209. <div class="bottom">
  210. <div style="display: flex;width: 100%;">
  211. <div id="aplayer" style="flex: 1"></div>
  212. <div style="margin: 25px 0 0 -5px" @click="download()">
  213. <img
  214. style="width: 12px; height: 12px"
  215. src="http://zkgj.quhouse.com/static/plugins/audio/images/xiaza1.png"
  216. alt=""
  217. />
  218. </div>
  219. </div>
  220. <div class="aplayerSpeed">
  221. <div
  222. style="display: flex; justify-content: space-around; width: 130px"
  223. >
  224. <div @click="aplayerChange('del')" style="cursor: pointer">
  225. 上一首
  226. </div>
  227. <div style="cursor: pointer">1/1</div>
  228. <div @click="aplayerChange('add')" style="cursor: pointer">
  229. 下一首
  230. </div>
  231. </div>
  232. <div
  233. @click="aplayerSpeed(0.5)"
  234. :class="aplayerSpeedNum == 0.5 ? 'aplayerSpeedFont' : ''"
  235. style="cursor: pointer"
  236. >
  237. 0.5x
  238. </div>
  239. <div
  240. @click="aplayerSpeed(1)"
  241. :class="aplayerSpeedNum == 1 ? 'aplayerSpeedFont' : ''"
  242. style="cursor: pointer"
  243. >
  244. 1.0x
  245. </div>
  246. <div
  247. @click="aplayerSpeed(1.5)"
  248. :class="aplayerSpeedNum == 1.5 ? 'aplayerSpeedFont' : ''"
  249. style="cursor: pointer"
  250. >
  251. 1.5x
  252. </div>
  253. <div
  254. @click="aplayerSpeed(2)"
  255. :class="aplayerSpeedNum == 2 ? 'aplayerSpeedFont' : ''"
  256. style="cursor: pointer"
  257. >
  258. 2.0x
  259. </div>
  260. </div>
  261. </div>
  262. <div style="width: 100%; display: flex">
  263. <div style="width: 70%">
  264. <div class="headboxbott">
  265. <div class="headovfu">
  266. <div style="width: 100%; display: flex" class="inner-container">
  267. <div
  268. v-for="(item, index) in tablist"
  269. :key="index"
  270. @click="tapspagek(item, index)"
  271. :class="{ roleindexclass: item.select }"
  272. class="biaoji1"
  273. >
  274. {{ item.name }}
  275. </div>
  276. </div>
  277. </div>
  278. </div>
  279. <div class="center" ref="lrc">
  280. <div
  281. class="text"
  282. v-for="(item, index) in transcriptionlist"
  283. :key="index"
  284. :class="{
  285. textRight: item.speaker != 0 && item.speaker % 2 == 0,
  286. }"
  287. :data-bg="item.bg"
  288. :data-ed="item.ed"
  289. :data-speaker="item.speaker"
  290. v-if="isShowRole(item)"
  291. >
  292. <div class="avatar">
  293. <img
  294. v-if="item.isShow == 1"
  295. src="http://zkgj.quhouse.com/static/plugins/audio/images/A.png"
  296. alt=""
  297. />
  298. <div v-else>{{ item.speaker | toCapital }}</div>
  299. </div>
  300. <div class="content123">
  301. <div class="speaker-texts">
  302. <div
  303. class="speaker-text"
  304. :class="{ adjskdjroleindexclass: item.isShow == 1 }"
  305. v-html="item.onebest"
  306. ></div>
  307. <div class="play">
  308. <img
  309. @click="play(item)"
  310. src="https://autoiot.oss-cn-beijing.aliyuncs.com/static/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20220913154836.png"
  311. alt=""
  312. />
  313. </div>
  314. </div>
  315. </div>
  316. </div>
  317. </div>
  318. </div>
  319. <div class="log-list">
  320. <div style="width: 100%; padding: 0 0 20px 0">日志记录</div>
  321. <div class="log-lists">
  322. <el-steps direction="vertical">
  323. <el-step v-for="(data, index) in logList" :key="index">
  324. <template slot="icon">
  325. <div
  326. style="
  327. width: 10px;
  328. height: 10px;
  329. background: #2671e2;
  330. border-radius: 50%;
  331. "
  332. ></div>
  333. </template>
  334. <template slot="title">
  335. <span style="color: #2671e2">{{ data.operationDate }}</span>
  336. </template>
  337. <template slot="description">
  338. <div
  339. class="namesss"
  340. style="
  341. display: inline-flex;
  342. align-items: center;
  343. color: #333;
  344. "
  345. >
  346. <span>{{ data.operationUser || "-" }}</span
  347. >&nbsp;&nbsp;<span>{{ data.auditOperation }}</span
  348. >&nbsp;&nbsp;<span
  349. :style="{
  350. color:
  351. data.auditStatus == 1
  352. ? 'green'
  353. : data.auditStatus == 2
  354. ? 'red'
  355. : '#333',
  356. }"
  357. >{{ data.auditStatus | textauditStatus }}</span
  358. >
  359. </div>
  360. <div v-if="data.auditReason" style="color: #999">
  361. 原因: {{ data.auditReason }}
  362. </div>
  363. </template>
  364. </el-step>
  365. </el-steps>
  366. </div>
  367. </div>
  368. </div>
  369. </div>
  370. <template slot="footer">
  371. <div class="btn">
  372. <div class="btns" @click="proPage">上一条</div>
  373. <!-- <%-- auditStatus 1:通过审核,2:审核驳回,3:已撤销--%> <%--
  374. //审核状态auditStatus; //审核状态
  375. 0:待审核,1:通过审核,2:审核驳回,3:已撤销--%> -->
  376. <!-- 审核权限 -->
  377. <template v-if="scopeInfo.auditStatus == 0 && checkPermitBtn('invalid_watch_examine')">
  378. <div class="btns pass" @click="changeAuditStatus(1)">通过</div>
  379. </template>
  380. <template v-if="scopeInfo.auditStatus == 0 && checkPermitBtn('invalid_watch_examine')">
  381. <div class="btns rejued" @click="rejectReasonTips(2)">驳回</div>
  382. </template>
  383. <!-- 标记有效无效接待 -->
  384. <template
  385. v-if="
  386. scopeInfo.auditStatus == 0 && checkPermitBtns('bjyx')
  387. "
  388. >
  389. <div class="btns rejued" @click="changeAuditStatus(3)">撤销</div>
  390. </template>
  391. <div class="btns" @click="nextPage">下一条</div>
  392. <div class="btns btns-line" @click="dialogTableVisible = false">
  393. 关闭
  394. </div>
  395. </div>
  396. </template>
  397. </el-dialog>
  398. <el-dialog
  399. title="驳回原因"
  400. :visible.sync="dialogReason"
  401. :close-on-click-modal="false"
  402. width="400px"
  403. >
  404. <el-input
  405. type="textarea"
  406. :autosize="{ minRows: 2, maxRows: 4 }"
  407. placeholder="请输入内容"
  408. maxlength="50"
  409. v-model="rejectReason"
  410. >
  411. </el-input>
  412. <template slot="footer">
  413. <div class="btn">
  414. <div class="btns cen" @click="cancelDialogReason">取消</div>
  415. <div class="btns" @click="changeAuditStatus(2)">确认</div>
  416. </div>
  417. </template>
  418. </el-dialog>
  419. </div>
  420. </template>
  421. <script>
  422. import { mapGetters } from "vuex";
  423. import "aplayer/dist/APlayer.min.css";
  424. import APlayer from "aplayer";
  425. import { exportMethodPost } from "@/util/util";
  426. export default {
  427. data() {
  428. return {
  429. projectList: [], // 项目列表
  430. tableData: [], // table数据
  431. customtime: [], // 时间picker
  432. loading: false, // 加载动画
  433. total: 0, // 总条数
  434. params: {
  435. // 接口入参
  436. dateType: "", // 时间类型 0:今日,1:昨日,2:近一周
  437. startTime: "", // 开始时间
  438. endTime: "", // 结束时间
  439. keywords: "", // 筛选条件关键词
  440. pageNum: 1, // 页码
  441. pageSize: 10, // 页数
  442. projectId: "", // 项目id
  443. auditStatus: -1, // 审核状态 -1全部 0:待审核,1:通过审核,2:审核驳回,3:已撤销
  444. },
  445. auditStatusListIndex: -1, // 默认选中全部
  446. auditStatusList: [
  447. {
  448. title: "全部",
  449. value: -1,
  450. },
  451. {
  452. title: "待审核",
  453. value: 0,
  454. },
  455. {
  456. title: "通过",
  457. value: 1,
  458. },
  459. {
  460. title: "驳回",
  461. value: 2,
  462. },
  463. {
  464. title: "撤销",
  465. value: 3,
  466. },
  467. ], // 筛选条件数组
  468. dialogTableVisible: false, // 对话框
  469. dialogReason: false, // 对话框
  470. // 播放器
  471. aplayerSpeedNum: "1", //点击字体更换
  472. tablist: [],
  473. transcriptionlist: [], // 转写内容
  474. Broadcastaddress: "", // 录音地址
  475. roleSelectArr: [0], // 当前选中的角色标记点
  476. logList: [], // 日志列表页面
  477. scopeInfo: {}, // 查看弹窗的数据
  478. littPermitBtn: [], // 标记顾问的权限
  479. rejectReason: "", // 驳回原因
  480. index: 0, // 当前查看的列表下标
  481. digloading: false, // 加载动画
  482. };
  483. },
  484. computed: {
  485. ...mapGetters(["permissions"]),
  486. // 是否有审核权限
  487. checkPermitBtn() {
  488. return (name) => {
  489. return this.permissions[name] ? true : false
  490. };
  491. },
  492. // 是否有审核权限(小程序)
  493. checkPermitBtns() {
  494. return (name) => {
  495. let index = this.littPermitBtn.findIndex((item) => item.permission == name);
  496. return index != -1;
  497. };
  498. },
  499. // 是否展示改角色
  500. isShowRole() {
  501. return (data) => {
  502. if (this.roleSelectArr.findIndex((item) => item == 0) != -1) {
  503. return true;
  504. } else {
  505. let index = this.roleSelectArr.findIndex(
  506. (item) => item == data.speaker
  507. );
  508. if (index != -1) {
  509. return true;
  510. } else {
  511. return false;
  512. }
  513. }
  514. };
  515. },
  516. },
  517. mounted() {
  518. this.getPageList();
  519. this.getFindHouseListByAccount();
  520. },
  521. methods: {
  522. handleSelect(e) {
  523. this.params.auditStatus = e;
  524. this.getPageList();
  525. },
  526. // 下一页
  527. nextPage() {
  528. if (this.index == this.tableData.length - 1) {
  529. this.$message.error("已经是最后一条了~");
  530. return;
  531. }
  532. let obj = {
  533. $index: this.index + 1,
  534. row: this.tableData[this.index + 1],
  535. };
  536. this.Toview(obj);
  537. },
  538. // 上一页
  539. proPage() {
  540. if (this.index == 0) {
  541. this.$message.error("已经到头了~");
  542. return;
  543. }
  544. let obj = {
  545. $index: this.index - 1,
  546. row: this.tableData[this.index - 1],
  547. };
  548. this.Toview(obj);
  549. },
  550. cancelDialogReason() {
  551. this.dialogReason = false;
  552. this.rejectReason = "";
  553. },
  554. // 驳回原因填写
  555. rejectReasonTips(status) {
  556. this.dialogReason = true;
  557. },
  558. // 改状态
  559. changeAuditStatus(status) {
  560. if (status == 2 && !this.rejectReason) {
  561. this.$message.error("请输入无效原因");
  562. return;
  563. }
  564. this.$api.http.updateReception({
  565. id: this.scopeInfo.id,
  566. auditStatus: status,
  567. rejectReason: this.rejectReason, // 驳回原因
  568. }).then((res) => {
  569. if (res.code == 10000) {
  570. this.$message.success(res.message)
  571. if (status == 2) this.dialogReason = false;
  572. this.resetAuditParams();
  573. this.getPageList();
  574. } else {
  575. this.$message.error(res.message)
  576. }
  577. });
  578. },
  579. // 重置参数
  580. resetAuditParams() {
  581. this.dialogTableVisible = false;
  582. this.rejectReason = "";
  583. this.scopeInfo = {};
  584. },
  585. // 获取项目列表
  586. getFindHouseListByAccount() {
  587. this.$api.http.InvalidFindHouseListByAccount().then((res) => {
  588. if (res.code == 10000) {
  589. this.projectList = res.data;
  590. }
  591. });
  592. },
  593. // 获取待审核列表
  594. getPageList() {
  595. this.loading = true;
  596. this.tableData = [];
  597. this.$api.http
  598. .InvalidReceptionGetList(this.params)
  599. .then((result) => {
  600. this.loading = false;
  601. if (result.code == 10000) {
  602. this.tableData = result.data.records;
  603. this.total = result.data.total;
  604. }
  605. })
  606. .catch((e) => {
  607. this.loading = false;
  608. });
  609. },
  610. Toview(scope) {
  611. console.log(scope.row, "asdjkadlksajskl");
  612. this.digloading = true;
  613. this.index = scope.$index;
  614. this.scopeInfo = scope.row;
  615. this.Getsthetransliteratecontent(scope.row.customerId);
  616. this.findReceptionLog(scope.row.customerId);
  617. },
  618. //清空筛选条件
  619. Emptycondition() {
  620. for (let i in this.params) {
  621. if (i == "pageNum") this.params[i] = 1;
  622. if (i == "pageSize") this.params[i] = 10;
  623. if (i != "menu" && i != "pageNum" && i != "pageSize")
  624. this.params[i] = "";
  625. }
  626. this.customtime = [];
  627. this.$forceUpdate();
  628. },
  629. // tab选项 清空时间条件
  630. tabtimetap() {
  631. this.params.startTime = "";
  632. this.params.endTime = "";
  633. this.customtime = [];
  634. this.getPageList();
  635. },
  636. // 时间选择器选中
  637. confirmtime() {
  638. if (this.customtime.length) {
  639. this.params.startTime = this.customtime[0];
  640. this.params.endTime = this.customtime[1];
  641. }
  642. },
  643. handleSizeChange(val) {
  644. console.log("每页条" + val);
  645. this.params.pageSize = val;
  646. this.getPageList();
  647. },
  648. handleCurrentChange(val) {
  649. this.params.pageNum = val;
  650. this.getPageList();
  651. },
  652. /*** 弹窗所用方法 ***/
  653. // 切换角色
  654. tapspagek(data, index) {
  655. if (index == 0) this.resetTabList();
  656. else this.resetAll();
  657. data.select = !data.select;
  658. this.roleSelectArr = [];
  659. if (index != 0) {
  660. this.tablist.forEach((item) => {
  661. if (item.select) {
  662. this.roleSelectArr.push(item.speaker);
  663. }
  664. });
  665. } else {
  666. this.roleSelectArr.push(0);
  667. }
  668. this.$forceUpdate();
  669. },
  670. // 选中全部时互斥全部选项与角色选项
  671. resetTabList() {
  672. this.tablist.forEach((item) => {
  673. item.select = false;
  674. });
  675. },
  676. // 选中角色时将全部反选
  677. resetAll() {
  678. this.tablist[0].select = false;
  679. },
  680. // 生成角色列表
  681. creatTabList(num) {
  682. for (var i = 0; i <= num; i++) {
  683. if (i === 0) {
  684. this.tablist.push({
  685. name: "全部",
  686. select: true,
  687. speaker: i,
  688. });
  689. } else {
  690. this.tablist.push({
  691. name: String.fromCharCode(i + 64),
  692. select: false,
  693. speaker: i,
  694. });
  695. }
  696. }
  697. },
  698. // 获取日志列表
  699. findReceptionLog(id) {
  700. this.$api.http
  701. .InvalidFindReceptionLog({
  702. customerId: id,
  703. })
  704. .then((res) => {
  705. console.log(res, "daskjdsalkjdklsajkld");
  706. if (res.code == 10000) {
  707. // permitBtn 小程序权限,为了方便顾问上号撤销自己的
  708. this.digloading = false;
  709. this.logList = res.data.list;
  710. this.littPermitBtn = res.data.permitBtn;
  711. }
  712. });
  713. },
  714. //获取播播放地址和转写内容
  715. Getsthetransliteratecontent(isnull) {
  716. this.$api.http
  717. .InvalidFindBycusId({
  718. cusId: isnull,
  719. })
  720. .then((res) => {
  721. console.log("adjkaljdklsalkd", res);
  722. if (res.code == 0) {
  723. this.dialogTableVisible = true; // 请求成功后打开弹窗
  724. this.tablist = [];
  725. res.data[0].audioContent != ""
  726. ? (this.transcriptionlist = JSON.parse(res.data[0].audioContent))
  727. : (this.transcriptionlist = []);
  728. this.Broadcastaddress = res.data[0].recordPath;
  729. this.creatTabList(Number(res.data[0].speakerNum) || 0);
  730. if (res.data[0].speaker) {
  731. this.tablist[res.data[0].speaker].name =
  732. this.tablist[res.data[0].speaker].name + "顾问";
  733. this.roleindexbiaoji = res.data[0].speaker - 1;
  734. this.dshfkjsdkksodofydwfkhwdfkjh = res.data[0].speaker - 1;
  735. }
  736. this.bofangchushihua();
  737. }
  738. })
  739. .catch((e) => {});
  740. },
  741. //播放实例
  742. bofangchushihua() {
  743. let that = this;
  744. this.$nextTick(() => {
  745. this.aplayer = new APlayer({
  746. container: document.getElementById("aplayer"),
  747. theme: "#2671E2",
  748. audio: [
  749. {
  750. url: that.Broadcastaddress,
  751. cover:
  752. "https://qufang.oss-cn-beijing.aliyuncs.com/recording/1626251359408.png",
  753. },
  754. ],
  755. });
  756. //结束的回调
  757. this.aplayer.on("ended", function () {
  758. console.log("player ended");
  759. });
  760. this.aplayer.on("timeupdate", function () {
  761. that.drawActive(that.aplayer.audio.currentTime * 1000);
  762. });
  763. this.digloading = false;
  764. });
  765. },
  766. //倍速更改
  767. aplayerSpeed(num) {
  768. //更改倍速
  769. this.aplayer.audio.playbackRate = num;
  770. this.aplayerSpeedNum = num;
  771. },
  772. //音频播放中
  773. drawActive(playTime) {
  774. var that = this;
  775. that.playNow = playTime;
  776. $(".center .text").each(function (index) {
  777. if (this.dataset.bg < playTime && playTime < this.dataset.ed) {
  778. $(this).addClass("activecoloc");
  779. that.$nextTick(() => {
  780. document.querySelector(".center").scrollTop =
  781. $(".center .activecoloc")[0].offsetTop - 260;
  782. });
  783. } else {
  784. $(this).removeClass("activecoloc");
  785. }
  786. });
  787. },
  788. // 录音暂停播放
  789. changePlayState() {
  790. this.wavesurfer.playPause();
  791. },
  792. //倍速
  793. Timesthespeed(rate) {
  794. this.wavesurfer.setPlaybackRate(rate);
  795. },
  796. //点击播放
  797. tabseek(item) {
  798. this.centerindex = 0;
  799. let num = parseInt(item.transferContent.bg / 1000);
  800. this.aplayer.seek(num);
  801. this.aplayer.play();
  802. },
  803. //检查是否播放
  804. Checktoseeifitsplaying() {
  805. if (this.audioPlay == true) {
  806. this.wavesurfer.playPause();
  807. }
  808. },
  809. //下载
  810. download() {
  811. exportMethodPost(`/zk/file/filedownload?videoSrc=${this.Broadcastaddress}`,'接待录音', {})
  812. // window.location.href =
  813. // "${jypath}/zk/file/filedownload?videoSrc=" + this.Broadcastaddress;
  814. },
  815. // 播放
  816. play(item) {
  817. let num = parseInt(item.bg / 1000);
  818. this.aplayer.seek(num);
  819. this.aplayer.play();
  820. },
  821. },
  822. filters: {
  823. //审核状态auditStatus; //审核状态 0:待审核,1:通过审核,2:审核驳回,3:已撤销
  824. statusText(i) {
  825. let str = "";
  826. switch (Number(i)) {
  827. case 0:
  828. str = "待审核";
  829. break;
  830. case 1:
  831. str = "通过审核";
  832. break;
  833. case 2:
  834. str = "审核驳回";
  835. break;
  836. case 3:
  837. str = "已撤销";
  838. break;
  839. default:
  840. str = "";
  841. break;
  842. }
  843. return str;
  844. },
  845. // ASCII码转换 大写字母A是65 演讲人是从1开始所以num+64
  846. toCapital(num) {
  847. let str = "";
  848. if (num) {
  849. str = String.fromCharCode(num + 64);
  850. }
  851. return str;
  852. },
  853. textauditStatus(text) {
  854. let str = "";
  855. switch (Number(text)) {
  856. case 0:
  857. str = "";
  858. break;
  859. case 1:
  860. str = "审核通过";
  861. break;
  862. case 2:
  863. str = "驳回";
  864. break;
  865. default:
  866. str = "";
  867. break;
  868. }
  869. return str;
  870. },
  871. },
  872. };
  873. </script>
  874. <style lang="scss" scoped>
  875. .pages {
  876. padding: 20px;
  877. width: 100%;
  878. }
  879. .app-titel {
  880. width: 100%;
  881. height: 180px;
  882. background: #ffffff;
  883. padding-top: 26px;
  884. box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
  885. border-radius: 8px;
  886. }
  887. .screeningbox {
  888. width: 100%;
  889. height: 32px;
  890. display: flex;
  891. align-items: center;
  892. }
  893. .screeningboxlebl {
  894. min-width: 104px;
  895. text-align: right;
  896. font-size: 16px;
  897. color: #32363d;
  898. }
  899. .inputbox {
  900. width: 160px;
  901. height: 32px;
  902. background: #ffffff;
  903. }
  904. .el-input__inner {
  905. height: 32px;
  906. }
  907. .el-input__suffix {
  908. top: 6px;
  909. }
  910. .el-date-editor .el-range__icon {
  911. line-height: 25px;
  912. }
  913. .el-date-editor .el-range-separator {
  914. line-height: 25px;
  915. }
  916. .button1 {
  917. padding-left: 16px;
  918. padding-right: 16px;
  919. height: 32px;
  920. line-height: 32px;
  921. background: #2671e2;
  922. border-radius: 2px;
  923. color: #ffffff;
  924. font-size: 16px;
  925. border: none;
  926. cursor: pointer;
  927. }
  928. .app-box {
  929. width: 100%;
  930. min-height: 300px;
  931. background: #ffffff;
  932. box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
  933. border-radius: 8px;
  934. padding: 20px 20px 40px;
  935. margin-top: 20px;
  936. }
  937. .el-table thead {
  938. background: #e0e0e0;
  939. }
  940. .block {
  941. width: 100%;
  942. margin-top: 5px;
  943. display: flex;
  944. }
  945. .blockbox {
  946. margin-left: auto;
  947. }
  948. .el-date-editor .el-range-input,
  949. .el-date-editor .el-range-separator {
  950. margin: 3px;
  951. }
  952. .screeningbox .el-select .el-select__tags {
  953. flex-wrap: unset !important;
  954. overflow: auto !important;
  955. }
  956. .screeningbox .el-select .el-select__tags::-webkit-scrollbar {
  957. /*滚动条整体样式*/
  958. width: 4px; /*高宽分别对应横竖滚动条的尺寸*/
  959. height: 4px;
  960. scrollbar-arrow-color: red;
  961. }
  962. .screeningbox .el-select .el-select__tags::-webkit-scrollbar-thumb {
  963. /*滚动条里面小方块*/
  964. border-radius: 5px;
  965. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
  966. background: rgba(0, 0, 0, 0.2);
  967. scrollbar-arrow-color: red;
  968. }
  969. .screeningbox .el-select .el-select__tags::-webkit-scrollbar-track {
  970. /*滚动条里面轨道*/
  971. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
  972. border-radius: 0;
  973. background: rgba(0, 0, 0, 0.1);
  974. }
  975. .el-radio-button__orig-radio:checked + .el-radio-button__inner {
  976. color: #fff;
  977. background-color: #2671e2;
  978. border-color: #2671e2;
  979. -webkit-box-shadow: -1px 0 0 0 #2671e2;
  980. box-shadow: -1px 0 0 0 #2671e2;
  981. }
  982. .appcenter {
  983. width: 100%;
  984. height: 600px;
  985. position: relative;
  986. }
  987. .btn {
  988. width: 100%;
  989. height: 60px;
  990. display: flex;
  991. align-items: center;
  992. justify-content: center;
  993. }
  994. .btn .btns {
  995. margin: 0 10px;
  996. width: 75px;
  997. height: 30px;
  998. text-align: center;
  999. line-height: 30px;
  1000. background: #2671e2;
  1001. color: #fff;
  1002. border-radius: 8px;
  1003. border: 1px solid #2671e2;
  1004. cursor: pointer;
  1005. }
  1006. .btn .cen {
  1007. background: #fff;
  1008. color: #333;
  1009. border-radius: 8px;
  1010. border: 1px solid #333;
  1011. }
  1012. .btns-line {
  1013. background: #fff;
  1014. color: #333;
  1015. border: 1px solid #333;
  1016. border-radius: 8px;
  1017. }
  1018. .btn .pass {
  1019. background: #00b83f;
  1020. border: 1px solid #00b83f;
  1021. }
  1022. .btn .rejued {
  1023. background: #f76c6c;
  1024. border: 1px solid #f76c6c;
  1025. }
  1026. .bottom {
  1027. padding: 0 5px 0 0;
  1028. width: 100%;
  1029. height: 82px;
  1030. position: relative;
  1031. border-radius: 8px;
  1032. background: #fff;
  1033. }
  1034. .aplayer {
  1035. box-shadow: none;
  1036. /*width: 80%;*/
  1037. width: 95.3%;
  1038. }
  1039. .aplayer-author {
  1040. display: none;
  1041. }
  1042. .aplayer .aplayer-pic {
  1043. width: 60px;
  1044. height: 60px;
  1045. margin-left: 10px;
  1046. }
  1047. .aplayerSpeed {
  1048. display: flex;
  1049. /*justify-content: space-around;*/
  1050. justify-content: space-between;
  1051. padding: 0 10px;
  1052. font-size: 14px;
  1053. color: #999;
  1054. /*width: 616px;*/
  1055. width: 86.5%;
  1056. margin: 0 auto;
  1057. position: absolute;
  1058. left: 70px;
  1059. top: 50px;
  1060. }
  1061. /deep/.aplayer-info {
  1062. padding: 22px 7px 0px 10px;
  1063. }
  1064. /deep/.aplayer-pic {
  1065. width: 60px !important;
  1066. height: 60px !important;
  1067. }
  1068. /deep/.aplayer-music {
  1069. display: none !important;
  1070. }
  1071. .aplayer-controller {
  1072. margin-top: 15px;
  1073. }
  1074. .aplayerSpeedFont {
  1075. color: #2671e2;
  1076. }
  1077. .righttit {
  1078. width: 100%;
  1079. height: 57px;
  1080. border-top: 1px solid #e0e0e0;
  1081. border-bottom: 1px solid #e0e0e0;
  1082. display: flex;
  1083. }
  1084. .righttittab {
  1085. flex: 1;
  1086. display: flex;
  1087. justify-content: center;
  1088. align-items: center;
  1089. height: 100%;
  1090. }
  1091. .righttittab div {
  1092. height: 57px;
  1093. line-height: 57px;
  1094. font-size: 16px;
  1095. text-align: center;
  1096. }
  1097. .tophove {
  1098. color: #2671e2 !important;
  1099. border-bottom: 2px solid #2671e2;
  1100. font-weight: bold;
  1101. }
  1102. .applefttop {
  1103. width: 100%;
  1104. height: 80px;
  1105. border-bottom: 1px solid #e0e0e0;
  1106. display: flex;
  1107. align-items: center;
  1108. }
  1109. #waveform {
  1110. height: 128px;
  1111. }
  1112. .wavebottombox {
  1113. width: 100%;
  1114. height: 47px;
  1115. display: flex;
  1116. color: #ffffff;
  1117. align-items: center;
  1118. font-size: 16px;
  1119. overflow: hidden;
  1120. }
  1121. .wavebottombox div {
  1122. line-height: 47px;
  1123. height: 100%;
  1124. display: flex;
  1125. align-items: center;
  1126. }
  1127. .audioPlay {
  1128. width: 30px;
  1129. height: 30px;
  1130. margin-left: 5%;
  1131. }
  1132. .fromobj {
  1133. width: 95%;
  1134. height: 56px;
  1135. margin: 0 auto;
  1136. border-bottom: 1px solid #e0e0e0;
  1137. display: flex;
  1138. align-items: center;
  1139. }
  1140. .fromobjleab {
  1141. width: 25%;
  1142. height: 100%;
  1143. line-height: 56px;
  1144. font-size: 16px;
  1145. color: #666666;
  1146. }
  1147. .fromobjvalue {
  1148. width: 75%;
  1149. height: 100%;
  1150. line-height: 56px;
  1151. color: #32363d;
  1152. font-size: 16px;
  1153. }
  1154. .Withanewline {
  1155. width: 95%;
  1156. margin: 0 auto;
  1157. display: flex;
  1158. flex-wrap: wrap;
  1159. }
  1160. .Withanewline div {
  1161. padding-left: 12px;
  1162. padding-right: 12px;
  1163. border-radius: 2px;
  1164. height: 28px;
  1165. line-height: 28px;
  1166. color: #2671e2;
  1167. margin-left: 25px;
  1168. background: #f4f8fd;
  1169. margin-top: 20px;
  1170. }
  1171. .ratebox {
  1172. width: 100%;
  1173. height: calc(100vh - 150px);
  1174. padding-bottom: 50px;
  1175. overflow-y: scroll;
  1176. }
  1177. .mydesc {
  1178. position: absolute;
  1179. bottom: 0;
  1180. left: 0;
  1181. right: 0;
  1182. padding: 0 20px;
  1183. height: 40px;
  1184. border-top: 1px solid #ccc;
  1185. display: flex;
  1186. justify-content: space-between;
  1187. align-items: center;
  1188. background: #fff;
  1189. }
  1190. .rateboxtit {
  1191. width: 100%;
  1192. height: 56px;
  1193. display: flex;
  1194. }
  1195. .rateboxtit > div {
  1196. flex: 1;
  1197. height: 100%;
  1198. line-height: 56px;
  1199. color: #333333;
  1200. font-size: 16px;
  1201. text-align: center;
  1202. }
  1203. .rateboxcenttit {
  1204. flex: 1;
  1205. height: 44px;
  1206. background: #f8f8f8;
  1207. display: flex;
  1208. align-items: center;
  1209. color: #333333;
  1210. font-size: 16px;
  1211. }
  1212. .rateboxcenttit > div {
  1213. flex: 1;
  1214. text-align: center;
  1215. white-space: nowrap;
  1216. overflow: hidden;
  1217. text-overflow: ellipsis;
  1218. }
  1219. .rateboxcent {
  1220. width: 100%;
  1221. height: 50px;
  1222. border-bottom: 1px solid #f8f8f8;
  1223. display: flex;
  1224. align-items: center;
  1225. color: #666666;
  1226. font-size: 14px;
  1227. }
  1228. .rateboxcent > div {
  1229. flex: 1;
  1230. text-align: center;
  1231. white-space: nowrap;
  1232. overflow: hidden;
  1233. text-overflow: ellipsis;
  1234. }
  1235. .ratebutton {
  1236. width: 68px;
  1237. height: 26px;
  1238. background: #2671e2;
  1239. border-radius: 4px;
  1240. font-size: 14px;
  1241. font-weight: 400;
  1242. color: #ffffff;
  1243. text-align: center;
  1244. line-height: 26px;
  1245. margin: 0 auto;
  1246. }
  1247. .ratebutton1 {
  1248. width: 68px;
  1249. height: 26px;
  1250. background: #f2f2f2;
  1251. border-radius: 4px;
  1252. font-size: 14px;
  1253. font-weight: 400;
  1254. color: #999999;
  1255. text-align: center;
  1256. line-height: 26px;
  1257. margin: 0 auto;
  1258. }
  1259. .arrow1 {
  1260. width: 18px;
  1261. height: 18px;
  1262. }
  1263. .fromobjdd {
  1264. width: 95%;
  1265. min-height: 56px;
  1266. margin: 0 auto;
  1267. border-bottom: 1px solid #e0e0e0;
  1268. display: flex;
  1269. font-size: 16px;
  1270. }
  1271. .fromobjleabdd {
  1272. min-width: 80px;
  1273. height: 56px;
  1274. line-height: 56px;
  1275. color: #666666;
  1276. }
  1277. .fromobjvaluedd {
  1278. width: 75%;
  1279. padding-bottom: 14px;
  1280. }
  1281. .fromobjvaluedd123 {
  1282. width: 100%;
  1283. display: flex;
  1284. flex-wrap: wrap;
  1285. }
  1286. .fromobjvaluedd1234 {
  1287. margin-right: 12px;
  1288. height: 28px;
  1289. background: #f4f8fd;
  1290. border-radius: 2px;
  1291. line-height: 28px;
  1292. padding-right: 10px;
  1293. padding-left: 10px;
  1294. color: #2671e2;
  1295. margin-top: 16px;
  1296. font-size: 14px;
  1297. }
  1298. .fromobjvaluedd1235 {
  1299. margin-right: 12px;
  1300. height: 28px;
  1301. background: #999999;
  1302. border-radius: 2px;
  1303. line-height: 28px;
  1304. padding-right: 10px;
  1305. padding-left: 10px;
  1306. color: #ffffff;
  1307. margin-top: 16px;
  1308. font-size: 14px;
  1309. }
  1310. .text {
  1311. width: 100%;
  1312. font-size: 12px;
  1313. line-height: 20px;
  1314. display: flex;
  1315. align-items: center;
  1316. margin: 25px 0px;
  1317. }
  1318. .text[data-speaker="2"],
  1319. .text[data-speaker="4"],
  1320. .text[data-speaker="6"] {
  1321. flex-direction: row-reverse;
  1322. text-align: left;
  1323. }
  1324. .content123 {
  1325. cursor: pointer;
  1326. }
  1327. .content123 div.speaker-text {
  1328. font-size: 18px;
  1329. padding: 5px 14px;
  1330. color: #32363d;
  1331. background: #f4f5f7;
  1332. border-radius: 8px;
  1333. margin: 0 20px;
  1334. line-height: 1.5;
  1335. max-width: 365px;
  1336. }
  1337. .log-list {
  1338. width: 30%;
  1339. padding: 20px 10px;
  1340. }
  1341. .log-lists {
  1342. width: 100%;
  1343. height: 400px;
  1344. overflow-y: scroll;
  1345. }
  1346. /*滚动条样式*/
  1347. .log-lists::-webkit-scrollbar {
  1348. width: 4px;
  1349. height: 4px;
  1350. }
  1351. .log-lists::-webkit-scrollbar-thumb {
  1352. border-radius: 10px;
  1353. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
  1354. background: rgba(0, 0, 0, 0.2);
  1355. }
  1356. .log-lists::-webkit-scrollbar-track {
  1357. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
  1358. border-radius: 0;
  1359. background: rgba(0, 0, 0, 0.1);
  1360. }
  1361. .center {
  1362. height: 400px;
  1363. overflow-y: scroll;
  1364. }
  1365. /*滚动条样式*/
  1366. .center::-webkit-scrollbar {
  1367. width: 4px;
  1368. height: 4px;
  1369. }
  1370. .center::-webkit-scrollbar-thumb {
  1371. border-radius: 10px;
  1372. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
  1373. background: rgba(0, 0, 0, 0.2);
  1374. }
  1375. .center::-webkit-scrollbar-track {
  1376. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
  1377. border-radius: 0;
  1378. background: rgba(0, 0, 0, 0.1);
  1379. }
  1380. .center .text .avatar {
  1381. width: 40px;
  1382. height: 40px;
  1383. background-color: #ccc;
  1384. border-radius: 50%;
  1385. margin-left: 15px;
  1386. display: flex;
  1387. justify-content: center;
  1388. align-items: center;
  1389. }
  1390. .center .text .avatar img {
  1391. width: 32px;
  1392. height: 32px;
  1393. display: block;
  1394. }
  1395. .center .text .avatar div {
  1396. width: 100%;
  1397. height: 100%;
  1398. text-align: center;
  1399. line-height: 40px;
  1400. color: #ffffff;
  1401. font-size: 24px;
  1402. }
  1403. .textRight .content123 .speaker-texts {
  1404. flex-direction: row-reverse;
  1405. }
  1406. .textRight .content123 div.speaker-text {
  1407. color: #32363d;
  1408. background: #f4f5f7;
  1409. margin: 0 0 0 20px;
  1410. }
  1411. .textRight .avatar {
  1412. margin-right: 15px;
  1413. }
  1414. .speaker-texts {
  1415. display: flex;
  1416. align-items: center;
  1417. }
  1418. .play {
  1419. width: 24px;
  1420. height: 24px;
  1421. }
  1422. .play img {
  1423. width: 100%;
  1424. height: 100%;
  1425. }
  1426. .text.activecoloc .content123 div.speaker-text {
  1427. color: rgb(38, 113, 226);
  1428. }
  1429. .textRight.activecoloc .content123 div.speaker-text {
  1430. color: #ff7538;
  1431. }
  1432. /*对话的标签标识*/
  1433. .content123 .showmark {
  1434. font-size: 14px;
  1435. max-width: 300px;
  1436. min-height: 20px;
  1437. line-height: 20px;
  1438. margin: 10px 22px 0;
  1439. }
  1440. .content123 .showmark .mark-item {
  1441. display: flex;
  1442. margin-bottom: 2px;
  1443. }
  1444. .content123 .showmark .mark-item .markicon {
  1445. width: 14px;
  1446. height: 14px;
  1447. margin-right: 6px;
  1448. }
  1449. .content123 .showmark .mark-item .marktext {
  1450. font-size: 12px;
  1451. font-family: PingFangSC-Regular, PingFang SC;
  1452. font-weight: 400;
  1453. color: #3e50e8;
  1454. line-height: 18px;
  1455. word-break: break-all;
  1456. }
  1457. .textRight .content123 .showmark {
  1458. margin: 10px 22px 0 2px;
  1459. }
  1460. .inputbox {
  1461. width: 180px;
  1462. height: 32px;
  1463. background: #ffffff;
  1464. margin-left: 16px;
  1465. }
  1466. .searchbox .avatar img {
  1467. /*width: 53px;*/
  1468. /*height: 53px;*/
  1469. width: 32px;
  1470. height: 32px;
  1471. display: block;
  1472. }
  1473. .searchbox .avatar {
  1474. width: 40px;
  1475. height: 40px;
  1476. /*background-color: #f2f2f2;*/
  1477. background-color: #ccc;
  1478. border-radius: 50%;
  1479. margin-left: 5px;
  1480. display: flex;
  1481. justify-content: center;
  1482. align-items: center;
  1483. }
  1484. .tapClick {
  1485. border-bottom: 1px solid #ccc;
  1486. height: 50px;
  1487. }
  1488. .headboxbott {
  1489. width: 100%;
  1490. height: 50px;
  1491. display: flex;
  1492. align-items: center;
  1493. border-bottom: 1px solid #e0e0e0;
  1494. }
  1495. .headovfu {
  1496. flex: 1;
  1497. height: 40px;
  1498. overflow: hidden;
  1499. margin-top: 10px;
  1500. }
  1501. .headpade {
  1502. width: 100px;
  1503. height: 40px;
  1504. display: flex;
  1505. justify-content: center;
  1506. align-items: center;
  1507. border-left: 1px solid #d6d6d6;
  1508. }
  1509. .biaoji {
  1510. width: 70px;
  1511. height: 30px;
  1512. background: #e6625b;
  1513. border-radius: 24px;
  1514. text-align: center;
  1515. line-height: 30px;
  1516. color: #ffffff;
  1517. }
  1518. .biaoji1 {
  1519. width: 70px;
  1520. height: 30px;
  1521. /* background: #ccc; */
  1522. border-radius: 24px;
  1523. text-align: center;
  1524. line-height: 30px;
  1525. color: #666;
  1526. margin-left: 10px;
  1527. flex-shrink: 0;
  1528. border: 1px solid #e0e0e0;
  1529. cursor: pointer;
  1530. }
  1531. .inner-container {
  1532. overflow-x: scroll;
  1533. height: 40px;
  1534. }
  1535. /*滚动条样式*/
  1536. .inner-container::-webkit-scrollbar {
  1537. /*width: 4px;*/
  1538. height: 4px;
  1539. }
  1540. .inner-container::-webkit-scrollbar-thumb {
  1541. border-radius: 10px;
  1542. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
  1543. background: rgba(0, 0, 0, 0.2);
  1544. }
  1545. .inner-container::-webkit-scrollbar-track {
  1546. -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
  1547. border-radius: 0;
  1548. background: rgba(0, 0, 0, 0.1);
  1549. }
  1550. .viewclace {
  1551. height: 30px;
  1552. text-align: center;
  1553. line-height: 30px;
  1554. border-radius: 14px;
  1555. margin-right: 34px;
  1556. margin-top: 16px;
  1557. font-size: 16px;
  1558. border: 1px solid;
  1559. padding-left: 18px;
  1560. padding-right: 18px;
  1561. }
  1562. .bosdttom {
  1563. color: #ffffff;
  1564. background-color: #2671e2;
  1565. }
  1566. .pingfenbox {
  1567. width: 100%;
  1568. height: 30px;
  1569. line-height: 30px;
  1570. border-bottom: 1px solid #e0e0e0;
  1571. display: flex;
  1572. }
  1573. .pingfenbox div {
  1574. flex: 1;
  1575. text-align: center;
  1576. }
  1577. .activecllasscet {
  1578. background: #2671e2;
  1579. color: #ffffff;
  1580. }
  1581. .roleindexclass {
  1582. color: #2671e2;
  1583. font-weight: bold;
  1584. }
  1585. .adjskdjroleindexclass {
  1586. background: #3ca953 !important;
  1587. color: #ffffff !important;
  1588. }
  1589. /*话术*/
  1590. .huashu-title {
  1591. background: #fff;
  1592. font-size: 16px;
  1593. line-height: 20px;
  1594. padding: 10px 20px;
  1595. }
  1596. .huashu {
  1597. width: 400px;
  1598. padding: 0 20px 30px;
  1599. display: flex;
  1600. align-items: center;
  1601. flex-wrap: wrap;
  1602. background: #fff;
  1603. }
  1604. .huashu .huashu-item {
  1605. margin-right: 20px;
  1606. height: 30px;
  1607. line-height: 30px;
  1608. display: flex;
  1609. align-items: center;
  1610. }
  1611. .huashu .huashu-item .text {
  1612. font-size: 14px;
  1613. color: #666;
  1614. margin-left: 5px;
  1615. }
  1616. .hahaha .el-dialog__body {
  1617. padding: 0 20px !important;
  1618. }
  1619. .hahaha .el-dialog__footer {
  1620. padding: 10px 20px !important;
  1621. }
  1622. .el-step__icon.is-text {
  1623. border: none;
  1624. }
  1625. .elmenus .el-menu-demo {
  1626. border-bottom: none;
  1627. }
  1628. </style>