xgwangman 4 жил өмнө
parent
commit
9a8602113a

+ 20 - 11
src/assets/css/common.css

@@ -444,7 +444,7 @@ textarea:-ms-input-placeholder {
 .order-model .sum-jin {
   font-size: 15px;
 }
-.order-model .quan-sing {
+.quan-sing {
   margin-top: 10px;
   font-size: 13px;
 }
@@ -459,7 +459,7 @@ textarea:-ms-input-placeholder {
 .order-model .table-order1 .ivu-form-item-content tr td:nth-child(3) .ivu-table-cell {
   padding: 0px;
 }
-.order-model .quan-sing .ivu-checkbox-inner {
+.quan-sing .ivu-checkbox-inner {
   border-radius: 50%;
 }
 .order-model .form-radio1 .ivu-radio-wrapper {
@@ -492,12 +492,6 @@ textarea:-ms-input-placeholder {
 .combo-model .table-form2 .ivu-form-item-content .ivu-table-cell span,.order-model .table-order1 .ivu-form-item-content .ivu-table-cell span {
   font-size: 13px;
 }
-.combo-model .tips {
-  /* display: none; */
-  font-size: 14px;
-  color: #ffb822;
-  margin-bottom: 10px;
-}
 .sel-table, .prei-table {
   border: none;
 }
@@ -532,13 +526,13 @@ textarea:-ms-input-placeholder {
 .date-sigles .ivu-date-picker {
   width: 100%;
 }
-.ivu-select-dropdown {
+.ivu-date-picker-transfer {
   width: 260px;
 }
-.ivu-select-dropdown .ivu-date-picker-cells {
+.ivu-date-picker-transfer .ivu-date-picker-cells {
   width: 240px;
 }
-.ivu-select-dropdown .ivu-date-picker-cells .ivu-date-picker-cells-header span,.ivu-select-dropdown .ivu-date-picker-cells .ivu-date-picker-cells-cell {
+.ivu-date-picker-transfer .ivu-date-picker-cells .ivu-date-picker-cells-header span,.ivu-date-picker-transfer .ivu-date-picker-cells .ivu-date-picker-cells-cell {
   width: 34px;
   height: 34px;
   line-height: 34px;
@@ -566,4 +560,19 @@ textarea:-ms-input-placeholder {
   from { transform: rotate(0deg);}
   50%  { transform: rotate(180deg);}
   to   { transform: rotate(360deg);}
+}
+.ping-load {
+  margin: 20px 0 10px 0;
+}
+.ping-load .find-btn {
+  width: 360px;
+  height: 140px;
+  margin-left: 30px;
+  font-size: 14px;
+  color: #9e9e9e;
+}
+.ping-model .imgs {
+  width: 360px;
+  height: 140px;
+  margin: 20px 0 10px 30px;
 }

+ 64 - 0
src/assets/js/dateSub.js

@@ -0,0 +1,64 @@
+//计算时间间隔差
+//[年个数, 月个数]
+export function getDateSub(end) {
+    // var startTime = new Date(start * 1000);
+    console.log(end)
+    var startTime = (new Date());
+    var endTime = new Date(end * 1000);
+    console.log(startTime,endTime)
+
+    var startYear = startTime.getFullYear();
+    var startMonth = startTime.getMonth();
+    var startDay = startTime.getDate();
+
+    var endYear = endTime.getFullYear();
+    var endMonth = endTime.getMonth();
+    var endDay = endTime.getDate();
+
+    var finalMonthNum = 0;
+    var finalYearNum = 0;
+    if (startYear === endYear) {
+        if (startMonth === endMonth) {
+            finalMonthNum = 1;
+        } else {
+            if (endDay > startDay) {
+                finalMonthNum = endMonth - startMonth + 1;
+            } else {
+                finalMonthNum = endMonth - startMonth;
+            }
+        }
+    } else {
+        if (startMonth === endMonth) {
+            if (endDay <= startDay) {
+                finalMonthNum = (endYear - startYear) * 12;
+            } else {
+                finalMonthNum = (endYear - startYear) * 12 + 1;
+            }
+        } else if (endMonth > startMonth) {
+            if (endDay <= startDay) {
+                finalMonthNum = (endYear - startYear) * 12 + (endMonth - startMonth);
+            } else {
+                finalMonthNum = (endYear - startYear) * 12 + (endMonth - startMonth) + 1;
+            }
+        } else {
+            if (endDay <= startDay) {
+                finalMonthNum = (endYear - startYear - 1) * 12 + (12 - startMonth + endMonth);
+            } else {
+                finalMonthNum = (endYear - startYear - 1) * 12 + (12 - startMonth + endMonth) + 1;
+            }
+        }
+
+        finalYearNum = Math.floor(finalMonthNum / 12);
+        if (finalYearNum > 0) {
+            finalMonthNum = finalMonthNum - finalYearNum * 12
+        }
+    }
+    if (finalYearNum < 1) {
+        console.log(parseInt(finalMonthNum))
+        return parseInt(finalMonthNum)
+    } else {
+        console.log(parseInt(finalMonthNum) / 12 + parseInt(finalMonthNum))
+        return parseInt(finalMonthNum) / 12 + parseInt(finalMonthNum)
+    }
+    // return [finalYearNum, finalMonthNum]
+}

+ 1 - 1
src/plugins/request.js

@@ -33,7 +33,7 @@ export const requestSuccessHandle = function (vue, response, tipSuccess, tipErro
             vue.$Notice.success({
                 title: '操作提示',
                 desc: response.info,
-                duration: 2
+                duration: 3
             })
         }
         success && success(response)

+ 171 - 15
src/views/bigMenber/bigCombo.vue

@@ -22,7 +22,7 @@
                 ellipsis 
                 :loading="loading" 
                 ref="selection" 
-                :columns="columns" 
+                :columns="columns1" 
                 :data="list.lists" 
                 stripe
             >
@@ -48,16 +48,40 @@
             </template>
         </table-lists>
         <!-- 创建套餐弹框 -->
-        <set-model ref="comModel" :editData="editData"></set-model>
+        <Modal :title="editData.tips=='1'?'新增套餐':'编辑套餐'" v-model="cShow" class-name="order-model combo-model" :mask-closable="false" @on-visible-change="visibleChange">
+            <Form ref="combo" :model="combo" :show-message="false" :label-width="240">
+                <FormItem label="名称" prop="name" class="table-form1">
+                    <Input 
+                        v-model="names" 
+                        type="text" 
+                        :maxlength="4" 
+                        @on-keyup="names=names.replace(/[^\u4e00-\u9fa5]+/g,'')" 
+                        placeholder="请输入套餐名称(最多4个中文)" 
+                    ></Input>
+                </FormItem>
+                <FormItem class="table-form2">
+                    <Table 
+                        class="sel-table"
+                        border 
+                        ref="selection" 
+                        :columns="columns2" 
+                        :data="editData.lists" 
+                        @on-selection-change="selChage"
+                        :summary-method="handleSummary"
+                        show-summary
+                    ></Table>
+                </FormItem>
+            </Form>
+            <div slot="footer">
+                <Button type="primary" size="large" @click="comConfirm()">提交</Button>
+                <Button type="error" size="large" @click="comCancel()">取消</Button>
+            </div>
+        </Modal>
     </div>
 </template>
 
 <script>
-import setModel from './components/comboModel.vue'
 export default {
-    components: {
-        setModel
-    },
     methods: {
         localed(val) {
             return val.toLocaleString('zh', { style:'currency', currency:'CNY' })
@@ -73,23 +97,30 @@ export default {
         },
         getServed(val, bool) {
             this.$request('/order/getServer').data().success((res) => {// 获取所有服务
-                if (val) {
-                    let atrs = val.s_servers.split(',')
+                    let resList = []
                     res.data.lists.forEach(v => {
-                        if (atrs.indexOf(String(v.id)) > -1) {
-                            v._checked = true
+                        if (v.i_isserver == 1) {
+                            resList.push(v)
+                        }
+                        if (val) {
+                            let atrs = val.s_servers.split(',')
+                            if (atrs.indexOf(String(v.id)) > -1) {
+                                v._checked = true
+                                this.sumSel.push(v)
+                            }
                         }
                     })
-                }
+                
                 this.editData = {
-                    lists: res.data.lists,
+                    lists: resList,
                     rows: val ? val : [],
                     tips: bool
                 }
-                this.$refs.comModel.cShow = true
+                this.cShow = true
             }).get()
         },
         editCombo(data) {
+            this.names = data.s_name
             this.getServed(data, 0)
         },
         delCombo(ids) {
@@ -103,6 +134,94 @@ export default {
                     }).post()
                 }
             })
+        },
+        initialized() {
+            this.names = ''
+            this.zPrice = 0
+            this.$refs.selection.selectAll(false)
+        },
+        visibleChange(val) {
+            if (!val) {
+                this.initialized()
+            }
+        },
+        // 合计
+        handleSummary ({ columns, data }) {
+            const sums = {}
+            columns.forEach((column, index) => {
+                const key = column.key
+                if (index === 0) {
+                    sums[key] = {
+                        key,
+                        value: '合计'
+                    }
+                    return
+                }
+                const values = this.sumSel.map(item => Number(item[key]))
+                if (!values.every(value => isNaN(value))) {
+                    const v = values.reduce((prev, curr) => {
+                        const value = Number(curr);
+                        if (!isNaN(value)) {
+                            return prev + curr;
+                        } else {
+                            return prev;
+                        }
+                    }, 0)
+                    sums[key] = {
+                        key,
+                        value: v
+                    }
+                    this.zPrice = sums.i_price_year.value
+                } else {
+                    if (key == 's_name') {
+                        sums[key] = {
+                            key,
+                            value: 'N/A'
+                        }
+                    } else {
+                        sums[key] = {
+                            key,
+                            value: 0
+                        }
+                    }
+                }
+            })
+            return sums;
+        },
+        // 多选
+        selChage(selection) {
+            let arrs = []
+            selection.map(v => {
+                arrs.push(v)
+            })
+            this.sumSel = arrs
+        },
+        comConfirm() {
+            if (!this.names) {
+                this.$Notice.warning({
+                    title: "套餐名称不能为空"
+                })
+                return
+            }
+            let serverId = []
+            this.sumSel.forEach(v => {
+                serverId.push(v.id)
+            })
+            let str = {
+                id: this.editData.tips == 1 ? '' : this.editData.rows.id,
+                name: this.names,
+                price: this.zPrice,
+                serverids: String(serverId)
+            }
+            this.$request('/order/updateCombo').data(str).showSuccessTip().success(() => {
+                this.cShow = false
+                this.initialized()
+                this.reload()
+            }).post()
+        },
+        comCancel() {
+            this.cShow = false
+            this.initialized()
         }
     },
     data() {
@@ -112,7 +231,7 @@ export default {
             filter: {
                 keyword: ''
             },
-            columns: [
+            columns1: [
                 {
                     title: '名称',
                     key: 's_name',
@@ -145,7 +264,44 @@ export default {
                     align: 'center'
                 }
             ],
-            list: []
+            list: [],
+            cShow: false,
+            combo: {},
+            sumSel: [],
+            names: '',
+            zPrice: 0,
+            columns2: [
+                {
+                    type: 'selection',
+                    width: 40,
+                    align: 'center'
+                },
+                {
+                    title: '服务名称',
+                    key: 's_name',
+                    width: 240,
+                    align: 'center',
+                    render: (h, {row}) => {
+                        return h('span', row.s_name ? row.s_name : '-')
+                    }
+                },
+                {
+                    title: '年价格',
+                    key: 'i_price_year',
+                    align: 'center',
+                    render: (h, {row}) => {
+                        return h('span', row.i_price_year ? row.s_count_year ? row.s_count_year + '个/' + row.i_price_year : row.i_price_year : '-')
+                    }
+                },
+                {
+                    title: '月价格',
+                    key: 'i_price_month',
+                    align: 'center',
+                    render: (h, {row}) => {
+                        return h('span', row.i_price_month ? row.s_count_month ? row.s_count_month + '个/' + row.i_price_month : row.i_price_month : '-')
+                    }
+                }
+            ]
         }
     }
 }

+ 33 - 37
src/views/bigMenber/components/comboModel.vue

@@ -6,7 +6,6 @@
                     <Input 
                         v-model="names" 
                         type="text" 
-                        @on-keyup="wordReg"
                         :maxlength="4" 
                         placeholder="请输入套餐名称(最多4个中文)" 
                     ></Input>
@@ -26,8 +25,8 @@
             </Form>
             <div slot="footer">
                 <div class="tips">此套餐与xxx套餐内容一样,请重新选择</div>
-                <Button type="primary" size="large" @click="comConfirm()" v-if="!createDis">提交</Button>
-                <Button type="primary" size="large" disabled v-else>提交</Button>
+                <Button type="primary" size="large" @click="comConfirm()">提交</Button>
+                <!-- <Button type="primary" size="large" disabled v-else>提交</Button> -->
                 <Button type="error" size="large" @click="comCancel()">取消</Button>
             </div>
         </Modal>
@@ -39,39 +38,29 @@ export default {
     props: {
         editData: {}
     },
-    computed: {
-        names: {
-            get() {
-                if (this.editData.length == 0) {
-                    return ''
-                } else {
-                    return this.editData.rows.s_name
-                }
-            },
-            set(val) {
-                return val
-            }
-        },
-        createDis:function() {
-            console.log(this.names,this.sumSel)
-            if (this.names) {
-                if (this.sumSel.length == 0) {
-                    return true
-                } else {
-                    return false
-                }
-            } else {
-                return true
-            }
-        }
-    },
+    // computed: {
+    //     names: {
+    //         get() {
+    //             if (this.editData.length == 0) {
+    //                 return ''
+    //             } else {
+    //                 return this.editData.rows.s_name
+    //             }
+    //         },
+    //         set(val) {
+    //             return val
+    //         }
+    //     }
+    // },
     methods: {
         wordReg(e) {
             console.log(e.target.value)
             e.target.value = e.target.value.replace(/[^\u4e00-\u9fa5]+/g,'')
+            // this.comNames = e.target.value
         },
         initialized() {
             this.names = ''
+            this.zPrice = 0
             this.$refs.selection.selectAll(false)
         },
         visibleChange(val) {
@@ -144,22 +133,30 @@ export default {
             // console.log(this.names)
         },
         comConfirm() {
-            this.cShow = false
+            console.log(this.names)
+            if (!this.names) {
+                this.$Notice.warning({
+                    title: "套餐名称不能为空"
+                })
+                return
+            }
             let serverId = []
             this.sumSel.forEach(v => {
                 serverId.push(v.id)
             })
+            console.log(this.editData)
             let str = {
-                id: this.editData.length == 0?'':this.editData.rows.id,
+                id: this.editData.tips == 1 ? '' : this.editData.rows.id,
                 name: this.names,
                 price: this.zPrice,
                 serverids: String(serverId)
             }
             console.log(str)
-            this.$request('/order/updateCombo').data(str).success(() => {
-                this.initialized()
-                this.$parent.reload()
-            }).post()
+            // this.$request('/order/updateCombo').data(str).success(() => {
+            //     this.cShow = false
+            //     this.initialized()
+            //     this.$parent.reload()
+            // }).post()
         },
         comCancel() {
             this.cShow = false
@@ -169,10 +166,9 @@ export default {
     data() {
         return {
             cShow: false,
-            boData: [],
             combo: {},
-            // createDis: true,
             sumSel: [],
+            names: '',
             zPrice: 0,
             columns: [
                 {

+ 185 - 17
src/views/order/components/details.vue

@@ -16,13 +16,13 @@
         </div>
         <div class="infor-card" v-if="orderType == 0 || orderType == 1">
             <div class="cont">
-                <div class="tit">课程信息</div>
+                <div class="tit">产品信息</div>
                 <div class="classfity">
                     <!-- 线上课程 -->
                     <span>课程名称: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>{{strCourse.s_name?strCourse.s_name:'--'}}</i></span>
                     <span v-if="orderType == 0">发票开取方: &nbsp;&nbsp;&nbsp;&nbsp;<i>{{book.i_drawer?book.i_drawer:'--'}}</i></span>
                     <span v-if="orderType == 0">课程时长: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{strCourse.s_courseDate?strCourse.s_courseDate:'--'}}</span>
-                    <span v-if="orderType == 0">有效期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{strCourse.l_endtime?l_endtime + '到期':'--'}}</span>
+                    <span v-if="orderType == 0">有效期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{strCourse.l_endtime?l_endtime + '到期':'--'}}</span>
                     <!-- 线下课程(招投标课程) -->
                     <span v-if="orderType == 1">课程地点: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{strCourse.s_address}}</span>
                     <span v-if="orderType == 1">课程时间: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -39,7 +39,7 @@
         <!-- 数据报告 -->
         <div class="infor-card" v-if="orderType == 2">
             <div class="cont">
-                <div class="tit">报告信息</div>
+                <div class="tit">产品信息</div>
                 <div class="classfity">
                     <span>报告名称: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.reportName}}</i></span>
                     <span>邮箱地址: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.user_mail}}</i></span>
@@ -50,7 +50,7 @@
         <!-- 历史数据 -->
         <div class="infor-card" v-if="orderType == 3">
             <div class="cont">
-                <div class="tit">导出信息</div>
+                <div class="tit">产品信息</div>
                 <div class="classfity">
                     <span>筛选日期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{orderObjectd(book.startime)?book.startime+' - ':'-'}}{{orderObjectd(book.endtime)?book.endtime:'-'}}</i></span>
                     <span>区域: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>{{orderObjectd(book.area)?String(book.area):'全国'}}</i></span>
@@ -92,7 +92,7 @@
         <!-- VIP订阅 -->
         <div class="infor-card" v-if="orderType == 8">
             <div class="cont">
-                <div class="tit">订阅信息</div>
+                <div class="tit">产品信息</div>
                 <div class="classfity">
                     <span>订购区域: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.subscription_area?book.subscription_area:'--':'--'}}</i></span>
                     <span>订购行业: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.industry_str?book.industry_str:'--':'--'}}</i></span>
@@ -113,11 +113,11 @@
         <!-- 企业商机管理 -->
         <div class="infor-card" v-if="orderType == 6">
             <div class="cont">
-                <div class="tit">管理信息</div>
+                <div class="tit">产品信息</div>
                 <div class="classfity">
                     <span>企业信息: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.entname:''}}</i></span>
                     <span>行业: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.industry:''}}</i></span>
-                    <span>使用产品人数: &nbsp;<i v-if="book">{{book?book.personnum:''}}人</i></span>
+                    <span>团队人数: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.personnum:''}}人</i></span>
                     <span>使用周期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.cycle+'年':'--'}}</i></span>
                 </div>
             </div>
