lilinfeng 2 months ago
parent
commit
ada6e1adb4

+ 2 - 2
src/utils/apiUrl.js

@@ -3,8 +3,8 @@ module.exports = {
   // APIURl: "http://10.0.0.112:30000",
   // APIURl: "http://10.21.12.137:30000",
   // APIURl: "http://192.168.103.104:58080",
-  APIURl: "https://test.api.shidaiyun.net",
-  // APIURl: "https://api.shidaiyun.net",
+  // APIURl: "https://test.api.shidaiyun.net",
+  APIURl: "https://api.shidaiyun.net",
   // APIURl: "http://10.21.12.250:30000",
 
 

+ 117 - 0
src/views/governmentCloud/labelmanagement/Detail.vue

@@ -0,0 +1,117 @@
+<template>
+<el-dialog title="详情"
+           :close-on-click-modal="false" append-to-body
+           :visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll
+           width="600px">
+<el-row :gutter="15" class="">
+<el-form ref="formRef" :model="dataForm" size="small" label-width="100px" label-position="right" >
+    <template v-if="!loading">
+            <el-col :span="24"  >
+                <jnpf-form-tip-item  label="标签名称"  
+ prop="labName"  >
+                    <JnpfInput    v-model="dataForm.labName"
+ placeholder="请输入"  disabled
+ detailed  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.labName">
+                </JnpfInput>
+                </jnpf-form-tip-item>
+            </el-col>
+            <el-col :span="24"  >
+                <jnpf-form-tip-item  label="标签颜色"  
+ prop="color"  >
+                    <JnpfInput    v-model="dataForm.color"
+ placeholder="请输入"  disabled
+ detailed  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.color">
+                </JnpfInput>
+                </jnpf-form-tip-item>
+            </el-col>
+            <el-col :span="24"  >
+                <jnpf-form-tip-item  label="备注"  
+ prop="remark"  >
+                        <p>{{dataForm.remark}}</p>
+                </jnpf-form-tip-item>
+            </el-col>
+    </template>
+</el-form>
+    </el-row>
+    <span slot="footer" class="dialog-footer">
+        <el-button @click="visible = false"> 取 消</el-button>
+    </span>
+    <Detail v-if="detailVisible" ref="Detail" @close="detailVisible = false" />
+    </el-dialog>
+</template>
+<script>
+    import request from '@/utils/request'
+
+    import { getConfigData } from '@/api/onlineDev/visualDev'
+    import jnpf from '@/utils/jnpf'
+    import Detail from '@/views/basic/dynamicModel/list/detail'
+    import { thousandsFormat } from "@/components/Generator/utils/index"
+    export default {
+        components: { Detail},
+        props: [],
+        data() {
+            return {
+                visible: false,
+                detailVisible: false,
+                loading: false,
+
+                //掩码配置
+                maskConfig: {
+                            labName: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
+                            color: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
+                },
+                //定位属性
+                locationScope: {
+                },
+
+            dataForm: {
+
+            },
+
+        }
+        },
+        computed: {},
+        watch: {},
+        created() {
+
+        },
+        mounted() {},
+        methods: {
+            toDetail(defaultValue, modelId) {
+                if (!defaultValue) return
+                getConfigData(modelId).then(res => {
+                    if (!res.data || !res.data.formData) return
+                    let formData = JSON.parse(res.data.formData)
+                    formData.popupType = 'general'
+                    this.detailVisible = true
+                    this.$nextTick(() => {
+                        this.$refs.Detail.init(formData, modelId, defaultValue)
+                    })
+                })
+            },
+            dataInfo(dataAll){
+                let _dataAll =dataAll
+                this.dataForm = _dataAll
+            },
+
+            init(id) {
+                this.dataForm.id = id || 0;
+                this.visible = true;
+                this.$nextTick(() => {
+                    if(this.dataForm.id){
+                        this.loading = true
+                        request({
+                            url: '/api/mp/LabelManagement/detail/'+this.dataForm.id,
+                            method: 'get'
+                        }).then(res => {
+                            this.dataInfo(res.data)
+                            this.loading = false
+                        })
+                    }
+
+                })
+            },
+        },
+    }
+
+</script>

File diff suppressed because it is too large
+ 0 - 0
src/views/governmentCloud/labelmanagement/columnList.js


+ 451 - 0
src/views/governmentCloud/labelmanagement/form.vue

@@ -0,0 +1,451 @@
+
+
+
+    <template>
+        <el-dialog :title="!dataForm.id ? '新建' :'编辑'"
+                   :close-on-click-modal="false" append-to-body
+                   :visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll
+                   width="600px">
+        <el-row :gutter="15" class="">
+    <el-form ref="formRef" :model="dataForm" :rules="dataRule" size="small" label-width="100px" label-position="right" >
+    <template v-if="!loading">
+        <!-- 具体表单 -->
+        <el-col :span="24" >
+        <jnpf-form-tip-item
+ label="标签名称"              align="left"
+ prop="labName" >
+        <JnpfInput   v-model="dataForm.labName" @change="changeData('labName',-1)" 
+ placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.labName">
+    </JnpfInput>
+    </jnpf-form-tip-item>
+        </el-col>
+        <el-col :span="24" >
+        <jnpf-form-tip-item
+ label="标签颜色"              align="left"
+ prop="color" >
+        <JnpfInput   v-model="dataForm.color" @change="changeData('color',-1)" 
+ placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.color">
+    </JnpfInput>
+    </jnpf-form-tip-item>
+        </el-col>
+        <el-col :span="24" >
+        <jnpf-form-tip-item
+ label="备注"              align="left"
+ prop="remark" >
+        <JnpfTextarea   v-model="dataForm.remark" @change="changeData('remark',-1)" 
+ placeholder="请输入"  :style='{"width":"100%"}' true  type="textarea"  :autosize='{"minRows":4,"maxRows":4}'  :maskConfig = "maskConfig.remark">
+    </JnpfTextarea>
+    </jnpf-form-tip-item>
+        </el-col>
+        <!-- 表单结束 -->
+    </template>
+    </el-form>
+    <SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
+                  ref="selectDialog" @select="addForSelect" @close="closeForSelect"/>
+    </el-row>
+    <span slot="footer" class="dialog-footer">
+                    <div class="upAndDown-button" v-if="dataForm.id">
+                <el-button @click="prev" :disabled='prevDis'>
+                  {{'上一条'}}
+                </el-button>
+                <el-button @click="next" :disabled='nextDis'>
+                  {{'下一条'}}
+                </el-button>
+              </div>
+                <el-button type="primary" @click="dataFormSubmit(2)" :loading="continueBtnLoading">
+            {{!dataForm.id ?'确定并新增':'确定并继续'}}</el-button>
+              <el-button @click="visible = false"> 取 消</el-button>
+              <el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading"> 确 定</el-button>
+        </span>
+    </el-dialog>
+    </template>
+
+
+<script>
+    import request from '@/utils/request'
+    import {mapGetters} from "vuex";
+    import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
+    import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
+    import { getDefaultCurrentValueUserId } from '@/api/permission/user'
+    import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize'
+    import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js'
+    import { thousandsFormat } from "@/components/Generator/utils/index"
+    import SelectDialog from '@/components/SelectDialog'
+
+    export default {
+        components: { SelectDialog },
+        props: [],
+        data() {
+        return {
+            dataFormSubmitType: 0,
+            continueBtnLoading: false,
+            index: 0,
+            prevDis: false,
+            nextDis: false,
+            allList: [],
+            visible: false,
+            loading: false,
+            btnLoading: false,
+            formRef: 'formRef',
+            setting:{},
+            eventType: '',
+            userBoxVisible:false,
+            selectDialogVisible: false,
+            currTableConf:{},
+            dataValueAll:{},
+            addTableConf:{
+            },
+            //可选范围默认值
+            ableAll:{
+            },
+            tableRows:{
+        },
+            Vmodel:"",
+            currVmodel:"",
+            dataForm: {
+                                    createBy : undefined,
+                                    createTime : undefined,
+                                    updateBy : undefined,
+                                    updateTime : undefined,
+                                labName : undefined,
+                                color : undefined,
+                                remark : undefined,
+            },
+            tableRequiredData: {},
+            dataRule:
+            {
+                            labName: [
+                                {
+                                    required: true,
+                                    message: '请输入',
+                                    trigger: 'blur'
+                                },
+                        ],
+                            color: [
+                                {
+                                    required: true,
+                                    message: '请输入',
+                                    trigger: 'blur'
+                                },
+                        ],
+            },
+            childIndex:-1,
+            isEdit:false,
+            interfaceRes: {
+                        createBy:[] ,
+                        createTime:[] ,
+                        updateBy:[] ,
+                        updateTime:[] ,
+                        labName:[] ,
+                        color:[] ,
+                        remark:[] ,
+        },
+            //掩码配置
+            maskConfig: {
+                            labName: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
+                            color: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
+                },
+            //定位属性
+            locationScope: {
+                },
+            }
+        },
+        computed: {
+            ...mapGetters(['userInfo']),
+
+
+        },
+        watch: {},
+        created() {
+            this.dataAll()
+            this.initDefaultData()
+            this.dataValueAll = JSON.parse(JSON.stringify(this.dataForm))
+        },
+        mounted() {},
+        methods: {
+            prev() {
+                this.index--
+                if (this.index === 0) {
+                    this.prevDis = true
+                }
+                this.nextDis = false
+                for (let index = 0; index < this.allList.length; index++) {
+                    const element = this.allList[index];
+                    if (this.index == index) {
+                        this.getInfo(element.id)
+                    }
+                }
+            },
+            next() {
+                this.index++
+                if (this.index === this.allList.length - 1) {
+                    this.nextDis = true
+                }
+                this.prevDis = false
+                for (let index = 0; index < this.allList.length; index++) {
+                    const element = this.allList[index];
+                    if (this.index == index) {
+                        this.getInfo(element.id)
+                    }
+                }
+            },
+            getInfo(id) {
+                request({
+                    url: '/api/mp/LabelManagement/'+ id,
+                    method: 'get'
+                }).then(res => {
+                    this.dataInfo(res.data)
+                });
+            },
+            goBack() {
+                this.visible = false
+                this.$emit('refreshDataList', true)
+            },
+            changeData(model, index) {
+                this.isEdit = false
+                this.childIndex = index
+                let modelAll = model.split("-");
+                let faceMode = "";
+                for (let i = 0; i < modelAll.length; i++) {
+                    faceMode += modelAll[i];
+                }
+                for (let key in this.interfaceRes) {
+                    if (key != faceMode) {
+                        let faceReList = this.interfaceRes[key]
+                        for (let i = 0; i < faceReList.length; i++) {
+                            if (faceReList[i].relationField == model) {
+                                let options = 'get' + key + 'Options';
+                                if(this[options]){
+                                    this[options]()
+                                }
+                                this.changeData(key, index)
+                            }
+                        }
+                    }
+                }
+            },
+            changeDataFormData(type, data, model,index,defaultValue,edit) {
+                if(!edit) {
+                    if (type == 2) {
+                        for (let i = 0; i < this.dataForm[data].length; i++) {
+                            if (index == -1) {
+                                this.dataForm[data][i][model] = defaultValue
+                            } else if (index == i) {
+                                this.dataForm[data][i][model] = defaultValue
+                            }
+                        }
+                    } else {
+                        this.dataForm[data] = defaultValue
+                    }
+                }
+            },
+            dataAll(){
+            },
+            clearData(){
+                this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
+            },
+            init(id,isDetail,allList,leftTreeActiveInfo) {
+                this.prevDis = false
+                this.nextDis = false
+                this.allList = allList || []
+                if (allList.length) {
+                    this.index = this.allList.findIndex(item => item.id === id)
+                    if (this.index == 0) {
+                        this.prevDis = true
+                    }
+                    if (this.index == this.allList.length - 1) {
+                        this.nextDis = true
+                    }
+                } else {
+                    this.prevDis = true
+                    this.nextDis = true
+                }
+                this.dataForm.id = id || 0;
+                this.visible = true;
+                this.$nextTick(() => {
+                    if(this.dataForm.id){
+                        this.loading = true
+                        request({
+                            url: '/api/mp/LabelManagement/'+this.dataForm.id,
+                            method: 'get'
+                        }).then(res => {
+                            this.dataInfo(res.data)
+                            this.loading = false
+                        });
+                    }else{
+                        this.clearData()
+                        this.initDefaultData()
+                        this.dataForm = { ...this.dataForm, ...leftTreeActiveInfo }
+                    }
+                });
+                this.$store.commit('generator/UPDATE_RELATION_DATA', {})
+            },
+            //初始化默认数据
+            initDefaultData() {
+
+            },
+            // 表单提交
+            dataFormSubmit(type) {
+                this.dataFormSubmitType = type ? type : 0
+                this.$refs['formRef'].validate((valid) => {
+                    if (valid) {
+                        this.request()
+                    }
+                })
+            },
+            request() {
+                let _data =this.dataList()
+                if (this.dataFormSubmitType == 2) {
+                    this.continueBtnLoading = true
+                } else {
+                    this.btnLoading = true
+                }
+                if (!this.dataForm.id) {
+                    request({
+                        url: '/api/mp/LabelManagement',
+                        method: 'post',
+                        data: _data
+                    }).then((res) => {
+                        this.$message({
+                            message: res.msg,
+                            type: 'success',
+                            duration: 1000,
+                            onClose: () => {
+                                if (this.dataFormSubmitType == 2) {
+                                    this.$nextTick(() => {
+                                        this.clearData()
+                                        this.initDefaultData()
+                                    })
+                                    this.continueBtnLoading = false
+                                    return
+                                }
+                                this.visible = false
+                                this.btnLoading = false
+                                this.$emit('refresh', true)
+                            }
+                        })
+                    }).catch(()=>{
+                        this.btnLoading = false
+                        this.continueBtnLoading = false
+                    })
+                }else{
+                    request({
+                        url: '/api/mp/LabelManagement/'+this.dataForm.id,
+                        method: 'PUT',
+                        data: _data
+                    }).then((res) => {
+                        this.$message({
+                            message: res.msg,
+                            type: 'success',
+                            duration: 1000,
+                            onClose: () => {
+                                if (this.dataFormSubmitType == 2) return this.continueBtnLoading = false
+                                this.visible = false
+                                this.btnLoading = false
+                                this.$emit('refresh', true)
+                            }
+                        })
+                    }).catch(()=>{
+                        this.btnLoading = false
+                        this.continueBtnLoading = false
+                    })
+                }
+            },
+            openSelectDialog(key,value) {
+                this.currTableConf=this.addTableConf[key + value]
+                this.currVmodel=key
+                this.selectDialogVisible = true
+                this.$nextTick(() => {
+                    this.$refs.selectDialog.init()
+                })
+            },
+            addForSelect(data) {
+                this.closeForSelect()
+                for (let i = 0; i < data.length; i++) {
+                    let t = data[i]
+                    if(this['get'+this.currVmodel]){
+                        this['get'+this.currVmodel](t,true)
+                    }
+                }
+            },
+            closeForSelect() {
+                this.selectDialogVisible = false
+            },
+            dateTime(timeRule, timeType, timeTarget, timeValueData, dataValue) {
+                let timeDataValue = null;
+                let timeValue = Number(timeValueData)
+                if (timeRule) {
+                    if (timeType == 1) {
+                        timeDataValue = timeValue
+                    } else if (timeType == 2) {
+                        timeDataValue = dataValue
+                    } else if (timeType == 3) {
+                        timeDataValue = new Date().getTime()
+                    } else if (timeType == 4) {
+                        let previousDate = '';
+                        if (timeTarget == 1 || timeTarget == 2) {
+                            previousDate = getDateDay(timeTarget, timeType, timeValue)
+                            timeDataValue = new Date(previousDate).getTime()
+                        } else if (timeTarget == 3) {
+                            previousDate = getBeforeData(timeValue)
+                            timeDataValue = new Date(previousDate).getTime()
+                        } else {
+                            timeDataValue = getBeforeTime(timeTarget, timeValue).getTime()
+                        }
+                    } else if (timeType == 5) {
+                        let previousDate = '';
+                        if (timeTarget == 1 || timeTarget == 2) {
+                            previousDate = getDateDay(timeTarget, timeType, timeValue)
+                            timeDataValue = new Date(previousDate).getTime()
+                        } else if (timeTarget == 3) {
+                            previousDate = getLaterData(timeValue)
+                            timeDataValue = new Date(previousDate).getTime()
+                        } else {
+                            timeDataValue = getLaterTime(timeTarget, timeValue).getTime()
+                        }
+                    }
+                }
+                return timeDataValue;
+            },
+            time(timeRule, timeType, timeTarget, timeValue, formatType, dataValue) {
+                let format = formatType == 'HH:mm' ? 'HH:mm:00' : formatType
+                let timeDataValue = null
+                if (timeRule) {
+                    if (timeType == 1) {
+                        timeDataValue = timeValue || '00:00:00'
+                        if (timeDataValue.split(':').length == 3) {
+                            timeDataValue = timeDataValue
+                        } else {
+                            timeDataValue = timeDataValue + ':00'
+                        }
+                    } else if (timeType == 2) {
+                        timeDataValue = dataValue
+                    } else if (timeType == 3) {
+                        timeDataValue = this.jnpf.toDate(new Date(), format)
+                    } else if (timeType == 4) {
+                        let previousDate = '';
+                        previousDate = getBeforeTime(timeTarget, timeValue)
+                        timeDataValue = this.jnpf.toDate(previousDate, format)
+                    } else if (timeType == 5) {
+                        let previousDate = '';
+                        previousDate = getLaterTime(timeTarget, timeValue)
+                        timeDataValue = this.jnpf.toDate(previousDate, format)
+                    }
+                }
+                return timeDataValue;
+            },
+            dataList(){
+                var _data = this.dataForm;
+                return _data;
+            },
+            dataInfo(dataAll){
+                let _dataAll =dataAll
+                this.dataForm = _dataAll
+                this.isEdit = true
+                this.dataAll()
+                this.childIndex=-1
+            },
+        },
+    }
+
+</script>

+ 514 - 0
src/views/governmentCloud/labelmanagement/index.vue

@@ -0,0 +1,514 @@
+<template>
+    <div class="JNPF-common-layout">
+        <div class="JNPF-common-layout-center">
+            <el-row class="JNPF-common-search-box" :gutter="16">
+                <el-form @submit.native.prevent>
+                    <el-col :span="6">
+                        <el-form-item label="创建人">
+                            <JnpfUserSelect v-model="query.createBy" placeholder="请选择" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="标签名称">
+                            <el-input v-model="query.labName" placeholder="请输入" clearable>
+                            </el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item>
+                            <el-button type="primary" icon="el-icon-search"
+                                @click="search()">查询</el-button>
+                            <el-button icon="el-icon-refresh-right" @click="reset()">重置</el-button>
+                        </el-form-item>
+                    </el-col>
+                </el-form>
+            </el-row>
+            <div class="JNPF-common-layout-main JNPF-flex-main">
+                <div class="JNPF-common-head">
+                    <div>
+                        <el-button type="primary" icon="icon-ym icon-ym-btn-add"
+                            @click="addOrUpdateHandle()">新增
+                        </el-button>
+                    </div>
+                    <div class="JNPF-common-head-right">
+                        <el-tooltip content="高级查询" placement="top" v-if="true">
+                            <el-link icon="icon-ym icon-ym-filter JNPF-common-head-icon"
+                                :underline="false" @click="openSuperQuery()" />
+                        </el-tooltip>
+                        <el-tooltip effect="dark" :content="$t('common.refresh')" placement="top">
+                            <el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon"
+                                :underline="false" @click="initData()" />
+                        </el-tooltip>
+                    </div>
+                </div>
+                <JNPF-table v-loading="listLoading" :data="list" @sort-change='handleTableSort'
+                    :header-cell-class-name="handleHeaderClass" :has-c="hasBatchBtn"
+                    @selection-change="handleSelectionChange" :span-method="arraySpanMethod">
+                    <el-table-column prop="labName" label="标签名称" align="left" show-overflow-tooltip>
+                        <template slot-scope="scope">
+                            <JnpfInput v-model="scope.row.labName" detailed showOverflow />
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="color" label="标签颜色" align="left" show-overflow-tooltip>
+                        <template slot-scope="scope">
+                            <JnpfInput v-model="scope.row.color" detailed showOverflow />
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="createBy" label="创建人" align="left" show-overflow-tooltip>
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="创建时间" align="left"
+                        show-overflow-tooltip>
+                    </el-table-column>
+                    <el-table-column prop="remark" label="备注" align="left" show-overflow-tooltip>
+                    </el-table-column>
+                    <el-table-column label="操作" fixed="right" width="150">
+                        <template slot-scope="scope">
+                            <el-button type="text" @click="addOrUpdateHandle(scope.row)">编辑
+                            </el-button>
+                            <el-button type="text" class="JNPF-table-delBtn"
+                                @click="handleDel(scope.row.id)">删除
+                            </el-button>
+                            <el-button type="text" @click="goDetail(scope.row.id)">详情
+                            </el-button>
+                        </template>
+                    </el-table-column>
+                </JNPF-table>
+                <pagination :total="total" :page.sync="listQuery.currentPage"
+                    :limit.sync="listQuery.pageSize" @pagination="initData" />
+            </div>
+        </div>
+        <JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh" />
+        <ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
+
+        <ImportBox v-if="uploadBoxVisible" ref="UploadBox" @refresh="initData" />
+        <Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible=false" />
+        <ToFormDetail v-if="toFormDetailVisible" ref="toFormDetail"
+            @close="toFormDetailVisible = false" />
+        <SuperQuery v-if="superQueryVisible" ref="SuperQuery" :columnOptions="superQueryJson"
+            @superQuery="superQuery" />
+    </div>
+</template>
+
+<script>
+import request from '@/utils/request'
+import { mapGetters } from "vuex";
+import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
+import JNPFForm from './form'
+import Detail from './Detail'
+import ExportBox from '@/components/ExportBox'
+import ToFormDetail from '@/views/basic/dynamicModel/list/detail'
+import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
+import { getConfigData } from '@/api/onlineDev/visualDev'
+import { getDefaultCurrentValueUserIdAsync } from '@/api/permission/user'
+import { getDefaultCurrentValueDepartmentIdAsync } from '@/api/permission/organize'
+import columnList from './columnList'
+import { thousandsFormat } from "@/components/Generator/utils/index"
+import SuperQuery from '@/components/SuperQuery'
+import superQueryJson from './superQueryJson'
+import { noGroupList } from '@/components/Generator/generator/comConfig'
+
+export default {
+    components: {
+        JNPFForm,
+        Detail,
+        ExportBox, ToFormDetail, SuperQuery
+    },
+    data() {
+        return {
+
+            keyword: '',
+            expandsTree: true,
+            refreshTree: true,
+            toFormDetailVisible: false,
+            hasBatchBtn: false,
+            expandObj: {},
+            columnOptions: [],
+            mergeList: [],
+            exportList: [],
+            columnList,
+
+            superQueryVisible: false,
+            superQueryJson,
+            uploadBoxVisible: false,
+            detailVisible: false,
+            query: {
+                createBy: undefined,
+                labName: undefined,
+            },
+            defListQuery: {
+                sort: 'desc',
+                sidx: '',
+            },
+            //排序默认值
+            defaultSortConfig: [],
+            treeProps: {
+                children: 'children',
+                label: 'fullName',
+                value: 'id',
+                isLeaf: 'isLeaf'
+            },
+            list: [],
+            listLoading: true,
+            multipleSelection: [],
+            total: 0,
+            queryData: {},
+            listQuery: {
+                superQueryJson: '',
+                currentPage: 1,
+                pageSize: 20,
+                sort: "",
+                sidx: "",
+            },
+            //多列排序
+            ordersList: [],
+            formVisible: false,
+            flowVisible: false,
+            flowListVisible: false,
+            flowList: [],
+            exportBoxVisible: false,
+            interfaceRes: {
+            },
+            //掩码配置
+            maskConfig: {
+                labName: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                color: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+            },
+        }
+    },
+    computed: {
+        ...mapGetters(['userInfo']),
+        menuId() {
+            return this.$route.meta.modelId || ''
+        }
+    },
+    created() {
+        this.getColumnList(),
+            this.initSearchDataAndListData()
+        this.queryData = JSON.parse(JSON.stringify(this.query))
+        this.getHasBatchBtn();
+        //排序默认值
+        this.setDefaultQuery(this.defaultSortConfig);
+    },
+    methods: {
+        getHasBatchBtn() {
+            let btnsList = []
+            this.hasBatchBtn = btnsList.some(o => ['batchRemove', 'batchPrint', 'download'].includes(o))
+        },
+
+        treeRefresh() {
+            this.keyword = ''
+            this.treeActiveId = ''
+            this.leftTreeActiveInfo = {}
+            this.$refs.treeBox.setCurrentKey(null)
+            this.getTreeView()
+        },
+
+        toDetail(defaultValue, modelId) {
+            if (!defaultValue) return
+            getConfigData(modelId).then(res => {
+                if (!res.data || !res.data.formData) return
+                let formData = JSON.parse(res.data.formData)
+                formData.popupType = 'general'
+                this.toFormDetailVisible = true
+                this.$nextTick(() => {
+                    this.$refs.toFormDetail.init(formData, modelId, defaultValue)
+                })
+            })
+        },
+        toggleTreeExpand(expands) {
+            this.refreshTree = false
+            this.expandsTree = expands
+            this.$nextTick(() => {
+                this.refreshTree = true
+                this.$nextTick(() => {
+                    this.$refs.treeBox.setCurrentKey(null)
+                })
+            })
+        },
+        filterNode(value, data) {
+            if (!value) return true;
+            return data[this.treeProps.label].indexOf(value) !== -1;
+        },
+        loadNode(node, resolve) {
+            const nodeData = node.data
+            const config = {
+                treeInterfaceId: "",
+                treeTemplateJson: []
+            }
+            if (config.treeInterfaceId) {
+                //这里是为了拿到参数中关联的字段的值,后端自行拿
+                if (config.treeTemplateJson && config.treeTemplateJson.length) {
+                    for (let i = 0; i < config.treeTemplateJson.length; i++) {
+                        const element = config.treeTemplateJson[i];
+                        element.defaultValue = nodeData[element.relationField] || ''
+                    }
+                }
+                //参数
+                let query = {
+                    paramList: config.treeTemplateJson || [],
+                }
+                //接口
+                getDataInterfaceRes(config.treeInterfaceId, query).then(res => {
+                    let data = res.data
+                    if (Array.isArray(data)) {
+                        resolve(data);
+                    } else {
+                        resolve([]);
+                    }
+                })
+            }
+        },
+        getColumnList() {
+            // 没有开启权限
+            this.columnOptions = this.transformColumnList(this.columnList)
+        },
+        transformColumnList(columnList) {
+            let list = []
+            for (let i = 0; i < columnList.length; i++) {
+                const e = columnList[i];
+                if (!e.prop.includes('-')) {
+                    list.push(e)
+                } else {
+                    let prop = e.prop.split('-')[0]
+                    let label = e.label.split('-')[0]
+                    let vModel = e.prop.split('-')[1]
+                    let newItem = {
+                        align: "center",
+                        jnpfKey: "table",
+                        prop,
+                        label,
+                        children: []
+                    }
+                    e.vModel = vModel
+                    if (!this.expandObj.hasOwnProperty(`${prop}Expand`)) this.$set(this.expandObj, `${prop}Expand`, false)
+                    if (!list.some(o => o.prop === prop)) list.push(newItem)
+                    for (let i = 0; i < list.length; i++) {
+                        if (list[i].prop === prop) {
+                            list[i].children.push(e)
+                            break
+                        }
+                    }
+                }
+            }
+            this.getMergeList(list)
+            this.getExportList(list)
+            return list
+        },
+        arraySpanMethod({ column }) {
+            for (let i = 0; i < this.mergeList.length; i++) {
+                if (column.property == this.mergeList[i].prop) {
+                    return [this.mergeList[i].rowspan, this.mergeList[i].colspan]
+                }
+            }
+        },
+        getMergeList(list) {
+            let newList = JSON.parse(JSON.stringify(list))
+            newList.forEach(item => {
+                if (item.children && item.children.length) {
+                    let child = {
+                        prop: item.prop + '-child-first'
+                    }
+                    item.children.unshift(child)
+                }
+            })
+            newList.forEach(item => {
+                if (item.children && item.children.length) {
+                    item.children.forEach((child, index) => {
+                        if (index == 0) {
+                            this.mergeList.push({
+                                prop: child.prop,
+                                rowspan: 1,
+                                colspan: item.children.length
+                            })
+                        } else {
+                            this.mergeList.push({
+                                prop: child.prop,
+                                rowspan: 0,
+                                colspan: 0
+                            })
+                        }
+                    })
+                } else {
+                    this.mergeList.push({
+                        prop: item.prop,
+                        rowspan: 1,
+                        colspan: 1
+                    })
+                }
+            })
+        },
+        getExportList(list) {
+            let exportList = []
+            for (let i = 0; i < list.length; i++) {
+                if (list[i].jnpfKey === 'table') {
+                    for (let j = 0; j < list[i].children.length; j++) {
+                        exportList.push(list[i].children[j])
+                    }
+                } else {
+                    exportList.push(list[i])
+                }
+            }
+            this.exportList = exportList.filter(o => !noGroupList.includes(o.__config__.jnpfKey))
+        },
+        goDetail(id) {
+            this.detailVisible = true
+            this.$nextTick(() => {
+                this.$refs.Detail.init(id)
+            })
+        },
+        sortChange({ column, prop, order }) {
+            this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
+            this.listQuery.sidx = !order ? '' : prop
+            this.initData()
+        },
+        async initSearchDataAndListData() {
+            await this.initSearchData()
+            this.initData()
+        },
+        //初始化查询的默认数据
+        async initSearchData() {
+        },
+        initData() {
+            // this.queryData = JSON.parse(JSON.stringify(this.query))导致重置失效
+            this.listLoading = true;
+            let _query = {
+                ...this.listQuery,
+                ...this.query,
+                ...this.defListQuery,
+                keyword: this.keyword,
+                dataType: 0,
+                menuId: this.menuId,
+                moduleId: '610009872183864709',
+                type: 1,
+            };
+            request({
+                url: `/api/mp/LabelManagement/getList`,
+                method: 'post',
+                data: _query
+            }).then(res => {
+                var _list = [];
+                for (let i = 0; i < res.data.list.length; i++) {
+                    let _data = res.data.list[i];
+                    _list.push(_data)
+                }
+                this.list = _list.map(o => ({
+                    ...o,
+                    ...this.expandObj,
+                }))
+                this.total = res.data.pagination.total
+                this.listLoading = false
+            })
+        },
+        handleDel(id) {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                type: 'warning'
+            }).then(() => {
+                request({
+                    url: `/api/mp/LabelManagement/${id}`,
+                    method: 'DELETE'
+                }).then(res => {
+                    this.$message({
+                        type: 'success',
+                        message: res.msg,
+                        onClose: () => {
+                            this.initData()
+                        }
+                    });
+                })
+            }).catch(() => {
+            });
+        },
+        handelUpload() {
+            this.uploadBoxVisible = true
+            this.$nextTick(() => {
+                this.$refs.UploadBox.init("", "mp/LabelManagement", 0, this.flowList)
+            })
+        },
+        openSuperQuery() {
+            this.superQueryVisible = true
+            this.$nextTick(() => {
+                this.$refs.SuperQuery.init()
+            })
+        },
+        superQuery(queryJson) {
+            this.listQuery.superQueryJson = queryJson
+            this.listQuery.currentPage = 1
+            this.initData()
+        },
+        addOrUpdateHandle(row, isDetail) {
+            let id = row ? row.id : ""
+            this.formVisible = true
+            if (!this.treeActiveId) {
+                this.leftTreeActiveInfo = {}
+            }
+            this.$nextTick(() => {
+                this.$refs.JNPFForm.init(id, isDetail, this.list, this.leftTreeActiveInfo)
+            })
+        },
+        exportData() {
+            this.exportBoxVisible = true
+            this.$nextTick(() => {
+                this.$refs.ExportBox.init(this.exportList, this.multipleSelection)
+            })
+        },
+        download(data) {
+            let query = { ...data, ...this.listQuery, ...this.query, menuId: this.menuId }
+            request({
+                url: `/api/mp/LabelManagement/Actions/Export`,
+                method: 'post',
+                data: query
+            }).then(res => {
+                if (!res.data.url) return
+                this.jnpf.downloadFile(res.data.url)
+                this.$refs.ExportBox.visible = false
+                this.exportBoxVisible = false
+            })
+        },
+        search() {
+            this.listQuery.currentPage = 1
+            this.listQuery.pageSize = 20
+            this.initData()
+        },
+        refresh(isrRefresh) {
+            this.formVisible = false
+            if (isrRefresh) this.reset()
+        },
+        reset() {
+            this.query = JSON.parse(JSON.stringify(this.queryData))
+            this.search()
+        },
+        colseFlow(isrRefresh) {
+            this.flowVisible = false
+            if (isrRefresh) this.reset()
+        },
+
+        //以下排序相关方法
+        setDefaultQuery(defaultSortList) {
+            const defaultSortConfig = (defaultSortList || []).map(o =>
+                (o.sort === 'desc' ? '-' : '') + o.field);
+            this.defListQuery.sidx = defaultSortConfig.join(',')
+        },
+        handleHeaderClass({ column }) {
+            column.order = column.multiOrder
+        },
+        handleTableSort({ column }) {
+            if (column.sortable !== 'custom') return
+            column.multiOrder = column.multiOrder === 'descending' ? 'ascending' : column.multiOrder ? '' : 'descending';
+            this.handleOrderChange(column.property, column.multiOrder)
+        },
+        handleOrderChange(orderColumn, orderState) {
+            let index = this.ordersList.findIndex(e => e.field === orderColumn);
+            let sort = orderState === 'ascending' ? 'asc' : orderState === 'descending' ? 'desc' : '';
+            if (index > -1) {
+                this.ordersList[index].sort = orderState;
+            } else {
+                this.ordersList.push({ field: orderColumn, sort });
+            }
+            this.ordersList = this.ordersList.filter(e => e.sort);
+            this.ordersList.length ? this.setDefaultQuery(this.ordersList) : this.setDefaultQuery(this.defaultSortConfig)
+            this.initData()
+        },
+        //以上排序相关方法
+    }
+}
+</script>

File diff suppressed because it is too large
+ 0 - 0
src/views/governmentCloud/labelmanagement/superQueryJson.js


Some files were not shown because too many files changed in this diff