params1.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  1. <template>
  2. <div class="flex flex-justify-start flex-align-center flex-col">
  3. <div class="flex flex-center full-width flex-justify-between mt-10 mb-10">
  4. <span class="full-width text-left bold">{{ info.dictValue }}</span>
  5. <el-button
  6. v-if="detail.can_update"
  7. type="primary"
  8. @click="disabled = !disabled"
  9. >{{ disabled ? '编 辑' : '保 存' }}
  10. </el-button>
  11. </div>
  12. <div class="mt-10" style="width: 90%">
  13. <el-form
  14. v-if="form"
  15. :model="form"
  16. label-width="240px"
  17. :disabled="disabled"
  18. label-position="left"
  19. class="form-content flex flex-col"
  20. >
  21. <div class="flex flex-justify-start">
  22. <el-form-item label="项目名称" style="flex: 1">
  23. <el-input v-model="form.name" placeholder="项目名称" />
  24. </el-form-item>
  25. <el-form-item
  26. label="总投资金额(万元)"
  27. style="flex: 1"
  28. class="ml-20 full-width"
  29. >
  30. <div class="full-width">
  31. <el-input
  32. v-model="form.total_amount"
  33. placeholder="总投资金额(万元)"
  34. class="full-width"
  35. />
  36. </div>
  37. </el-form-item>
  38. </div>
  39. <div class="full-width flex">
  40. <el-form-item label="县(区)" style="flex: 1">
  41. <div class="full-width">
  42. <avue-input-tree
  43. v-model="form.county"
  44. class="full-width"
  45. placeholder="请选择县(区)"
  46. :dic="areaDic"
  47. ></avue-input-tree>
  48. </div>
  49. </el-form-item>
  50. <el-form-item label="责任单位" style="flex: 1" class="ml-20">
  51. <el-input v-model="form.responsible_unit" placeholder="责任单位" />
  52. </el-form-item>
  53. </div>
  54. <div class="full-width flex">
  55. <el-form-item label="主管单位" style="flex: 1">
  56. <el-input v-model="form.competent_unit" placeholder="主管单位" />
  57. </el-form-item>
  58. <el-form-item label="责任领导" style="flex: 1" class="ml-20">
  59. <el-input
  60. v-model="form.responsible_leader"
  61. placeholder="责任领导"
  62. />
  63. </el-form-item>
  64. </div>
  65. <div class="full-width flex">
  66. <el-form-item label="项目负责人及联系电话" style="flex: 1">
  67. <el-input
  68. v-model="form.construction_unit"
  69. placeholder="项目负责人及联系电话"
  70. />
  71. </el-form-item>
  72. </div>
  73. <div class="full-width flex">
  74. <el-form-item
  75. label="行业分类"
  76. class="flex-child-average"
  77. style="flex: 1"
  78. >
  79. <el-input v-model="form.industry" />
  80. </el-form-item>
  81. <el-form-item label="建设起止时间" class="flex-child-average ml-20">
  82. <el-input
  83. v-if="disabled"
  84. v-model="form.construction_start_and_end"
  85. />
  86. <el-date-picker
  87. v-else
  88. v-model="form.construction_start_and_end_new"
  89. @change="changeDate"
  90. type="daterange"
  91. range-separator="至"
  92. start-placeholder="开始日期"
  93. end-placeholder="截止日期"
  94. style="width: 100%"
  95. format="YYYY-MM-DD"
  96. value-format="YYYY-MM-DD"
  97. />
  98. </el-form-item>
  99. </div>
  100. <div class="full-width flex" v-if="detail.tags === 2">
  101. <el-form-item
  102. label="备案号"
  103. class="flex-child-average"
  104. style="flex: 1"
  105. >
  106. <el-input v-model="form.record_id" />
  107. </el-form-item>
  108. <el-form-item label="备案时间" class="flex-child-average ml-20">
  109. <el-input v-if="disabled" v-model="form.record_date" />
  110. <el-date-picker
  111. v-else
  112. v-model="form.record_date"
  113. @change="changeDate"
  114. placeholder="备案时间"
  115. style="width: 100%"
  116. format="YYYY-MM-DD"
  117. value-format="YYYY-MM-DD"
  118. />
  119. </el-form-item>
  120. </div>
  121. <div class="full-width flex" v-if="detail.tags === 1">
  122. <el-form-item
  123. label="可研批复号"
  124. class="flex-child-average"
  125. style="flex: 1"
  126. >
  127. <el-input v-model="form.available_approval_id" />
  128. </el-form-item>
  129. <el-form-item label="可研批复时间" class="flex-child-average ml-20">
  130. <el-input v-if="disabled" v-model="form.available_approval_date" />
  131. <el-date-picker
  132. v-else
  133. v-model="form.available_approval_date"
  134. @change="changeDate"
  135. placeholder="可研批复时间"
  136. style="width: 100%"
  137. format="YYYY-MM-DD"
  138. value-format="YYYY-MM-DD"
  139. />
  140. </el-form-item>
  141. </div>
  142. <div class="full-width flex">
  143. <el-form-item label="计划开工时间" style="flex: 1" class="full-width">
  144. <el-date-picker
  145. v-model="form.plan_commencement_time"
  146. type="date"
  147. style="width: 100%"
  148. placeholder="计划开工时间"
  149. format="YYYY-MM-DD"
  150. value-format="YYYY-MM-DD"
  151. />
  152. </el-form-item>
  153. <el-form-item label="实际开工时间" style="flex: 1" class="ml-20">
  154. <el-date-picker
  155. v-model="form.start_time"
  156. type="date"
  157. style="width: 100%"
  158. placeholder="实际开工时间"
  159. format="YYYY-MM-DD"
  160. value-format="YYYY-MM-DD"
  161. />
  162. </el-form-item>
  163. </div>
  164. <div class="full-width flex">
  165. <el-form-item label="计划入库时间" style="flex: 1">
  166. <el-date-picker
  167. v-model="form.plan_storage_time"
  168. type="date"
  169. style="width: 100%"
  170. placeholder="计划入库时间"
  171. format="YYYY-MM-DD"
  172. value-format="YYYY-MM-DD"
  173. />
  174. </el-form-item>
  175. <el-form-item label="实际入库时间" style="flex: 1" class="ml-20">
  176. <el-date-picker
  177. v-model="form.storage_time"
  178. type="date"
  179. style="width: 100%"
  180. placeholder="实际入库时间"
  181. format="YYYY-MM-DD"
  182. value-format="YYYY-MM-DD"
  183. />
  184. </el-form-item>
  185. </div>
  186. <div class="full-width flex">
  187. <el-form-item label="计划竣工时间" style="flex: 1">
  188. <el-date-picker
  189. v-model="form.plan_completion_time"
  190. type="date"
  191. style="width: 100%"
  192. placeholder="计划竣工时间"
  193. format="YYYY-MM-DD"
  194. value-format="YYYY-MM-DD"
  195. />
  196. </el-form-item>
  197. <el-form-item label="实际竣工时间" style="flex: 1" class="ml-20">
  198. <el-date-picker
  199. v-model="form.completion_time"
  200. type="date"
  201. style="width: 100%"
  202. placeholder="实际竣工时间"
  203. format="YYYY-MM-DD"
  204. value-format="YYYY-MM-DD"
  205. />
  206. </el-form-item>
  207. </div>
  208. <div class="full-width flex">
  209. <el-form-item label="是否入库" style="flex: 1">
  210. <div class="full-width">
  211. <el-select
  212. v-model="form.is_storage"
  213. placeholder="是否入库"
  214. class="full-width"
  215. >
  216. <el-option
  217. v-for="item in yesOrNo"
  218. :key="item.label"
  219. :label="item.label"
  220. :value="item.value"
  221. />
  222. </el-select>
  223. </div>
  224. </el-form-item>
  225. <el-form-item label="是否开工" style="flex: 1" class="ml-20">
  226. <div class="full-width">
  227. <el-select
  228. v-model="form.is_start"
  229. placeholder="是否开工"
  230. class="full-width"
  231. >
  232. <el-option
  233. v-for="item in yesOrNo"
  234. :key="item.label"
  235. :label="item.label"
  236. :value="item.value"
  237. />
  238. </el-select>
  239. </div>
  240. </el-form-item>
  241. </div>
  242. <div class="full-width flex">
  243. <el-form-item label="是否纳入省重点项目" style="flex: 1">
  244. <div class="full-width">
  245. <el-select
  246. v-model="form.is_provincial_key"
  247. placeholder="是否纳入省重点项目"
  248. class="full-width"
  249. >
  250. <el-option
  251. v-for="item in yesOrNo"
  252. :key="item.label"
  253. :label="item.label"
  254. :value="item.value"
  255. />
  256. </el-select>
  257. </div>
  258. </el-form-item>
  259. <el-form-item
  260. label="是否纳入省集中开工项目"
  261. style="flex: 1"
  262. class="ml-20"
  263. >
  264. <div class="full-width">
  265. <el-select
  266. v-model="form.is_provincial_level_construction"
  267. placeholder="是否纳入省集中开工项目"
  268. class="full-width"
  269. >
  270. <el-option
  271. v-for="item in yesOrNo"
  272. :key="item.label"
  273. :label="item.label"
  274. :value="item.value"
  275. />
  276. </el-select>
  277. </div>
  278. </el-form-item>
  279. </div>
  280. <div class="full-width">
  281. <el-form-item label="项目建设详细地址">
  282. <el-input v-model="form.address" placeholder="项目建设详细地址" />
  283. </el-form-item>
  284. </div>
  285. <div class="full-width">
  286. <el-form-item label="主要建设内容及规模">
  287. <el-input
  288. v-model="form.construction_content"
  289. type="textarea"
  290. placeholder="主要建设内容及规模"
  291. :rows="4"
  292. />
  293. </el-form-item>
  294. </div>
  295. </el-form>
  296. </div>
  297. </div>
  298. </template>
  299. <script>
  300. export default {
  301. name: 'params1',
  302. props: {
  303. info: {
  304. type: Object,
  305. default: null
  306. },
  307. detail: {
  308. type: Object,
  309. default: null
  310. }
  311. },
  312. watch: {
  313. detail: {
  314. handler(val) {
  315. this.form = val
  316. this.form.construction_start_and_end_new = ''
  317. if (this.form.name) {
  318. const xian = this.form.name.indexOf('县')
  319. this.form.name = this.dev
  320. ? this.form.name.substring(xian + 1)
  321. : this.form.name
  322. }
  323. },
  324. immediate: true
  325. },
  326. disabled: {
  327. handler(val) {
  328. if (val) {
  329. this.updata()
  330. }
  331. },
  332. immediate: false
  333. }
  334. },
  335. data() {
  336. return {
  337. disabled: true,
  338. form: {},
  339. areaDic: [],
  340. yesOrNo: [
  341. { label: '否', value: 0 },
  342. { label: '是', value: 1 }
  343. ],
  344. dev: false
  345. }
  346. },
  347. mounted() {
  348. this.dev = sessionStorage.getItem('dev') === 'true'
  349. this.areaList()
  350. },
  351. methods: {
  352. areaList() {
  353. this.$api.common.region({ code: '' }).then(res => {
  354. if (res.code === 200) {
  355. this.areaDic = res.data.map(item => this.mapTree(item))
  356. }
  357. })
  358. },
  359. mapTree(item) {
  360. const haveChildren =
  361. Array.isArray(item.children) && item.children.length > 0
  362. return {
  363. key: item.id,
  364. value: item.id,
  365. label: item.title,
  366. children: haveChildren ? item.children.map(i => this.mapTree(i)) : []
  367. }
  368. },
  369. updata() {
  370. this.form.projectId = this.detail.id
  371. this.form.total_amount = Number.parseFloat(this.detail.total_amount)
  372. delete this.detail._id
  373. this.$api.project.proUpdate(this.form).then(res => {
  374. if (res.code === 200) {
  375. this.$message.success(res.msg)
  376. } else {
  377. this.disabled = false
  378. this.$message.error(res.msg)
  379. }
  380. })
  381. },
  382. changeDate(res) {
  383. if (res) {
  384. this.form.construction_start_and_end = res.join(',')
  385. } else {
  386. this.form.construction_start_and_end = ''
  387. }
  388. }
  389. }
  390. }
  391. </script>
  392. <style lang="scss" scoped>
  393. .form-content {
  394. border: 1px solid #eeeeee;
  395. padding: 20px;
  396. :deep(.el-input.is-disabled .el-input__inner) {
  397. color: #343434;
  398. }
  399. :deep(.el-textarea.is-disabled .el-textarea__inner) {
  400. color: #343434;
  401. }
  402. }
  403. </style>