Kaynağa Gözat

分支合并

lianbingjie 5 yıl önce
ebeveyn
işleme
233a372e9e

+ 5 - 5
.env

@@ -1,10 +1,10 @@
 VUE_APP_ADMIN_TOKEN_NAME = 'admin_token'
 VUE_APP_ADMIN_TOKEN_NAME = 'admin_token'
 VUE_APP_API_URL_PREFIX34 = 'https//cadmin-service-demo.baiy.org/api/admin/'
 VUE_APP_API_URL_PREFIX34 = 'https//cadmin-service-demo.baiy.org/api/admin/'
-VUE_APP_API_URL_PREFIX56 = 'http://192.168.20.214:8001/api/admin/'
-VUE_APP_API_URL_PREFIX12 = 'http://kf-qmx-test.jianyu360.cn/api/admin/'
-VUE_APP_API_URL_PREFIX = 'http://web-qmx_admin.jianyu360.cn/api/admin/'
+VUE_APP_API_URL_PREFIX12 = 'http://192.168.20.231:8001/api/admin/'
+VUE_APP_API_URL_PREFIX = 'http://kf-qmx-test.jianyu360.cn/api/admin/'
+VUE_APP_API_URL_PREFIX56 = 'http://web-qmx_admin.jianyu360.cn/api/admin/'s
 VUE_APP_API_ACTION_NAME = '_action'
 VUE_APP_API_ACTION_NAME = '_action'
 VUE_APP_API_TOKEN_NAME = '_token'
 VUE_APP_API_TOKEN_NAME = '_token'
 VUE_APP_INDEX_URL = '/'
 VUE_APP_INDEX_URL = '/'
-VUE_APP_SITE_NAME = '后台管理'
-VUE_APP_SITE_TITLE_TPL = '{title} - 后台管理'
+VUE_APP_SITE_NAME = '管理平台'
+VUE_APP_SITE_TITLE_TPL = '{title}'

+ 2 - 0
README.md

@@ -21,3 +21,5 @@ npm run serve
 // 打包
 // 打包
 npm run build
 npm run build
 ```
 ```
+v1.1.1
+登录加密

BIN
public/favicon.ico


+ 1 - 5
src/App.vue

@@ -37,10 +37,7 @@
                             </Row>
                             </Row>
                         </Header>
                         </Header>
                         <Content style="margin:15px">
                         <Content style="margin:15px">
-                            <keep-alive> <!-- 缓存页面 -->
-                                <router-view v-if="$route.meta.keepAlive"></router-view>
-                            </keep-alive>
-                            <router-view v-if="!$route.meta.keepAlive"></router-view>
+                            <router-view/>
                         </Content>
                         </Content>
                     </Layout>
                     </Layout>
                 </Layout>
                 </Layout>
@@ -82,7 +79,6 @@
                         menus.push(item)
                         menus.push(item)
                     }
                     }
                 });
                 });
