join.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  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. <template v-if="$props.module.carrierFpInfo">
  124. <div class="defbb p-spac">
  125. 开票补充信息<span class="ml-spac p-wcolor" v-if="!isreView"
  126. >[ 提醒:请先完成“资质审核”!]</span
  127. >
  128. </div>
  129. <invoice :disabled="!isreView" :readOnly="false" v-model="carrierFpInfo" class="p-spacd2 p-b-0"/>
  130. </template>
  131. <authorize v-model="bindPhone" :carrierBalanceInfo="carrierBalanceInfo" :carrierWithdrawInfo="carrierWithdrawInfo" :tradeType="tradeType" v-if="$props.module.carrierWithdrawInfo&&isreView" />
  132. <review :orgId="$props.orgId" v-if="$props.module.review" @feedback="reviewFeedback"/>
  133. </div>
  134. </template>
  135. <script>
  136. import UploadImg from '@/components/uploadImg'
  137. import auth from './comp/auth.vue'
  138. import invoice from './comp/invoice.vue'
  139. import authorize from './comp/authorize.vue'
  140. import review from './comp/review.vue'
  141. export default {
  142. name: 'join',
  143. data() {
  144. return {
  145. /** 交易模式(1经销模式;2直销模式,默认经销模式1) */
  146. tradeType: 1,
  147. /** 绑定手机号信息 */
  148. bindPhone: '',
  149. /** 企业认证信息 */
  150. carrierAuthInfo: {
  151. /** 营业执照路径 */
  152. businessLicense: '',
  153. /** 认证状态:1=未完成 2=已认证 */
  154. channelAuthStatus: 1,
  155. /** 法人身份证反面照片路径 */
  156. idCardBack: '',
  157. /** 法人身份证正面照片路径 */
  158. idCardFront: '',
  159. /** 法人证件号(身份证号) */
  160. idCardNo: '',
  161. /** 法人姓名 */
  162. legalperson: '',
  163. /** 公司名称 */
  164. orgName: '',
  165. /** 统一社会信用代码(纳税人识别号) */
  166. taxpayer: ''
  167. },
  168. /** 资质审核:道路运输许可证信息 */
  169. carrierRoadInfo: {
  170. /** 审核驳回理由 */
  171. reason: '',
  172. /** 审核记录 */
  173. records: '',
  174. /** 道路运输许可证路径 */
  175. roadTransport: '',
  176. /** 道路运输经营许可证认证状态: 0=未发起(默认)1=待认证 2=已认证 3=已驳回 */
  177. roadTransportStatus: 0
  178. },
  179. /** 开票补充信息 */
  180. carrierFpInfo: {
  181. /** 开票信息:购方地址 */
  182. fpAddress: '',
  183. /** 开票信息:购方开户银行 */
  184. fpBank: '',
  185. /** 开票信息:购方银行账号 */
  186. fpBankAccount: '',
  187. /** 开票信息:购方电话 */
  188. fpPhone: '',
  189. /** 1未保存过,2已保存过 */
  190. fpStatus: 1
  191. },
  192. /** 提现公户信息 */
  193. carrierBankInfo: {
  194. /** 提现公户账号 */
  195. account: '',
  196. /** 开户银行 */
  197. bank: '',
  198. /** 开户行支行 */
  199. bankName: '',
  200. /** 1未上报,2已上报 */
  201. bankStatus: 1,
  202. /** 支行行号 */
  203. unionBank: ''
  204. },
  205. /** 合同签约信息 */
  206. carrierContractInfo: {
  207. /** 签约完成时间 */
  208. contractDate: '',
  209. /** 签约状态 1=未签约 2=已签约 */
  210. contractStatus: 1
  211. },
  212. /** 转账授权 */
  213. carrierBalanceInfo: {
  214. /** undefined */
  215. balanceDate: '',
  216. /** 转账授权:1未授权 2已授权 */
  217. balanceStatus: 1
  218. },
  219. /** 提现授权 */
  220. carrierWithdrawInfo: {
  221. /** 转账授权签约时间 */
  222. withdrawDate: '',
  223. /** 提现授权:1未授权 2已授权 */
  224. withdrawStatus: 1
  225. },
  226. carrierRoadInfoImg: [
  227. {
  228. path: '',
  229. defaultPath: require('@/assets/images/main/license@2x.png'),
  230. text: '上传道路运输经营许可证'
  231. }
  232. ],
  233. rules: {
  234. roadTransport: {
  235. required: true,
  236. message: '请上传道路运输经营许可证',
  237. trigger: 'blur'
  238. }
  239. }
  240. }
  241. },
  242. components: { UploadImg, auth, invoice, authorize, review },
  243. props: {
  244. orgId: {
  245. type: String,
  246. default: ''
  247. },
  248. /** 模块信息 */
  249. module: {
  250. type: Object,
  251. default: () => ({
  252. carrierFpInfo: false,
  253. carrierWithdrawInfo: false,
  254. review: false
  255. })
  256. }
  257. },
  258. computed: {
  259. // 已认证
  260. isAuth() {
  261. return this.carrierAuthInfo.channelAuthStatus === 2
  262. },
  263. authText() {
  264. return this.isAuth ? '已认证' : '未完成'
  265. },
  266. // 未发起
  267. unStart() {
  268. return this.carrierRoadInfo.roadTransportStatus === 0
  269. },
  270. // 待审核
  271. reViewing() {
  272. return this.carrierRoadInfo.roadTransportStatus === 1
  273. },
  274. // 被驳回
  275. isReject() {
  276. return this.carrierRoadInfo.roadTransportStatus === 3
  277. },
  278. // 已审核
  279. isreView() {
  280. return this.carrierRoadInfo.roadTransportStatus === 2
  281. },
  282. operateState() {
  283. return ['未发起', '待审核', '已认证', '已驳回'][this.carrierRoadInfo.roadTransportStatus]
  284. },
  285. // 营运许可证为查看状态
  286. carrierRoadInfoView() {
  287. return this.reViewing || this.isreView
  288. },
  289. reviewBtnText() {
  290. return this.isReject ? '重新发起审核' : '发起审核'
  291. }
  292. },
  293. created() {
  294. this.getCarrierInfo()
  295. },
  296. methods: {
  297. /**
  298. * qualificationReviewFeedback
  299. * @description: 资质审核反馈
  300. * @param {type} 2通过 3驳回 0 取消
  301. * @return: null
  302. */
  303. reviewFeedback(type) {
  304. this.$emit('reviewFeedback', type)
  305. },
  306. getCarrierInfo() {
  307. if (this.orgId) {
  308. this.$http(this.$interfaces.user.get_carrier_info, { orgId: this.orgId }).then(res => {
  309. this.tradeType = res.org.tradeType
  310. this.carrierAuthInfo = res.carrierAuthInfo
  311. this.carrierBalanceInfo = res.carrierBalanceInfo
  312. this.carrierBankInfo = res.carrierBankInfo
  313. this.carrierContractInfo = res.carrierContractInfo
  314. this.carrierFpInfo = res.carrierFpInfo
  315. this.carrierRoadInfo = res.carrierRoadInfo
  316. this.carrierWithdrawInfo = res.carrierWithdrawInfo
  317. })
  318. }
  319. },
  320. uploadOrgPic(path) {
  321. this.carrierRoadInfo.roadTransport = path
  322. // this.carrierRoadInfo.roadTransport = process.env.VUE_APP_FILE_URL + path
  323. },
  324. submitForm() {
  325. this.$refs.carrierRoadInfo.validate((valid) => {
  326. if (valid) {
  327. this.$http(this.$interfaces.user.road_transport_up, {
  328. picPath: this.carrierRoadInfo.roadTransport
  329. }).then(res => {
  330. this.carrierRoadInfo.roadTransportStatus = 1
  331. })
  332. }
  333. })
  334. }
  335. }
  336. }
  337. </script>
  338. <style lang="scss" scoped>
  339. @import "submodule/utils/style/variables.scss";
  340. .abs-rt {
  341. position: absolute;
  342. right: $p-spac;
  343. top: $p-spac;
  344. }
  345. .small-img {
  346. width: 216px;
  347. height: 140px;
  348. }
  349. .big-img {
  350. width: 340px;
  351. height: 220px;
  352. }
  353. </style>