@@ -126,14 +126,19 @@
         <!-- 大会员 -->
         <div class="infor-card" v-if="orderType == 7||orderType == 9||orderType == 10">
             <div class="cont">
-                <div class="tit">会员信息</div>
+                <div class="tit">产品信息</div>
                 <div class="classfity">
-                    <span>会员等级: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.level:''}}</i></span>                   
-                    <span>订阅周期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails?vip_starttime:''}}{{orDetails?vip_endtime:''}}</i></span>
+                    <span>会员套餐: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.level:''}}</i></span>                   
+                    <span v-if="orderType == 7">订阅周期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails?vip_starttime:''}}{{orDetails?vip_endtime:''}}</i></span>
+                    <span v-if="orderType !== 7">有效日期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{l_endtime?l_endtime + '到期':'--'}}</span>
                     <span v-if="orderType == 7||orderType == 9">付费子账号:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book.pay_sub_num||book.pay_sub_num==0?book.pay_sub_num+'个':'--'}}</i></span>
                     <span v-if="orderType == 7||orderType == 9">免费子账号:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book.free_sub_num||book.free_sub_num==0?book.free_sub_num+'个':'--'}}</i></span>
-                    <span v-if="orderType == 10">功能类型: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?'AI中标预测包':'--'}}</i></span>
-                    <span v-if="orderType == 10">购买数量: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book.count||book.count==0?book.count+'个':'--'}}</i></span>
+                    <span v-if="orderType !== 9">服务列表: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                        <ul>
+                            <li v-for="(item,index) in serverData" :key="index">{{item}}</li>
+                        </ul>
+                    </span>
+                    
                 </div>
             </div>
             <Divider />
