edit.vue 36 KB

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