Commit c414a95242ca43daca5e07d1bd4e9727c54b813e

Authored by 李泰瑜
1 parent 637f7776

打印,预约取消,预约修改

Showing 31 changed files with 1063 additions and 336 deletions
ant-design-vue-jeecg/src/api/api.js
... ... @@ -97,6 +97,8 @@ const getTransitURL = url => `/sys/common/transitRESTful?url=${encodeURIComponen
97 97 //保存预约信息
98 98 export const examine = (params)=>postAction('/api/examine', params);
99 99  
  100 +export const getSchedulerPrint = (params)=>postAction("/waybill/print/report?id="+params);
  101 +
100 102 // 中转HTTP请求
101 103 export const transitRESTful = {
102 104 get: (url, parameter) => getAction(getTransitURL(url), parameter),
... ...
ant-design-vue-jeecg/src/mixins/JeecgListMixin.js
... ... @@ -141,6 +141,27 @@ export const JeecgListMixin = {
141 141 this.selectedRowKeys = selectedRowKeys;
142 142 this.selectionRows = selectionRows;
143 143 },
  144 +
  145 + /* 打印 */
  146 + printWorking() {
  147 + // window.location.href = 'http://localhost:8080/jeecg-boot/jmreport/view/1367717794514341888';
  148 + window.open("http://172.16.29.47:8080/jeecg-boot/jmreport/view/1367717794514341888","_blank");
  149 + },
  150 + printOutsource() {
  151 + let routeData = this.$router.resolve({
  152 + path: "printOutsource",
  153 + });
  154 + window.open(routeData.href, '_blank');
  155 + },
  156 + printSchedulerList: function (id) {
  157 + let routeData = this.$router.resolve({
  158 + path: "PrintDemo",
  159 + query: {
  160 + id:id
  161 + }
  162 + });
  163 + window.open(routeData.href, '_blank');
  164 + },
144 165 onClearSelected() {
145 166 this.selectedRowKeys = [];
146 167 this.selectionRows = [];
... ... @@ -261,6 +282,9 @@ export const JeecgListMixin = {
261 282 this.$refs.modalForm.edit(record);
262 283 this.$refs.modalForm.title="详情";
263 284 this.$refs.modalForm.disableSubmit = true;
  285 + this.$refs.modalForm
  286 + debugger
  287 + console.log(this.$refs)
264 288 },
265 289 /* 导出 */
266 290 handleExportXls2(){
... ...
ant-design-vue-jeecg/src/views/basics/print/PrintDemo.vue 0 → 100644
  1 +<template>
  2 + <a-card :bordered="false" :class="{'abcdefg':true}">
  3 + <div class="no-print" style="text-align: right">
  4 + <a-button v-print="'#printContent'" ghost type="primary">打印</a-button>
  5 + </div>
  6 + <section ref="print" id="printContent" class="abcdefg">
  7 + <div style="text-align: center">
  8 + <p style="font-size: 24px;font-weight: 800">发运单详情</p>
  9 + </div>
  10 + <!--签字-->
  11 + <a-col :md="24" :sm="24">
  12 + <div class="sign" style="text-align: left;height: inherit">
  13 +
  14 + <a-col :span="24">
  15 + <span>
  16 + 发运人(单位):
  17 + </span>
  18 + <a-input style="width: 30%" v-model="printer"/>
  19 + <span style="margin-left: 13%">起运时间:</span>
  20 + <a-input style="width: 30%" v-model="printer"/>
  21 + </a-col>
  22 +
  23 +
  24 + <a-col :span="24" style="margin-top: 20px">
  25 + <span>
  26 + 运单编号:
  27 + </span>
  28 + <a-input style="width: 31.5%" v-model="printer"/>
  29 + <span style="margin-left: 13%">收货人:</span>
  30 + <a-input style="width: 31%" v-model="printer"/>
  31 + </a-col>
  32 +
  33 +
  34 +
  35 + <a-col :span="24" style="margin-top: 20px">
  36 + <span>物品名称</span>
  37 + <a-input style="width: 11%" v-model="printer.name"/>
  38 +
  39 + <span style="margin-left: 3.5%">毛重:</span>
  40 + <a-input style="width: 11%" v-model="printer"/>
  41 +
  42 + <span style="margin-left: 3.5%">运输单价:</span>
  43 + <a-input style="width: 11%" v-model="printer"/>
  44 +
  45 + <span style="margin-left: 3.5%">规格:</span>
  46 + <a-input style="width: 11%" v-model="printer"/>
  47 +
  48 + <span style="margin-left: 3.5%">件数:</span>
  49 + <a-input style="width: 11%" v-model="printer"/>
  50 + </a-col>
  51 +
  52 +
  53 +
  54 + <a-col :span="24" style="margin-top: 20px">
  55 + <span>备注:</span>
  56 + <a-input style="width: 80%" v-model="printer"/>
  57 + </a-col>
  58 +
  59 +
  60 +
  61 +<!-- <a-col style="margin-top: 20px" :span="24">-->
  62 +<!-- <span>打印图片:</span>-->
  63 +<!-- <br/>-->
  64 +<!-- <a-upload-->
  65 +<!-- action="/jsonplaceholder.typicode.com/posts/"-->
  66 +<!-- listType="picture-card"-->
  67 +<!-- :fileList="fileList"-->
  68 +<!-- @preview="handlePreview"-->
  69 +<!-- @change="handleChange">-->
  70 +<!-- <div v-if="fileList.length < 3">-->
  71 +<!-- <a-icon type="plus" />-->
  72 +<!-- <div class="ant-upload-text">Upload</div>-->
  73 +<!-- </div>-->
  74 +<!-- </a-upload>-->
  75 +<!-- <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">-->
  76 +<!-- <img alt="example" style="width: 100%" :src="previewImage" />-->
  77 +<!-- </a-modal>-->
  78 +<!-- </a-col>-->
  79 + </div>
  80 + </a-col>
  81 + </section>
  82 + </a-card>
  83 + <!--</page-layout>-->
  84 +</template>
  85 +<script>
  86 + import ACol from "ant-design-vue/es/grid/Col";
  87 + import ARow from "ant-design-vue/es/grid/Row";
  88 + import ATextarea from 'ant-design-vue/es/input/TextArea'
  89 + import {getSchedulerPrint} from '../../../api/api'
  90 +
  91 + export default {
  92 + components: {
  93 + ATextarea,
  94 + ARow,
  95 + ACol,
  96 + },
  97 + name: 'Printgzsld',
  98 + props:{
  99 + reBizCode:{
  100 + type: String,
  101 + default: ''
  102 + }
  103 + },
  104 + data(){
  105 + return {
  106 + columns: [{
  107 + }
  108 + ],
  109 + labelCol: {
  110 + xs: { span: 24 },
  111 + sm: { span: 2 },
  112 + },
  113 + wrapperCol: {
  114 + xs: { span: 24 },
  115 + sm: { span: 8 },
  116 + },
  117 + printer:{},
  118 +
  119 + fileList: [{
  120 + uid: '-1',
  121 + name: 'xxx.png',
  122 + status: 'done',
  123 + url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',
  124 + },
  125 + {
  126 + uid:'-2',
  127 + name:'pic1.png',
  128 + status:'done',
  129 + url:'https://www.gizbot.com/img/2016/11/whatsapp-error-lead-image-08-1478607387.jpg',
  130 + }
  131 + ],
  132 + url:{
  133 + loadApplicant:"/sps/register/loadApplicants",
  134 + loadRegisterFiles:"/sps/register/getRegisterFilesConfig",
  135 + }
  136 + }
  137 + },
  138 + created() {
  139 + this.getDate();
  140 + },
  141 + methods: {
  142 + getDate(){
  143 + // 当前时间
  144 + },
  145 + handleCancel () {
  146 + this.previewVisible = false
  147 + },
  148 + handlePreview (file) {
  149 + this.previewImage = file.url || file.thumbUrl
  150 + this.previewVisible = true
  151 + },
  152 + handleChange ({ fileList }) {
  153 + this.fileList = fileList
  154 + },
  155 + loadForm(id){
  156 + getSchedulerPrint(id).then((res) => {
  157 + this.printer=res;
  158 + console.log(this.printer)
  159 +
  160 + // this.qrcode();
  161 + })
  162 + },
  163 + },
  164 + mounted:function() {
  165 + let id = this.$route.query.id;
  166 + this.loadForm(id)
  167 + }
  168 +
  169 + }
  170 +</script>
  171 +<style scoped>
  172 + /*update_begin author:scott date:20191203 for:打印机打印的字体模糊问题 */
  173 + * {
  174 + color: #000000!important;
  175 + -webkit-tap-highlight-color: #000000!important;
  176 + }
  177 + /*update_end author:scott date:20191203 for:打印机打印的字体模糊问题 */
  178 +
  179 + .abcdefg .ant-card-body{
  180 + margin-left: 0%;
  181 + margin-right: 0%;
  182 + margin-bottom: 1%;
  183 + border:0px solid black;
  184 + min-width: 800px;
  185 + color:#000000!important;
  186 + }
  187 + .explain{
  188 + text-align: left;
  189 + margin-left: 50px;
  190 + color:#000000!important;
  191 + }
  192 + .explain .ant-input,.sign .ant-input{
  193 + font-weight:bolder;
  194 + text-align:center;
  195 + border-left-width:0px!important;
  196 + border-top-width:0px!important;
  197 + border-right-width:0px!important;
  198 + }
  199 + .explain div{
  200 + margin-bottom: 10px;
  201 + }
  202 + /* you can make up upload button and sample style by using stylesheets */
  203 + .ant-upload-select-picture-card i {
  204 + font-size: 32px;
  205 + color: #999;
  206 + }
  207 +
  208 + .ant-upload-select-picture-card .ant-upload-text {
  209 + margin-top: 8px;
  210 + color: #666;
  211 + }
  212 +</style>
0 213 \ No newline at end of file
... ...
ant-design-vue-jeecg/src/views/work/reserve/ReservationSubmissionList.vue renamed to ant-design-vue-jeecg/src/views/basics/timesetting/TimeslotList.vue
... ... @@ -4,21 +4,6 @@
4 4 <div class="table-page-search-wrapper">
5 5 <a-form layout="inline" @keyup.enter.native="searchQuery">
6 6 <a-row :gutter="24">
7   - <a-col :xl="6" :lg="7" :md="8" :sm="24">
8   - <a-form-item label="客户名称">
9   - <a-input placeholder="请输入客户名称" v-model="queryParam.customerName"></a-input>
10   - </a-form-item>
11   - </a-col>
12   - <a-col :xl="6" :lg="7" :md="8" :sm="24">
13   - <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
14   - <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
15   - <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
16   - <a @click="handleToggleSearch" style="margin-left: 8px">
17   - {{ toggleSearchStatus ? '收起' : '展开' }}
18   - <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
19   - </a>
20   - </span>
21   - </a-col>
22 7 </a-row>
23 8 </a-form>
24 9 </div>
... ... @@ -27,7 +12,7 @@
27 12 <!-- 操作按钮区域 -->
28 13 <div class="table-operator">
29 14 <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
30   - <a-button type="primary" icon="download" @click="handleExportXls('预约表')">导出</a-button>
  15 + <a-button type="primary" icon="download" @click="handleExportXls('时间段设置')">导出</a-button>
31 16 <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
32 17 <a-button type="primary" icon="import">导入</a-button>
33 18 </a-upload>
... ... @@ -104,7 +89,7 @@
104 89 </a-table>
105 90 </div>
106 91  
107   - <reservation-submission-modal ref="modalForm" @ok="modalFormOk"></reservation-submission-modal>
  92 + <timeslot-modal ref="modalForm" @ok="modalFormOk"></timeslot-modal>
108 93 </a-card>
109 94 </template>
110 95  
... ... @@ -113,17 +98,18 @@
113 98 import '@/assets/less/TableExpand.less'
114 99 import { mixinDevice } from '@/utils/mixin'
115 100 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
116   - import ReservationSubmissionModal from './modules/ReservationSubmissionModal'
  101 + import TimeslotModal from './modules/TimeslotModal'
  102 + import {filterMultiDictText} from '@/components/dict/JDictSelectUtil'
117 103  
118 104 export default {
119   - name: 'ReservationSubmissionList',
  105 + name: 'TimeslotList',
120 106 mixins:[JeecgListMixin, mixinDevice],
121 107 components: {
122   - ReservationSubmissionModal
  108 + TimeslotModal
123 109 },
124 110 data () {
125 111 return {
126   - description: '预约表管理页面',
  112 + description: '时间段设置管理页面',
127 113 // 表头
128 114 columns: [
129 115 {
... ... @@ -137,62 +123,30 @@
137 123 }
138 124 },
139 125 {
140   - title:'预约时间',
  126 + title:'pid',
141 127 align:"center",
142   - dataIndex: 'appointmentTime',
143   - customRender:function (text) {
144   - return !text?"":(text.length>10?text.substr(0,10):text)
145   - }
146   - },
147   - {
148   - title:'预约形式',
149   - align:"center",
150   - dataIndex: 'reservationMethod_dictText'
151   - },
152   - {
153   - title:'车牌号',
154   - align:"center",
155   - dataIndex: 'carNumber'
156   - },
157   - {
158   - title:'装车/卸车',
159   - align:"center",
160   - dataIndex: 'objective_dictText'
161   - },
162   - {
163   - title:'司机名称',
164   - align:"center",
165   - dataIndex: 'driverName'
166   - },
167   - {
168   - title:'司机手机号',
169   - align:"center",
170   - dataIndex: 'phoneNumber'
171   - },
172   - {
173   - title:'车型',
174   - align:"center",
175   - dataIndex: 'vehicle_dictText'
  128 + dataIndex: 'pid'
176 129 },
177 130 {
178   - title:'汽车吨位',
  131 + title:'时间段',
179 132 align:"center",
180   - dataIndex: 'vehicleTonnage'
  133 + dataIndex: 'timeslot'
181 134 },
182 135 {
183   - title:'客户名称',
  136 + title:'次数',
184 137 align:"center",
185   - dataIndex: 'customerName'
  138 + dataIndex: 'quota'
186 139 },
187 140 {
188   - title:'订单号',
  141 + title:'开关',
189 142 align:"center",
190   - dataIndex: 'orderNumber'
  143 + dataIndex: 'state',
  144 + customRender: (text) => (text ? filterMultiDictText(this.dictOptions['state'], text) : ''),
191 145 },
192 146 {
193   - title:'填表人电话',
  147 + title:'备注',
194 148 align:"center",
195   - dataIndex: 'submitPhone'
  149 + dataIndex: 'remarks'
196 150 },
197 151 {
198 152 title: '操作',
... ... @@ -204,11 +158,11 @@
204 158 }
205 159 ],
206 160 url: {
207   - list: "/reserve/reservationSubmission/list",
208   - delete: "/reserve/reservationSubmission/delete",
209   - deleteBatch: "/reserve/reservationSubmission/deleteBatch",
210   - exportXlsUrl: "/reserve/reservationSubmission/exportXls",
211   - importExcelUrl: "reserve/reservationSubmission/importExcel",
  161 + list: "/timesetting/timeslot/list",
  162 + delete: "/timesetting/timeslot/delete",
  163 + deleteBatch: "/timesetting/timeslot/deleteBatch",
  164 + exportXlsUrl: "/timesetting/timeslot/exportXls",
  165 + importExcelUrl: "timesetting/timeslot/importExcel",
212 166  
213 167 },
214 168 dictOptions:{},
... ... @@ -216,6 +170,7 @@
216 170 }
217 171 },
218 172 created() {
  173 + this.$set(this.dictOptions, 'state', [{text:'是',value:'Y'},{text:'否',value:'N'}])
219 174 this.getSuperFieldList();
220 175 },
221 176 computed: {
... ... @@ -228,17 +183,11 @@
228 183 },
229 184 getSuperFieldList(){
230 185 let fieldList=[];
231   - fieldList.push({type:'date',value:'appointmentTime',text:'预约时间'})
232   - fieldList.push({type:'string',value:'reservationMethod',text:'预约形式',dictCode:''})
233   - fieldList.push({type:'string',value:'carNumber',text:'车牌号',dictCode:''})
234   - fieldList.push({type:'string',value:'objective',text:'装车/卸车',dictCode:''})
235   - fieldList.push({type:'string',value:'driverName',text:'司机名称',dictCode:''})
236   - fieldList.push({type:'int',value:'phoneNumber',text:'司机手机号',dictCode:''})
237   - fieldList.push({type:'string',value:'vehicle',text:'车型',dictCode:''})
238   - fieldList.push({type:'string',value:'vehicleTonnage',text:'汽车吨位',dictCode:''})
239   - fieldList.push({type:'string',value:'customerName',text:'客户名称',dictCode:''})
240   - fieldList.push({type:'string',value:'orderNumber',text:'订单号',dictCode:''})
241   - fieldList.push({type:'int',value:'submitPhone',text:'填表人电话',dictCode:''})
  186 + fieldList.push({type:'int',value:'pid',text:'pid',dictCode:''})
  187 + fieldList.push({type:'string',value:'timeslot',text:'时间段',dictCode:''})
  188 + fieldList.push({type:'int',value:'quota',text:'次数',dictCode:''})
  189 + fieldList.push({type:'switch',value:'state',text:'开关'})
  190 + fieldList.push({type:'string',value:'remarks',text:'备注',dictCode:''})
242 191 this.superFieldList = fieldList
243 192 }
244 193 }
... ...
ant-design-vue-jeecg/src/views/basics/timesetting/modules/TimeslotForm.vue 0 → 100644
  1 +<template>
  2 + <a-spin :spinning="confirmLoading">
  3 + <j-form-container :disabled="formDisabled">
  4 + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
  5 + <a-row>
  6 + <a-col :span="24">
  7 + <a-form-model-item label="pid" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pid">
  8 + <a-input-number v-model="model.pid" placeholder="请输入pid" style="width: 100%" />
  9 + </a-form-model-item>
  10 + </a-col>
  11 + <a-col :span="24">
  12 + <a-form-model-item label="时间段" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="timeslot">
  13 + <a-input v-model="model.timeslot" placeholder="请输入时间段" ></a-input>
  14 + </a-form-model-item>
  15 + </a-col>
  16 + <a-col :span="24">
  17 + <a-form-model-item label="次数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="quota">
  18 + <a-input-number v-model="model.quota" placeholder="请输入次数" style="width: 100%" />
  19 + </a-form-model-item>
  20 + </a-col>
  21 + <a-col :span="24">
  22 + <a-form-model-item label="开关" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
  23 + <j-switch v-model="model.state" ></j-switch>
  24 + </a-form-model-item>
  25 + </a-col>
  26 + <a-col :span="24">
  27 + <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remarks">
  28 + <a-input v-model="model.remarks" placeholder="请输入备注" ></a-input>
  29 + </a-form-model-item>
  30 + </a-col>
  31 + </a-row>
  32 + </a-form-model>
  33 + </j-form-container>
  34 + </a-spin>
  35 +</template>
  36 +
  37 +<script>
  38 +
  39 + import { httpAction, getAction } from '@/api/manage'
  40 + import { validateDuplicateValue } from '@/utils/util'
  41 +
  42 + export default {
  43 + name: 'TimeslotForm',
  44 + components: {
  45 + },
  46 + props: {
  47 + //表单禁用
  48 + disabled: {
  49 + type: Boolean,
  50 + default: false,
  51 + required: false
  52 + }
  53 + },
  54 + data () {
  55 + return {
  56 + model:{
  57 + },
  58 + labelCol: {
  59 + xs: { span: 24 },
  60 + sm: { span: 5 },
  61 + },
  62 + wrapperCol: {
  63 + xs: { span: 24 },
  64 + sm: { span: 16 },
  65 + },
  66 + confirmLoading: false,
  67 + validatorRules: {
  68 + timeslot: [
  69 + { required: true, message: '请输入时间段!'},
  70 + ],
  71 + state: [
  72 + { required: true, message: '请输入开关!'},
  73 + ],
  74 + },
  75 + url: {
  76 + add: "/timesetting/timeslot/add",
  77 + edit: "/timesetting/timeslot/edit",
  78 + queryById: "/timesetting/timeslot/queryById"
  79 + }
  80 + }
  81 + },
  82 + computed: {
  83 + formDisabled(){
  84 + return this.disabled
  85 + },
  86 + },
  87 + created () {
  88 + //备份model原始值
  89 + this.modelDefault = JSON.parse(JSON.stringify(this.model));
  90 + },
  91 + methods: {
  92 + add () {
  93 + this.edit(this.modelDefault);
  94 + },
  95 + edit (record) {
  96 + this.model = Object.assign({}, record);
  97 + this.visible = true;
  98 + },
  99 + submitForm () {
  100 + const that = this;
  101 + // 触发表单验证
  102 + this.$refs.form.validate(valid => {
  103 + if (valid) {
  104 + that.confirmLoading = true;
  105 + let httpurl = '';
  106 + let method = '';
  107 + if(!this.model.id){
  108 + httpurl+=this.url.add;
  109 + method = 'post';
  110 + }else{
  111 + httpurl+=this.url.edit;
  112 + method = 'put';
  113 + }
  114 + httpAction(httpurl,this.model,method).then((res)=>{
  115 + if(res.success){
  116 + that.$message.success(res.message);
  117 + that.$emit('ok');
  118 + }else{
  119 + that.$message.warning(res.message);
  120 + }
  121 + }).finally(() => {
  122 + that.confirmLoading = false;
  123 + })
  124 + }
  125 +
  126 + })
  127 + },
  128 + }
  129 + }
  130 +</script>
0 131 \ No newline at end of file
... ...
ant-design-vue-jeecg/src/views/work/reserve/modules/ReservationSubmissionModal.Style#Drawer.vue renamed to ant-design-vue-jeecg/src/views/basics/timesetting/modules/TimeslotModal.Style#Drawer.vue
... ... @@ -7,7 +7,7 @@
7 7 @close="close"
8 8 destroyOnClose
9 9 :visible="visible">
10   - <reservation-submission-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></reservation-submission-form>
  10 + <timeslot-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></timeslot-form>
11 11 <div class="drawer-footer">
12 12 <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
13 13 <a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
... ... @@ -17,12 +17,12 @@
17 17  
18 18 <script>
19 19  
20   - import ReservationSubmissionForm from './ReservationSubmissionForm'
  20 + import TimeslotForm from './TimeslotForm'
21 21  
22 22 export default {
23   - name: 'ReservationSubmissionModal',
  23 + name: 'TimeslotModal',
24 24 components: {
25   - ReservationSubmissionForm
  25 + TimeslotForm
26 26 },
27 27 data () {
28 28 return {
... ...
ant-design-vue-jeecg/src/views/work/reserve/modules/ReservationSubmissionModal.vue renamed to ant-design-vue-jeecg/src/views/basics/timesetting/modules/TimeslotModal.vue
... ... @@ -8,17 +8,17 @@
8 8 :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
9 9 @cancel="handleCancel"
10 10 cancelText="关闭">
11   - <reservation-submission-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></reservation-submission-form>
  11 + <timeslot-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></timeslot-form>
12 12 </j-modal>
13 13 </template>
14 14  
15 15 <script>
16 16  
17   - import ReservationSubmissionForm from './ReservationSubmissionForm'
  17 + import TimeslotForm from './TimeslotForm'
18 18 export default {
19   - name: 'ReservationSubmissionModal',
  19 + name: 'TimeslotModal',
20 20 components: {
21   - ReservationSubmissionForm
  21 + TimeslotForm
22 22 },
23 23 data () {
24 24 return {
... ...
ant-design-vue-jeecg/src/views/examples/form/stepForm/Step1.vue
... ... @@ -3,37 +3,13 @@
3 3 <j-form-container :disabled="formDisabled">
4 4 <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
5 5 <a-row>
6   - <a-col :span="24">
7   - <a-form-model-item label="原来预约时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="appointmentTime">
8   - <a-input v-model="model.appointmentTime" placeholder="请输入预约时间" ></a-input>
9   - </a-form-model-item>
10   - </a-col>
  6 +
11 7 <a-col :span="24">
12 8 <a-form-model-item label="订单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNumber">
13 9 <a-input v-model="model.orderNumber" placeholder="请输入订单号" ></a-input>
14 10 </a-form-model-item>
15 11 </a-col>
16   - <a-col :span="24">
17   - <a-form-model-item label="车牌号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="carNumber">
18   - <a-input v-model="model.carNumber" placeholder="请输入车牌号" ></a-input>
19   - </a-form-model-item>
20   - </a-col>
21   - <a-col :span="24">
22   - <a-form-model-item label="司机手机号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phoneNumber">
23   - <a-input v-model="model.phoneNumber" placeholder="请输入司机手机号" ></a-input>
24   - </a-form-model-item>
25   - </a-col>
26   - <a-col :span="24">
27   - <a-form-model-item label="填表人电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="submitPhone">
28   - <a-input v-model="model.submitPhone" placeholder="请输入填表人电话" ></a-input>
29   - </a-form-model-item>
30   - </a-col>
31 12  
32   - <a-col :span="24">
33   - <a-form-model-item label="更改原因" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
34   - <j-dict-select-tag type="list" v-model="model.remark" dictCode="cancel" placeholder="请选择取消方式" />
35   - </a-form-model-item>
36   - </a-col>
37 13  
38 14  
39 15  
... ... @@ -42,7 +18,7 @@
42 18 <a-form-model-item :wrapperCol="{span: 19, offset: 5}">
43 19 <a-button type="primary" @click="onSubmit()">下一步</a-button>
44 20 </a-form-model-item>
45   -
  21 + <reservation-submission-modal ref="modalForm" @ok="modalFormOk"></reservation-submission-modal>
46 22 </a-form-model>
47 23 </j-form-container>
48 24 </a-spin>
... ... @@ -51,11 +27,14 @@
51 27 <script>
52 28  
53 29 import { httpAction, getAction } from '@/api/manage'
54   - import { validateDuplicateValue } from '@/utils/util'
  30 + import ReservationSubmissionModal from "../../../reserve/reservationsubmission/modules/ReservationSubmissionModal";
  31 + import { JeecgListMixin } from '@/mixins/JeecgListMixin'
55 32  
56 33 export default {
57 34 name: 'ReservationSubmissionForm',
  35 + mixins:[JeecgListMixin],
58 36 components: {
  37 + ReservationSubmissionModal
59 38 },
60 39 props: {
61 40 //表单禁用
... ... @@ -79,24 +58,15 @@
79 58 },
80 59 confirmLoading: false,
81 60 validatorRules: {
82   - appointmentTime: [
83   - { required: true, message: '请输入预约时间!'},
84   - ],
  61 +
85 62 orderNumber: [
86 63 { required: true, message: '请输入订单号!'},
87 64 { pattern: /^.{6,18}$/, message: '请输入6到18位任意字符!'},
88 65 ],
89   - phoneNumber: [
90   - { required: true, message: '请输入司机手机号!'},
91   - { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码!'},
92   - ],
93   - submitPhone: [
94   - { required: true, message: '请输入填表人电话!'},
95   - { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码!'},
96   - ],
97 66 },
98 67 url: {
99   - add: "/reservationsubmission/reservationSubmission/cancel",
  68 + add: "/reservationsubmission/reservationSubmission/editor",
  69 + list: "/reservationsubmission/reservationSubmission/editor",
100 70 edit: "/reservationsubmission/reservationSubmission/edit"
101 71 }
102 72 }
... ... @@ -135,11 +105,8 @@
135 105 }
136 106 httpAction(httpurl, this.model, method).then((res) => {
137 107 if (res.success) {
138   - that.$message.success(res.message);
139   - // that.$emit('ok');
140   - // this.$router.push({
141   - // path: "/result/Success"
142   - // });
  108 + debugger
  109 + this.handleEdit(res.result)
143 110 } else {
144 111 that.$message.warning(res.message);
145 112 this.$router.push({
... ...
ant-design-vue-jeecg/src/views/jeecg/PrintDemo.vue
... ... @@ -5,47 +5,77 @@
5 5 </div>
6 6 <section ref="print" id="printContent" class="abcdefg">
7 7 <div style="text-align: center">
8   - <p style="font-size: 24px;font-weight: 800">打印测试表单</p>
  8 + <p style="font-size: 24px;font-weight: 800">发运单详情</p>
9 9 </div>
10 10 <!--签字-->
11 11 <a-col :md="24" :sm="24">
12 12 <div class="sign" style="text-align: left;height: inherit">
  13 +
13 14 <a-col :span="24">
14 15 <span>
15   - 打印人员:
  16 + 发运人(单位):
16 17 </span>
17 18 <a-input style="width: 30%" v-model="printer"/>
18   - <span style="margin-left: 12.5%">打印日期:</span>
19   - <a-input style="width: 30%" v-model="printTime"/>
20   - </a-col>
21   - <a-col :span="24">
  19 + <span style="margin-left: 13%">起运时间:</span>
  20 + <a-input style="width: 30%" v-model="printer"/>
22 21 </a-col>
  22 +
  23 +
23 24 <a-col :span="24" style="margin-top: 20px">
24   - <span>打印内容:</span>
25   - <a-input style="width: 80%" v-model="printContent"/>
  25 + <span>
  26 + 运单编号:
  27 + </span>
  28 + <a-input style="width: 31.5%" v-model="printer"/>
  29 + <span style="margin-left: 13%">收货人:</span>
  30 + <a-input style="width: 31%" v-model="printer"/>
26 31 </a-col>
  32 +
  33 +
  34 +
27 35 <a-col :span="24" style="margin-top: 20px">
28   - <span>打印目的:</span>
29   - <a-input style="width: 80%" v-model="printReason"/>
  36 + <span>物品名称</span>
  37 + <a-input style="width: 11%" v-model="printer"/>
  38 +
  39 + <span style="margin-left: 3.5%">毛重:</span>
  40 + <a-input style="width: 11%" v-model="printer"/>
  41 +
  42 + <span style="margin-left: 3.5%">运输单价:</span>
  43 + <a-input style="width: 11%" v-model="printer"/>
  44 +
  45 + <span style="margin-left: 3.5%">规格:</span>
  46 + <a-input style="width: 11%" v-model="printer"/>
  47 +
  48 + <span style="margin-left: 3.5%">件数:</span>
  49 + <a-input style="width: 11%" v-model="printer"/>
30 50 </a-col>
31   - <a-col style="margin-top: 20px" :span="24">
32   - <span>打印图片:</span>
33   - <br/>
34   - <a-upload
35   - action="/jsonplaceholder.typicode.com/posts/"
36   - listType="picture-card"
37   - :fileList="fileList"
38   - @preview="handlePreview"
39   - @change="handleChange">
40   - <div v-if="fileList.length < 3">
41   - <a-icon type="plus" />
42   - <div class="ant-upload-text">Upload</div>
43   - </div>
44   - </a-upload>
45   - <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
46   - <img alt="example" style="width: 100%" :src="previewImage" />
47   - </a-modal>
  51 +
  52 +
  53 +
  54 + <a-col :span="24" style="margin-top: 20px">
  55 + <span>备注:</span>
  56 + <a-input style="width: 80%" v-model="printer"/>
48 57 </a-col>
  58 +
  59 +
  60 +
  61 +<!-- <a-col style="margin-top: 20px" :span="24">-->
  62 +<!-- <span>打印图片:</span>-->
  63 +<!-- <br/>-->
  64 +<!-- <a-upload-->
  65 +<!-- action="/jsonplaceholder.typicode.com/posts/"-->
  66 +<!-- listType="picture-card"-->
  67 +<!-- :fileList="fileList"-->
  68 +<!-- @preview="handlePreview"-->
  69 +<!-- @change="handleChange">-->
  70 +<!-- <div v-if="fileList.length < 3">-->
  71 +<!-- <a-icon type="plus" />-->
  72 +<!-- <div class="ant-upload-text">Upload</div>-->
  73 +<!-- </div>-->
  74 +<!-- </a-upload>-->
  75 +<!-- <a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">-->
  76 +<!-- <img alt="example" style="width: 100%" :src="previewImage" />-->
  77 +<!-- </a-modal>-->
  78 +<!-- </a-col>-->
49 79 </div>
50 80 </a-col>
51 81 </section>
... ... @@ -83,7 +113,7 @@
83 113 xs: { span: 24 },
84 114 sm: { span: 8 },
85 115 },
86   - printer:'张三',
  116 + printer:'测试',
87 117 printTime:'2019-02-01 12:00:00',
88 118 printContent:'打印内容就是,做一个打印测试',
89 119 printReason:'做一个打印测试',
... ... @@ -128,7 +158,18 @@
128 158 handleChange ({ fileList }) {
129 159 this.fileList = fileList
130 160 }
131   - }
  161 + },
  162 + mounted:function() {
  163 + let id = this.$route.query.id;
  164 + this.loadData(id);
  165 + },
  166 + loadData(id){
  167 + getSchedulerPrint(id).then((res) => {
  168 + this.dataSource = res;
  169 + this.querySource.headerId = id;
  170 + // this.qrcode();
  171 + })
  172 + },
132 173 }
133 174 </script>
134 175 <style scoped>
... ...
ant-design-vue-jeecg/src/views/reserve/reservationsubmission/ReservationSubmissionList.vue
... ... @@ -140,7 +140,12 @@
140 140 {
141 141 title:'预约时间',
142 142 align:"center",
143   - dataIndex: 'appointmentTime'
  143 + dataIndex: 'appointmentTime_dictText'
  144 + },
  145 + {
  146 + title:'时间段',
  147 + align:"center",
  148 + dataIndex: 'timeSelection'
144 149 },
145 150 {
146 151 title:'订单号',
... ... @@ -246,7 +251,8 @@
246 251 },
247 252 getSuperFieldList(){
248 253 let fieldList=[];
249   - fieldList.push({type:'string',value:'appointmentTime',text:'预约时间',dictCode:''})
  254 + fieldList.push({type:'string',value:'appointmentTime',text:'预约时间',dictCode:'time'})
  255 + fieldList.push({type:'string',value:'timeSelection',text:'时间段',dictCode:''})
250 256 fieldList.push({type:'string',value:'orderNumber',text:'订单号',dictCode:''})
251 257 fieldList.push({type:'string',value:'reservationMethod',text:'预约形式',dictCode:'appointment_form,name,name'})
252 258 fieldList.push({type:'string',value:'carNumber',text:'车牌号',dictCode:''})
... ...
ant-design-vue-jeecg/src/views/reserve/reservationsubmission/modules/ReservationSubmissionForm.vue
... ... @@ -5,7 +5,12 @@
5 5 <a-row>
6 6 <a-col :span="24">
7 7 <a-form-model-item label="预约时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="appointmentTime">
8   - <a-input v-model="model.appointmentTime" placeholder="请输入预约时间" ></a-input>
  8 + <j-dict-select-tag type="list" v-model="model.appointmentTime" dictCode="time" placeholder="请选择预约时间" />
  9 + </a-form-model-item>
  10 + </a-col>
  11 + <a-col :span="24">
  12 + <a-form-model-item label="时间段" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="timeSelection">
  13 + <a-input v-model="model.timeSelection" placeholder="请输入时间段" ></a-input>
9 14 </a-form-model-item>
10 15 </a-col>
11 16 <a-col :span="24">
... ...
ant-design-vue-jeecg/src/views/work/reserve/modules/ReservationSubmissionForm.vue renamed to ant-design-vue-jeecg/src/views/reserve/submit/plancancellation.vue
... ... @@ -4,13 +4,13 @@
4 4 <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
5 5 <a-row>
6 6 <a-col :span="24">
7   - <a-form-model-item label="预约时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="appointmentTime">
8   - <j-date placeholder="请选择预约时间" v-model="model.appointmentTime" style="width: 100%" />
  7 + <a-form-model-item label="原来预约时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="appointmentTime">
  8 + <a-input v-model="model.appointmentTime" placeholder="请输入预约时间" ></a-input>
9 9 </a-form-model-item>
10 10 </a-col>
11 11 <a-col :span="24">
12   - <a-form-model-item label="预约形式" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reservationMethod">
13   - <j-dict-select-tag type="list" v-model="model.reservationMethod" dictCode="" placeholder="请选择预约形式" />
  12 + <a-form-model-item label="订单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNumber">
  13 + <a-input v-model="model.orderNumber" placeholder="请输入订单号" ></a-input>
14 14 </a-form-model-item>
15 15 </a-col>
16 16 <a-col :span="24">
... ... @@ -19,46 +19,30 @@
19 19 </a-form-model-item>
20 20 </a-col>
21 21 <a-col :span="24">
22   - <a-form-model-item label="装车/卸车" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="objective">
23   - <j-dict-select-tag type="list" v-model="model.objective" dictCode="" placeholder="请选择装车/卸车" />
24   - </a-form-model-item>
25   - </a-col>
26   - <a-col :span="24">
27   - <a-form-model-item label="司机名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="driverName">
28   - <a-input v-model="model.driverName" placeholder="请输入司机名称" ></a-input>
29   - </a-form-model-item>
30   - </a-col>
31   - <a-col :span="24">
32 22 <a-form-model-item label="司机手机号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="phoneNumber">
33   - <a-input-number v-model="model.phoneNumber" placeholder="请输入司机手机号" style="width: 100%" />
  23 + <a-input v-model="model.phoneNumber" placeholder="请输入司机手机号" ></a-input>
34 24 </a-form-model-item>
35 25 </a-col>
36 26 <a-col :span="24">
37   - <a-form-model-item label="车型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vehicle">
38   - <j-dict-select-tag type="list" v-model="model.vehicle" dictCode="" placeholder="请选择车型" />
39   - </a-form-model-item>
40   - </a-col>
41   - <a-col :span="24">
42   - <a-form-model-item label="汽车吨位" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="vehicleTonnage">
43   - <a-input v-model="model.vehicleTonnage" placeholder="请输入汽车吨位" ></a-input>
44   - </a-form-model-item>
45   - </a-col>
46   - <a-col :span="24">
47   - <a-form-model-item label="客户名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="customerName">
48   - <a-input v-model="model.customerName" placeholder="请输入客户名称" ></a-input>
49   - </a-form-model-item>
50   - </a-col>
51   - <a-col :span="24">
52   - <a-form-model-item label="订单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNumber">
53   - <a-input v-model="model.orderNumber" placeholder="请输入订单号" ></a-input>
  27 + <a-form-model-item label="填表人电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="submitPhone">
  28 + <a-input v-model="model.submitPhone" placeholder="请输入填表人电话" ></a-input>
54 29 </a-form-model-item>
55 30 </a-col>
  31 +
56 32 <a-col :span="24">
57   - <a-form-model-item label="填表人电话" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="submitPhone">
58   - <a-input-number v-model="model.submitPhone" placeholder="请输入填表人电话" style="width: 100%" />
  33 + <a-form-model-item label="更改原因" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
  34 + <j-dict-select-tag type="list" v-model="model.remark" dictCode="cancel" placeholder="请选择取消方式" />
59 35 </a-form-model-item>
60 36 </a-col>
  37 +
  38 +
  39 +
61 40 </a-row>
  41 +
  42 + <a-form-model-item :wrapperCol="{span: 19, offset: 5}">
  43 + <a-button type="primary" @click="onSubmit()">下一步</a-button>
  44 + </a-form-model-item>
  45 +
62 46 </a-form-model>
63 47 </j-form-container>
64 48 </a-spin>
... ... @@ -84,7 +68,7 @@
84 68 data () {
85 69 return {
86 70 model:{
87   - },
  71 + },
88 72 labelCol: {
89 73 xs: { span: 24 },
90 74 sm: { span: 5 },
... ... @@ -95,11 +79,28 @@
95 79 },
96 80 confirmLoading: false,
97 81 validatorRules: {
  82 + appointmentTime: [
  83 + { required: true, message: '请输入预约时间!'},
  84 + ],
  85 + orderNumber: [
  86 + { required: true, message: '请输入订单号!'},
  87 + { pattern: /^.{6,18}$/, message: '请输入6到18位任意字符!'},
  88 + ],
  89 + phoneNumber: [
  90 + { required: true, message: '请输入司机手机号!'},
  91 + { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码!'},
  92 + ],
  93 + remark: [
  94 + {required: true, message: '请输入预约形式!'},
  95 + ],
  96 + submitPhone: [
  97 + { required: true, message: '请输入填表人电话!'},
  98 + { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码!'},
  99 + ],
98 100 },
99 101 url: {
100   - add: "/reserve/reservationSubmission/add",
101   - edit: "/reserve/reservationSubmission/edit",
102   - queryById: "/reserve/reservationSubmission/queryById"
  102 + add: "/reservationsubmission/reservationSubmission/cancel",
  103 + edit: "/reservationsubmission/reservationSubmission/edit"
103 104 }
104 105 }
105 106 },
... ... @@ -109,7 +110,7 @@
109 110 },
110 111 },
111 112 created () {
112   - //备份model原始值
  113 + //备份model原始值
113 114 this.modelDefault = JSON.parse(JSON.stringify(this.model));
114 115 },
115 116 methods: {
... ... @@ -120,7 +121,7 @@
120 121 this.model = Object.assign({}, record);
121 122 this.visible = true;
122 123 },
123   - submitForm () {
  124 + onSubmit() {
124 125 const that = this;
125 126 // 触发表单验证
126 127 this.$refs.form.validate(valid => {
... ... @@ -128,25 +129,31 @@
128 129 that.confirmLoading = true;
129 130 let httpurl = '';
130 131 let method = '';
131   - if(!this.model.id){
132   - httpurl+=this.url.add;
  132 + if (!this.model.id) {
  133 + httpurl += this.url.add;
133 134 method = 'post';
134   - }else{
135   - httpurl+=this.url.edit;
136   - method = 'put';
  135 + } else {
  136 + httpurl += this.url.edit;
  137 + method = 'put';
137 138 }
138   - httpAction(httpurl,this.model,method).then((res)=>{
139   - if(res.success){
  139 + httpAction(httpurl, this.model, method).then((res) => {
  140 + if (res.success) {
140 141 that.$message.success(res.message);
141   - that.$emit('ok');
142   - }else{
  142 + // that.$emit('ok');
  143 + // this.$router.push({
  144 + // path: "/result/Success"
  145 + // });
  146 + } else {
143 147 that.$message.warning(res.message);
  148 + this.$router.push({
  149 + path: "/reserve/submit"
  150 + });
144 151 }
145 152 }).finally(() => {
146 153 that.confirmLoading = false;
147 154 })
148 155 }
149   -
  156 +
150 157 })
151 158 },
152 159 }
... ...
ant-design-vue-jeecg/src/views/reserve/submit/scheduledchanges.vue 0 → 100644
  1 +<template>
  2 + <a-spin :spinning="confirmLoading">
  3 + <j-form-container :disabled="formDisabled">
  4 + <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
  5 + <a-row>
  6 + <a-col :span="24">
  7 + <a-form-model-item label="订单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderNumber">
  8 + <a-input v-model="model.orderNumber" placeholder="请输入订单号" ></a-input>
  9 + </a-form-model-item>
  10 + </a-col>
  11 + </a-row>
  12 + <a-form-model-item :wrapperCol="{span: 19, offset: 5}">
  13 + <a-button type="primary" @click="onSubmit()">下一步</a-button>
  14 + </a-form-model-item>
  15 + <reservation-submission-modal ref="modalForm" @ok="modalFormOk"></reservation-submission-modal>
  16 + </a-form-model>
  17 + </j-form-container>
  18 + </a-spin>
  19 +</template>
  20 +
  21 +<script>
  22 +
  23 + import { httpAction, getAction } from '@/api/manage'
  24 + import ReservationSubmissionModal from "../../reserve/reservationsubmission/modules/ReservationSubmissionModal";
  25 + import { JeecgListMixin } from '@/mixins/JeecgListMixin'
  26 +
  27 + export default {
  28 + name: 'ReservationSubmissionForm',
  29 + mixins:[JeecgListMixin],
  30 + components: {
  31 + ReservationSubmissionModal
  32 + },
  33 + props: {
  34 + //表单禁用
  35 + disabled: {
  36 + type: Boolean,
  37 + default: false,
  38 + required: false
  39 + }
  40 + },
  41 + data () {
  42 + return {
  43 + model:{
  44 + },
  45 + labelCol: {
  46 + xs: { span: 24 },
  47 + sm: { span: 5 },
  48 + },
  49 + wrapperCol: {
  50 + xs: { span: 24 },
  51 + sm: { span: 16 },
  52 + },
  53 + confirmLoading: false,
  54 + validatorRules: {
  55 +
  56 + orderNumber: [
  57 + { required: true, message: '请输入订单号!'},
  58 + { pattern: /^.{6,18}$/, message: '请输入6到18位任意字符!'},
  59 + ],
  60 + },
  61 + url: {
  62 + add: "/reservationsubmission/reservationSubmission/editor",
  63 + list: "/reservationsubmission/reservationSubmission/editor",
  64 + edit: "/reservationsubmission/reservationSubmission/edit"
  65 + }
  66 + }
  67 + },
  68 + computed: {
  69 + formDisabled(){
  70 + return this.disabled
  71 + },
  72 + },
  73 + created () {
  74 + //备份model原始值
  75 + this.modelDefault = JSON.parse(JSON.stringify(this.model));
  76 + },
  77 + methods: {
  78 + add () {
  79 + this.edit(this.modelDefault);
  80 + },
  81 + edit (record) {
  82 + this.model = Object.assign({}, record);
  83 + this.visible = true;
  84 + },
  85 + onSubmit() {
  86 + const that = this;
  87 + // 触发表单验证
  88 + this.$refs.form.validate(valid => {
  89 + if (valid) {
  90 + that.confirmLoading = true;
  91 + let httpurl = '';
  92 + let method = '';
  93 + if (!this.model.id) {
  94 + httpurl += this.url.add;
  95 + method = 'post';
  96 + } else {
  97 + httpurl += this.url.edit;
  98 + method = 'put';
  99 + }
  100 + httpAction(httpurl, this.model, method).then((res) => {
  101 + if (res.success) {
  102 + debugger
  103 + this.handleEdit(res.result)
  104 + } else {
  105 + that.$message.warning(res.message);
  106 + this.$router.push({
  107 + path: "/reserve/submit"
  108 + });
  109 + }
  110 + }).finally(() => {
  111 + that.confirmLoading = false;
  112 + })
  113 + }
  114 +
  115 + })
  116 + },
  117 + }
  118 + }
  119 +</script>
0 120 \ No newline at end of file
... ...
ant-design-vue-jeecg/src/views/user/LoginAccount.vue
... ... @@ -11,20 +11,6 @@
11 11 <a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>
12 12 </a-input>
13 13 </a-form-model-item>
14   -
15   - <a-row :gutter="0">
16   - <a-col :span="16">
17   - <a-form-model-item required prop="inputCode">
18   - <a-input v-model="model.inputCode" size="large" type="text" placeholder="请输入验证码">
19   - <a-icon slot="prefix" type="smile" :style="{ color: 'rgba(0,0,0,.25)' }"/>
20   - </a-input>
21   - </a-form-model-item>
22   - </a-col>
23   - <a-col :span="8" style="text-align: right">
24   - <img v-if="requestCodeSuccess" style="margin-top: 2px;" :src="randCodeImage" @click="handleChangeCheckCode"/>
25   - <img v-else style="margin-top: 2px;" src="../../assets/checkcode.png" @click="handleChangeCheckCode"/>
26   - </a-col>
27   - </a-row>
28 14 </a-form-model>
29 15 </div>
30 16 </template>
... ... @@ -45,7 +31,6 @@
45 31 model:{
46 32 username: '',
47 33 password: '',
48   - inputCode: ''
49 34 },
50 35 validatorRules:{
51 36 username: [
... ... @@ -55,9 +40,6 @@
55 40 password: [{
56 41 required: true, message: '请输入密码!', validator: 'click'
57 42 }],
58   - inputCode: [{
59   - required: true, message: '请输入验证码!'
60   - }]
61 43 }
62 44  
63 45 }
... ... @@ -70,7 +52,6 @@
70 52 /**刷新验证码*/
71 53 handleChangeCheckCode(){
72 54 this.currdatetime = new Date().getTime();
73   - this.model.inputCode = ''
74 55 getAction(`/sys/randomImage/${this.currdatetime}`).then(res=>{
75 56 if(res.success){
76 57 this.randCodeImage = res.result
... ... @@ -123,12 +104,11 @@
123 104 },
124 105 //账号密码登录
125 106 handleLogin(rememberMe){
126   - this.validateFields([ 'username', 'password', 'inputCode' ], (err)=>{
  107 + this.validateFields([ 'username', 'password'], (err)=>{
127 108 if(!err){
128 109 let loginParams = {
129 110 username: this.model.username,
130 111 password: this.model.password,
131   - captcha: this.model.inputCode,
132 112 checkKey: this.currdatetime,
133 113 remember_me: rememberMe,
134 114 }
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/basics/print/controller/PrintAppointment.java 0 → 100644
  1 +package org.jeecg.modules.basics.print.controller;
  2 +
  3 +import cn.hutool.core.util.StrUtil;
  4 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6 +import io.swagger.annotations.Api;
  7 +import lombok.extern.slf4j.Slf4j;
  8 +import org.jeecg.modules.basics.print.entity.waybill;
  9 +import org.springframework.web.bind.annotation.PostMapping;
  10 +import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.RequestParam;
  12 +import org.springframework.web.bind.annotation.RestController;
  13 +
  14 +import java.util.*;
  15 +
  16 +@Slf4j
  17 +@Api(tags = "打印发运单")
  18 +@RestController
  19 +@RequestMapping("/waybill/print")
  20 +public class PrintAppointment {
  21 +
  22 + @PostMapping("/report")
  23 + public waybill report(@RequestParam(name = "id") String id)
  24 + {
  25 + waybill w=new waybill();
  26 + w.setName(1);
  27 + w.setId(2);
  28 + return w;
  29 + }
  30 +
  31 +}
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/basics/print/entity/waybill.java 0 → 100644
  1 +package org.jeecg.modules.basics.print.entity;
  2 +
  3 +import lombok.Data;
  4 +
  5 +@Data
  6 +public class waybill{
  7 +
  8 + int id;
  9 + int name;
  10 +
  11 +}
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/basics/timesetting/controller/TimeslotController.java 0 → 100644
  1 +package org.jeecg.modules.basics.timesetting.controller;
  2 +
  3 +import java.util.Arrays;
  4 +import java.util.List;
  5 +import java.util.Map;
  6 +import java.util.stream.Collectors;
  7 +import java.io.IOException;
  8 +import java.io.UnsupportedEncodingException;
  9 +import java.net.URLDecoder;
  10 +import javax.servlet.http.HttpServletRequest;
  11 +import javax.servlet.http.HttpServletResponse;
  12 +import org.jeecg.common.api.vo.Result;
  13 +import org.jeecg.common.system.query.QueryGenerator;
  14 +import org.jeecg.common.util.oConvertUtils;
  15 +import org.jeecg.modules.basics.timesetting.entity.Timeslot;
  16 +import org.jeecg.modules.basics.timesetting.service.ITimeslotService;
  17 +
  18 +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  19 +import com.baomidou.mybatisplus.core.metadata.IPage;
  20 +import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  21 +import lombok.extern.slf4j.Slf4j;
  22 +
  23 +import org.jeecgframework.poi.excel.ExcelImportUtil;
  24 +import org.jeecgframework.poi.excel.def.NormalExcelConstants;
  25 +import org.jeecgframework.poi.excel.entity.ExportParams;
  26 +import org.jeecgframework.poi.excel.entity.ImportParams;
  27 +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
  28 +import org.jeecg.common.system.base.controller.JeecgController;
  29 +import org.springframework.beans.factory.annotation.Autowired;
  30 +import org.springframework.web.bind.annotation.*;
  31 +import org.springframework.web.multipart.MultipartFile;
  32 +import org.springframework.web.multipart.MultipartHttpServletRequest;
  33 +import org.springframework.web.servlet.ModelAndView;
  34 +import com.alibaba.fastjson.JSON;
  35 +import io.swagger.annotations.Api;
  36 +import io.swagger.annotations.ApiOperation;
  37 +import org.jeecg.common.aspect.annotation.AutoLog;
  38 +
  39 + /**
  40 + * @Description: 时间段设置
  41 + * @Author: jeecg-boot
  42 + * @Date: 2022-02-17
  43 + * @Version: V1.0
  44 + */
  45 +@Api(tags="时间段设置")
  46 +@RestController
  47 +@RequestMapping("/timesetting/timeslot")
  48 +@Slf4j
  49 +public class TimeslotController extends JeecgController<Timeslot, ITimeslotService> {
  50 + @Autowired
  51 + private ITimeslotService timeslotService;
  52 +
  53 + /**
  54 + * 分页列表查询
  55 + *
  56 + * @param timeslot
  57 + * @param pageNo
  58 + * @param pageSize
  59 + * @param req
  60 + * @return
  61 + */
  62 + @AutoLog(value = "时间段设置-分页列表查询")
  63 + @ApiOperation(value="时间段设置-分页列表查询", notes="时间段设置-分页列表查询")
  64 + @GetMapping(value = "/list")
  65 + public Result<?> queryPageList(Timeslot timeslot,
  66 + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
  67 + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
  68 + HttpServletRequest req) {
  69 + QueryWrapper<Timeslot> queryWrapper = QueryGenerator.initQueryWrapper(timeslot, req.getParameterMap());
  70 + Page<Timeslot> page = new Page<Timeslot>(pageNo, pageSize);
  71 + IPage<Timeslot> pageList = timeslotService.page(page, queryWrapper);
  72 + return Result.OK(pageList);
  73 + }
  74 +
  75 + /**
  76 + * 添加
  77 + *
  78 + * @param timeslot
  79 + * @return
  80 + */
  81 + @AutoLog(value = "时间段设置-添加")
  82 + @ApiOperation(value="时间段设置-添加", notes="时间段设置-添加")
  83 + @PostMapping(value = "/add")
  84 + public Result<?> add(@RequestBody Timeslot timeslot) {
  85 + timeslotService.save(timeslot);
  86 + return Result.OK("添加成功!");
  87 + }
  88 +
  89 + /**
  90 + * 编辑
  91 + *
  92 + * @param timeslot
  93 + * @return
  94 + */
  95 + @AutoLog(value = "时间段设置-编辑")
  96 + @ApiOperation(value="时间段设置-编辑", notes="时间段设置-编辑")
  97 + @PutMapping(value = "/edit")
  98 + public Result<?> edit(@RequestBody Timeslot timeslot) {
  99 + timeslotService.updateById(timeslot);
  100 + return Result.OK("编辑成功!");
  101 + }
  102 +
  103 + /**
  104 + * 通过id删除
  105 + *
  106 + * @param id
  107 + * @return
  108 + */
  109 + @AutoLog(value = "时间段设置-通过id删除")
  110 + @ApiOperation(value="时间段设置-通过id删除", notes="时间段设置-通过id删除")
  111 + @DeleteMapping(value = "/delete")
  112 + public Result<?> delete(@RequestParam(name="id",required=true) String id) {
  113 + timeslotService.removeById(id);
  114 + return Result.OK("删除成功!");
  115 + }
  116 +
  117 + /**
  118 + * 批量删除
  119 + *
  120 + * @param ids
  121 + * @return
  122 + */
  123 + @AutoLog(value = "时间段设置-批量删除")
  124 + @ApiOperation(value="时间段设置-批量删除", notes="时间段设置-批量删除")
  125 + @DeleteMapping(value = "/deleteBatch")
  126 + public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
  127 + this.timeslotService.removeByIds(Arrays.asList(ids.split(",")));
  128 + return Result.OK("批量删除成功!");
  129 + }
  130 +
  131 + /**
  132 + * 通过id查询
  133 + *
  134 + * @param id
  135 + * @return
  136 + */
  137 + @AutoLog(value = "时间段设置-通过id查询")
  138 + @ApiOperation(value="时间段设置-通过id查询", notes="时间段设置-通过id查询")
  139 + @GetMapping(value = "/queryById")
  140 + public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
  141 + Timeslot timeslot = timeslotService.getById(id);
  142 + if(timeslot==null) {
  143 + return Result.error("未找到对应数据");
  144 + }
  145 + return Result.OK(timeslot);
  146 + }
  147 +
  148 + /**
  149 + * 导出excel
  150 + *
  151 + * @param request
  152 + * @param timeslot
  153 + */
  154 + @RequestMapping(value = "/exportXls")
  155 + public ModelAndView exportXls(HttpServletRequest request, Timeslot timeslot) {
  156 + return super.exportXls(request, timeslot, Timeslot.class, "时间段设置");
  157 + }
  158 +
  159 + /**
  160 + * 通过excel导入数据
  161 + *
  162 + * @param request
  163 + * @param response
  164 + * @return
  165 + */
  166 + @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  167 + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
  168 + return super.importExcel(request, response, Timeslot.class);
  169 + }
  170 +
  171 +}
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/basics/timesetting/entity/Timeslot.java 0 → 100644
  1 +package org.jeecg.modules.basics.timesetting.entity;
  2 +
  3 +import java.io.Serializable;
  4 +import java.io.UnsupportedEncodingException;
  5 +import java.util.Date;
  6 +import java.math.BigDecimal;
  7 +import com.baomidou.mybatisplus.annotation.IdType;
  8 +import com.baomidou.mybatisplus.annotation.TableId;
  9 +import com.baomidou.mybatisplus.annotation.TableName;
  10 +import lombok.Data;
  11 +import com.fasterxml.jackson.annotation.JsonFormat;
  12 +import org.springframework.format.annotation.DateTimeFormat;
  13 +import org.jeecgframework.poi.excel.annotation.Excel;
  14 +import org.jeecg.common.aspect.annotation.Dict;
  15 +import io.swagger.annotations.ApiModel;
  16 +import io.swagger.annotations.ApiModelProperty;
  17 +import lombok.EqualsAndHashCode;
  18 +import lombok.experimental.Accessors;
  19 +
  20 +/**
  21 + * @Description: 时间段设置
  22 + * @Author: jeecg-boot
  23 + * @Date: 2022-02-17
  24 + * @Version: V1.0
  25 + */
  26 +@Data
  27 +@TableName("timeslot")
  28 +@Accessors(chain = true)
  29 +@EqualsAndHashCode(callSuper = false)
  30 +@ApiModel(value="timeslot对象", description="时间段设置")
  31 +public class Timeslot implements Serializable {
  32 + private static final long serialVersionUID = 1L;
  33 +
  34 + /**主键*/
  35 + @TableId(type = IdType.ASSIGN_ID)
  36 + @ApiModelProperty(value = "主键")
  37 + private String id;
  38 + /**pid*/
  39 + @Excel(name = "pid", width = 15)
  40 + @ApiModelProperty(value = "pid")
  41 + private Integer pid;
  42 + /**时间段*/
  43 + @Excel(name = "时间段", width = 15)
  44 + @ApiModelProperty(value = "时间段")
  45 + private String timeslot;
  46 + /**次数*/
  47 + @Excel(name = "次数", width = 15)
  48 + @ApiModelProperty(value = "次数")
  49 + private Integer quota;
  50 + /**开关*/
  51 + @Excel(name = "开关", width = 15)
  52 + @ApiModelProperty(value = "开关")
  53 + private String state;
  54 + /**备注*/
  55 + @Excel(name = "备注", width = 15)
  56 + @ApiModelProperty(value = "备注")
  57 + private String remarks;
  58 + /**创建人*/
  59 + @ApiModelProperty(value = "创建人")
  60 + private String createBy;
  61 + /**创建日期*/
  62 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
  63 + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
  64 + @ApiModelProperty(value = "创建日期")
  65 + private Date createTime;
  66 + /**更新人*/
  67 + @ApiModelProperty(value = "更新人")
  68 + private String updateBy;
  69 + /**更新日期*/
  70 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
  71 + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
  72 + @ApiModelProperty(value = "更新日期")
  73 + private Date updateTime;
  74 + /**所属部门*/
  75 + @ApiModelProperty(value = "所属部门")
  76 + private String sysOrgCode;
  77 +}
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/basics/timesetting/mapper/TimeslotMapper.java 0 → 100644
  1 +package org.jeecg.modules.basics.timesetting.mapper;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.apache.ibatis.annotations.Param;
  6 +import org.jeecg.modules.basics.timesetting.entity.Timeslot;
  7 +import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  8 +
  9 +/**
  10 + * @Description: 时间段设置
  11 + * @Author: jeecg-boot
  12 + * @Date: 2022-02-17
  13 + * @Version: V1.0
  14 + */
  15 +public interface TimeslotMapper extends BaseMapper<Timeslot> {
  16 +
  17 +}
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/basics/timesetting/mapper/xml/TimeslotMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="org.jeecg.modules.basics.timesetting.mapper.TimeslotMapper">
  4 +
  5 +</mapper>
0 6 \ No newline at end of file
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/basics/timesetting/service/ITimeslotService.java 0 → 100644
  1 +package org.jeecg.modules.basics.timesetting.service;
  2 +
  3 +import org.jeecg.modules.basics.timesetting.entity.Timeslot;
  4 +import com.baomidou.mybatisplus.extension.service.IService;
  5 +
  6 +/**
  7 + * @Description: 时间段设置
  8 + * @Author: jeecg-boot
  9 + * @Date: 2022-02-17
  10 + * @Version: V1.0
  11 + */
  12 +public interface ITimeslotService extends IService<Timeslot> {
  13 +
  14 +}
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/basics/timesetting/service/impl/TimeslotServiceImpl.java 0 → 100644
  1 +package org.jeecg.modules.basics.timesetting.service.impl;
  2 +
  3 +import org.jeecg.modules.basics.timesetting.entity.Timeslot;
  4 +import org.jeecg.modules.basics.timesetting.mapper.TimeslotMapper;
  5 +import org.jeecg.modules.basics.timesetting.service.ITimeslotService;
  6 +import org.springframework.stereotype.Service;
  7 +
  8 +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  9 +
  10 +/**
  11 + * @Description: 时间段设置
  12 + * @Author: jeecg-boot
  13 + * @Date: 2022-02-17
  14 + * @Version: V1.0
  15 + */
  16 +@Service
  17 +public class TimeslotServiceImpl extends ServiceImpl<TimeslotMapper, Timeslot> implements ITimeslotService {
  18 +
  19 +}
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/reserve/reservationsubmission/controller/ReservationSubmissionController.java
... ... @@ -9,12 +9,8 @@ import java.io.UnsupportedEncodingException;
9 9 import java.net.URLDecoder;
10 10 import javax.servlet.http.HttpServletRequest;
11 11 import javax.servlet.http.HttpServletResponse;
12   -
13   -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
14   -import com.baomidou.mybatisplus.core.toolkit.Wrappers;
15 12 import org.jeecg.common.api.vo.Result;
16 13 import org.jeecg.common.system.query.QueryGenerator;
17   -import org.jeecg.common.system.vo.DictModel;
18 14 import org.jeecg.common.util.oConvertUtils;
19 15 import org.jeecg.modules.reserve.reservationsubmission.entity.ReservationSubmission;
20 16 import org.jeecg.modules.reserve.reservationsubmission.service.IReservationSubmissionService;
... ... @@ -24,8 +20,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
24 20 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
25 21 import lombok.extern.slf4j.Slf4j;
26 22  
27   -import org.jeecg.modules.system.service.ISysDictItemService;
28   -import org.jeecg.modules.system.service.ISysDictService;
29 23 import org.jeecgframework.poi.excel.ExcelImportUtil;
30 24 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
31 25 import org.jeecgframework.poi.excel.entity.ExportParams;
... ... @@ -45,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
45 39 /**
46 40 * @Description: 预约表
47 41 * @Author: jeecg-boot
48   - * @Date: 2022-02-14
  42 + * @Date: 2022-02-18
49 43 * @Version: V1.0
50 44 */
51 45 @Api(tags="预约表")
... ... @@ -55,11 +49,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
55 49 public class ReservationSubmissionController extends JeecgController<ReservationSubmission, IReservationSubmissionService> {
56 50 @Autowired
57 51 private IReservationSubmissionService reservationSubmissionService;
58   - @Autowired
59   - private ISysDictService sysDictService;
60   - @Autowired
61   - private ISysDictItemService sysDictItemService;
62   -
  52 +
63 53 /**
64 54 * 分页列表查询
65 55 *
... ... @@ -81,7 +71,7 @@ public class ReservationSubmissionController extends JeecgController&lt;Reservation
81 71 IPage<ReservationSubmission> pageList = reservationSubmissionService.page(page, queryWrapper);
82 72 return Result.OK(pageList);
83 73 }
84   -
  74 +
85 75 /**
86 76 * 添加
87 77 *
... ... @@ -95,7 +85,7 @@ public class ReservationSubmissionController extends JeecgController&lt;Reservation
95 85 reservationSubmissionService.save(reservationSubmission);
96 86 return Result.OK("添加成功!");
97 87 }
98   -
  88 +
99 89 /**
100 90 * 编辑
101 91 *
... ... @@ -109,7 +99,7 @@ public class ReservationSubmissionController extends JeecgController&lt;Reservation
109 99 reservationSubmissionService.updateById(reservationSubmission);
110 100 return Result.OK("编辑成功!");
111 101 }
112   -
  102 +
113 103 /**
114 104 * 通过id删除
115 105 *
... ... @@ -123,39 +113,7 @@ public class ReservationSubmissionController extends JeecgController&lt;Reservation
123 113 reservationSubmissionService.removeById(id);
124 114 return Result.OK("删除成功!");
125 115 }
126   -
127   -
128   -
129   - /**
130   - * 取消预约功能
131   - * @param
132   - * @return
133   - */
134   - @AutoLog(value = "预约表-通过id删除")
135   - @ApiOperation(value="预约表-通过id删除", notes="预约表-通过id删除")
136   - @PostMapping(value = "/cancel")
137   - public Result<?> cancel(@RequestBody ReservationSubmission reservationSubmission) {
138   - LambdaQueryWrapper<ReservationSubmission> lambdaQueryWrapper = Wrappers.lambdaQuery();
139   - lambdaQueryWrapper.eq(ReservationSubmission::getOrderNumber,reservationSubmission.getOrderNumber())
140   - .eq(ReservationSubmission::getPhoneNumber,reservationSubmission.getPhoneNumber())
141   - .ne(ReservationSubmission::getStare,0);
142   - ReservationSubmission one = reservationSubmissionService.getOne(lambdaQueryWrapper);
143   -
144   - if (one!=null)
145   - {
146   - String cancel = sysDictService.queryDictTextByKey("cancel", reservationSubmission.getRemark());
147   - one.setStare(0);
148   - one.setRemark("因为要"+cancel+"操作取消人手机号是:"+reservationSubmission.getSubmitPhone());
149   - boolean b = reservationSubmissionService.updateById(one);
150   - return Result.OK("取消成功!");
151   - }
152   - else
153   - {
154   - return Result.error("取消失败,请确保每项填写正确!");
155   - }
156   - }
157   -
158   -
  116 +
159 117 /**
160 118 * 批量删除
161 119 *
... ... @@ -169,7 +127,7 @@ public class ReservationSubmissionController extends JeecgController&lt;Reservation
169 127 this.reservationSubmissionService.removeByIds(Arrays.asList(ids.split(",")));
170 128 return Result.OK("批量删除成功!");
171 129 }
172   -
  130 +
173 131 /**
174 132 * 通过id查询
175 133 *
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/reserve/reservationsubmission/entity/ReservationSubmission.java
... ... @@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
20 20 /**
21 21 * @Description: 预约表
22 22 * @Author: jeecg-boot
23   - * @Date: 2022-02-14
  23 + * @Date: 2022-02-18
24 24 * @Version: V1.0
25 25 */
26 26 @Data
... ... @@ -36,9 +36,14 @@ public class ReservationSubmission implements Serializable {
36 36 @ApiModelProperty(value = "主键")
37 37 private String id;
38 38 /**预约时间*/
39   - @Excel(name = "预约时间", width = 15)
  39 + @Excel(name = "预约时间", width = 15, dicCode = "time")
  40 + @Dict(dicCode = "time")
40 41 @ApiModelProperty(value = "预约时间")
41 42 private String appointmentTime;
  43 + /**时间段*/
  44 + @Excel(name = "时间段", width = 15)
  45 + @ApiModelProperty(value = "时间段")
  46 + private String timeSelection;
42 47 /**订单号*/
43 48 @Excel(name = "订单号", width = 15)
44 49 @ApiModelProperty(value = "订单号")
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/reserve/reservationsubmission/mapper/ReservationSubmissionMapper.java
... ... @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
9 9 /**
10 10 * @Description: 预约表
11 11 * @Author: jeecg-boot
12   - * @Date: 2022-02-14
  12 + * @Date: 2022-02-18
13 13 * @Version: V1.0
14 14 */
15 15 public interface ReservationSubmissionMapper extends BaseMapper<ReservationSubmission> {
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/reserve/reservationsubmission/service/IReservationSubmissionService.java
... ... @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
6 6 /**
7 7 * @Description: 预约表
8 8 * @Author: jeecg-boot
9   - * @Date: 2022-02-14
  9 + * @Date: 2022-02-18
10 10 * @Version: V1.0
11 11 */
12 12 public interface IReservationSubmissionService extends IService<ReservationSubmission> {
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/reserve/reservationsubmission/service/impl/ReservationSubmissionServiceImpl.java
... ... @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
10 10 /**
11 11 * @Description: 预约表
12 12 * @Author: jeecg-boot
13   - * @Date: 2022-02-14
  13 + * @Date: 2022-02-18
14 14 * @Version: V1.0
15 15 */
16 16 @Service
... ...
jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java
... ... @@ -72,21 +72,9 @@ public class LoginController {
72 72 //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题
73 73  
74 74 //update-begin-author:taoyan date:20190828 for:校验验证码
75   - String captcha = sysLoginModel.getCaptcha();
76   - if(captcha==null){
77   - result.error500("验证码无效");
78   - return result;
79   - }
80   - String lowerCaseCaptcha = captcha.toLowerCase();
81   - String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+sysLoginModel.getCheckKey(), "utf-8");
82   - Object checkCode = redisUtil.get(realKey);
83   - //当进入登录页时,有一定几率出现验证码错误 #1714
84   - if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) {
85   - result.error500("验证码错误");
86   - return result;
87   - }
  75 +
88 76 //update-end-author:taoyan date:20190828 for:校验验证码
89   -
  77 +
90 78 //1. 校验用户是否有效
91 79 //update-begin-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false
92 80 LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
... ... @@ -97,7 +85,7 @@ public class LoginController {
97 85 if(!result.isSuccess()) {
98 86 return result;
99 87 }
100   -
  88 +
101 89 //2. 校验用户名或密码是否正确
102 90 String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt());
103 91 String syspassword = sysUser.getPassword();
... ... @@ -105,11 +93,10 @@ public class LoginController {
105 93 result.error500("用户名或密码错误");
106 94 return result;
107 95 }
108   -
  96 +
109 97 //用户登录信息
110 98 userInfo(sysUser, result);
111 99 //update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码
112   - redisUtil.del(realKey);
113 100 //update-begin--Author:liusq Date:20210126 for:登录成功,删除redis中的验证码
114 101 LoginUser loginUser = new LoginUser();
115 102 BeanUtils.copyProperties(sysUser, loginUser);
... ... @@ -141,7 +128,7 @@ public class LoginController {
141 128 return result;
142 129  
143 130 }
144   -
  131 +
145 132 /**
146 133 * 退出登录
147 134 * @param request
... ... @@ -175,7 +162,7 @@ public class LoginController {
175 162 return Result.error("Token无效!");
176 163 }
177 164 }
178   -
  165 +
179 166 /**
180 167 * 获取访问量
181 168 * @return
... ... @@ -206,7 +193,7 @@ public class LoginController {
206 193 result.success("登录成功");
207 194 return result;
208 195 }
209   -
  196 +
210 197 /**
211 198 * 获取访问量
212 199 * @return
... ... @@ -227,8 +214,8 @@ public class LoginController {
227 214 result.setResult(oConvertUtils.toLowerCasePageList(list));
228 215 return result;
229 216 }
230   -
231   -
  217 +
  218 +
232 219 /**
233 220 * 登陆成功选择用户当前部门
234 221 * @param user
... ... @@ -253,7 +240,7 @@ public class LoginController {
253 240  
254 241 /**
255 242 * 短信登录接口
256   - *
  243 + *
257 244 * @param jsonObject
258 245 * @return
259 246 */
... ... @@ -302,7 +289,7 @@ public class LoginController {
302 289 }
303 290 return result;
304 291 }
305   -
  292 +
306 293 /**
307 294 * smsmode 短信模板方式 0 .登录模板、1.注册模板、2.忘记密码模板
308 295 */
... ... @@ -334,11 +321,11 @@ public class LoginController {
334 321 }
335 322 return result;
336 323 }
337   -
  324 +
338 325  
339 326 /**
340 327 * 手机号登录接口
341   - *
  328 + *
342 329 * @param jsonObject
343 330 * @return
344 331 */
... ... @@ -347,14 +334,14 @@ public class LoginController {
347 334 public Result<JSONObject> phoneLogin(@RequestBody JSONObject jsonObject) {
348 335 Result<JSONObject> result = new Result<JSONObject>();
349 336 String phone = jsonObject.getString("mobile");
350   -
  337 +
351 338 //校验用户有效性
352 339 SysUser sysUser = sysUserService.getUserByPhone(phone);
353 340 result = sysUserService.checkUserIsEffective(sysUser);
354 341 if(!result.isSuccess()) {
355 342 return result;
356 343 }
357   -
  344 +
358 345 String smscode = jsonObject.getString("captcha");
359 346 Object code = redisUtil.get(phone);
360 347 if (!smscode.equals(code)) {
... ... @@ -463,7 +450,7 @@ public class LoginController {
463 450 }
464 451 return res;
465 452 }
466   -
  453 +
467 454 /**
468 455 * app登录
469 456 * @param sysLoginModel
... ... @@ -475,14 +462,14 @@ public class LoginController {
475 462 Result<JSONObject> result = new Result<JSONObject>();
476 463 String username = sysLoginModel.getUsername();
477 464 String password = sysLoginModel.getPassword();
478   -
  465 +
479 466 //1. 校验用户是否有效
480 467 SysUser sysUser = sysUserService.getUserByName(username);
481 468 result = sysUserService.checkUserIsEffective(sysUser);
482 469 if(!result.isSuccess()) {
483 470 return result;
484 471 }
485   -
  472 +
486 473 //2. 校验用户名或密码是否正确
487 474 String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt());
488 475 String syspassword = sysUser.getPassword();
... ... @@ -490,7 +477,7 @@ public class LoginController {
490 477 result.error500("用户名或密码错误");
491 478 return result;
492 479 }
493   -
  480 +
494 481 String orgCode = sysUser.getOrgCode();
495 482 if(oConvertUtils.isEmpty(orgCode)) {
496 483 //如果当前用户无选择部门 查看部门关联信息
... ... @@ -506,7 +493,7 @@ public class LoginController {
506 493 JSONObject obj = new JSONObject();
507 494 //用户登录信息
508 495 obj.put("userInfo", sysUser);
509   -
  496 +
510 497 // 生成token
511 498 String token = JwtUtil.sign(username, syspassword);
512 499 // 设置超时时间
... ... @@ -529,18 +516,8 @@ public class LoginController {
529 516 */
530 517 @RequestMapping(value = "/checkCaptcha", method = RequestMethod.POST)
531 518 public Result<?> checkCaptcha(@RequestBody SysLoginModel sysLoginModel){
532   - String captcha = sysLoginModel.getCaptcha();
533 519 String checkKey = sysLoginModel.getCheckKey();
534   - if(captcha==null){
535   - return Result.error("验证码无效");
536   - }
537   - String lowerCaseCaptcha = captcha.toLowerCase();
538   - String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+checkKey, "utf-8");
539   - Object checkCode = redisUtil.get(realKey);
540   - if(checkCode==null || !checkCode.equals(lowerCaseCaptcha)) {
541   - return Result.error("验证码错误");
542   - }
543 520 return Result.ok();
544 521 }
545 522  
546   -}
547 523 \ No newline at end of file
  524 +}
... ...
jeecg-boot/jeecg-boot-module-system/src/main/resources/application-dev.yml
... ... @@ -131,7 +131,7 @@ spring:
131 131 connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
132 132 datasource:
133 133 master:
134   - url: jdbc:mysql://127.0.0.1:3306/wms_guangxijianyi?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
  134 + url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
135 135 username: root
136 136 password: 123456
137 137 driver-class-name: com.mysql.cj.jdbc.Driver
... ...
jeecg-boot/jeecg-boot-module-system/src/main/resources/application-prod.yml
... ... @@ -131,7 +131,7 @@ spring:
131 131 connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
132 132 datasource:
133 133 master:
134   - url: jdbc:mysql://127.0.0.1:3306/wms_guangxijianyi?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
  134 + url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
135 135 username: root
136 136 password: 123456
137 137 driver-class-name: com.mysql.cj.jdbc.Driver
... ...
jeecg-boot/jeecg-boot-module-system/src/main/resources/application-test.yml
... ... @@ -131,7 +131,7 @@ spring:
131 131 connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
132 132 datasource:
133 133 master:
134   - url: jdbc:mysql://127.0.0.1:3306/wms_guangxijianyi?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
  134 + url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
135 135 username: root
136 136 password: 123456
137 137 driver-class-name: com.mysql.cj.jdbc.Driver
... ...