Просмотр исходного кода

【模版目录】更新管理端页面源码

吴昊天 3 лет назад
Родитель
Сommit
e179cc2688

+ 1 - 1
template/admin/README.md

@@ -270,7 +270,7 @@ $ cd admin
 $ npm install
 
 # 启动项目(本地开发环境)
-$ npm run serve
+$ npm run dev
 
 # 打包项目
 $ npm run build

+ 8 - 0
template/admin/package-lock.json

@@ -19560,6 +19560,14 @@
       "resolved": "https://registry.npmjs.org/vue-awesome-swiper/-/vue-awesome-swiper-4.1.1.tgz",
       "integrity": "sha512-50um10t6N+lJaORkpwSi1wWuMmBI1sgFc9Znsi5oUykw2cO5DzLaBHcO2JNX21R+Ue4TGoIJDhhxjBHtkFrTEQ=="
     },
+    "vue-clipboard2": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmmirror.com/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz",
+      "integrity": "sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==",
+      "requires": {
+        "clipboard": "^2.0.0"
+      }
+    },
     "vue-codemirror": {
       "version": "4.0.6",
       "resolved": "https://registry.npmjs.org/vue-codemirror/-/vue-codemirror-4.0.6.tgz",

+ 1 - 0
template/admin/package.json

@@ -56,6 +56,7 @@
     "view-design": "^4.7.0",
     "vue": "^2.5.10",
     "vue-awesome-swiper": "^4.1.1",
+    "vue-clipboard2": "^0.3.3",
     "vue-codemirror": "^4.0.6",
     "vue-happy-scroll": "^2.1.1",
     "vue-i18n": "^7.8.0",

+ 1 - 1
template/admin/src/components/main/main.less

@@ -28,7 +28,7 @@
   }
   .tag-nav-wrapper {
     padding: 0;
-    height: 40px;
+    height: 42px;
     background: #f0f0f0;
   }
   .content-wrapper {

+ 3 - 1
template/admin/src/components/mobileConfigRightDiy/c_page_ueditor.vue

@@ -29,7 +29,9 @@ export default {
   created() {
     this.defaults = this.configObj;
     this.configData = this.configObj[this.configNme];
-    this.content = this.configData.val;
+    this.$nextTick((e) => {
+      this.content = this.configData.val;
+    });
   },
   watch: {
     configObj: {

+ 4 - 0
template/admin/src/main.js

@@ -66,7 +66,11 @@ import timeOptions from '@/libs/timeOptions';
 import scroll from '@/libs/loading';
 import * as tools from '@/libs/tools';
 import VueTreeList from 'vue-tree-list';
+// 复制到粘贴板插件
+import VueClipboard from 'vue-clipboard2'
 
+VueClipboard.config.copyText = true
+Vue.use(VueClipboard)
 Vue.use(VueTreeList);
 // 版本升级
 import upgrade from '@/components/upGrade/index.vue';

+ 10 - 10
template/admin/src/pages/setting/devise/diyIndex.vue

@@ -82,13 +82,7 @@
               </div>
               <div class="lable">
                 <p class="txt">例如:{{ item.example }}</p>
-                <Button
-                  size="small"
-                  v-clipboard:copy="item.example"
-                  v-clipboard:success="onCopy"
-                  v-clipboard:error="onError"
-                  >复制
-                </Button>
+                <Button size="small" @click="onCopy(item.example)">复制 </Button>
               </div>
             </div>
           </div>
@@ -348,7 +342,7 @@ export default {
     };
     this.$nextTick(() => {
       this.$store.commit('mobildConfig/FOOTER', {
-        title: '是否自定义',
+        title: '专题页是否显示',
         name: imgList,
       });
       this.arraySort();
@@ -387,8 +381,14 @@ export default {
       if (e.relatedContext.element.name == 'nav_bar') return false;
       return true;
     },
-    onCopy() {
-      this.$Message.success('复制成功');
+    onCopy(copyData) {
+      this.$copyText(copyData)
+        .then((message) => {
+          this.$Message.success('复制成功');
+        })
+        .catch((err) => {
+          this.$Message.error('复制失败');
+        });
     },
     onError() {
       this.$Message.error('复制失败');

+ 9 - 9
template/admin/src/pages/setting/devise/index.vue

@@ -61,13 +61,7 @@
               </div>
               <div class="lable">
                 <p class="txt">例如:{{ item.example }}</p>
-                <Button
-                  size="small"
-                  v-clipboard:copy="item.example"
-                  v-clipboard:success="onCopy"
-                  v-clipboard:error="onError"
-                  >复制
-                </Button>
+                <Button size="small" @click="onCopy(item.example)">复制 </Button>
               </div>
             </div>
           </div>
@@ -328,8 +322,14 @@ export default {
       if (e.relatedContext.element.name == 'nav_bar') return false;
       return true;
     },
-    onCopy() {
-      this.$Message.success('复制成功');
+    onCopy(copyData) {
+      this.$copyText(copyData)
+        .then((message) => {
+          this.$Message.success('复制成功');
+        })
+        .catch((err) => {
+          this.$Message.error('复制失败');
+        });
     },
     onError() {
       this.$Message.error('复制失败');

+ 11 - 5
template/admin/src/pages/setting/devise/links.vue

@@ -5,7 +5,7 @@
       <div class="txt"><span>地址:</span>{{ item.url }}</div>
       <div class="txt" v-if="item.parameter">
         <p><span>参数:</span></p>
-        <span v-for="(val, key, index) in item.parameter"
+        <span v-for="(val, key, index) in item.parameter" :key="index"
           >{{ key + '=' + val }}<i style="font-style: normal">&</i></span
         >
       </div>
@@ -14,7 +14,7 @@
         <!--<Button size="small" style="margin-left: 10px" v-clipboard:copy="item.example"-->
         <!--v-clipboard:success="onCopy"-->
         <!--v-clipboard:error="onError">复制</Button>-->
-        <span class="copy copy-data" :data-clipboard-text="item.example">复制</span>
+        <span class="copy copy-data" @click="onCopy(item.example)">复制</span>
       </div>
     </div>
   </div>
@@ -57,9 +57,15 @@ export default {
     });
   },
   methods: {
-    // onCopy () {
-    //     this.$Message.success('复制成功');
-    // },
+    onCopy(copyData) {
+      this.$copyText(copyData)
+        .then((message) => {
+          this.$Message.success('复制成功');
+        })
+        .catch((err) => {
+          this.$Message.error('复制失败');
+        });
+    },
     // onError () {
     //     this.$Message.error('复制成功');
     // }

+ 10 - 4
template/admin/src/pages/setting/devisePage/links.vue

@@ -13,7 +13,7 @@
         <!--<Button size="small" style="margin-left: 10px" v-clipboard:copy="item.example"-->
         <!--v-clipboard:success="onCopy"-->
         <!--v-clipboard:error="onError">复制</Button>-->
-        <span class="copy copy-data" :data-clipboard-text="item.example">复制</span>
+        <span class="copy copy-data" @click="onCopy(item.example)">复制</span>
       </div>
     </div>
   </div>
@@ -61,9 +61,15 @@ export default {
     this.clipboard.destroy();
   },
   methods: {
-    // onCopy () {
-    //     this.$Message.success('复制成功');
-    // },
+    onCopy(copyData) {
+      this.$copyText(copyData)
+        .then((message) => {
+          this.$Message.success('复制成功');
+        })
+        .catch((err) => {
+          this.$Message.error('复制失败');
+        });
+    },
     // onError () {
     //     this.$Message.error('复制成功');
     // }

+ 7 - 1
template/admin/src/pages/setting/multiLanguage/list.vue

@@ -21,6 +21,12 @@
             <img v-lazy="row.icon" />
           </div>
         </template>
+        <template slot-scope="{ row, index }" slot="language_name">
+          <div class="acea-row row-middle">
+            <span>{{row.language_name}}</span>
+            <Tag class="ml10" color="default" v-if="row.is_default">默认</Tag>
+          </div>
+        </template>
         <template slot-scope="{ row, index }" slot="status">
           <i-switch
             v-model="row.status"
@@ -70,7 +76,7 @@ export default {
         },
         {
           title: '语言名称',
-          key: 'language_name',
+          slot: 'language_name',
           minWidth: 200,
         },
         {

+ 79 - 58
template/admin/src/pages/setting/systemMenus/components/menusFrom.vue

@@ -12,7 +12,7 @@
       @on-cancel="handleReset"
       @on-visible-change="visible"
     >
-      <Form ref="formValidate" :model="formValidate" :label-width="110" :rules="ruleValidate" @submit.native.prevent>
+      <Form ref="formValidate" :model="formValidate" :label-width="110" @submit.native.prevent>
         <Row type="flex" :gutter="24">
           <Col span="24">
             <FormItem label="类型:">
@@ -31,7 +31,7 @@
               <div class="add">
                 <Input v-model="formValidate.menu_name" :placeholder="!authType ? '请输入接口名称' : '请输入按钮名称'">
                 </Input>
-                <Button class="ml10 df" v-show="!authType" @click="getRuleList()" icon="ios-apps"> </Button>
+                <Button class="ml10 df" v-show="!authType" @click="getRuleList()" icon="ios-apps"></Button>
               </div>
             </FormItem>
           </Col>
@@ -179,40 +179,35 @@
 </template>
 
 <script>
-import { addMenusApi, addMenus, getRuleList } from '@/api/systemMenus';
-import icon from '@/utils/icon';
+import { addMenusApi, addMenus, getRuleList } from "@/api/systemMenus";
+import icon from "@/utils/icon";
+
 export default {
-  name: 'menusFrom',
+  name: "menusFrom",
   props: {
     formValidate: {
       type: Object,
-      default: null,
+      default: null
     },
     titleFrom: {
       type: String,
-      default: '',
-    },
+      default: ""
+    }
   },
   data() {
     return {
       arrs: [],
-      searchRule: '',
-      iconVal: '',
+      searchRule: "",
+      iconVal: "",
       grid: {
         xl: 12,
         lg: 12,
         md: 12,
         sm: 24,
-        xs: 24,
+        xs: 24
       },
       modals: false,
       modal12: false,
-      ruleValidate: {
-        menu_name: [{ required: true, message: '请输入按钮名称', trigger: 'blur' }],
-        menu_path: [{ required: true, message: '请输入路由地址', trigger: 'blur' }],
-        methods: [{ required: true, message: '请选择接口请求方式', trigger: 'blur' }],
-        api_url: [{ required: true, message: '请填写接口请求地址', trigger: 'blur' }],
-      },
       FromData: [],
       valids: false,
       list2: [],
@@ -220,27 +215,28 @@ export default {
       authType: true,
       search: icon,
       ruleModal: false,
-      ruleList: [],
+      ruleList: []
     };
   },
   watch: {
-    'formValidate.header': function (n) {
+    "formValidate.header": function(n) {
       this.formValidate.is_header = n ? 1 : 0;
     },
-    'formValidate.auth_type': function (n) {
+    "formValidate.auth_type": function(n) {
       if (n === undefined) {
         n = 1;
       }
       this.authType = n === 1;
     },
-    'formValidate.data': function (n) {},
+    "formValidate.data": function(n) {
+    }
   },
   computed: {
     /* eslint-disable */
     optionsList() {
       let a = [];
       this.FromData.map((item) => {
-        if ('pid' === item.field) {
+        if ("pid" === item.field) {
           a = item.options;
         }
       });
@@ -249,7 +245,7 @@ export default {
     headerOptionsList() {
       let a = [];
       this.FromData.map((item) => {
-        if ('header' === item.field) {
+        if ("header" === item.field) {
           a = item.options;
         }
       });
@@ -258,7 +254,7 @@ export default {
     optionsListmodule() {
       let a = [];
       this.FromData.map((item) => {
-        if ('module' === item.field) {
+        if ("module" === item.field) {
           a = item.options;
         }
       });
@@ -267,7 +263,7 @@ export default {
     optionsRadio() {
       let a = [];
       this.FromData.map((item) => {
-        if ('auth_type' === item.field) {
+        if ("auth_type" === item.field) {
           a = item.options;
         }
       });
@@ -276,7 +272,7 @@ export default {
     isheaderRadio() {
       let a = [];
       this.FromData.map((item) => {
-        if ('is_header' === item.field) {
+        if ("is_header" === item.field) {
           a = item.options;
         }
       });
@@ -285,7 +281,7 @@ export default {
     isShowRadio() {
       let a = [];
       this.FromData.map((item) => {
-        if ('is_show' === item.field) {
+        if ("is_show" === item.field) {
           a = item.options;
         }
       });
@@ -294,7 +290,7 @@ export default {
     isShowPathRadio() {
       let a = [];
       this.FromData.map((item) => {
-        if ('is_show_path' === item.field) {
+        if ("is_show_path" === item.field) {
           a = item.options;
         }
       });
@@ -303,12 +299,12 @@ export default {
     menuList() {
       let a = [];
       this.FromData.map((item) => {
-        if ('menu_list' === item.field) {
+        if ("menu_list" === item.field) {
           a = item.props.data;
         }
       });
       return a;
-    },
+    }
   },
   methods: {
     // 获取权限列表
@@ -321,7 +317,7 @@ export default {
     modalchange(type) {
       if (!type) {
         this.arrs = [];
-        this.ruleModal = '';
+        this.ruleModal = "";
         this.ruleModal = false;
       }
     },
@@ -331,7 +327,7 @@ export default {
       }
     },
     selectRule(data) {
-      this.$emit('selectRule', data);
+      this.$emit("selectRule", data);
       this.$nextTick((e) => {
         this.ruleModal = false;
       });
@@ -363,13 +359,13 @@ export default {
       }
     },
     init() {
-      this.searchRule = '';
+      this.searchRule = "";
       this.arrs = [];
     },
     handleCreate1(val) {
       this.headerOptionsList.push({
         value: val,
-        label: val,
+        label: val
       });
     },
     // 获取新增表单
@@ -397,40 +393,53 @@ export default {
         this.formValidate.pid = this.formValidate.path[length - 1] || 0;
       }
       let data = {
-        url: this.formValidate.id ? `/setting/menus/${this.formValidate.id}` : '/setting/menus',
-        method: this.formValidate.id ? 'put' : 'post',
-        datas: this.formValidate,
+        url: this.formValidate.id ? `/setting/menus/${this.formValidate.id}` : "/setting/menus",
+        method: this.formValidate.id ? "put" : "post",
+        datas: this.formValidate
       };
-      this.$refs[name].validate((valid) => {
-        if (valid) {
-          this.valids = true;
-          addMenusApi(data)
-            .then(async (res) => {
-              this.$Message.success(res.msg);
-              this.modals = false;
-              this.$emit('getList');
-              this.getAddFrom();
-              this.$store.dispatch('admin/menus/getMenusNavList');
-            })
-            .catch((res) => {
-              this.$Message.error(res.msg);
-            });
-        } else {
-          if (!this.formValidate.menu_name) return this.$Message.error('请添加按钮名称!');
+      if (this.authType) {
+        if (!this.formValidate.menu_name) {
+          return this.$Message.warning("请填写按钮名称");
         }
-      });
+        if (!this.formValidate.menu_path) {
+          return this.$Message.warning("请填写路由地址");
+        }
+      } else {
+        if (!this.formValidate.menu_name) {
+          return this.$Message.warning("请填写接口名称");
+        }
+        if (!this.formValidate.methods) {
+          return this.$Message.warning("请选择请求方式");
+        }
+        if (!this.formValidate.api_url) {
+          return this.$Message.warning("请选择接口地址");
+        }
+      }
+      this.valids = true;
+      addMenusApi(data)
+        .then(async (res) => {
+          this.$Message.success(res.msg);
+          this.modals = false;
+          this.$emit("getList");
+          this.getAddFrom();
+          this.$store.dispatch("admin/menus/getMenusNavList");
+        })
+        .catch((res) => {
+          this.valids = false;
+          this.$Message.error(res.msg);
+        });
     },
     handleReset() {
       this.modals = false;
       this.authType = true;
-      this.$refs['formValidate'].resetFields();
-      this.$emit('clearFrom');
-    },
+      this.$refs["formValidate"].resetFields();
+      this.$emit("clearFrom");
+    }
   },
   created() {
     this.list = this.search;
     this.getAddFrom();
-  },
+  }
 };
 </script>
 
@@ -441,6 +450,7 @@ export default {
   border-radius: 4px;
   overflow: hidden;
 }
+
 .scollhide {
   width: 100%;
   height: 100%;
@@ -449,6 +459,7 @@ export default {
   padding: 10px 0 10px 0;
   box-sizing: border-box;
 }
+
 .content {
   font-size: 12px;
 }
@@ -471,21 +482,25 @@ export default {
   position: relative;
   padding-top: 10px;
 }
+
 .icons-item .ivu-icon {
   font-size: 16px;
 }
+
 .search-rule {
   display: flex;
   align-items: center;
   padding: 10px;
   background-color: #f2f2f2;
 }
+
 .rule {
   display: flex;
   flex-wrap: wrap;
   max-height: 700px;
   overflow: scroll;
 }
+
 /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
 .rule::-webkit-scrollbar {
   width: 10px;
@@ -504,6 +519,7 @@ export default {
   border-radius: 4px;
   background-color: #555;
 }
+
 .rule-list {
   background-color: #f2f2f2;
   width: 32%;
@@ -514,19 +530,24 @@ export default {
   cursor: pointer;
   transition: all 0.1s;
 }
+
 .rule-list:hover {
   background-color: #c5d1dd;
 }
+
 .rule-list div {
   white-space: nowrap;
 }
+
 .select-rule {
   background-color: #c5d1dd;
 }
+
 .add {
   display: flex;
   align-items: center;
 }
+
 .df {
   display: flex;
   justify-content: center;

+ 2 - 1
template/admin/src/pages/setting/systemMenus/index.vue

@@ -210,10 +210,11 @@ export default {
         method: 'DELETE',
         ids: '',
       };
+
       this.$modalSure(delfromData)
         .then((res) => {
           this.$Message.success(res.msg);
-          // this.getData();
+          this.getData();
           this.$store.dispatch('menus/getMenusNavList');
         })
         .catch((res) => {

+ 3 - 3
template/admin/src/pages/setting/systemOutInterface/index.vue

@@ -892,7 +892,7 @@ export default {
   .main-btn {}
   .card-tree{
     width: 270px;
-    height: calc(100vh - 290px);
+    height: calc(100vh - 190px);
     overflow-y: scroll;
   }
   >>> .tree {
@@ -981,7 +981,7 @@ export default {
   }
   .right-card {
     flex: 1;
-      height: calc(100vh - 290px);
+    max-height: calc(100vh - 190px);
     overflow-y: scroll;
   }
 
@@ -1034,7 +1034,7 @@ export default {
     display: flex;
     align-items: center;
     justify-content: center;
-    min-height: 600px;
+    min-height: 800px;
 
     .box:hover {
       border: 1px solid pink;

+ 10 - 5
template/admin/src/pages/setting/verifyOrder/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <Card :bordered="false" dis-hover class="ivu-mt">
-      <Form ref="formValidate" :model="formValidate" :label-width="100" @submit.native.prevent>
+      <Form ref="formValidate" :model="formValidate" :label-width="80" @submit.native.prevent>
         <Row :gutter="24" type="flex">
           <Col span="24" class="ivu-text-left">
             <FormItem label="核销日期:">
@@ -54,9 +54,7 @@
           </Col>
         </Row>
       </Form>
-    </Card>
-    <Card :bordered="false" dis-hover>
-      <Table
+       <Table
         :columns="columns"
         :data="orderList"
         ref="table"
@@ -160,7 +158,7 @@ export default {
         {
           title: '商品信息',
           slot: 'info',
-          minWidth: 360,
+          minWidth: 300,
         },
         {
           title: '实际支付',
@@ -297,8 +295,15 @@ img {
     display: flex;
     align-items: center;
     justify-content: center;}
+.ivu-mt{
+  margin-bottom 12px
+}
 .ivu-mt a
    color #515a6e
 .ivu-mt a:hover
     color: #2D8cF0;
+.ivu-mt /deep/ .ivu-form-item{
+  padding 7px 0;
+  margin-bottom 0
+}
 </style>

+ 19 - 12
template/admin/src/pages/system/file/index.vue

@@ -19,19 +19,22 @@ export default {
     };
   },
   mounted() {
-    let winwidth = this.$refs.picBox.clientWidth;
-    if (winwidth < 1018) {
-      this.pageLimit = 12;
-    } else if (winwidth < 1185) {
-      this.pageLimit = 21;
-    } else if (winwidth < 1327) {
-      this.pageLimit = 24;
-    } else if (winwidth < 1475) {
-      this.pageLimit = 27;
-    } else if (winwidth > 1483) {
-      this.pageLimit = 40;
-    }
+    console.log(this.$refs.picBox.clientWidth);
+
     this.$nextTick(() => {
+      let winwidth = this.$refs.picBox.clientWidth;
+      console.log(winwidth);
+      if (winwidth < 1018) {
+        this.pageLimit = 18;
+      } else if (winwidth < 1185) {
+        this.pageLimit = 18;
+      } else if (winwidth < 1222) {
+        this.pageLimit = 24;
+      } else if (winwidth < 1327) {
+        this.pageLimit = 32;
+      } else if (winwidth > 1483) {
+        this.pageLimit = 40;
+      }
       this.uploadShow = true;
     });
   },
@@ -41,6 +44,10 @@ export default {
 <style scoped lang="stylus">
 .box {
   width: 100%;
+  height 100%
   background: #fff;
 }
+/deep/ .ivu-card-body{
+  min-height: 700px;
+}
 </style>