edit.vue 31 KB

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