@@ -195,12 +200,31 @@
             </div>
             <Divider />
         </div>
+        <!-- 收款信息 -->
+        <div class="infor-card">
+            <div class="cont">
+                <div class="tit">收款信息</div>
+                <div class="classfity">
+                    <span>
+                        <ul class="shou" v-if="book.collects">
+                            <li v-for="item in book.collects">
+                                {{item.transferVTime}}
+                                <div style="display:inline-block;width:100px;text-align:center;margin:0 60px">{{item.price?localed(item.price):'--'}}</div>
+                                <a href="javascript:;" @click="vouched(item.transferV)">点击查看</a>
+                            </li>
+                        </ul>
+                        <i v-else>暂无收款信息</i>
+                    </span>
+                </div>
+            </div>
+            <Divider />
+        </div>
         <div class="infor-card">
             <div class="cont">
                 <div class="tit">发票信息</div>
                 <div class="classfity">
                     <span>发票类型: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                        <i v-if="orDetails && orDetails.applybill_status == '已申请' || orDetails.applybill_status == 1">{{(orderType == 1 ? orDetails.invoice?orDetails.invoice.invoice_type:'--' : '普通发票(电子发票)')}}</i>
+                        <i v-if="orDetails && orDetails.applybill_status == '已申请' || orDetails.applybill_status == '已开具'|| orDetails.applybill_status == 1">{{(orDetails.applybill_status=="已开具"?orDetails.invoice.invoice_type:orderType == 1 ? orDetails.invoice?orDetails.invoice.invoice_type:'--' : '普通发票(电子发票)')}}</i>
                         <i v-else>--</i>
                     </span>
                     <span>发票内容: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -208,7 +232,7 @@
                         <i v-else>--</i>
                     </span>
                     <span>发票抬头: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                        <i v-if="orDetails">{{orderType == 1?orDetails.invoice?orDetails.invoice.invoice_rise:'--':orDetails.invoice?orDetails.invoice.invoice_type:'--'}}</i>
