Эх сурвалжийг харах

Merge branch 'master' of http://120.26.64.82:10880/BFFE/dz2.1

chenjun 1 жил өмнө
parent
commit
e36a51b42e

+ 5 - 0
src/components/publicPageTree/index.vue

@@ -92,6 +92,11 @@ export default {
       }
     },
     treeNodeClick (data) {
+      const { nodeKey, nodeValue } = this.treeMap
+      if (data[nodeKey] == -1 && data[nodeValue] == '全部') {
+
+      }
+      console.log(data)
       this.$emit('treeNodeClick', data)
     },
     async queryTreeData (defaultfilter, serviceid, pagename) {

+ 120 - 0
src/views/dataAccessPage/components/accessPageForm.vue

@@ -0,0 +1,120 @@
+<template>
+  <div v-loading="loading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)" class="PublicPageForm">
+    <el-form ref="ruleForm" :model="tableForm" :label-width="labelWidth">
+      <el-row :gutter="20">
+        <el-col :span="24">
+          <el-form-item prop="preconditions" label="执行条件">
+            <el-input size="small" type="textarea" v-model="tableForm.preconditions"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item prop="algorithmtype" label="类型">
+            <el-select v-model="tableForm.algorithmtype" @change="changeSelect('algorithmtype')" placeholder="请选择">
+              <el-option label="区域一" value="shanghai"></el-option>
+              <el-option label="区域二" value="beijing"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col v-if="tableForm.algorithmtype == 'JAVA' || tableForm.algorithmtype == 'DB' || tableForm.algorithmtype == 'Kafka' || tableForm.algorithmtype == 'ES'" :span="24">
+          <el-form-item prop="executionnumber" label="算法">
+            <el-select v-model="tableForm.executionnumber" placeholder="请选择">
+              <el-option label="区域一" value="shanghai"></el-option>
+              <el-option label="区域二" value="beijing"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col v-if=" tableForm.executionnumber == 'DB' || tableForm.algorithmtype == 'Kafka' || tableForm.algorithmtype == 'ES'" :span="24">
+          <el-form-item prop="datasourceid" label="数据源">
+            <el-select v-model="tableForm.datasourceid" placeholder="请选择">
+              <el-option label="区域一" value="shanghai"></el-option>
+              <el-option label="区域二" value="beijing"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col v-if="tableForm.algorithmtype == 'JS'" :span="24">
+          <el-form-item prop="computingexpression" label="表达式">
+            <el-input size="small" type="textarea" v-model="tableForm.computingexpression"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { Query } from "@/api/webApi"
+export default {
+  name: 'PublicPageForm',
+  props: {
+    labelWidth: {
+      type: String,
+      default: '80px'
+    }
+  },
+  data () {
+    return {
+      tableForm: {
+        preconditions: '',
+        algorithmtype: '',
+        executionnumber: '',
+        computingexpression: ''
+      },
+      tableOptions: {},
+      formItemArr: [],
+      loading: false,
+      selectType: [],
+      selectAlgorithm: [],
+      selectSource: []
+    }
+  },
+  mounted () {
+    this.getSelectData('algorithmtype', 20, {
+      type: '0'
+    })
+  },
+  methods: {
+    //获取表单下拉数据
+    getSelectData (pagecode, serviceid, datacontent) {
+      const [allResult, allResultKey] = [[], []]
+      allResultKey.push(pagecode)
+      allResult.push(Query({ serviceid, datacontent, event: '0' }))
+      this.getAnscyData(allResult, allResultKey)
+    },
+    //获取异步数据
+    async getAnscyData (allResult = [], allResultKey = []) {
+      this.loading = true
+      if (allResult.length && allResultKey.length) {
+        const results = await Promise.allSettled(allResult)
+        results.map((item) => {
+          const { status, value } = item
+          if (status == 'fulfilled') {
+            const { code, returnData } = value
+            console.log(code, returnData)
+          }
+        })
+      }
+      this.loading = false
+    },
+    formatData (returnData) {
+      return typeof returnData == 'string' ? JSON.parse(returnData) : returnData
+    },
+    //获取表单下拉数据
+    changeSelect (code) { },
+    restForm () {
+      this.$refs['ruleForm'].resetFields()
+    },
+    // 新增/编辑-确认
+    submitClickHandler () {
+      let flag = false
+      this.$refs["ruleForm"].validate((valid) => {
+        if (valid) {
+          flag = true
+        } else {
+          flag = false;
+        }
+      });
+      return flag
+    },
+  }
+}
+</script>

+ 309 - 0
src/views/dataAccessPage/components/accessPageTable.vue

@@ -0,0 +1,309 @@
+<template>
+  <div class="accessPageTable">
+    <PublicPageHeader class="accessPageTable_head" :page-title="pageTitle">
+      <AuthButton :auth="pageAuthBtnAdd" />
+    </PublicPageHeader>
+    <div class="accessPageTable_content">
+      <PublicPageTable :loading="loading" :table-cols="tableCols" :table-btns="authBtns" :data="tableData" @mounted="tableMountedHandler" @load="load" @handleEdit="handleEdit" @handleOther="handleOther" @handleRemove="handleRemove" />
+    </div>
+    <div class="accessPageTable_dialog">
+      <PublicPageDialog :dialog-title="tableTitle" dialogSize="630px" :dialog-drawer="flag" @handleClose="submitClickClose('ruleForm')" @handleSubmit="submitClickHandler">
+        <PublicPageForm ref="ruleForm" :label-width="labelWidth" />
+      </PublicPageDialog>
+    </div>
+  </div>
+</template>
+
+<script>
+import PublicPageHeader from '@/components/PublicPageHeader'
+import PublicPageDialog from '@/components/PublicPageDialog'
+import PublicPageForm from './accessPageForm.vue'
+import PublicPageTable from '@/components/SimpleTable'
+import AuthButton from '@/components/AuthButton'
+import { mapGetters } from 'vuex'
+import { Query, newData, modifyData, moveData } from "@/api/webApi"
+import { formatChange } from '@/utils/validate'
+
+export default {
+  name: 'AccessPageTable',
+  components: { PublicPageHeader, PublicPageDialog, PublicPageForm, PublicPageTable, AuthButton },
+  data () {
+    return {
+      pageQuery: {},
+      authBtns: [],
+      page: 0, //当前table页面
+      noMore: false, //当前table是否加载到最后开关
+      loading: false, //页面加载
+      dialogFlag: false,
+      pageTitle: '', //页面名称
+      tableCols: [], //表头数据
+      tableData: [], //表格数据
+      tableBtns: [], //表格按钮权限
+      dataContent: {}, //表格查询数据
+      pageServiceId: null, //表格serviceid
+      formItem: [], //弹框表单渲染数据
+      flag: false, //弹框表单开关
+      tableType: "add", //弹框表单弹框类型
+      tableTitle: "新增", //弹框表单标题
+      tableForm: {}, //弹框表单数据
+      tableOptions: {}, //表单数据下拉
+      labelWidth: '120px', //表单文字距离
+      fromDataReqCatch: [], //表单规则缓存
+      tableKey: null,//表格主键
+      defaultfilter: { 1: 1 }, //默认查询参数
+    }
+  },
+  computed: {
+    ...mapGetters(['authArrs']),
+    pageAuthBtnQuery () {
+      return this.tableBtns.filter(item => item.servicetype == 1)[0]
+    },
+    pageAuthBtnAdd () {
+      return this.tableBtns.filter(item => item.servicetype == 2)[0]
+    },
+    pageAuthBtnEdit () {
+      return this.tableBtns.filter(item => item.servicetype == 3)[0]
+    },
+    pageAuthBtnDel () {
+      return this.tableBtns.filter(item => item.servicetype == 4)[0]
+    },
+    pageAuthBtnOther () {
+      return this.tableBtns.filter(item => item.servicetype == 5)[0]
+    },
+  },
+  mounted () {
+    this.pageInit()
+  },
+  methods: {
+    //页面初始化
+    pageInit () {
+      //获取页面查询参数
+      const { query } = this.$route
+      this.pageQuery = query
+      //获取页面配置
+      const { auth_id } = this.$route.meta
+      //获取页面权限类型组件  pagetype 1模块  2页面  3按钮 4表格 5树形  6弹窗
+      const pageAuths = this.authArrs
+      if (!pageAuths.length) return
+      //获取当前页面权限类型
+      const pageAuthArrs = pageAuths.filter(item => item['superiorid'] == auth_id)
+      if (!pageAuthArrs.length) return
+      //获取table权限
+      const pageAuthtables = pageAuthArrs.filter(item => item.pagetype == 'table')
+      if (pageAuthtables?.length) this.getPageTableSetting(pageAuths, pageAuthtables)
+      //获取按钮权限
+      const pageAuthbtns = pageAuthArrs.filter(item => item.pagetype == 'button')
+      if (pageAuthbtns?.length) this.getPageBtnSetting(pageAuthbtns)
+    },
+    //根据页面table设置数据
+    getPageTableSetting (pageAuths, pageAuthtables) {
+      const authTableObj = pageAuthtables[0]
+      //获取当前页面table的配置
+      const { pagename, pageconfigurationid, serviceid, pagecode, userpermissionsid, defaultfilter } = authTableObj
+      //获取当前页面table的按钮权限
+      const currPageBtns = pageAuths.filter(item => item['superiorid'] == pageconfigurationid && item.pagetype == 'button')
+      if (currPageBtns?.length) this.tableBtns.push(...currPageBtns)
+      this.authBtns = pageAuths.filter(item => item.superiorid == pageconfigurationid && item.pagetype == 'button')
+      this.pageServiceId = serviceid;
+      this.pageTitle = pagename
+      this.defaultfilter = Object.keys(this.pageQuery).length ? this.pageQuery : defaultfilter ? this.formatDefault(defaultfilter, authTableObj) : { 1: 1 }
+      const tableColumnArrs = pageAuths.filter(item => item['superiorid'] == pageconfigurationid && item['pagetype'] == 'column')
+      this.getColumnData(tableColumnArrs)
+    },
+    //根据页面按钮设置数据
+    getPageBtnSetting (pageAuthbtns) {
+      this.tableBtns.push(...pageAuthbtns)
+    },
+    //获取表头数据
+    getColumnData (columnArrs = []) {
+      const returnData = [...columnArrs]
+      this.$store.dispatch('auth/changeAuthMsg', returnData)
+      const tableColsCopy = _.cloneDeep(returnData).filter((item) => item.isdisplay == 1 || item.isdisplay == 'true');
+      const tableColsCopyOrder = _.orderBy(tableColsCopy, ['displaynumber'], ['asc']);
+      // const formItemCopy = _.cloneDeep(returnData).filter((item) => item.isdisplay == 2 || item.isdisplay == 3);
+      // this.formItem = _.orderBy(formItemCopy, ['displaynumber'], ['asc']);
+      this.tableCols = tableColsCopyOrder;
+      const columncode = returnData.find(
+        (item) => item.isprimarykey == 1
+      );
+      if (columncode && Object.keys(columncode).length) {
+        this.tableKey = columncode['pagecode']
+      }
+    },
+    //格式化传递参数数据
+    formatDefault (item, data = {}) {
+      if (typeof item != 'string') return {}
+      const filterItem = {}
+      const parameters = item.replace('{', '').replace('}', '')
+      const parametersSplit = parameters?.split(',')
+      parametersSplit.map(item => {
+        const [key, val] = item?.split(':')
+        filterItem[key] = data[val]
+      })
+      return filterItem
+    },
+    //根据按钮权限查询表单权限
+    findBtntoForm (pageroute) {
+      return this.tableBtnForms.filter(item => item.pagecode == pageroute)
+    },
+    //表单-新增
+    handleAdd () {
+      const { openmode, pageroute } = this.pageAuthBtnAdd
+      if (!openmode) return
+      // if (!this.findBtntoForm(pageroute).length) return
+      if (openmode != 2) this.autoBtnClick(openmode, pageroute)
+      // const { pageconfigurationid } = this.findBtntoForm(pageroute)[0]
+      // const pageAuths = this.authArrs
+      // const tableColumnArrs = pageAuths.filter(item => item['superiorid'] == pageconfigurationid && item['pagetype'] == 'column')
+      // this.dialogName = pageroute
+      this.flag = true;
+      this.tableType = "add";
+      this.tableTitle = "新增";
+      this.tableForm = {};
+      for (let k in this.defaultfilter) {
+        if (k != 1) {
+          this.tableForm[k] = this.defaultfilter[k]
+        }
+      }
+      // this.formItem = tableColumnArrs.filter(item => item.isdisplay == 1)
+    },
+    //表格-编辑
+    handleEdit (row) {
+      const { openmode, pageroute } = this.pageAuthBtnEdit
+      if (!openmode) return
+      if (openmode != 2) this.autoBtnClick(openmode, pageroute)
+      this.flag = true;
+      this.tableType = "edit";
+      this.tableTitle = "编辑";
+      this.tableForm = _.cloneDeep(row);
+
+    },
+    //表格-其他类型按钮操作
+    handleOther (row, auth) {
+      const { openmode, pageroute, passparameters } = this.pageAuthBtnOther
+      if (!openmode) return
+      if (openmode != 2) this.autoBtnClick(openmode, pageroute, passparameters, row)
+    },
+    //表格-删除
+    handleRemove (row) {
+      const { openmode, pageroute } = this.pageAuthBtnDel
+      if (!openmode) return
+      if (openmode != 2) this.autoBtnClick(openmode, pageroute)
+      this.$confirm('确认要删除这条信息吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        this.generalDataReception(3, row, this.tableKey)
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });
+      });
+    },
+    // 新增/编辑-取消
+    submitClickClose (formName) {
+      this.flag = false
+      this.$refs[formName].restForm()
+    },
+    // 新增/编辑-确认
+    submitClickHandler () {
+      const flag = this.$refs["ruleForm"].submitClickHandler()
+      if (flag) this.tableType == "add" ? this.generalDataReception(1, this.tableForm) : this.generalDataReception(2, this.tableForm, this.tableKey)
+    },
+    //表格-增/删/改
+    async generalDataReception (event, data, key) {
+      try {
+        const params = {
+          serviceid: this.pageServiceId,
+          datacontent: formatChange(data, event, key),
+          event: `${event}`,
+        };
+        const { code } =
+          event == 1
+            ? await newData(params)
+            : event == 2
+              ? await modifyData(params)
+              : await moveData(params);
+        if (code == 0) {
+          this.$message.success("操作成功");
+          this.flag = false;
+          this.rmFlag = false;
+          this.tableObj = {};
+          this.tableForm = {};
+          this.resetTable();
+          this.load();
+          // this.$router.go(0);
+        } else {
+          this.$message.error("操作失败");
+          this.flag = false;
+          this.rmFlag = false;
+          this.tableObj = {};
+          this.tableForm = {};
+        }
+      } catch (error) {
+        this.flag = false;
+        this.rmFlag = false;
+        this.tableObj = {};
+        this.tableForm = {};
+      }
+    },
+    tableMountedHandler (refName, ref) {
+      this.$refs[refName] = ref
+    },
+    resetTable () {
+      this.dataContent = {}
+      this.page = 0;
+      this.noMore = false;
+      this.tableData = [];
+    },
+    load () {
+      if (this.noMore || this.loading) {
+        return
+      }
+      this.queryTableData()
+    },
+    async queryTableData (jumpSing = false) {
+      if (jumpSing) {
+        const initialize = _.once(this.resetTable)
+        initialize()
+      }
+      this.loading = true;
+      const datacontent = { filter: this.defaultfilter }
+      try {
+        const { code, returnData } = await Query({
+          page: ++this.page,
+          serviceid: this.pageServiceId,
+          datacontent,
+          event: '0'
+        });
+        if (code == 0) {
+          if (returnData.length === 0) {
+            this.page--;
+            this.noMore = true;
+          }
+          this.tableData.push(...returnData);
+        } else {
+          this.page--;
+          this.$message.error("获取表格数据失败");
+        }
+      } catch (error) {
+        this.page--;
+      }
+      this.noMore = true;
+      this.loading = false;
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.accessPageTable {
+  height: 100%;
+  &_content {
+    margin-top: 20px;
+    height: calc(100% - 60px);
+  }
+}
+</style>

+ 2 - 2
src/views/dataAccessPage/index.vue

@@ -6,7 +6,7 @@
         <AccessPageTree @treeNodeClick="treeNodeClick" />
       </div>
       <div class="dataAccessPage_content_right">
-        <AccessPageTable style="padding: 0;" :data-flag="true" :msg-content="msgContent" data-title="算法配置" />
+        <AccessPageTable />
       </div>
     </div>
   </div>
@@ -15,7 +15,7 @@
 <script>
 import PublicPageHeader from '@/components/PublicPageHeader'
 import AccessPageTree from './components/accessPageTree.vue'
-import AccessPageTable from '@/views/tablePage'
+import AccessPageTable from './components/accessPageTable.vue'
 export default {
   name: 'DataAccessPage',
   components: { PublicPageHeader, AccessPageTree, AccessPageTable },