-
                 return menus
                 return menus
             },
             },
             user() {
             user() {

+ 52 - 14
src/components/Login.vue

@@ -16,11 +16,19 @@
                                 <Icon type="ios-lock-outline" slot="prepend"></Icon>
                                 <Icon type="ios-lock-outline" slot="prepend"></Icon>
                             </Input>
                             </Input>
                         </FormItem>
                         </FormItem>
+                        <FormItem prop="code" class="val_code">
+                            <Input size="large" type="text" v-model="form.code" placeholder="验证码">
+                                <Icon type="ios-barcode-outline" slot="prepend"></Icon>
+                            </Input>
+                            <div class="pho_code" @click="valHandler">
+                                <img :src="hosts + imgCode">
+                            </div>
+                        </FormItem>
                         <FormItem class="remember">
                         <FormItem class="remember">
                             <Checkbox v-model="single">&nbsp;记住密码</Checkbox>
                             <Checkbox v-model="single">&nbsp;记住密码</Checkbox>
                         </FormItem>
                         </FormItem>
-                        <FormItem style="width:200px;margin: 80px auto">
-                            <Button size="large" long @click="handleSubmit('form')">登 录</Button>
+                        <FormItem style="width:200px;margin: 40px auto;">
+                            <Button size="large" long @click="handleSubmit('form')" style="font-size:16px">登 录</Button>
                         </FormItem>
                         </FormItem>
                     </Form>
                     </Form>
                 </div>
                 </div>
@@ -31,14 +39,15 @@
 
 
 <script>
 <script>
     import {setTitle} from '../router'
     import {setTitle} from '../router'
-
+    import { config } from '../helper'
     export default {
     export default {
         name: 'Login',
         name: 'Login',
         data() {
         data() {
             return {
             return {
                 form: {
                 form: {
                     username: '',
                     username: '',
-                    password: ''
+                    password: '',
+                    code: ''
                 },
                 },
                 rule: {
                 rule: {
                     username: [
                     username: [
@@ -46,9 +55,14 @@
                     ],
                     ],
                     password: [
                     password: [
                         {required: true, message: '请填写密码', trigger: 'blur'}
                         {required: true, message: '请填写密码', trigger: 'blur'}
+                    ],
+                    code: [
+                        {required: true, message: '请填写验证码', trigger: 'blur'}
                     ]
                     ]
                 },
                 },
-                single: false
+                single: false,
+                imgCode: '/api/admin/?_action=/code',
+                hosts: ''
             }
             }
         },
         },
         created () {
         created () {
@@ -60,25 +74,33 @@
                     this.single = true
                     this.single = true
                 }
                 }
             }
             }
-            let _this = this;
+            let tokens = localStorage.getItem(config('ADMIN_TOKEN_NAME'))
+            if (!tokens) {
+                const htp = window.location.href.split('/')[0]
+                this.hosts = htp + '//' + window.location.host
+                this.valHandler()
+            }
+            let _this = this
             document.onkeydown = function() {
             document.onkeydown = function() {
-                let key = window.event.keyCode;
+                let key = window.event.keyCode
                 if (key == 13) {
                 if (key == 13) {
-                    _this.handleSubmit('form');
+                    _this.handleSubmit('form')
                 }
                 }
             }
             }
         },
         },
         methods: {
         methods: {
+            valHandler() {
+                var num = new Date().getTime()
+                this.imgCode = "/api/admin/?_action=/code&num=" + num
+            },
             handleSubmit(name) {
             handleSubmit(name) {
-                let $this = this;
+                let _this = this;
                 this.$refs[name].validate((valid) => {
                 this.$refs[name].validate((valid) => {
-                    if (!valid) {
-                        return;
-                    }
-                    this.$request("/login").data($this.form).success((r) => {
+                    if (!valid) return
+                    this.$request("/login").data(_this.form).success((r) => {
                         // 存储用户信息
                         // 存储用户信息
                         if (this.single) {
                         if (this.single) {
-                            localStorage.setItem('user',window.btoa(window.encodeURIComponent(JSON.stringify($this.form))))
+                            localStorage.setItem('user',window.btoa(window.encodeURIComponent(JSON.stringify(_this.form))))
                         } else {
                         } else {
                             localStorage.removeItem('user')
                             localStorage.removeItem('user')
                         }
                         }
@@ -93,6 +115,8 @@
                             this.$Notice.error({title: '系统初始化发送异常', desc: r.info, duration: 5});
                             this.$Notice.error({title: '系统初始化发送异常', desc: r.info, duration: 5});
                             this.$store.dispatch('logout');
                             this.$store.dispatch('logout');
                         }).get();
                         }).get();
+                    }).error(() => {
+                        this.valHandler()
                     }).post()
                     }).post()
                 })
                 })
             }
             }
@@ -131,6 +155,20 @@
             .remember {
             .remember {
                 color: #aea79f;
                 color: #aea79f;
             }
             }
+            .val_code {
+                .pho_code {
+                    position: absolute;
+                    right: 1px;
+                    top: 2px;
+                    z-index: 9;
+                    cursor: pointer;
+                    img {
+                        width: 100px;
+                        height: 34px;
+                        border-radius: 0 4px 4px 0;
+                    }
+                }
+            }
         }
         }
     }
     }
 </style>
 </style>

+ 46 - 18
src/components/userSetting.vue

@@ -1,17 +1,17 @@
 <template>
 <template>
-  <Modal v-model="modelShow" title="用户设置" :width="500">
+  <Modal v-model="modelShow" title="用户设置 - 修改信息" :width="500">
     <Form :label-width="80">
     <Form :label-width="80">
-      <!-- <FormItem label="头像">
-        <img-load></img-load>
-      </FormItem> -->
       <FormItem label="用户名">
       <FormItem label="用户名">
-        <Input v-model="current.username" type="text"></Input>
+        <Input v-model="current.username" type="text"/>
       </FormItem>
       </FormItem>
-      <FormItem label="密码">
-        <Input v-model="current.password" type="password"></Input>
+      <FormItem label="原密码">
+        <Input type="password" password v-model="current.oldPassword" />
+      </FormItem>
+      <FormItem label="新密码">
+        <Input v-model="current.password" type="password" password/>
       </FormItem>
       </FormItem>
       <FormItem label="重复密码">
       <FormItem label="重复密码">
-        <Input v-model="current.repeatPassword" type="password"></Input>
+        <Input v-model="current.repeatPassword" type="password" password/>
       </FormItem>
       </FormItem>
     </Form>
     </Form>
     <div slot="footer">
     <div slot="footer">
@@ -21,17 +21,14 @@
 </template>
 </template>
 
 
 <script>
 <script>
