wangting
2023-08-22 9cc440df58642761cd7361786351e91b9fa62a79
接口配置页面
已修改4个文件
已添加2个文件
587 ■■■■■ 文件已修改
Source/UBCS-WEB/src/api/docking/info.js 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/info.vue 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/docking/infoForm.vue 457 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/docking/info.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
import request from '@/router/axios';
export const getList = (page, size, params) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/gridLoge',
    method: 'get',
    params: {
      ...params,
      page,
      size
    }
  })
}
// æ–°å¢ž
export const add = (data) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/submit',
    method: 'post',
    data
  })
}
// ä¿®æ”¹
export const edit = (data) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/edit-save',
    method: 'put',
    data
  })
}
// åˆ é™¤
export const del = (data) => {
  let url = '/api/ubcs-code/dockingManagement/remove'
  return request({
    url,
    method: 'post',
    data
  })
}
// åŒæ­¥
export const push = (data) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/push',
    method: 'put',
    data
  })
}
// åœç”¨å¯ç”¨
export const updateStatus = (data) => {
  return request({
    url: '/api/ubcs-code/dockingManagement/updateStatus',
    method: 'put',
    data
  })
}
Source/UBCS-WEB/src/components/refer/vciWebReferDefalut.vue
@@ -237,7 +237,7 @@
      this.value=value.join(',');
      this.text=text.join(',')
      this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.selectionList});
      this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.selectionList,fieldMap:this.referConfig.fieldMap});
      this.visible=false;
    },
    searchReset() {
Source/UBCS-WEB/src/components/refer/vciWebReferTable.vue
@@ -295,7 +295,7 @@
      this.value=value.join(',');
      this.text=text.join(',')
      this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.selectionList});
      this.$emit("setValue", {field:this.referConfig.field,showField:this.referConfig.showField,value:this.value,text:this.text,rawData:this.selectionList,fieldMap:this.referConfig.fieldMap});
      this.visible=false;
    },
    searchReset() {
Source/UBCS-WEB/src/components/refer/vciWebReferTree.vue
@@ -183,7 +183,8 @@
        value: this.value,
        text: this.text || '',
        isTreeMuti:this.isMuti,
        rawData: checkedData.checkedNodes
        rawData: checkedData.checkedNodes,
        fieldMap:this.referConfig.fieldMap
      });
    }
  },
Source/UBCS-WEB/src/views/docking/info.vue
@@ -26,7 +26,7 @@
        </avue-crud>
      </basic-container>
    </el-main>
    <originalAdd ref="originalAdd" @refreshTable="refreshChange" :attribute="editAttribute"></originalAdd>
    <infoForm ref="infoForm" @refreshTable="refreshChange" :formData="editAttribute"></infoForm>
    <!-- é«˜çº§æŸ¥è¯¢å¯¹è¯æ¡† -->
    <advanced-query
      :ref="advancedQueryParam.ref"
