使用背景
由于是使用springboot开发的后端,前端配套使用了thymeleaf标签,类似于jsp里面的EL和JSTL语法,这个语法原来就是为了替代jsp。
前端使用h5开发,该页面使用的不多,可以完全忽略该语法。想学的可以前去可以百度一下。
由于是前后端都是一个人开发,所以起两个服务明显是我不希望看到的。所以如果能够直接导入,那么再好不过了。
使用vue服务起和直接script导入还是有细微差别的。以下简单介绍一下,具体可以参考以下代码。
使用thymeleaf
<html xmlns:th="http://www.springframework.org/schema/jdbc">
包引入
<link rel="stylesheet" href="css/elemen-ui.css" th:href="@{/css/elemen-ui.css}"/>
<script type="text/javascript" src="js/axios.min.js" th:href="@{/js/axios.min.js}" charset="utf-8"></script>
<script type="text/javascript" src="js/vue.min.js" th:href="@{/js/vue.min.js}" charset="utf-8"></script>
<script type="text/javascript" src="js/element.js" th:href="@{/js/element.js}" charset="utf-8"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/qs/6.9.4/qs.min.js"></script>
直接将js包下载到本地使用script标签引入,需要引入的包。需要的朋友可以点击下面超链接复制到本地。
element的css包/js包,
vue的js包,
axios的js包,
qs的js包
对于一般的项目够用了,比如我这样的。
如果使用thymeleaf语言,在html标签内可通过th标签加${}表达式访问model里的对象数据。但如果不想通过th标签而是简单地访问model对象数据,
或是想在javascript代码块里访问model中的数据,则要使用内联的方法。
在<script>中使用 th:inline可以在js代码里通过双中括号使用后台变量
<script th:inline="javascript" type="application/javascript">
qs 区别
直接引用会报错,需要加上window,qs改成Qs,这是与vue中不同的地方。其余都是相同的。
window.Qs.stringify(params)
这样我们就可以少启动一个服务了。
<!DOCTYPE html>
<html xmlns:th="http://www.springframework.org/schema/jdbc">
<head>
<meta charset="UTF-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Cache-Control" content="no-siteapp"/>
<link rel="stylesheet" href="css/elemen-ui.css" th:href="@{/css/elemen-ui.css}"/>
<script type="text/javascript" src="js/axios.min.js" th:href="@{/js/axios.min.js}" charset="utf-8"></script>
<script type="text/javascript" src="js/vue.min.js" th:href="@{/js/vue.min.js}" charset="utf-8"></script>
<script type="text/javascript" src="js/element.js" th:href="@{/js/element.js}" charset="utf-8"></script>
<title>检修(非电类)工作票</title>
</head>
<body>
<div class="table_wrap" id="app">
<!--startprint-->
<table class="temperatureChart" id="PrintArea">
<caption>
<p style="font-size: 20px;font-weight: bold">检修(非电类)工作票</p>
</caption>
<thead>
</thead>
<tbody>
<tr>
<td style=" 20%;">工作单位</td>
<td style=" 40%;">剥离运行部</td>
<td style=" 20%;">编号</td>
<td style=" 20%;">{{inspectlog_code}}</td>
</tr>
<tr>
<td>工作成员</td>
<td><select name="equip_code" v-model="work_member" lay-verify="required" lay-search="">
<option v-for="item in employee" v-bind:value="item.emp_code" value="">{{item.emp_name}}</option>
</select>
</td>
<td>作业负责人</td>
<td><select name="equip_code" v-model="work_timoneer" lay-verify="required" lay-search="">
<option v-for="item in employee" v-bind:value="item.emp_code" value="">{{item.emp_name}}</option>
</select></td>
</tr>
<tr>
<td>工作设备/地点</td>
<td><select name="equip_code" lay-verify="required" lay-search="">
<option v-for="item in equip" v-bind:value="item.equip_code" value="">{{item.equip_desc}}</option>
</select>/
<select name="modules" v-model="work_address" lay-verify="required" lay-search="">
<option value="">剥离运行部</option>
<option value="1">一号检修点</option>
<option value="2">二号检修点</option>
</select>
</td>
<td>作业人数</td>
<td><select name="modules" v-model="work_empCount" lay-verify="required" lay-search="">
<option value="1">1人</option>
<option value="2">2人</option>
<option value="3">3人</option>
<option value="4">4人</option>
<option value="5">5人</option>
<option value="6">6人</option>
</select>
</td>
</tr>
<tr>
<td>工作内容</td>
<td colspan="3">
<input value="" style="display: inline-block;100%;text-align: left" v-model="inspect_desc"/></td>
</tr>
<tr>
<td>计划作业时间</td>
<td colspan="3">自<el-date-picker
v-model="start_date"
type="datetime"
placeholder="选择日期时间"
default-value
format="yyyy年MM月dd日 HH:mm:ss"
prefix-icon="el-icon-date"
clear-icon="el-icon-circle-close"></el-date-picker>开始,至自<el-date-picker
v-model="stop_date"
type="datetime"
format="yyyy年MM月dd日 HH:mm:ss"
placeholder="选择日期时间"
prefix-icon="el-icon-date"
clear-icon="el-icon-circle-close"
default-time="12:00:00">
</el-date-picker>完结
</td>
</tr>
<tr>
<td colspan="3" style="text-align: left;">1.必须采取的安全措施</td>
<td>选用划"〇"</td>
</tr>
<tr>
<td colspan="3">劳动保护穿戴齐全、上下现场提醒司机不超员不超速,检修作业时告知司机、挂好安全锁、不违章操作</td>
<td><select name="modules" v-model="safety_rule" lay-verify="required" lay-search="">
<option value="1">〇</option>
<option value="2">×</option>
</select>
</td>
</tr>
<tr>
<td>工作票签发人:</td>
<td><select name="equip_code" v-model="signature_code" lay-verify="required" lay-search="">
<option v-for="item in employee" v-bind:value="item.emp_code" value="">{{item.emp_name}}</option>
</select>
</td>
<td colspan="2">
<el-date-picker
v-model="signature_date"
type="datetime"
placeholder="选择日期时间"
default-value
format="yyyy年MM月dd日 HH:mm:ss"
prefix-icon="el-icon-date"
clear-icon="el-icon-circle-close">
</el-date-picker>
</td>
</tr>
</tbody>
</table>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/qs/6.9.4/qs.min.js"></script>
<script th:inline="javascript" type="application/javascript">
var vm = new Vue({
el: '#app',
data: {
list: [],
id: "",
inspectlog_code: "20200527",
inspect_desc: "",
start_date: "",
stop_date: "",
equip_code: "",
equip: [[${equip}]],
//使用thymeleaf标签使用后台实体,绑定到vue的model
employee: [[${employee}]],
},
methods: {
add() {
console.log("111")
let obj = new Object();
obj.id = this.id,
obj.inspectlog_code = this.inspectlog_code,
obj.inspect_dasc = this.inspect_dasc,
obj.start_date = this.start_date,
obj.stop_date = this.stop_date,
obj.work_timoneer = this.work_timoneer,
obj.work_address = this.work_address,
obj.work_empCount = this.work_empCount,
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
function postRequest(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, window.Qs.stringify(params))
.then(res => {
if (res.data > 0) {
resolve(res.data);
} else {
//Message.error(res.data.msg)
}
})
.catch(err => {
// reject(err.data)
//Message.error('服务器出错了')
})
});
}
postRequest('ADD_Inspect',obj);
}
}
})
</script>
</body>
</html>