addAndEdit.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657
  1. <!--
  2. * @Description: 新增/编辑弹框
  3. * @Author: Sugar.
  4. * @Date: 2023-11-24 13:55:00
  5. * @LastEditors: Sugar.
  6. * @LastEditTime: 2023-11-24 13:55:00
  7. * @FilePath: \cattle_webui\src\views\ticket\ticketMr\dialog\AddOrEditDialog.vue
  8. * @Copyright: Copyright (c) 2016~2023 by Sugar., All Rights Reserved.
  9. -->
  10. <template>
  11. <el-dialog
  12. :title="title"
  13. :visible.sync="open"
  14. width="800px"
  15. append-to-body
  16. :close-on-click-modal="false"
  17. @close="cancel"
  18. >
  19. <div class="dialog">
  20. <el-form v-if="open" :model="form" ref="form" :rules="rules" label-width="120px">
  21. <el-tabs v-model="activeName">
  22. <!-- 基础信息 -->
  23. <el-tab-pane label="基础信息" name="01">
  24. <el-form-item label="票务名称:" prop="goodsName" style="margin-top: 20px">
  25. <el-input
  26. v-model="form.goodsName"
  27. placeholder="票务名称"
  28. clearable
  29. />
  30. </el-form-item>
  31. <el-form-item label="实名信息:" prop="isAuth" v-if="false">
  32. <el-radio v-model="form.isAuth" label="1">全部观影人员均实名</el-radio>
  33. </el-form-item>
  34. <el-form-item label="散客是否实名:" prop="ifRealUser">
  35. <el-radio-group v-model="form.ifRealUser">
  36. <el-radio :label="0">否</el-radio>
  37. <el-radio :label="1">是</el-radio>
  38. </el-radio-group>
  39. </el-form-item>
  40. <el-form-item label="团购是否实名:" prop="ifRealTeam">
  41. <el-radio-group v-model="form.ifRealTeam">
  42. <el-radio :label="0">否</el-radio>
  43. <el-radio :label="1">是</el-radio>
  44. </el-radio-group>
  45. </el-form-item>
  46. <el-form-item label="停止售卖时间:" prop="stopSaleTime">
  47. <span style="margin-right: 5px">开演前</span>
  48. <!-- <el-input
  49. v-model="form.stopSaleTime"
  50. type="number"
  51. placeholder="停止售卖时间"
  52. clearable
  53. style="width: 180px;"
  54. >
  55. </el-input> -->
  56. <el-input-number v-model="form.stopSaleTime" :controls="false" controls-position="right" placeholder="停止售卖时间"></el-input-number>
  57. <span style="margin-left: 5px">分钟内
  58. <!-- <i style="font-size: 12px;margin-left: 5px;">注:必须大于核销时间至少30秒</i> -->
  59. </span>
  60. </el-form-item>
  61. <el-form-item label="核销时间:" prop="beforeTime">
  62. <span style="margin-right: 5px">开演前</span>
  63. <el-input
  64. v-model="form.beforeTime"
  65. @change="changePriceAmount('beforeTime')"
  66. type="number"
  67. placeholder="核销时间"
  68. clearable
  69. style="width: 120px;"
  70. >
  71. </el-input>
  72. <span style="margin-left: 5px">分钟内</span>
  73. </el-form-item>
  74. <el-form-item label="核销播报次数:" prop="verificationSpeaker">
  75. <el-input
  76. v-model="form.verificationSpeaker"
  77. @change="changePriceAmount('verificationSpeaker')"
  78. type="number"
  79. placeholder="核销播报次数"
  80. clearable
  81. style="width: 100%;"
  82. >
  83. </el-input>
  84. </el-form-item>
  85. <el-form-item label="票务说明:">
  86. <el-input
  87. type="textarea"
  88. :rows="3"
  89. maxlength="40"
  90. show-word-limit
  91. placeholder="请输入内容"
  92. v-model="form.detail">
  93. </el-input>
  94. </el-form-item>
  95. </el-tab-pane>
  96. <!-- 销售信息 -->
  97. <el-tab-pane label="销售信息" name="02">
  98. <el-form-item label="销售价:" label-width="100px" prop="salePrice">
  99. <el-input
  100. v-model="form.salePrice"
  101. placeholder="销售价"
  102. type="number"
  103. clearable
  104. @change="changePriceAmount('salePrice')"
  105. style="width: 100%;"
  106. >
  107. <template slot="append">元</template>
  108. </el-input>
  109. </el-form-item>
  110. <!-- <el-form-item label="销售有效期:" label-width="100px" prop="saleTimeAll">
  111. <el-date-picker
  112. v-model="form.saleTimeAll"
  113. type="datetimerange"
  114. value-format="yyyy-MM-dd HH:mm:ss"
  115. range-separator="至"
  116. start-placeholder="开始日期"
  117. end-placeholder="结束日期">
  118. </el-date-picker>
  119. </el-form-item> -->
  120. <el-form-item label="是否限购:" prop="buyAstrictType" label-width="100px" style="margin-bottom: 10px">
  121. <el-radio v-model="form.buyAstrictType" label="1">是</el-radio>
  122. <el-radio v-model="form.buyAstrictType" label="2">否</el-radio>
  123. </el-form-item>
  124. <el-form-item label="" prop="buyAstrict" label-width="100px" v-if="form.buyAstrictType == 1">
  125. <span><span style="color: red">*</span>每个账号在每个场次限购</span>
  126. <el-input
  127. v-model.number="form.buyAstrict"
  128. placeholder=""
  129. clearable
  130. style="width: 140px;margin-left: 5px"
  131. >
  132. <template slot="append">张</template>
  133. </el-input>
  134. </el-form-item>
  135. <el-form-item label="售票渠道:" required label-width="100px">
  136. <el-checkbox v-model="form.channelWx">小程序</el-checkbox>
  137. <el-checkbox v-model="form.channelWindow">窗口</el-checkbox>
  138. <el-checkbox v-model="form.channelAutoSale">自助售/取票机</el-checkbox>
  139. </el-form-item>
  140. <el-form-item label="税率:" prop="taxRate" label-width="100px">
  141. <el-select
  142. v-model="form.taxRate"
  143. placeholder="请选择税率"
  144. clearable
  145. style="width: 240px"
  146. >
  147. <el-option
  148. v-for="dict in dict.type.system_taxrate"
  149. :key="dict.value"
  150. :label="dict.label"
  151. :value="dict.value"
  152. />
  153. </el-select>
  154. </el-form-item>
  155. <el-form-item label="可售区域:" label-width="100px">
  156. <span @click="deliverableAreaDialogCancel(form.saleArea)" style="cursor: pointer;color: #1890ff;">请选择(点击这里进行选择)</span>
  157. <span style="margin-left: 10px;color: red;cursor: pointer;" @click="form.saleArea=''">全部清除</span>
  158. <div style="width: 100%;height: 100px;overflow: hidden;overflow-y: auto;background-color: rgba(204, 204, 204,0.3);padding: 5px;box-sizing: border-box;border-radius: 10px;">
  159. <div v-if="form.saleArea">
  160. <el-tag :key="index" style="margin-left: 5px;margin-bottom: 5px;" v-for="(item,index) in form.saleArea" >{{ item }}</el-tag>
  161. </div>
  162. </div>
  163. </el-form-item>
  164. </el-tab-pane>
  165. <!-- 退票信息 -->
  166. <el-tab-pane label="退票信息" name="03">
  167. <el-form-item label="是否支持退票:" prop="backStatus" label-width="120px">
  168. <el-radio v-model="form.backStatus" label="0">是</el-radio>
  169. <el-radio v-model="form.backStatus" label="1">否</el-radio>
  170. </el-form-item>
  171. <el-form-item v-if="form.backStatus == '0'" label="退票时间:" prop="backTime" label-width="120px" style="margin-bottom: 10px">
  172. <el-radio v-model="form.backTime" label="1">按购买日期结算</el-radio>
  173. </el-form-item>
  174. <el-form-item label="" v-if="form.backStatus == '0'" prop="days" label-width="120px">
  175. <span>提前</span>
  176. <el-input
  177. v-model="form.days"
  178. type="number"
  179. placeholder=""
  180. clearable
  181. @change="changePriceAmount('days')"
  182. style="width: 140px;margin-left: 5px"
  183. />
  184. <span style="padding: 0 10px">天</span>
  185. <el-time-select
  186. v-model="form.hour"
  187. :picker-options="{ start: '00:00', step: '00:01', end: '23:59'}"
  188. placeholder="选择时间">
  189. </el-time-select>
  190. <span style="padding-left: 10px">可退</span>
  191. </el-form-item>
  192. </el-tab-pane>
  193. </el-tabs>
  194. </el-form>
  195. </div>
  196. <span slot="footer" class="dialog-footer">
  197. <el-button @click="cancel">取消</el-button>
  198. <el-button
  199. type="primary"
  200. @click="submitForm"
  201. v-loading.fullscreen.lock="loading"
  202. element-loading-text="提交中..."
  203. element-loading-spinner="el-icon-loading"
  204. element-loading-background="rgba(0, 0, 0, 0.8)"
  205. >
  206. <span v-if="loading">提交中...</span>
  207. <span v-else>保存</span>
  208. </el-button>
  209. </span>
  210. <!-- 选择配送区域对话框 Start -->
  211. <el-dialog
  212. :visible.sync="selectDeliveryAreaDialogOpen"
  213. :title="selectDeliveryAreaDialogTitle"
  214. width="60%"
  215. append-to-body
  216. class="delivery-area-dialog"
  217. @close="selectDeliveryAreaDialogCancel"
  218. >
  219. <div class="area-container"
  220. v-loading="selectCityListLoading"
  221. element-loading-text="加载数据中..."
  222. >
  223. <el-row>
  224. <el-col
  225. v-for="(areaItem, areaIndex) in selectDeliveryAreaDialogList"
  226. :key="areaItem.areaCode"
  227. class="area-wrap"
  228. :span="8"
  229. >
  230. <el-checkbox
  231. v-model="areaItem.selected"
  232. :label="areaItem.name"
  233. class="area-wrap-province"
  234. @change="handleChangeProvince(areaIndex, areaItem)"
  235. >
  236. <template #default>
  237. <span
  238. slot="reference"
  239. :class="areaItem.hasChildrenSelect ? 'area-province-label' : ''"
  240. >{{ areaItem.name }}</span>
  241. </template>
  242. </el-checkbox>
  243. <el-cascader
  244. v-model="areaItem.selectCityList"
  245. :options="areaItem.cityList"
  246. :props="areaCascaderProps(areaItem, areaIndex)"
  247. :clearable="false"
  248. collapse-tags
  249. class="area-wrap-city"
  250. popper-class="area-city-popper"
  251. @visible-change="(isVisible)=>handleCascaderVisibleChangeCity(isVisible, areaItem, areaIndex)"
  252. @change="changeCascader"
  253. />
  254. </el-col>
  255. </el-row>
  256. </div>
  257. <template #footer>
  258. <div class="dialog-footer">
  259. <el-button @click="selectDeliveryAreaDialogCancel">取 消</el-button>
  260. <el-button type="primary" @click="selectDeliveryAreaDialogSubmitForm">确 定</el-button>
  261. </div>
  262. </template>
  263. </el-dialog>
  264. <!-- 选择配送区域对话框 End -->
  265. <!-- 添加或修改对话框 End -->
  266. </el-dialog>
  267. </template>
  268. <script>
  269. // import { updateNoticeMgr } from "@/api/system/noticeMgr";
  270. import { saveAndEdit, getSelectById } from '@/api/ticketMr/ticketMr'
  271. import { getToken } from "@/utils/auth";
  272. import { pageList } from '@/api/performMr/performMr'
  273. import FreightMgrIndexMi from "./FreightMgrIndexMi"
  274. export default {
  275. name: "addAndEdit",
  276. mixins: [FreightMgrIndexMi],
  277. dicts: ['system_taxrate'],
  278. data() {
  279. let validateNumber = (rule, value, callback) => {
  280. let regNumber=/^(([1-9]\d*)|([0][.]{1}[0-9]{0,2}[0-9]+)|([1-9]\d*[.]{1}[0-9]+))$/g;
  281. if (value === '') {
  282. callback(new Error('请输入大于等于0的数值!!!'));
  283. } else if(value==0){
  284. callback();
  285. }
  286. else if (!regNumber.test(value)) {
  287. callback(new Error('只能大于等于0的数值!!!'));
  288. } else{
  289. callback();
  290. }
  291. };
  292. return {
  293. channelList: [
  294. {id: 1, name: '小程序', value: 1},
  295. {id: 2, name: '窗口', value: 2},
  296. ],
  297. title: "编辑",
  298. model: "EDIT",
  299. activeName: '01',
  300. // 演员信息弹窗
  301. performerVisible: false,
  302. // 演员信息
  303. performerList: [],
  304. // 演员上传图片索引
  305. performerIndex: 0,
  306. open: false,
  307. loading: false,
  308. form: {
  309. id: undefined,
  310. type: "",
  311. content: "",
  312. isAuth: '1',
  313. backTime: '1',
  314. goodsPerform: {}
  315. },
  316. rules: {
  317. goodsName: [{ required: true, message: "请输入票务名称", trigger: ["change","blur"] }],
  318. stopSaleTime: [
  319. { required: true, message: "请输入停止售卖时间", trigger: ["change","blur"] },
  320. // { validator: validateNumber, trigger: ["blur","change"]},
  321. ],
  322. beforeTime: [{ required: true, message: "请输入核销时间", trigger: ["change","blur"] }],
  323. verificationSpeaker: [{ required: true, message: "请输入核销播报次数", trigger: ["change","blur"] }],
  324. detail: [{ required: true, message: "请输入票务说明", trigger: ["change","blur"] }],
  325. salePrice: [{ required: true, message: "请输入销售价", trigger: ["change","blur"] }],
  326. buyAstrictType: [{ required: true, message: "请选择是否限购", trigger: ["change","blur"] }],
  327. buyAstrict: [{ required: true, message: "请输入每个账号在每个场次限购张数", trigger: ["change","blur"] }],
  328. taxRate: [{ required: true, message: "请输入税率", trigger: ["change","blur"] }],
  329. backStatus: [{ required: true, message: "请选择是否支持退票", trigger: ["change","blur"] }],
  330. days: [{ required: true, message: "请输入日期", trigger: ["change","blur"] }],
  331. saleTimeAll: [{required: true, message: "请选择销售有效期", trigger: ["change","blur"]}],
  332. ifRealUser: [{required: true, message: "请选择散客是否实名", trigger: ["change","blur"]}],
  333. ifRealTeam: [{required: true, message: "请选择团购是否实名", trigger: ["change","blur"]}]
  334. },
  335. uploadObj: {
  336. url: process.env.VUE_APP_UPLOAD_FILE_API + "/upload/single/minio",
  337. Headers: { Authorization: "Bearer " + getToken() },
  338. },
  339. statusList: [
  340. {id: 1, name: '是', value: 1},
  341. {id: 2, name: '否', value: 2},
  342. ],
  343. performList: []
  344. };
  345. },
  346. created() {
  347. this.getList()
  348. },
  349. methods: {
  350. /** 查询主办方列表 */
  351. getList() {
  352. pageList({pageNum: 1, pageSize: 100})
  353. .then(response => {
  354. this.performList = response.data.rows;
  355. }
  356. );
  357. },
  358. /** 主办方选择事件 */
  359. changePerform(val) {
  360. this.performList.forEach(item => {
  361. if(item.id == val){
  362. this.form.sponsorName = item.name
  363. }
  364. })
  365. },
  366. /**
  367. * 打开弹框
  368. * @date 2023-11-22
  369. * @param {any} obj
  370. * @returns {any}
  371. */
  372. openDialog(title, obj) {
  373. this.open = true;
  374. this.reset();
  375. this.activeName = '01';
  376. if (obj){
  377. this.title = "编辑票务管理";
  378. this.getSelectByIdApi(obj)
  379. }else{
  380. this.title = "添加票务管理";
  381. this.$nextTick(() => {
  382. this.$refs["form"].clearValidate();
  383. });
  384. }
  385. },
  386. /** 获取详情 */
  387. getSelectByIdApi(row) {
  388. const id = row.id
  389. getSelectById(id).then(response => {
  390. const obj = response.data;
  391. this.$nextTick(() => {
  392. this.form = {}
  393. this.$set(this.form, 'id', obj.id);
  394. this.$set(this.form, 'goodsName', obj.goodsName);
  395. this.$set(this.form, 'isAuth', '1');
  396. this.$set(this.form, 'verificationSpeaker', obj.goodsPerform.verificationSpeaker);
  397. this.$set(this.form, 'beforeTime', obj.goodsPerform.beforeTime);
  398. this.$set(this.form, 'stopSaleTime', obj.goodsPerform.stopSaleTime);
  399. this.$set(this.form, 'detail', obj.goodsPerform.detail);
  400. this.$set(this.form, 'salePrice', obj.salePrice);
  401. if(obj.goodsPerform.buyAstrict > -1){
  402. this.$set(this.form, 'buyAstrictType', '1');
  403. this.$set(this.form, 'buyAstrict', obj.goodsPerform.buyAstrict);
  404. } else {
  405. this.$set(this.form, 'buyAstrictType', '2');
  406. this.$set(this.form, 'buyAstrict', '');
  407. }
  408. this.$set(this.form, 'channelWx', obj.goodsPerform.channelWx == 0);
  409. this.$set(this.form, 'channelWindow', obj.goodsPerform.channelWindow == 0);
  410. this.$set(this.form, 'channelAutoSale', obj.goodsPerform.channelAutoSale == 0);
  411. this.$set(this.form, 'backStatus', obj.goodsPerform.backStatus);
  412. this.$set(this.form, 'backTime', '1');
  413. this.$set(this.form, 'taxRate', obj.taxRate);
  414. this.$set(this.form, 'backStatus', obj.goodsPerform.backStatus.toString());
  415. this.$set(this.form, 'saleArea', obj.saleArea);
  416. this.$set(this.form, 'stopSaleTime', obj.goodsPerform.stopSaleTime);
  417. if(obj.goodsPerform.backStatus == '0') {
  418. this.$set(this.form, 'days', obj.performRefundRule.days);
  419. this.$set(this.form, 'hour', obj.performRefundRule.hour);
  420. }
  421. if(obj.goodsPerform.saleBeginTime && obj.goodsPerform.saleEndTime){
  422. this.$set(this.form, 'saleTimeAll', [obj.goodsPerform.saleBeginTime,obj.goodsPerform.saleEndTime]);
  423. }
  424. this.$set(this.form, 'ifRealUser', obj.goodsPerform.ifRealUser);
  425. this.$set(this.form, 'ifRealTeam', obj.goodsPerform.ifRealTeam);
  426. });
  427. });
  428. },
  429. /** 价格输入事件 */
  430. changePriceAmount(key) {
  431. if(this.form[key] * 1 < 0){
  432. this.$message.error("输入需大于或等于0!");
  433. this.$set(this.form, key, '');
  434. return false
  435. }
  436. },
  437. /**
  438. * 保存
  439. * @date 2023-11-22
  440. * @returns {any}
  441. */
  442. submitForm() {
  443. this.$refs["form"].validate(async (valid) => {
  444. if (valid) {
  445. try {
  446. let postMap = {
  447. goodsPerform: {},
  448. performRefundRule: {}
  449. }
  450. if(this.form.id){
  451. postMap.id = this.form.id;
  452. }
  453. postMap.goodsName = this.form.goodsName;
  454. postMap.isAuth = this.form.isAuth;
  455. postMap.goodsPerform.verificationSpeaker = this.form.verificationSpeaker;
  456. postMap.goodsPerform.beforeTime = this.form.beforeTime;
  457. postMap.goodsPerform.detail = this.form.detail;
  458. postMap.salePrice = this.form.salePrice;
  459. postMap.goodsPerform.buyAstrict = this.form.buyAstrictType == '1' ? this.form.buyAstrict : '-1';
  460. if(!(this.form.channelWx || this.form.channelWindow || this.form.channelAutoSale)){
  461. this.$message.error("请选择销售渠道!");
  462. return false;
  463. }
  464. postMap.taxRate = this.form.taxRate
  465. postMap.goodsPerform.channelWx = this.form.channelWx ? 0 : 1;
  466. postMap.goodsPerform.channelWindow = this.form.channelWindow ? 0 : 1;
  467. postMap.goodsPerform.channelAutoSale = this.form.channelAutoSale ? 0 : 1;
  468. postMap.goodsPerform.backStatus = this.form.backStatus;
  469. if(this.form.backStatus == '0') {
  470. postMap.performRefundRule.days = this.form.days;
  471. postMap.performRefundRule.hour = this.form.hour;
  472. }
  473. postMap.goodsType = 2;
  474. postMap.classifyId = 1;
  475. postMap.classifyName = "门票类";
  476. postMap.saleArea = this.form.saleArea&&this.form.saleArea.length>0?this.form.saleArea:[]
  477. postMap.goodsPerform.stopSaleTime = this.form.stopSaleTime
  478. if(this.form.saleTimeAll && this.form.saleTimeAll.length > 0) {
  479. postMap.goodsPerform.saleBeginTime = this.form.saleTimeAll[0];
  480. postMap.goodsPerform.saleEndTime = this.form.saleTimeAll[1];
  481. }
  482. postMap.goodsPerform.ifRealUser = this.form.ifRealUser
  483. postMap.goodsPerform.ifRealTeam = this.form.ifRealTeam
  484. this.loading = true;
  485. const { code } = await saveAndEdit({ ...postMap });
  486. if (code === 200) {
  487. this.$message.success("操作成功!");
  488. this.$emit("getList");
  489. this.cancel();
  490. }
  491. } catch (error) {
  492. } finally {
  493. this.loading = false;
  494. }
  495. }
  496. });
  497. },
  498. /**
  499. * 重置
  500. * @date 2023-11-22
  501. * @returns {any}
  502. */
  503. reset() {
  504. this.$set(this.form, 'id', '');
  505. this.$set(this.form, 'goodsName', '');
  506. this.$set(this.form, 'isAuth', '1');
  507. this.$set(this.form, 'verificationSpeaker', '');
  508. this.$set(this.form, 'detail', '');
  509. this.$set(this.form, 'goodsPerform', {});
  510. this.$set(this.form, 'salePrice', '');
  511. this.$set(this.form, 'buyAstrictType', '1');
  512. this.$set(this.form, 'buyAstrict', '');
  513. this.$set(this.form, 'channelWx', '');
  514. this.$set(this.form, 'channelWindow', '');
  515. this.$set(this.form, 'beforeTime', '');
  516. this.$set(this.form, 'backStatus', '');
  517. this.$set(this.form, 'backTime', '1');
  518. this.$set(this.form, 'taxRate', '');
  519. this.$set(this.form, 'backStatus', '');
  520. this.$set(this.form, 'days', '');
  521. this.$set(this.form, 'hour', '');
  522. this.$set(this.form, 'saleArea', '');
  523. this.$set(this.form, 'stopSaleTime', '');
  524. this.$set(this.form, 'saleTimeAll', '');
  525. this.$set(this.form, 'ifRealUser', '');
  526. this.$set(this.form, 'ifRealTeam', '');
  527. },
  528. /**
  529. * 关闭弹框
  530. * @date 2023-11-22
  531. * @returns {any}
  532. */
  533. cancel() {
  534. // this.reset();
  535. this.open = false;
  536. },
  537. },
  538. };
  539. </script>
  540. <style lang="scss" scoped>
  541. .dialog {
  542. padding: 0 30px;
  543. max-height: 65vh;
  544. overflow-y: auto;
  545. }
  546. .dialog {
  547. padding: 0 30px;
  548. .upload-btn {
  549. width: 100px;
  550. height: 100px;
  551. background-color: #fbfdff;
  552. border: dashed 1px #c0ccda;
  553. border-radius: 5px;
  554. i {
  555. font-size: 30px;
  556. margin-top: 20px;
  557. }
  558. &-text {
  559. margin-top: -10px;
  560. }
  561. }
  562. .avatar {
  563. cursor: pointer;
  564. }
  565. }
  566. .el-table{
  567. .upload-btn {
  568. width: 100px;
  569. height: 100px;
  570. background-color: #fbfdff;
  571. border: dashed 1px #c0ccda;
  572. border-radius: 5px;
  573. i {
  574. font-size: 30px;
  575. margin-top: 20px;
  576. }
  577. &-text {
  578. margin-top: -10px;
  579. }
  580. }
  581. .avatar {
  582. cursor: pointer;
  583. }
  584. }
  585. .area-container {
  586. min-height: 400px;
  587. }
  588. ::v-deep .area-wrap-city.el-cascader {
  589. line-height: normal;
  590. .el-input {
  591. cursor: pointer;
  592. width: 100% !important;
  593. height: 28px !important;
  594. .el-input__inner {
  595. display: none !important;
  596. }
  597. span.el-input__suffix {
  598. position: inherit !important;
  599. i.el-input__icon {
  600. line-height: inherit;
  601. margin-left: 5px;
  602. }
  603. }
  604. .el-input__wrapper {
  605. box-shadow: none;
  606. input {
  607. display: none;
  608. }
  609. }
  610. }
  611. .el-cascader__tags {
  612. display: none;
  613. }
  614. }
  615. .area-city-popper {
  616. .el-cascader-panel {
  617. .el-scrollbar.el-cascader-menu {
  618. .el-cascader-menu__wrap.el-scrollbar__wrap {
  619. height: 315px;
  620. }
  621. }
  622. }
  623. }
  624. </style>
  625. <style>
  626. .custom-class-box {
  627. z-index: 999999 !important;
  628. }
  629. </style>