+                        <i v-if="orDetails">{{orDetails.applybill_status=="已开具"?'--':orderType == 1?orDetails.invoice?orDetails.invoice.invoice_rise:'--':orDetails.invoice?orDetails.invoice.invoice_type:'--'}}</i>
                         <i v-else>--</i>
                     </span>
                     <span v-if="orDetails.invoice?orDetails.invoice.invoice_rise=='单位' || orDetails.invoice.invoice_type=='单位':''">开票单位名称: &nbsp;<i v-if="orDetails">{{orDetails.invoice?orDetails.invoice.company_name?orDetails.invoice.company_name:'--':'--'}}</i></span>
@@ -229,16 +253,50 @@
                         </i>
                         <i v-else>--</i>
                     </span>
+                    <span v-if="orDetails.applybill_status == '已开具'">操作人员: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                        <i>{{orDetails.invoice.operator}}</i>
+                    </span>
+                    <span v-if="orDetails.applybill_status == '已开具'">操作时间: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                        <i>{{orDetails.invoice.operable_time}}</i>
+                    </span>
                 </div>
             </div>
             <Divider />
         </div>
         <div class="bot-btn">
+            <Button 
+                class="piao-btn" 
+                type="success" 
+                size="large"
+                disabled
+                v-if="orDetails.applybill_status == 1 || orDetails.applybill_status == '已开具'"
+            >线下开发票</Button>
+            <Button 
+                class="piao-btn" 
+                type="success" 
+                size="large"
+                @click="pushInvo"
+                v-else
+            >线下开发票</Button>
+            <Button 
+                class="ping-btn" 
+                type="success" 
+                size="large"
+                disabled
+                v-if="book.isAll == 1"
+            >上传凭证</Button>
+            <Button 
+                class="ping-btn" 
+                type="success" 
+                size="large"
+                @click="uploadP"
+                v-else
+            >上传凭证</Button>
             <Button 
                 class="shen-btn" 
                 type="primary" 
                 size="large"
