index.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width,initial-scale=1.0">
  7. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vant@2.12/lib/index.css" />
  8. <link rel="stylesheet" href="./style/index.css">
  9. <link rel="icon" href="./favicon.ico">
  10. <title>锅炉检测</title>
  11. </head>
  12. <body>
  13. <div id="app">
  14. <section class="top-head">
  15. <img src="./images/logo.png" alt="">
  16. <h2 class="mt10">请您准确填写如下信息</h2>
  17. </section>
  18. <section class="section">
  19. <van-form ref="form">
  20. <h2 class="section-title">委托方信息(公司信息)</h2>
  21. <van-field :show-error="false" required name="companyName" v-model="form.companyName" label="委托单位名称" placeholder="委托单位名称" :rules="[{ required: true, message: '请输入委托单位名称',trigger:'onSubmit' }]"></van-field>
  22. <van-field name="companyAddress" v-model="form.companyAddress" label="委托单位地址" placeholder="委托单位地址"></van-field>
  23. <van-field :show-error="false" required name="companyName1" v-model="form.companyName1" label="付款单位名称" placeholder="付款单位名称" :rules="[{ required: true, message: '请输入付款单位名称',trigger:'onSubmit' }]"></van-field>
  24. <van-field :show-error="false" readonly required name="invoice" clickable label="开票种类" :rules="[{ required: true, message: '请选择开票种类' }]" :value="form.invoice" placeholder="选择开票种类" @click="typeShowPicker = true"></van-field>
  25. <van-popup v-model="typeShowPicker" round position="bottom">
  26. <van-picker show-toolbar :default-index="0" :columns="typeOptions" @cancel="typeShowPicker = false" @confirm="ontypeConfirm" />
  27. </van-popup>
  28. <van-field name="contacts" required v-model="form.contacts" label="联系人" placeholder="联系人" :rules="[{ required: true, message: '请输入联系人' }]"></van-field>
  29. <van-field name="tel" required v-model="form.tel" :rules="[{ validator, message: '请输入正确手机号码' }]" label="手机号码" placeholder="手机号码"></van-field>
  30. <h2 class="section-title" style="margin-top:20px;">
  31. 受测单位信息
  32. <van-button type="info" size="small" style="vertical-align: middle;margin-left:10px;height: 28px;float:right;" @click="handleAdd()"> + 添加</van-button>
  33. </h2>
  34. <van-collapse v-model="activeNames">
  35. <van-collapse-item v-for="(item,index) in form.itemsArr" :name="index">
  36. <template #title>
  37. <div>受测单位信息 - {{index+1}} <van-icon name="cross" @click.stop="handleClose(item,index)" size="14" color="#999" style="margin: 5px 10px 0 0;float:right;"/></div>
  38. </template>
  39. <van-field :show-error="false" required name="testingName" v-model="item.testingName" label="受测单位名称" placeholder="受测单位名称" :rules="[{ required: true, message: '请输入受测单位名称' }]"></van-field>
  40. <van-field name="testingAddress" v-model="item.testingAddress" label="受测单位地址" placeholder="受测单位地址"></van-field>
  41. <van-field name="registerName" required v-model="item.registerName" label="联系人" placeholder="联系人" :rules="[{ required: true, message: '请输入联系人' }]"></van-field>
  42. <van-field :show-error="false" name="registerPhone" required v-model="item.registerPhone" :rules="[{ validator, message: '请输入正确手机号码' }]" label="手机号码" placeholder="手机号码"></van-field>
  43. <van-field :show-error="false" name="boilerNum" required v-model="item.boilerNum" :rules="[{ required: true, message: '请输入锅炉数量' }]" label="锅炉数量" placeholder="1"></van-field>
  44. <van-field readonly :show-error="false" name="runMode" required v-model="item.runMode" clickable :rules="[{ required: true, message: '请输入运行方式' }]" label="运行方式" placeholder="选择运行方式" @click="runModePicker = true"></van-field>
  45. <van-popup v-model="runModePicker" round position="bottom">
  46. <van-picker ref="runModePicker" show-toolbar :columns="runModeOptions" :default-index="0" @cancel="runModeShowPicker = false" @confirm="onRunModeConfirm(index,item)" />
  47. </van-popup>
  48. <van-field readonly :show-error="false" required name="flueType" :rules="[{ required: true, message: '请选择烟道类型' }]" clickable label="烟道类型" :value="item.flueType" placeholder="选择烟道类型" @click="flueShowPicker = true"></van-field>
  49. <van-popup v-model="flueShowPicker" round position="bottom">
  50. <van-picker ref="flueTypePicker" show-toolbar :columns="flueTypeOptions" :default-index="0" @cancel="flueShowPicker = false" @confirm="onflueTypeConfirm(index,item)" />
  51. </van-popup>
  52. <van-field name="wasteWater" required v-model="item.wasteWater" :rules="[{ required: true, message: '请输入废水检测' }]" label="废水检测" placeholder="3项/8项/其他"></van-field>
  53. <van-field name="wasteWaterNum" required v-model="item.wasteWaterNum" :rules="[{ required: true, message: '请输入废水排放口数' }]" label="废水排放口" placeholder="(1)个"></van-field>
  54. <van-field name="isTaskNoice" required label="是否检测噪声">
  55. <template #input>
  56. <van-radio-group v-model="item.isTaskNoice" direction="horizontal">
  57. <van-radio name="是">是</van-radio>
  58. <van-radio name="否">否</van-radio>
  59. </van-radio-group>
  60. </template>
  61. </van-field>
  62. </van-collapse-item>
  63. </van-collapse>
  64. <div style="margin:20px 16px;">
  65. <van-button round block type="info" @click="handleSubmit()">提交</van-button>
  66. </div>
  67. </van-form>
  68. </section>
  69. </div>
  70. </body>
  71. </html>
  72. <script src="https://cdn.jsdelivr.net/npm/vue@2.6/dist/vue.min.js"></script>
  73. <script src="https://cdn.jsdelivr.net/npm/vant@2.12/lib/vant.min.js"></script>
  74. <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
  75. <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.9.4/qs.min.js"></script>
  76. <script>
  77. var app = new Vue({
  78. el: '#app',
  79. data: {
  80. form: {
  81. companyName: '',
  82. companyName1: '',
  83. companyAddress: '',
  84. invoice: '',
  85. contacts: '',
  86. tel: '',
  87. itemsArr: [{
  88. testingName: '',
  89. testingAddress: '',
  90. registerName: '',
  91. registerPhone: '',
  92. boilerNum: 0,
  93. flueType: '',
  94. runMode: '',
  95. wasteWater: '3项',
  96. wasteWaterNum: 0,
  97. isTaskNoice: '是',
  98. }]
  99. },
  100. activeNames: [0],
  101. activeIndex: 0,
  102. typeOptions: ['普通发票', '专用发票'], //开票种类
  103. typeShowPicker: false,
  104. runModeOptions: ['供暖季运行', '全年运行'],
  105. runModePicker: false,
  106. flueTypeOptions: ['联合', '独立'],
  107. flueShowPicker: false,
  108. },
  109. computed: {
  110. },
  111. mounted() {
  112. var s = 'http://guo-lu-jian-ce.oss-cn-beijing.aliyuncs.com/任务单/BHT-TR20210721-001/报告/委托单.doc';
  113. var name = s.substring(s.lastIndexOf("/") + 1);
  114. let dotIndex = name.lastIndexOf('.')
  115. var name = name.substring(0, dotIndex);
  116. console.log(name1, 'name'); //sdf
  117. },
  118. methods: {
  119. /*验证电话*/
  120. validator(val) {
  121. return /^1[0-9]{10}$/.test(val);
  122. },
  123. ontypeConfirm(value) {
  124. this.form.invoice = value;
  125. this.typeShowPicker = false;
  126. },
  127. onRunModeConfirm(index, item) {
  128. const runModeValue = this.$refs.runModePicker[0].getValues()
  129. item['runMode'] = runModeValue[0]
  130. this.runModePicker = false
  131. },
  132. // runModeChange(picker, value, index) {
  133. // this.runModeValue = value
  134. // },
  135. onflueTypeConfirm(index, item) {
  136. const flueTypeValue = this.$refs.flueTypePicker[0].getValues()
  137. item['flueType'] = flueTypeValue
  138. this.flueShowPicker = false
  139. },
  140. handleAdd() {
  141. this.activeIndex++;
  142. this.activeNames = [this.activeIndex];
  143. const obj = {
  144. testingName: '',
  145. testingAddress: '',
  146. registerName: '',
  147. registerPhone: '',
  148. boilerNum: 0,
  149. flueType: '',
  150. runMode: '',
  151. wasteWater: '3项',
  152. wasteWaterNum: 0,
  153. isTaskNoice: '是'
  154. }
  155. this.form.itemsArr.push(obj)
  156. },
  157. /*删除*/
  158. handleClose(row, index) {
  159. this.$dialog.confirm({
  160. title: '标题',
  161. message: `确定要删除单位受测信息-${index + 1} 吗`,
  162. })
  163. .then(() => {
  164. this.activeIndex--;
  165. this.form.itemsArr.splice(index, 1)
  166. })
  167. .catch(() => {
  168. // on cancel
  169. });
  170. },
  171. handleSubmit() {
  172. this.$refs.form.validate().then(() => {
  173. const toast = this.$toast.loading({
  174. duration: 0, // 持续展示 toast
  175. forbidClick: true,
  176. message: "加载中..."
  177. });
  178. let param = {
  179. jsonStr: JSON.stringify(this.form)
  180. }
  181. axios({
  182. method: 'post',
  183. url: 'http://test.kingforeyf.top:8899/ignore/customerInformation/addCustomerInformation',
  184. headers: {
  185. 'Content-Type': 'application/x-www-form-urlencoded'
  186. },
  187. data: Qs.stringify(param)
  188. }).then(res => {
  189. toast.clear()
  190. if (res.data.success) {
  191. this.$toast.success({
  192. message: '提交成功',
  193. })
  194. setTimeout(() => {
  195. window.location.href = 'success.html';
  196. }, 1000)
  197. } else {
  198. this.$toast.fail('提交失败')
  199. }
  200. }).catch(() => {
  201. toast.clear()
  202. this.$toast.fail('提交失败')
  203. })
  204. })
  205. },
  206. }
  207. })
  208. app.$mount('#app');
  209. </script>