add.html 5.9 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. .image{
  11. width: 100px;
  12. height: 100px;
  13. }
  14. .video{
  15. width: 200px;
  16. height: 200px;
  17. }
  18. .child-form{
  19. width: 500px;
  20. background: #f4f4f4;
  21. padding: 10px;
  22. display: inline-block;
  23. }
  24. </style>
  25. <div id="newForm">
  26. <el-form :model="form" label-width="140px" ref="form" size="medium">
  27. <el-form-item label="联系人" prop="real_name" :rules="{message:'此项必须',required:true}">
  28. <el-input v-model="form.real_name"></el-input>
  29. </el-form-item>
  30. <el-form-item label="联系电话" prop="mobile" :rules="{message:'此项必须',required:true}">
  31. <el-input v-model="form.mobile"></el-input>
  32. </el-form-item>
  33. <el-form-item label="生产技术标准" prop="standard_tech" :rules="{message:'此项必须',required:true}">
  34. <el-input v-model="form.standard_tech"></el-input>
  35. </el-form-item>
  36. <el-form-item label="生产验收标准" prop="standard_check" :rules="{message:'此项必须',required:true}">
  37. <el-input v-model="form.standard_check"></el-input>
  38. </el-form-item>
  39. <el-form-item label="商品信息:" prop="item" :rules="[{message:'此项必须',required:true},{type:'array',min:1,message:'需要商品信息'}]">
  40. <div><el-button @click="addItem">添加</el-button></div>
  41. <div v-for="(item,idx) in form.item" class="child-form">
  42. <el-form-item label="商品名称">
  43. <el-input v-model="item.name"></el-input>
  44. </el-form-item>
  45. <el-form-item label="规格">
  46. <el-input v-model="item.spec"></el-input>
  47. </el-form-item>
  48. <el-form-item label="数量">
  49. <el-input v-model="item.number"></el-input>
  50. </el-form-item>
  51. <el-form-item label="质量标准">
  52. <el-input v-model="item.standard"></el-input>
  53. </el-form-item>
  54. <el-form-item label="采购价">
  55. <el-input v-model="item.price"></el-input>
  56. </el-form-item>
  57. </div>
  58. </el-form-item>
  59. <el-form-item label="图片视频" prop="files">
  60. <el-button @click="addFile('image')">增加图片/视频</el-button>
  61. <div>
  62. <div v-for="(item,idx) in form.images" :key="idx" style="display: inline-block;">
  63. <el-image v-if="item.type==='image'" :src="item.src" class="video"></el-image>
  64. <video controls v-else :src="item.src" class="video"></video>
  65. <a @click="form.images.splice(idx,1)">删除</a>
  66. </div>
  67. </div>
  68. </el-form-item>
  69. <el-form-item label="交货地址" :rules="{message:'此项必须',required:true}" prop="post_address">
  70. <el-input v-model="form.post_address"></el-input>
  71. </el-form-item>
  72. <el-form-item label="交货时间" :rules="{message:'此项必须',required:true}" prop="post_time">
  73. <el-date-picker type="datetime" v-model="form.post_time" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
  74. </el-form-item>
  75. <el-form-item>
  76. <el-button type="primary" @click="save" :loading="saving">保存</el-button>
  77. <el-button @click="history.back()">取消</el-button>
  78. </el-form-item>
  79. </el-form>
  80. <div style="display: none;">
  81. <button data-type="zip" data-file id="fileUpload"></button>
  82. </div>
  83. </div>
  84. <script>
  85. let editorContent;
  86. let vo={:json_encode($vo?:null,256)};
  87. new Vue({
  88. el:'#newForm',
  89. data:()=>({
  90. form:vo||{
  91. real_name:null,
  92. mobile:null,
  93. standard_tech:null,
  94. standard_check:null,
  95. item:[],
  96. images:[],
  97. },
  98. saving:false,
  99. }),
  100. methods:{
  101. addItem(){
  102. this.form.item.push({
  103. name:null,
  104. spec:null,
  105. number:null,
  106. standard:null,
  107. price:null,
  108. })
  109. },
  110. addFile(){
  111. $('#fileUpload').unbind('upload.done')
  112. $('#fileUpload').on('upload.done', (e,obj) => {
  113. let type=obj.file.type.split('/')[0]
  114. if(['image','video'].indexOf(type)===-1){
  115. this.$message.error('请上传正确的格式')
  116. return
  117. }
  118. this.form.images.push({
  119. type:type,
  120. src:obj.data.url
  121. })
  122. });
  123. $('#fileUpload').trigger('click')
  124. },
  125. save(){
  126. let _this=this,
  127. form=this.form
  128. this.$refs.form.validate(v=>{
  129. if(!v){
  130. return
  131. }
  132. $.ajax('{:sysuri()}',{
  133. data:form,
  134. type:'post',
  135. beforeSend(){
  136. _this.saving=true
  137. },
  138. success({code,info}){
  139. if(code){
  140. _this.$message.success('保存成功')
  141. window.history.back()
  142. }else{
  143. _this.$message.error(info)
  144. }
  145. },
  146. complete(){
  147. _this.saving=false
  148. }
  149. })
  150. })
  151. }
  152. }
  153. })
  154. </script>
  155. {/block}