el-formTable.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933
  1. <template>
  2. <div>
  3. <div>
  4. <div class="flex-title">需求申请单</div>
  5. <el-form
  6. ref="form"
  7. :model="form"
  8. :rules="rule"
  9. label-width="130px"
  10. style="margin-top: 30px"
  11. :disabled="disabled"
  12. >
  13. <div class="flex-header">
  14. <el-form-item label="需求名称:" prop="needName">
  15. <el-input v-model="form.needName"></el-input>
  16. </el-form-item>
  17. <el-form-item label="申请部门:" prop="applyDept">
  18. <el-input v-model="form.applyDept"></el-input>
  19. </el-form-item>
  20. <el-form-item label="申请科室:" prop="applyDepartment">
  21. <el-input v-model="form.applyDepartment"></el-input>
  22. </el-form-item>
  23. <el-form-item label="提出人:" prop="proposer">
  24. <el-input v-model="form.proposer"></el-input>
  25. </el-form-item>
  26. </div>
  27. <div class="flex-header">
  28. <el-form-item label="需求决策编号:">
  29. <el-input v-model="form.needNo" :disabled="true"></el-input>
  30. </el-form-item>
  31. <el-form-item label="需求来源:" prop="needSource">
  32. <el-select v-model="form.needSource" placeholder="请选择">
  33. <el-option
  34. v-for="(item, index) in options"
  35. :label="item.label"
  36. :value="item.label"
  37. :key="index"
  38. ></el-option>
  39. </el-select>
  40. </el-form-item>
  41. </div>
  42. <div class="flex-input-tare flex-header">
  43. <el-form-item
  44. label="需求背景及目的"
  45. label-width="120px"
  46. prop="needBackdrop"
  47. >
  48. <el-input type="textarea" v-model="form.needBackdrop"></el-input>
  49. </el-form-item>
  50. </div>
  51. <div class="flex-input-tare flex-header">
  52. <el-form-item label="需求内容" label-width="120px" prop="needContent">
  53. <el-input type="textarea" v-model="form.needContent"></el-input>
  54. </el-form-item>
  55. </div>
  56. <div class="flex-header">
  57. <el-form-item label="重要程度:" prop="importance">
  58. <el-select v-model="form.importance" placeholder="请选择">
  59. <el-option label="重要" value="重要"></el-option>
  60. <el-option label="普通" value="普通"></el-option>
  61. </el-select>
  62. </el-form-item>
  63. <el-form-item
  64. label="是否数智化需求:"
  65. label-width="130px"
  66. prop="isDigitization"
  67. >
  68. <el-select v-model="form.isDigitization" placeholder="请选择">
  69. <el-option label="是" value="是"></el-option>
  70. <el-option label="否" value="否"></el-option>
  71. </el-select>
  72. </el-form-item>
  73. <el-form-item
  74. label="是否七大工程需求:"
  75. label-width="140px"
  76. prop="isSevenProject"
  77. >
  78. <el-select v-model="form.isSevenProject" placeholder="请选择">
  79. <el-option label="是" value="是"></el-option>
  80. <el-option label="否" value="否"></el-option>
  81. </el-select>
  82. </el-form-item>
  83. <el-form-item label="是否需求目录框架需求:" label-width="160px">
  84. <el-select v-model="form.isMarketMeeting" placeholder="请选择">
  85. <el-option label="是" value="是"></el-option>
  86. <el-option label="否" value="否"></el-option>
  87. </el-select>
  88. </el-form-item>
  89. </div>
  90. <div class="flex-header">
  91. <el-form-item label="一级目录:">
  92. <el-select v-model="form.firstDirectory" placeholder="一级目录">
  93. <el-option
  94. v-for="(item, index) in oneList"
  95. :label="item.categoryName"
  96. :value="item.categoryName"
  97. :key="index"
  98. >{{ item.categoryName }}</el-option
  99. >
  100. </el-select>
  101. </el-form-item>
  102. <el-form-item label="二级目录:" v-if="twoStatus">
  103. <el-select v-model="form.secondDirectory" placeholder="二级目录">
  104. <el-option
  105. v-for="(item, index) in twoList"
  106. :label="item.categoryName"
  107. :value="item.categoryName"
  108. :key="index"
  109. >{{ item.categoryName }}</el-option
  110. >
  111. </el-select>
  112. </el-form-item>
  113. <el-form-item label="三级目录:" v-if="threeStatus">
  114. <el-select v-model="form.thirdDirectory" placeholder="三级目录">
  115. <el-option
  116. v-for="(item, index) in threeList"
  117. :label="item.categoryName"
  118. :value="item.categoryName"
  119. :key="index"
  120. >{{ item.categoryName }}</el-option
  121. >
  122. </el-select>
  123. </el-form-item>
  124. </div>
  125. <div class="flex-header">
  126. <el-form-item label="四级目录:" v-if="fourStatus">
  127. <el-select v-model="form.fourthDirectory" placeholder="四级目录">
  128. <el-option
  129. v-for="(item, index) in fourList"
  130. :label="item.categoryName"
  131. :value="item.categoryName"
  132. :key="index"
  133. >{{ item.categoryName }}</el-option
  134. >
  135. </el-select>
  136. </el-form-item>
  137. <el-form-item label="五级目录:" v-if="fiveStatus">
  138. <el-select v-model="form.fifthDirectory" placeholder="五级目录">
  139. <el-option
  140. v-for="(item, index) in fiveList"
  141. ::label="item.categoryName"
  142. :value="item.categoryName"
  143. :key="index"
  144. >{{ item.categoryName }}</el-option
  145. >
  146. </el-select>
  147. </el-form-item>
  148. <el-form-item label="系统归属:">
  149. <el-input v-model="form.sysBelong" disabled></el-input>
  150. </el-form-item>
  151. </div>
  152. <div class="flex-header">
  153. <el-form-item label="功能开发承载平台:" label-width="130px">
  154. <el-input v-model="form.functionBearPlatform"></el-input>
  155. </el-form-item>
  156. <el-form-item label="功能展示应用平台:" label-width="130px">
  157. <el-input v-model="form.functionShowPlatform"></el-input>
  158. </el-form-item>
  159. </div>
  160. <div class="flex-header">
  161. <el-form-item label="需求类型:">
  162. <el-select
  163. v-model="form.needType"
  164. placeholder="请选择"
  165. @change="changeSelect"
  166. >
  167. <el-option label="功能开发类" value="功能开发类"></el-option>
  168. <el-option label="报表开发类" value="报表开发类"></el-option>
  169. <el-option label="数智类" value="数智类"></el-option>
  170. <el-option
  171. label="功能开发和报表开发类"
  172. value="功能开发和报表开发类"
  173. ></el-option>
  174. </el-select>
  175. </el-form-item>
  176. <el-form-item label="需求功能时效:">
  177. <el-select v-model="form.needAging" placeholder="请选择">
  178. <el-option label="固定时限" value="固定时限"></el-option>
  179. <el-option label="长期有效" value="长期有效"></el-option>
  180. </el-select>
  181. </el-form-item>
  182. <el-form-item label="功能到期时间:">
  183. <el-date-picker
  184. type="date"
  185. :disabled="timeStatus"
  186. placeholder="选择日期"
  187. v-model="form.dueTime"
  188. value-format="yyyy-MM-dd"
  189. style="width: 100%"
  190. ></el-date-picker>
  191. </el-form-item>
  192. </div>
  193. <div v-if="functionStatus">
  194. <div class="flex-title" style="color: #0783cd">
  195. 功能开发类,数智类填写
  196. </div>
  197. <div class="flex-header">
  198. <el-form-item label="是否涉及敏感信息:" label-width="130px">
  199. <el-select v-model="form.isSensitiveData" placeholder="请选择">
  200. <el-option label="是" value="是"></el-option>
  201. <el-option label="否" value="否"></el-option>
  202. </el-select>
  203. </el-form-item>
  204. <el-form-item label="敏感信息范围:">
  205. <el-input
  206. v-model="form.sensitiveRange"
  207. :disabled="isSensitiveDataStatus"
  208. ></el-input>
  209. </el-form-item>
  210. </div>
  211. <div class="flex-header">
  212. <el-form-item label="上线配合测试地市:" label-width="130px">
  213. <el-input v-model="form.onlineTestCity"></el-input>
  214. </el-form-item>
  215. </div>
  216. <div class="flex-header">
  217. <el-form-item label="功能完成时间:" label-width="130px">
  218. <el-date-picker
  219. type="date"
  220. placeholder="选择日期"
  221. v-model="form.doneTime"
  222. value-format="yyyy-MM-dd"
  223. style="width: 100%"
  224. ></el-date-picker>
  225. </el-form-item>
  226. <el-form-item label="是否需要模糊化:" label-width="120px">
  227. <el-select v-model="form.isVaguev" placeholder="请选择">
  228. <el-option label="是" value="是"></el-option>
  229. <el-option label="否" value="否"></el-option>
  230. </el-select>
  231. </el-form-item>
  232. <el-form-item label="是否需要纳入金库模式:" label-width="160px">
  233. <el-select v-model="form.isVaultMode" placeholder="请选择">
  234. <el-option label="是" value="是"></el-option>
  235. <el-option label="否" value="否"></el-option>
  236. </el-select>
  237. </el-form-item>
  238. </div>
  239. </div>
  240. <div v-if="reportStatus">
  241. <div class="flex-title" style="color: #d93f3f">报表开发类填写</div>
  242. <div class="flex-header">
  243. <el-form-item label="具体业务:">
  244. <el-input v-model="form.justBusiness"></el-input>
  245. </el-form-item>
  246. </div>
  247. <div class="flex-header">
  248. <el-form-item label="展现周期:">
  249. <el-select v-model="form.showCycle" placeholder="请选择">
  250. <el-option label="日" value="日"></el-option>
  251. <el-option label="周" value="周"></el-option>
  252. <el-option label="月" value="月"></el-option>
  253. <el-option label="季度" value="季度"></el-option>
  254. <el-option label="年" value="年"></el-option>
  255. </el-select>
  256. </el-form-item>
  257. <el-form-item label="展现类型:">
  258. <el-select v-model="form.showType" placeholder="请选择">
  259. <el-option label="报表" value="报表"></el-option>
  260. <el-option label="模型" value="模型"></el-option>
  261. <el-option label="明细" value="明细"></el-option>
  262. </el-select>
  263. </el-form-item>
  264. <el-form-item label="数据粒度:">
  265. <el-select v-model="form.dataSize" placeholder="请选择">
  266. <el-option label="统计" value="统计"></el-option>
  267. <el-option label="明细" value="明细"></el-option>
  268. <el-option label="综合" value="综合"></el-option>
  269. </el-select>
  270. </el-form-item>
  271. </div>
  272. </div>
  273. <div class="flex-header" style="display: flex; flex-direction: column">
  274. <el-form-item label="附件:">
  275. <my-upload
  276. @uploadBack="uploadBack"
  277. @clickDownload="download"
  278. :fileInfo="fileInfo"
  279. :fileList="list.mkFileShareAttachList"
  280. style="width: 30% !important"
  281. ></my-upload>
  282. </el-form-item>
  283. <div @click="downExcel" class="el-upload__tip" slot="tip">
  284. 备注内容:PPT(非市场部需求以及市场部非框架内需求需要通过市场决策会决议,请上传ppt)、《业务需求模板.xlsx》《后评估模板.xlsx》
  285. 《敏感信息范围说明.xlsx》填写并上传。
  286. </div>
  287. </div>
  288. <!-- 处理人意见模块 -->
  289. <!-- 流程追踪模块 -->
  290. </el-form>
  291. </div>
  292. <div></div>
  293. <div></div>
  294. </div>
  295. </template>
  296. <script>
  297. import myUpload from "../../../../components/upload";
  298. export default {
  299. components: {
  300. myUpload,
  301. },
  302. data() {
  303. return {
  304. fileInfo: {
  305. type: "bt1n",
  306. typename: "上传文件",
  307. limit: 5,
  308. url: "/market/waf/upload",
  309. fileList: [],
  310. },
  311. oneList: [],
  312. childrenList: [],
  313. twoList: [],
  314. twoStatus: false,
  315. threeList: [],
  316. threeStatus: false,
  317. fourList: [],
  318. fourStatus: false,
  319. fiveList: [],
  320. fiveStatus: false,
  321. isSensitiveDataStatus: false,
  322. timeStatus: false,
  323. functionStatus: false,
  324. reportStatus: false,
  325. Length: "",
  326. form: {
  327. // needName: "", //需求名称
  328. // applyDept: "", //申请部门
  329. // applyDepartment: "", //申请科室
  330. // proposer: "", //提出人
  331. // needNo: "", //需求决策编号
  332. // line: "", //线条?????
  333. // needSource: "", //需求来源
  334. // needBackdrop: "", //需求背景
  335. // needContent: "", //需求内容
  336. // importance: "", //重要程度
  337. // isDigitization: "", //是否数智化
  338. // isSevenProject: "", //是否七大工程需求
  339. // isMarketMeeting: "", //是否需要通过市场决策会
  340. // first_directory: "", //一级目录
  341. // second_directory: "", //二级目录
  342. // third_directory: "", //三级目录
  343. // fourth_directory: "", //四级目录
  344. // fifth_directory: "", //五级目录
  345. // sys_belong: "", //系统归属
  346. // function_bear_platform: "", //功能开发承载平台
  347. // function_show_platform: "", //功能展示应用平台
  348. // need_type: "", //需求类型
  349. // need_aging: "", //需求功能时效
  350. // due_time: "", //功能到期时间
  351. // is_sensitive_data: "", //是否涉及敏感信息
  352. // sensitive_range: "", //敏感信息范围
  353. // online_test_city: "", //上线配合测试城市
  354. // done_time: "", //期待完成时间
  355. // is_vaguev: "", //是否需要模糊化
  356. // is_vault_mode: "", //是否金库模式
  357. // just_business: "", //具体业务
  358. // show_cycle: "", //展现周期
  359. // show_type: "", //展现类型
  360. // data_size: "", //数据粒度
  361. // append_id: "", //附件id
  362. // state: "", //状态
  363. // dept_person_opinion: "", //部门人员处理意见
  364. // dept_leader_opinion: "", //部门领导处理意见
  365. // market_admin_opinion: "", //市场需求管理员处理意见
  366. },
  367. options: [
  368. {
  369. label: "1-免上会-集团需求",
  370. value: 0,
  371. },
  372. {
  373. label: "2-免上会-接口联调",
  374. value: 1,
  375. },
  376. {
  377. label: "3-免上会-短信类",
  378. value: 2,
  379. },
  380. {
  381. label: "4-免上会-报表类",
  382. value: 3,
  383. },
  384. {
  385. label: "5-免上会-提数类",
  386. value: 4,
  387. },
  388. {
  389. label: "6-免上会-功能优化类",
  390. value: 5,
  391. },
  392. {
  393. label: "7-免上会-查询类",
  394. value: 6,
  395. },
  396. {
  397. label: "8-免上会-界面优化类",
  398. value: 7,
  399. },
  400. {
  401. label: "9-免上会-数智应用类",
  402. value: 8,
  403. },
  404. {
  405. label: "10-免上会-酬金规则类",
  406. value: 9,
  407. },
  408. {
  409. label: "11-需审议(需求复杂,需要重点审议)",
  410. value: 10,
  411. },
  412. ],
  413. timeRule: {
  414. doneTime: [
  415. { required: true, message: "请选择正确的时间", trigger: "change" },
  416. ],
  417. },
  418. rules: {
  419. firstDirectory: [
  420. { required: true, message: "请选择一级目录", trigger: "change" },
  421. ],
  422. secondDirectory: [
  423. { required: true, message: "请选择二级目录", trigger: "change" },
  424. ],
  425. thirdDirectory: [
  426. { required: true, message: "请选择三级目录", trigger: "change" },
  427. ],
  428. fourthDirectory: [
  429. { required: true, message: "请选择四级目录", trigger: "change" },
  430. ],
  431. fifthDirectory: [
  432. { required: true, message: "请选择五级目录", trigger: "change" },
  433. ],
  434. },
  435. rule: {
  436. needName: [
  437. { required: true, message: "请输入需求名称", trigger: "blur" },
  438. ],
  439. applyDept: [
  440. { required: true, message: "请输入申请部门", trigger: "blur" },
  441. ],
  442. applyDepartment: [
  443. { required: true, message: "请输入申请课室", trigger: "blur" },
  444. ],
  445. proposer: [
  446. { required: true, message: "请输入提出人", trigger: "blur" },
  447. ],
  448. needSource: [
  449. { required: true, message: "请输入需求来源", trigger: "change" },
  450. ],
  451. needBackdrop: [
  452. { required: true, message: "请输入需求背景", trigger: "blur" },
  453. {
  454. min: 1,
  455. max: 300,
  456. message: "长度在 1 到 300 个字符",
  457. trigger: "blur",
  458. },
  459. ],
  460. needContent: [
  461. { required: true, message: "请输入需求内容", trigger: "blur" },
  462. {
  463. min: 1,
  464. max: 300,
  465. message: "长度在 1 到 300 个字符",
  466. trigger: "blur",
  467. },
  468. ],
  469. importance: [
  470. { required: true, message: "请选择重要程度", trigger: "change" },
  471. ],
  472. isDigitization: [
  473. { required: true, message: "请选择", trigger: "change" },
  474. ],
  475. isSevenProject: [
  476. { required: true, message: "请选择七大工程需求", trigger: "change" },
  477. ],
  478. needName: [
  479. { required: true, message: "请输入需求名称", trigger: "blur" },
  480. ],
  481. needName: [
  482. { required: true, message: "请输入需求名称", trigger: "blur" },
  483. ],
  484. needName: [
  485. { required: true, message: "请输入需求名称", trigger: "blur" },
  486. ],
  487. needName: [
  488. { required: true, message: "请输入需求名称", trigger: "blur" },
  489. ],
  490. needName: [
  491. { required: true, message: "请输入需求名称", trigger: "blur" },
  492. ],
  493. needName: [
  494. { required: true, message: "请输入需求名称", trigger: "blur" },
  495. ],
  496. needName: [
  497. { required: true, message: "请输入需求名称", trigger: "blur" },
  498. ],
  499. needName: [
  500. { required: true, message: "请输入需求名称", trigger: "blur" },
  501. ],
  502. needName: [
  503. { required: true, message: "请输入需求名称", trigger: "blur" },
  504. ],
  505. needName: [
  506. { required: true, message: "请输入需求名称", trigger: "blur" },
  507. ],
  508. },
  509. isList: [],
  510. };
  511. },
  512. props: {
  513. list: {
  514. type: Object,
  515. default: () => {},
  516. },
  517. disabled: {
  518. type: Boolean,
  519. default: () => {},
  520. },
  521. },
  522. created() {
  523. this.getOneList();
  524. this.form = this.list;
  525. this.isList = this.list;
  526. if (this.list.secondDirectory) {
  527. this.twoStatus = true;
  528. }
  529. if (this.list.thirdDirectory) {
  530. this.threeStatus = true;
  531. }
  532. if (this.list.fourthDirectory) {
  533. this.fourStatus = true;
  534. }
  535. if (this.list.fifthDirectory) {
  536. this.fiveStatus = true;
  537. }
  538. },
  539. watch: {
  540. "form.doneTime": {
  541. handler(newVal) {
  542. if (newVal) {
  543. let changeTime = newVal.toString().replace("/-/g", "/");
  544. let nowTime = new Date(changeTime).getTime();
  545. if (nowTime <= new Date().getTime()) {
  546. this.$message.error("请选择正确的时间");
  547. this.rule = { ...this.rule, ...this.timeRule };
  548. }
  549. }
  550. },
  551. },
  552. "form.isMarketMeeting": {
  553. handler(newVal, oldVal) {
  554. if (newVal === "是") {
  555. this.rule = { ...this.rule, ...this.rules };
  556. }
  557. },
  558. },
  559. "form.needType": {
  560. handler(e, q) {
  561. if (e == "功能开发类" || e == "数智类") {
  562. this.functionStatus = true;
  563. this.reportStatus = false;
  564. } else if (e == "报表开发类") {
  565. this.reportStatus = true;
  566. this.functionStatus = false;
  567. } else {
  568. this.functionStatus = true;
  569. this.reportStatus = true;
  570. }
  571. },
  572. },
  573. "form.isSensitiveData": {
  574. handler(newVal, oldVal) {
  575. if (newVal == "否") {
  576. this.isSensitiveDataStatus = true;
  577. this.form.sensitiveRange = "";
  578. } else {
  579. this.isSensitiveDataStatus = false;
  580. }
  581. },
  582. },
  583. "form.firstDirectory": {
  584. handler(newVal, oldVal) {
  585. this.form.sysBelong = newVal;
  586. if (oldVal) {
  587. if (newVal !== oldVal) {
  588. [
  589. this.form.secondDirectory,
  590. this.form.thirdDirectory,
  591. this.form.fourthDirectory,
  592. this.form.fifthDirectory,
  593. ] = "";
  594. [this.twoList, this.threeList, this.fourList, this.fiveList] = [];
  595. // [this.threeStatus, this.fourStatus, this.fiveStatus] = false;
  596. }
  597. }
  598. this.oneList.map((item) => {
  599. if (newVal === item.categoryName) {
  600. this.getChirdenList(item.id);
  601. }
  602. });
  603. },
  604. },
  605. childrenList: {
  606. handler(newVal) {
  607. switch (newVal[0].layer) {
  608. case 2:
  609. this.twoList = this.childrenList;
  610. if (this.childrenList.length !== 0) {
  611. this.twoStatus = true;
  612. } else {
  613. this.twoList = false;
  614. }
  615. break;
  616. case 3:
  617. this.threeList = this.childrenList;
  618. if (this.childrenList.length !== 0) {
  619. this.threeStatus = true;
  620. } else {
  621. this.threeStatus = false;
  622. }
  623. break;
  624. case 4:
  625. this.fourList = this.childrenList;
  626. if (this.childrenList.length !== 0) {
  627. this.fourStatus = true;
  628. } else {
  629. this.fourStatus = false;
  630. }
  631. break;
  632. case 5:
  633. if (this.childrenList.length !== 0) {
  634. this.fiveStatus = true;
  635. } else {
  636. this.fiveStatus = false;
  637. }
  638. this.fiveList = this.childrenList;
  639. break;
  640. }
  641. },
  642. },
  643. "form.secondDirectory": {
  644. handler(newVal, oldVal) {
  645. if (oldVal) {
  646. if (newVal !== oldVal) {
  647. [
  648. this.form.thirdDirectory,
  649. this.form.fourthDirectory,
  650. this.form.fifthDirectory,
  651. ] = "";
  652. [this.threeList, this.fourList, this.fiveList] = [];
  653. // [this.fourStatus, this.fiveStatus] = false;
  654. // this.fourStatus = false;
  655. }
  656. }
  657. if (newVal !== undefined) {
  658. this.twoList.map((item) => {
  659. if (newVal === item.categoryName) {
  660. this.getChirdenList(item.id);
  661. }
  662. });
  663. } else {
  664. this.threeStatus = false;
  665. this.fourStatus = false;
  666. }
  667. },
  668. },
  669. "form.thirdDirectory": {
  670. handler(newVal, oldVal) {
  671. if (oldVal) {
  672. if (newVal !== oldVal) {
  673. [this.form.fourthDirectory, this.form.fifthDirectory] = "";
  674. [this.fourList, this.fiveList] = [];
  675. // [this.fiveStatus] = false;
  676. }
  677. }
  678. if (newVal !== undefined) {
  679. this.threeList.map((item) => {
  680. if (newVal === item.categoryName) {
  681. this.getChirdenList(item.id);
  682. }
  683. });
  684. } else {
  685. this.fiveStatus = false;
  686. this.fourStatus = false;
  687. }
  688. },
  689. },
  690. "form.fourthDirectory": {
  691. handler(newVal, oldVal) {
  692. if (oldVal) {
  693. if (newVal !== oldVal) {
  694. // [this.form.fifthDirectory] = "";
  695. // [this.fiveList] = [];
  696. }
  697. }
  698. if (newVal !== undefined) {
  699. this.fourList.map((item) => {
  700. if (newVal === item.categoryName) {
  701. this.getChirdenList(item.id);
  702. }
  703. });
  704. } else {
  705. this.fiveStatus = false;
  706. }
  707. },
  708. },
  709. // 'form.fifthDirectory':{
  710. // handler(newVal){
  711. // if(this.isList.fifthDirectory){
  712. // this.fiveStatus = true
  713. // }
  714. // }
  715. // },
  716. // 'list':{
  717. // handler(newVal,oldVal){
  718. // console.log(newVal)
  719. // }
  720. // },
  721. "form.needAging": {
  722. handler(newVal, oldVal) {
  723. if (newVal == "长期有效") {
  724. this.timeStatus = true;
  725. this.form.dueTime = "";
  726. } else {
  727. this.timeStatus = false;
  728. }
  729. },
  730. },
  731. },
  732. methods: {
  733. clickLLength(e) {
  734. if (e !== 0) {
  735. this.Length = true;
  736. } else {
  737. this.Length = false;
  738. }
  739. },
  740. clickSelect(e) {},
  741. uploadBack(v) {
  742. if (this.form.mkFileShareAttachList) {
  743. this.form.mkFileShareAttachList = [];
  744. this.form.mkFileShareAttachList = v;
  745. } else {
  746. let mkFileShareAttachList = [];
  747. mkFileShareAttachList = v;
  748. this.$set(this.form, "mkFileShareAttachList", mkFileShareAttachList);
  749. }
  750. },
  751. download() {
  752. if (this.form.mkFileShareAttachList.length > 1) {
  753. this.$http({
  754. url: "/market/CMKFile/downAllFile",
  755. method: "post",
  756. headers: {
  757. "Content-Type": "application/json",
  758. },
  759. responseType: "blob",
  760. data: { mkFileShareAttachList: this.form.mkFileShareAttachList },
  761. }).then((response) => {
  762. if (window.navigator && window.navigator.msSaveOrOpenBlob) {
  763. let blob = new Blob([response.data], {
  764. type: "application/vnd.ms-excel",
  765. });
  766. window.navigator.msSaveOrOpenBlob(
  767. blob,
  768. new Date().getTime().toString() + ".zip"
  769. );
  770. } else {
  771. /* 火狐谷歌的文件下载方式 */
  772. var blob = new Blob([response.data]);
  773. var downloadElement = document.createElement("a");
  774. var href = window.URL.createObjectURL(blob);
  775. downloadElement.href = href;
  776. downloadElement.download = this.form.needName + ".zip";
  777. document.body.appendChild(downloadElement);
  778. downloadElement.click();
  779. document.body.removeChild(downloadElement);
  780. window.URL.revokeObjectURL(href);
  781. }
  782. if (this.infolist.authType === "3") {
  783. this.dialogCli(10);
  784. }
  785. });
  786. } else {
  787. let list = {
  788. id: this.form.mkFileShareAttachList[0].fileCode,
  789. fileName: this.form.mkFileShareAttachList[0].fileName,
  790. };
  791. this.$http({
  792. url: "/market/waf/downFile",
  793. method: "post",
  794. headers: {
  795. "Content-Type": "application/json",
  796. },
  797. responseType: "blob",
  798. data: list,
  799. }).then((response) => {
  800. console.log(response);
  801. if (window.navigator && window.navigator.msSaveOrOpenBlob) {
  802. let blob = new Blob([response.data], {
  803. type: "application/vnd.ms-excel",
  804. });
  805. //window.navigator.msSaveOrOpenBlob(blob, this.form.needName);
  806. window.navigator.msSaveOrOpenBlob(
  807. blob,
  808. this.form.mkFileShareAttachList[0].fileName
  809. );
  810. } else {
  811. /* 火狐谷歌的文件下载方式 */
  812. var blob = new Blob([response.data]);
  813. var downloadElement = document.createElement("a");
  814. var href = window.URL.createObjectURL(blob);
  815. downloadElement.href = href;
  816. downloadElement.download =
  817. this.form.mkFileShareAttachList[0].fileName;
  818. document.body.appendChild(downloadElement);
  819. downloadElement.click();
  820. document.body.removeChild(downloadElement);
  821. window.URL.revokeObjectURL(href);
  822. }
  823. });
  824. }
  825. },
  826. //上传文件钩子函数
  827. clickUpload(file) {},
  828. //下载文件
  829. downExcel() {
  830. this.$http({
  831. url: "/market/waf/downLoadTemp",
  832. method: "post",
  833. headers: {
  834. "Content-Type": "application/json",
  835. },
  836. responseType: "blob",
  837. data: {},
  838. }).then((response) => {
  839. if (window.navigator && window.navigator.msSaveOrOpenBlob) {
  840. let blob = new Blob([response.data], {
  841. type: "application/vnd.ms-excel",
  842. });
  843. window.navigator.msSaveOrOpenBlob(
  844. blob,
  845. new Date().getTime().toString() + ".zip"
  846. );
  847. } else {
  848. /* 火狐谷歌的文件下载方式 */
  849. var blob = new Blob([response.data]);
  850. var downloadElement = document.createElement("a");
  851. var href = window.URL.createObjectURL(blob);
  852. downloadElement.href = href;
  853. downloadElement.download = this.form.needName + ".zip";
  854. document.body.appendChild(downloadElement);
  855. downloadElement.click();
  856. document.body.removeChild(downloadElement);
  857. window.URL.revokeObjectURL(href);
  858. }
  859. });
  860. },
  861. changeSelect(e) {},
  862. getOneList() {
  863. this.$http({
  864. url: "/market/category/getCategoryLevel1",
  865. method: "post",
  866. headers: {
  867. "Content-Type": "application/json",
  868. },
  869. data: {},
  870. }).then((res) => {
  871. this.oneList = res.data;
  872. });
  873. },
  874. async getChirdenList(e) {
  875. await this.$http({
  876. url: "/market/category/getChildListById",
  877. method: "post",
  878. headers: {
  879. "Content-Type": "application/json",
  880. },
  881. data: { id: e },
  882. }).then((res) => {
  883. this.childrenList = res.data;
  884. this.clickLLength(res.data.length);
  885. });
  886. },
  887. },
  888. };
  889. </script>
  890. <style lang="scss" scoped>
  891. ::v-deep .el-upload-list {
  892. width: 23rem;
  893. }
  894. .flex-title {
  895. text-align: center;
  896. font-size: 24px;
  897. line-height: 60px;
  898. border-bottom: 1px solid #e1e1e1;
  899. font-weight: bold;
  900. }
  901. .flex-header {
  902. margin-top: 20px;
  903. display: flex;
  904. // justify-content: space-between;
  905. border-bottom: 1px solid #e1e1e1;
  906. ::v-deep .el-form-item {
  907. width: 20%;
  908. margin-right: 5%;
  909. }
  910. }
  911. .flex-input-tare {
  912. ::v-deep .el-form-item {
  913. width: 100%;
  914. margin-right: 5%;
  915. }
  916. }
  917. .el-upload__tip {
  918. color: red;
  919. }
  920. ::v-deep .el-input--suffix .el-input__inner {
  921. width: 119% !important;
  922. }
  923. </style>