@@ -39,16 +39,14 @@
<script>
import {
  getList,
  remove,
  add,
  update, getPage, getApplyRange
} from "@/api/omd/OmdAttribute";
  getList,add,edit,del,push,updateStatus
} from "@/api/docking/info";
import {getDictionary} from "@/api/omd/enum";
import {mapGetters} from "vuex";
import infoForm from "./infoForm.vue";
export default {
  name: "info",
  components:{infoForm},
  data() {
    return {
      page: {
@@ -223,22 +221,22 @@
      this.onLoad(this.page, this.query);
    },
    addSave() {
      this.$refs.originalAdd.showSubmitDialog = true;
      this.$refs.infoForm.showSubmitDialog = true;
      const newAttr = {};
      newAttr.nullable = true;
      this.$refs.originalAdd.attribute = newAttr;
      this.$refs.infoForm.formData = newAttr;
    },
    updateSave(row,index) {
      this.selectRow = index;
      var json = JSON.stringify(row);
      this.editAttribute = JSON.parse(json);
      this.editAttribute.nullable = row.nullable == 'true' ? true : false;
      this.$refs.originalAdd.attribute = this.editAttribute;
      this.$refs.originalAdd.showSubmitDialog = true;
      this.$refs.infoForm.attribute = this.editAttribute;
      this.$refs.infoForm.showSubmitDialog = true;
      this.checkUsingReferDict(row);
      this.$refs.originalAdd.activeName = this.itemForm.activeName;
      this.$refs.originalAdd.enumInitFlag = this.itemForm.enumInitFlag;
      this.$refs.originalAdd.referInitFlag = this.itemForm.referInitFlag;
      this.$refs.infoForm.activeName = this.itemForm.activeName;
      this.$refs.infoForm.enumInitFlag = this.itemForm.enumInitFlag;
      this.$refs.infoForm.referInitFlag = this.itemForm.referInitFlag;
      // this.refreshChange()
    },
    deleteSave(row,index) {
@@ -254,6 +252,38 @@
          this.refreshChange();
        });
      });
    },
    ENABLE(row,index){
      //启用
      this.updateStatus("enable");
    },
    DISABLE(row,index){
      //停用
      this.updateStatus("disable");
    },
    updateStatus(able){
      var that = this;
      var paramTemp = {
        update:able,
        oid:this.selectRow.oid,
        ts:this.selectRow.ts
      };
      this.$confirm("是否要"+(able == "enbale" ? "启用" : (able == "disable" ? "停用": "发布")) +"这条数据?", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          return updateStatus(paramTemp);
        })
        .then(() => {
          this.onLoad(this.page);
          this.$message({
            type: "success",
            message:(able == "enbale" ? "启用成功" : (able == "disable" ? "停用成功": "发布成功"))
          });
          this.$refs.crud.toggleSelection();
        });
    },
    PUSH(){
      if (this.selectionList.length != 1) {
@@ -279,7 +309,7 @@
    },
    onLoad(page, params = {}) {
      this.loading = true;
      getPage(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res => {
      getList(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res => {
        const data = res.data.data;
        this.page.total = data.total;
        this.data = data.records;
@@ -290,7 +320,7 @@
    },
    rowClick(row) {
      this.itemForm.itemData = row;
      this.selectRow = row.$index;
      this.selectRow = row;
      this.attribute = row;
      this.$refs.crud.toggleSelection();
@@ -309,7 +339,7 @@
        getDictionary({code: row.dictCode}).then(res => {
          this.editAttribute.dictValue = res.data.data[0].label;
          this.itemForm.itemData.dictValue = this.editAttribute.dictValue;
          this.$refs.originalAdd.dictEnums = res.data.data;
          this.$refs.infoForm.dictEnums = res.data.data;
        })
      }else {
        this.itemForm.activeName = 'referTab';
Source/UBCS-WEB/src/views/docking/infoForm.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,457 @@
<template>
  <el-container>
    <el-dialog title="系统集成基础信息" v-dialogDrag :visible.sync="showSubmitDialog" class="avue-dialog avue-dialog--top" append-to-body @close="closeSubmitDialog" width="1000px"
               style="height: 100vh;" top="-5%">
      <el-form ref="form" :model="formData" show-message="true" inline size="medium" label-suffix=":"
               class="dockingForm" :rules="rules" @resetFields="resetForm" status-icon="true">
        <el-form-item label="接口类型" prop="interfaceType">
          <el-select v-model="formData.interfaceType" placeholder="请选择接口类型" @change="typeSelectChange">
            <el-option v-for="item in interfaceTypeList" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="参数类型" prop="paramType">
          <el-select v-model="formData.paramType" placeholder="请选择参数类型" @change="typeSelectChange">
            <el-option v-for="item in paramTypeList" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="返回值类型" prop="returnType">
          <el-select v-model="formData.returnType" placeholder="请选择返回值类型" @change="typeSelectChange">
            <el-option v-for="item in returnTypeList" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="推送类型" prop="pushType">
          <el-select v-model="formData.pushType" placeholder="请选择推送类型" @change="typeSelectChange">
            <el-option v-for="item in pushTypeList" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="分类选择" prop="classifyName">
          <vciWebRefer
            :referConfig="{
                  title: '分类选择',
                  showField: 'classifyName',
                  field: 'classifyOid',
                  fieldMap:{'classifyId':'id'},
                  placeholder: '请选择分类选择',
                  options: {isMuti: false, type: 'tree', url: 'api/ubcs-code/codeClassify/referTree'},
                }"
            :value="formData.classifyOid"
            :text="formData.classifyName"
            :disabled="false"
            :display="true"
            @setReferValue="setReferValue"
          ></vciWebRefer>
        </el-form-item>
        <el-form-item label="推送系统" prop="sourceSysName">
          <vciWebRefer
            :referConfig="{
                  title: '推送系统',
                  showField: 'sourceSysName',
                  field: 'sourceSystemOid',
                  fieldMap:{'sourceSysId':'id'},
                  placeholder: '请选择推送系统',
                  options: {isMuti: false, type: 'default', url: 'api/ubcs-code/codeClassify/referTree'},
                }"
            :value="formData.sourceSystemOid"
            :text="formData.sourceSysName"
            :disabled="false"
            :display="true"
            @setReferValue="setReferValue"
          ></vciWebRefer>
        </el-form-item>
        <el-form-item label="系统描述" >
          <el-input type="textarea" :rows="2" v-model="formData.description"></el-input>
        </el-form-item>
        <el-form-item label="请求方式" prop="requestMethod">
          <el-select v-model="formData.requestMethod" placeholder="请选择请求方式" @change="typeSelectChange">
            <el-option v-for="item in requestMethodList" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="请求地址" prop="requestUrl">
          <el-input v-model="formData.requestUrl" type="text"></el-input>
        </el-form-item>
        <el-form-item label="接口函数" prop="interfaceFunction">
          <el-input v-model="formData.interfaceFunction"></el-input>
        </el-form-item>
        <el-form-item label="命名空间" prop="nameSpace">
          <el-input v-model="formData.namespace"></el-input>
        </el-form-item>
        <el-form-item label="soapaction" prop="soapaction">
          <el-input v-model="formData.soapaction" ></el-input>
        </el-form-item>
        <el-form-item label="参数名称" prop="targName">
          <el-input v-model="formData.targName" ></el-input>
        </el-form-item>
        <el-form-item label="cxfaxis" prop="cxfaxis">
          <el-input v-model="formData.soapaction" ></el-input>
        </el-form-item>
        <el-form-item label="类路径" prop="classPath">
          <el-input v-model="formData.classPath" ></el-input>
        </el-form-item>
        <el-tabs v-model="activeName" @tab-click="handleClick" stretch="true">
          <el-tab-pane label="参数对象" name="paramTab">
            <avue-crud :option="param.option"
                       :data="param.data"
                       v-model="formData.sysIntParamVOs"
                       ref="paramcrud">
              <template slot="menuLeft">
                <el-button type="primary"
                           size="small"
                           plain
                           icon="el-icon-plus"
                           @click="handleParamAdd">添加行
                </el-button>
              </template>
              <template slot-scope="scope" slot="menu">
                <el-button type="text"
                           icon="el-icon-delete"
                           size="small"
                           @click="handleParamDel(scope.row)">移除
                </el-button>
              </template>
            </avue-crud>
          </el-tab-pane>
          <el-tab-pane label="header对象" name="headerTab">
            <avue-crud :option="header.option"
                       :data="header.data"
                       v-model="formData.sysIntHeaderVOs"
                       ref="paramcrud">
              <template slot="menuLeft">
                <el-button type="primary"
                           size="small"
                           plain
                           icon="el-icon-plus"
                           @click="handleHeaderAdd">添加行
                </el-button>
              </template>
              <template slot-scope="scope" slot="menu">
                <el-button type="text"
                           icon="el-icon-delete"
                           size="small"
                           @click="handleHeaderDel(scope.row)">移除
                </el-button>
              </template>
            </avue-crud>
          </el-tab-pane>
        </el-tabs>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitAttribute">确定</el-button>
        <el-button @click="cancelSubmit">取消</el-button>
      </div>
    </el-dialog>
  </el-container>
</template>
<script>
import { getDictionary, getParentList } from '@/api/omd/enum'
import {add,edit} from "@/api/docking/info"
import vciWebRefer from "@/components/refer/vciWebRefer.vue";
export default {
  name: 'infoForm',
  props: {
    formData: {
      type: Object
    },
  },
  components: { vciWebRefer },
  data() {
    return {
      showSubmitDialog: false,
      //接口类型下拉
      interfaceTypeList: [{
        label: 'webService', value: 'webService'
      }, {
        label: '类路径', value: 'classPath'
      }, {
        label: 'Http', value: 'http'
      }],
      //参数类型下拉
      paramTypeList:[ {
          label: 'xml', value: 'xml'
        }, {
          label: 'Json', value: 'json'
        }],
      //返回值类型下拉
      returnTypeList:[ {
        label: 'xml', value: 'xml'
      }, {
        label: 'Json', value: 'json'
      }],
      //推送类型
      pushTypeList: [{key: '1', value: '数据推送'},
        {key: '2', value: '分类推送'},
        {key: '3', value: '编码申请'},
        {key: '4', value: '编码更改(状态、回收)'},
        {key: '5', value: '分类查询'},
        {key: '6', value: '含规则信息的分类查询'},
        {key: '7', value: '数据查询'}],
      //请求方式
      requestMethodList:[{key: 'post', value: 'post'},
        {key: 'get', value: 'get'},
        {key: 'delete', value: 'delete'},
        {key: 'put', value: 'put'}],
      // é»˜è®¤çš„页签
      activeName: 'paramTab',
      // å±žæ€§ç±»åž‹ä¸‹æ‹‰æ¡†æ•°æ®
      typeList: [],
      // å‚照下拉框是否可用
      referToFlag: true,
      // è¡¨å•校验规则
      rules: {
        paramType: [
          {required: true, message: '请选择参数类型', trigger: 'blur'}
        ],
        returnType: [
          {required: true, message: '请选择返回值类型', trigger: 'blur'}
        ],
        pushType: [
          {required: true, message: '请选择推送类型', trigger: 'change'}
        ],
        classifyName: [
          {required: true, message: '请选择推送系统', trigger: 'blur'}
        ],
        sourceSysName: [
          {required: true, message: '请选择分类选择', trigger: 'blur'}
        ],
        classPath: [
          {required: true, message: '请输入类路径', trigger: 'blur'}
        ],
        requestMethod: [
          {required: true, message: '请选择请求方式', trigger: 'blur'}
        ],
        requestUrl: [
          {required: true, message: '请输入请求地址', trigger: 'blur'}
        ],
        interfaceFunction: [
          {required: true, message: '请输入接口函数', trigger: 'blur'}
        ],
        nameSpace: [
          {required: true, message: '请输入命名空间', trigger: 'blur'}
        ],
        soapaction: [
          {required: true, message: '请输入soapaction', trigger: 'blur'}
        ],
        targName: [
          {required: true, message: '请输入参数名称', trigger: 'blur'}
        ],
        cxfaxis: [
          {required: true, message: '请输入cxfaxis', trigger: 'blur'}
        ]
      },
      // è¡¨æ ¼é…ç½®
      param: {
        option: {
          height: 200,
          addBtn: false,
          viewBtn: false,
          delBtn: false,
          editBtn: false,
          refreshBtn: false,
          columnBtn: false,
          menu: false,
          border: true,
          searchShowBtn: false,
          column: [{
            label: '参数名',
            prop: 'paramKey'
          }, {
            label: '参数值',
            prop: 'paramValue'
          }, {
            label: '是否使用',
            prop: 'usedFlag',
            dicData: [{
              label: '是', value: 'true'
            }, {
              label: '否', value: 'false'
            }]
          }]
        },
        data: [],
        selectRow: {}
      },
      // æžšä¸¾å‚照表格配置
      header: {
        option: {
          height: 200,
          addBtn: false,
          viewBtn: false,
          delBtn: false,
          editBtn: false,
          refreshBtn: false,
          menu: false,
          border: true,
          searchShowBtn: false,
          column: [{
            label: '头参数名称',
            prop: 'headerKey'
          }, {
            label: '头参数值',
            prop: 'headerValue'
          }, {
            label: '是否使用',
            prop: 'usedFlag',
            dicData: [{
              label: '是', value: 'true'
            }, {
              label: '否', value: 'false'
            }]
          }],
          data: [],
          // é€‰å®šè¡Œ
          selectRow: ''
        },
        dictEnums: []
      }
    }
  },
  created() {
    //this.geDictData('interfaceType', this.interfaceTypeList)
  },
  methods: {
    closeSubmitDialog() {
      this.resetForm();
      this.showSubmitDialog = false;
    },
    resetForm() {
      this.formData = {
        nullable: true,
        referTypeKey: '',
      };
      this.referToFlag = true;
      this.$refs.form.resetFields();
      this.dictEnums = [];
    },
    setReferValue(data) {
      if (data.field) {
        this.formData[data.field] = data.value || "";
        this.formData[data.showField] = data.text || "";
      }
      if (data.fieldMap) {
        //说明需要映射
        for (let key in data.fieldMap) {
          let mapFields = data.fieldMap[key].split(",");
          let value = [];
          data.rawData.forEach(_item => {
            var temp;
            if (!_item.attributes) {
              _item.attributes = _item;
            }
            if (mapFields.length == 1) {
              var mapField = mapFields[0];
              if (mapField.indexOf("attribute.") > -1) {
                temp = _item['attributes'][mapField.subString("attribute.".length)];
              } else {
                temp = _item['attributes'][mapField] || _item[mapField];
              }
            } else {
              //有多个
              var mutiTemp = [];
              layui.each(mapFields, function (_indexField, _itemField) {
                if (_itemField.indexOf("attribute.") > -1) {
                  mutiTemp.push(_item['attributes'][_itemField.subString("attribute.".length)]);
                } else {
                  mutiTemp.push(_item['attributes'][_itemField] || _item[_itemField]);
                }
              });
              temp = mutiTemp.join(' ');
            }
            if (temp != null && temp != '') {
              value.push(temp);
            }
          })
          this.formData[key] = value.join(',');
        }
      }
    }
    ,
    submitAttribute() {
      const that = this;
      this.$refs.form.validate(function (pass, field) {
        if (pass) {
          add(that.formData).then(res => {
            that.$message.success("保存成功");
            that.showSubmitDialog = false;
            that.formData = {};
            that.$emit('refreshTable');
          });
        } else {
          that.$message.error('必填');
        }
      })
    },
    cancelSubmit() {
      this.closeSubmitDialog();
    },
    // å±žæ€§ç±»åž‹ä¸‹æ‹‰æ¡†é€‰æ‹©äº‹ä»¶
    typeSelectChange(value) {
      if (value == 'VTString') {
        this.$set(this.formData, "maxLength", 150)
      } else if (value == 'VTInteger') {
        this.$set(this.formData, "maxLength", 50)
      } else if (value == 'VTBoolean') {
        this.$set(this.formData, "maxLength", 5)
      } else if (value == 'VTDouble') {
        this.$set(this.formData, "maxLength", 26)
        this.$set(this.formData, "precision", 8)
      } else if (value == 'VTLong') {
        this.$set(this.formData, "maxLength", 150)
      } else if (value == 'VTDate' || value == 'VTTime' || value == 'VTDateTime') {
        this.$set(this.formData, "maxLength", 6)
      } else {
        this.$set(this.formData, "maxLength", 50)
      }
      this.formData.typeCode = 'attributeType';
      this.formData.typeKey = value;
    },
    // å¼‚步获取字典数据
    geDictData(dictKey, list) {
      getDictionary({code: dictKey}).then((res) => {
        if (res.data && res.data.code === 200) {
          let dictData = (res.data.data || []).map((itm) => {
            itm.value = itm.dictValue;
            itm.key = itm.dictKey;
            return itm;
          });
          list = dictData;
        }
      });
    },
    handleClick(tab) {
      // å› ä¸ºåªèƒ½å‚照和枚举二选一。所以在切换的时候把属性给清空。
      if (tab.name === 'enumTab') {
        this.enumInitFlag = true;
        this.referInitFlag = false;
      } else {
        this.enumInitFlag = false;
        this.referInitFlag = true;
      }
    }
  }
}
</script>
<style>
.btmTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
  display: none !important;
}
.enumTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
  display: none !important;
}
.dockingForm .el-form-item__label{width: 130px;}
.dockingForm .el-form-item__content .el-input>.el-input__inner,.dockingForm .el-input-number--medium {
  width: 300px !important;
}
.dockingForm .el-form-item__content{
  width :300px !important;
}
</style>