edit.vue 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <template>
  2. <div>
  3. <el-button size="mini" :type="btnType?btnType:'text'" @click="editBtn">编 辑</el-button>
  4. <el-dialog title="新 增" append-to-body :visible.sync="dialogFormVisible" width="50%">
  5. <div slot="title" style="font-size: 15px">
  6. 编辑项目商机
  7. </div>
  8. <el-row :gutter="20">
  9. <el-form :model="form" :rules="rules" ref="form" label-width="120px" label-position="left" size="mini">
  10. <el-col :span="24">
  11. <el-form-item label="企业名称" prop="sys_enterpriseid">
  12. <el-select v-model="form.sys_enterpriseid" placeholder="请选择企业" size="small" @change="getProjectAddres()">
  13. <el-option
  14. v-for="item in enterpriseList()"
  15. :key="item.sys_enterpriseid"
  16. :label="item.enterprisename"
  17. :value="item.sys_enterpriseid">
  18. </el-option>
  19. </el-select>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="12">
  23. <el-form-item label="项目名称" prop="projectname">
  24. <el-input v-model="form.projectname" placeholder="请输入项目名称"></el-input>
  25. </el-form-item>
  26. </el-col>
  27. <el-col :span="12">
  28. <el-form-item label="项目编号" prop="projectnum">
  29. <el-input v-model="form.projectnum" placeholder="请输入项目编号"></el-input>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="12">
  33. <el-form-item label="项目预算" prop="budgetary">
  34. <el-input v-model="form.budgetary" placeholder="项目预算"></el-input>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="12">
  38. <el-form-item label="项目规模" prop="scale">
  39. <el-input v-model="form.scale" placeholder="请输入项目规模"></el-input>
  40. </el-form-item>
  41. </el-col>
  42. <el-col :span="12">
  43. <el-form-item label="预计签约金额" prop="signamount_due">
  44. <el-input v-model="form.signamount_due" placeholder="请输入预计签约金额"></el-input>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="12">
  48. <el-form-item label="详细地址" prop="address">
  49. <el-input v-model="form.address" placeholder="请输入详细地址"></el-input>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="12">
  53. <el-form-item label="当前项目模板" prop="sa_projstagetempid">
  54. <el-select v-model="form.sa_projstagetempid" placeholder="请选择当前项目模板" size="small">
  55. <el-option
  56. v-for="item in projectPanl()"
  57. :key="item.sa_projstagetempid"
  58. :label="item.stagetempname"
  59. :value="item.sa_projstagetempid">
  60. </el-option>
  61. </el-select>
  62. </el-form-item>
  63. </el-col>
  64. <el-col :span="12">
  65. <el-form-item label="项目地址" prop="sa_project_addressid">
  66. <el-select v-model="form.sa_project_addressid" placeholder="请先选择企业" size="small">
  67. <el-option
  68. v-for="(item,index) in projectAddress"
  69. :key="index"
  70. :label="item.address"
  71. :value="item.contactsid">
  72. </el-option>
  73. </el-select>
  74. </el-form-item>
  75. </el-col>
  76. <el-col :span="12">
  77. <el-form-item label="项目等级" prop="grade">
  78. <el-select v-model="form.grade" placeholder="请选择项目等级" size="small">
  79. <el-option
  80. v-for="item in projectLead()"
  81. :key="item.rowindex"
  82. :label="item.value"
  83. :value="item.rowindex">
  84. </el-option>
  85. </el-select>
  86. </el-form-item>
  87. </el-col>
  88. <el-col :span="12">
  89. <el-form-item label="项目类型" prop="projecttype">
  90. <el-select v-model="form.projecttype" placeholder="请选择项目类型" size="small">
  91. <el-option
  92. v-for="(item,index) in projectType()"
  93. :key="index"
  94. :label="item.value"
  95. :value="item.value">
  96. </el-option>
  97. </el-select>
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="24">
  101. <el-form-item label="预计签约时间" prop="signdate_due">
  102. <el-date-picker
  103. v-model="form.signdate_due"
  104. type="date"
  105. placeholder="选择日期"
  106. @change="timeChange">
  107. </el-date-picker>
  108. </el-form-item>
  109. </el-col>
  110. </el-form>
  111. </el-row>
  112. <div class="dialog-footer">
  113. <el-button size="small" @click="dialogFormVisible = false" class="normal-btn-width">取 消</el-button>
  114. <el-button size="small" type="warning" @click="onSubmit" class="normal-btn-width btn-warning">确 定</el-button>
  115. </div>
  116. </el-dialog>
  117. </div>
  118. </template>
  119. <script>
  120. export default {
  121. name: "add",
  122. inject:['enterpriseList','projectType','projectLead','projectPanl'],
  123. components:{},
  124. props:['data','btnType'],
  125. data(){
  126. return {
  127. dialogFormVisible:false,
  128. projectAddress:[],
  129. addChange:false,
  130. form:{
  131. "sa_projectid":0,
  132. "sys_enterpriseid":"",
  133. "projectname":"",
  134. "projectnum":"",
  135. "address":"",//可选
  136. "grade":"",//可选
  137. "budgetary":"",//可选
  138. "remarks":"",//可选
  139. "projecttype":"",//可选
  140. "sa_projstagetempid":"",//可选
  141. "signdate_due":"",//可选
  142. "scale":"",//可选
  143. "signamount_due":"",//可选
  144. "sa_project_addressid":""//选择地址
  145. },
  146. rules:{
  147. projectname:[
  148. { required: true, message: '输入项目名称', trigger: 'blur'},
  149. ],
  150. projectnum:[
  151. { required: true, message: '输入项目编号', trigger: 'blur'}
  152. ],
  153. sa_project_addressid:[
  154. { required: true, message: '请选择项目地址', trigger: 'blur'},
  155. ],
  156. projecttype:[
  157. { required: true, message: '请选择项目类型', trigger: 'blur'}
  158. ],
  159. sys_enterpriseid:[
  160. { required: true, message: '请选择企业', trigger: 'blur'},
  161. ],
  162. grade:[
  163. { required: true, message: '请选择项目等级', trigger: 'blur'}
  164. ],
  165. sa_projstagetempid:[
  166. { required: true, message: '请选择当前项目模板', trigger: 'blur'}
  167. ],
  168. }
  169. }
  170. },
  171. methods:{
  172. editBtn () {
  173. this.dialogFormVisible = true
  174. if (this.data.sys_enterpriseid) {
  175. this.form = Object.assign({},this.form,this.data)
  176. this.form.grade = parseInt(this.form.grade)
  177. this.getProjectAddres()
  178. this.addChange = true
  179. } else {
  180. this.form = Object.assign({},this.form,this.data)
  181. this.form.grade = parseInt(this.form.grade)
  182. }
  183. },
  184. onSubmit(){
  185. this.$refs['form'].validate(async (valid) => {
  186. if (!valid) return false
  187. const res = await this.$api.requested({
  188. "id": "20221020144202",
  189. "version":1,
  190. "content": this.form
  191. })
  192. this.tool.showMessage(res,()=>{
  193. this.$emit('onSuccess')
  194. this.$refs['form'].resetFields();
  195. this.dialogFormVisible = false
  196. })
  197. })
  198. },
  199. /* 获取项目地址 */
  200. async getProjectAddres () {
  201. if (this.addChange) this.form.sa_project_addressid = ''
  202. let res = await this.$api.requested({
  203. "id": "20221018153302",
  204. "content": {
  205. "sys_enterpriseid": this.form.sys_enterpriseid,
  206. "pageNumber": 1,
  207. "pageSize": 999999,
  208. "where": {
  209. "condition": ""
  210. }
  211. }
  212. })
  213. this.projectAddress = res.data
  214. console.log(this.projectAddress);
  215. },
  216. timeChange(e) {
  217. if(!e) {
  218. this.form.signdate_due = ''
  219. }
  220. let result = this.changeTimeFormat(e.getTime())
  221. this.form.signdate_due = result
  222. },
  223. changeTimeFormat(time) {
  224. var date = new Date(time);
  225. var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
  226. var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
  227. return date.getFullYear() + "-" + month + "-" + currentDate
  228. }
  229. }
  230. }
  231. </script>
  232. <style scoped>
  233. /deep/.el-select {
  234. height: 28px !important;
  235. width: 100%;
  236. }
  237. /deep/.el-input__inner {
  238. height: 28px !important;
  239. }
  240. </style>