basic.vue 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <template>
  2. <div id="basic">
  3. <el-row>
  4. <el-col :span="24" class="basic">
  5. <el-form :model="basicForm" :rules="rules" ref="basicForm" label-width="120px">
  6. <el-form-item label="成果名称" prop="achieve_name">
  7. <el-input v-model="basicForm.achieve_name" placeholder="请输入成果名称"></el-input>
  8. </el-form-item>
  9. <el-form-item label="成果类别" prop="achieve_type">
  10. <el-select v-model="basicForm.achieve_type" multiple clearable filterable placeholder="请选择">
  11. <el-option v-for="item in achievetypeList" :key="item.name" :label="item.name" :value="item.name"> </el-option>
  12. </el-select>
  13. </el-form-item>
  14. <el-form-item label="成果编号" prop="achieve_num">
  15. <el-input v-model="basicForm.achieve_num" placeholder="请输入成果编号"></el-input>
  16. </el-form-item>
  17. <el-form-item label="成果取得时间" prop="achieve_date">
  18. <el-date-picker
  19. v-model="basicForm.achieve_date"
  20. type="datetime"
  21. placeholder="请选择开始时间"
  22. format="yyyy-MM-dd HH:mm:ss"
  23. value-format="yyyy-MM-dd HH:mm:ss"
  24. >
  25. </el-date-picker>
  26. </el-form-item>
  27. <el-form-item label="成果形式" prop="achieve_form">
  28. <el-select v-model="basicForm.achieve_form" clearable filterable allow-create placeholder="请选择">
  29. <el-option v-for="(i, index) in achieveformList" :key="index" :label="i.name" :value="i.name"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item label="申请人" prop="apply_personal">
  33. <el-input v-model="basicForm.apply_personal" placeholder="请输入申请人"></el-input>
  34. </el-form-item>
  35. <el-form-item label="申请人电话" prop="apply_phone">
  36. <el-input v-model="basicForm.apply_phone" placeholder="请输入申请人电话"></el-input>
  37. </el-form-item>
  38. <el-form-item label="申请单位" prop="apply_company">
  39. <el-input v-model="basicForm.apply_company" placeholder="请输入申请单位"></el-input>
  40. </el-form-item>
  41. <el-form-item label="地址" prop="address">
  42. <el-input v-model="basicForm.address" placeholder="请输入地址"></el-input>
  43. </el-form-item>
  44. <el-form-item label="申请单位/申请人属性" prop="apply_nature">
  45. <el-select v-model="basicForm.apply_nature" clearable filterable allow-create placeholder="请选择">
  46. <el-option v-for="(i, index) in applynatureList" :key="index" :label="i.name" :value="i.name"></el-option>
  47. </el-select>
  48. </el-form-item>
  49. <el-form-item label="联系人" prop="contacts">
  50. <el-input v-model="basicForm.contacts" placeholder="请输入联系人"></el-input>
  51. </el-form-item>
  52. <el-form-item label="联系电话" prop="phone">
  53. <el-input v-model="basicForm.phone" placeholder="请输入联系电话"></el-input>
  54. </el-form-item>
  55. <el-form-item label="邮箱" prop="email">
  56. <el-input v-model="basicForm.email" placeholder="请输入邮箱"></el-input>
  57. </el-form-item>
  58. <el-form-item label="传真" prop="fax">
  59. <el-input v-model="basicForm.fax" placeholder="请输入传真"></el-input>
  60. </el-form-item>
  61. <el-form-item label="评价目的" prop="objective">
  62. <el-select v-model="basicForm.objective" clearable filterable allow-create placeholder="请选择">
  63. <el-option v-for="(i, index) in objectiveList" :key="index" :label="i.name" :value="i.name"></el-option>
  64. </el-select>
  65. </el-form-item>
  66. <el-form-item label="成果所处阶段" prop="stage">
  67. <el-select v-model="basicForm.stage" clearable filterable allow-create placeholder="请选择">
  68. <el-option v-for="(i, index) in stageList" :key="index" :label="i.name" :value="i.name"></el-option>
  69. </el-select>
  70. </el-form-item>
  71. <el-form-item label="经济效益产值" prop="output">
  72. <el-input v-model="basicForm.output" placeholder="请输入经济效益产值"></el-input>
  73. </el-form-item>
  74. <el-form-item label="经济效益利润" prop="profit">
  75. <el-input v-model="basicForm.profit" placeholder="请输入经济效益利润"></el-input>
  76. </el-form-item>
  77. <el-form-item label="经济效益税收" prop="revenue">
  78. <el-input v-model="basicForm.revenue" placeholder="请输入经济效益税收"></el-input>
  79. </el-form-item>
  80. <el-col :span="24" class="btn">
  81. <el-button type="danger" size="mini" @click="resetBtn">取消申报</el-button>
  82. <el-button type="primary" size="mini" @click="timeBtn('basicForm')" v-if="status == '0' || status == '10'">临时保存</el-button>
  83. <el-button type="success" size="mini" @click="basicBtn('basicForm')">下一步</el-button>
  84. </el-col>
  85. </el-form>
  86. </el-col>
  87. </el-row>
  88. </div>
  89. </template>
  90. <script>
  91. const { achievetype, achieveform, applynature, objective, stage } = require('@common/src/store/achieve/achieveType');
  92. import { mapState, createNamespacedHelpers } from 'vuex';
  93. export default {
  94. name: 'basic',
  95. props: {
  96. basicForm: { type: Object },
  97. },
  98. components: {},
  99. data: function() {
  100. return {
  101. rules: {
  102. achieve_name: [{ required: true, message: '请输入成果名称', trigger: 'blur' }],
  103. achieve_type: [{ required: true, message: '请选择成果类别', trigger: 'change' }],
  104. achieve_num: [{ required: false, message: '请输入成果编号', trigger: 'blur' }],
  105. achieve_date: [{ required: true, message: '请选择开始时间', trigger: 'change' }],
  106. achieve_form: [{ required: true, message: '请输入成果形式', trigger: 'change' }],
  107. apply_personal: [{ required: true, message: '请输入申请人', trigger: 'blur' }],
  108. apply_phone: [{ required: true, message: '请输入申请人电话', trigger: 'blur' }],
  109. apply_company: [{ required: true, message: '请输入申请单位', trigger: 'blur' }],
  110. address: [{ required: true, message: '请输入地址', trigger: 'blur' }],
  111. apply_nature: [{ required: true, message: '请输入申请单位/申请人属性', trigger: 'change' }],
  112. contacts: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
  113. phone: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
  114. email: [{ required: true, message: '请输入邮箱', trigger: 'blur' }],
  115. fax: [{ required: false, message: '请输入传真', trigger: 'blur' }],
  116. objective: [{ required: true, message: '请输入评价目的', trigger: 'change' }],
  117. stage: [{ required: true, message: '请输入成果所处阶段', trigger: 'blur' }],
  118. output: [{ required: true, message: '请输入经济效益产值', trigger: 'blur' }],
  119. profit: [{ required: true, message: '请输入经济效益利润', trigger: 'blur' }],
  120. revenue: [{ required: true, message: '请输入经济效益税收', trigger: 'blur' }],
  121. },
  122. // 成果类别
  123. achievetypeList: achievetype,
  124. // 成果形式
  125. achieveformList: achieveform,
  126. // 申请人属性
  127. applynatureList: applynature,
  128. // 评价目的
  129. objectiveList: objective,
  130. // 成果所处阶段
  131. stageList: stage,
  132. };
  133. },
  134. created() {},
  135. methods: {
  136. // 取消申报
  137. resetBtn() {
  138. window.history.back();
  139. },
  140. // 临时保存
  141. timeBtn(formName) {
  142. this.$refs[formName].validate(valid => {
  143. if (valid) {
  144. this.$emit('timeBtn', { arr: this.basicForm, type: '1' });
  145. } else {
  146. console.log('error submit!!');
  147. return false;
  148. }
  149. });
  150. },
  151. // 下一步
  152. basicBtn(formName) {
  153. this.$refs[formName].validate(valid => {
  154. if (valid) {
  155. this.$emit('basicBtn', { data: this.basicForm });
  156. } else {
  157. console.log('error submit!!');
  158. return false;
  159. }
  160. });
  161. },
  162. },
  163. computed: {
  164. ...mapState(['user']),
  165. status() {
  166. return this.$route.query.status;
  167. },
  168. pageTitle() {
  169. return `${this.$route.meta.title}`;
  170. },
  171. },
  172. metaInfo() {
  173. return { title: this.$route.meta.title };
  174. },
  175. };
  176. </script>
  177. <style lang="less" scoped>
  178. .basic {
  179. padding: 15px;
  180. .btn {
  181. text-align: center;
  182. }
  183. .el-select {
  184. width: 100%;
  185. }
  186. }
  187. </style>