userDefault.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624
  1. <template>
  2. <div class="mainBox">
  3. <div class="layerBox">
  4. <el-form ref="form" :model="form" :rules="loginRules" class="login-form" autocomplete="on" label-position="left" label-width="120px">
  5. <div class="formDiv">
  6. <!--选择角色 start------------------------------------------>
  7. <el-form-item label="所属角色:" :label-width="formLabelWidth" prop="role_id" class="custom-align-right">
  8. <div class="formLabelFloatBox">
  9. <el-select v-model="form.role_id" placeholder="请选择..">
  10. <el-option
  11. v-for="item in role_idArr"
  12. :key="item.value"
  13. :label="item.label"
  14. :value="item.value">
  15. </el-option>
  16. </el-select>
  17. </div>
  18. </el-form-item>
  19. <!--选择角色 end------------------------------------------>
  20. <el-form-item label="登录账号:" :label-width="formLabelWidth" prop="user_name" class="custom-align-right">
  21. <el-input v-model="form.user_name" autocomplete="off" placeholder="请输入登录账号.."></el-input>
  22. </el-form-item>
  23. <div v-if="editId==''">
  24. <!--新密码 start------------------------------------------>
  25. <div class="PasswordBox">
  26. <el-form-item prop="password" label="登录密码:" class="custom-align-right">
  27. <div class="PasswordBody">
  28. <el-input
  29. :key="passwordType1"
  30. ref="password1"
  31. v-model="form.password"
  32. :type="passwordType1"
  33. placeholder="请输入密码"
  34. name="password"
  35. tabindex="2"
  36. autocomplete="off"
  37. @blur="capsTooltip2 = false"
  38. />
  39. <span class="show-pwd" @click="showPwd(1)">
  40. <svg-icon :icon-class="passwordType1 === 'password' ? 'eye' : 'eye-open'" />
  41. </span>
  42. </div>
  43. </el-form-item>
  44. </div>
  45. <!--新密码 end------------------------------------------>
  46. <!--新密码 start------------------------------------------>
  47. <div class="PasswordBox">
  48. <el-form-item prop="confirm_password" label="确认密码:" class="custom-align-right">
  49. <div class="PasswordBody">
  50. <el-input
  51. :key="passwordType2"
  52. ref="password2"
  53. v-model="form.confirm_password"
  54. :type="passwordType2"
  55. placeholder="请输入密码"
  56. name="password"
  57. tabindex="2"
  58. autocomplete="off"
  59. @blur="capsTooltip2 = false"
  60. />
  61. <span class="show-pwd" @click="showPwd(2)">
  62. <svg-icon :icon-class="passwordType2 === 'password' ? 'eye' : 'eye-open'" />
  63. </span>
  64. </div>
  65. </el-form-item>
  66. </div>
  67. <!--新密码 end------------------------------------------>
  68. </div>
  69. <el-form-item label="真实姓名:" :label-width="formLabelWidth" prop="real_name" class="custom-align-right">
  70. <el-input v-model="form.real_name" autocomplete="off" placeholder="请输入真实姓名.."></el-input>
  71. </el-form-item>
  72. <el-form-item label="照片:" :label-width="formLabelWidth" prop="" :class="['custom-form-item']" class="custom-align-right">
  73. <div class="uploaderBox">
  74. <!--图片上传组件 start ------------------------------------------------------------>
  75. <div class="avatar-upload-container" @mouseenter="hovering = true" @mouseleave="hovering = false">
  76. <!-- 上传组件 -->
  77. <el-upload
  78. class="avatar-uploader"
  79. action="#"
  80. :show-file-list="false"
  81. :before-upload="beforeAvatarUpload"
  82. >
  83. <!-- 预览图片 -->
  84. <img v-if="photoUrl" :src="photoUrl" class="avatar">
  85. <!-- 上传图标 -->
  86. <div v-else class="chooseImgDiv">
  87. <div>
  88. <img src="@/assets/public/upload/noImage.png">
  89. <div>选择图片</div>
  90. </div>
  91. </div>
  92. </el-upload>
  93. <!-- 删除按钮,当鼠标悬浮时显示 -->
  94. <div v-if="hovering && photoUrl" class="delete-button" @click="handleDelete">
  95. <i class="el-icon-delete"></i>
  96. </div>
  97. </div>
  98. <!--图片上传组件 end ------------------------------------------------------------>
  99. </div>
  100. </el-form-item>
  101. <el-form-item label="身份证号:" :label-width="formLabelWidth" prop="id_card" class="custom-align-right">
  102. <el-input v-model="form.id_card" autocomplete="off" placeholder="请输入身份证号.."></el-input>
  103. </el-form-item>
  104. <el-form-item label="性别:" :label-width="formLabelWidth" prop="gender" class="custom-align-right">
  105. <el-radio v-model="form.gender" label="1">男</el-radio>
  106. <el-radio v-model="form.gender" label="2">女</el-radio>
  107. </el-form-item>
  108. <el-form-item label="手机号:" :label-width="formLabelWidth" prop="mobile" class="custom-align-right">
  109. <el-input v-model="form.mobile" autocomplete="off" placeholder="请输入手机号.."></el-input>
  110. </el-form-item>
  111. <el-form-item label="出生年月:" :label-width="formLabelWidth" prop="birthday" class="custom-align-right">
  112. <el-date-picker
  113. v-model="form.birthday"
  114. type="date"
  115. placeholder="选择日期">
  116. </el-date-picker>
  117. </el-form-item>
  118. <el-form-item label="有效期:" :label-width="formLabelWidth" prop="" class="custom-align-right">
  119. <el-date-picker
  120. v-model="timeList"
  121. type="daterange"
  122. :disabled="form.long_time === 1"
  123. range-separator="至"
  124. start-placeholder="开始日期"
  125. end-placeholder="结束日期"
  126. :picker-options="pickerOptions">
  127. </el-date-picker>
  128. <el-checkbox v-model="form.long_time" :true-label="1" :false-label="0" class="longTimeCheckbox">无限期</el-checkbox>
  129. </el-form-item>
  130. <el-form-item label="籍贯:" :label-width="formLabelWidth" prop="" class="custom-align-right">
  131. <CityCascader v-model="form.native_place_arr_id" @update-city-id="update_native_place_arr_id"></CityCascader>
  132. </el-form-item>
  133. <el-form-item label="QQ:" :label-width="formLabelWidth" prop="" class="custom-align-right">
  134. <el-input v-model="form.qq" autocomplete="off" placeholder="请输入QQ号.."></el-input>
  135. </el-form-item>
  136. <el-form-item label="电子邮箱:" :label-width="formLabelWidth" prop="" class="custom-align-right">
  137. <el-input v-model="form.email" autocomplete="off" placeholder="请输入电子邮箱.."></el-input>
  138. </el-form-item>
  139. <el-form-item label="邮编:" :label-width="formLabelWidth" prop="" class="custom-align-right">
  140. <el-input v-model="form.zip_code" autocomplete="off" placeholder="请输入邮编.."></el-input>
  141. </el-form-item>
  142. <el-form-item label="详细地址:" :label-width="formLabelWidth" prop="" class="custom-align-right">
  143. <CityCascader v-model="form.address_arr_id" @update-city-id="update_address_arr_id"></CityCascader>
  144. </el-form-item>
  145. <el-form-item label="" :label-width="formLabelWidth" prop="" class="custom-align-right">
  146. <el-input v-model="form.address" autocomplete="off" placeholder="请输入门牌号.."></el-input>
  147. </el-form-item>
  148. <el-form-item label="相关资料:" :label-width="formLabelWidth" prop="" class="custom-align-right">
  149. <el-upload
  150. class="upload-demo"
  151. :action="uploadFileUrl"
  152. :headers="headers"
  153. :on-preview="handlePreview"
  154. :on-remove="handleRemove"
  155. :before-remove="beforeRemove"
  156. :on-success="handleUploadSuccess"
  157. multiple
  158. :limit="30"
  159. :on-exceed="handleExceed"
  160. :file-list="otherList">
  161. <el-button size="small" type="primary">点击上传</el-button>
  162. <div slot="tip" class="el-upload__tip">每张图片最大1MB,最多上传30张图片。</div>
  163. </el-upload>
  164. </el-form-item>
  165. <el-form-item label="提示词:" :label-width="formLabelWidth" prop="" class="custom-align-right">
  166. <el-input type="textarea" v-model="form.remark" class="custom-textarea" placeholder="请输入提示词"></el-input>
  167. </el-form-item>
  168. </div>
  169. </el-form>
  170. </div>
  171. <div class="bottomBtnBox">
  172. <el-button type="info" @click="goList">返回</el-button>
  173. <el-button type="primary" @click="addData" v-if="editId==''">提交</el-button>
  174. <el-button type="primary" @click="editData" v-else>修改</el-button>
  175. </div>
  176. </div>
  177. </template>
  178. <script>
  179. // 引入公用样式
  180. import '@/styles/global.less';
  181. // 引入baseUrl
  182. import URL from '@/utils/baseUrl';
  183. //城市级联选择器
  184. import CityCascader from './CityCascader';
  185. //格式化时间
  186. import { formatLocalDate } from '@/utils/public';
  187. export default {
  188. components: {
  189. CityCascader, //城市级联选择器
  190. },
  191. data() {
  192. // 配置验证规则:用于表单验证
  193. const validatePassword = (rule, value, callback) => {
  194. if (value.length < 6) {
  195. callback(new Error('密码不能低于6位!'))
  196. } else {
  197. callback()
  198. }
  199. }
  200. const validateEmpty = (rule,value,callback) => {
  201. if (!value || value.trim() === "") {
  202. callback(new Error('该项不能为空!'));
  203. } else {
  204. callback();
  205. }
  206. }
  207. const validateArray = (rule,value,callback) => {
  208. if (value.length == 0) {
  209. callback(new Error('该项不能为空!'))
  210. } else {
  211. callback()
  212. }
  213. }
  214. return {
  215. formLabelWidth:"120px",
  216. editId:"",
  217. uploadFileUrl:URL.testUrl+"/public/uploadFile",//获得上传地址
  218. headers: {},
  219. form:{
  220. type_id:1,//个人会员
  221. role_id:"",//角色id
  222. user_name:"",//登录账号
  223. password:"",//密码
  224. confirm_password:"",//确认密码
  225. real_name:"",//真实姓名
  226. avatar:"",//照片
  227. id_card:"",//身份证号
  228. birthday:"",//出生年月
  229. gender:"1",//性别
  230. mobile:"",//手机号
  231. native_place_arr_id:"",//籍贯
  232. address_arr_id:"",//详细地址
  233. address:"",//详细地址
  234. from_time:"",//有效期开始时间
  235. to_time:"",//有效期结束时间
  236. long_time:0,//是否为长期 //长期1:长期 0:非长期
  237. qq:"",//QQ
  238. email:"",//电子邮箱
  239. other:[],//相关资料
  240. remark:"",//提示词
  241. },
  242. timeList:[],//时间段
  243. otherList:[],//相关资料列表
  244. role_idArr:[],//角色id池
  245. //上传照片
  246. photoUrl:'',
  247. hovering: false, // 鼠标悬浮状态 悬浮时显示删除
  248. //密码验证
  249. capsTooltip1: false,
  250. capsTooltip2: false,
  251. passwordType1: 'password',
  252. passwordType2: 'password',
  253. //配置from表单验证规则
  254. loginRules: {
  255. //1.角色id
  256. role_id: [{ required: true, trigger: 'blur', validator: validateArray }],
  257. //2.登录账号
  258. user_name: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  259. //3.密码和确认密码
  260. password: [{ required: true, trigger: 'blur', validator: validatePassword }],
  261. confirm_password: [{ required: true, trigger: 'blur', validator: validatePassword }],
  262. //5.真实姓名
  263. real_name: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  264. //6.手机号
  265. mobile: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  266. //7.身份证号
  267. id_card: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  268. //8.性别
  269. gender: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  270. //9.手机号
  271. mobile: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  272. },
  273. //时间跨度
  274. pickerOptions: {
  275. selectableRange: '1900-01-01 to 2100-12-31', // 允许选择的日期范围
  276. disabledDate(time) {
  277. return time.getTime() < Date.now() - 86400000; // 禁用今天之前的日期
  278. },
  279. },
  280. };
  281. },
  282. methods: {
  283. //1.表单收集 start ------------------------------------------------------------>
  284. //1.1切换密码框的显示与隐藏
  285. showPwd(num) {
  286. const passwordTypeKey = 'passwordType' + num; //动态生成 passwordType 的键
  287. const passwordRefKey = 'password' + num; //动态生成 password 的引用
  288. // 切换密码类型
  289. if (this[passwordTypeKey] === 'password') {
  290. this[passwordTypeKey] = ''; //显示密码
  291. } else {
  292. this[passwordTypeKey] = 'password'; //隐藏密码
  293. }
  294. // 使用 $nextTick 聚焦到对应的密码输入框
  295. this.$nextTick(() => {
  296. this.$refs[passwordRefKey].focus(); //聚焦到对应的密码输入框
  297. });
  298. },
  299. //1.2获得角色列表池
  300. getRoleList(){
  301. let data = {
  302. page:1,
  303. pageSize:100
  304. }
  305. this.$store.dispatch('userRole/roleList',data).then(res=>{
  306. this.role_idArr = res.data.rows.map(item => ({
  307. value: item.id,
  308. label: item.role_name
  309. }));
  310. }).catch(error=>{
  311. this.$message({
  312. type: 'warning',
  313. message: '网络错误,请重试!'
  314. });
  315. })
  316. },
  317. //1.4更新籍贯
  318. update_native_place_arr_id(value){
  319. console.log("籍贯ID已更新:", value);
  320. this.form.native_place_arr_id = value;
  321. },
  322. //1.5更新详细地址
  323. update_address_arr_id(value){
  324. console.log("详细地址ID已更新:", value);
  325. this.form.address_arr_id = value;
  326. },
  327. //1.5重置表单
  328. clearData(){
  329. },
  330. //表单收集 end ------------------------------------------------------------>
  331. //2.提交表单 start ------------------------------------------------------------>
  332. //2.1 上传图片操作
  333. beforeAvatarUpload(file) {
  334. const isJPG = file.type === 'image/jpeg';
  335. const isPNG = file.type === 'image/png';
  336. const isLt2M = file.size / 1024 / 1024 < 2;
  337. if (!isJPG && !isPNG) {
  338. this.$message.error('上传头像图片只能是 JPG 或 PNG 格式!');
  339. return false;
  340. }
  341. if (!isLt2M) {
  342. this.$message.error('上传头像图片大小不能超过 2MB!');
  343. return false;
  344. }
  345. const formData = new FormData();
  346. formData.append('file', file);
  347. this.$store.dispatch('pool/uploadFile',formData).then(res=> {
  348. this.photoUrl = res.data.imgUrl;//显示缩略图
  349. this.form.avatar = res.data.imgUrl;//提供表单地址
  350. console.log(res.data.imgUrl)
  351. }).catch(() => {
  352. this.$message({
  353. type: 'warning',
  354. message: '网络错误,请重试!'
  355. });
  356. })
  357. // 阻止默认的上传行为
  358. return false;
  359. },
  360. //2.2 删除图片
  361. handleDelete() {
  362. this.photoUrl = ''; // 清空图片 URL
  363. },
  364. //2.3 多文件上传
  365. handleRemove(file, fileList) {
  366. console.log(file, fileList);
  367. },
  368. handlePreview(file) {
  369. console.log(file);
  370. },
  371. handleExceed(files, fileList) {
  372. this.$message.warning(`当前限制选择 30 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
  373. },
  374. beforeRemove(file, fileList) {
  375. return this.$confirm(`确定移除 ${ file.name }?`);
  376. },
  377. //获取token
  378. getTokenFromCookie() {
  379. const name = "Admin-Token=";
  380. const decodedCookie = decodeURIComponent(document.cookie);
  381. const cookieArray = decodedCookie.split(';');
  382. for (let i = 0; i < cookieArray.length; i++) {
  383. let cookie = cookieArray[i].trim();
  384. if (cookie.indexOf(name) === 0) {
  385. return cookie.substring(name.length, cookie.length); // 返回 token
  386. }
  387. }
  388. return ""; // 如果没有找到 token,返回空字符串
  389. },
  390. //设置token
  391. setHeaders() {
  392. this.token = this.getTokenFromCookie(); // 从 cookie 中获取 token
  393. this.headers = { token: this.token }; // 设置 headers
  394. console.log(this.headers); // 打印 headers
  395. },
  396. //上传成功以后
  397. handleUploadSuccess(response) {
  398. this.form.other.push(response.data.imgUrl)
  399. console.log('上传成功:', response);
  400. console.log(this.form.other);
  401. },
  402. //提交表单
  403. addData(){
  404. //1.格式化时间戳
  405. this.form.birthday = formatLocalDate(this.form.birthday);
  406. if(this.form.long_time==0){
  407. this.form.from_time = formatLocalDate(this.timeList[0]);
  408. this.form.to_time = formatLocalDate(this.timeList[1]);
  409. }else{
  410. this.form.from_time = "";
  411. this.form.to_time = "";
  412. delete this.form.from_time;
  413. delete this.form.to_time;
  414. }
  415. //2.开始验证
  416. this.$refs.form.validate(valid => {
  417. if (valid) {
  418. //3.验证用户是否已经存在
  419. this.$store.dispatch('userMember/verifyUserInfo',{user_name:this.form.user_name}).then(res=>{
  420. if(res.code==0){
  421. //如果code为0表示用户不存在,提交表单
  422. this.$store.dispatch('userMember/createUser',this.form).then(res=>{
  423. if(res.code==200){
  424. console.log(res);
  425. this.$message({
  426. type: 'success',
  427. message: '用户添加成功!'
  428. });
  429. this.goList();
  430. }else{
  431. this.$message({
  432. type: 'warning',
  433. message: res.message
  434. });
  435. }
  436. })
  437. }else if(res.code==200){
  438. //如果code==200 表示用户存在,阻止进一步提交
  439. this.$message({
  440. type: 'warning',
  441. message: '该账号已被注册,请更换其他账号!'
  442. });
  443. }
  444. }).catch(error=>{
  445. this.$message({
  446. type: 'warning',
  447. message: '网络错误,请重试!'
  448. });
  449. })
  450. }
  451. })
  452. },
  453. //提交表单 start ------------------------------------------------------------>
  454. //3.编辑表单 start ------------------------------------------------------------>
  455. //获得用户信息
  456. getUserInfo(){
  457. this.$store.dispatch('userMember/getUser',{id:this.editId}).then(res=>{
  458. console.log(res);
  459. //回显数据
  460. this.form.type_id = res.data.type_id;
  461. this.form.user_name = res.data.user_name;
  462. this.form.role_id = res.data.role_id;
  463. this.form.real_name = res.data.real_name;
  464. this.form.mobile = res.data.mobile;
  465. this.photoUrl = res.data.avatar;
  466. this.form.avatar = res.data.avatar;
  467. this.form.id_card = res.data.id_card;
  468. this.form.birthday = res.data.birthday;
  469. //还原有效期
  470. if(res.data.long_time==0){
  471. this.timeList = [
  472. res.data.from_time,
  473. res.data.to_time
  474. ]
  475. this.form.from_time = res.data.from_time;
  476. this.form.to_time = res.data.to_time;
  477. this.form.long_time = 0;
  478. }else{
  479. this.form.from_time = "";
  480. this.form.to_time = "";
  481. this.form.long_time = 1;
  482. }
  483. this.form.qq = res.data.qq;
  484. this.form.email = res.data.email;
  485. this.form.address = res.data.address;
  486. this.form.zip_code = res.data.zip_code;
  487. this.form.remark = res.data.remark;
  488. this.form.native_place_arr_id = res.data.native_place_arr_id;
  489. // 处理文件列表
  490. const fileArrayString = res.data.other; // 假设这是一个字符串格式的数组
  491. const fileArray = JSON.parse(fileArrayString); // 解析为数组
  492. this.form.other.push(...fileArray); // 将解析出来的值 push 到 this.form.other
  493. // 将文件列表赋值给 otherList,生成默认文件名
  494. this.otherList = fileArray.map((url, index) => ({
  495. name: `文件${index + 1}`, // 生成文件名
  496. url: url, // 文件的 URL
  497. status: 'success' // 设置状态为 success
  498. }));
  499. }).catch(error=>{
  500. this.$message({
  501. type: 'warning',
  502. message: '网络错误,请重试!'
  503. });
  504. })
  505. },
  506. //修改用户
  507. editData(){
  508. //1.格式化时间戳
  509. this.form.birthday = formatLocalDate(this.form.birthday);
  510. if(this.form.long_time==0){
  511. this.form.from_time = formatLocalDate(this.timeList[0]);
  512. this.form.to_time = formatLocalDate(this.timeList[1]);
  513. }else{
  514. this.form.from_time = "";
  515. this.form.to_time = "";
  516. }
  517. this.$refs.form.validate(valid => {
  518. if (valid) {
  519. //1.验证用户是否存在
  520. this.$store.dispatch('userMember/verifyUserInfo',{id:this.editId,user_name:this.form.user_name}).then(res=>{
  521. if(res.code==0){
  522. console.log(this.form);
  523. this.form.native_place_arr_id = JSON.parse(this.form.native_place_arr_id);
  524. //2.设置修改的用户id
  525. this.form.id = this.editId;
  526. //3.提交用户修改
  527. //如果code为0表示用户不存在,提交表单
  528. this.$store.dispatch('userMember/updateUser',this.form).then(res=>{
  529. console.log(res);
  530. this.$message({
  531. type: 'success',
  532. message: '用户添加成功!'
  533. });
  534. this.goList();
  535. })
  536. }else if(res.code==200){
  537. //如果code==200 表示用户存在,阻止进一步提交
  538. this.$message({
  539. type: 'warning',
  540. message: '该账号已被注册,请更换其他账号!'
  541. });
  542. }
  543. }).catch(error=>{
  544. this.$message({
  545. type: 'warning',
  546. message: '网络错误,请重试!'
  547. });
  548. })
  549. }
  550. })
  551. },
  552. //编辑表单 end ------------------------------------------------------------>
  553. goList(){
  554. this.$router.push({
  555. path: '/userList',
  556. });
  557. },
  558. },
  559. mounted(){
  560. this.getRoleList();
  561. //判断是新建还是回显
  562. if(this.$route.query.id!=undefined){
  563. this.editId = this.$route.query.id;
  564. console.log("编辑用户!")
  565. this.getUserInfo();
  566. }else{
  567. console.log("添加用户!")
  568. }
  569. //设置token
  570. this.setHeaders(); // 在组件挂载时设置 headers
  571. }
  572. };
  573. </script>
  574. <style scoped lang="less">
  575. .PasswordBox {
  576. display: flex;
  577. align-items: center;
  578. .el-form-item {
  579. flex: 1;
  580. }
  581. .PasswordTitle {
  582. width:120px;
  583. text-align: right;
  584. margin-right: 10px;
  585. margin-bottom:22px;
  586. }
  587. .PasswordBody {
  588. flex: 1;
  589. display: flex;
  590. align-items: center;
  591. }
  592. .show-pwd {
  593. margin-left: 10px;
  594. }
  595. }
  596. .longTimeCheckbox {
  597. margin-left: 10px;
  598. }
  599. //执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
  600. ::v-deep .custom-form-item > .el-form-item__label {
  601. line-height: 140px !important;
  602. }
  603. ::v-deep .custom-textarea .el-textarea__inner {
  604. resize: none; /* 禁止用户拖拽调整大小 */
  605. }
  606. ::v-deep .custom-align-right .el-form-item__label {
  607. text-align: right; /* 设置标签文字右对齐 */
  608. }
  609. ::v-deep .el-select {
  610. width: 100%; /* 禁止用户拖拽调整大小 */
  611. }
  612. //执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
  613. </style>