-// import imgLoad from './uploadFile';
 export default {
 export default {
     name: 'userSetting',
     name: 'userSetting',
-    components: {
-      // imgLoad
-    },
     data () {
     data () {
         return {
         return {
             modelShow: false,
             modelShow: false,
             current: {
             current: {
                 username: '',
                 username: '',
+                oldPassword: '',
                 password: '',
                 password: '',
                 repeatPassword: '',
                 repeatPassword: '',
             },
             },
@@ -39,16 +36,47 @@ export default {
     },
     },
     methods: {
     methods: {
         save () {
         save () {
-            this.$request('/current/user/setting').data(this.current).showSuccessTip().success(() => {
-                this.modelShow = false
-                this.$request("/load").success((r) => {
-                    this.$store.dispatch('initialize', r.data)
-                }).get()
-            }).post()
+          if (this.current.username == '') {
+              this.$Notice.error({
+                  title: '错误提示',
+                  desc: "用户名不能为空",
+                  duration: 3
+              })
+              return
+          }
+          if (this.current.oldPassword == '') {
+              this.$Notice.error({
+                  title: '错误提示',
+                  desc: "原密码不能为空",
+                  duration: 3
+              })
+              return
+          }
+          if (this.current.password == '') {
+              this.$Notice.error({
+                  title: '错误提示',
+                  desc: "新密码不能为空",
+                  duration: 3
+              })
+              return
+          }
+          if (this.current.repeatPassword == '') {
+              this.$Notice.error({
+                  title: '错误提示',
+                  desc: "重复密码不能为空",
+                  duration: 3
+              })
+              return
+          }
+          this.$request('/current/user/setting').data(this.current).success(() => {
+              this.modelShow = false
+              this.$store.dispatch('logout')
+          }).post()
         },
         },
         show () {
         show () {
             this.current = {
             this.current = {
                 username: '',
                 username: '',
+                oldPassword: '',
                 password: '',
                 password: '',
                 repeatPassword: '',
                 repeatPassword: '',
             }
             }

+ 1 - 1
src/store/admin.js

@@ -88,7 +88,7 @@ export default {
             localStorage.removeItem(config('ADMIN_TOKEN_NAME'))
             localStorage.removeItem(config('ADMIN_TOKEN_NAME'))
             commit('setAdminUser', {})
             commit('setAdminUser', {})
             commit('setAdminMenu', [])
             commit('setAdminMenu', [])
-            const htp = window.location.href.split('/')[0]// 修改路由链接
+            const htp = window.location.href.split('/')[0]
             window.location.href = htp + '//' + window.location.host
             window.location.href = htp + '//' + window.location.host
         },
         },
         login (context, { token }) {
         login (context, { token }) {

+ 21 - 19
src/views/order/components/details.vue

@@ -18,6 +18,7 @@
                 <div class="classfity">
                 <div class="classfity">
                     <!-- 线上课程 -->
                     <!-- 线上课程 -->
                     <span>课程名称: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>{{strCourse.s_name?strCourse.s_name:'--'}}</i></span>
                     <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.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>
                     <!-- 线下课程(招投标课程) -->
                     <!-- 线下课程(招投标课程) -->
@@ -52,9 +53,10 @@
                     <span>筛选日期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book.startime}} - {{book.endtime}}</i></span>
                     <span>筛选日期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book.startime}} - {{book.endtime}}</i></span>
                     <span>区域: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>{{String(book.area) || '--'}}</i></span>
                     <span>区域: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>{{String(book.area) || '--'}}</i></span>
                     <span>行业: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>{{String(book.industry) || '--'}}</i></span>
                     <span>行业: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>{{String(book.industry) || '--'}}</i></span>
-                    <span>关键词: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>{{String(book.keywordsArr) || '--'}}</i></span>
+                    <span>关键词:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>{{String(book.keywordsArr) || '--'}}</i></span>
                     <span>金额: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                     <span>金额: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-                        <i v-if="book">{{book.minprice || 0}}万元 - {{book.maxprice || 0}}万元</i>
+                        <i v-if="book.minprice && book.maxprice">{{book.minprice || ''}}万元 - {{book.maxprice || ''}}万元</i>
+                        <i v-else>--</i>
                     </span>
                     </span>
                     <span>信息类型: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book.subtype || '--'}}</i></span>
                     <span>信息类型: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book.subtype || '--'}}</i></span>
                     <span>采购单位: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{String(book.buyer) || '--'}}</i></span>
                     <span>采购单位: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{String(book.buyer) || '--'}}</i></span>
@@ -62,7 +64,7 @@
                     <span>数据规格: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.data_spec || '--'}}</i></span>
                     <span>数据规格: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.data_spec || '--'}}</i></span>
                     <span>数据数量: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.data_count}}条</i></span>
                     <span>数据数量: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.data_count}}条</i></span>
                     <span>邮箱地址: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.user_mail || '--'}}</i></span>
                     <span>邮箱地址: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.user_mail || '--'}}</i></span>
