registerFirst.vue 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904
  1. <template>
  2. <div class="app-container">
  3. <div class="top-fixed">
  4. <div class="title-reg">
  5. <h3 class="title">注册信息</h3>
  6. <div class="top-img" @click="cancel">
  7. <img src='../../assets/images/cancel.png'>
  8. </div>
  9. </div>
  10. </div>
  11. <div class="content">
  12. <el-form ref="registerForm" :model="registerForm" :rules="registerRules" label-width="190px">
  13. <el-collapse v-model="activeNames">
  14. <template v-if="tokenVisile">
  15. <el-collapse-item title="账户信息" name="1">
  16. <el-row :gutter="40">
  17. <el-col :span="12">
  18. <el-form-item label="账户名称" prop="userName">
  19. <el-input v-model="registerForm.userName" type="text" auto-complete="off" placeholder="账号">
  20. </el-input>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="12">
  24. <el-form-item label="密码" prop="password">
  25. <el-input
  26. v-model="registerForm.password"
  27. type="password"
  28. auto-complete="new-password"
  29. placeholder="密码">
  30. </el-input>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="12">
  34. <el-form-item label="确认密码" prop="confirmPassword">
  35. <el-input
  36. v-model="registerForm.confirmPassword"
  37. type="password"
  38. auto-complete="new-password"
  39. placeholder="确认密码">
  40. </el-input>
  41. </el-form-item>
  42. </el-col>
  43. </el-row>
  44. </el-collapse-item>
  45. <el-collapse-item title="账户联系人信息" name="2">
  46. <el-row :gutter="40">
  47. <el-col :span="12">
  48. <el-form-item label="姓名" prop="nickName">
  49. <el-input v-model="registerForm.nickName" type="text" auto-complete="off" placeholder="姓名">
  50. </el-input>
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="12">
  54. <el-form-item label="手机号码" prop="phonenumber">
  55. <el-input v-model="registerForm.phonenumber" type="text" auto-complete="off" placeholder="手机号码">
  56. </el-input>
  57. </el-form-item>
  58. </el-col>
  59. <el-col :span="12">
  60. <el-form-item label="邮箱地址" prop="email">
  61. <el-input v-model="registerForm.email" type="text" auto-complete="off" placeholder="邮箱地址">
  62. </el-input>
  63. </el-form-item>
  64. </el-col>
  65. </el-row>
  66. </el-collapse-item>
  67. </template>
  68. <el-collapse-item title="企业信息" name="3">
  69. <el-row :gutter="40">
  70. <el-col :span="12">
  71. <el-form-item label="企业名称" prop="entName">
  72. <el-input v-model="registerForm.entName" type="text" auto-complete="off" placeholder="请输入企业名称">
  73. </el-input>
  74. </el-form-item>
  75. </el-col>
  76. <el-col :span="12">
  77. <el-form-item label="统一社会信用代码" prop="license">
  78. <el-input type="text" @change="validLicense"
  79. v-model="registerForm.license"
  80. placeholder="请输入统一社会信用代码">
  81. </el-input>
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="12">
  85. <el-form-item label="注册资金" prop="regCapital">
  86. <el-input type="text"
  87. v-model="registerForm.regCapital"
  88. placeholder="请输入注册资金">
  89. <template slot="append">万元</template>
  90. </el-input>
  91. </el-form-item>
  92. </el-col>
  93. <el-col :span="12">
  94. <el-form-item label="工商注册时间" prop="regDate">
  95. <el-date-picker v-model="registerForm.regDate" type="date" placeholder="选择日期" value-format="yyyy-MM-dd"></el-date-picker>
  96. </el-form-item>
  97. </el-col>
  98. <el-col :span="12">
  99. <el-form-item label="工商注册类型" prop="regType">
  100. <el-select v-model="registerForm.regType" filterable>
  101. <el-option v-for="item in regTypeOptions" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"></el-option>
  102. </el-select>
  103. </el-form-item>
  104. </el-col>
  105. <el-col :span="24">
  106. <el-form-item label="主营产品(服务)所属技术领域" prop="mainProductArray">
  107. <el-checkbox-group v-model="registerForm.mainProductArray">
  108. <el-checkbox v-for="(item, index) in mainProductsOptions" :label="item.dictLabel" :key="index">{{item.dictLabel}}</el-checkbox>
  109. </el-checkbox-group>
  110. </el-form-item>
  111. </el-col>
  112. <el-col :span="12">
  113. <el-form-item label="通信地址" prop="address">
  114. <el-input v-model="registerForm.address" type="text" auto-complete="off" placeholder="请输入通信地址">
  115. </el-input>
  116. </el-form-item>
  117. </el-col>
  118. <el-col :span="12">
  119. <el-form-item label="邮政编码" prop="zipCode">
  120. <el-input v-model="registerForm.zipCode" type="text" auto-complete="off" placeholder="请输入邮政编码">
  121. </el-input>
  122. </el-form-item>
  123. </el-col>
  124. <el-col :span="8">
  125. <el-form-item label="企业所属行政区域" prop="provinceId">
  126. <el-select v-model="registerForm.provinceId" placeholder="省" @change="getCityData" style="width: 220px;" filterable>
  127. <el-option v-for="(item,index) in provinceDataList" :key="index" :label="item.name" :value="item.id"></el-option>
  128. </el-select>
  129. </el-form-item>
  130. </el-col>
  131. <el-col :span="7">
  132. <el-form-item prop="cityId" label-width="60px">
  133. <el-select v-model="registerForm.cityId" placeholder="市" @change="getDistrictData" style="width: 220px;" filterable>
  134. <el-option v-for="(item, index) in cityDataList" :key="index" :label="item.name" :value="item.id"></el-option>
  135. </el-select>
  136. </el-form-item>
  137. </el-col>
  138. <el-col :span="8">
  139. <el-form-item label-width="0px" prop="districtId">
  140. <el-select v-model="registerForm.districtId" placeholder="区" style="width: 220px;" filterable>
  141. <el-option v-for="(item, index) in districtDataList" :key="index" :label="item.name" :value="item.id"></el-option>
  142. </el-select>
  143. </el-form-item>
  144. </el-col>
  145. <el-col :span="24">
  146. <el-form-item label="企业所得税主管税务机关" prop="taxOffice">
  147. <el-input v-model="registerForm.taxOffice" type="text" auto-complete="off" placeholder="请输入企业所得税主管税务机关">
  148. </el-input>
  149. </el-form-item>
  150. </el-col>
  151. </el-row>
  152. </el-collapse-item>
  153. <el-collapse-item title="法人信息" name="4">
  154. <el-row :gutter="40">
  155. <el-col :span="12">
  156. <el-form-item label="姓名" prop="legalName">
  157. <el-input v-model="registerForm.legalName" type="text" auto-complete="off" placeholder="请输入法人姓名">
  158. </el-input>
  159. </el-form-item>
  160. </el-col>
  161. <el-col :span="12">
  162. <el-form-item label="身份证号码" prop="legalIdCard">
  163. <el-input v-model="registerForm.legalIdCard" type="text" auto-complete="off" placeholder="请输入法人身份证号码">
  164. </el-input>
  165. </el-form-item>
  166. </el-col>
  167. <el-col :span="12">
  168. <el-form-item label="手机号码" prop="legalMobile">
  169. <el-input v-model="registerForm.legalMobile" type="text" auto-complete="off" placeholder="手机号码">
  170. </el-input>
  171. </el-form-item>
  172. </el-col>
  173. <el-col :span="12">
  174. <el-form-item label="固定电话" prop="legalPhone">
  175. <el-input v-model="registerForm.legalPhone" type="text" auto-complete="off" placeholder="请输入固定电话">
  176. </el-input>
  177. </el-form-item>
  178. </el-col>
  179. <el-col :span="12">
  180. <el-form-item label="传真" prop="legalFax">
  181. <el-input v-model="registerForm.legalFax" type="text" auto-complete="off" placeholder="请输入法人传真">
  182. </el-input>
  183. </el-form-item>
  184. </el-col>
  185. <el-col :span="12">
  186. <el-form-item label="E-mail" prop="legalEmail">
  187. <el-input v-model="registerForm.legalEmail" type="text" auto-complete="off" placeholder="请输入法人邮箱">
  188. </el-input>
  189. </el-form-item>
  190. </el-col>
  191. </el-row>
  192. </el-collapse-item>
  193. <el-collapse-item title="联系人信息" name="5">
  194. <el-row :gutter="40">
  195. <el-col :span="12">
  196. <el-form-item label="姓名" prop="linkName">
  197. <el-input v-model="registerForm.linkName" type="text" auto-complete="off" placeholder="请输入联系人姓名">
  198. </el-input>
  199. </el-form-item>
  200. </el-col>
  201. <el-col :span="12">
  202. <el-form-item label="身份证号码" prop="linkIdCard">
  203. <el-input v-model="registerForm.linkIdCard" type="text" auto-complete="off" placeholder="请输入联系人身份证号码">
  204. </el-input>
  205. </el-form-item>
  206. </el-col>
  207. <el-col :span="12">
  208. <el-form-item label="手机号码" prop="linkMobile">
  209. <el-input v-model="registerForm.linkMobile" type="text" auto-complete="off" placeholder="请填入手机号码">
  210. </el-input>
  211. </el-form-item>
  212. </el-col>
  213. <el-col :span="12">
  214. <el-form-item label="固定电话" prop="linkPhone">
  215. <el-input v-model="registerForm.linkPhone" type="text" auto-complete="off" placeholder="请输入联系人固定电话">
  216. </el-input>
  217. </el-form-item>
  218. </el-col>
  219. <el-col :span="12">
  220. <el-form-item label="传真" prop="linkFax">
  221. <el-input v-model="registerForm.linkFax" type="text" auto-complete="off" placeholder="请输入联系人传真">
  222. </el-input>
  223. </el-form-item>
  224. </el-col>
  225. <el-col :span="12">
  226. <el-form-item label="E-mail" prop="linkEmail">
  227. <el-input v-model="registerForm.linkEmail" type="text" auto-complete="off" placeholder="请输入联系人邮箱">
  228. </el-input>
  229. </el-form-item>
  230. </el-col>
  231. </el-row>
  232. </el-collapse-item>
  233. <el-collapse-item title="企业上市信息" name="6">
  234. <el-row :gutter="40">
  235. <el-col :span="12">
  236. <el-form-item label="企业是否上市" prop="listedFlag">
  237. <el-radio-group v-model="registerForm.listedFlag">
  238. <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
  239. </el-radio-group>
  240. </el-form-item>
  241. </el-col>
  242. <el-col :span="12" v-if="registerForm.listedFlag == 1">
  243. <el-form-item label="企业上市代码" prop="listingCode">
  244. <el-input v-model="registerForm.listingCode" type="text" auto-complete="off" placeholder="请输入企业上市代码">
  245. </el-input>
  246. </el-form-item>
  247. </el-col>
  248. </el-row>
  249. </el-collapse-item>
  250. <el-collapse-item title="风险投资信息" name="7">
  251. <el-row :gutter="40">
  252. <el-col :span="12">
  253. <el-form-item label="是否引入风险投资" prop="investFlag">
  254. <el-radio-group v-model="registerForm.investFlag">
  255. <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
  256. </el-radio-group>
  257. </el-form-item>
  258. </el-col>
  259. <el-col :span="12" v-if="registerForm.investFlag == 1">
  260. <el-form-item label="风险投资金额" prop="investCapital">
  261. <el-input v-model="registerForm.investCapital" type="text" auto-complete="off" placeholder="请输入风险投资金额">
  262. <template slot="append">万元</template>
  263. </el-input>
  264. </el-form-item>
  265. </el-col>
  266. </el-row>
  267. </el-collapse-item>
  268. <el-collapse-item title="高新企业" name="8">
  269. <el-row :gutter="40">
  270. <el-col :span="12">
  271. <el-form-item label="是否为高新企业" prop="techFlag">
  272. <el-radio-group v-model="registerForm.techFlag">
  273. <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
  274. </el-radio-group>
  275. </el-form-item>
  276. </el-col>
  277. <el-col :span="12" v-if="registerForm.techFlag == 1">
  278. <el-form-item label="高新企业编号" prop="techCode">
  279. <el-input v-model="registerForm.techCode" type="text" auto-complete="off" placeholder="请输入高新企业编号">
  280. </el-input>
  281. </el-form-item>
  282. </el-col>
  283. </el-row>
  284. </el-collapse-item>
  285. <el-collapse-item title="上年度是否做加计扣除" name="9">
  286. <el-row :gutter="40">
  287. <el-col :span="12">
  288. <el-form-item label="上年度是否做加计扣除" prop="deductionFlag">
  289. <el-radio-group v-model="registerForm.deductionFlag">
  290. <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
  291. </el-radio-group>
  292. </el-form-item>
  293. </el-col>
  294. </el-row>
  295. </el-collapse-item>
  296. <el-collapse-item title="附件" name="10">
  297. <el-form-item label="企业营业执照" prop="licensePath" ref="licenseUpload">
  298. <ImageUpload @input="handleLicenseSuccess" :params="params" :limit="limit" :value="registerForm.licensePath" :fileSize="fileSize"></ImageUpload>
  299. <!-- <FileUpload :file="{url: registerForm.licensePath, name: registerForm.fileName}" @input="handleSuccess">上传材料</FileUpload> -->
  300. </el-form-item>
  301. <el-form-item label="其他附件" prop="attachIds">
  302. <FileUpload :files="registerForm.fileList" @input="handleSaleSuccess" :multiple="true" :params="params">上传材料</FileUpload>
  303. <el-table v-loading="loading" :data="list" border style="width: 100%;margin-top: 5px;" v-if="dataId">
  304. <el-table-column label="序号" type="index" width="50" align="center"></el-table-column>
  305. <el-table-column label="文件名称" prop="fileName" align="center"></el-table-column>
  306. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  307. <template slot-scope="scope">
  308. <el-button type="text" @click="handleView(scope.row)">查看</el-button>
  309. <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
  310. </template>
  311. </el-table-column>
  312. </el-table>
  313. <!-- <FileUpload :files="registerForm.attachIds" @input="handleSaleSuccess" :multiple="true">上传材料</FileUpload> -->
  314. </el-form-item>
  315. </el-collapse-item>
  316. <el-collapse-item title="文件水印" name="11">
  317. <el-row :gutter="40">
  318. <el-col :span="24">
  319. <el-form-item label="文件水印" prop="logo" ref="logoUpload">
  320. <ImageUpload @input="handleLogoSuccess" :params="params" :limit="limit" :value="registerForm.logo" :fileSize="fileSize"></ImageUpload>
  321. <!-- <ImageUpload @input="handleLogoSuccess"></ImageUpload> -->
  322. </el-form-item>
  323. </el-col>
  324. </el-row>
  325. </el-collapse-item>
  326. </el-collapse>
  327. <el-row :gutter="40">
  328. <el-col :span="24">
  329. <el-form-item style="width:100%;text-align: center;" label-width="0px">
  330. <el-button
  331. :loading="loading"
  332. size="medium"
  333. type="primary"
  334. @click.native.prevent="handleRegister" style="width: 100px;">
  335. <span v-if="!loading">注册</span>
  336. <span v-else>注 册 中...</span>
  337. </el-button>
  338. <el-button size="medium" type="primary" style="width: 100px;" @click="cancel">取消</el-button>
  339. </el-form-item>
  340. </el-col>
  341. </el-row>
  342. </el-form>
  343. </div>
  344. <!-- 底部 -->
  345. <div class="el-register-footer">
  346. <span>Copyright © 2022 All Rights Reserved.</span>
  347. </div>
  348. <el-dialog
  349. :visible.sync="dialogVisible"
  350. title="预览"
  351. width="800"
  352. append-to-body>
  353. <img
  354. :src="dialogImageUrl"
  355. style="display: block; max-width: 100%; margin: 0 auto"/>
  356. </el-dialog>
  357. </div>
  358. </template>
  359. <script>
  360. import { getCodeImg, registerEntApi,getEntUserById,entUserAudit,enterUserNoToken,getEnclosureApi,deleteEnclosureApi } from "@/api/login";
  361. import {getProvinceDataApi,getRegionChildrenApi,validLicenseApi} from "@/api/common/common"
  362. import { regTypeOptions,mainProductsOptions,yesOrNoOptions } from "@/utils/dataFormat"
  363. import FileUpload from '@/components/FileUpload'
  364. import ImageUpload from '@/components/ImageUpload'
  365. import { validIDcard,validAmount} from '@/utils/validate'
  366. import { validNumber } from '@/utils/validate'
  367. export default {
  368. name: "First",
  369. components: {
  370. FileUpload,
  371. ImageUpload
  372. },
  373. data() {
  374. const equalToPassword = (rule, value, callback) => {
  375. if (this.registerForm.password !== value) {
  376. callback(new Error("两次输入的密码不一致"));
  377. } else {
  378. callback();
  379. }
  380. };
  381. return {
  382. tokenVisile: false,
  383. limit: 1, //长传图片数量
  384. fileSize: 1,
  385. params: {
  386. attachType: 'ENT',
  387. dataId: ''
  388. },
  389. dialogVisible: false,
  390. dialogImageUrl: "",
  391. activeNames: ['1','2','3','4','5','6','7','8','9','10', '11'],
  392. provinceName: '',
  393. attachType: 'ENT',
  394. dataId: '',
  395. list: [],
  396. token: '',
  397. cityName: '',
  398. districtName: '',
  399. codeUrl: "",
  400. regTypeOptions: regTypeOptions,
  401. mainProductsOptions: mainProductsOptions,
  402. yesOrNoOptions: yesOrNoOptions,
  403. provinceDataList: [],
  404. cityDataList: [],
  405. districtDataList: [],
  406. registerForm: {
  407. startDate: '',
  408. endDate: '',
  409. attachIds: [],
  410. provinceId: '',
  411. cityId: '',
  412. districtId: '',
  413. mainProductArray: ['电子信息'],
  414. mainProducts: '',
  415. userName: "",
  416. password: "",
  417. confirmPassword: "",
  418. techFlag: 1,
  419. listedFlag: 1,
  420. investFlag: 1,
  421. deductionFlag: 1
  422. },
  423. registerRules: {
  424. userName: [
  425. { required: true, trigger: "blur", message: "请输入您的账号" },
  426. { min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' }
  427. ],
  428. password: [
  429. { required: true, trigger: "blur", message: "请输入您的密码" },
  430. { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
  431. ],
  432. confirmPassword: [
  433. { required: true, trigger: "blur", message: "请再次输入您的密码" },
  434. { required: true, validator: equalToPassword, trigger: "blur" }
  435. ],
  436. nickName: [
  437. { required: true, trigger: "blur", message: "请输入姓名" },
  438. {max: 30, message: '最多输入30个字符', trigger: 'blur' }
  439. ],
  440. phonenumber: [
  441. { required: true, trigger: "blur", message: "请输入手机号" },
  442. {
  443. pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
  444. message: "请输入正确的手机号码",
  445. trigger: "blur"
  446. }
  447. ],
  448. email: [
  449. { required: true, trigger: ["blur", "change"], message: "请输入邮箱",type: "email", },
  450. ],
  451. entName: [
  452. { required: true, trigger: "blur", message: "请输入企业名称" },
  453. {max: 30, message: '最多输入30个字符', trigger: 'blur' }
  454. ],
  455. license: [
  456. { required: true, trigger: "blur", message: "请输入统一社会信用代码" },
  457. {min: 18,max: 18, message: '请输入正确的统一社会信用代码格式', trigger: 'blur' }
  458. ],
  459. regCapital: [
  460. { required: true, trigger: "blur", message: "请输入注册资金" },
  461. { validator: validAmount, trigger: 'blur'}
  462. ],
  463. regDate: [
  464. { required: true, trigger: "change", message: "请选择工商注册时间" },
  465. ],
  466. regType: [
  467. { required: true, trigger: "change", message: "请选择工商注册类型" },
  468. ],
  469. mainProductArray: [
  470. { type: 'array', required: true, message: '请至少选择一个主营产品(服务)所属技术领域', trigger: 'change' }
  471. ],
  472. address: [
  473. { required: true, trigger: "blur", message: "请输入通信地址" },
  474. {max: 50, message: '最多输入50个字符', trigger: 'blur' }
  475. ],
  476. zipCode: [
  477. { required: true, trigger: "blur", message: "请输入邮政编码" },
  478. { validator: validNumber, trigger: 'blur'},
  479. {max: 6, message: '最多输入6位数字', trigger: 'blur' }
  480. ],
  481. provinceId: [
  482. { required: true, trigger: "change", message: "请选择省份" },
  483. ],
  484. cityId: [
  485. { required: true, trigger: "change", message: "请选择市" },
  486. ],
  487. districtId: [
  488. { required: true, trigger: "change", message: "请选择区" },
  489. ],
  490. taxOffice: [
  491. { required: true, trigger: "blur", message: "企业所得税主管税务机关" },
  492. {max: 30, message: '最多输入30个字符', trigger: 'blur' }
  493. ],
  494. legalName: [
  495. { required: true, trigger: "blur", message: "请输入姓名" },
  496. {max: 30, message: '最多输入30个字符', trigger: 'blur' }
  497. ],
  498. legalIdCard: [
  499. { required: true, trigger: "blur", message: "请输入身份证号码" },
  500. { validator: validIDcard, trigger: 'blur'}
  501. ],
  502. legalMobile: [
  503. { required: true, trigger: "blur", message: "请输入手机号码" },
  504. {
  505. pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
  506. message: "请输入正确的手机号码",
  507. trigger: "blur"
  508. }
  509. ],
  510. linkName: [
  511. { required: true, trigger: "blur", message: "请输入姓名" },
  512. {max: 30, message: '最多输入30个字符', trigger: 'blur' }
  513. ],
  514. linkIdCard: [
  515. { required: true, trigger: "blur", message: "请输入身份证号码" },
  516. { validator: validIDcard, trigger: 'blur'}
  517. ],
  518. linkMobile: [
  519. { required: true, trigger: "blur", message: "请输入手机号码" },
  520. {
  521. pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
  522. message: "请输入正确的手机号码",
  523. trigger: "blur"
  524. }
  525. ],
  526. listedFlag: [
  527. { required: true, trigger: "change", message: "请选择企业是否上市" },
  528. ],
  529. listingCode: [
  530. { required: true, trigger: "blur", message: "请输入企业上市代码" },
  531. {max: 30, message: '最多输入30个字符', trigger: 'blur' }
  532. ],
  533. investFlag: [
  534. { required: true, trigger: "change", message: "请选择是否引入风险投资" },
  535. ],
  536. investCapital: [
  537. { required: true, trigger: "blur", message: "请输入风险投资金额" },
  538. { validator: validAmount, trigger: 'blur'}
  539. ],
  540. techFlag: [
  541. { required: true, trigger: "change", message: "请选择是否为高新企业" },
  542. ],
  543. techCode: [
  544. { required: true, trigger: "blur", message: "请输入高新企业编号" },
  545. {max: 30, message: '最多输入30个字符', trigger: 'blur' }
  546. ],
  547. deductionFlag: [
  548. { required: true, trigger: "change", message: "请选择是否做加计扣除" },
  549. ],
  550. licensePath: [
  551. { required: true, trigger: "change", message: "请上传营业执照附件" },
  552. ],
  553. logo: [
  554. { required: true, trigger: "change", message: "请上传文件水印" },
  555. ]
  556. },
  557. loading: false,
  558. captchaOnOff: true
  559. };
  560. },
  561. created() {
  562. this.getCode();
  563. this.getProvinceData()
  564. this.token = this.$route.params.token || ''
  565. if(this.token) {
  566. this.getData()
  567. this.tokenVisile = false
  568. this.activeName = '3'
  569. }else {
  570. this.tokenVisile = true
  571. this.activeName = '1'
  572. }
  573. },
  574. methods: {
  575. validLicense(val) {
  576. validLicenseApi(val).then(res => {
  577. // true存在
  578. if(res.data) {
  579. this.$message.error('统一社会信用代码已经存在,不可以重复注册');
  580. }
  581. })
  582. },
  583. getEnclosureData() {
  584. getEnclosureApi(this.token,this.attachType, this.dataId).then(res => {
  585. this.list = res.data.records
  586. })
  587. },
  588. getData() {
  589. this.loading = true
  590. getEntUserById(this.token).then(res => {
  591. this.loading = false
  592. this.registerForm = res.data || {}
  593. this.dataId = res.data.id || {}
  594. if(this.dataId) {
  595. this.getEnclosureData()
  596. }
  597. let mainProductArray = this.registerForm.mainProducts.split(',') || ['电子信息'];
  598. this.$set(this.registerForm, 'mainProductArray', mainProductArray);
  599. this.registerForm.provinceId = res.data.provinceId
  600. if(this.registerForm.provinceId) {
  601. getRegionChildrenApi(this.registerForm.provinceId).then(res => {
  602. if(res.code == 200) {
  603. this.cityDataList = res.data
  604. }
  605. })
  606. }
  607. if(this.registerForm.cityId) {
  608. getRegionChildrenApi(this.registerForm.cityId).then(res => {
  609. if(res.code == 200) {
  610. this.districtDataList = res.data
  611. }
  612. })
  613. }
  614. })
  615. },
  616. handleSuccess(file) {
  617. this.registerForm.licensePath = file.url;
  618. this.registerForm.fileName = file.name;
  619. },
  620. // handleSaleSuccess(files) {
  621. // files.forEach(item => {
  622. // this.registerForm.attachIds.push(item.response.data.id)
  623. // });
  624. // },
  625. handleSaleSuccess(files) {
  626. this.registerForm.fileList = files
  627. this.registerForm.attachIds = []
  628. files.forEach(item => {
  629. this.registerForm.attachIds.push(item.response.data.id)
  630. });
  631. },
  632. handleLogoSuccess(file) {
  633. this.registerForm.logo = file
  634. },
  635. handleLicenseSuccess(file) {
  636. this.registerForm.licensePath = file
  637. this.$refs.licenseUpload.clearValidate()
  638. },
  639. handleView(row) {
  640. // 获取文件路径
  641. const fileUrl = row.url
  642. // 获取最后一个.的位置
  643. const index = fileUrl.lastIndexOf(".")
  644. // 获取后缀
  645. const ext = fileUrl.substr(index+1)
  646. if(ext == 'jpg' || ext == 'png' || ext == 'jpeg') {
  647. this.dialogVisible = true
  648. this.dialogImageUrl = fileUrl
  649. }else {
  650. window.open(fileUrl)
  651. }
  652. },
  653. handleDelete(row) {
  654. const id = row.id;
  655. this.$confirm('是否确认删除该数据?', "警告", {
  656. confirmButtonText: "确定",
  657. cancelButtonText: "取消",
  658. type: "warning"
  659. }).then(function() {
  660. return deleteEnclosureApi(this.token,id);
  661. }).then(() => {
  662. this.getEnclosureData()
  663. this.$modal.msgSuccess("删除成功");
  664. })
  665. },
  666. //选择省份
  667. getCityData() {
  668. this.registerForm.cityId = ''
  669. this.registerForm.districtId = ''
  670. getRegionChildrenApi(this.registerForm.provinceId).then(res => {
  671. if(res.code == 200) {
  672. this.cityDataList = res.data
  673. let obj = this.provinceDataList.find(item => {
  674. return item.id == this.registerForm.provinceId
  675. })
  676. this.provinceName = obj.name
  677. this.registerForm.taxOffice = '国家税务总局'+this.provinceName+'税务局'
  678. }
  679. })
  680. },
  681. //选择市
  682. getDistrictData() {
  683. this.registerForm.districtId = ''
  684. getRegionChildrenApi(this.registerForm.cityId).then(res => {
  685. if(res.code == 200) {
  686. this.districtDataList = res.data
  687. let obj = this.cityDataList.find(item => {
  688. return item.id == this.registerForm.cityId
  689. })
  690. this.cityName = obj.name
  691. this.registerForm.taxOffice = '国家税务总局'+this.cityName+'税务局'
  692. }
  693. })
  694. },
  695. changeDistrict() {
  696. let obj = this.districtDataList.find(item => {
  697. return item.id == this.registerForm.districtId
  698. })
  699. this.districtName = obj.name
  700. this.registerForm.taxOffice = '国家税务总局'+this.districtName+'税务局'
  701. },
  702. getProvinceData() {
  703. getProvinceDataApi().then(res => {
  704. if(res.code == 200) {
  705. this.provinceDataList = res.data
  706. }
  707. })
  708. },
  709. getCode() {
  710. getCodeImg().then(res => {
  711. this.captchaOnOff = res.captchaOnOff === undefined ? true : res.captchaOnOff;
  712. if (this.captchaOnOff) {
  713. this.codeUrl = "data:image/gif;base64," + res.img;
  714. this.registerForm.uuid = res.uuid;
  715. }
  716. });
  717. },
  718. cancel() {
  719. this.$router.go(-1);
  720. },
  721. handleRegister() {
  722. this.registerForm.mainProducts = this.registerForm.mainProductArray.join(',')
  723. validLicenseApi(this.registerForm.license).then(res => {
  724. // true存在
  725. if(res.data) {
  726. this.$message.error('统一社会信用代码已经存在,不可以重复注册');
  727. return
  728. }
  729. })
  730. this.$refs.registerForm.validate(valid => {
  731. if (valid) {
  732. this.loading = true;
  733. if(this.token) {
  734. entUserAudit(this.token, this.registerForm).then(res => {
  735. this.$alert("注册信息修改成功", '系统提示', {
  736. dangerouslyUseHTMLString: true,
  737. type: 'success'
  738. }).then(() => {
  739. this.$store.dispatch('LogOut').then(() => {
  740. this.$router.push("/login");
  741. })
  742. }).catch(() => {});
  743. }).catch(() => {
  744. this.loading = false;
  745. // if (this.captchaOnOff) {
  746. // this.getCode();
  747. // }
  748. })
  749. }else {
  750. registerEntApi(this.registerForm).then(res => {
  751. const userName = this.registerForm.userName;
  752. this.$alert("<font color='red'>恭喜你,您的账号 " + userName + " 注册成功!</font>", '系统提示', {
  753. dangerouslyUseHTMLString: true,
  754. type: 'success'
  755. }).then(() => {
  756. this.$router.push("/login");
  757. }).catch(() => {});
  758. }).catch(() => {
  759. this.loading = false;
  760. // if (this.captchaOnOff) {
  761. // this.getCode();
  762. // }
  763. })
  764. }
  765. }
  766. });
  767. }
  768. }
  769. };
  770. </script>
  771. <style rel="stylesheet/scss" lang="scss">
  772. .title-reg {
  773. position: fixed;
  774. z-index: 999;
  775. top: 0;
  776. right: 0;
  777. left: 0;
  778. width: 100%;
  779. height: 45px;
  780. line-height: 45px;
  781. padding: 20px;
  782. background-color: #1890ff;
  783. img {
  784. left: 0;
  785. }
  786. }
  787. .top-fixed {
  788. width: 100%;
  789. height: 45px;
  790. }
  791. .top-img {
  792. float: right;
  793. margin-top: -64px;
  794. }
  795. .register {
  796. display: flex;
  797. justify-content: center;
  798. align-items: center;
  799. height: 900px;
  800. overflow-y: auto;
  801. scroll-behavior: auto;
  802. background-image: url("../../assets/images/login-background.jpg");
  803. background-size: cover;
  804. }
  805. .title {
  806. margin: 0px auto 30px auto;
  807. text-align: center;
  808. color: #FFFFFF;
  809. }
  810. .register-form {
  811. border-radius: 6px;
  812. background: #ffffff;
  813. width: 1200px;
  814. height: 800px;
  815. overflow-y: auto;
  816. padding: 25px 25px 5px 25px;
  817. .el-input {
  818. height: 38px;
  819. input {
  820. height: 38px;
  821. }
  822. }
  823. .input-icon {
  824. height: 39px;
  825. width: 14px;
  826. margin-left: 2px;
  827. }
  828. }
  829. .register-tip {
  830. font-size: 13px;
  831. text-align: center;
  832. color: #bfbfbf;
  833. }
  834. .register-code {
  835. width: 33%;
  836. height: 38px;
  837. float: right;
  838. img {
  839. cursor: pointer;
  840. vertical-align: middle;
  841. }
  842. }
  843. .el-register-footer {
  844. height: 40px;
  845. line-height: 40px;
  846. position: fixed;
  847. bottom: 0;
  848. width: 100%;
  849. text-align: center;
  850. color: #fff;
  851. font-family: Arial;
  852. font-size: 12px;
  853. letter-spacing: 1px;
  854. }
  855. .register-code-img {
  856. height: 38px;
  857. }
  858. /* =============自定义样式============== */
  859. $border: #ddd;
  860. /* 工具栏 */
  861. .toolbar {
  862. margin: 0 0 15px;
  863. &>.title {
  864. position: relative;
  865. padding-left: 15px;
  866. margin-right: 15px;
  867. font-size: 16px;
  868. line-height: 28px;
  869. font-weight: bold;
  870. color: #363636;
  871. &:before {
  872. content: "";
  873. display: block;
  874. position: absolute;
  875. left: 0;
  876. top: 50%;
  877. transform: translate(0, -50%);
  878. width: 5px;
  879. height: 16px;
  880. background-color: #409EFF;
  881. }
  882. }
  883. &:after {
  884. content: "";
  885. clear: both;
  886. display: block;
  887. }
  888. &>.tip {
  889. display: inline-block;
  890. font-size: 14px;
  891. font-weight: normal;
  892. color: #666;
  893. }
  894. }
  895. </style>