index.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561
  1. <template>
  2. <div class="app-container">
  3. <el-tabs v-model="activeName" >
  4. <el-tab-pane label="客户管理配置" name="sysConfig">
  5. <el-form ref="sysConfig" :model="sysConfig" label-width="120px">
  6. <el-form-item label="公海回收规则">
  7. <el-row>
  8. <el-input-number v-model="sysConfig.visitLimt" :min="0" :max="100" ></el-input-number>
  9. </el-row>
  10. <el-row>
  11. <span class="tip">认领后N天自动回收</span>
  12. </el-row>
  13. </el-form-item>
  14. <div class="line"></div>
  15. <div style="float:right;margin-right:20px">
  16. <el-button type="primary" @click="onSubmit1">提交</el-button>
  17. </div>
  18. </el-form>
  19. </el-tab-pane>
  20. <el-tab-pane label="企微客服配置" name="qwkfConfig">
  21. <el-form ref="qwkfConfig" :model="qwkfConfig" label-width="120px">
  22. <el-form-item label="企业CoripID">
  23. <el-input v-model="qwkfConfig.corpId" style="width:400px" ></el-input>
  24. </el-form-item>
  25. <el-form-item label="Secret">
  26. <el-input v-model="qwkfConfig.secret" style="width:400px" ></el-input>
  27. </el-form-item>
  28. <el-form-item label="Token">
  29. <el-input v-model="qwkfConfig.token" style="width:400px" ></el-input>
  30. </el-form-item>
  31. <el-form-item label="EncodingAESKey">
  32. <el-input v-model="qwkfConfig.encodingAESKey" style="width:400px" ></el-input>
  33. </el-form-item>
  34. <el-form-item label="回调地接">
  35. <el-input disabled v-model="qwkfConfig.notifyUrl" style="width:600px" ></el-input>
  36. </el-form-item>
  37. <div class="line"></div>
  38. <div style="float:right;margin-right:20px">
  39. <el-button type="primary" @click="onSubmit3">提交</el-button>
  40. </div>
  41. </el-form>
  42. </el-tab-pane>
  43. <el-tab-pane label="客户字段配置" name="customerExt">
  44. <el-row :gutter="10" class="mb8" style="margin:0px 0px 10px;">
  45. <el-col :span="1.5">
  46. <el-button
  47. type="primary"
  48. icon="el-icon-plus"
  49. size="mini"
  50. @click="handleCustomerExtAdd"
  51. >新增</el-button>
  52. </el-col>
  53. </el-row>
  54. <el-table border :data="customerExtList" >
  55. <el-table-column label="ID" align="center" prop="extId" />
  56. <el-table-column label="字段名称" align="center" prop="name" />
  57. <el-table-column label="状态" align="center" prop="status">
  58. <template slot-scope="scope">
  59. <el-tag prop="status" v-for="(item, index) in statusOptions" v-if="scope.row.status==item.dictValue">{{item.dictLabel}}</el-tag>
  60. </template>
  61. </el-table-column>
  62. <el-table-column label="排序号" align="center" prop="sort" />
  63. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  64. <template slot-scope="scope">
  65. <el-button
  66. size="mini"
  67. type="text"
  68. icon="el-icon-edit"
  69. @click="handleCustomerExtUpdate(scope.row)"
  70. >修改</el-button>
  71. <el-button
  72. size="mini"
  73. type="text"
  74. icon="el-icon-delete"
  75. @click="handleCustomerExtDelete(scope.row)"
  76. >删除</el-button>
  77. </template>
  78. </el-table-column>
  79. </el-table>
  80. <div class="line"></div>
  81. <div style="float:right;margin-right:20px">
  82. <el-button type="primary" @click="onSubmit2">提交</el-button>
  83. </div>
  84. </el-tab-pane>
  85. <!-- <el-tab-pane label="企微配置" name="qwConfig">-->
  86. <!-- <el-form ref="qwConfig" :model="qwConfig" label-width="200px">-->
  87. <!-- <el-form-item label="企业CoripID">-->
  88. <!-- <el-input v-model="qwConfig.corpId" style="width:400px" ></el-input>-->
  89. <!-- </el-form-item>-->
  90. <!-- <el-form-item label="通讯录Secret">-->
  91. <!-- <el-input v-model="qwConfig.bookSecret" style="width:400px" ></el-input>-->
  92. <!-- </el-form-item>-->
  93. <!-- <el-form-item label="应用Secret">-->
  94. <!-- <el-input v-model="qwConfig.appSecret" style="width:400px" ></el-input>-->
  95. <!-- </el-form-item>-->
  96. <!-- <el-form-item label="应用AgentId">-->
  97. <!-- <el-input v-model="qwConfig.AgentId" style="width:400px" ></el-input>-->
  98. <!-- </el-form-item>-->
  99. <!-- <el-form-item label="Token">-->
  100. <!-- <el-input v-model="qwConfig.token" style="width:400px" :readonly="true"></el-input>-->
  101. <!-- </el-form-item>-->
  102. <!-- <el-form-item label="EncodingAESKey">-->
  103. <!-- <el-input v-model="qwConfig.encodingAESKey" style="width:400px" :readonly="true"></el-input>-->
  104. <!-- </el-form-item>-->
  105. <!-- <el-form-item label="域名地址">-->
  106. <!-- <el-input v-model="qwConfig.realmNameURL" style="width:600px"></el-input>-->
  107. <!-- </el-form-item>-->
  108. <!-- <el-form-item label="回调地接">-->
  109. <!-- <el-input v-model="qwConfig.notifyUrl" style="width:600px" :readonly="true"></el-input>-->
  110. <!-- </el-form-item>-->
  111. <!-- <el-form-item label="聊天工具栏跳转地址">-->
  112. <!-- <el-input v-model="qwConfig.chatToolbar" style="width:600px" :readonly="true"></el-input>-->
  113. <!-- </el-form-item>-->
  114. <!-- <el-form-item label="聊天工具栏实际运用地址">-->
  115. <!-- <el-input v-model="qwConfig.chatToolbarOAuth2" :rows="2" type="textarea" style="width:1000px;" :readonly="true"></el-input>-->
  116. <!-- </el-form-item>-->
  117. <!-- <div class="line"></div>-->
  118. <!-- <div style="float:right;margin-right:20px">-->
  119. <!-- <el-button type="primary" @click="onSubmit4">提交</el-button>-->
  120. <!-- </div>-->
  121. <!-- </el-form>-->
  122. <!-- </el-tab-pane>-->
  123. <el-tab-pane label="AI客服配置" name="AiKfConfig">
  124. <el-form ref="AiKfConfig" :model="AiKfConfig" label-width="120px">
  125. <el-form-item label="通用Key">
  126. <el-input v-model="AiKfConfig.Key" style="width:600px" ></el-input>
  127. </el-form-item>
  128. <el-form-item label="调用地址">
  129. <el-input v-model="AiKfConfig.url" style="width:600px" ></el-input>
  130. </el-form-item>
  131. <div class="line"></div>
  132. <div style="float:right;margin-right:20px">
  133. <el-button type="primary" @click="onSubmit5">提交</el-button>
  134. </div>
  135. </el-form>
  136. </el-tab-pane>
  137. <el-tab-pane label="红包商户配置" name="redPacketConfig" >
  138. <el-form ref="redPacketConfig" :model="redPacketConfig" label-width="150px">
  139. <el-form-item label="红包接口类型" prop="isNew">
  140. <el-radio-group v-model="redPacketConfig.isNew">
  141. <el-radio label="0">商家转账到零钱(旧)</el-radio>
  142. <el-radio label="1">商家转账(新)</el-radio>
  143. </el-radio-group>
  144. </el-form-item>
  145. <el-form-item label="公众号appid" prop="appId">
  146. <el-input v-model="redPacketConfig.appId" label="请输入appId"></el-input>
  147. </el-form-item>
  148. <el-form-item label="小程序appid" prop="appId">
  149. <el-input v-model="redPacketConfig.miniappId" label="请输入appId"></el-input>
  150. </el-form-item>
  151. <el-form-item label="商户号" prop="mchId">
  152. <el-input v-model="redPacketConfig.mchId" label="请输入mchId"></el-input>
  153. </el-form-item>
  154. <el-form-item label="商户密钥" prop="mchKey">
  155. <el-input v-model="redPacketConfig.mchKey" label="mchKey"></el-input>
  156. </el-form-item>
  157. <el-form-item label="p12证书路径" prop="keyPath">
  158. <el-input v-model="redPacketConfig.keyPath" label="请输入keyPath"></el-input>
  159. </el-form-item>
  160. <el-form-item label="apiV3密钥" prop="apiV3Key">
  161. <el-input v-model="redPacketConfig.apiV3Key" label="请输入apiV3Key"></el-input>
  162. </el-form-item>
  163. <el-form-item label="公钥ID" prop="publicKeyId">
  164. <el-input v-model="redPacketConfig.publicKeyId" label="请输入公钥ID"></el-input>
  165. </el-form-item>
  166. <el-form-item label="公钥证书" prop="publicKeyPath">
  167. <el-input v-model="redPacketConfig.publicKeyPath" label="请输入publicKeyPath"></el-input>
  168. </el-form-item>
  169. <el-form-item label="key路径" prop="privateKeyPath">
  170. <el-input v-model="redPacketConfig.privateKeyPath" label="请输入"></el-input>
  171. </el-form-item>
  172. <el-form-item label="cert路径" prop="privateCertPath">
  173. <el-input v-model="redPacketConfig.privateCertPath" label="请输入"></el-input>
  174. </el-form-item>
  175. <el-form-item label="回调地址" prop="notifyUrl">
  176. <el-input v-model="redPacketConfig.notifyUrl" label="请输入"></el-input>
  177. </el-form-item>
  178. <div style="float:right;margin-right:20px">
  179. <el-button type="primary" @click="onSubmit4">提交</el-button>
  180. </div>
  181. </el-form>
  182. </el-tab-pane>
  183. <el-tab-pane label="配置销售会员审核" name="companyUserConfig">
  184. <el-form ref="companyUserConfig" label-width="140px">
  185. <el-form-item label="会员是否默认黑名单">
  186. <el-row>
  187. <el-switch v-model="userIsDefaultBlack"></el-switch>
  188. </el-row>
  189. </el-form-item>
  190. <div style="float:right;margin-right:20px">
  191. <el-button type="primary" @click="onSubmit6">提交</el-button>
  192. </div>
  193. </el-form>
  194. </el-tab-pane>
  195. <el-tab-pane label="配置销售端隐藏总账号" name="adminIsShowForm">
  196. <el-form ref="adminIsShowForm" label-width="140px">
  197. <el-form-item label="账号是否显示">
  198. <el-row>
  199. <el-switch v-model="adminIsShow"></el-switch>
  200. <span style="margin-left: 10px;">
  201. <el-tag :type="adminIsShow ? 'success' : 'info'" size="mini">
  202. {{ adminIsShow ? '当前显示' : '当前隐藏' }}
  203. </el-tag>
  204. </span>
  205. </el-row>
  206. </el-form-item>
  207. <div style="float:right;margin-right:20px">
  208. <el-button type="primary" @click="onSubmit7">提交</el-button>
  209. </div>
  210. </el-form>
  211. </el-tab-pane>
  212. </el-tabs>
  213. <el-dialog :title="customerExt.title" :visible.sync="customerExt.open" width="500px" append-to-body>
  214. <el-form ref="customerExtForm" :model="customerExtForm" :rules="customerExtRules" label-width="80px">
  215. <el-form-item label="字段名称" prop="name">
  216. <el-input v-model="customerExtForm.name" placeholder="请输入字段名称" />
  217. </el-form-item>
  218. <el-form-item label="状态">
  219. <el-radio-group v-model="customerExtForm.status">
  220. <el-radio label="1" >正常</el-radio>
  221. <el-radio label="0">禁用</el-radio>
  222. </el-radio-group>
  223. </el-form-item>
  224. <el-form-item label="排序号" prop="sort">
  225. <el-input-number v-model="customerExtForm.sort" :min="1" placeholder="请输入排序号" />
  226. </el-form-item>
  227. </el-form>
  228. <div slot="footer" class="dialog-footer">
  229. <el-button type="primary" @click="submitCustomerExtForm">确 定</el-button>
  230. <el-button @click="customerExt.open=false">取 消</el-button>
  231. </div>
  232. </el-dialog>
  233. </div>
  234. </template>
  235. <script>
  236. import { getCompanyInfo } from "@/api/company/company";
  237. import { getConfigKey,updateConfig,configUserCheck } from "@/api/company/companyConfig";
  238. import { listCustomerExt, getCustomerExt, delCustomerExt, addCustomerExt, updateCustomerExt } from "@/api/crm/customerExt";
  239. export default {
  240. name: "config",
  241. watch: {
  242. qwConfig: {
  243. handler(newValue) {
  244. // 根据新值更新
  245. this.qwConfig.chatToolbarOAuth2="https://open.weixin.qq.com/connect/oauth2/authorize?" +
  246. "appid="+newValue.corpId+"" +
  247. "&redirect_uri="+newValue.chatToolbar+"" +
  248. "&response_type=code" +
  249. "&scope=snsapi_base" +
  250. "&state=STATE" +
  251. "&agentid="+newValue.AgentId+"#wechat_redirect";
  252. this.qwConfig.notifyUrl=newValue.realmNameURL+"/qw/data/"+this.company.companyId;
  253. },
  254. deep: true
  255. }
  256. },
  257. data() {
  258. return {
  259. adminIsShow: false,
  260. company:null,
  261. statusOptions:[],
  262. customerExt:{
  263. open:false,
  264. title:"扩展字段"
  265. },
  266. customerExtForm:{
  267. name:"",
  268. status:"1",
  269. sort:"1",
  270. },
  271. customerExtRules:{
  272. },
  273. customerExtList: [],
  274. activeName: 'sysConfig',
  275. customerConfig:{
  276. rlLimit: 1,
  277. txLimit: 1,
  278. hsLimit: 1
  279. },
  280. sysConfig:{
  281. tel:"18900000000",
  282. noticeType:1,
  283. visitLimt:0,
  284. contractLimt:0
  285. },
  286. sysConfigForm:{},
  287. customerConfigForm:{},
  288. qwkfConfig:{
  289. },
  290. AiKfConfig:{},
  291. AiKfConfigForm:{},
  292. qwConfig:{
  293. },
  294. qwConfigForm:{},
  295. qwkfConfigForm:{},
  296. companyUserConfig: {},
  297. adminIsShowForm:{},
  298. userIsDefaultBlack: null,
  299. redPacketConfig:{},
  300. redPacketConfigForm:{}
  301. };
  302. },
  303. created() {
  304. this.getCompanyInfo();
  305. this.getConfigKey("sys:config");
  306. this.getConfigKey("qw:config");
  307. this.getConfigKey("sys:qw:config");
  308. this.getConfigKey("customer:config");
  309. this.getConfigKey("sys:AiKf:config");
  310. this.getConfigKey("company:admin:show");
  311. this.getDicts("sys_company_status").then((response) => {
  312. this.statusOptions = response.data;
  313. });
  314. this.getCustomerExt()
  315. },
  316. mounted() {
  317. },
  318. methods: {
  319. getCompanyInfo(){
  320. getCompanyInfo().then(response => {
  321. this.company = response.data;
  322. if(response.data.fsUserIsDefaultBlack != null){
  323. const userIsDefaultBlack = response.data.fsUserIsDefaultBlack
  324. if(userIsDefaultBlack == 1){
  325. this.userIsDefaultBlack = true
  326. } else{
  327. this.userIsDefaultBlack = false
  328. }
  329. }
  330. });
  331. },
  332. /** 新增按钮操作 */
  333. handleCustomerExtAdd() {
  334. this.customerExt.open = true;
  335. this.customerExt.title = "添加客户字段";
  336. this.customerExtForm={
  337. name:"",
  338. status:"1",
  339. sort:"1",
  340. }
  341. },
  342. /** 修改按钮操作 */
  343. handleCustomerExtUpdate(row) {
  344. const extId = row.extId
  345. getCustomerExt(extId).then(response => {
  346. this.customerExtForm = response.data;
  347. this.customerExt.open = true;
  348. this.customerExtForm.status = response.data.status.toString();
  349. this.customerExt.title = "修改客户字段";
  350. });
  351. },
  352. /** 提交按钮 */
  353. submitCustomerExtForm() {
  354. this.$refs["customerExtForm"].validate(valid => {
  355. if (valid) {
  356. if (this.customerExtForm.extId != null) {
  357. updateCustomerExt(this.customerExtForm).then(response => {
  358. if (response.code === 200) {
  359. this.getCustomerExt("修改成功");
  360. this.customerExt.open = false;
  361. this.getList();
  362. }
  363. });
  364. } else {
  365. addCustomerExt(this.customerExtForm).then(response => {
  366. if (response.code === 200) {
  367. this.msgSuccess("新增成功");
  368. this.customerExt.open = false;
  369. this.getCustomerExt();
  370. }
  371. });
  372. }
  373. }
  374. });
  375. },
  376. /** 删除按钮操作 */
  377. handleCustomerExtDelete(row) {
  378. const extIds = row.extId || this.ids;
  379. this.$confirm('是否确认删除客户字段扩展编号为"' + extIds + '"的数据项?', "警告", {
  380. confirmButtonText: "确定",
  381. cancelButtonText: "取消",
  382. type: "warning"
  383. }).then(function() {
  384. return delCustomerExt(extIds);
  385. }).then(() => {
  386. this.getCustomerExt();
  387. this.msgSuccess("删除成功");
  388. }).catch(function() {});
  389. },
  390. getCustomerExt() {
  391. var data={}
  392. listCustomerExt(data).then(response => {
  393. this.customerExtList = response.data;
  394. });
  395. },
  396. getConfigKey(key){
  397. getConfigKey(key).then((response) => {
  398. if(key=="sys:config"){
  399. this.sysConfigForm=response.data;
  400. if(response.data.configValue!=null){
  401. this.sysConfig=JSON.parse(response.data.configValue);
  402. }
  403. }
  404. else if(key=="qw:config"){
  405. this.qwkfConfigForm=response.data;
  406. if(response.data.configValue!=null){
  407. this.qwkfConfig=JSON.parse(response.data.configValue);
  408. this.qwkfConfig.notifyUrl="http://kf.qw.ifeiyu100.com/app/common/weixinkfAuth/"+this.company.companyId;
  409. }
  410. }
  411. else if(key=="customer:config"){
  412. this.customerConfigForm=response.data;
  413. if(response.data.configValue!=null){
  414. this.customerConfig=JSON.parse(response.data.configValue);
  415. }
  416. }
  417. else if(key=="sys:qw:config"){
  418. this.qwConfigForm=response.data;
  419. if(response.data.configValue!=null){
  420. this.qwConfig=JSON.parse(response.data.configValue);
  421. }
  422. this.qwConfig.token="1o62d3YxvdHd4LEUiltnu7sK";
  423. this.qwConfig.encodingAESKey="UJfTQ5qKTKlegjkXtp1YuzJzxeHlUKvq5GyFbERN1iU";
  424. this.qwConfig.notifyUrl=this.qwConfig.realmNameURL+"/qw/data/"+this.company.companyId;
  425. this.qwConfig.chatToolbar="https://company.his.cdwjyyh.com/qwh5/?companyId="+this.company.companyId;
  426. this.qwConfig.chatToolbarOAuth2="https://open.weixin.qq.com/connect/oauth2/authorize?" +
  427. "appid="+this.qwConfig.corpId+"" +
  428. "&redirect_uri="+this.qwConfig.chatToolbar+"" +
  429. "&response_type=code" +
  430. "&scope=snsapi_base" +
  431. "&state=STATE" +
  432. "&agentid="+this.qwConfig.AgentId+"#wechat_redirect";
  433. }else if (key=="sys:AiKf:config"){
  434. this.AiKfConfigForm=response.data;
  435. if(response.data.configValue!=null){
  436. this.AiKfConfig=JSON.parse(response.data.configValue);
  437. }
  438. }else if (key=="companyUser:config"){
  439. this.companyUserConfig=response.data;
  440. if(response.data.configValue != null){
  441. this.userIsDefaultBlack = JSON.parse(response.data.configValue);
  442. }
  443. }else if(key == "company:admin:show"){
  444. this.adminIsShowForm = response.data;
  445. if(response.data.configValue != null){
  446. this.adminIsShow = JSON.parse(response.data.configValue);
  447. }
  448. }else if(key=="redPacket:config"){
  449. this.redPacketConfigForm=response.data;
  450. if(response.data.configValue!=null){
  451. this.redPacketConfig=JSON.parse(response.data.configValue);
  452. }
  453. }
  454. });
  455. },
  456. onSubmit1() {
  457. this.sysConfigForm.configValue=JSON.stringify(this.sysConfig);
  458. updateConfig(this.sysConfigForm).then(response => {
  459. if (response.code === 200) {
  460. this.msgSuccess("修改成功");
  461. this.getConfigKey("sys:config");
  462. }
  463. });
  464. },
  465. onSubmit2() {
  466. this.customerConfigForm.configValue=JSON.stringify(this.customerConfig);
  467. updateConfig(this.customerConfigForm).then(response => {
  468. if (response.code === 200) {
  469. this.msgSuccess("修改成功");
  470. this.getConfigKey("customer:config");
  471. }
  472. });
  473. },
  474. onSubmit3() {
  475. this.qwkfConfigForm.configValue=JSON.stringify(this.qwkfConfig);
  476. updateConfig(this.qwkfConfigForm).then(response => {
  477. if (response.code === 200) {
  478. this.msgSuccess("修改成功");
  479. this.getConfigKey("sys:config");
  480. }
  481. });
  482. },
  483. // onSubmit4() {
  484. // this.qwConfigForm.configValue=JSON.stringify(this.qwConfig);
  485. // updateConfig(this.qwConfigForm).then(response => {
  486. // if (response.code === 200) {
  487. // this.msgSuccess("修改成功");
  488. // this.getConfigKey("sys:qw:config");
  489. // }
  490. // });
  491. // },
  492. onSubmit4() {
  493. this.redPacketConfigForm.configValue=JSON.stringify(this.redPacketConfig);
  494. updateConfig(this.redPacketConfigForm).then(response => {
  495. if (response.code === 200) {
  496. this.msgSuccess("修改成功");
  497. this.getConfigKey("redPacket:config");
  498. }
  499. });
  500. },
  501. onSubmit5() {
  502. this.AiKfConfigForm.configValue=JSON.stringify(this.AiKfConfig);
  503. updateConfig(this.AiKfConfigForm).then(response => {
  504. if (response.code === 200) {
  505. this.msgSuccess("修改成功");
  506. this.getConfigKey("sys:AiKf:config");
  507. }
  508. });
  509. },
  510. onSubmit6() {
  511. this.companyUserConfig.configValue=JSON.stringify(this.userIsDefaultBlack);
  512. configUserCheck({userIsDefaultBlack: this.userIsDefaultBlack}).then(response => {
  513. if (response.code === 200) {
  514. this.msgSuccess("修改成功");
  515. this.getConfigKey("companyUser:config");
  516. }
  517. });
  518. },
  519. onSubmit7() {
  520. // 实现提交逻辑
  521. this.adminIsShowForm.configValue=JSON.stringify(this.adminIsShow);
  522. updateConfig(this.adminIsShowForm).then(response => {
  523. if (response.code === 200) {
  524. this.msgSuccess("修改成功");
  525. this.getConfigKey("company:admin:show");
  526. }
  527. })
  528. },
  529. }
  530. };
  531. </script>
  532. <style scoped lang="scss">
  533. .tip{
  534. color:indianred;
  535. }
  536. .line{
  537. margin: 10px 0;
  538. background-color:gainsboro;
  539. height:1px;
  540. }
  541. .el-row {
  542. margin-bottom: 0px;
  543. &:last-child {
  544. margin-bottom: 0;
  545. }
  546. }
  547. </style>