-                    <span>手机号: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.user_phone || '--'}}</i></span>
+                    <span>手机号:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="orDetails">{{orDetails.user_phone || '--'}}</i></span>
                     <span>下载链接: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                     <span>下载链接: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                         <i v-if="orDetails">
                         <i v-if="orDetails">
                             <a :href="orDetails?orDetails.download_url:''" v-if="orDetails.download_url">点击下载</a>
                             <a :href="orDetails?orDetails.download_url:''" v-if="orDetails.download_url">点击下载</a>
@@ -91,13 +93,13 @@
             <div class="cont">
             <div class="cont">
                 <div class="tit">管理信息</div>
                 <div class="tit">管理信息</div>
                 <div class="classfity">
                 <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;<i v-if="book">--</i></span>
-                    <span>手机号: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">--</i></span>
-                    <span>使用产品人数: &nbsp;<i v-if="book">{{book?book.personnum:'--'}}</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.cycle:'--'}}年</i></span>
-                    <span>有效周期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">--</i></span>
+                    <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;<i v-if="book"></i></span>
+                    <span>手机号: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book"></i></span> -->
+                    <span>使用产品人数: &nbsp;<i v-if="book">{{book?book.personnum:''}}</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book">{{book?book.cycle:''}}年</i></span>
+                    <!-- <span>有效周期: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="book"></i></span> -->
                 </div>
                 </div>
             </div>
             </div>
             <Divider />
             <Divider />
@@ -116,7 +118,7 @@
                     <span v-if="orderType == 1">实付数量: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                     <span v-if="orderType == 1">实付数量: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                         <i v-if="orDetails">{{orDetails.original_price?orDetails.original_price:'--'}}</i>
                         <i v-if="orDetails">{{orDetails.original_price?orDetails.original_price:'--'}}</i>
                     </span><!-- 线下课程 -->
                     </span><!-- 线下课程 -->
-                    <span v-if="orderType == 8">实付金额: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                    <span>实付金额: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                         <i v-if="orDetails">{{orDetails.pay_money?('¥'+orDetails.pay_money/100).toLocaleString('en-US'):'--'}}</i>
                         <i v-if="orDetails">{{orDetails.pay_money?('¥'+orDetails.pay_money/100).toLocaleString('en-US'):'--'}}</i>
                     </span><!-- VIP订阅 -->
                     </span><!-- VIP订阅 -->
                     <span v-if="orderType == 1">支付状态: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                     <span v-if="orderType == 1">支付状态: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -133,9 +135,9 @@
         <div class="infor-card" v-if="orderType == 1">
         <div class="infor-card" v-if="orderType == 1">
             <div class="cont">
             <div class="cont">
                 <div class="tit">优惠信息</div>
                 <div class="tit">优惠信息</div>
-                <div class="classfity" v-if="strCourse.s_discountPlan">
-                    <span>每单立减: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="strCourse">¥{{strCourse.s_discountPlan[0].price || 0}}</i></span>
-                    <span>多人立减: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="strCourse">¥{{strCourse.discountMoney || 0}}</i></span>
+                <div class="classfity">
+                    <span>每单立减: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="strCourse">¥{{strCourse.s_discountPlan?strCourse.s_discountPlan[0].price:0}}</i></span>
+                    <span>多人立减: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i v-if="strCourse">¥{{strCourse.discountMoney?strCourse.discountMoney:0}}</i></span>
                 </div>
                 </div>
             </div>
             </div>
             <Divider />
             <Divider />
@@ -157,7 +159,7 @@
                         <i v-else>--</i>
                         <i v-else>--</i>
                     </span>
                     </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>
                     <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>
-                    <span v-if="orDetails.invoice?orDetails.invoice.invoice_rise=='单位':'' || orDetails.invoice?orDetails.invoice.invoice_type=='单位':''">纳税人识别号: &nbsp;<i v-if="orDetails">{{orDetails.invoice?orDetails.invoice.taxpayer_identnum || orDetails.invoice.apply_tinumber:'--'}}</i></span>
+                    <span v-if="orDetails.invoice?orDetails.invoice.invoice_rise=='单位' || orDetails.invoice.invoice_type=='单位':''">纳税人识别号: &nbsp;<i v-if="orDetails">{{orDetails.invoice?orDetails.invoice.taxpayer_identnum || orDetails.invoice.apply_tinumber:'--'}}</i></span>
                     <span>邮箱地址: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                     <span>邮箱地址: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                         <i v-if="orDetails">{{orDetails.invoice?((orDetails.invoice.mail?orDetails.invoice.mail:'--') || (orDetails.invoice.email?orDetails.invoice.email:'--')):'--'}}</i>
                         <i v-if="orDetails">{{orDetails.invoice?((orDetails.invoice.mail?orDetails.invoice.mail:'--') || (orDetails.invoice.email?orDetails.invoice.email:'--')):'--'}}</i>
                     </span>
                     </span>