-                @click="audited()"
+                @click="audited"
                 v-if="courseDis"
             >审核</Button>
             <Button 
@@ -263,6 +321,39 @@
                 v-else
             >退款</Button>
         </div>
+        <Modal title="线下开发票" v-model="invoice.iShow" class-name="shen-model">
+            <Select placeholder="请选择发票类型" v-model="invoice.type" style="width:100%;margin: 20px 0">
+                <Option v-for="item in invoType" :value="item.n" :key="item.v">{{ item.n }}</Option>
+            </Select>
+            <div slot="footer">
+                <Button type="primary" size="large" @click="invoSave" style="margin-right:20px">提交</Button>
+                <Button size="large" @click="invoCancel">取消</Button>
+            </div>
+        </Modal>
+        <Modal title="上传凭证" v-model="evidence.pShow" class-name="shen-model ping-model">
+            <Input type="number" placeholder="请输入凭证金额" v-model="evidence.sum"></Input>
+            <img :src="hosts + evidence.payUrl" class="imgs" v-if="evidence.payUrl">
+            <Upload 
+                action="/filemanage/upload"
+                :on-success="handleSuccess"
+                :on-exceeded-size="handleExceeded"
+                :on-error="handleError"
+                :show-upload-list="false"
+                accept=".jpg,.png,.jpeg"
+                name="transferAccounts"
+                :data="uploadData"
+                :max-size="15120"
+                class="ping-load"
+                v-else
+            >
+                <Button class="find-btn"><Icon type="ios-add" size="40" style="margin-top:20px" /><p style="font-size:15px">点击上传</p></Button>
+            </Upload>
+            <Checkbox v-model="evidence.isQuan" class="quan-sing">&nbsp;已收到全款</Checkbox>
+            <div slot="footer">
+                <Button type="primary" size="large" @click="pingSub" style="margin-right:20px">提交</Button>
+                <Button size="large" @click="pingCancel">取消</Button>
+            </div>
+        </Modal>
         <Modal title="审核" v-model="funds.sShow" class-name="shen-model">
             <p>请确认此订单审核结果!</p>
             <Input type="number" size="large" placeholder="请输入实付金额" v-model="funds.sum"></Input>
