用工小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

360 lines
10 KiB

10 months ago
a. 前端小程序部分: ⅰ. 授权登录成功之后,后面点击头像进行个人资料编辑的时候,原来的历史个人资料需要展示在表单上:头像,昵称,手机号码 (已处理) ⅱ. 个人中心手机号码下方,如果做了企业认证则显示企业公司名称 (已处理 展示认证状态) ⅲ. 对接流水钱包的数据,让数据渲染正确,能正常提交以及审核提现,提现需要增加一个用户真实姓名的字段,提现需要一个到账状态,提现功能区看酒布代码或者是真世界代码,确保功能的完整性 提现新增字段 realName (已处理) ⅳ. 我的服务这些设置的小图标需要换成正常的,如果没画的区阿里巴巴矢量图标库找一个合适的(已处理) ⅴ. 企业入驻:公司地址需要吊起地图,记录经纬度,另外审核通过状态的数据,不能再进行修改 (已处理) longitude:"",latitude:"", ⅵ. 个人入住:审核通过状态的数据,不能再进行修改(已处理) ⅶ. 我的简历:审核通过状态的数据,不能再进行修改(没有status 字段) ⅷ. 发布订单:出行方式字段对接一下select_go字段,结算方式说明前端要跟后台数据说明同步 (已处理)selectGo ⅸ. 分类管理:点击分类管理可以只查询当前一级分类数据,另外名称搜索功能需要增加一下 (已处理) X. 工作详情里面的公司地址要能点击到地图中去,另外右边增加一个拨打电话的按钮 (这个是微信组件 不能添加) Xⅰ. 列表数据处理一下下拉刷新数据,每次数据没有更新,没有下啦刷新处理 (已处理)
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
a. 前端小程序部分: ⅰ. 授权登录成功之后,后面点击头像进行个人资料编辑的时候,原来的历史个人资料需要展示在表单上:头像,昵称,手机号码 (已处理) ⅱ. 个人中心手机号码下方,如果做了企业认证则显示企业公司名称 (已处理 展示认证状态) ⅲ. 对接流水钱包的数据,让数据渲染正确,能正常提交以及审核提现,提现需要增加一个用户真实姓名的字段,提现需要一个到账状态,提现功能区看酒布代码或者是真世界代码,确保功能的完整性 提现新增字段 realName (已处理) ⅳ. 我的服务这些设置的小图标需要换成正常的,如果没画的区阿里巴巴矢量图标库找一个合适的(已处理) ⅴ. 企业入驻:公司地址需要吊起地图,记录经纬度,另外审核通过状态的数据,不能再进行修改 (已处理) longitude:"",latitude:"", ⅵ. 个人入住:审核通过状态的数据,不能再进行修改(已处理) ⅶ. 我的简历:审核通过状态的数据,不能再进行修改(没有status 字段) ⅷ. 发布订单:出行方式字段对接一下select_go字段,结算方式说明前端要跟后台数据说明同步 (已处理)selectGo ⅸ. 分类管理:点击分类管理可以只查询当前一级分类数据,另外名称搜索功能需要增加一下 (已处理) X. 工作详情里面的公司地址要能点击到地图中去,另外右边增加一个拨打电话的按钮 (这个是微信组件 不能添加) Xⅰ. 列表数据处理一下下拉刷新数据,每次数据没有更新,没有下啦刷新处理 (已处理)
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
a. 前端小程序部分: ⅰ. 授权登录成功之后,后面点击头像进行个人资料编辑的时候,原来的历史个人资料需要展示在表单上:头像,昵称,手机号码 (已处理) ⅱ. 个人中心手机号码下方,如果做了企业认证则显示企业公司名称 (已处理 展示认证状态) ⅲ. 对接流水钱包的数据,让数据渲染正确,能正常提交以及审核提现,提现需要增加一个用户真实姓名的字段,提现需要一个到账状态,提现功能区看酒布代码或者是真世界代码,确保功能的完整性 提现新增字段 realName (已处理) ⅳ. 我的服务这些设置的小图标需要换成正常的,如果没画的区阿里巴巴矢量图标库找一个合适的(已处理) ⅴ. 企业入驻:公司地址需要吊起地图,记录经纬度,另外审核通过状态的数据,不能再进行修改 (已处理) longitude:"",latitude:"", ⅵ. 个人入住:审核通过状态的数据,不能再进行修改(已处理) ⅶ. 我的简历:审核通过状态的数据,不能再进行修改(没有status 字段) ⅷ. 发布订单:出行方式字段对接一下select_go字段,结算方式说明前端要跟后台数据说明同步 (已处理)selectGo ⅸ. 分类管理:点击分类管理可以只查询当前一级分类数据,另外名称搜索功能需要增加一下 (已处理) X. 工作详情里面的公司地址要能点击到地图中去,另外右边增加一个拨打电话的按钮 (这个是微信组件 不能添加) Xⅰ. 列表数据处理一下下拉刷新数据,每次数据没有更新,没有下啦刷新处理 (已处理)
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
a. 前端小程序部分: ⅰ. 授权登录成功之后,后面点击头像进行个人资料编辑的时候,原来的历史个人资料需要展示在表单上:头像,昵称,手机号码 (已处理) ⅱ. 个人中心手机号码下方,如果做了企业认证则显示企业公司名称 (已处理 展示认证状态) ⅲ. 对接流水钱包的数据,让数据渲染正确,能正常提交以及审核提现,提现需要增加一个用户真实姓名的字段,提现需要一个到账状态,提现功能区看酒布代码或者是真世界代码,确保功能的完整性 提现新增字段 realName (已处理) ⅳ. 我的服务这些设置的小图标需要换成正常的,如果没画的区阿里巴巴矢量图标库找一个合适的(已处理) ⅴ. 企业入驻:公司地址需要吊起地图,记录经纬度,另外审核通过状态的数据,不能再进行修改 (已处理) longitude:"",latitude:"", ⅵ. 个人入住:审核通过状态的数据,不能再进行修改(已处理) ⅶ. 我的简历:审核通过状态的数据,不能再进行修改(没有status 字段) ⅷ. 发布订单:出行方式字段对接一下select_go字段,结算方式说明前端要跟后台数据说明同步 (已处理)selectGo ⅸ. 分类管理:点击分类管理可以只查询当前一级分类数据,另外名称搜索功能需要增加一下 (已处理) X. 工作详情里面的公司地址要能点击到地图中去,另外右边增加一个拨打电话的按钮 (这个是微信组件 不能添加) Xⅰ. 列表数据处理一下下拉刷新数据,每次数据没有更新,没有下啦刷新处理 (已处理)
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
  1. <template>
  2. <!-- 个人 -->
  3. <view>
  4. <view class="se-pt-20 se-pb-20 se-px-40 se-bgc-green se-c-white se-ta-c se-fs-24" v-if="status==1">
  5. 个人认证-已通过
  6. </view>
  7. <u--form labelPosition="left" :model="form" :rules="rules" ref="uForm" labelWidth="80">
  8. <view class="se-p-20">
  9. <view class="se-p-20 se-bgc-white se-br-10 se-fs-20">
  10. <u-form-item label="姓名" prop="name">
  11. <u--input v-model="form.name" class="se-bgc-f5" placeholder="请输入姓名名称"></u--input>
  12. </u-form-item>
  13. <!-- <u-form-item label="密码" prop="password">
  14. <u--input v-model="form.password" class="se-bgc-f5" placeholder="请输入您的密码"></u--input>
  15. </u-form-item> -->
  16. <u-form-item label="联系电话" prop="mobile">
  17. <u--input v-model="form.mobile" class="se-bgc-f5" placeholder="请输入联系方式"></u--input>
  18. </u-form-item>
  19. <u-form-item label="居住地址" prop="address">
  20. <u--input v-model="form.address" class="se-bgc-f5" placeholder="请输入详细地址"></u--input>
  21. </u-form-item>
  22. <u-form-item label="行业" prop="industryId" @click="handleIndChange()">
  23. <u--input readonly v-model="form.industryName" placeholder="请选择行业" border="bottom"></u--input>
  24. <u-icon slot="right" name="arrow-right"></u-icon>
  25. </u-form-item>
  26. </view>
  27. </view>
  28. <view class="se-p-20">
  29. <view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20">
  30. <u-form-item prop="file" labelWidth="2">
  31. <view class="se-flex se-flex-v-sa">
  32. <view class="se-py-20 se-w-p-100 se-flex">
  33. <view class="line-orange"></view>
  34. <view class="se-ml-10">
  35. 个人照片
  36. </view>
  37. </view>
  38. <view class="se-py-20 se-w-p-100">
  39. <u-upload :fileList="form.imageFile" @afterRead="afterImageFileRead" @delete="deleteImageFilePic" name="1"
  40. multiple :maxCount="10"></u-upload>
  41. </view>
  42. </view>
  43. </u-form-item>
  44. </view>
  45. </view>
  46. <view class="se-p-20">
  47. <view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20">
  48. <u-form-item prop="file" labelWidth="2">
  49. <view class="se-flex se-flex-v-sa">
  50. <view class="se-py-20 se-w-p-100 se-flex">
  51. <view class="line-orange"></view>
  52. <view class="se-ml-10">
  53. 身份证上传(正面)
  54. </view>
  55. </view>
  56. <view class="se-py-20 se-w-p-100">
  57. <u-upload :fileList="form.cerImageBackFile" @afterRead="afterCerImageBackFileRead" @delete="deleteCerImageBackFilePic" name="1"
  58. multiple :maxCount="10"></u-upload>
  59. </view>
  60. </view>
  61. </u-form-item>
  62. </view>
  63. </view>
  64. <view class="se-p-20">
  65. <view class="se-px-20 se-pb-20 se-bgc-white se-br-10 se-fs-20">
  66. <u-form-item prop="file" labelWidth="2">
  67. <view class="se-flex se-flex-v-sa">
  68. <view class="se-py-20 se-w-p-100 se-flex">
  69. <view class="line-orange"></view>
  70. <view class="se-ml-10">
  71. 身份证上传(反面)
  72. </view>
  73. </view>
  74. <view class="se-py-20 se-w-p-100">
  75. <u-upload :fileList="form.cerImageFrontFile" @afterRead="afterCerImageFrontRead" @delete="deleteCerImageFrontReadPic" name="1"
  76. multiple :maxCount="10"></u-upload>
  77. </view>
  78. </view>
  79. </u-form-item>
  80. </view>
  81. </view>
  82. <view class="se-px-20 se-pt-20" v-if="status!=1">
  83. <view class="se-px-20 se-pb-80 se-fs-20 se-flex">
  84. <view @click="submit"
  85. class="se-mx-10 se-flex-1 se-br-40 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-28 se-c-white se-bgc-orange">
  86. <text>{{form.id?'保存':'提交审核'}}</text>
  87. </view>
  88. <!-- <view class="se-mx-10 se-flex-1 se-b se-br-40 se-flex-h-c se-h-60 se-lh-60 se-ta-c se-fs-28 se-c-66 se-bgc-f5">
  89. <text>联系我们</text>
  90. </view> -->
  91. </view>
  92. </view>
  93. </u--form>
  94. <u-action-sheet :actions="indList" @select="selectIndClick" title="行业" :show="show" @close="show=false"></u-action-sheet>
  95. </view>
  96. </template>
  97. <script>
  98. import {roleBoss,industryList,updateRoleBoss,queryCategoryList,addAuthenticationPerson,getAuthenticationPerson} from "@/common/api.js"
  99. export default{
  100. data(){
  101. return{
  102. status:-1,
  103. show:false,
  104. indList: [],
  105. fileList: [],
  106. form: {
  107. id:'',
  108. role:0,
  109. name: '',
  110. password: '',
  111. mobile: '',
  112. address:'',
  113. industryId:'',
  114. industryName:'',
  115. cerImageBackFile:[],
  116. cerImageFrontFile:[],
  117. imageFile:[]
  118. },
  119. rules: {
  120. name: [{
  121. type: 'string',
  122. required: true,
  123. message: '请输入姓名名称',
  124. trigger: ['blur', 'change']
  125. }],
  126. password: [{
  127. type: 'string',
  128. required: true,
  129. message: '请输入您的密码',
  130. trigger: ['blur', 'change']
  131. }],
  132. mobile: [
  133. {
  134. required: true,
  135. message: '请输入手机号',
  136. trigger: ['change','blur'],
  137. },
  138. {
  139. validator: (rule, value, callback) => {
  140. return uni.$u.test.mobile(value);
  141. },
  142. message: '手机号码不正确',
  143. trigger: ['change','blur'],
  144. },
  145. ],
  146. address: [{
  147. type: 'string',
  148. required: true,
  149. message: '请输入居住地址',
  150. trigger: ['blur', 'change']
  151. }],
  152. industryId: [{
  153. type: 'string',
  154. required: true,
  155. message: '请选择行业',
  156. trigger: ['blur', 'change']
  157. }],
  158. cerImageBackFile:[
  159. {
  160. validator: (rule, value, callback) => {
  161. if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) {
  162. callback(new Error('请选择身份证'));
  163. } else {
  164. callback();
  165. }
  166. },
  167. trigger: 'blur'
  168. }
  169. ],
  170. cerImageFrontFile:[
  171. {
  172. validator: (rule, value, callback) => {
  173. if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) {
  174. callback(new Error('请选择身份证'));
  175. } else {
  176. callback();
  177. }
  178. },
  179. trigger: 'blur'
  180. }
  181. ],
  182. imageFile:[
  183. {
  184. validator: (rule, value, callback) => {
  185. if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) {
  186. callback(new Error('请选择个人照片'));
  187. } else {
  188. callback();
  189. }
  190. },
  191. trigger: 'blur'
  192. }
  193. ],
  194. },
  195. }
  196. },
  197. watch: {
  198. },
  199. onReady() {
  200. this.onAuthenticationPerson()
  201. this.onQueryCategoryList()
  202. this.$refs.uForm.setRules(this.rules)
  203. },
  204. mounted() {
  205. },
  206. methods: {
  207. onAuthenticationPerson(){
  208. let params={}
  209. getAuthenticationPerson(params).then(response=>{
  210. let person = response.result
  211. if(response.result){
  212. this.form.id = person.id
  213. this.status = person.status
  214. this.form.name = person.name
  215. this.form.mobile = person.phone
  216. this.form.address = person.address
  217. this.form.industryId = person.industry
  218. this.form.industryName = person.industryName
  219. this.form.cerImageBackFile = this.stringToKeyValueArray(person.cerImageBack)
  220. this.form.cerImageFrontFile = this.stringToKeyValueArray(person.cerImageFront)
  221. this.form.imageFile = this.stringToKeyValueArray(person.image)
  222. }
  223. }).catch(error=>{
  224. })
  225. },
  226. onQueryCategoryList(){
  227. queryCategoryList({}).then(response=>{
  228. console.info(response)
  229. this.indList = response.result
  230. }).catch(error=>{
  231. })
  232. },
  233. stringToKeyValueArray(str, delimiter1 = ',') {
  234. if(str){
  235. let arro = str.split(delimiter1);
  236. let arr = [];
  237. arro.forEach(items=>{
  238. let obj = {};
  239. obj["url"] = items
  240. arr.push(obj)
  241. })
  242. console.info(arr)
  243. return arr
  244. }else{
  245. return []
  246. }
  247. },
  248. handleIndChange(){
  249. this.show = true
  250. },
  251. selectIndClick(event){
  252. console.info("selectIndClick",event)
  253. this.form.industryId = event.id
  254. this.form.industryName = event.name
  255. this.show = false
  256. },
  257. submit() {
  258. let that = this
  259. that.$refs.uForm.validate().then(res => {
  260. that.onRoleBoss()
  261. }).catch(errors => {
  262. console.info(errors)
  263. uni.$u.toast('校验失败')
  264. })
  265. },
  266. onRoleBoss(){
  267. let that = this
  268. let params={
  269. id:that.form.id,
  270. name:that.form.name,
  271. role:that.form.role,
  272. phone:that.form.mobile,
  273. address:that.form.address,
  274. industry:that.form.industryId,
  275. // categoryTwo:that.form.industryName,
  276. cerImageBack:that.form.cerImageBackFile.map(item => item.url).join(','),
  277. cerImageFront:that.form.cerImageFrontFile.map(item => item.url).join(','),
  278. image:that.form.imageFile.map(item => item.url).join(','),
  279. }
  280. // if(that.form.id){
  281. // updateRoleBoss(params).then(response=>{
  282. // uni.$u.toast("保存成功!")
  283. // setTimeout(()=>{
  284. // uni.navigateBack({
  285. // delta:1
  286. // })
  287. // },1500)
  288. // }).catch(error=>{
  289. // })
  290. // }else{
  291. addAuthenticationPerson(params).then(response=>{
  292. uni.$u.toast("提交成功,等待申请")
  293. setTimeout(()=>{
  294. uni.switchTab({
  295. url:"/pages/home/index"
  296. })
  297. },1500)
  298. }).catch(error=>{
  299. })
  300. // }
  301. },
  302. deleteCerImageBackFilePic(event) {
  303. this.form.cerImageBackFile.splice(e.index, 1)
  304. },
  305. async afterCerImageBackFileRead(e) {
  306. let self = this
  307. e.file.forEach(file => {
  308. self.$Oss.ossUpload(file.url).then(url => {
  309. self.form.cerImageBackFile.push({
  310. url
  311. })
  312. })
  313. })
  314. },
  315. deleteCerImageFrontReadPic(event) {
  316. this.form.cerImageFrontFile.splice(e.index, 1)
  317. },
  318. async afterCerImageFrontRead(e) {
  319. let self = this
  320. e.file.forEach(file => {
  321. self.$Oss.ossUpload(file.url).then(url => {
  322. self.form.cerImageFrontFile.push({
  323. url
  324. })
  325. })
  326. })
  327. },
  328. async afterImageFileRead(e) {
  329. let self = this
  330. e.file.forEach(file => {
  331. self.$Oss.ossUpload(file.url).then(url => {
  332. self.form.imageFile.push({
  333. url
  334. })
  335. })
  336. })
  337. },
  338. deleteImageFilePic(event) {
  339. this.form.imageFile.splice(e.index, 1)
  340. },
  341. }
  342. }
  343. </script>
  344. <style lang="scss" scoped>
  345. .line-orange {
  346. width: 8rpx;
  347. height: 32rpx;
  348. background: #ff7a31;
  349. border-radius: 4rpx;
  350. }
  351. </style>