From c6ce3cbd3adffc741a9bb926dd556cd48c6e2c17 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期六, 04 十一月 2023 17:33:41 +0800
Subject: [PATCH] modified: src/api/basic/param.js new file: src/views/basic/param/index-bad.vue modified: src/views/basic/param/index.vue modified: src/views/common/ztt-table.vue
---
src/views/basic/param/index.vue | 803 ++++++++++++++++++++++++---------------
src/api/basic/param.js | 9
src/views/basic/param/index-bad.vue | 381 +++++++++++++++++++
src/views/common/ztt-table.vue | 4
4 files changed, 882 insertions(+), 315 deletions(-)
diff --git a/src/api/basic/param.js b/src/api/basic/param.js
index 167e634..35f0ec3 100644
--- a/src/api/basic/param.js
+++ b/src/api/basic/param.js
@@ -73,3 +73,12 @@
data: obj
})
}
+
+export function uploadParam(obj) {
+ return request({
+ url: '/mes/param/upload',
+ method: 'post',
+ headers:{"Content-Type":"multipart/form-data"},
+ data: obj
+ })
+}
diff --git a/src/views/basic/param/index-bad.vue b/src/views/basic/param/index-bad.vue
new file mode 100644
index 0000000..217e2ef
--- /dev/null
+++ b/src/views/basic/param/index-bad.vue
@@ -0,0 +1,381 @@
+<template>
+ <div class="mod-config">
+ <basic-container>
+ <!-- <ttable
+ :table="table"
+ :row-key="id"
+ :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
+ @handleSelectionChange="handleSelectionChange"
+ :uploadInfo="uploadInfo"
+ :prelang="prelang"
+ :options="options"
+ :ajaxFun="ajaxFun"
+ ref="paramTable"
+ >
+ <template #toolbar></template>
+ </ttable> -->
+ <el-row style="margin-left: 10px;">
+ <el-form :inline="true" :model="table" class="demo-form-inline">
+ <el-form-item label="鍙傛暟椤�">
+ <el-input v-model="table.param" placeholder="鍙傛暟椤�"></el-input>
+ </el-form-item>
+ <el-form-item label="鍙傛暟缂栧彿">
+ <el-input v-model="table.code" placeholder="鍙傛暟缂栧彿"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="onSearch">鏌ヨ</el-button>
+ </el-form-item>
+ </el-form>
+ </el-row>
+ <el-row style="margin-left: 10px;height: 80vh;">
+ <el-row>
+ <el-button type="defult" @click="addOrUpdateHandle">鏂板</el-button>
+ <el-button type="defult" @click="onSearch">瀵煎叆</el-button>
+ <!-- <el-button type="defult" @click="isExpandAllClick">灞曞紑/鎶樺彔</el-button> -->
+ </el-row>
+ <el-row style="padding-top: 20px;">
+ <!-- 琛ㄦ牸鏁版嵁鍖�-->
+ <el-table height="480" style="width: 100%;" :data="table.data" row-key="id"
+ :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+ <el-table-column type="index" label="搴忓彿" width="50">
+ </el-table-column>
+ <el-table-column prop="code" label="鍙傛暟缂栧彿"></el-table-column>
+ <el-table-column prop="parameterItem" label="鍙傛暟椤�"></el-table-column>
+ <el-table-column prop="type" label="鍙傛暟绫诲瀷">
+ <template slot-scope="scope">
+ <el-col v-show="scope.row.bianJi===false">{{ scope.row.type }}</el-col>
+ <el-col v-show="scope.row.bianJi">
+ 111
+ <!-- <el-select v-model="scope.row.type" filterable placeholder="璇烽�夋嫨鍙傛暟绫诲瀷" style="width:100%"
+ @change="changeType">
+ <el-option v-for="(item, index) in this.typeOptions" :label="item.label" :value="item.value"
+ :key="item.value">
+ </el-option>
+ </el-select> -->
+ </el-col>
+ </template>
+ </el-table-column>
+ <el-table-column prop="parameterFormat" label="鍙傛暟鏍煎紡"></el-table-column>
+ <el-table-column prop="unit" label="鍗曚綅"></el-table-column>
+ <el-table-column prop="code" label="鎿嶄綔">
+ <template slot-scope="scope">
+ <el-row style=" display: flex;width: 100%;">
+ <el-col><el-button type="text">鍒犻櫎</el-button></el-col>
+ <el-col v-if="scope.row.isBianji">
+ <el-button @click="bianji(scope.row)" type="text">{{ scope.row.bianJiBtn }}</el-button>
+ </el-col>
+ </el-row>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-row style="display: flex; justify-content: end;">
+ <el-pagination :current-page="table.currentPage" @current-change="handlesCurrentChange"
+ @size-change="sizeChangeHandle" :page-sizes="[10, 20, 50, 100]" :page-size="table.pageSize"
+ layout="total, sizes, prev, pager, next, jumper" :total="table.total"></el-pagination>
+ </el-row>
+ </el-row>
+ </el-row>
+ <!-- 寮圭獥, 鏂板 / 淇敼 -->
+ <table-form v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getData"></table-form>
+ </basic-container>
+ </div>
+</template>
+<script>
+import { fetchList, delObj } from '@/api/basic/param'
+import TableForm from './param-form'
+import ttable from '@/views/common/ztt-table.vue'
+import { mapGetters } from 'vuex'
+import { remote } from '../../../api/admin/dict'
+export default {
+ data() {
+ return {
+ isExpandAll: false,
+ // 閲嶆柊娓叉煋琛ㄦ牸鐘舵��
+ refreshTable: true,
+ ajaxFun: fetchList,
+ typeOptions: [],
+ multipleSelection: [],
+ isShowQuery: false,
+ uploadInfo: {
+ // 鏄惁灞曠ず涓婁紶EXCEL浠ュ強瀵瑰簲鐨剈rl
+ isShow: true,
+ url: '/mes/param/upload'
+ },
+ prelang: 'operation',
+ options: {
+ height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾
+ stripe: true, // 鏄惁涓烘枒椹汗 table
+ highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈
+ border: true, // 鏄惁鏈夌旱鍚戣竟妗�
+ lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇
+ fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮�
+ multiSelect: false, //
+ seqNo: true,
+ isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳
+ isSearch: false, // 楂樼骇鏌ヨ鎸夐挳
+ defaultOrderBy: { column: 'createTime', direction: 'desc' }
+ },
+ table: {
+ param: null,
+ total: 0,
+ code: null,
+ currentPage: 1,
+ pageSize: 20,
+ data: [],
+ // 鏍囬
+ column: [
+ {
+ minWidth: 'code',
+ prop: 'code',
+ label: '鍙傛暟缂栧彿',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'text',
+ render: { fun: this.addOrUpdateHandle }
+ },
+ {
+ minWidth: '120',
+ prop: 'parameterItem',
+ label: '鍙傛暟椤�',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'text'
+ },
+ {
+ minWidth: '120',
+ prop: 'second',
+ label: '浜岀骇鍙傛暟',
+ sort: true,
+ isTrue: true,
+ isSearch: false,
+ searchInfoType: 'text'
+ },
+ {
+ minWidth: '130',
+ prop: 'third',
+ label: '涓夌骇鍙傛暟',
+ sort: true,
+ isTrue: true,
+ isSearch: false,
+ searchInfoType: 'text'
+ },
+ {
+ minWidth: '140',
+ prop: 'type',
+ label: '鍙傛暟绫诲瀷',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'select',
+ formatter: this.getParam,
+ optList: () => {
+ return this.typeOptions
+ }
+ },
+ {
+ minWidth: '120',
+ prop: 'parameterFormat',
+ label: '鍙傛暟鏍煎紡',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'text'
+ },
+ {
+ minWidth: '120',
+ prop: 'unit',
+ label: '鍗曚綅',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'text'
+ },
+ {
+ minWidth: '200',
+ prop: 'createUser',
+ label: '鍒涘缓浜�',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'text'
+ },
+ {
+ minWidth: '140',
+ prop: 'updateUser',
+ label: '鏇存柊浜�',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'text'
+ },
+ {
+ minWidth: '120',
+ prop: 'createTime',
+ label: '鍒涘缓鏃ユ湡',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'datetimerange'
+ },
+ {
+ minWidth: '200',
+ prop: 'updateTime',
+ label: '鏇存柊鏃ユ湡',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'datetimerange'
+ }
+ ],
+ toolbar: [
+ {
+ text: '鏂板',
+ type: 'primary',
+ fun: this.addOrUpdateHandle
+ }
+ ],
+ operator: [
+ {
+ text: '鍒犻櫎',
+ icon: 'el-icon-delete',
+ type: 'text',
+ size: 'small',
+ fun: this.deleteHandle
+ }
+ ],
+ operatorConfig: {
+ fixed: 'right',
+ label: '鎿嶄綔',
+ width: 100,
+ minWidth: 100
+ }
+ },
+ addOrUpdateVisible: false
+ }
+ },
+ components: {
+ ttable,
+ TableForm
+ },
+ computed: {
+ ...mapGetters(['permissions'])
+ },
+ created() {
+ this.getParamType()
+ this.getData()
+ },
+ methods: {
+ changeType(){},
+ bianji(row){
+ // this.$set(row.bianJi,false,true)
+ row.bianJi=true
+ row.bianJiBtn='淇濆瓨'
+ console.log(row)
+ },
+ isExpandAllClick() {
+ // console.log(1111);
+ this.isExpandAll = !this.isExpandAll;
+ this.$nextTick(() => {
+ this.refreshTable = true;
+ });
+ // console.log(this.isExpandAll);
+ },
+ handlesCurrentChange() { },
+ sizeChangeHandle() { },
+ onSearch() { },
+ // 鑾峰彇鏁版嵁鍒楄〃
+ getData() {
+ let param = {
+ parentId: 0,
+ code: this.table.code,
+ size: this.table.pageSize,
+ current: this.table.currentPage,
+ parameterItem: this.table.param
+ }
+ fetchList(param).then((res) => {
+ console.log(res.data);
+ this.table.total = res.data.data.total
+ this.table.data = res.data.data.records
+ let datas=JSON.parse(JSON.stringify(this.table.data))
+ datas.forEach(l => {
+ l.bianJi = false
+ if (l.children.length < 1) {
+ l.isBianji = true
+ l.bianJiBtn='缂栬緫'
+ }
+ if (l.children.length > 0) {
+ l.isBianji = false
+ l.children.forEach(c => {
+ c.bianji = false
+ if (c.children.length < 1) {
+ c.isBianji = true
+ c.bianJiBtn='缂栬緫'
+ } else {
+ l.isBianji = false
+ c.children.forEach(cc => {
+ cc.bianJi = false
+ cc.isBianji = true
+ c.bianJiBtn='缂栬緫'
+ })
+ }
+ })
+ }
+ })
+ this.table.data=datas
+ console.log(this.table.data);
+ })
+ },
+ // 鏂板 / 淇敼
+ addOrUpdateHandle(row) {
+ this.addOrUpdateVisible = true
+ this.$nextTick(() => {
+ this.$refs.addOrUpdate.init(row == null ? null : row.id)
+ })
+ },
+ // 鑾峰彇宸ュ簭鍙傛暟绫诲瀷
+ getParamType() {
+ remote('technology_param').then((response) => {
+ if (response.data.code === 0) {
+ this.typeOptions = response.data.data
+ }
+ })
+ },
+ // 閫変腑浠撳簱琛�
+ handleSelectionChange(val) {
+ this.multipleSelection = val
+ },
+ // 琛ㄦ牸瀛楁鏍煎紡鍖�
+ getParam(row, column, cellValue) {
+ for (let i = 0, len = this.typeOptions.length; i < len; i++) {
+ if (cellValue == this.typeOptions[i].value) {
+ return this.typeOptions[i].label
+ }
+ }
+ },
+ // 鍒犻櫎
+ deleteHandle(row) {
+ this.$confirm('鏄惁纭鍒犻櫎缂栧彿涓�' + row.code, '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ })
+ .then(function () {
+ return delObj(row.id)
+ })
+ .then((data) => {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.getData()
+ })
+ }
+ }
+}
+</script>
+<style scoped>
+table,
+tr,
+td {
+ text-align: center;
+}
+</style>
diff --git a/src/views/basic/param/index.vue b/src/views/basic/param/index.vue
index 217e2ef..3628f8a 100644
--- a/src/views/basic/param/index.vue
+++ b/src/views/basic/param/index.vue
@@ -1,338 +1,354 @@
<template>
- <div class="mod-config">
- <basic-container>
- <!-- <ttable
- :table="table"
- :row-key="id"
- :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
- @handleSelectionChange="handleSelectionChange"
- :uploadInfo="uploadInfo"
- :prelang="prelang"
- :options="options"
- :ajaxFun="ajaxFun"
- ref="paramTable"
- >
- <template #toolbar></template>
- </ttable> -->
- <el-row style="margin-left: 10px;">
- <el-form :inline="true" :model="table" class="demo-form-inline">
- <el-form-item label="鍙傛暟椤�">
- <el-input v-model="table.param" placeholder="鍙傛暟椤�"></el-input>
- </el-form-item>
- <el-form-item label="鍙傛暟缂栧彿">
- <el-input v-model="table.code" placeholder="鍙傛暟缂栧彿"></el-input>
- </el-form-item>
- <el-form-item>
- <el-button type="primary" @click="onSearch">鏌ヨ</el-button>
- </el-form-item>
- </el-form>
- </el-row>
- <el-row style="margin-left: 10px;height: 80vh;">
- <el-row>
- <el-button type="defult" @click="addOrUpdateHandle">鏂板</el-button>
- <el-button type="defult" @click="onSearch">瀵煎叆</el-button>
- <!-- <el-button type="defult" @click="isExpandAllClick">灞曞紑/鎶樺彔</el-button> -->
- </el-row>
- <el-row style="padding-top: 20px;">
- <!-- 琛ㄦ牸鏁版嵁鍖�-->
- <el-table height="480" style="width: 100%;" :data="table.data" row-key="id"
- :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
- <el-table-column type="index" label="搴忓彿" width="50">
- </el-table-column>
- <el-table-column prop="code" label="鍙傛暟缂栧彿"></el-table-column>
- <el-table-column prop="parameterItem" label="鍙傛暟椤�"></el-table-column>
- <el-table-column prop="type" label="鍙傛暟绫诲瀷">
- <template slot-scope="scope">
- <el-col v-show="scope.row.bianJi===false">{{ scope.row.type }}</el-col>
- <el-col v-show="scope.row.bianJi">
- 111
- <!-- <el-select v-model="scope.row.type" filterable placeholder="璇烽�夋嫨鍙傛暟绫诲瀷" style="width:100%"
- @change="changeType">
- <el-option v-for="(item, index) in this.typeOptions" :label="item.label" :value="item.value"
- :key="item.value">
- </el-option>
- </el-select> -->
- </el-col>
- </template>
- </el-table-column>
- <el-table-column prop="parameterFormat" label="鍙傛暟鏍煎紡"></el-table-column>
- <el-table-column prop="unit" label="鍗曚綅"></el-table-column>
- <el-table-column prop="code" label="鎿嶄綔">
- <template slot-scope="scope">
- <el-row style=" display: flex;width: 100%;">
- <el-col><el-button type="text">鍒犻櫎</el-button></el-col>
- <el-col v-if="scope.row.isBianji">
- <el-button @click="bianji(scope.row)" type="text">{{ scope.row.bianJiBtn }}</el-button>
- </el-col>
- </el-row>
- </template>
- </el-table-column>
- </el-table>
- <el-row style="display: flex; justify-content: end;">
- <el-pagination :current-page="table.currentPage" @current-change="handlesCurrentChange"
- @size-change="sizeChangeHandle" :page-sizes="[10, 20, 50, 100]" :page-size="table.pageSize"
- layout="total, sizes, prev, pager, next, jumper" :total="table.total"></el-pagination>
+ <div>
+ <div class="param-basic">
+ <el-form style="width:100%;margin-top: 20px;" class="l-mes" :inline="true" :model="searchForm">
+ <el-row>
+ <el-col :span="4">
+ <el-form-item label="鍙傛暟椤�:">
+ <el-input clearable style="width:200px" v-model="searchForm.param" placeholder="鍙傛暟椤�"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="4">
+ <el-form-item label="鍙傛暟缂栧彿:">
+ <el-input clearable style="width:200px" v-model="searchForm.code" placeholder="鍙傛暟缂栧彿"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="6">
+ <el-form-item class="btn-group">
+ <el-button type="" @click="onSearch">鏌ヨ</el-button>
+ <el-button type="primary" @click="addOrUpdateHandle">鏂板</el-button>
+ <el-button @click="showImportDialog">瀵煎叆</el-button>
+ </el-form-item>
+ </el-col>
</el-row>
- </el-row>
- </el-row>
- <!-- 寮圭獥, 鏂板 / 淇敼 -->
- <table-form v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getData"></table-form>
+ </el-form>
+ </div>
+ <basic-container>
+ <avue-crud :data="tableData"
+ ref="crud"
+ :option="option"
+ :span-method="spanMethod"
+ @refresh-change="getData"
+ :page="page"
+ :table-loading="loading"
+ @row-update="updateParam"
+ @row-del="delParam">
+ <template #menu="{row,index}">
+ <el-button type="text" icon="el-icon-edit" size="small" @click="showEdit(row,index)">缂栬緫</el-button>
+ <el-button type="text" icon="el-icon-delete" size="small" @click="showDel(row,index)">鍒犻櫎</el-button>
+ </template>
+ <template slot-scope="scope" slot="paramTypeForm">
+ <el-select v-model="scope.row.paramType" @change="changeType(scope.row)"
+ filterable placeholder="璇烽�夋嫨鍙傛暟绫诲瀷" :disabled="formDisabled">
+ <el-option v-for="(item,index) in typeOptions"
+ :key="index" :label="item.label" :value="item.value"/>
+ </el-select>
+ </template>
+ <template slot="paramFormatLabel" slot-scope="scope">
+ <span v-if="scope.row.paramType!='2'">鍙傛暟鏍煎紡</span>
+ <span v-else>鏁版嵁瀛楀吀</span>
+ </template>
+ <template slot-scope="scope" slot="paramFormatForm">
+ <el-input v-if="scope.row.paramType!='2'" v-model="scope.row.paramFormat"
+ placeholder="璇疯緭鍏ュ弬鏁版牸寮�" :disabled="formDisabled"/>
+ <el-select v-else v-model="scope.row.paramFormat" filterable
+ placeholder="璇烽�夋嫨鏁版嵁瀛楀吀" :disabled="formDisabled">
+ <el-option v-for="(item,index) in dictOptions"
+ :key="index" :label="item.description" :value="item.type"/>
+ </el-select>
+ </template>
+ </avue-crud>
</basic-container>
+ <!-- 寮圭獥, 鏂板 / 淇敼 -->
+ <table-form v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getData"></table-form>
+ <el-dialog
+ title="瀵煎叆"
+ :visible.sync="importDialog"
+ width="22%">
+ <el-upload ref="upload" style="width:100%;" class="upload-demo" drag action="#"
+ :multiple="false" :file-list="fileList" :auto-upload="false" show-file-list
+ :on-change="handleUpload">
+ <i class="el-icon-upload"></i>
+ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+ <div class="el-upload__tip" slot="tip">
+ 鍙兘涓婁紶xls/xlsx鏂囦欢锛屼笖涓嶈秴杩�10MB
+ <el-button type="text" style="font-size:15px;text-decoration: underline;"
+ @click="downloadTemplate">涓嬭浇妯℃澘</el-button>
+ </div>
+ </el-upload>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="importDialog = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="confirmImport()">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
</div>
</template>
+
<script>
-import { fetchList, delObj } from '@/api/basic/param'
+import { fetchList, delObj,putObj,uploadParam } from '@/api/basic/param'
+import { uploadTemplate } from '@/api/basic/template'
import TableForm from './param-form'
-import ttable from '@/views/common/ztt-table.vue'
import { mapGetters } from 'vuex'
-import { remote } from '../../../api/admin/dict'
+import { remote,fetchList as fetchDictList } from '@/api/admin/dict'
export default {
- data() {
+ data() {
return {
- isExpandAll: false,
- // 閲嶆柊娓叉煋琛ㄦ牸鐘舵��
- refreshTable: true,
- ajaxFun: fetchList,
+ fileList: [],
+ importDialog: false,
+ formDisabled: false,
+ dictOptions: [],
typeOptions: [],
- multipleSelection: [],
- isShowQuery: false,
- uploadInfo: {
- // 鏄惁灞曠ず涓婁紶EXCEL浠ュ強瀵瑰簲鐨剈rl
- isShow: true,
- url: '/mes/param/upload'
- },
- prelang: 'operation',
- options: {
- height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾
- stripe: true, // 鏄惁涓烘枒椹汗 table
- highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈
- border: true, // 鏄惁鏈夌旱鍚戣竟妗�
- lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇
- fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮�
- multiSelect: false, //
- seqNo: true,
- isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳
- isSearch: false, // 楂樼骇鏌ヨ鎸夐挳
- defaultOrderBy: { column: 'createTime', direction: 'desc' }
- },
- table: {
+ searchForm: {
param: null,
- total: 0,
- code: null,
+ code: null
+ },
+ loading: true,
+ page:{
+ total: 10,
currentPage: 1,
- pageSize: 20,
- data: [],
- // 鏍囬
+ pageSize: 10
+ },
+ tableData: [],
+ option: {
+ height: 585,
+ columnBtn: false,
+ index: true,
+ indexLabel: '搴忓彿',
+ menuAlign: 'center',
+ editBtn: false,
+ delBtn: false,
+ addBtn: false,
+ border: true,
+ align: 'center',
column: [
{
- minWidth: 'code',
- prop: 'code',
label: '鍙傛暟缂栧彿',
- sort: true,
- isTrue: true,
- isSearch: true,
- searchInfoType: 'text',
- render: { fun: this.addOrUpdateHandle }
+ prop: 'code',
+ disabled: true
},
{
- minWidth: '120',
- prop: 'parameterItem',
label: '鍙傛暟椤�',
- sort: true,
- isTrue: true,
- isSearch: true,
- searchInfoType: 'text'
+ prop: 'paramItem',
+ disabled: true
},
{
- minWidth: '120',
- prop: 'second',
label: '浜岀骇鍙傛暟',
- sort: true,
- isTrue: true,
- isSearch: false,
- searchInfoType: 'text'
+ prop: 'paramItemTwo',
+ disabled: true
},
{
- minWidth: '130',
- prop: 'third',
label: '涓夌骇鍙傛暟',
- sort: true,
- isTrue: true,
- isSearch: false,
- searchInfoType: 'text'
+ prop: 'paramItemThree',
+ disabled: true
},
{
- minWidth: '140',
- prop: 'type',
label: '鍙傛暟绫诲瀷',
- sort: true,
- isTrue: true,
- isSearch: true,
- searchInfoType: 'select',
- formatter: this.getParam,
- optList: () => {
- return this.typeOptions
- }
+ prop: 'paramType',
+ formslot: true,
+ rules:[{
+ required: true,
+ message: "璇烽�夋嫨鍙傛暟绫诲瀷",
+ trigger: "change"
+ }]
},
{
- minWidth: '120',
- prop: 'parameterFormat',
label: '鍙傛暟鏍煎紡',
- sort: true,
- isTrue: true,
- isSearch: true,
- searchInfoType: 'text'
- },
- {
- minWidth: '120',
- prop: 'unit',
+ prop: 'paramFormat',
+ formslot: true,
+ labelslot: true
+ }, {
label: '鍗曚綅',
- sort: true,
- isTrue: true,
- isSearch: true,
- searchInfoType: 'text'
+ prop: 'unit',
+ rules:[{
+ required: true,
+ message: "鍗曚綅涓嶈兘涓虹┖",
+ trigger: "blur"
+ }]
},
- {
- minWidth: '200',
- prop: 'createUser',
- label: '鍒涘缓浜�',
- sort: true,
- isTrue: true,
- isSearch: true,
- searchInfoType: 'text'
- },
- {
- minWidth: '140',
- prop: 'updateUser',
- label: '鏇存柊浜�',
- sort: true,
- isTrue: true,
- isSearch: true,
- searchInfoType: 'text'
- },
- {
- minWidth: '120',
- prop: 'createTime',
- label: '鍒涘缓鏃ユ湡',
- sort: true,
- isTrue: true,
- isSearch: true,
- searchInfoType: 'datetimerange'
- },
- {
- minWidth: '200',
- prop: 'updateTime',
- label: '鏇存柊鏃ユ湡',
- sort: true,
- isTrue: true,
- isSearch: true,
- searchInfoType: 'datetimerange'
- }
- ],
- toolbar: [
- {
- text: '鏂板',
- type: 'primary',
- fun: this.addOrUpdateHandle
- }
- ],
- operator: [
- {
- text: '鍒犻櫎',
- icon: 'el-icon-delete',
- type: 'text',
- size: 'small',
- fun: this.deleteHandle
- }
- ],
- operatorConfig: {
- fixed: 'right',
- label: '鎿嶄綔',
- width: 100,
- minWidth: 100
- }
+ ]
},
+ spanArr: [{
+ prop: 'code',
+ span: []
+ },{
+ prop: 'paramItem',
+ span: []
+ }, {
+ prop: 'paramItemTwo',
+ span: []
+ }],
addOrUpdateVisible: false
}
},
components: {
- ttable,
TableForm
},
computed: {
...mapGetters(['permissions'])
},
created() {
- this.getParamType()
this.getData()
+ this.getParamType()
},
+ beforeUpdate(){
+ console.log("updated");
+ this.rowSort()
+ this.rowCalc()
+ this.loading = false
+ },
+ watch:{ },
methods: {
- changeType(){},
- bianji(row){
- // this.$set(row.bianJi,false,true)
- row.bianJi=true
- row.bianJiBtn='淇濆瓨'
- console.log(row)
- },
- isExpandAllClick() {
- // console.log(1111);
- this.isExpandAll = !this.isExpandAll;
- this.$nextTick(() => {
- this.refreshTable = true;
- });
- // console.log(this.isExpandAll);
- },
- handlesCurrentChange() { },
- sizeChangeHandle() { },
- onSearch() { },
- // 鑾峰彇鏁版嵁鍒楄〃
- getData() {
- let param = {
- parentId: 0,
- code: this.table.code,
- size: this.table.pageSize,
- current: this.table.currentPage,
- parameterItem: this.table.param
- }
- fetchList(param).then((res) => {
- console.log(res.data);
- this.table.total = res.data.data.total
- this.table.data = res.data.data.records
- let datas=JSON.parse(JSON.stringify(this.table.data))
- datas.forEach(l => {
- l.bianJi = false
- if (l.children.length < 1) {
- l.isBianji = true
- l.bianJiBtn='缂栬緫'
- }
- if (l.children.length > 0) {
- l.isBianji = false
- l.children.forEach(c => {
- c.bianji = false
- if (c.children.length < 1) {
- c.isBianji = true
- c.bianJiBtn='缂栬緫'
- } else {
- l.isBianji = false
- c.children.forEach(cc => {
- cc.bianJi = false
- cc.isBianji = true
- c.bianJiBtn='缂栬緫'
- })
- }
- })
- }
+ //涓嬭浇妯℃澘
+ downloadTemplate() {
+ uploadTemplate('param').then((response) => {
+ const blob = new Blob([response.data], {
+ type: 'application/force-download'
})
- this.table.data=datas
- console.log(this.table.data);
+ const filename = decodeURI('鍙傛暟妯℃澘.xlsx')
+ // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
+ const elink = document.createElement('a')
+ elink.download = filename
+ elink.style.display = 'none'
+ elink.href = URL.createObjectURL(blob)
+ document.body.appendChild(elink)
+ elink.click()
+ URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄
+ document.body.removeChild(elink)
})
},
- // 鏂板 / 淇敼
- addOrUpdateHandle(row) {
- this.addOrUpdateVisible = true
- this.$nextTick(() => {
- this.$refs.addOrUpdate.init(row == null ? null : row.id)
+ // 鏂囦欢涓婁紶
+ handleUpload(file, fileList) {
+ const maxSize = 10 * 1024 * 1024 * 1024;//10MB
+ const xlsType = "application/vnd.ms-excel";
+ const xlsxType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+ if(file.raw.type != xlsType && file.raw.type != xlsxType){
+ this.$message.warning("瀵煎叆鏂囦欢鏍煎紡涓嶇锛�");
+ fileList.pop()
+ return;
+ }
+ if(Number.parseInt(file.size) > maxSize){
+ this.$message.warning("瀵煎叆鏂囦欢杩囧ぇ锛�");
+ fileList.pop()
+ return;
+ }
+ if(fileList.length > 1){
+ this.$message.warning("鍙兘瀵煎叆鍗曚釜鏂囦欢!")
+ fileList.pop()
+ }
+ this.fileList = fileList;
+ // this.importFile = file;
+ },
+ showImportDialog(){
+ this.importDialog = true
+ },
+ //纭畾瀵煎叆
+ confirmImport(){
+ console.log(this.fileList)
+ const fileData = new FormData();
+ fileData.append('file', this.fileList[0].raw);
+ uploadParam(fileData).then((res)=>{
+ console.log(res);
+ // this.exportLoading = false;
+ }).catch()
+ },
+ // 淇敼鍙傛暟绫诲瀷
+ changeType(row) {
+ if (row.paramType === '1') {
+ row.paramFormat = '#.0000'
+ } else if(row.paramType === '2'){
+ this.getDictOptions()
+ }else {
+ row.paramFormat = ''
+ }
+ },
+ // 鑾峰彇鎵�鏈夊瓧鍏�
+ getDictOptions() {
+ fetchDictList(
+ Object.assign({
+ current: 1,
+ size: 9999
+ })
+ ).then((response) => {
+ if (response.data.code === 0) {
+ this.dictOptions = response.data.data.records
+ }
})
+ },
+ showEdit(row,index){
+ this.option.column.forEach(item=>{
+ if(row.paramItemThree=="" && item.prop=='paramItemThree'){
+ item.display = false
+ }
+ if(row.paramItemTwo=="" && item.prop=='paramItemTwo'){
+ item.display = false
+ }
+ })
+ this.$refs.crud.rowEdit(row,index)
+ },
+ showDel(row,index){
+ this.$refs.crud.rowDel(row,index)
+ },
+ updateParam(row,index,done,loading){
+ // this.formDisabled = true
+ let data = {
+ dict: '',
+ id: 0,
+ parameterFormat: '',
+ parameterItem: '',
+ type: row.paramType,
+ unit: row.unit,
+ }
+ row.paramType=='2' ? data.dict=row.paramFormat : data.parameterFormat=row.paramFormat
+ if(row.threeId){
+ data.id = row.threeId
+ data.parameterItem = row.paramItemThree
+ }else{
+ if(row.twoId){
+ data.id = row.twoId
+ data.parameterItem = row.paramItemTwo
+ }else{
+ data.id = row.oneId
+ data.parameterItem = row.paramItem
+ }
+ }
+ console.log(data)
+ putObj(data).then(res=>{
+ if(res.data.data.code==0){
+ this.$message.success("鏇存柊鎴愬姛")
+ }else{
+ this.$message.error(res.data.data.msg)
+ }
+ this.getData()
+ done(row)
+ }).catch(error=>{
+ console.log(error)
+ })
+ },
+ delParam(row){
+ let id;
+ if(row.threeId){
+ id = row.threeId
+ }else{
+ if(row.twoId){
+ id = row.twoId
+ }else{
+ id = row.oneId
+ }
+ }
+ this.$confirm('鏄惁纭鍒犻櫎缂栧彿涓恒��' + row.code+'銆戠殑鏁版嵁?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ delObj(id).then(res=>{
+ if(res.data.code==0){
+ this.$message.success("鍒犻櫎鎴愬姛")
+ }else{
+ this.$message.error("鍒犻櫎澶辫触")
+ }
+ this.getData()
+ })
+ }).catch(() => {});
},
// 鑾峰彇宸ュ簭鍙傛暟绫诲瀷
getParamType() {
@@ -342,40 +358,201 @@
}
})
},
- // 閫変腑浠撳簱琛�
- handleSelectionChange(val) {
- this.multipleSelection = val
+ onSearch() {
+ this.getData()
},
- // 琛ㄦ牸瀛楁鏍煎紡鍖�
- getParam(row, column, cellValue) {
- for (let i = 0, len = this.typeOptions.length; i < len; i++) {
- if (cellValue == this.typeOptions[i].value) {
- return this.typeOptions[i].label
+ // 鏂板 / 淇敼
+ addOrUpdateHandle(row) {
+ this.addOrUpdateVisible = true
+ this.$nextTick(() => {
+ this.$refs.addOrUpdate.init(row == null ? null : row.id)
+ })
+ },
+ // 鑾峰彇鏁版嵁鍒楄〃
+ getData() {
+ this.loading = true
+ let param = {
+ code: this.searchForm.code,
+ size: 20,
+ current: 1,
+ parameterItem: this.searchForm.param
+ }
+ fetchList(param).then((res) => {
+ this.tableData = res.data.data.records
+ this.page.total = res.data.data.total
+ this.page.currentPage = res.data.data.records.pages
+ })
+ },
+ //鍔ㄦ�佸悎骞舵柟娉�
+ rowCalc () {
+ this.spanArr.forEach((ele, index) => {
+ let parent
+ if (index !== 0) parent = this.spanArr[ele.parent || index - 1].span
+ ele.span = this.rowSpan(ele.prop, parent)
+ })
+ },
+ rowSort (list) {
+ let propList = this.spanArr.map(ele => ele.prop)
+ this.spanArr.forEach((ele, index) => {
+ let key = ele.prop
+ this.tableData = this.tableData.sort((a, b) => {
+ let flag = true;
+ for (let i = 0; i < index; i++) {
+ let prop = this.spanArr[i].prop
+ flag = flag && a[prop] == b[prop]
+ }
+ if (flag) {
+ if (a[key] < b[key]) { return 1; }
+ else if (a[key] > b[key]) { return -1; }
+ return 0;
+ }
+ return 0;
+ })
+ })
+ },
+ rowSpan (key, parent) {
+ let list = [];
+ let position = 0;
+ this.tableData.forEach((item, index) => {
+ if (index === 0) {
+ list.push(1)
+ let position = 0;
+ } else {
+ if (this.tableData[index][key] === this.tableData[index - 1][key]) {
+ if (parent && parent[index] !== 0) {
+ list.push(1)
+ position = index
+ } else {
+ list[position] += 1;
+ list.push(0)
+ }
+ } else {
+ list.push(1)
+ position = index
+ }
+ }
+ })
+ return list
+ },
+ spanMethod ({ row, column, rowIndex, columnIndex }) {
+ for (let i = 0; i < this.spanArr.length; i++) {
+ const ele = this.spanArr[i]
+ if (column.property == ele.prop) {
+ const _row = ele.span[rowIndex];
+ const _col = _row > 0 ? 1 : 0;
+ return {
+ rowspan: _row,
+ colspan: _col
+ }
}
}
- },
- // 鍒犻櫎
- deleteHandle(row) {
- this.$confirm('鏄惁纭鍒犻櫎缂栧彿涓�' + row.code, '鎻愮ず', {
- confirmButtonText: '纭畾',
- cancelButtonText: '鍙栨秷',
- type: 'warning'
- })
- .then(function () {
- return delObj(row.id)
- })
- .then((data) => {
- this.$message.success('鍒犻櫎鎴愬姛')
- this.getData()
- })
}
}
}
</script>
-<style scoped>
-table,
-tr,
-td {
- text-align: center;
+
+<style>
+.grid-header {
+ display: none;
}
-</style>
+.param-basic {
+ margin: 0 10px;
+ border-radius: 0px;
+ background-color: #fff;
+ height: 100px;
+ display: flex;
+ flex-wrap: wrap;
+ padding: 10px 20px;
+ border: 1px solid #ddd;
+ box-sizing: border-box;
+}
+
+.btn-group .el-button,
+.btn-custom .el-button {
+ border-radius: 0;
+ padding: 9px 30px;
+}
+
+.btn-group .el-dropdown .el-button {
+ border-radius: 0;
+ padding: 9px 20px;
+}
+
+/*鑷畾涔塪isabled鐘舵�佷笅checkbox鐨勬牱寮�*/
+.completeproductstructure-checkout
+ .el-checkbox__input.is-disabled.is-checked
+ .el-checkbox__inner {
+ background-color: #006eff;
+ border-color: #006eff;
+}
+
+.completeproductstructure-checkout
+ .el-checkbox__input.is-disabled.is-checked
+ + span.el-checkbox__label {
+ color: #006eff;
+ border-color: #006eff;
+}
+
+.completeproductstructure-checkout
+ .el-checkbox__input.is-disabled
+ .el-checkbox__inner {
+ background-color: #ffffff;
+ cursor: pointer;
+}
+
+.completeproductstructure-checkout
+ .el-checkbox__input.is-disabled
+ + span.el-checkbox__label {
+ color: #606266;
+ cursor: pointer;
+}
+
+.completeproductstructure-checkout .el-checkbox__inner::after {
+ border: 1px solid #fff !important;
+ border-left: 0 !important;
+ border-top: 0 !important;
+ cursor: pointer !important;
+}
+
+.structure-detail-table th.gutter {
+ display: table-cell !important;
+ width: 10px !important;
+}
+
+.structure-detail-table colgroup.gutter {
+ display: table-cell !important;
+ width: 10px !important;
+}
+
+.final-product-checkout .el-card__header {
+ padding: 0px 20px;
+ border-bottom: 0px;
+}
+
+.final-product-checkout .el-card__body {
+ padding: 0px 20px 20px;
+}
+
+.orimaterial-quantity .el-card__header {
+ padding: 0px 20px;
+ border-bottom: 0px;
+}
+
+.orimaterial-quantity .el-card__body {
+ padding: 0px 20px 20px;
+}
+
+.GooFlow .ico .ico_start:before {
+ color: red;
+}
+.highlight-tab-class {
+ color: #006eff;
+ background: #e4e7ed;
+ border-top: 1px solid #006eff;
+}
+.unhighlight-tab-class {
+ border: 1px solid #e4e7ed;
+ border-bottom: none;
+}
+
+</style>
\ No newline at end of file
diff --git a/src/views/common/ztt-table.vue b/src/views/common/ztt-table.vue
index a64ec16..e947f8b 100644
--- a/src/views/common/ztt-table.vue
+++ b/src/views/common/ztt-table.vue
@@ -478,7 +478,7 @@
<el-button type="primary" @click="startExport()">纭</el-button>
</span>
</el-dialog>
- <el-dialog title="瀵煎叆" :visible.sync="importDialogVisible" width="30%">
+ <el-dialog title="瀵煎叆" :visible.sync="importDialogVisible" width="22%">
<span>
<div>
<div>
@@ -505,7 +505,7 @@
<div class="el-upload__tip" slot="tip">
鍙兘涓婁紶xlsx/xls鏂囦欢锛屼笖涓嶈秴杩�10M<el-button
type="text"
- style="font-size:12px;"
+ style="font-size:15px;text-decoration: underline;"
@click="downDataTemplate"
>涓嬭浇妯℃澘</el-button
>
--
Gitblit v1.9.3