userPolitician.vue 35 KB

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