|
@@ -0,0 +1,381 @@
|
|
|
+<template>
|
|
|
+ <div class="dictionaryItem">
|
|
|
+ <el-dialog title="数据字典" v-model="editEvaluaVisible" width="70vw" :close-on-click-modal="false">
|
|
|
+ <div class="dictionaryItemAll">
|
|
|
+ <div class="dictionaryItemBtn">
|
|
|
+ <div class="collectSeach">
|
|
|
+ <div class="exceed">
|
|
|
+ <span class="indicatorSpan">数据名称:</span>
|
|
|
+ <el-input v-model="dictionaryItem" placeholder="请输入数据名称"></el-input>
|
|
|
+ </div>
|
|
|
+ <seachs @handleSeach="getSeachData" @handleRest="resetSeach"></seachs>
|
|
|
+ </div>
|
|
|
+ <div class="PeriodBtn">
|
|
|
+ <btns
|
|
|
+ :showImport="false"
|
|
|
+ :showExport="false"
|
|
|
+ :showAdd="true"
|
|
|
+ :showSave="true"
|
|
|
+ :showDelete="true"
|
|
|
+ :disSave="changeDateSelect.length === 0 || changeDateSelect.length>1"
|
|
|
+ :disDelete="changeDateSelect.length === 0"
|
|
|
+ @handleAdd="handleAdd"
|
|
|
+ @handleEdit="handleEdit"
|
|
|
+ @handleDelete="handleDelete"
|
|
|
+ ></btns>
|
|
|
+ </div>
|
|
|
+ <div class="dictionaryItemTableData">
|
|
|
+ <el-table :data="dictionaryData" style="width: 100%" @select="rowClick" @select-all="rowClick">
|
|
|
+ <el-table-column type="selection" label="操作" align="center"></el-table-column>
|
|
|
+ <el-table-column label="数据主键" prop="dataKey" />
|
|
|
+ <el-table-column label="数据名称" prop="keyName" />
|
|
|
+ <el-table-column label="数据编码" prop="keyValue" />
|
|
|
+ <el-table-column label="排序" prop="orderNum" />
|
|
|
+ </el-table>
|
|
|
+ <el-pagination
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ :current-page="page.currentPage"
|
|
|
+ :page-size="page.pagesize"
|
|
|
+ layout="total, prev, pager, next, jumper"
|
|
|
+ :total="page.total">
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
+ <div class="onlyDialog">
|
|
|
+ <el-dialog :title="title" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
|
|
|
+ <div class="periodFrom">
|
|
|
+ <el-form :model="itemForm" :rules="rules" ref="itemForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">
|
|
|
+ <el-form-item label="数据主键" prop="dataKey">
|
|
|
+ <el-input v-model="itemForm.dataKey" placeholder="请输入数据主键"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="数据名称" prop="keyName">
|
|
|
+ <el-input v-model="itemForm.keyName" placeholder="请输入数据名称"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="数据编码" prop="keyValue">
|
|
|
+ <el-input v-model="itemForm.keyValue" placeholder="请输入数据编码"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="排序">
|
|
|
+ <el-input-number v-model="itemForm.orderNum" min="1" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <span class="dialog-footer">
|
|
|
+ <el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="savedictionaryItemMsg('itemForm')">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import addW from '../../assets/btnIcon/addW.png'
|
|
|
+import editW from '../../assets/btnIcon/editW.png'
|
|
|
+import deleteW from '../../assets/btnIcon/deleteW.png'
|
|
|
+import seachs from '../seachGroup.vue'
|
|
|
+import btns from '../elbuttonS.vue'
|
|
|
+import {apiGetBaseDataDictionaryListPage, apiPostBaseDataDictionarySave, apiPostBaseDataDictionaryRemove} from '../../api/api'
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ seachs, btns
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ addW: addW,
|
|
|
+ editW: editW,
|
|
|
+ deleteW: deleteW,
|
|
|
+ editEvaluaVisible: false,
|
|
|
+ isSave: false,
|
|
|
+ changeDateSelect: [],
|
|
|
+ dictionaryData: [],
|
|
|
+ dictionaryItem: '',
|
|
|
+ evaluationIndexData:[],
|
|
|
+ itemForm: {
|
|
|
+ keyName: '',
|
|
|
+ keyValue: '',
|
|
|
+ orderNum: 1,
|
|
|
+ dataKey: ''
|
|
|
+ },
|
|
|
+ rules: {
|
|
|
+ keyName: [
|
|
|
+ { required: true, message: '请输入数据名称', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ keyValue: [
|
|
|
+ { required: true, message: '请输入数据编码', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ dataKey: [
|
|
|
+ { required: true, message: '请输入数据主键', trigger: 'blur' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ page:{
|
|
|
+ pagesize: 12,
|
|
|
+ currentPage: 1,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ evalradio: {},
|
|
|
+ rowevalradio: {},
|
|
|
+ dialogVisible: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ init(row) {
|
|
|
+ this.editEvaluaVisible = true
|
|
|
+ this.dictionaryData = []
|
|
|
+ this.rowevalradio = row
|
|
|
+ this.getdictionaryData()
|
|
|
+ },
|
|
|
+ // 查询数据字典数据
|
|
|
+ getdictionaryData() {
|
|
|
+ let that = this
|
|
|
+ let params = {
|
|
|
+ pageNum: that.page.currentPage,
|
|
|
+ pageSize: that.page.pagesize,
|
|
|
+ superKey: that.rowevalradio.dataKey,
|
|
|
+ keyName: that.dictionaryItem
|
|
|
+ }
|
|
|
+ apiGetBaseDataDictionaryListPage(params).then(datas =>{
|
|
|
+ if (datas && datas.data) {
|
|
|
+ that.dictionaryData = datas.data.records
|
|
|
+ that.page.total = datas.data.total
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleSizeChange(val){
|
|
|
+ this.page.pagesize = val
|
|
|
+ this.getdictionaryData()
|
|
|
+ },
|
|
|
+ handleCurrentChange(val){
|
|
|
+ this.page.currentPage =val
|
|
|
+ this.getdictionaryData()
|
|
|
+ },
|
|
|
+ handleAdd() {
|
|
|
+ this.dialogVisible = true
|
|
|
+ this.isSave = false
|
|
|
+ this.title = '新增数据字典'
|
|
|
+ this.$nextTick(() =>{
|
|
|
+ this.itemForm = {
|
|
|
+ keyName: '',
|
|
|
+ keyValue: '',
|
|
|
+ orderNum: 1,
|
|
|
+ dataKey: ''
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleEdit() {
|
|
|
+ this.dialogVisible = true
|
|
|
+ this.isSave = true
|
|
|
+ this.title = '修改数据字典'
|
|
|
+ this.evalradio = this.changeDateSelect[0]
|
|
|
+ this.itemForm = {
|
|
|
+ keyName: this.evalradio.keyName,
|
|
|
+ keyValue: this.evalradio.keyValue,
|
|
|
+ orderNum: this.evalradio.orderNum,
|
|
|
+ dataKey: this.evalradio.dataKey
|
|
|
+ }
|
|
|
+ },
|
|
|
+ savedictionaryItemMsg(formName) {
|
|
|
+ let that = this
|
|
|
+ that.$refs[formName].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ that.saveAndEditIndicatorData()
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //新增/修改指标数据
|
|
|
+ saveAndEditIndicatorData() {
|
|
|
+ let that = this
|
|
|
+ let params = {
|
|
|
+ keyName: that.itemForm.keyName,
|
|
|
+ keyValue: that.itemForm.keyValue,
|
|
|
+ orderNum: that.itemForm.orderNum,
|
|
|
+ dataKey: that.itemForm.dataKey,
|
|
|
+ superKey: that.rowevalradio.dataKey
|
|
|
+ }
|
|
|
+ if (that.isSave) {
|
|
|
+ params.id = that.evalradio.id
|
|
|
+ }
|
|
|
+ apiPostBaseDataDictionarySave(params).then(datas =>{
|
|
|
+ if (datas) {
|
|
|
+ if (datas.success) {
|
|
|
+ if (!that.isSave) {
|
|
|
+ that.$message({
|
|
|
+ message: '数据字典新增成功',
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ that.$message({
|
|
|
+ message: '数据字典修改成功',
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ that.dialogVisible = false
|
|
|
+ that.changeDateSelect = []
|
|
|
+ that.getdictionaryData()
|
|
|
+ } else {
|
|
|
+ that.$message({
|
|
|
+ message: datas.message,
|
|
|
+ type: 'error'
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //删除指标数据
|
|
|
+ handleDelete() {
|
|
|
+ this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ let that = this
|
|
|
+ let paramsArr = []
|
|
|
+ that.changeDateSelect.forEach(it =>{
|
|
|
+ paramsArr.push(it.id)
|
|
|
+ })
|
|
|
+ apiPostBaseDataDictionaryRemove(paramsArr.join(',')).then(datas =>{
|
|
|
+ that.$message({
|
|
|
+ type: 'success',
|
|
|
+ message: '删除成功!'
|
|
|
+ });
|
|
|
+ that.changeDateSelect = []
|
|
|
+ that.getdictionaryData()
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ rowClick(selection, row) {
|
|
|
+ this.changeDateSelect = selection
|
|
|
+ },
|
|
|
+ getSeachData() {
|
|
|
+ this.page.currentPage = 1
|
|
|
+ this.getdictionaryData()
|
|
|
+ },
|
|
|
+ resetSeach() {
|
|
|
+ this.page.currentPage = 1
|
|
|
+ this.dictionaryItem = ''
|
|
|
+ this.getdictionaryData()
|
|
|
+ },
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less">
|
|
|
+.dictionaryItem{
|
|
|
+ .el-overlay{
|
|
|
+ .el-dialog{
|
|
|
+ margin-top: 5vh !important;
|
|
|
+ .el-dialog__body{
|
|
|
+ padding: 0 0 30px 20px !important;
|
|
|
+ .dictionaryItemAll{
|
|
|
+ .el-select, .el-input{
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ .dictionaryItemBtn{
|
|
|
+ .collectSeach{
|
|
|
+ display: flex;
|
|
|
+ padding: 0px 20px 20px;
|
|
|
+ border-bottom: 1px solid#D6DBEA;
|
|
|
+ .exceed{
|
|
|
+ display: flex;
|
|
|
+ .indicatorSpan{
|
|
|
+ width: 100px;
|
|
|
+ height: 12px;
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: Microsoft YaHei;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #8991B0;
|
|
|
+ line-height: 12px;
|
|
|
+ margin-top: 10px;
|
|
|
+ }
|
|
|
+ .el-input{
|
|
|
+ margin-right:10px;
|
|
|
+ .el-input__inner{
|
|
|
+ height:30px;
|
|
|
+ }
|
|
|
+ .el-input__suffix{
|
|
|
+ .el-select__caret{
|
|
|
+ line-height:30px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-select{
|
|
|
+ margin-right:10px;
|
|
|
+ .el-input__inner{
|
|
|
+ height:30px;
|
|
|
+ }
|
|
|
+ .el-input__suffix{
|
|
|
+ .el-select__caret{
|
|
|
+ line-height:30px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ span{
|
|
|
+ font-size:14px;
|
|
|
+ }
|
|
|
+ .PeriodBtn{
|
|
|
+ display: flex;
|
|
|
+ justify-content: end;
|
|
|
+ padding: 10px 0;
|
|
|
+ .el-button{
|
|
|
+ height: 30px;
|
|
|
+ padding: 0 30px ;
|
|
|
+ span{
|
|
|
+ margin:0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .is-disabled{
|
|
|
+ opacity: 0.5;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .dictionaryItemTableData{
|
|
|
+ .el-table{
|
|
|
+ .el-table__body-wrapper{
|
|
|
+ height: 55vh !important;
|
|
|
+ }
|
|
|
+ .el-input__inner{
|
|
|
+ height: 30px !important;
|
|
|
+ }
|
|
|
+ .el-radio__label{
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-pagination{
|
|
|
+ margin-top: 20px;
|
|
|
+ text-align: end;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .onlyDialog{
|
|
|
+ .el-overlay{
|
|
|
+ .el-dialog{
|
|
|
+ margin-top: 10vh !important;
|
|
|
+ .el-dialog__body{
|
|
|
+ padding: 30px 60px 30px 20px !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-dialog__footer{
|
|
|
+ .dialog-footer{
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ .el-button{
|
|
|
+ width: 180px !important;
|
|
|
+ height: 40px !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|