123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- <template>
- <a-modal
- :title="title"
- :width="1200"
- :visible="visible"
- :confirmLoading="confirmLoading"
- @ok="handleOk"
- @cancel="handleCancel">
- <a-spin :spinning="confirmLoading">
- <a-form-model ref="form" :label-col="labelCol" :wrapper-col="wrapperCol" :model="orderMainModel" :rules="validatorRules">
- <!-- 主表单区域 -->
- <a-row class="form-row" :gutter="16">
- <a-col :lg="8">
- <a-form-model-item label="订单号" required prop="orderCode">
- <a-input v-model="orderMainModel.orderCode" placeholder="请输入订单号"/>
- </a-form-model-item>
- </a-col>
- <a-col :lg="8">
- <a-form-model-item label="订单类型" prop="ctype">
- <a-select placeholder="请选择订单类型" v-model="orderMainModel.ctype" >
- <a-select-option value="1">国内订单</a-select-option>
- <a-select-option value="2">国际订单</a-select-option>
- </a-select>
- </a-form-model-item>
- </a-col>
- <a-col :lg="8">
- <a-form-model-item label="订单日期" prop="orderDate">
- <a-date-picker showTime valueFormat="YYYY-MM-DD HH:mm:ss" v-model="orderMainModel.orderDate"/>
- </a-form-model-item>
- </a-col>
- </a-row>
- <a-row class="form-row" :gutter="16">
- <a-col :lg="8">
- <a-form-model-item label="订单金额" prop="orderMoney">
- <a-input-number style="width: 200px" v-model="orderMainModel.orderMoney"/>
- </a-form-model-item>
- </a-col>
- <a-col :lg="8">
- <a-form-model-item label="订单备注" prop="content">
- <a-input placeholder="请输入订单备注" v-model="orderMainModel.content" />
- </a-form-model-item>
- </a-col>
- </a-row>
- <!-- 子表单区域 -->
- <a-tabs defaultActiveKey="1" >
- <a-tab-pane tab="客户信息" key="1">
- <div>
- <a-row type="flex" style="margin-bottom:10px" :gutter="16">
- <a-col :span="5">客户名</a-col>
- <a-col :span="5">性别</a-col>
- <a-col :span="6">身份证号码</a-col>
- <a-col :span="6">手机号</a-col>
- <a-col :span="2">操作</a-col>
- </a-row>
- <a-row type="flex" style="margin-bottom:10px" :gutter="16" v-for="(item, index) in orderMainModel.jeecgOrderCustomerList" :key="index">
- <a-col :span="6" style="display: none">
- <a-form-model-item>
- <a-input placeholder="id" v-model="item.id" />
- </a-form-model-item>
- </a-col>
- <a-col :span="5">
- <a-form-model-item>
- <a-input placeholder="客户名" v-model="item.name" />
- </a-form-model-item>
- </a-col>
- <a-col :span="5">
- <a-form-model-item>
- <a-select placeholder="性别" v-model="item.sex" >
- <a-select-option value="1">男</a-select-option>
- <a-select-option value="2">女</a-select-option>
- </a-select>
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item :prop="'jeecgOrderCustomerList.' + index + '.idcard'" :rules="[{required: true,message: '请输入身份证号',trigger: 'blur'},{ pattern: rules.IDCard, message: '身份证号格式不对!' }]">
- <a-input placeholder="身份证号" v-model="item.idcard" />
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item :prop="'jeecgOrderCustomerList.' + index + '.telphone'" :rules="rules.mobile">
- <a-input placeholder="手机号" v-model="item.telphone"/>
- </a-form-model-item>
- </a-col>
- <a-col :span="2">
- <a-form-model-item>
- <a-icon type="minus-circle" @click="delRowCustom(index)" style="fontSize :20px"/>
- </a-form-model-item>
- </a-col>
- </a-row>
- <a-button type="dashed" style="width: 98%;margin-top: 10px" @click="addRowCustom">
- <a-icon type="plus" /> 添加客户信息
- </a-button>
- </div>
- </a-tab-pane>
- <a-tab-pane tab="机票信息" key="2" forceRender>
- <div>
- <a-row type="flex" style="margin-bottom:10px" :gutter="16">
- <a-col :span="6">航班号</a-col>
- <a-col :span="6">航班时间</a-col>
- <a-col :span="6">操作</a-col>
- </a-row>
- <a-row type="flex" style="margin-bottom:10px" :gutter="16" v-for="(item, index) in orderMainModel.jeecgOrderTicketList" :key="index">
- <a-col :span="6" style="display: none">
- <a-form-model-item>
- <a-input placeholder="id" v-model="item.id" />
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item :prop="'jeecgOrderTicketList.' + index + '.ticketCode'" :rules="{required: true,message: '请输入航班号',trigger: 'blur'}">
- <a-input placeholder="航班号" v-model="item.ticketCode"/>
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item>
- <a-date-picker placeholder="航班时间" valueFormat="YYYY-MM-DD" v-model="item.tickectDate" />
- </a-form-model-item>
- </a-col>
- <a-col :span="6">
- <a-form-model-item>
- <a-icon type="minus-circle" @click="delRowTicket(index)" style="fontSize :20px"/>
- </a-form-model-item>
- </a-col>
- </a-row>
- <a-button type="dashed" style="width: 98%;margin-top: 10px" @click="addRowTicket">
- <a-icon type="plus" /> 添加机票信息
- </a-button>
- </div>
- </a-tab-pane>
- </a-tabs>
- </a-form-model>
- </a-spin>
- </a-modal>
- </template>
- <script>
- import { httpAction,getAction } from '@/api/manage'
- import JDate from '@/components/jeecg/JDate'
- export default {
- name: "JeecgOrderMainModal",
- components: {
- JDate
- },
- data () {
- return {
- title:"操作",
- visible: false,
- orderMainModel: {
- jeecgOrderCustomerList: [{}],
- jeecgOrderTicketList: [{}]
- },
- labelCol: {
- xs: { span: 24 },
- sm: { span: 5 },
- },
- wrapperCol: {
- xs: { span: 24 },
- sm: { span: 16 },
- },
- confirmLoading: false,
- validatorRules:{
- orderCode: [
- { required: true, message: '订单号不能为空', trigger: 'blur' }
- ]
- },
- url: {
- add: "/test/jeecgOrderMain/add",
- edit: "/test/jeecgOrderMain/edit",
- orderCustomerList: "/test/jeecgOrderMain/queryOrderCustomerListByMainId",
- orderTicketList: "/test/jeecgOrderMain/queryOrderTicketListByMainId",
- },
- }
- },
- created () {
- },
- methods: {
- add () {
- this.edit({});
- },
- edit (record) {
- this.orderMainModel = Object.assign({
- jeecgOrderCustomerList: [{}],
- jeecgOrderTicketList: [{}]
- }, record);
- //--------------------------------------------------------
- //初始化明细表数据
- console.log(this.orderMainModel.id)
- if(this.orderMainModel.id){
- let params = {id:this.orderMainModel.id}
- //初始化订单机票列表
- getAction(this.url.orderCustomerList,params).then((res)=>{
- if(res.success){
- this.orderMainModel.jeecgOrderCustomerList = res.result;
- this.$forceUpdate()
- }
- })
- //初始化订单客户列表
- getAction(this.url.orderTicketList,params).then((res)=>{
- if(res.success){
- this.orderMainModel.jeecgOrderTicketList = res.result;
- this.$forceUpdate()
- }
- })
- }
- this.visible = true;
- },
- close () {
- this.$emit('close');
- this.visible = false;
- },
- handleOk () {
- const that = this;
- // 触发表单验证
- this.$refs.form.validate(valid => {
- if (valid) {
- that.confirmLoading = true;
- let httpurl = '';
- let method = '';
- if(!this.orderMainModel.id){
- httpurl+=this.url.add;
- method = 'post';
- }else{
- httpurl+=this.url.edit;
- //method = 'put';
- method = 'post';
- }
- httpAction(httpurl,this.orderMainModel,method).then((res)=>{
- if(res.success){
- that.$message.success(res.message);
- that.$emit('ok');
- }else{
- that.$message.warning(res.message);
- }
- }).finally(() => {
- that.confirmLoading = false;
- that.close();
- })
- }
- })
- },
- handleCancel () {
- this.close()
- },
- addRowCustom () {
- this.orderMainModel.jeecgOrderCustomerList.push({});
- this.$forceUpdate();
- },
- delRowCustom (index) {
- console.log(index)
- let all = this.orderMainModel
- all['jeecgOrderCustomerList'].splice(index,1);
- this.orderMainModel.jeecgOrderCustomerList.splice(index,1);
- this.$forceUpdate();
- },
- addRowTicket () {
- this.orderMainModel.jeecgOrderTicketList.push({});
- console.log(this.orderMainModel.jeecgOrderTicketList)
- this.$forceUpdate();
- },
- delRowTicket (index) {
- console.log(index)
- let all = this.orderMainModel
- all['jeecgOrderTicketList'].splice(index,1);
- this.orderMainModel.jeecgOrderTicketList.splice(index,1);
- this.$forceUpdate();
- },
- }
- }
- </script>
- <style scoped>
- .ant-btn {
- padding: 0 10px;
- margin-left: 3px;
- }
- .ant-form-item-control {
- line-height: 0px;
- }
- /** 主表单行间距 */
- .ant-form .ant-form-item {
- margin-bottom: 10px;
- }
- /** Tab页面行间距 */
- .ant-tabs-content .ant-form-item {
- margin-bottom: 0px;
- }
- </style>
|