@@ -169,7 +171,7 @@
                     </span>
                     </span>
                     <span>发票查看: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                     <span>发票查看: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                         <i v-if="orDetails && (orDetails.applybill_status == '已申请' || orDetails.applybill_status == 1)">
                         <i v-if="orDetails && (orDetails.applybill_status == '已申请' || orDetails.applybill_status == 1)">
-                            <a :href="orDetails.invoice?orDetails.invoice.url:'*'" target="_blank" v-if="orDetails.invoice.url">点击查看</a>
+                            <a :href="orDetails.invoice?orDetails.invoice.url:'*'" target="_blank" v-if="orDetails.invoice">{{orDetails.invoice.url?"点击查看":'--'}}</a>
                             <i v-else>--</i>
                             <i v-else>--</i>
                         </i>
                         </i>
                         <i v-else>--</i>
                         <i v-else>--</i>
@@ -210,7 +212,7 @@ export default {
         }).get()
         }).get()
     },
     },
     filters: {
     filters: {
-        invoiceStas (val) {
+        invoiceStas(val) {
             if (val == -2) {
             if (val == -2) {
                 return '已冲红'
                 return '已冲红'
             } else if (val == 0) {
             } else if (val == 0) {
@@ -219,7 +221,7 @@ export default {
                 return '已申请'
                 return '已申请'
             }
             }
         },
         },
-        invoiceColor (val) {
+        invoiceColor(val) {
             if (val == -2) {
             if (val == -2) {
                 return 'color1'
                 return 'color1'
             } else if (val == 0) {
             } else if (val == 0) {
@@ -228,7 +230,7 @@ export default {
                 return 'color3'
                 return 'color3'
             }
             }
         },
         },
-        applyClor (val) {
+        applyClor(val) {
             if (val == '已冲红') {
             if (val == '已冲红') {
                 return 'color1'
                 return 'color1'
             } else if (val == '未申请') {
             } else if (val == '未申请') {

+ 224 - 6
src/views/order/orderList.vue

@@ -76,8 +76,95 @@
                 ></DatePicker>
                 ></DatePicker>
             </FormItem>
             </FormItem>
         </template>
         </template>
-        <template slot="filterRight">
-            <Input suffix="md-search" type="text" size="large" v-model="sear.keyword" placeholder="搜索订单编号" clearable class="ser-ipt"/>
+        <template slot="filterContent" v-if="flag">
+            <Select size="large" placeholder="产品类型" clearable v-model="filter.productType" style="width:100px;margin:0 10px 10px 0">
+                <Option v-for="item in proType" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+            <Select size="large" placeholder="订单类型" clearable v-model="filter.orderType" style="width:100px;margin:0 10px 10px 0">
+                <Option v-for="item in orderTips" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+            <Select size="large" placeholder="订单状态" clearable v-model="filter.orderStatus" style="width:100px;margin:0 10px 10px 0">
+                <Option v-for="item in orderSta" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+            <Select size="large" placeholder="发票状态" clearable v-model="filter.invoiceStatus" style="width:100px;margin:0 10px 10px 0">
+                <Option v-for="item in invoiceSta" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+            <Select size="large" placeholder="付款方式" clearable v-model="filter.payWay" style="width:100px;margin:0 10px 10px 0">
+                <Option v-for="item in payStatus" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+            <Input 
+                type="text" 
+                size="large" 
+                v-model="filter.payMoneyMin" 
+                placeholder="最小金额" 
+                clearable
+                prefix="logo-yen"
+                style="width:90px;height:36px:margin-bottom:10px" 
+            ></Input>
+            <Input 
+                type="text" 
+                size="large" 
+                v-model="filter.payMoneyMax" 
+                placeholder="最大金额" 
+                clearable
+                prefix="logo-yen"
+                style="width:90px;height:36px;margin: 0 10px 10px 2px;" 
+            />
+            <DatePicker 
+                type="datetime" 
+                size="large" 
+                v-model="dataVal1"
+                placeholder="起始时间" 
+                style="width: 172px" 
+                :options="options1"
+                @on-change="handleChange1"
+                @on-ok="confirmed1"
+                @on-open-change="opened1"
+            ></DatePicker>
+            <DatePicker 
+                type="datetime" 
+                size="large" 
+                v-model="dataVal2"
+                placeholder="截止时间" 
+                style="width: 172px;margin-left:2px;margin-right:10px" 
+                :options="options2"
+                @on-change="handleChange2"
+                @on-ok="confirmed2"
+                @on-open-change="opened2"
+            ></DatePicker><br/>
+            <Select 
+                size="large" 
+                placeholder="付费类型" 
+                clearable 
+                v-model="filter.payType" 
+                style="width:100px;margin:0 10px 10px 0"
+                v-show="select1"
+            >
+                <Option v-for="item in payCont" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+            <Select 
+                size="large" 
+                placeholder="数据规格" 
+                clearable 
+                v-model="filter.dataType" 
+                style="width:100px;margin:0 10px 10px 0"
+                v-show="select2"
+            >
+                <Option v-for="item in dataCont" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select>
+            <Select 
+                size="large" 
+                placeholder="发票开具方" 
+                clearable 
+                v-model="filter.invoiceType" 
+                style="width:110px;margin:0 10px 10px 0"
+                v-show="select3"
+            >
+                <Option v-for="item in invoicePerson" :value="item.v" :key="item.v">{{ item.n }}</Option>
+            </Select><br v-show="select1 || select2 || select3"/>
+        </template>
+        <template slot="exportData" v-if="flag">
+            <Button type="primary" size="large" @click="orderExport" style="margin: 0 0 10px 10px">导出结果</Button>
         </template>
         </template>
         <Table 
         <Table 
             size="large" 
             size="large" 
@@ -115,7 +202,7 @@
             </template>
             </template>
         </Table>
         </Table>
         <template slot="options">
         <template slot="options">
-            <div style="color:#d7d7d7;font-size:14px">共计{{list.total}}个订单,实付金额¥{{list.money}}</div>
+            <div style="color:#d7d7d7;font-size:14px">共计{{list.total}}个订单,实付金额¥{{list.money>=0?list.money:0}}</div>
         </template>
         </template>
     </table-lists>
     </table-lists>
     <Modal title="退款原因" v-model="models.tShow">
     <Modal title="退款原因" v-model="models.tShow">
@@ -129,7 +216,50 @@
 <script>
 <script>
 import { ChangeDate,ChangeDate2 } from '../../assets/js/date.js'
 import { ChangeDate,ChangeDate2 } from '../../assets/js/date.js'
 export default {
 export default {
+    watch: {
+        'filter.productType': {
+            handler(newVal) {
+                if (newVal == '0') {
+                    this.select1 = true
+                    this.select2 = false
+                    this.select3 = false
+                    this.filter.dataType = ''
+                    this.filter.invoiceType = ''
+                } else if (newVal == '2') {
+                    this.select2 = true
+                    this.select1 = false
+                    this.select3 = false
+                    this.filter.payType = ''
+                    this.filter.invoiceType = ''
+                } else if (newVal == '4') {
+                    this.select3 = true
+                    this.select1 = false
+                    this.select2 = false
+                    this.filter.dataType = ''
+                    this.filter.payType = ''
+                } else {
+                    this.select1 = false
+                    this.select2 = false
+                    this.select3 = false
+                    this.filter.payType = ''
+                    this.filter.dataType = ''
+                    this.filter.invoiceType = ''
+                }
+            },
+            deep: true
+        }
+    },
     methods: {
     methods: {
+        screened () {
+            this.flag = !this.flag
+            if (this.flag) {
+                this.filterType = 1
+                this.filterReset = 1
+            } else {
+                this.filterType = 0
+                this.filterReset = 0
+            }
+        },
         load (val) {
         load (val) {
             this.loading = val
             this.loading = val
         },
         },
@@ -144,6 +274,10 @@ export default {
                 this.filter.payMoneyMax = ''
                 this.filter.payMoneyMax = ''
                 this.filter.orderTimeStart = ''
                 this.filter.orderTimeStart = ''
                 this.filter.orderTimeEnd = ''
                 this.filter.orderTimeEnd = ''
+                this.filter.payWay = ''
+                this.filter.payType = ''
+                this.filter.dataType = ''
+                this.filter.invoiceType = ''
                 this.dataVal1 = ''
                 this.dataVal1 = ''
                 this.dataVal2 = ''
                 this.dataVal2 = ''
             }
             }
@@ -198,6 +332,47 @@ export default {
             this.models.tShow = true
             this.models.tShow = true
             this.models.reCode = code
             this.models.reCode = code
         },
         },
+        orderExport() {
+            if (this.list.lists.length == 0) {
+                this.$Notice.warning({
+                    title: '警告提示',
+                    desc: "暂无相应数据",
+                    duration: 5
+                })
+                return
+            }
+            let obj = {
+                productType: this.filter.productType,
+                orderStatus: this.filter.orderStatus,
+                invoiceStatus: this.filter.invoiceStatus,
+                payWay: this.filter.payWay,
+                orderTimeStart: this.filter.orderTimeStart,
+                orderTimeEnd: this.filter.orderTimeEnd,
+                payMoneyMin: this.filter.payMoneyMin,
+                payMoneyMax: this.filter.payMoneyMax,
+                orderType: this.filter.orderType,
+                payType: this.filter.payType,
+                dataType: this.filter.dataType,
+                invoiceType: this.filter.invoiceType
+            }
+            this.$Modal.confirm({
+                title: "确定导出结果吗?",
+                onOk: () => {
+                    this.$request('/order/orderList/exportOrder').data(obj).success((res) => {
+                        if (res.data.path) {
+                            window.location.href = res.data.path
+                            this.reload()
+                        } else {
+                            this.$Notice.warning({
+                                title: '警告提示',
+                                desc: "暂无相应数据",
+                                duration: 5
+                            })
+                        }
+                    }).get()
+                }
+            })
+        },
         subSave () {
         subSave () {
             var curTime = new Date().getTime()
             var curTime = new Date().getTime()
             this.$request('/order/orderList/confirmRefund').data({
             this.$request('/order/orderList/confirmRefund').data({
@@ -250,6 +425,31 @@ export default {
                 {v: '0', n: '未申请'},
                 {v: '0', n: '未申请'},
                 {v: '1', n: '已申请'}
                 {v: '1', n: '已申请'}
             ],
             ],
+            payStatus: [
+                {v: '', n: '全部'},
+                {v: '0', n: '支付宝'},
+                {v: '1', n: '微信'},
+                {v: '2', n: '线下支付'},
+                {v: '3', n: '对公转账'},
+                {v: '4', n: '其它'}
+            ],
+            payCont: [
+                {v: '', n: '全部'},
+                {v: '0', n: '试用'},
+                {v: '1', n: '续费'},
+                {v: '2', n: '升级'},
+                {v: '3', n: '购买'}
+            ],
+            dataCont: [
+                {v: '', n: '全部'},
+                {v: '标准字段包', n: '标准字段包'},
+                {v: '高级字段包', n: '高级字段包'}
+            ],
+            invoicePerson: [
+                {v: '', n: '全部'},
+                {v: '0', n: '汇学网'},
+                {v: '1', n: '王凯精品课'}
+            ],
             filter: {
             filter: {
                 // keyword: '',
                 // keyword: '',
                 productType: '',
                 productType: '',
@@ -260,7 +460,10 @@ export default {
                 orderTimeEnd: '',
                 orderTimeEnd: '',
                 payMoneyMin: '',
                 payMoneyMin: '',
                 payMoneyMax: '',
                 payMoneyMax: '',
-                payStatus: ''
+                payWay: '',
+                payType: '',
+                dataType: '',
+                invoiceType: ''
             },
             },
             sear: {
             sear: {
                 keyword: ''
                 keyword: ''
@@ -290,10 +493,25 @@ export default {
                 {
                 {
                     title: '产品类型',
                     title: '产品类型',
                     key: 'product_type',
                     key: 'product_type',
+                    width: '150',
                     align: 'center',
                     align: 'center',
                     render: (h, {row}) => {
                     render: (h, {row}) => {
                         let words = row.product_type
                         let words = row.product_type
-                        return h('span', words == 'VIP订阅' || words == 'vip订阅' ? '超级订阅' : row.product_type)
+                        let vipType = ''
+                        if (row.vip_type == 0) {
+                            vipType = '(试用)'
+                        } else if (row.vip_type == 1) {
+                            vipType = '(续费)'
+                        } else if (row.vip_type == 2) {
+                            vipType = '(升级)'
+                        } else if (row.vip_type == null) {
+                            if (row.pay_way == "trial") {
+                                vipType = '(试用)'
+                            } else {
+                                vipType = '(购买)'
+                            }
+                        }
+                        return h('span', words == 'VIP订阅' || words == 'vip订阅' ? '超级订阅' + vipType : row.product_type)
                     }
                     }
                 },
                 },
                 {
                 {
@@ -316,7 +534,7 @@ export default {
                     key: 'pay_money',
                     key: 'pay_money',
                     align: 'center',
                     align: 'center',
                     render: (h, {row}) => {
                     render: (h, {row}) => {
-                    return h('span','¥' + parseFloat(row.pay_money?row.pay_money/100:0).toLocaleString('en-US'))
+                        return h('span','¥' + parseFloat(row.pay_money?row.pay_money/100:0).toLocaleString('en-US'))
                     }
                     }
                 },
                 },
                 {
                 {

+ 1 - 1
src/views/sales/partnerDetail.vue

@@ -417,7 +417,7 @@ export default {
             }
             }
             i {
             i {
                 display: inline-block;
                 display: inline-block;
-                width: 70px;
+                width: 60px;
                 color: #70b603;
                 color: #70b603;
                 text-align: right;
                 text-align: right;
             }
             }

+ 3 - 0
src/views/system/auth.vue

@@ -38,6 +38,9 @@
                     <Button size="small" type="error" @click="remove(row)">删除</Button>
                     <Button size="small" type="error" @click="remove(row)">删除</Button>
                 </template>
                 </template>
             </Table>
             </Table>
+            <template slot="options">
+                <div style="color:#d7d7d7;font-size:14px">共计{{list.total}}个权限</div>
+            </template>
         </table-lists>
         </table-lists>
         <Drawer :title="assign.data.name+' 菜单关联'" v-model="assign.show.menu" width="300" :mask-closable="true">
         <Drawer :title="assign.data.name+' 菜单关联'" v-model="assign.show.menu" width="300" :mask-closable="true">
             <AssignMenu v-if="assign.show.menu" :id="assign.data.id" @reload="reload"></AssignMenu>
             <AssignMenu v-if="assign.show.menu" :id="assign.data.id" @reload="reload"></AssignMenu>

+ 0 - 51
src/views/system/order/dataExport.vue

@@ -1,51 +0,0 @@
-<template>
-    <div style="background:#fff;padding:10px">
-        <table-lists ref="tableLists" v-model="list" :filter="filter" :filterType="2" :filterReset="0" requestApi="/system/order/dataExport">
-            <template slot="filterContent">
-                <FormItem>
-                    <Input type="text" v-model="filter.keyword" placeholder="搜索关键词"/>
-                </FormItem>
-            </template>
-            <Table :columns="columns" :data="list.lists" stripe></Table>
-        </table-lists>
-    </div>
-</template>
-<script>
-export default {
-    data() {
-        return {
-            filter: {
-                keyword: "",
-            },
-            columns: [
-                {
-                    title: '序号',
-                    type: 'ID',
-                    key: 'id',
-                    width: 70,
-                    align: 'center'
-                },
-                {
-                    title: '订单编号',
-                    key: 'order_code',
-                    align: 'center'
-                },
-                {
-                    title: '创建时间',
-                    key: 'create_time',
-                    align: 'center'
-                },
-                {
-                    title: '金额',
-                    key: 'order_money',
-                    align: 'center',
-                    render: (h, {row}) => {
-                        return h('div',(row.order_money/100).toFixed(2))
-                    }
-                }
-            ],
-            list: []
-        }
-    }
-}
-</script>

+ 3 - 0
src/views/system/request.vue

@@ -46,6 +46,9 @@
           <Button size="small" @click="copy(row)">复制</Button>
           <Button size="small" @click="copy(row)">复制</Button>
         </template>
         </template>
       </Table>
       </Table>
+      <template slot="options">
+          <div style="color:#d7d7d7;font-size:14px">共计{{list.total}}个请求</div>
+      </template>
     </table-lists>
     </table-lists>
     <Modal v-model="current.show" :title="current.data['id'] ? '编辑' : '添加'" :width="800">
     <Modal v-model="current.show" :title="current.data['id'] ? '编辑' : '添加'" :width="800">
       <Form :label-width="80">
       <Form :label-width="80">

+ 3 - 0
src/views/system/user.vue

@@ -43,6 +43,9 @@
                     <!-- <Button size="small" type="error" @click="remove(row)" :disabled="!list.delAuth">删除</Button> -->
                     <!-- <Button size="small" type="error" @click="remove(row)" :disabled="!list.delAuth">删除</Button> -->
                 </template>
                 </template>
             </Table>
             </Table>
+            <template slot="options">
+                <div style="color:#d7d7d7;font-size:14px">共计{{list.total}}位用户</div>
+            </template>
         </table-lists>
         </table-lists>
         <Modal v-model="current.show" :title="current.data['id'] ? '编辑' : '添加'" :width="500">
         <Modal v-model="current.show" :title="current.data['id'] ? '编辑' : '添加'" :width="500">
             <Form :label-width="80">
             <Form :label-width="80">

+ 3 - 1
src/views/system/userGroup.vue

@@ -36,9 +36,11 @@
                 <template slot-scope="{ row }" slot="op">
                 <template slot-scope="{ row }" slot="op">
                     <Button size="small" type="primary" @click="edit(row)" style="margin-right: 5px" v-if="list.updateAuth">编辑</Button>
                     <Button size="small" type="primary" @click="edit(row)" style="margin-right: 5px" v-if="list.updateAuth">编辑</Button>
                     <Button v-if="row.id" size="small" type="error" @click="remove(row)">删除</Button>
                     <Button v-if="row.id" size="small" type="error" @click="remove(row)">删除</Button>
-                    <!-- <Button size="small" type="error" @click="remove(row)" :disabled="!list.delAuth">删除</Button> -->
                 </template>
                 </template>
             </Table>
             </Table>
+            <template slot="options">
+                <div style="color:#d7d7d7;font-size:14px">共计{{list.total}}个用户组</div>
+            </template>
         </table-lists>
         </table-lists>
         <Modal v-model="current.show" :title="current.data['id'] ? '编辑' : '添加'" :width="500">
         <Modal v-model="current.show" :title="current.data['id'] ? '编辑' : '添加'" :width="500">
             <Form :label-width="80">
             <Form :label-width="80">