form.html 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. {extend name="../../admin/view/main"}
  2. {block name='content'}
  3. <style>
  4. .layui-card-body{
  5. background: white;
  6. }
  7. #newForm{
  8. width: 80%;
  9. }
  10. </style>
  11. <div id="newForm">
  12. <el-form :model="form" label-width="140px" ref="form">
  13. <el-form-item label="招标类型" prop="type_id" :rules="{message:'请选择',required:true}">
  14. <el-select v-model="form.type_id">
  15. <el-option v-for="item in category" :key="item.id" :value="item.id" :label="item.name"></el-option>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="披露方式" prop="b_type" :rules="{message:'请选择',required:true}">
  19. <el-select v-model="form.b_type">
  20. <el-option v-for="item in [{id:0,name:'预披露'},{id:1,name:'正式披露'}]" :key="item.id" :value="item.id" :label="item.name"></el-option>
  21. </el-select>
  22. </el-form-item>
  23. <el-form-item label="标题" prop="title" :rules="{message:'此项必须',required:true}">
  24. <el-input v-model="form.title"></el-input>
  25. </el-form-item>
  26. <el-form-item label="价格" prop="amount" :rules="{message:'此项必须',required:true}">
  27. <el-input-number :controls="false" v-model="form.amount" :min="0" :step="1"></el-input-number>
  28. </el-form-item>
  29. <el-form-item label="披露开始时间" prop="pl_time_start" :rules="{message:'此项必须',required:true}">
  30. <el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss" v-model="form.pl_time_start"></el-date-picker>
  31. </el-form-item>
  32. <el-form-item label="披露截止时间" prop="pl_time_end" :rules="{message:'此项必须',required:true}">
  33. <el-date-picker type="datetime" value-format="yyyy-MM-dd HH:mm:ss" v-model="form.pl_time_end"></el-date-picker>
  34. </el-form-item>
  35. <el-form-item label="城市" prop="city" :rules="{message:'此项必须',required:true}">
  36. <el-cascader :options="city" v-model="form.city"></el-cascader>
  37. </el-form-item>
  38. <el-form-item label="招标文件" prop="files">
  39. <el-button @click="addFile">增加</el-button>
  40. <div v-for="(item,idx) in form.files" :key="idx" style="width: 300px;">
  41. <el-tag @close="form.files.splice(idx,1)" closable>{{item.filename}}</el-tag>
  42. </div>
  43. </el-form-item>
  44. <el-form-item label="招标方公司名称" prop="com_name" :rules="{message:'此项必须',required:true}">
  45. <el-input v-model="form.com_name"></el-input>
  46. </el-form-item>
  47. <el-form-item label="招标方联系人" prop="com_username" :rules="{message:'此项必须',required:true}">
  48. <el-input v-model="form.com_username"></el-input>
  49. </el-form-item>
  50. <el-form-item label="招标方联系人手机号" prop="com_mobile" :rules="{message:'此项必须',required:true}">
  51. <el-input v-model="form.com_mobile"></el-input>
  52. </el-form-item>
  53. <el-form-item label="简述" prop="summary" :rules="{message:'请选择',required:true}">
  54. <textarea name="summary" class="content"></textarea>
  55. </el-form-item>
  56. <el-form-item>
  57. <el-button type="primary" @click="save" :loading="saving">保存</el-button>
  58. <el-button @click="history.back()">取消</el-button>
  59. </el-form-item>
  60. </el-form>
  61. <div style="display: none;">
  62. <button data-type="zip" data-file id="fileUpload">仅上传ZIP文件</button>
  63. </div>
  64. </div>
  65. <script>
  66. let editorContent;
  67. let vo={:json_encode($vo?:null,256)};
  68. require(['ckeditor'], function () {
  69. editorContent=window.createEditor('[name=summary]', {height: 350})
  70. if(vo){
  71. editorContent.setData(vo.summary)
  72. }
  73. });
  74. let category={:json_encode($category,256)};
  75. let city={:json_encode($city,256)};
  76. let cityTree=[];
  77. city.forEach(item=>{
  78. if(item.level===1){
  79. let province={
  80. label:item.name,
  81. value:item.id,
  82. children:[],
  83. }
  84. city.forEach(c=>{
  85. if(c.level===2 && c.pid===item.id){
  86. province.children.push({
  87. label:c.name,
  88. value:c.id,
  89. })
  90. }
  91. })
  92. cityTree.push(province)
  93. }
  94. })
  95. new Vue({
  96. el:'#newForm',
  97. data:()=>({
  98. form:vo||{
  99. type_id:null,
  100. b_type:null,
  101. title:null,
  102. summary:null,
  103. amount:null,
  104. pub_time:null,
  105. pl_time:null,
  106. com_name:null,
  107. com_username:null,
  108. com_mobile:null,
  109. city:[],
  110. files:[],
  111. },
  112. category:category,
  113. city:cityTree,
  114. saving:false,
  115. }),
  116. methods:{
  117. addFile(){
  118. $('#fileUpload').unbind('upload.done')
  119. $('#fileUpload').on('upload.done', (e,obj) => {
  120. this.form.files.push({
  121. filename:obj.file.name,
  122. fileurl:obj.data.url
  123. })
  124. });
  125. $('#fileUpload').trigger('click')
  126. },
  127. save(){
  128. let _this=this,
  129. form=this.form
  130. form.summary=editorContent.getData()
  131. this.$refs.form.validate(v=>{
  132. if(!v){
  133. return
  134. }
  135. $.ajax('{:sysuri()}',{
  136. data:form,
  137. type:'post',
  138. beforeSend(){
  139. _this.saving=true
  140. },
  141. success({code,info}){
  142. if(code){
  143. _this.$message.success('保存成功')
  144. window.history.back()
  145. }else{
  146. _this.$message.error(info)
  147. }
  148. },
  149. complete(){
  150. _this.saving=false
  151. }
  152. })
  153. })
  154. }
  155. }
  156. })
  157. </script>
  158. {/block}