index.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660
  1. <template>
  2. <div class="processApproval">
  3. <div class="left-card">
  4. <div class="top">
  5. <div class="commons-title title">
  6. {{ route.query.flowName || "流程标题(发起)" }}
  7. </div>
  8. <div class="line"></div>
  9. <SendSubscribe ref="makeDom" @auxiliaryChange='(e) => auxiliaryData = e' v-if="flowForm.flowKey == 'subscribe_flow'" :queryData="queryData.data"></SendSubscribe>
  10. <SendPurchase ref="makeDom" @auxiliaryChange='(e) => auxiliaryData = e' v-else-if="flowForm.flowKey == 'purchase_flow'" :queryData="queryData.data"></SendPurchase>
  11. <SendFunds ref="makeDom" v-else-if="flowForm.flowKey == 'account_request_funds_flow'" :queryData="queryData.data"></SendFunds>
  12. <ReturnGood ref="makeDom" v-else-if="flowForm.flowKey == 'sales_return_flow'" :queryData="queryData.data"></ReturnGood>
  13. <PurchaseRefund ref="makeDom" v-else-if="flowForm.flowKey == 'refund_flow'" :queryData="queryData.data"></PurchaseRefund>
  14. <PurchasePayment ref="makeDom" v-else-if="flowForm.flowKey == 'pay_flow'" :queryData="queryData.data"></PurchasePayment>
  15. <template v-else-if="flowForm.flowKey == 'sale_quotation_flow'">
  16. <PriceSheetEHSD ref="makeDom" v-if="flowForm.tenantType === 'EHSD'" :queryData="queryData.data"></PriceSheetEHSD>
  17. <PriceSheet ref="makeDom" v-else :queryData="queryData.data"></PriceSheet>
  18. </template>
  19. <template v-else-if="flowForm.flowKey == 'contract_flow'">
  20. <ContractEHSD ref="makeDom" v-if="flowForm.tenantType === 'EHSD'" :queryData="queryData.data"></ContractEHSD>
  21. <Contract ref="makeDom" v-else :queryData="queryData.data"></Contract>
  22. </template>
  23. <template v-else-if="flowForm.flowKey == 'sample_flow'">
  24. <SampleEHSD ref="makeDom" :queryData="queryData.data"></SampleEHSD>
  25. </template>
  26. <template v-else-if="flowForm.flowKey == 'ehsd_purchase_flow'">
  27. <PurchaseEHSD ref="makeDom" :queryData="queryData.data"></PurchaseEHSD>
  28. </template>
  29. <ServiceContract ref="makeDom" v-else-if="flowForm.flowKey == 'service_contract_flow'" :queryData="queryData.data"></ServiceContract>
  30. <!-- 维多利亚 -->
  31. <SendSubscribeWDLY ref="makeDom" v-else-if="flowForm.flowKey == 'wdly_apply_purchase'" :queryData="queryData.data"></SendSubscribeWDLY>
  32. <SendPurchaseWDLY ref="makeDom" v-else-if="flowForm.flowKey == 'wdly_purchase'" :queryData="queryData.data"></SendPurchaseWDLY>
  33. </div>
  34. <div class="bottom" v-if="route.query.processType != 20">
  35. <div class="commons-title title">处理意见</div>
  36. <el-form :model="flowForm" :rules="flowRules" ref="flowFormDom">
  37. <el-form-item prop="remark" label-width="0px" label="">
  38. <el-input type="textarea" placeholder="请输入" v-model="flowForm.remark"> </el-input>
  39. </el-form-item>
  40. <el-form-item>
  41. <el-button type="primary" v-if="approvalRecordData.buttonInfoList.length == 0" @click="handleSubmit">提交</el-button>
  42. <el-button type="primary" v-else v-for="i in approvalRecordData.buttonInfoList" :key="i.type" @click="handleSubmit(i.type)">{{ i.name }}</el-button>
  43. </el-form-item>
  44. </el-form>
  45. </div>
  46. </div>
  47. <div class="right-card">
  48. <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
  49. <el-tab-pane label="审批记录" name="first">
  50. <ul class="flow-chart">
  51. <li
  52. v-for="item in recordList"
  53. :key="item.id"
  54. :class="
  55. !route.query.id
  56. ? ''
  57. : item.status == 2
  58. ? 'flow-orange'
  59. : item.status == 3 && !route.query.id
  60. ? 'flow-orange'
  61. : item.status == 3 && route.query.id
  62. ? 'flow-grey'
  63. : ''
  64. ">
  65. <div class="left-icon">
  66. <i class="iconfont icon-iconm_daick"></i>
  67. <i class="iconfont icon-icomx_quertj1 right-btm-status"></i>
  68. </div>
  69. <div class="right-conetnt">
  70. <div class="name">{{ item.nodeName }}</div>
  71. <div class="remark">
  72. <div class="label">
  73. <span v-if="item.status != 3">办理人:</span>{{ item.processedUser }}<span class="time">{{ item.processedDate }}</span>
  74. </div>
  75. {{ item.remark }}
  76. </div>
  77. </div>
  78. <div class="line"></div>
  79. </li>
  80. </ul>
  81. </el-tab-pane>
  82. <!-- v-if="flowForm.flowKey == 'contract_flow' && flowForm.tenantType !== 'EHSD'" -->
  83. <el-tab-pane label="决策辅助" name="second" v-if="auxiliaryData.length > 0">
  84. <!-- <div style="overflow-y: auto; max-height: calc(100vh - 200px)">
  85. <DecisionAids></DecisionAids>
  86. </div> -->
  87. <auxiliary :data="auxiliaryData"></auxiliary>
  88. <!-- <div style="overflow: auto; height: calc(100vh - 200px)">
  89. <purchaseAuxiliary></purchaseAuxiliary>
  90. </div> -->
  91. </el-tab-pane>
  92. </el-tabs>
  93. </div>
  94. <el-dialog title="下一处理人" width="400" v-model="dialogVisible">
  95. <el-form :model="flowForm">
  96. <el-form-item prop="remark" label="处理人">
  97. <el-select v-model="flowForm.handleUserId" placeholder="请选择" filterable style="width: 100%">
  98. <el-option v-for="item in nextHandleUser" :label="item.name" :value="item.id"> </el-option>
  99. </el-select>
  100. </el-form-item>
  101. <el-form-item>
  102. <div style="width: 100%; text-align: center">
  103. <el-button type="primary" @click="handleSelectUser">提交</el-button>
  104. </div>
  105. </el-form-item>
  106. </el-form>
  107. </el-dialog>
  108. </div>
  109. </template>
  110. <script setup name="ProcessApproval">
  111. import useTagsViewStore from "@/store/modules/tagsView.js";
  112. import { useRouter, useRoute } from "vue-router";
  113. //决策辅助
  114. import auxiliary from "./auxiliary";
  115. import purchaseAuxiliary from "./purchaseAuxiliary";
  116. import DecisionAids from "./decisionAids";
  117. //申购发起
  118. import SendSubscribe from "@/components/process/SendSubscribe";
  119. //采购发起
  120. import SendPurchase from "@/components/process/SendPurchase";
  121. //请款发起
  122. import SendFunds from "@/components/process/SendFunds";
  123. //退货
  124. import ReturnGood from "@/components/process/ReturnGood";
  125. // 消息提示
  126. import { ElMessage, ElMessageBox } from "element-plus";
  127. //退款
  128. import PurchaseRefund from "@/components/process/PurchaseRefund";
  129. // 付款
  130. import PurchasePayment from "@/components/process/PurchasePayment";
  131. // 报价单
  132. import PriceSheet from "@/components/process/PriceSheet";
  133. // 报价单-EHSD
  134. import PriceSheetEHSD from "@/components/process/EHSD/PriceSheet";
  135. // 销售合同
  136. import Contract from "@/components/process/Contract";
  137. // 销售合同-EHSD
  138. import ContractEHSD from "@/components/process/EHSD/Contract";
  139. // 样品单-EHSD
  140. import SampleEHSD from "@/components/process/EHSD/Sample";
  141. // 采购交接单-EHSD
  142. import PurchaseEHSD from "@/components/process/EHSD/Purchase";
  143. // 服务合同
  144. import ServiceContract from "@/components/process/ServiceContract";
  145. // /``````````````````````````````维多利亚专属 /
  146. //申购发起
  147. import SendSubscribeWDLY from "@/components/WDLY/process/SendSubscribeWDLY";
  148. //采购发起
  149. import SendPurchaseWDLY from "@/components/WDLY/process/SendPurchaseWDLY";
  150. import { ref } from "vue";
  151. const router = useRouter();
  152. const route = useRoute();
  153. // tab切换逻辑
  154. const activeName = ref("first");
  155. const handleClick = (tab, event) => {
  156. // console.log(tab, event);
  157. };
  158. let auxiliaryData = ref([]);
  159. // 意见表单
  160. const flowForm = reactive({
  161. flowKey: "",
  162. tenantType: "",
  163. handleUserId: "",
  164. remark: "",
  165. data: {},
  166. });
  167. const flowRules = reactive({
  168. // remark: [{ required: true, message: "请输入处理意见", trigger: "blur" }],
  169. });
  170. //组件实例
  171. const { proxy } = getCurrentInstance();
  172. const makeDom = ref(null);
  173. const flowFormDom = ref(null);
  174. let dialogVisible = ref(false);
  175. const nextHandleUser = ref([]);
  176. const handleSelectUser = () => {
  177. if (!flowForm.handleUserId) {
  178. return ElMessage({
  179. message: "请选择下一节点处理人!",
  180. type: "info",
  181. });
  182. }
  183. handleSubmit();
  184. };
  185. const handleResult = (res) => {
  186. if (res !== null && res.success) {
  187. skipPage();
  188. } else {
  189. dialogVisible.value = true;
  190. nextHandleUser.value = res.userList;
  191. }
  192. };
  193. // 提交逻辑
  194. const handleSubmit = async (_type) => {
  195. try {
  196. // 调用发起组件的提交事件
  197. const flag = await makeDom.value.handleSubmit();
  198. if (flag) {
  199. flowFormDom.value.validate((valid) => {
  200. if (valid) {
  201. const data = makeDom.value.getFormData();
  202. if (flowForm.flowKey == "subscribe_flow") {
  203. // data.subscribeDetailList = data.subscribeDetailList.map((x) => ({
  204. // bussinessId: x.bussinessId,
  205. // count: x.count,
  206. // remark: x.remark,
  207. // }));
  208. } else if (flowForm.flowKey == "purchase_flow") {
  209. // data.purchaseDetailList = data.purchaseDetailList.map((x) => ({
  210. // bussinessId: x.bussinessId,
  211. // subscribeDetailId: x.id,
  212. // count: x.count,
  213. // price: x.price,
  214. // amount: x.amount,
  215. // }));
  216. } else if (flowForm.flowKey == "account_request_funds_flow") {
  217. } else if (flowForm.flowKey == "sales_return_flow") {
  218. } else if (flowForm.flowKey == "refund_flow") {
  219. } else if (flowForm.flowKey == "wdly_apply_purchase") {
  220. data.subscribeDetailList = data.subscribeDetailList.map((x) => ({
  221. bussinessId: x.bussinessId,
  222. count: x.count,
  223. remark: x.remark,
  224. }));
  225. const victoriatouristJson = {
  226. planArrivalTime: data.planArrivalTime,
  227. receiptWarehouseId: data.receiptWarehouseId,
  228. };
  229. data.victoriatouristJson = JSON.stringify(victoriatouristJson);
  230. } else if (flowForm.flowKey == "wdly_purchase") {
  231. data.purchaseDetailList = data.purchaseDetailList.map((x) => ({
  232. bussinessId: x.bussinessId,
  233. subscribeDetailId: x.id,
  234. count: x.count,
  235. price: x.price,
  236. amount: x.amount,
  237. deptId: x.deptId,
  238. }));
  239. const victoriatouristJson = {
  240. isAgreement: data.isAgreement,
  241. paymentMethod: data.paymentMethod,
  242. otherFeeList: data.otherFeeList,
  243. contractCode: data.contractCode,
  244. };
  245. data.victoriatouristJson = JSON.stringify(victoriatouristJson);
  246. } else if (flowForm.flowKey == "sale_quotation_flow") {
  247. if (flowForm.tenantType === "EHSD") {
  248. data.ehsdJson = JSON.stringify({
  249. deliveryTime: data.deliveryTime,
  250. });
  251. data.quotationProductList = data.quotationProductList.map((item) => {
  252. let ehsdJson = JSON.stringify({
  253. packMethod: item.packMethod,
  254. tradeMethods: item.tradeMethods,
  255. });
  256. return {
  257. ...item,
  258. ehsdJson: ehsdJson,
  259. };
  260. });
  261. }
  262. } else if (flowForm.flowKey == "contract_flow") {
  263. if (flowForm.tenantType === "EHSD") {
  264. if (data.fileList && data.fileList.length > 0) {
  265. data.fileList = data.fileList.map((item) => {
  266. return {
  267. id: item.raw.id,
  268. fileName: item.raw.fileName,
  269. fileUrl: item.raw.fileUrl,
  270. };
  271. });
  272. } else {
  273. data.fileList = [];
  274. }
  275. if (data.packageFileList && data.packageFileList.length > 0) {
  276. data.packageFileList = data.packageFileList.map((item) => {
  277. return {
  278. id: item.raw.id,
  279. fileName: item.raw.fileName,
  280. fileUrl: item.raw.fileUrl,
  281. };
  282. });
  283. } else {
  284. data.packageFileList = [];
  285. }
  286. data.ehsdJson = JSON.stringify({
  287. deliveryTime: data.deliveryTime,
  288. });
  289. data.contractProductList = data.contractProductList.map((item) => {
  290. let ehsdJson = JSON.stringify({
  291. packMethod: item.packMethod,
  292. tradeMethods: item.tradeMethods,
  293. });
  294. return {
  295. ...item,
  296. ehsdJson: ehsdJson,
  297. };
  298. });
  299. }
  300. } else if (flowForm.flowKey == "sample_flow") {
  301. if (data.fileList && data.fileList.length > 0) {
  302. data.fileList = data.fileList.map((item) => {
  303. return {
  304. id: item.raw.id,
  305. fileName: item.raw.fileName,
  306. fileUrl: item.raw.fileUrl,
  307. };
  308. });
  309. } else {
  310. data.fileList = [];
  311. }
  312. if (data.packageFileList && data.packageFileList.length > 0) {
  313. data.packageFileList = data.packageFileList.map((item) => {
  314. return {
  315. id: item.raw.id,
  316. fileName: item.raw.fileName,
  317. fileUrl: item.raw.fileUrl,
  318. };
  319. });
  320. } else {
  321. data.packageFileList = [];
  322. }
  323. data.ehsdJson = JSON.stringify({
  324. deliveryTime: data.deliveryTime,
  325. });
  326. data.sampleProductList = data.sampleProductList.map((item) => {
  327. let ehsdJson = JSON.stringify({
  328. packMethod: item.packMethod,
  329. tradeMethods: item.tradeMethods,
  330. });
  331. return {
  332. ...item,
  333. ehsdJson: ehsdJson,
  334. };
  335. });
  336. }
  337. if (route.query.processType == 10) {
  338. proxy
  339. .post("/flowProcess/jump", {
  340. ...flowForm,
  341. data,
  342. handleType: _type,
  343. version: route.query.version,
  344. flowId: route.query.id,
  345. })
  346. .then((res) => {
  347. handleResult(res);
  348. });
  349. if (_type && _type == 1) {
  350. proxy
  351. .post("/flowExample/setStartData", {
  352. exampleId: route.query.id,
  353. startDate: data,
  354. })
  355. .then();
  356. }
  357. return;
  358. } else {
  359. proxy
  360. .post("/flowProcess/initiate", {
  361. ...flowForm,
  362. data,
  363. })
  364. .then((res) => {
  365. handleResult(res);
  366. });
  367. }
  368. }
  369. });
  370. }
  371. } catch (err) {
  372. console.log("数据未填完整!", err);
  373. }
  374. };
  375. // 页面跳转
  376. const skipPage = () => {
  377. if (route.query.processType === 10) {
  378. router.replace({
  379. path: "/oa/1/dealWith",
  380. });
  381. } else {
  382. const useTagsStore = useTagsViewStore();
  383. console.log(useTagsStore);
  384. useTagsStore.delVisitedView(router.currentRoute.value);
  385. ElMessage({
  386. message: "操作成功!",
  387. type: "success",
  388. });
  389. if (flowForm.flowKey == "subscribe_flow") {
  390. router.replace({
  391. path: "/ERP/purchaseManage/subscribe",
  392. });
  393. } else if (flowForm.flowKey == "purchase_flow") {
  394. router.replace({
  395. path: "/ERP/purchaseManage/purchase",
  396. });
  397. } else if (flowForm.flowKey == "sales_return_flow") {
  398. router.replace({
  399. path: "/ERP/purchaseManage/returnGoods",
  400. });
  401. } else if (flowForm.flowKey == "account_request_funds_flow") {
  402. router.replace({
  403. path: "/ERP/fundManage/funds",
  404. });
  405. } else if (flowForm.flowKey == "refund_flow") {
  406. router.replace({
  407. path: "/ERP/purchasePayment/invoice",
  408. });
  409. } else if (flowForm.flowKey == "pay_flow") {
  410. router.replace({
  411. path: "/ERP/purchasePayment/payment",
  412. });
  413. } else if (flowForm.flowKey == "sale_quotation_flow") {
  414. if (flowForm.tenantType === "EHSD") {
  415. router.replace({
  416. path: "/EHSD/saleContract/priceSheetEHSD",
  417. });
  418. } else {
  419. router.replace({
  420. path: "/ERP/saleContract/priceSheet",
  421. });
  422. }
  423. } else if (flowForm.flowKey == "contract_flow") {
  424. if (flowForm.tenantType === "EHSD") {
  425. router.replace({
  426. path: "/EHSD/saleContract/contractEHSD",
  427. });
  428. } else {
  429. router.replace({
  430. path: "/ERP/saleContract/contract",
  431. });
  432. }
  433. } else if (flowForm.flowKey == "sample_flow") {
  434. router.replace({
  435. path: "/EHSD/saleContract/sampleEHSD",
  436. });
  437. } else if (flowForm.flowKey == "ehsd_purchase_flow") {
  438. router.replace({
  439. path: "/EHSD/procurement/purchasedEHSD",
  440. });
  441. } else if (flowForm.flowKey == "service_contract_flow") {
  442. router.replace({
  443. path: "/ERP/saleContract/serviceContract",
  444. });
  445. } else if (flowForm.flowKey == "wdly_purchase") {
  446. router.replace({
  447. path: "/WDLY/purchaseManage/alreadyPurchase_wdly",
  448. });
  449. } else if (flowForm.flowKey == "wdly_apply_purchase") {
  450. router.replace({
  451. path: "/WDLY/purchaseManage/subscribe_wdly",
  452. });
  453. }
  454. }
  455. };
  456. let queryData = reactive({
  457. data: {},
  458. });
  459. // 记录
  460. const recordList = ref([]);
  461. const approvalRecordData = ref({
  462. buttonInfoList: [],
  463. });
  464. const getRecords = (_id) => {
  465. if (_id) {
  466. proxy
  467. .post("/flowExample/getApprovalRecord", {
  468. id: _id,
  469. })
  470. .then((res) => {
  471. console.log(res, "ass");
  472. recordList.value = res.recordList;
  473. queryData.data.recordList = res.recordList;
  474. approvalRecordData.value = res;
  475. });
  476. } else {
  477. proxy
  478. .post("/flowExample/getFlowNode", {
  479. flowKey: flowForm.flowKey,
  480. })
  481. .then((res) => {
  482. console.log(res, "ass");
  483. recordList.value = res;
  484. });
  485. }
  486. console.log(queryData.data, "222");
  487. };
  488. onMounted(async () => {
  489. //processType 10 为修改 20为查看
  490. if (route.query.processType == 10 || route.query.processType == 20) {
  491. await proxy.post("/flowProcess/getStartData", { flowId: route.query.id }).then((res) => {
  492. queryData.data = { ...res };
  493. });
  494. } else {
  495. queryData.data = { ...route.query };
  496. }
  497. flowForm.flowKey = route.query.flowKey;
  498. flowForm.tenantType = route.query.tenantType;
  499. getRecords(route.query.id);
  500. });
  501. </script>
  502. <style lang="scss" scoped>
  503. .processApproval {
  504. display: flex;
  505. justify-content: space-between;
  506. margin-top: 20px;
  507. padding: 0 20px;
  508. height: calc(100vh - 130px);
  509. .left-card {
  510. // background: #fff;
  511. border-radius: 4px;
  512. // padding: 20px;
  513. flex: 1;
  514. margin-right: 20px;
  515. display: flex;
  516. flex-direction: column;
  517. .top {
  518. flex: 1;
  519. overflow-y: auto;
  520. background: #fff;
  521. padding: 20px 20px 0px 20px;
  522. .line{
  523. border-bottom: 1px solid #ddd;
  524. margin-bottom: 20px;
  525. }
  526. }
  527. .bottom {
  528. margin-top: 10px;
  529. height: 170px;
  530. background: #fff;
  531. padding: 20px 20px 0px 20px;
  532. }
  533. }
  534. .right-card {
  535. background: #fff;
  536. border-radius: 4px;
  537. padding: 0 20px 20px;
  538. width: 600px;
  539. box-sizing: border-box;
  540. .flow-chart {
  541. overflow: auto;
  542. height: calc(100vh - 200px);
  543. padding: 0;
  544. margin: 0;
  545. li {
  546. margin: 0;
  547. padding: 0 0 20px;
  548. list-style: none;
  549. display: flex;
  550. justify-content: space-between;
  551. position: relative;
  552. .right-conetnt {
  553. flex: 1;
  554. .name {
  555. font-size: 12px;
  556. color: #39c55a;
  557. margin-bottom: 10px;
  558. span {
  559. color: #999;
  560. }
  561. }
  562. .time {
  563. float: right;
  564. }
  565. .remark {
  566. padding: 10px;
  567. color: #666666;
  568. font-size: 12px;
  569. background: #f1f1f1;
  570. border-radius: 2px;
  571. .label {
  572. color: #999;
  573. margin-bottom: 10px;
  574. }
  575. }
  576. }
  577. .left-icon {
  578. width: 40px;
  579. height: 40px;
  580. text-align: center;
  581. line-height: 40px;
  582. background: #0084ff;
  583. border-radius: 10px;
  584. color: #fff;
  585. font-size: 20px;
  586. position: relative;
  587. margin-right: 27px;
  588. z-index: 2;
  589. .right-btm-status {
  590. position: absolute;
  591. bottom: 0px;
  592. right: -10px;
  593. height: 20px;
  594. width: 20px;
  595. line-height: 16px;
  596. border-radius: 10px;
  597. background: #39c55a;
  598. border: 2px solid #fff;
  599. font-size: 12px;
  600. box-sizing: border-box;
  601. }
  602. }
  603. }
  604. li::before {
  605. content: "";
  606. position: absolute;
  607. top: 0;
  608. left: 20px;
  609. width: 2px;
  610. height: 100%;
  611. background: #ddd;
  612. z-index: 1;
  613. }
  614. li:last-child::before {
  615. display: none;
  616. }
  617. .flow-orange {
  618. .right-btm-status {
  619. background: #ff9a00 !important;
  620. }
  621. .name {
  622. color: #ff9a00 !important;
  623. }
  624. .left-icon {
  625. background: #ff9a00 !important;
  626. }
  627. }
  628. .flow-grey {
  629. .right-btm-status {
  630. background: #999 !important;
  631. }
  632. .name {
  633. color: #999 !important;
  634. }
  635. .left-icon {
  636. background: #999 !important;
  637. }
  638. }
  639. .flow-red {
  640. .right-btm-status {
  641. background: #ff4d4f !important;
  642. }
  643. .name {
  644. color: #ff4d4f !important;
  645. }
  646. .left-icon {
  647. background: #ff4d4f !important;
  648. }
  649. }
  650. }
  651. }
  652. }
  653. </style>