소스 검색

update 报表设计 报表管理

qianlishi 3 년 전
부모
커밋
6f668db07e

+ 1 - 1
report-ui/src/router/index.js

@@ -143,7 +143,7 @@ export const constantRouterMap = [
       { 
         path: 'report', 
         name: 'reportIndex', 
-        component: () => import('@/views/report/report/index'), 
+        component: () => import('@/views/reportManage/index'), 
         meta: { 
           title: '报表管理', 
           icon: 'iconnavicon-ywcs', 

+ 0 - 0
report-ui/src/views/report/report/components/share.vue → report-ui/src/views/report/bigscreen/components/share.vue


+ 1 - 1
report-ui/src/views/report/bigscreen/index.vue

@@ -106,7 +106,7 @@
 </template>
 
 <script>
-import Share from "@/views/report/report/components/share";
+import Share from "./components/share";
 import { reportPageList } from "@/api/report";
 export default {
   name: "Login",

+ 217 - 0
report-ui/src/views/report/excelreport/components/share.vue

@@ -0,0 +1,217 @@
+<template>
+  <el-dialog
+    class="tree_dialog"
+    :title="titleBuild()"
+    width="30%"
+    :close-on-click-modal="false"
+    center
+    :visible.sync="visib"
+    :before-close="closeDialog"
+  >
+    <div v-if="shareLinkFlag1">
+      <el-form
+        ref="userForm"
+        :model="dialogForm"
+        :rules="rules"
+        size="small"
+        label-width="100px"
+      >
+        <el-form-item label="有效期" prop="shareValidType">
+          <el-select
+            v-model.trim="dialogForm.shareValidType"
+            placeholder="请选择"
+            clearable
+            @change="selectChange"
+          >
+            <el-option
+              v-for="item in shareValidTypeOptions"
+              :key="item.id"
+              :label="item.text"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="分享码" prop="sharePasswordFlag">
+          <el-switch v-model="dialogForm.sharePasswordFlag"> </el-switch>
+        </el-form-item>
+      </el-form>
+      <el-button
+        type="primary"
+        plain
+        @click="createShare"
+        style="margin-left:45px"
+        >创建链接</el-button
+      >
+    </div>
+    <div v-else>
+      <el-form
+        ref="userForm"
+        :model="dialogForm"
+        :rules="rules"
+        size="small"
+        label-width="100px"
+      >
+        <el-form-item label="链接" prop="reportShareUrl">
+          <el-input v-model="reportShareUrl" :disabled="true" />
+        </el-form-item>
+        <el-form-item label="分享码" prop="sharePassword">
+          <el-input v-model="dialogForm.sharePassword" :disabled="true" />
+        </el-form-item>
+
+        <el-row :gutter="10">
+          <el-button
+            v-if="dialogForm.sharePassword == ''"
+            type="primary"
+            plain
+            @click="copyShare"
+            style="margin-left:45px"
+            >复制链接</el-button
+          >
+          <el-button
+            v-if="dialogForm.sharePassword != ''"
+            type="primary"
+            plain
+            @click="copyShare"
+            style="margin-left:45px"
+            >复制链接和分享码</el-button
+          >
+        </el-row>
+      </el-form>
+    </div>
+
+    <div slot="footer" style="text-align: center">
+      <!--      <el-button type="primary" plain @click="saveReportShare">保存</el-button>-->
+      <el-button type="danger" plain @click="closeDialog">取消</el-button>
+    </div>
+  </el-dialog>
+</template>
+<script>
+import { reportShareAdd } from "@/api/reportShare";
+import { getDictList } from "@/api/dict-data"; // 获取数据字典
+import Dictionary from "@/components/Dictionary/index";
+export default {
+  components: { Dictionary },
+  props: {
+    visib: {
+      required: true,
+      type: Boolean,
+      default: false
+    },
+    reportCode: {
+      required: true,
+      type: String,
+      default: () => {
+        return "";
+      }
+    },
+    reportName: {
+      required: true,
+      type: String,
+      default: () => {
+        return "";
+      }
+    }
+  },
+  data() {
+    return {
+      title: "报表分享",
+      reportShareUrl: "",
+      shareValidTypeOptions: [], // 有效期类型
+      dialogForm: {
+        shareValidType: 0,
+        reportCode: "",
+        shareUrl: "",
+        shareCode: "",
+        sharePassword: "",
+        sharePasswordFlag: false
+      },
+      shareLinkFlag1: true,
+      rules: {
+        shareValidType: [
+          { required: true, message: "有效期必选", trigger: "change" }
+        ]
+      }
+    };
+  },
+  watch: {
+    visib(val) {
+      if (val) {
+        // 弹窗弹出时需要执行的逻辑
+        this.getSystem();
+      }
+    }
+  },
+  created() {},
+  methods: {
+    titleBuild() {
+      return "【" + this.reportName + "】" + "报表分享";
+    },
+    selectChange(val) {
+      this.dialogForm.shareValidType = val;
+    },
+    // 获取数据字典
+    async getSystem() {
+      this.shareLinkFlag1 = true;
+      const { code, data } = await getDictList("SHARE_VAILD");
+      if (code != "200") return;
+      this.shareValidTypeOptions = data;
+      this.dialogForm.shareValidType = this.shareValidTypeOptions[0].id;
+      this.dialogForm.sharePasswordFlag = false;
+      this.dialogForm.sharePassword = "";
+    },
+    async createShare() {
+      this.dialogForm.reportCode = this.reportCode;
+      this.dialogForm.shareUrl = window.location.href;
+      // console.log(this.dialogForm)
+      const { code, data } = await reportShareAdd(this.dialogForm);
+      if (code != "200") return;
+      // console.log(data)
+      this.shareLinkFlag1 = false;
+      this.$message({
+        message: "创建链接成功!",
+        type: "success"
+      });
+      this.reportShareUrl = data.shareUrl;
+      this.dialogForm.sharePassword = data.sharePassword;
+    },
+
+    copyShare() {
+      let content = "";
+      if (this.dialogForm.sharePassword == "") {
+        content = "AJ-Report分享链接:" + this.reportShareUrl;
+      } else {
+        content =
+          "AJ-Report分享链接:" +
+          this.reportShareUrl +
+          "  分享码:" +
+          this.dialogForm.sharePassword;
+      }
+      this.copyToClip(content);
+      this.$message({
+        message: "复制链接成功!",
+        type: "success"
+      });
+    },
+    copyToClip(content, message) {
+      let aux = document.createElement("input");
+      aux.setAttribute("value", content);
+      document.body.appendChild(aux);
+      aux.select();
+      document.execCommand("copy");
+      document.body.removeChild(aux);
+    },
+
+    async saveReportShare() {
+      let params = {};
+      //const { code } = await saveAuthorityTree(params)
+      //if (code != '200') return
+      this.closeDialog();
+    },
+
+    // 弹窗关闭之前需要执行的逻辑
+    closeDialog() {
+      this.$emit("handleClose");
+    }
+  }
+};
+</script>

+ 1 - 1
report-ui/src/views/report/excelreport/index.vue

@@ -107,7 +107,7 @@
 </template>
 
 <script>
-import Share from "@/views/report/report/components/share";
+import Share from "./components/share";
 import { reportPageList } from "@/api/report";
 export default {
   name: "Login",

+ 221 - 0
report-ui/src/views/reportManage/components/share.vue

@@ -0,0 +1,221 @@
+<template>
+  <el-dialog
+    class="tree_dialog"
+    :title="titleBuild()"
+    width="30%"
+    :close-on-click-modal="false"
+    center
+    :visible.sync="visib"
+    :before-close="closeDialog"
+  >
+    <div v-if="shareLinkFlag1">
+      <el-form
+        ref="userForm"
+        :model="dialogForm"
+        :rules="rules"
+        size="small"
+        label-width="100px"
+      >
+        <el-form-item label="有效期" prop="shareValidType">
+          <el-select
+            v-model.trim="dialogForm.shareValidType"
+            placeholder="请选择"
+            clearable
+            @change="selectChange"
+          >
+            <el-option
+              v-for="item in shareValidTypeOptions"
+              :key="item.id"
+              :label="item.text"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="分享码" prop="sharePasswordFlag">
+          <el-switch v-model="dialogForm.sharePasswordFlag"> </el-switch>
+        </el-form-item>
+      </el-form>
+      <el-button
+        type="primary"
+        plain
+        @click="createShare"
+        style="margin-left:45px"
+        >创建链接</el-button
+      >
+    </div>
+    <div v-else>
+      <el-form
+        ref="userForm"
+        :model="dialogForm"
+        :rules="rules"
+        size="small"
+        label-width="100px"
+      >
+        <el-form-item label="链接" prop="reportShareUrl">
+          <el-input v-model="reportShareUrl" :disabled="true" />
+        </el-form-item>
+        <el-form-item
+          v-if="dialogForm.sharePasswordFlag"
+          label="分享码"
+          prop="sharePassword"
+        >
+          <el-input v-model="dialogForm.sharePassword" :disabled="true" />
+        </el-form-item>
+
+        <el-row :gutter="10">
+          <el-button
+            v-if="dialogForm.sharePassword == ''"
+            type="primary"
+            plain
+            @click="copyShare"
+            style="margin-left:45px"
+            >复制链接</el-button
+          >
+          <el-button
+            v-if="dialogForm.sharePassword != ''"
+            type="primary"
+            plain
+            @click="copyShare"
+            style="margin-left:45px"
+            >复制链接和分享码</el-button
+          >
+        </el-row>
+      </el-form>
+    </div>
+
+    <div slot="footer" style="text-align: center">
+      <!--      <el-button type="primary" plain @click="saveReportShare">保存</el-button>-->
+      <el-button type="danger" plain @click="closeDialog">取消</el-button>
+    </div>
+  </el-dialog>
+</template>
+<script>
+import { reportShareAdd } from "@/api/reportShare";
+import { getDictList } from "@/api/dict-data"; // 获取数据字典
+import Dictionary from "@/components/Dictionary/index";
+export default {
+  components: { Dictionary },
+  props: {
+    visib: {
+      required: true,
+      type: Boolean,
+      default: false
+    },
+    reportCode: {
+      required: true,
+      type: String,
+      default: () => {
+        return "";
+      }
+    },
+    reportName: {
+      required: true,
+      type: String,
+      default: () => {
+        return "";
+      }
+    }
+  },
+  data() {
+    return {
+      title: "报表分享",
+      reportShareUrl: "",
+      shareValidTypeOptions: [], // 有效期类型
+      dialogForm: {
+        shareValidType: 0,
+        reportCode: "",
+        shareUrl: "",
+        shareCode: "",
+        sharePassword: "",
+        sharePasswordFlag: false
+      },
+      shareLinkFlag1: true,
+      rules: {
+        shareValidType: [
+          { required: true, message: "有效期必选", trigger: "change" }
+        ]
+      }
+    };
+  },
+  watch: {
+    visib(val) {
+      if (val) {
+        // 弹窗弹出时需要执行的逻辑
+        this.getSystem();
+      }
+    }
+  },
+  created() {},
+  methods: {
+    titleBuild() {
+      return "【" + this.reportName + "】" + "报表分享";
+    },
+    selectChange(val) {
+      this.dialogForm.shareValidType = val;
+    },
+    // 获取数据字典
+    async getSystem() {
+      this.shareLinkFlag1 = true;
+      const { code, data } = await getDictList("SHARE_VAILD");
+      if (code != "200") return;
+      this.shareValidTypeOptions = data;
+      this.dialogForm.shareValidType = this.shareValidTypeOptions[0].id;
+      this.dialogForm.sharePasswordFlag = false;
+      this.dialogForm.sharePassword = "";
+    },
+    async createShare() {
+      this.dialogForm.reportCode = this.reportCode;
+      this.dialogForm.shareUrl = window.location.href;
+      // console.log(this.dialogForm)
+      const { code, data } = await reportShareAdd(this.dialogForm);
+      if (code != "200") return;
+      // console.log(data)
+      this.shareLinkFlag1 = false;
+      this.$message({
+        message: "创建链接成功!",
+        type: "success"
+      });
+      this.reportShareUrl = data.shareUrl;
+      this.dialogForm.sharePassword = data.sharePassword;
+    },
+
+    copyShare() {
+      let content = "";
+      if (this.dialogForm.sharePassword == "") {
+        content = "AJ-Report分享链接:" + this.reportShareUrl;
+      } else {
+        content =
+          "AJ-Report分享链接:" +
+          this.reportShareUrl +
+          "  分享码:" +
+          this.dialogForm.sharePassword;
+      }
+      this.copyToClip(content);
+      this.$message({
+        message: "复制链接成功!",
+        type: "success"
+      });
+    },
+    copyToClip(content, message) {
+      let aux = document.createElement("input");
+      aux.setAttribute("value", content);
+      document.body.appendChild(aux);
+      aux.select();
+      document.execCommand("copy");
+      document.body.removeChild(aux);
+    },
+
+    async saveReportShare() {
+      let params = {};
+      //const { code } = await saveAuthorityTree(params)
+      //if (code != '200') return
+      this.closeDialog();
+    },
+
+    // 弹窗关闭之前需要执行的逻辑
+    closeDialog() {
+      this.$emit("handleClose");
+    }
+  }
+};
+</script>

+ 9 - 7
report-ui/src/views/report/report/index.vue → report-ui/src/views/reportManage/index.vue

@@ -1,12 +1,14 @@
 <!--
- * @Author: lide1202@hotmail.com
- * @Date: 2021-3-13 11:04:24
- * @Last Modified by:   lide1202@hotmail.com
- * @Last Modified time: 2021-3-13 11:04:24
- !-->
+ * @Descripttion: 报表设计--报表管理
+ * @version: 
+ * @Author: qianlishi
+ * @Date: 2021-12-11 14:48:27
+ * @LastEditors: qianlishi
+ * @LastEditTime: 2021-12-13 12:20:46
+-->
 <template>
   <anji-crud ref="listPage" :option="crudOption">
-    <template slot="rowButton" slot-scope="props">
+    <template slot="rowButtonInMore" slot-scope="props">
       <el-button
         type="text"
         @click="preview(props.msg)"
@@ -45,7 +47,7 @@ import {
   reportUpdate,
   reportDetail
 } from "@/api/reportmanage";
-import Share from "@/views/report/report/components/share";
+import Share from "./components/share";
 import { validateEngOrNum } from "@/utils/validate";
 export default {
   name: "Report",