一个基于weui的表单添加页

1、公众号页面跳转规则:
/*
* 公众号页面进入规则:
* 1.先请求接口获得一个URL
* 2.跳转请求的URL,腾讯会重定向到本地的页面
* 3.解析重定向的页面,获取code
* 4.传递code,获取到openid
* 5.openid是微信的唯一标识,拿到之后就可以请求自己的后台了(获取绑定用户列表、解绑、绑定等)
* */
2、上传附件的时候,是先上传保存到服务器拿到附件的id、src、name,直接根据sec显示,这里是转为base64显示的
/** * 上传附件 * 1、先使用base64显示 * 2、提交上传 * 3.保存表单 * */ function uploadAnyfilesFun() { var uploadFiles = document.querySelector('#upload_file'); uploadFiles.addEventListener('change', function () { var file = this.files[0]; // 图片上传后台 let formData = new FormData(); formData.append('file', file); $.ajax({ url: baseUrl+'/wechat/opinion/upload', type: 'POST', traditional: true, headers: {'token': Sessiontoken}, data: formData, processData: false, //tell jQuery not to process the data contentType: false, //tell jQuery not to set contentType success: function (data) { if (data.code != 0) { $.toast("上传附件失败", 'forbidden') return }else{ fileList.push(data.data) //实例化fileReader, let fd = new FileReader(); //获取当前选择文件的类型 let fileType = file.type; //调它的readAsDataURL并把原生File对象传给它, fd.readAsDataURL(file);//base64 // base64显示图片 fd.onload = function(){ if(/^image\/[jpeg|png|jpg|gif]/.test(fileType)){ let s = Date.parse(new Date()) let h = '<span>' + '<img onclick="imgsAction(this,\''+data.data.id+'\')" src="'+this.result+'" alt="">' + '</span>' $(".imgsDemo").append(h) } } } } }); }, false); }
3、一个小知识点:数组中,根据索引删除数组中的元素
Array.prototype.delete=function(delIndex){ var temArray=[]; for(var i=0;i<this.length;i++){ if(i!=delIndex){ temArray.push(this[i]); } } return temArray; }
// 删除保存的文件 let d = fileList.findIndex((item,index)=>{ return item.id === s }) fileList = fileList.delete(d)
4、完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="multipart/form-data; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>咨询建议</title>
</head>
<link rel="stylesheet" href="https://cdn.bootcss.com/weui/1.1.3/style/weui.min.css">
<link rel="stylesheet" href="https://cdn.bootcss.com/jquery-weui/1.2.1/css/jquery-weui.min.css">
<link rel="stylesheet" href="../../src/dist/css/page.css">
<body>
<div class="weui-cells user-binding">
<div class="weui-cells__tips">咨询建议</div>
<div class="weui-cell">
<div class="weui-cell__hd">
<i class="iconfont iconyonghuming"></i>
</div>
<div class="weui-cell__bd">
<p>姓名</p>
</div>
<div class="weui-cell__bd">
<input class="weui-input" type="text" placeholder="请输入姓名" id="username">
</div>
<div class="weui-cell__ft" style="position: absolute;right:10px;">
<input type="checkbox" style="position: relative;top:2px;margin-right: 4px;" id="isAnonymity">匿名
</div>
</div>
<div class="weui-cell">
<div class="weui-cell__hd">
<i class="iconfont icondianhua"></i>
</div>
<div class="weui-cell__bd">
<p>电话</p>
</div>
<div class="weui-cell__bd">
<input class="weui-input" type="text" placeholder="请输入您的联系电话" id="phone">
</div>
</div>
<div class="weui-cell">
<div class="weui-cell__hd">
<i class="iconfont icondizhi"></i>
</div>
<div class="weui-cell__bd">
<p>地址</p>
</div>
<div class="weui-cell__bd">
<input class="weui-input" type="text" placeholder="请输入您的详细地址" id="address">
</div>
</div>
<div class="weui-cell">
<div class="weui-cell__hd">
<i class="iconfont iconSpare"></i>
</div>
<div class="weui-cell__bd">
<p>反映事项</p>
</div>
<div class="weui-cell__bd">
<input class="weui-input" type="text" placeholder="请选择反映事项" id="type">
</div>
</div>
<div class="weui-cell">
<div class="weui-cell__hd">
<i class="iconfont iconleixing"></i>
</div>
<div class="weui-cell__bd">
<p>事项详情</p>
</div>
<div class="weui-cell__bd">
<textarea class="weui-textarea" placeholder="请输入事项详情" rows="3" id="eventdetail"></textarea>
</div>
</div>
<div class="weui-cell">
<div class="weui-cell__hd">
<i class="iconfont icontec"></i>
</div>
<div class="weui-cell__bd">
<p>上传图片</p>
</div>
<div class="weui-cell__bd">
<div class="weui-cell__ft add-cell" onclick="uploadAnyfiles.uploadFilesFun()">+ 上传</div>
</div>
</div>
<div class="weui-cell">
<div class="imgsDemo"></div>
</div>
<div class="button_sp_area">
<a href="javascript:;" class="weui-btn weui-btn_primary" onclick="doAction()">提交</a>
</div>
</div>
<div class="showImgDemo">
<img src="https://pic4.zhimg.com/50/v2-f171216c639bef831d765b41c359af4c_hd.jpg" alt="" onclick="hideBigImg()">
</div>
<div class="select_file" style="display: none;">
<input type="file" accept="image/*" id="upload_file" capture="camera">
</div>
<script src="https://cdn.bootcss.com/jquery/1.11.0/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/jquery-weui/1.2.1/js/jquery-weui.min.js"></script>
<!-- Dist -->
<script src="../../src/dist/js/index.js"></script>
<script src="../../src/dist/js/utils.js"></script>
<script src="../../src/dist/js/request.js"></script>
<script src="../../src/dist/js/uploadAnyfiles.js"></script>
<script>
var wcode = '',
openid = '';
var customid = '';
var fileList = [];
const typeOption = [
{
title: "咨询",
value: "1",
},
{
title: "投诉",
value: "2",
},
{
title: "表扬",
value: "3",
}
]
$(function(){
var paras = location.search; //search获得地址中的参数,内容为'?itemId=12'
var result = paras.match(/[^\?&]*=[^&]*/g); //match是字符串中符合的字段一个一个取出来,result中的值为['login=xx','table=admin']
paras = {}; //让paras变成没有内容的json对象
for (i in result) {
var temp = result[i].split('='); //split()将一个字符串分解成一个数组,两次遍历result中的值分别为['itemId','xx']
paras[temp[0]] = temp[1];
}
let code = paras.code; //根据参数名"itemId",获取参数值
console.log(code)
loadCsConter()
return
if(code){
wcode = code
getOpenId()
}else{
getWeiXinURL()
}
loadCsConter()
})
function loadCsConter() {
$("#type").select({
title: "反映事项",
items: typeOption
});
uploadAnyfilesFun()
}
/**
* 上传附件
* 1、先使用base64显示
* 2、提交上传
* 3.保存表单
* */
function uploadAnyfilesFun() {
var uploadFiles = document.querySelector('#upload_file');
uploadFiles.addEventListener('change', function () {
var file = this.files[0];
// 图片上传后台
let formData = new FormData();
formData.append('file', file);
$.ajax({
url: baseUrl+'/wechat/opinion/upload',
type: 'POST',
traditional: true,
headers: {'token': Sessiontoken},
data: formData,
processData: false, //tell jQuery not to process the data
contentType: false, //tell jQuery not to set contentType
success: function (data) {
if (data.code != 0) {
$.toast("上传附件失败", 'forbidden')
return
}else{
fileList.push(data.data)
//实例化fileReader,
let fd = new FileReader();
//获取当前选择文件的类型
let fileType = file.type;
//调它的readAsDataURL并把原生File对象传给它,
fd.readAsDataURL(file);//base64
// base64显示图片
fd.onload = function(){
if(/^image\/[jpeg|png|jpg|gif]/.test(fileType)){
let s = Date.parse(new Date())
let h = '<span>' +
'<img onclick="imgsAction(this,\''+data.data.id+'\')" src="'+this.result+'" alt="">' +
'</span>'
$(".imgsDemo").append(h)
}
}
}
}
});
}, false);
}
// 获取openid,之后才能进行添加操作
function getOpenId() {
get("/wechat/binding/toIdentityBinding?code="+wcode, {}, function (data) {
if (data.code === 0) {
openid = data.data
} else {
$.toast('获取openid失败!', 'forbidden');
}
}, false, true);
}
//获取URL
function getWeiXinURL() {
get("/wechat/binding/getAuthUrl", {}, function (data) {
if (data.code === 0) {
let url = data.data
url='https://open.weixin.qq.com/connect/oauth2/authorize?redirect_uri=http://zbcsrq.com:33813/pages/ConsultationAdvice/add.html&appid=wx60c25e54627b700d&response_type=code&scope=snsapi_base&state=#wechat_redirect'
location.replace(url)
} else {
$.toast('获取URL失败!', 'forbidden');
}
}, false, true);
}
function hideBigImg() {
$(".showImgDemo").hide()
}
function isPoneAvailable(poneInput) {
var myreg=/^[1][3,4,5,7,8][0-9]{9}$/;
if (!myreg.test(poneInput)) {
return false;
} else {
return true;
}
}
// 点击图片操作“
function imgsAction(obj,s) {
$.actions({
actions: [{
text: "删除图片",
onClick: function () {
//调用删除图片接口,删除上传到服务器的图片 ==== 待定
$(obj).parent().remove()
// 删除保存的文件
let d = fileList.findIndex((item,index)=>{
return item.id === s
})
fileList = fileList.delete(d)
}
},{
text: "查看大图",
onClick: function () {
//do something
let src = $(obj).attr("src")
$(".showImgDemo img").attr("src",src)
$(".showImgDemo").show()
}
}]
});
}
Array.prototype.delete=function(delIndex){
var temArray=[];
for(var i=0;i<this.length;i++){
if(i!=delIndex){
temArray.push(this[i]);
}
}
return temArray;
}
function doAction(){
let username = $("#username").val()
let phone = $("#phone").val()
let type=$("#type").val()
let address=$("#address").val()
let content=$("#eventdetail").val()
let isAnonymity = $("#isAnonymity").prop("checked")
if(!isAnonymity && username===''){
$.toast("非匿名时请填写姓名", "text")
return
}
if(phone === ''){
$.toast("请输入联系电话", "text")
return
}
if(!isPoneAvailable(phone)){
$.toast("联系电话格式不正确", "text")
return
}
if(type === ''){
$.toast("请选择反映事项", "text")
return
}
let opiniontype = typeOption.find((i,v)=>{
if(v.title = type)return v.value
})
let saveDataForm = {
openid:openid,
name:username,
phone,
address,
content,
opiniontype,
fileList:fileList
}
post('/wechat/opinion', JSON.stringify(saveDataForm), function (data) {
if (data.code != 0) {
$.toast(data.msg, 'forbidden')
return
}else{
$.toast("保存成功", 'text')
setTimeout(function () {
location=location
},1000*2)
}
}, false, true);
}
//上传附件
function clickfile() {
$("#file").click()
}
</script>
</body>
</html>

浙公网安备 33010602011771号