@@ -311,6 +402,8 @@ export default {
     },
     created () {
         this.ordered()
+        const htp = window.location.href.split('/')[0]
+        this.hosts = htp + '//' + window.location.host
     },
     methods: {
         localed(val) {
@@ -350,6 +443,8 @@ export default {
                 this.orDetails = r.data.res;
                 this.book = r.data.filterData;
                 this.strCourse = r.data.resCourse;
+                this.serverData = r.data.filterData.serversName.split(',')
+                console.log(this.serverData)
                 if (this.strCourse) {
                     this.l_starttime = ChangeDate1(this.strCourse.l_starttime);
                     this.l_endtime = ChangeDate1(this.strCourse.l_endtime);
@@ -360,6 +455,9 @@ export default {
                 }
             }).get()
         },
+        pushInvo() {
+            this.invoice.iShow = true
+        },
         refund (code) {
             this.models.tShow = true
             this.models.reCode = code
@@ -367,6 +465,22 @@ export default {
         audited() {
             this.funds.sShow = true
         },
+        uploadP() {
+            this.evidence.pShow = true
+        },
+        invoSave() {// 开发票 
+            this.$request('/order/openInvoice').data({
+                orderCode: this.orDetails.order_code,
+                invoiceType: this.invoice.type,
+                userId: this.orDetails.user_id
+            }).showSuccessTip().success(res => {
+                this.ordered()
+                this.invoice.iShow = false
+            }).post()
+        },
+        invoCancel() {
+            this.invoice.iShow = false
+        },
         audFunc(num) {
             this.$request('/order/orderList/transferAccounts').data({
                 pay_money: parseInt(this.funds.sum * 100),
@@ -376,6 +490,30 @@ export default {
                 this.ordered()
             }).post()
         },
+        handleSuccess(res, file) {// 文件上传成功
+            this.$Notice.success({title: '上传成功'})
+            this.evidence.payUrl = file.response.url
+        },
+        handleError() {// 文件上传失败
+            this.$Notice.error({title: '上传失败'})
+        },
+        handleExceeded() {// 文件超出指定大小限制
+            this.$Notice.warning({title: '上传文件内存应小于14M'})
+        },
+        pingSub() {// 上传凭证
+            this.$request('/order/uploadPay').data({
+                orderId: this.orDetails.id,
+                price: this.evidence.sum,
+                payV: this.evidence.payUrl,
+                isAll: this.evidence.isQuan?1:2
+            }).showSuccessTip().success(res => {
+                this.ordered()
+                this.evidence.pShow = false
+            }).post()
+        },
+        pingCancel() {
+            this.evidence.pShow = false
+        },
         subConfirm() {
             if (this.funds.sum == '') {
                 this.$Message.warning('实付金额为必填项')
@@ -437,6 +575,7 @@ export default {
             }
         },
         invoiceColor(val) {
+            console.log(val)
             if (val == -2) {
                 return 'color1'
             } else if (val == 0) {
@@ -450,7 +589,7 @@ export default {
                 return 'color1'
             } else if (val == '未申请') {
                 return 'color2'
-            } else if (val == '已申请') {
+            } else if (val == '已申请'||val == '已开具') {
                 return 'color3'
             }
         },
@@ -504,6 +643,24 @@ export default {
             l_endtime: '',
             vip_starttime: '',
             vip_endtime: '',
+            serverData: [],
+            hosts: '',
+            invoice: {
+                iShow: false,
+                type: ''
+            },
+            invoType:[
+                {v: '1', n: '普通发票(纸质发票)'},
+                {v: '2', n: '普通发票(电子发票)'},
+                {v: '3', n: '专用发票(纸质发票)'},
+            ],
+            evidence: {
+                pShow: false,
+                pingShow: false,
+                sum: '',
+                payUrl: '',
+                isQuan: false
+            },
             funds: {
                 sShow: false,
                 sum: '',
@@ -513,6 +670,9 @@ export default {
                 tShow: false,
                 cause: '',
                 reCode: ''
+            },
+            uploadData: {
+                type: 'transferAccounts'
             }
         }
     }
@@ -591,6 +751,11 @@ export default {
                         }
                     }
                 }
+                .shou {
+                    li {
+                        width: 100%!important;
+                    }
+                }
             }
         }
     }
@@ -603,9 +768,12 @@ export default {
             width: 110px;
             height: 40px;
         }
-        .tui-btn {
+        .ping-btn {
             margin-left: 40px;
         }
+        .shen-btn {
+            margin: 0 40px;
+        }
     }
 }
 </style>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 380 - 297
src/views/order/components/orderModel.vue


+ 1 - 1
src/views/order/orderDetail.vue

@@ -42,7 +42,7 @@ export default {
             case '大会员-子账号':
                 this.proStatus = '9'
                 break;
-            case '大会员-中标企业预测':
+            case '大会员-补充包':
                 this.proStatus = '10'
                 break;
             case 'VIP订阅':

+ 1 - 1
src/views/order/orderList.vue

@@ -292,7 +292,7 @@ export default {
                 {v: '', n: '全部'},
                 {v: '6', n: '大会员'},
                 {v: '7', n: '大会员-子账号'},
-                {v: '8', n: '大会员-中标企业预测'},
+                {v: '8', n: '大会员-补充包'},
                 {v: '0', n: '超级订阅'},
                 {v: '1', n: '数据报告'},
                 {v: '2', n: '历史数据'},

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно