addJobHunting.vue 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187
  1. <template>
  2. <div class="mainBox">
  3. <!-- 浮动目录 -->
  4. <div class="floating-menu"
  5. style="position: fixed; top: 20%; right: 130px; transform: translate(-50%, -50%); z-index: 222; opacity: 0.8;">
  6. <div class="menu-item" @click="scrollToSection('personalInfo')">个人信息</div>
  7. <div class="menu-item" @click="scrollToSection('jobIntentions')">求职意向</div>
  8. <div class="menu-item" @click="scrollToSection('professionalSkills')">专业技能</div>
  9. <div class="menu-item" @click="scrollToSection('workExperience')">工作经验</div>
  10. <div class="menu-item" @click="scrollToSection('educationExperience')">教育经历</div>
  11. </div>
  12. <div class="layerBox">
  13. <div id="personalInfo">
  14. <tableTitle name="个人信息" />
  15. <!-- 个人信息表单内容 -->
  16. </div>
  17. <el-form :model="form" ref="form" :rules="formRules" label-position="left" label-width="120px">
  18. <div class="formDiv">
  19. <el-form-item label="头像:" class="custom-align-right" prop="imgUrl">
  20. <div class="uploaderBox">
  21. <el-upload class="avatar-uploader" action="#" :show-file-list="false" :before-upload="beforeAvatarUpload">
  22. <!-- <img v-if="imgUrl" :src="imgUrl" class="avatar">
  23. <i v-else class="el-icon-plus avatar-uploader-icon"></i> -->
  24. <!-- 预览图片 -->
  25. <img v-if="imgUrl" :src="imgUrl" class="avatar">
  26. <!-- 上传图标 -->
  27. <!-- <i v-else class="el-icon-plus avatar-uploader-icon"></i> -->
  28. <div v-else class="chooseImgDiv">
  29. <div>
  30. <img src="@/assets/public/upload/noImage.png">
  31. <div>选择图片</div>
  32. </div>
  33. </div>
  34. </el-upload>
  35. <div class="imgBox" style="color:red;margin-left: 00px ;margin-bottom: 0px; padding-top: 0px;">
  36. 请添加图片,上传格式要求jpg、gif、png,不大于500 k</div>
  37. </div>
  38. </el-form-item>
  39. <el-form-item label="姓名:" prop="name" class="custom-align-right">
  40. <template #label>
  41. <span class="askBox">
  42. 姓名:
  43. </span>
  44. </template>
  45. <el-input v-model="form.name" autocomplete="off" placeholder="请输入姓名"></el-input>
  46. </el-form-item>
  47. <div v-if="creatNews_user_type != 10000">
  48. <el-form-item label="展示名称:" prop="cat_arr_id" class="custom-align-right">
  49. <el-cascader :key="parentKey" v-model="form.cat_arr_id" placeholder="请选择要绑定的展示名称" :props="parentData"
  50. filterable clearable></el-cascader>
  51. </el-form-item>
  52. </div>
  53. <div v-if="creatNews_user_type == 10000">
  54. <el-form-item label="站点名称:" prop="cat_arr_id" class="custom-align-right">
  55. <el-cascader :key="parentKey" v-model="form.web_site_id" placeholder="请选择站点名称"
  56. :options="creatNews_nav_pool_arr" @change="creatNews_nav_pool_change_fun(form.web_site_id)" filterable
  57. clearable></el-cascader>
  58. </el-form-item>
  59. <el-form-item label="展示名称:" prop="cat_arr_id" class="custom-align-right">
  60. <el-cascader :key="parentKey_2" v-model="form.cat_arr_id" placeholder="请选择要绑定的父级导航" :props="parentData_2"
  61. filterable clearable></el-cascader>
  62. </el-form-item>
  63. </div>
  64. <el-form-item label="性别:" prop="sexy" class="custom-align-right">
  65. <el-radio-group v-model="form.sexy">
  66. <el-radio :label="1">男</el-radio>
  67. <el-radio :label="2">女</el-radio>
  68. </el-radio-group>
  69. </el-form-item>
  70. <el-form-item label="参加工作时间:" prop="jobtime" class="custom-align-right">
  71. <el-date-picker v-model="form.jobtime" type="date" placeholder="选择参加工作时间">
  72. </el-date-picker>
  73. </el-form-item>
  74. <!-- {{ years }}
  75. {{ form.experience }} -->
  76. <el-form-item label="工作经验:" prop="experience" class="custom-align-right" style="width: 100%;">
  77. <el-select v-model="form.experience" placeholder="请选择工作经验">
  78. <el-option v-for="item in years" :key="item.evalue" :label="item.ename" :value="item.evalue"></el-option>
  79. </el-select>
  80. </el-form-item>
  81. <el-form-item label="手机号:" prop="phone" class="custom-align-right">
  82. <el-input v-model="form.phone" autocomplete="off" placeholder="请输入手机号"></el-input>
  83. </el-form-item>
  84. <el-form-item label="微信号:" prop="wx" class="custom-align-right">
  85. <el-input v-model="form.wx" autocomplete="off" placeholder="请输入微信号"></el-input>
  86. </el-form-item>
  87. <el-form-item label="出生年月:" prop="validity" class="custom-align-right">
  88. <el-date-picker v-model="form.birth" type="date" placeholder="选择出生年月">
  89. </el-date-picker>
  90. </el-form-item>
  91. <el-form-item label="最高学历:" class="custom-align-right" style="width: 100%;">
  92. <el-select v-model="form.educational" placeholder="请选择最高学历" @change='changeCompanyNature()'>
  93. <el-option v-for="item in educations" :key="item.evalue" :label="item.ename"
  94. :value="item.evalue"></el-option>
  95. </el-select>
  96. </el-form-item>
  97. <el-form-item label="政治面貌:" class="custom-align-right" style="width: 100%;">
  98. <el-select v-model="form.politic" placeholder="请选择政治面貌">
  99. <el-option label="群众" :value="1"></el-option>
  100. <el-option label="团员" :value="2"></el-option>
  101. <el-option label="党员" :value="3"></el-option>
  102. <el-option label="其他" :value="4"></el-option>
  103. </el-select>
  104. </el-form-item>
  105. <el-form-item label="籍贯:" prop="origin" class="custom-align-right">
  106. <el-input v-model="form.origin" autocomplete="off" placeholder="请输入籍贯"></el-input>
  107. </el-form-item>
  108. <el-form-item label="语言能力:" class="custom-align-right" style="width: 100%; display: inline;">
  109. <el-select v-model="form.language" placeholder="请选择语种" style="width: 40%;" @change='changeCompanyNature()'>
  110. <el-option v-for="item in languages" :key="item.evalue" :label="item.ename"
  111. :value="item.evalue"></el-option>
  112. </el-select>
  113. <el-select v-model="form.level" placeholder="请选择掌握程度" style="width: 40%;" @change='changeCompanyNature()'>
  114. <el-option v-for="item in languagetypes" :key="item.evalue" :label="item.ename"
  115. :value="item.evalue"></el-option>
  116. </el-select>
  117. </el-form-item>
  118. <!-- <el-divider content-position="right"> </el-divider> -->
  119. <div id="jobIntentions" style="margin: 10px 0px;">
  120. <tableTitle name="求职意向" />
  121. <!-- 求职意向表单内容 -->
  122. </div>
  123. <el-form-item label="工作地点:" prop="city_arr_id" class="custom-align-right">
  124. <el-cascader :key="cascaderKey" v-model="form.city_arr_id" placeholder="请选择工作地点" :props="cityData"
  125. filterable clearable></el-cascader>
  126. </el-form-item>
  127. <el-form-item label="职位性质:" class="custom-align-right" style="width: 100%;">
  128. <el-select v-model="form.politic" placeholder="请选择职位性质" @change='changeCompanyNature()'>
  129. <el-option v-for="item in natures" :key="item.evalue" :label="item.ename"
  130. :value="item.evalue"></el-option>
  131. </el-select>
  132. </el-form-item>
  133. <el-form-item label="所属行业:" prop="industry" class="custom-align-right" style="width: 100%;">
  134. <el-select v-model="form.industry" placeholder="请选择所属行业">
  135. <el-option v-for="item in jobIndustry" :key="item.hyid" :label="item.hyname"
  136. :value="item.hyid"></el-option>
  137. </el-select>
  138. </el-form-item>
  139. <el-form-item label="职位类别:" prop="job" class="custom-align-right">
  140. <el-select v-model="form.job" placeholder="请选择职位类别">
  141. <el-option v-for="item in jobPosition" :key="item.zwid" :label="item.zwname"
  142. :value="item.zwid"></el-option>
  143. </el-select>
  144. </el-form-item>
  145. <el-form-item label="具体职位:" prop="job_name_get" class="custom-align-right">
  146. <el-select v-model="form.job_name_get" placeholder="请选择具体职位">
  147. <el-option v-for="item in jobPosition1" :key="item.zwid" :label="item.zwname"
  148. :value="item.zwid"></el-option>
  149. </el-select>
  150. </el-form-item>
  151. <el-form-item label="公司性质:" v-if="jobNature" prop="company_nature" class="custom-align-right">
  152. <el-select v-model="form.company_nature" placeholder="请选择公司性质" @change='changeCompanyNature()'>
  153. <el-option v-for="item in jobNature" :key="item.evalue" :label="item.nature_name" :value="item.evalue">
  154. </el-option>
  155. </el-select>
  156. </el-form-item>
  157. <el-form-item label="薪资范围:" prop="salary" class="custom-align-right">
  158. <el-select v-model="form.salary" placeholder="请选择薪资范围" @change='changeCompanyNature()'>
  159. <el-option v-for="item in incomes" :key="item.evalue" :label="item.ename"
  160. :value="item.evalue"></el-option>
  161. </el-select>
  162. </el-form-item>
  163. <el-form-item label="个人评价:" prop="self_evaluation" class="custom-align-right">
  164. <el-input v-model="form.self_evaluation" autocomplete="off" type="textarea" aria-rowspan="6"
  165. placeholder="请输入个人评价"></el-input>
  166. </el-form-item>
  167. <!-- <el-divider content-position="right"> </el-divider> -->
  168. <div id="professionalSkills">
  169. <tableTitle name="专业技能" />
  170. <!-- 专业技能表单内容 -->
  171. </div>
  172. <el-form-item style="margin: 0px;">
  173. <el-button type="primary" @click="addSkill" style="display:inline-block;float: right;margin-bottom: 0px;">
  174. +
  175. 添加</el-button>
  176. </el-form-item>
  177. <el-form-item v-for="(item, index) in form.skillList" :key="index" :label="'技能' + (index + 1) + ':'"
  178. prop="skillList" class="custom-align-right">
  179. <el-input v-model="form.skillList[index].skill" autocomplete="off" placeholder="请输入专业技能"></el-input>
  180. </el-form-item>
  181. <div id="workExperience">
  182. <tableTitle name="工作经历" />
  183. </div>
  184. <el-form-item style="margin: 0px;">
  185. <el-button type="primary" @click="addExperience"
  186. style="display:inline-block ;float: right;margin-bottom: 0px;">
  187. +
  188. 添加</el-button>
  189. </el-form-item>
  190. <div v-for="(item, index) in form.job_experience" :key="index">
  191. <el-form-item label="公司名称:" prop="company_name" class="custom-align-right" style="width: 100%;">
  192. <el-input v-model="form.job_experience[index].company_name" autocomplete="off"
  193. placeholder="请输入公司名称"></el-input>
  194. </el-form-item>
  195. <el-form-item label="所属行业:" prop="job_industry" class="custom-align-right" style="width: 100%;">
  196. <el-select v-model="form.job_experience[index].job_industry" placeholder="请选择所属行业"
  197. @change='changeCompanyNature()'>
  198. <el-option v-for="item in jobIndustry" :key="item.hyid" :label="item.hyname"
  199. :value="item.hyid"></el-option>
  200. </el-select>
  201. </el-form-item>
  202. <el-form-item label="职位名称:" prop="job_name" class="custom-align-right">
  203. <el-select v-model="form.job_experience[index].job_name" placeholder="请选择职位名称"
  204. @change='changeCompanyNature()'>
  205. <el-option v-for="item in jobPosition" :key="item.zwid" :label="item.zwname"
  206. :value="item.zwid"></el-option>
  207. </el-select>
  208. </el-form-item>
  209. <el-form-item label="所属部门:" prop="department" class="custom-align-right">
  210. <el-input v-model="form.job_experience[index].department" autocomplete="off"
  211. placeholder="请输入所属部门"></el-input>
  212. </el-form-item>
  213. <el-form-item label="在职时间:" prop="job_timeList" class="custom-align-right">
  214. <el-date-picker v-model="form.job_experience[index].job_timeList" type="daterange" range-separator="至"
  215. start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions">
  216. </el-date-picker>
  217. </el-form-item>
  218. <el-form-item label="工作内容:" prop="job_content" class="custom-align-right">
  219. <el-input v-model="form.job_experience[index].job_content" autocomplete="off" type="textarea"
  220. aria-rowspan="6" placeholder="请输入工作内容"></el-input>
  221. </el-form-item>
  222. <el-form-item label="工作业绩:" prop="performance" class="custom-align-right">
  223. <el-input v-model="form.job_experience[index].performance" autocomplete="off" type="textarea"
  224. aria-rowspan="6" placeholder="请输入工作业绩"></el-input>
  225. </el-form-item>
  226. <el-divider></el-divider>
  227. </div>
  228. <div id="educationExperience">
  229. <tableTitle name="教育经历" />
  230. <!-- 教育经历表单内容 -->
  231. </div>
  232. <el-form-item style="margin: 0px;">
  233. <el-button type="primary" @click="addEducation"
  234. style="display:inline-block ;float: right;margin-bottom: 0px;">
  235. +
  236. 添加</el-button>
  237. </el-form-item>
  238. <div v-for="(item, index) in form.education_experience" :key="index">
  239. <el-form-item label="学校名称:" prop="school_name" class="custom-align-right">
  240. <el-input v-model="form.education_experience[index].school_name" autocomplete="off"
  241. placeholder="请输入学校名称"></el-input>
  242. </el-form-item>
  243. <el-form-item label="学历:" prop="school_education" class="custom-align-right" style="width: 100%;">
  244. <el-select v-model="form.education_experience[index].school_education" placeholder="请选择学历"
  245. @change='changeCompanyNature()'>
  246. <el-option v-for="item in educations" :key="item.evalue" :label="item.ename"
  247. :value="item.evalue"></el-option>
  248. </el-select>
  249. </el-form-item>
  250. <el-form-item label="专业:" prop="school_major" class="custom-align-right">
  251. <el-input v-model="form.education_experience[index].school_major" autocomplete="off"
  252. placeholder="请输入专业"></el-input>
  253. </el-form-item>
  254. <el-form-item label="时间段:" prop="school_timeList" class="custom-align-right">
  255. <el-date-picker v-model="form.education_experience[index].school_timeList" type="daterange"
  256. range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions">
  257. </el-date-picker>
  258. </el-form-item>
  259. <el-form-item label="在校经历:" prop="school_experience" class="custom-align-right">
  260. <el-input v-model="form.education_experience[index].school_experience" autocomplete="off" type="textarea"
  261. aria-rowspan="6" placeholder="请输入在校经历"></el-input>
  262. </el-form-item>
  263. <!-- <el-divider content-position="right"> </el-divider> -->
  264. </div>
  265. </div>
  266. </el-form>
  267. </div>
  268. <div class="bottomBtnBox">
  269. <el-button type="info" @click="returnPage">返回</el-button>
  270. <el-button type="primary" @click="editToServe" v-if="editStatus == true">确定</el-button>
  271. <el-button type="primary" @click="addToServe" v-else>发布求职</el-button>
  272. </div>
  273. </div>
  274. </template>
  275. <script>
  276. import { getWebSiteId, getUseType } from '@/utils/auth'
  277. //表格标题
  278. import tableTitle from './components/tableTitle';
  279. //引入公用样式
  280. import '@/styles/global.less';
  281. //格式化时间
  282. import { formatLocalDate } from '@/utils/public';
  283. export default {
  284. components: {
  285. tableTitle
  286. },
  287. data() {
  288. //0.全局操作 start ------------------------------------------------------------>
  289. //表单验证
  290. const validateEmpty = (rule, value, callback) => {
  291. console.log(value, '-------------value--------')
  292. console.log(rule, '-------------rule--------')
  293. if (value == '') {
  294. callback(new Error('该项不能为空!'))
  295. } else {
  296. callback()
  297. }
  298. }
  299. const validateArray = (rule, value, callback) => {
  300. console.log(value, '-------------value--------')
  301. if (value.length == 0) {
  302. callback(new Error('该项不能为空!'))
  303. } else {
  304. callback()
  305. }
  306. }
  307. const validateArraySkill = (rule, value, callback) => {
  308. console.log(value, '-------------value--------')
  309. //查看value中的skill是不是为空
  310. let $values = value.filter(item => {
  311. return item.skill == ''
  312. })
  313. if ($values.length > 0) {
  314. callback(new Error('技能项不能有空!'))
  315. } else {
  316. callback()
  317. }
  318. }
  319. const validateCompanyNameEmpty = (rule, value, callback) => {
  320. console.log(value, '-------------value--------')
  321. if (value.length == 0) {
  322. callback(new Error('该项不能为空!'))
  323. }
  324. value.forEach(item => {
  325. if (item == '') {
  326. callback(new Error('公司名称不能为空!'))
  327. }
  328. })
  329. callback()
  330. }
  331. const validateJobIndustryEmpty = (rule, value, callback) => {
  332. console.log(value, '-------------value--------')
  333. if (value == '') {
  334. callback(new Error('该项不能为空!'))
  335. }
  336. value.forEach(item => {
  337. if (item == '') {
  338. callback(new Error('所属行业不能为空!'))
  339. }
  340. })
  341. callback()
  342. }
  343. const validateJobContentEmpty = (rule, value, callback) => {
  344. console.log(value, '-------------value--------')
  345. if (value.length == 0) {
  346. callback(new Error('该项不能为空!'))
  347. }
  348. value.forEach(item => {
  349. if (item == '') {
  350. callback(new Error('工作内容不能为空!'))
  351. }
  352. })
  353. callback()
  354. }
  355. const validateJobNameEmpty = (rule, value, callback) => {
  356. console.log(value, '--------1-----value--------')
  357. if (value == '') {
  358. callback(new Error('该项不能为空!'))
  359. }
  360. value.forEach(item => {
  361. if (item == '') {
  362. callback(new Error('职位名称不能为空!'))
  363. }
  364. })
  365. callback()
  366. }
  367. const validateJobTimeListEmpty = (rule, value, callback) => {
  368. console.log(value, '-------------value--------')
  369. if (value == '') {
  370. callback(new Error('该项不能为空!'))
  371. }
  372. value.forEach(item => {
  373. if (item == '') {
  374. callback(new Error('工作时间不能为空!'))
  375. }
  376. })
  377. callback()
  378. }
  379. const validateNumber = (rule, value, callback) => {
  380. console.log(value, '-------------value--------')
  381. if (value == '') {
  382. callback(new Error('该项不能为空!'))
  383. } else if (isNaN(value)) {
  384. }
  385. }
  386. let self = this;
  387. //0.全局操作 end ------------------------------------------------------------>
  388. return {
  389. jobIndustry: {},
  390. jobNature: [],
  391. jobPosition: {},
  392. jobEnum: {},
  393. educations: [],
  394. languages: [],
  395. languagetypes: [],
  396. natures: [],
  397. maritals: [],
  398. incomes: [],
  399. timeList: [],
  400. // imgurl: "http://img.bjzxtw.org.cn/dev/image/jpeg/20250220/1740044079754901.png",
  401. imgUrl: "",
  402. websiteid: 0,
  403. cascaderKey: 0,//弹窗用的key
  404. creatNews_pid_num: "0",//请求子导航用的pid
  405. creatNews_nav_pool_arr: [],//
  406. creatNews_add_nav_pool_arr: [],//
  407. creatNews_son_website_id_num: "",
  408. checked: false,
  409. formLabelWidth: '80px',//表单的长度
  410. //1.表单项 start ------------------------------------------------------------>
  411. editStatus: false,
  412. tableDivTitle: "添加求职",
  413. disclaimer: true,//免责声明
  414. //提交表单
  415. creatNews_user_type: 0,//判断用户类型'
  416. form: {
  417. experience: '',//工作经验
  418. industry: 1,//行业
  419. job: 1,//职位
  420. self_evaluation: '',//自我评价
  421. city_arr_id: [],
  422. skillList: [{ 'skill': '' }],
  423. job_experience: [{
  424. company_name: '',
  425. job_industry: 1,
  426. job_name: 1,
  427. department: '',
  428. // job_timeList: ['2025-02-21 00:00:00', '2025-02-29 00:00:00'],
  429. job_timeList: [],
  430. performance: '',
  431. job_content: ''
  432. }],//工作经验
  433. education_experience: [{
  434. school_name: '',
  435. school_education: '',
  436. school_major: '',
  437. school_timeList: '',
  438. school_experience: ''
  439. }],//教育经历
  440. // 用于存储所有专业技能
  441. slelf_evaluation: '',//自我评价
  442. cat_arr_id: [],//导航池名称
  443. web_site_id: 0,
  444. name: "",
  445. sexy: 1,
  446. // jobtime: "2025-02-21 00:00:00",//工作时间
  447. jobtime: "",//工作时间
  448. origin: "",
  449. //校验专用
  450. industry: '',//行业
  451. job: '',//职位名称
  452. company_name: [],//公司名称
  453. job_industry: [],//行业
  454. job_name: [],//职位名称
  455. department: [],//所属部门
  456. job_timeList: [],//工作时间
  457. job_content: [],//工作内容
  458. job_name_get: '',
  459. },
  460. //1.2 表单验证规则
  461. formRules: {
  462. skillList: [{ required: true, trigger: 'blur', validator: validateArraySkill }],
  463. salary: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  464. //求职名称不能为空
  465. name: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  466. imgUrl: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  467. sexy: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  468. jobtime: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  469. origin: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  470. city_arr_id: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  471. industry: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  472. job: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  473. slelf_evaluation: [{ required: true, trigger: 'blur', validator: validateEmpty }],
  474. company_name: [{ required: true, trigger: 'blur', validator: validateCompanyNameEmpty }],
  475. job_industry: [{ required: true, trigger: 'blur', validator: validateJobIndustryEmpty }],
  476. job_name: [{ required: true, trigger: 'blur', validator: validateJobNameEmpty }],
  477. job_timeList: [{ required: true, trigger: 'blur', validator: validateJobTimeListEmpty }],
  478. job_content: [{ required: true, trigger: 'blur', validator: validateJobContentEmpty }],
  479. cat_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
  480. },
  481. //1.3富文本编辑器配置
  482. //1.4图片上传
  483. //获取父级导航池
  484. parentKey: 0,//获取父级导航
  485. parentData: {
  486. checkStrictly: true,
  487. lazy: true,
  488. async lazyLoad(node, resolve) {
  489. const { level, data } = node;
  490. if (data && data.children && data.children.length !== 0) {
  491. return resolve(node)
  492. }
  493. console.log(level)
  494. let parentId = level == 0 ? 0 : data.value
  495. let parames = {
  496. 'pid': parentId
  497. }
  498. self.$store.dispatch('pool/categoryList', parames).then(res => {
  499. if (res.data) {
  500. const nodes = res.data.map(item => ({
  501. value: item.id,
  502. label: item.name,
  503. leaf: level >= 3,
  504. children: []
  505. }))
  506. resolve(nodes)
  507. }
  508. })
  509. }
  510. },
  511. //时间跨度
  512. pickerOptions: {
  513. selectableRange: '1900-01-01 to 2100-12-31', // 允许选择的日期范围
  514. // disabledDate(time) {
  515. // return time.getTime() < Date.now() - 86400000; // 禁用今天之前的日期
  516. // },
  517. },
  518. parentKey_2: 0,//获取父级导航
  519. parentData_2: {
  520. checkStrictly: true,
  521. lazy: true,
  522. async lazyLoad(node, resolve) {
  523. const { level, data } = node;
  524. if (data && data.children && data.children.length !== 0) {
  525. return resolve(node)
  526. }
  527. let parentId;
  528. if (data != undefined) {
  529. parentId = data.value;
  530. } else {
  531. parentId = self.creatNews_pid_num.toString();
  532. }
  533. let parames = {
  534. 'website_id': self.form.web_site_id ? self.form.web_site_id : self.websiteid,
  535. 'pid': parentId
  536. }
  537. self.$store.dispatch('pool/get_creatNews_nav_son_actions', parames).then(res => {
  538. if (res.data) {
  539. const nodes = res.data.map(item => ({
  540. value: item.category_id,
  541. label: item.name,
  542. leaf: level >= 3,
  543. children: []
  544. }))
  545. resolve(nodes)
  546. }
  547. })
  548. }
  549. },
  550. cityData: {
  551. checkStrictly: true,
  552. lazy: true,
  553. async lazyLoad(node, resolve) {
  554. const { level, data } = node;
  555. if (data && data.children && data.children.length !== 0) {
  556. return resolve(node)
  557. }
  558. console.log(level, '====level-----')
  559. let parentId = level == 0 ? 0 : data.value
  560. let parames = {
  561. 'pid': parentId
  562. }
  563. self.$store.dispatch('pool/getcityList', parames).then(res => {
  564. if (res.data) {
  565. const nodes = res.data.map(item => ({
  566. value: item.id,
  567. label: item.name,
  568. leaf: level >= 3,
  569. children: []
  570. }))
  571. resolve(nodes)
  572. }
  573. })
  574. }
  575. },
  576. inputList: [
  577. { value: '' }
  578. ]
  579. //表单项 end ------------------------------------------------------------>
  580. };
  581. },
  582. methods: {
  583. changeCompanyNature(val) {
  584. this.$forceUpdate();
  585. },
  586. getJobHuntingData() {
  587. this.$store.dispatch('news/getJobHuntingData', {}).then(res => {
  588. if (res.code == 200) {
  589. this.jobEnum = res.data.jobEnum;
  590. this.educations = this.jobEnum.filter(item => item.egroup === 'education');
  591. this.languages = this.jobEnum.filter(item => item.egroup === 'language');
  592. this.languagetypes = this.jobEnum.filter(item => item.egroup === 'languagetype');
  593. this.natures = this.jobEnum.filter(item => item.egroup === 'nature');
  594. this.maritals = this.jobEnum.filter(item => item.egroup === 'marital');
  595. this.incomes = this.jobEnum.filter(item => item.egroup === 'income');
  596. this.years = this.jobEnum.filter(item => item.egroup === 'years');
  597. this.jobIndustry = res.data.jobIndustry;
  598. this.jobNature = res.data.jobNature;
  599. this.jobPosition = res.data.jobPosition.filter(item => item.zwpid == 0);
  600. //具体职位
  601. this.jobPosition1 = res.data.jobPosition.filter(item => item.zwpid !== 0);
  602. }
  603. })
  604. },
  605. // ... 其他方法
  606. addSkill() {
  607. //判断skill是不是为空,为空则不能添加
  608. const hasEmptySkill = this.form.skillList.some(item => {
  609. if (item.skill == '') {
  610. this.$message.error('请先填写专业技能');
  611. return true; // 返回 true 表示找到了空的 skill
  612. }
  613. return false; // 返回 false 表示没有找到空的 skill
  614. });
  615. if (hasEmptySkill) {
  616. return; // 如果有空的 skill,则提前结束 addSkill 方法
  617. }
  618. this.form.skillList.push({ skill: '' });
  619. },
  620. addExperience() {
  621. const hasEmptyExperience = this.form.job_experience.some(item => {
  622. if (item.company_name == '' || item.job_industry == '' || item.job_name == '' || item.job_timeList == '' || item.job_content == '') {
  623. this.$message.error('请先填写工作经历');
  624. return true; // 返回 true 表示找到了空的 skill
  625. }
  626. return false;
  627. })
  628. if (hasEmptyExperience) {
  629. return; // 如果有空的 skill,则提前结束 addSkill 方法
  630. }
  631. this.form.job_experience.push({
  632. company_name: '',
  633. job_industry: '',
  634. job_name: '',
  635. department: '',
  636. job_timeList: '',
  637. performance: '',
  638. job_content: ''
  639. });
  640. },
  641. addEducation() {
  642. const hasEmptyEducation = this.form.education_experience.some(item => {
  643. if (item.school_name == '') {
  644. this.$message.error('请先填写学校名称');
  645. return true; // 返回 true 表示找到了空的 skill
  646. }
  647. })
  648. if (hasEmptyEducation) {
  649. return; // 如果有空的 skill,则提前结束 addSkill 方法
  650. }
  651. this.form.education_experience.push({
  652. school_name: '',
  653. degree: '',
  654. major: '',
  655. graduation_time: ''
  656. });
  657. },
  658. scrollToSection(id) {
  659. const element = document.getElementById(id);
  660. if (element) {
  661. element.scrollIntoView({ behavior: 'smooth' });
  662. }
  663. },
  664. //1.提交表单 start ------------------------------------------------------------>
  665. //1.1 直接上传图片
  666. beforeAvatarUpload(file) {
  667. const isJPG = file.type === 'image/jpeg';
  668. const isPNG = file.type === 'image/png';
  669. const isLt2M = file.size / 1024 / 1024 < 2;
  670. if (!isJPG && !isPNG) {
  671. this.$message.error('上传缩略图只能是 JPG 或 PNG 格式!');
  672. return false;
  673. }
  674. if (!isLt2M) {
  675. this.$message.error('上传缩略图大小不能超过 2MB!');
  676. return false;
  677. }
  678. const formData = new FormData();
  679. formData.append('file', file);
  680. this.$store.dispatch('pool/uploadFile', formData).then(res => {
  681. this.imgUrl = res.data.imgUrl;//显示缩略图
  682. this.form.imgUrl = res.data.imgUrl;//提供表单地址
  683. // this.$set(this, 'imgUrl', res.data.imgUrl); // 设置 imgUrl
  684. // this.$set(this.form, 'imgurl', res.data.imgUrl); // 设置 form.imgurl
  685. console.log(res.data.imgUrl)
  686. console.log(this.imgurl, '-------------imgurl-----2---')
  687. console.log(this.form.imgUrl, '-------------form.imgurl--------')
  688. })
  689. // 阻止默认的上传行为
  690. return false;
  691. },
  692. //1.2 提交表单
  693. addToServe() {
  694. //先进行验证
  695. console.log(this.form, '-------------form1--------');
  696. this.$refs.form.validate(valid => {
  697. if (valid) {
  698. // 创建 form 对象的深拷贝
  699. const formCopy = JSON.parse(JSON.stringify(this.form));
  700. // 在副本上进行 JSON 转换
  701. formCopy.job_experience = JSON.stringify(formCopy.job_experience);
  702. formCopy.education_experience = JSON.stringify(formCopy.education_experience);
  703. formCopy.skillList = JSON.stringify(formCopy.skillList);
  704. formCopy.city_arr_id = JSON.stringify(formCopy.city_arr_id);
  705. formCopy.cat_arr_id = JSON.stringify(formCopy.cat_arr_id);
  706. formCopy.website_id = formCopy.web_site_id == 0 ? this.websiteid : formCopy.web_site_id;
  707. // 去掉 formCopy.web_site_id
  708. delete formCopy.web_site_id;
  709. if (formCopy.website_id == 0) {
  710. this.$message.error('请选择站点名称');
  711. return;
  712. }
  713. if (formCopy.jobtime != '' && formCopy.jobtime != null && formCopy.jobtime != undefined) {
  714. formCopy.jobtime = formatLocalDate(formCopy.jobtime);
  715. } else {
  716. formCopy.jobtime = null;
  717. }
  718. console.log(formCopy.birth, "-----------------birth----------");
  719. if (formCopy.birth != '' && formCopy.birth != null && formCopy.birth != undefined) {
  720. formCopy.birth = formatLocalDate(formCopy.birth);
  721. } else {
  722. formCopy.birth = null;
  723. }
  724. formCopy.job_timeList.forEach(item => {
  725. item = formatLocalDate(item);
  726. });
  727. console.log(new Date().getTime(), '-------------------校验结束------------------');
  728. //判断用户身份
  729. if (this.creatNews_user_type == 10000) {
  730. console.log("用户身份为管理员,无需审核直接发布!")
  731. this.form.status = 2;
  732. } else {
  733. console.log("用户身份为其他用户,提交到审核!")
  734. this.form.status = 1;
  735. }
  736. this.$store.dispatch('news/addJobHunting', formCopy).then(res => {
  737. if (res.code == 200) {
  738. //汇报结果
  739. this.$message({
  740. type: 'success',
  741. message: '已成功添加求职!'
  742. });
  743. this.cleatForm(2);
  744. //返回列表页
  745. this.returnPage()
  746. } else {
  747. this.$message({
  748. type: 'error',
  749. message: "求职发布失败,请稍后再试!"
  750. });
  751. }
  752. }).catch(() => {
  753. this.$message({
  754. type: 'info',
  755. message: '网络错误,请重试!'
  756. });
  757. })
  758. }
  759. })
  760. },
  761. //1.3 清理表单
  762. cleatForm(type) {
  763. this.form = {
  764. title: '',//求职标题
  765. islink: 0,//是否使用外链 0非 1是
  766. linkurl: "",//外链地址
  767. //1.2没有使用外链
  768. cat_arr_id: '',//导航池名称
  769. level: "",//推荐等级
  770. web_site_id: 0,
  771. name: "",
  772. sexy: 1,
  773. jobtime: "",//工作时间
  774. //校验专用
  775. company_name: [],//公司名称
  776. job_industry: [],//行业
  777. job_name: [],//职位名称
  778. department: [],//所属部门
  779. job_timeList: [],//工作时间
  780. job_content: [],//工作内容
  781. };
  782. this.imgUrl = "";
  783. },
  784. //提交表单 end ------------------------------------------------------------>
  785. //2.跳转操作 start ------------------------------------------------------------>
  786. returnPage() {
  787. this.$router.push({
  788. path: '/jobHuntingList',
  789. });
  790. },
  791. //跳转操作 end ------------------------------------------------------------>
  792. //3.回显操作 ------------------------------------------------------------>
  793. //3.1回显数据
  794. getMainData() {
  795. let data = {
  796. id: this.$route.query.id
  797. };
  798. this.$store.dispatch('news/getJobHuntingInfo', data).then(res => {
  799. console.log(res);
  800. this.form.cat_arr_id = Array.isArray(res.data.cat_arr_id) ? res.data.cat_arr_id : JSON.parse(res.data.cat_arr_id);
  801. this.parentKey += 1; // 触发级联选择器重新加载
  802. this.loadCascaderPath(this.form.cat_arr_id); // 加载路径数据
  803. this.form.name = res.data.name;
  804. this.form.sexy = res.data.sexy;
  805. this.form.age = res.data.age;
  806. this.form.phone = res.data.phone;
  807. this.form.email = res.data.email;
  808. this.form.wx = res.data.wx;
  809. this.form.company_nature = res.data.company_nature;
  810. this.form.salary = res.data.salary;
  811. this.form.self_evaluation = res.data.self_evaluation;
  812. this.form.job = parseInt(res.data.job);
  813. this.form.industry = res.data.industry;
  814. this.form.experience = res.data.experience;
  815. this.form.educational = res.data.educationa == null ? "" : parseInt(res.data.educational);
  816. this.form.politic = res.data.politic;
  817. this.form.language = res.data.language;
  818. this.form.level = res.data.level;
  819. this.form.address = res.data.address;
  820. this.form.content = res.data.content;
  821. this.form.imgUrl = res.data.imgurl;
  822. this.imgUrl = res.data.imgurl;
  823. this.form.web_site_id = res.data.website_id;
  824. this.form.jobtime = res.data.jobtime ? new Date(res.data.jobtime) : '';
  825. this.form.birth = res.data.birth ? new Date(res.data.birth) : '';
  826. this.form.origin = res.data.origin;
  827. this.form.city_arr_id = Array.isArray(res.data.city_arr_id) ? res.data.city_arr_id : JSON.parse(res.data.city_arr_id);
  828. this.form.job_experience = JSON.parse(res.data.job_experience);
  829. this.form.education_experience = JSON.parse(res.data.education_experience);
  830. this.form.skillList = JSON.parse(res.data.skillList);
  831. this.form.job_name_get = res.data.job_name_get == null ? '' : parseInt(res.data.job_name_get);
  832. }).catch(() => {
  833. this.$message({
  834. type: 'info',
  835. message: '网络错误,请重试!'
  836. });
  837. })
  838. },
  839. async loadCascaderPath(path) {
  840. for (let i = 0; i < path.length; i++) {
  841. const parentId = path[i - 1] || 0; // 获取当前层级的父级ID
  842. const level = i; // 当前层级的索引
  843. await this.$store.dispatch('pool/categoryList', { pid: parentId })
  844. .then((res) => {
  845. const nodes = res.data.map(item => ({
  846. value: item.id,
  847. label: item.name,
  848. leaf: level >= 3, // 假设4层结构,设置叶子节点标记
  849. }));
  850. // 级联选择器加载数据
  851. if (level === path.length - 1) {
  852. this.form.cat_arr_id = path; // 确保最后一级路径正确设置
  853. this.parentKey += 1; // 强制刷新 cascader
  854. }
  855. });
  856. }
  857. },
  858. //1.3提交修改
  859. editToServe() {
  860. //提交之前先判断是否为外链
  861. //如果使用了外链,清理掉除了外链以外的内容
  862. //添加要修改的id
  863. this.form.id = this.editId;
  864. //先进行验证
  865. let startTime = new Date().getTime();
  866. console.log(startTime, '-------------------开始------------------');
  867. this.$refs.form.validate(valid => {
  868. //记录开始时间
  869. let startTime1 = new Date().getTime();
  870. console.log(startTime1, '-------------------校验开始------------------');
  871. if (valid) {
  872. console.log(this.form)
  873. // 创建 form 对象的深拷贝
  874. const formCopy = JSON.parse(JSON.stringify(this.form));
  875. // 在副本上进行 JSON 转换
  876. formCopy.job_experience = JSON.stringify(formCopy.job_experience);
  877. formCopy.education_experience = JSON.stringify(formCopy.education_experience);
  878. formCopy.skillList = JSON.stringify(formCopy.skillList);
  879. formCopy.city_arr_id = JSON.stringify(formCopy.city_arr_id);
  880. formCopy.cat_arr_id = JSON.stringify(formCopy.cat_arr_id);
  881. formCopy.website_id = formCopy.web_site_id == 0 ? this.websiteid : formCopy.web_site_id;
  882. // 去掉 formCopy.web_site_id
  883. delete formCopy.web_site_id;
  884. if (formCopy.website_id == 0) {
  885. this.$message.error('请选择站点名称');
  886. return;
  887. }
  888. if (formCopy.jobtime != '' && formCopy.jobtime != null && formCopy.jobtime != undefined) {
  889. formCopy.jobtime = formatLocalDate(formCopy.jobtime);
  890. } else {
  891. formCopy.jobtime = null;
  892. }
  893. console.log(formCopy.birth, "-----------------birth----------");
  894. if (formCopy.birth != '' && formCopy.birth != null && formCopy.birth != undefined) {
  895. formCopy.birth = formatLocalDate(formCopy.birth);
  896. } else {
  897. formCopy.birth = null;
  898. }
  899. formCopy.job_timeList.forEach(item => {
  900. item = formatLocalDate(item);
  901. });
  902. console.log(new Date().getTime(), '-------------------校验结束------------------');
  903. //判断用户身份
  904. if (this.creatNews_user_type == 10000) {
  905. console.log("用户身份为管理员,无需审核直接发布!")
  906. this.form.status = 2;
  907. } else {
  908. console.log("用户身份为其他用户,提交到审核!")
  909. this.form.status = 1;
  910. }
  911. this.$store.dispatch('news/updateJobHunting', formCopy).then(res => {
  912. //记录结束时间
  913. let endTime = new Date().getTime(); //计算时间差
  914. console.log(endTime, '-------------------结束------------------');
  915. let time = endTime - this.startTime;
  916. //记录时间差
  917. console.log('时间差'.time, '------------------2--------');
  918. if (res.code != 200) {
  919. this.$message.error("修改失败,请稍后再试!");
  920. } else {
  921. //汇报结果
  922. this.$message({
  923. type: 'success',
  924. message: '已成功编辑求职!'
  925. });
  926. this.cleatForm(2);
  927. //返回列表页
  928. this.returnPage()
  929. }
  930. }).catch(() => {
  931. this.$message({
  932. type: 'info',
  933. message: '网络错误,请重试!'
  934. });
  935. })
  936. }
  937. })
  938. },
  939. //跳转操作 end ------------------------------------------------------------>
  940. get_creatNews_form_id_fun() {//判断用户类型ajax
  941. this.$store.dispatch('public/getInfo').then(res => {
  942. // console.log("res======",res)
  943. // this.form.user_type = res.data.type_id;
  944. }).catch(() => {
  945. this.$message({
  946. type: 'info',
  947. message: '网络错误,请重试!'
  948. });
  949. })
  950. // console.log("this.form.user_type==",this.form);
  951. // console.log("this.form.user_type==2",this.form.user_type);
  952. },
  953. get_creatNews_nav_pool_arr_fun() {//xx
  954. this.$store.dispatch('pool/get_creatNews_nav_actions', { page: 1, pageSize: 666666 }).then(res => {
  955. res.data.rows.forEach((per_obj) => {
  956. let new_per = {
  957. label: per_obj.website_name,
  958. value: per_obj.id,
  959. }
  960. this.creatNews_nav_pool_arr.push(new_per)
  961. })
  962. }).catch(() => {
  963. this.$message({
  964. type: 'info',
  965. message: '网络错误,请重试!'
  966. });
  967. })
  968. },
  969. creatNews_nav_pool_change_fun() { //xx 导航池级
  970. let that = this; this.form.web_site_id = this.form.web_site_id[0]
  971. that.parentKey_2 += 1; this.$store.dispatch('pool/get_creatNews_nav_son_actions', { pid: String(this.creatNews_pid_num), website_id: String(this.form.web_site_id) }).then(res => {
  972. if (res.data.length == 0) {//没有导航池子级
  973. // alert("没有导航池子级");
  974. return
  975. } this.creatNews_add_nav_pool_arr = res.data; this.creatNews_add_nav_pool_arr.forEach((per_obj) => {
  976. per_obj.label = per_obj.name,
  977. per_obj.value = per_obj.id, this.creatNews_pid_num = per_obj.category_id
  978. })
  979. }).catch(() => {
  980. this.$message({
  981. type: 'info',
  982. message: '网络错误,请重试!'
  983. });
  984. })
  985. },
  986. },
  987. mounted() {
  988. this.creatNews_user_type = getUseType()
  989. this.websiteid = getWebSiteId()
  990. this.get_creatNews_form_id_fun()//
  991. this.get_creatNews_nav_pool_arr_fun()//
  992. this.getJobHuntingData()
  993. console.log(this.websiteid, '-------websiteid-------');
  994. //1.判断是新建还是回显
  995. if (this.$route.query.id != undefined) {
  996. this.editId = this.$route.query.id;
  997. this.editStatus = true;
  998. console.log("编辑新闻!")
  999. this.getMainData();
  1000. } else {
  1001. this.editStatus = false;
  1002. console.log("添加新闻!")
  1003. }
  1004. },
  1005. watch: {
  1006. 'form.job_experience': {
  1007. handler(newVal, oldVal) {
  1008. newVal.forEach((item, index) => {
  1009. // 确保每个对象都有默认值
  1010. // if (!item.company_name) item.job_industry = '';
  1011. // if (!item.job_name) item.job_name = '';
  1012. // if (!item.department) item.department = '';
  1013. // if (!item.job_timeList) item.job_timeList = '';
  1014. // if (!item.job_content) item.job_content = '';
  1015. // if (!item.performance) item.performance = '';
  1016. // 检查 company_name 是否发生变化
  1017. console.log(newVal[index].company_name, oldVal[index].company_name);
  1018. console.log(newVal[index].job_industry, '---job_industry---');
  1019. this.form.company_name[index] = item.company_name;
  1020. this.form.job_industry[index] = item.job_industry;
  1021. this.form.job_name[index] = item.job_name;
  1022. this.form.department[index] = item.department;
  1023. this.form.job_timeList[index] = item.job_timeList;
  1024. this.form.job_content[index] = item.job_content;
  1025. console.log(this.form.company_name[index], '-=-------company_name---------');
  1026. console.log(this.form.job_industry, '-=-------job_industry---------');
  1027. console.log(this.form.company_name, '-=-------job_name---------');
  1028. // if (oldVal[index] && oldVal[index].company_name !== item.company_name) {
  1029. // // 如果发生变化,就修改this.form.company_name相应的值
  1030. // }
  1031. });
  1032. },
  1033. deep: true // 深度监听数组内部对象的变化
  1034. }
  1035. }
  1036. };
  1037. </script>
  1038. <style scoped lang="less">
  1039. .floating-menu {
  1040. position: fixed;
  1041. top: 50%;
  1042. right: 20px;
  1043. transform: translateY(-50%);
  1044. background-color: #f8f8f8;
  1045. border: 1px solid #ddd;
  1046. padding: 10px;
  1047. border-radius: 4px;
  1048. z-index: 222;
  1049. }
  1050. .menu-item {
  1051. cursor: pointer;
  1052. margin-bottom: 5px;
  1053. font-size: 14px;
  1054. }
  1055. .menu-item:hover {
  1056. color: #409eff;
  1057. }
  1058. //执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
  1059. ::v-deep .custom-form-item>.el-form-item__label {
  1060. line-height: 140px !important;
  1061. }
  1062. ::v-deep .custom-textarea .el-textarea__inner {
  1063. resize: none;
  1064. /* 禁止用户拖拽调整大小 */
  1065. }
  1066. ::v-deep .custom-align-right .el-form-item__label {
  1067. text-align: right;
  1068. /* 设置标签文字右对齐 */
  1069. }
  1070. ::v-deep .el-select {
  1071. width: 100%;
  1072. /* 禁止用户拖拽调整大小 */
  1073. }
  1074. ::v-deep .el-input-group__prepend {
  1075. color: black !important;
  1076. }
  1077. .formLabelFloatBox {
  1078. margin-bottom: 10px;
  1079. position: relative;
  1080. .formLabeladdIcon {
  1081. position: absolute;
  1082. right: 45px;
  1083. top: 5px;
  1084. width: 38px;
  1085. height: 24px;
  1086. }
  1087. .formLabelDelIcon {
  1088. position: absolute;
  1089. right: 5px;
  1090. top: 5px;
  1091. width: 38px;
  1092. height: 24px;
  1093. }
  1094. }
  1095. //执行v-deep穿透scope选择器 end------------------------------------------------------------>*/</style>