join.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. <!-- eslint-disable vue/valid-v-model -->
  2. <template>
  3. <div class="p-spac p-fz">
  4. <div class="defbb p-spac">企业认证 [ <span class="gray-color" :class="{ 'green-color': isAuth }">{{ authText }}</span> ]</div>
  5. <div v-if="isAuth" class="s-fz flex">
  6. <div class="flex1 defbb p-spac p-t-0">
  7. <div class="chunk1">
  8. <div><span>公司名称:</span>{{ carrierAuthInfo.orgName }}</div>
  9. <div class=" "><span>统一社会信用代码:</span>{{ carrierAuthInfo.taxpayer }}</div>
  10. </div>
  11. <div class="gray-color defbb p-spac">公司营业执照</div>
  12. <div class="p-spac">
  13. <el-image
  14. class="big-img"
  15. fit="cover"
  16. :src="$tools.getFullFileUrl(carrierAuthInfo.businessLicense)"
  17. :preview-src-list="[$tools.getFullFileUrl(carrierAuthInfo.businessLicense)]"
  18. >
  19. </el-image>
  20. </div>
  21. </div>
  22. <div class="flex1 defbb p-spac p-t-0">
  23. <div class="chunk1">
  24. <div class="abs-rt"><span>证件类型:</span>身份证</div>
  25. <div><span>法人姓名:</span>{{ carrierAuthInfo.legalperson }}</div>
  26. <div><span>证件号:</span>{{ carrierAuthInfo.idCardNo }}</div>
  27. </div>
  28. <div class="flex">
  29. <div class="mr-spac">
  30. <div class="gray-color defbb p-spac">法人身份证人像面</div>
  31. <div class="p-spac">
  32. <el-image
  33. class="small-img"
  34. fit="cover"
  35. :src="$tools.getFullFileUrl(carrierAuthInfo.idCardFront)"
  36. :preview-src-list="[$tools.getFullFileUrl(carrierAuthInfo.idCardFront)]"
  37. >
  38. </el-image>
  39. </div>
  40. </div>
  41. <div>
  42. <div class="gray-color defbb p-spac">法人身份证人像面</div>
  43. <div class="p-spac">
  44. <el-image
  45. class="small-img"
  46. fit="cover"
  47. :src="$tools.getFullFileUrl(carrierAuthInfo.idCardBack)"
  48. :preview-src-list="[$tools.getFullFileUrl(carrierAuthInfo.idCardBack)]"
  49. >
  50. </el-image>
  51. </div>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. <auth v-else v-model="carrierAuthInfo"/>
  57. <div class="defbb p-spac">
  58. 资质审核 [
  59. <span class="gray-color" :class="{ 'green-color': isreView }">{{
  60. operateState
  61. }}</span>
  62. ]
  63. <el-button type="text" v-if="reViewing" @click="getCarrierInfo()" :loading="$reqState($interfaces.user.get_carrier_info).ing">刷新</el-button>
  64. <span class="ml-spac p-wcolor" v-if="!isAuth">
  65. [ 提醒:请先完成“企业认证”!]</span
  66. >
  67. </div>
  68. <div class="p-spac p-b-0 flex defbb">
  69. <div>
  70. <div
  71. class="gray-color"
  72. :class="
  73. carrierRoadInfoView ? 'defbb pb-spac' : 'required ml-spac mb-spac'
  74. "
  75. >
  76. 道路运输经营许可证
  77. </div>
  78. <div class="p-spac" v-if="carrierRoadInfoView">
  79. <el-image
  80. class="big-img"
  81. fit="cover"
  82. :src="$tools.getFullFileUrl(carrierRoadInfo.roadTransport)"
  83. :preview-src-list="[$tools.getFullFileUrl(carrierRoadInfo.roadTransport)]"
  84. >
  85. </el-image>
  86. </div>
  87. <el-form
  88. v-else
  89. ref="carrierRoadInfo"
  90. :model="carrierRoadInfo"
  91. :rules="rules"
  92. size="mini"
  93. >
  94. <el-form-item prop="roadTransport">
  95. <upload-img
  96. :fileList="carrierRoadInfoImg"
  97. :big="true"
  98. :disabled="!isAuth"
  99. @uploadOrgPic="uploadOrgPic"
  100. ></upload-img>
  101. </el-form-item>
  102. </el-form>
  103. </div>
  104. <div
  105. class="flex-column justify-between flex-items-start ml-spac pb-spac"
  106. v-if="!carrierRoadInfoView"
  107. >
  108. <div v-if="isAuth&&isReject">
  109. 驳回理由:
  110. <div>{{carrierRoadInfo.reason}}</div>
  111. </div>
  112. <div v-else></div>
  113. <el-button
  114. v-if="isAuth&&(unStart||isReject)"
  115. type="primary"
  116. size="medium"
  117. class="auth-btn"
  118. @click="submitForm()"
  119. >{{ reviewBtnText }}</el-button
  120. >
  121. </div>
  122. </div>
  123. <div class="defbb p-spac">
  124. 开票补充信息<span class="ml-spac p-wcolor" v-if="!isreView"
  125. >[ 提醒:请先完成“资质审核”!]</span
  126. >
  127. </div>
  128. <invoice :disabled="!isreView" :readOnly="false" v-model="carrierFpInfo" class="p-spacd2 p-b-0" />
  129. <authorize v-model="bindPhone" :carrierBalanceInfo="carrierBalanceInfo" :carrierWithdrawInfo="carrierWithdrawInfo" :tradeType="tradeType" v-if="isreView" />
  130. </div>
  131. </template>
  132. <script>
  133. import { mapGetters } from 'vuex'
  134. import UploadImg from '@/components/uploadImg'
  135. import auth from './comp/auth.vue'
  136. import invoice from './comp/invoice.vue'
  137. import authorize from './comp/authorize.vue'
  138. export default {
  139. name: 'join',
  140. data() {
  141. return {
  142. /** 交易模式(1经销模式;2直销模式,默认经销模式1) */
  143. tradeType: 1,
  144. /** 绑定手机号信息 */
  145. bindPhone: '',
  146. /** 企业认证信息 */
  147. carrierAuthInfo: {
  148. /** 营业执照路径 */
  149. businessLicense: '',
  150. /** 认证状态:1=未完成 2=已认证 */
  151. channelAuthStatus: 1,
  152. /** 法人身份证反面照片路径 */
  153. idCardBack: '',
  154. /** 法人身份证正面照片路径 */
  155. idCardFront: '',
  156. /** 法人证件号(身份证号) */
  157. idCardNo: '',
  158. /** 法人姓名 */
  159. legalperson: '',
  160. /** 公司名称 */
  161. orgName: '',
  162. /** 统一社会信用代码(纳税人识别号) */
  163. taxpayer: ''
  164. },
  165. /** 资质审核:道路运输许可证信息 */
  166. carrierRoadInfo: {
  167. /** 审核驳回理由 */
  168. reason: '',
  169. /** 审核记录 */
  170. records: '',
  171. /** 道路运输许可证路径 */
  172. roadTransport: '',
  173. /** 道路运输经营许可证认证状态: 0=未发起(默认)1=待认证 2=已认证 3=已驳回 */
  174. roadTransportStatus: 0
  175. },
  176. /** 开票补充信息 */
  177. carrierFpInfo: {
  178. /** 开票信息:购方地址 */
  179. fpAddress: '',
  180. /** 开票信息:购方开户银行 */
  181. fpBank: '',
  182. /** 开票信息:购方银行账号 */
  183. fpBankAccount: '',
  184. /** 开票信息:购方电话 */
  185. fpPhone: '',
  186. /** 1未保存过,2已保存过 */
  187. fpStatus: 1
  188. },
  189. /** 提现公户信息 */
  190. carrierBankInfo: {
  191. /** 提现公户账号 */
  192. account: '',
  193. /** 开户银行 */
  194. bank: '',
  195. /** 开户行支行 */
  196. bankName: '',
  197. /** 1未上报,2已上报 */
  198. bankStatus: 1,
  199. /** 支行行号 */
  200. unionBank: ''
  201. },
  202. /** 合同签约信息 */
  203. carrierContractInfo: {
  204. /** 签约完成时间 */
  205. contractDate: '',
  206. /** 签约状态 1=未签约 2=已签约 */
  207. contractStatus: 1
  208. },
  209. /** 转账授权 */
  210. carrierBalanceInfo: {
  211. /** undefined */
  212. balanceDate: '',
  213. /** 转账授权:1未授权 2已授权 */
  214. balanceStatus: 1
  215. },
  216. /** 提现授权 */
  217. carrierWithdrawInfo: {
  218. /** 转账授权签约时间 */
  219. withdrawDate: '',
  220. /** 提现授权:1未授权 2已授权 */
  221. withdrawStatus: 1
  222. },
  223. carrierRoadInfoImg: [
  224. {
  225. path: '',
  226. defaultPath: require('@/assets/images/main/license@2x.png'),
  227. text: '上传道路运输经营许可证'
  228. }
  229. ],
  230. rules: {
  231. roadTransport: {
  232. required: true,
  233. message: '请上传道路运输经营许可证',
  234. trigger: 'blur'
  235. }
  236. }
  237. }
  238. },
  239. components: { UploadImg, auth, invoice, authorize },
  240. computed: {
  241. ...mapGetters({
  242. orgId: 'woporg',
  243. user: 'wopuser'
  244. }),
  245. // 已认证
  246. isAuth() {
  247. return this.carrierAuthInfo.channelAuthStatus === 2
  248. },
  249. authText() {
  250. return this.isAuth ? '已认证' : '未完成'
  251. },
  252. // 未发起
  253. unStart() {
  254. return this.carrierRoadInfo.roadTransportStatus === 0
  255. },
  256. // 待审核
  257. reViewing() {
  258. return this.carrierRoadInfo.roadTransportStatus === 1
  259. },
  260. // 被驳回
  261. isReject() {
  262. return this.carrierRoadInfo.roadTransportStatus === 3
  263. },
  264. // 已审核
  265. isreView() {
  266. return this.carrierRoadInfo.roadTransportStatus === 2
  267. },
  268. operateState() {
  269. return ['未发起', '待审核', '已认证', '已驳回'][this.carrierRoadInfo.roadTransportStatus]
  270. },
  271. // 营运许可证为查看状态
  272. carrierRoadInfoView() {
  273. return this.reViewing || this.isreView
  274. },
  275. reviewBtnText() {
  276. return this.isReject ? '重新发起审核' : '发起审核'
  277. }
  278. },
  279. created() {
  280. this.getCarrierInfo()
  281. // this.userOrgFind()
  282. },
  283. methods: {
  284. getCarrierInfo() {
  285. if (this.orgId) {
  286. this.$http(this.$interfaces.user.get_carrier_info, { orgId: this.orgId }).then(res => {
  287. this.tradeType = res.org.tradeType
  288. this.carrierAuthInfo = res.carrierAuthInfo
  289. this.carrierBalanceInfo = res.carrierBalanceInfo
  290. this.carrierBankInfo = res.carrierBankInfo
  291. this.carrierContractInfo = res.carrierContractInfo
  292. this.carrierFpInfo = res.carrierFpInfo
  293. this.carrierRoadInfo = res.carrierRoadInfo
  294. this.carrierWithdrawInfo = res.carrierWithdrawInfo
  295. })
  296. }
  297. },
  298. uploadOrgPic(path) {
  299. this.carrierRoadInfo.roadTransport = path
  300. // this.carrierRoadInfo.roadTransport = process.env.VUE_APP_FILE_URL + path
  301. },
  302. submitForm() {
  303. this.$refs.carrierRoadInfo.validate((valid) => {
  304. if (valid) {
  305. this.$http(this.$interfaces.user.road_transport_up, {
  306. picPath: this.carrierRoadInfo.roadTransport
  307. }).then(res => {
  308. this.carrierRoadInfo.roadTransportStatus = 1
  309. })
  310. }
  311. })
  312. }
  313. }
  314. }
  315. </script>
  316. <style lang="scss" scoped>
  317. @import "submodule/utils/style/variables.scss";
  318. .abs-rt {
  319. position: absolute;
  320. right: $p-spac;
  321. top: $p-spac;
  322. }
  323. .small-img {
  324. width: 216px;
  325. height: 140px;
  326. }
  327. .big-img {
  328. width: 340px;
  329. height: 220px;
  330. }
  331. </style>