From fa65e938ddb5c206be73ce5dc7f51437d6396e05 Mon Sep 17 00:00:00 2001 From: 李林 <z1292839451@163.com> Date: 星期四, 07 三月 2024 11:30:51 +0800 Subject: [PATCH] 完成客户管理 --- /dev/null | 155 ----------------- src/components/tool/value-table.vue | 9 src/components/view/custom_manage.vue | 313 ++++++++++++++++++++++++++++++++++ static/js/menu.js | 4 src/assets/api/controller.js | 3 5 files changed, 326 insertions(+), 158 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index f19dc25..8a7b676 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -30,6 +30,9 @@ selectPowerByRoleId: "/role/selectPowerByRoleId", //閫氳繃瑙掕壊id鏌ヨ鏉冮檺鍒楄〃 upRole: "/role/upRole", //淇敼瑙掕壊 getUserMenu: "/user/getUserMenu", //鑾峰彇鐢ㄦ埛鏋氫妇 + selectCustomPageList: "/user/selectCustomPageList", //鑾峰彇瀹㈡埛鍒楄〃 + delCustomById: "/user/delCustomById", //鍒犻櫎瀹㈡埛淇℃伅 + addCustom: "/user/addCustom", //鏂板瀹㈡埛淇℃伅 } const dataReporting = { diff --git a/src/components/tool/value-table.vue b/src/components/tool/value-table.vue index 8d82289..c98d03a 100644 --- a/src/components/tool/value-table.vue +++ b/src/components/tool/value-table.vue @@ -68,7 +68,7 @@ <span v-else>{{scope.row[a.label]}}</span> </template> </el-table-column> - <el-table-column fixed="right" align="center" label="鎿嶄綔" :width="60 + data.do.length * 40" + <el-table-column fixed="right" align="center" label="鎿嶄綔" :width="getWidth()" v-if="data.do.length > 0"> <template slot-scope="scope"> <el-button v-for="(a, ai) in data.do" :key="ai" :type="a.type" @@ -711,6 +711,13 @@ this.$emit(val.method,row) } }, + getWidth(){ + let count = 0 + this.data.do.forEach(a=>{ + count += a.font.length + }) + return count * 15 + 60 + 'px' + } } } </script> diff --git a/src/components/view/custom_manage.vue b/src/components/view/custom_manage.vue new file mode 100644 index 0000000..c82f01d --- /dev/null +++ b/src/components/view/custom_manage.vue @@ -0,0 +1,313 @@ +<style scoped> + .title { + height: 60px; + line-height: 60px; + } + + .search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + + .search_thing { + width: 350px; + display: flex; + align-items: center; + } + + .search_label { + width: 110px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 110px); + } + + .table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + height: calc(100% - 60px - 80px - 10px - 40px); + padding: 20px; + } +</style> + +<template> + <div class="custom_manage"> + <div> + <el-row class="title"> + <el-col :span="12" style="padding-left: 20px;">瀹㈡埛绠$悊</el-col> + <el-col :span="12" style="text-align: right;"> + <el-button size="medium" type="primary" @click="addDia = true" v-if="addPower">鏂板</el-button> + </el-col> + </el-row> + </div> + <div class="search"> + <div class="search_thing"> + <div class="search_label">瀹㈡埛鍚嶇О锛�</div> + <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable + v-model="componentData.entity.name" @keyup.enter.native="refreshTable()"></el-input></div> + </div> + <div class="search_thing"> + <div class="search_label">璐﹀彿鐘舵�侊細</div> + <div class="search_input"> + <el-select size="small" v-model="componentData.entity.state" style="width: 100%;" @change="refreshTable()"> + <el-option label="鍏ㄩ儴" :value="null"></el-option> + <el-option label="鍚敤" :value="1"></el-option> + <el-option label="鍋滅敤" :value="0"></el-option> + </el-select> + </div> + </div> + <div class="search_thing" style="padding-left: 30px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + </div> + <div class="table"> + <ValueTable ref="ValueTable" :url="$api.user.selectCustomPageList" :delUrl="$api.user.delCustomById" + :componentData="componentData" :key="upIndex" /> + </div> + <el-dialog title="鏂板瀹㈡埛" :visible.sync="addDia" width="450px"> + <div style="margin-bottom: 15px;"> + <el-row style="line-height: 50px;"> + <el-col :span="7" style="text-align: right;padding-right: 8px;"> + <span class="required-span">* </span>瀹㈡埛鍚嶇О锛�</el-col> + <el-col :span="15"> + <el-input v-model="user.name" readonly size="small"> + <template slot="append"><el-button slot="append" icon="el-icon-search" + @click="selectUserDia = true"></el-button></template> + </el-input> + </el-col> + </el-row> + <el-row style="line-height: 50px;"> + <el-col :span="7" style="text-align: right;padding-right: 8px;"><span class="required-span">* + </span>瀹㈡埛璐︽埛锛�</el-col> + <el-col :span="15"> + <el-input v-model="user.account" readonly size="small"></el-input> + </el-col> + </el-row> + <el-row style="line-height: 50px;"> + <el-col :span="7" style="text-align: right;padding-right: 8px;">鐢靛瓙閭锛�</el-col> + <el-col :span="15"> + <el-input v-model="user.email" size="small" clearable></el-input> + </el-col> + </el-row> + <el-row style="line-height: 50px;"> + <el-col :span="7" style="text-align: right;padding-right: 8px;"><span class="required-span">* + </span>鐢佃瘽鍙风爜锛�</el-col> + <el-col :span="15"> + <el-input v-model="user.phone" size="small" clearable></el-input> + </el-col> + </el-row> + <el-row style="line-height: 50px;"> + <el-col :span="7" style="text-align: right;padding-right: 8px;"><span class="required-span">* + </span>瀹㈡埛鍗曚綅锛�</el-col> + <el-col :span="15"> + <el-input v-model="user.company" size="small" clearable></el-input> + </el-col> + </el-row> + <el-row style="margin-top: 15px;"> + <el-col :span="7" style="text-align: right;padding-right: 8px;"><span class="required-span">* + </span>鍗曚綅鍦板潃锛�</el-col> + <el-col :span="15"> + <el-input type="textarea" v-model="user.address" size="small" clearable :autosize="{minRows: 2, maxRows: 4}"></el-input> + </el-col> + </el-row> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="addDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="customAdd" :loading="loading">纭� 瀹�</el-button> + </span> + </el-dialog> + <el-dialog title="閫夋嫨鐢ㄦ埛" :visible.sync="selectUserDia" width="70%"> + <div class="body" style="height: 60vh;" v-if="selectUserDia"> + <ValueTable ref="ValueTable2" :url="$api.user.selectUserList" :componentData="componentData2" /> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="selectUserDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="selectUser">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> + import ValueTable from '../tool/value-table.vue' + export default { + components: { + ValueTable + }, + data() { + return { + componentData: { + entity: { + name: null, + state: null, + orderBy: { + field: 'id', + order: 'asc' + } + }, + isIndex: true, + showSelect: false, + select: false, + do: [{ + font: '濮旀墭璁板綍', + type: 'text', + method: 'entrust' + }, { + font: '鍗忚璁板綍', + type: 'text', + method: 'protocol' + }, { + id: 'delete', + font: '鍒犻櫎', + type: 'text', + method: 'doDiy' + }], + tagField: { + state: { + select: [{ + value: 1, + type: 'success', + label: '鍚敤' + }, { + value: 0, + type: 'danger', + label: '鍋滅敤' + }] + } + }, + selectField: { + state: { + select: [{ + value: 1, + type: 'success', + label: '鍚敤' + }, { + value: 0, + type: 'danger', + label: '鍋滅敤' + }] + } + }, + requiredAdd: [], + requiredUp: [] + }, + entityCopy: {}, + upIndex: 0, + addDia: false, + addPower: true, + addDia: false, + user: { + name: null + }, + selectUserDia: false, + loading: false, + componentData2: { + entity: { + isCustom: 0, + orderBy: { + field: 'id', + order: 'asc' + } + }, + isIndex: true, + showSelect: true, + select: false, + do: [], + tagField: {}, + selectField: {}, + } + } + }, + mounted() { + this.entityCopy = this.HaveJson(this.componentData.entity) + this.getPower() + }, + methods: { + refreshTable() { + this.$refs['ValueTable'].selectList() + }, + refresh() { + this.componentData.entity = this.HaveJson(this.entityCopy) + this.upIndex++ + }, + customAdd() { + if (this.user.name == '' || this.user.name == null) { + this.$message.error('璇峰~鍐欏鎴峰悕绉�') + return + } + if (this.user.account == '' || this.user.account == null) { + this.$message.error('璇峰~鍐欏鎴疯处鎴�') + return + } + if (this.user.phone == '' || this.user.phone == null) { + this.$message.error('璇峰~鍐欑數璇濆彿鐮�') + return + } + if (this.user.company == '' || this.user.company == null) { + this.$message.error('璇峰~鍐欏鎴峰崟浣�') + return + } + if (this.user.address == '' || this.user.address == null) { + this.$message.error('璇峰~鍐欏崟浣嶅湴鍧�') + return + } + this.loading = true + this.$axios.post(this.$api.user.addCustom, this.user, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 201) return + this.$message.success('娣诲姞鎴愬姛') + this.refreshTable() + this.loading = false + this.addDia = false + }) + }, + // 鏉冮檺鍒嗛厤 + getPower() { + let power = JSON.parse(sessionStorage.getItem('power')) + let up = false + let del = false + let add = false + for (var i = 0; i < power.length; i++) { + if (power[i].menuMethod == 'delCustomById') { + del = true + } + if (power[i].menuMethod == 'addCustom') { + add = true + } + } + if (!del) { + this.componentData.do.splice(2, 1) + } + this.addPower = add + }, + entrust(data) { + + }, + protocol(data) { + + }, + selectUser() { + let selects = this.$refs.ValueTable2.multipleSelection + if (selects.length == 0) { + this.$message.error('鏈�夋嫨鏁版嵁') + return + } + delete selects['orderBy'] + delete selects['updateUser'] + delete selects['updateTime'] + this.user = selects + this.selectUserDia = false + } + } + } +</script> \ No newline at end of file diff --git a/src/components/view/data-comparison.vue b/src/components/view/data-comparison.vue deleted file mode 100644 index 3571fca..0000000 --- a/src/components/view/data-comparison.vue +++ /dev/null @@ -1,147 +0,0 @@ -<style scoped> - .title { - height: 60px; - line-height: 60px; - } - - .search { - background-color: #fff; - height: 80px; - display: flex; - align-items: center; - } - - .search_thing { - width: 350px; - display: flex; - align-items: center; - } - - .search_label { - width: 120px; - font-size: 14px; - text-align: right; - } - - .search_input { - width: calc(100% - 110px); - } - - .table { - margin-top: 10px; - background-color: #fff; - width: calc(100% - 40px); - height: calc(100% - 60px - 80px - 10px - 40px); - padding: 20px; - } -</style> - -<template> - <div class="role_manage"> - <div> - <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">鍛樺伐鏁版嵁瀵规瘮</el-col> - </el-row> - </div> - <div class="search"> - <div class="search_thing"> - <div class="search_label">涓昏处鎴峰悕绉帮細</div> - <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.name"></el-input></div> - </div> - <div class="search_thing"> - <div class="search_label">瀛愯处鎴峰悕绉帮細</div> - <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.comparisonName"></el-input></div> - </div> - <div class="search_thing"> - <div class="search_label">鐧昏鏃ユ湡锛�</div> - <div class="search_input"> - <el-date-picker size="small" v-model="componentData.entity.createTime" type="date" placeholder="閫夋嫨鏃ユ湡" - value-format="yyyy-MM-dd" :clearable="false" :editable="false"></el-date-picker> - </div> - </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </div> - </div> - <div class="table"> - <ValueTable ref="ValueTable" :url="$api.dataReporting.selectDataComparisonDtoPageList" - :componentData="componentData" :key="upIndex" /> - </div> - </div> -</template> - -<script> - import ValueTable from '../tool/value-table.vue' - export default { - components: { - ValueTable - }, - data() { - return { - componentData: { - entity: { - name: null, - comparisonName: null, - createTime: null, - orderBy: { - field: 'createTime', - order: 'desc' - } - }, - isIndex: false, - showSelect: false, - select: true, - do: [], - tagField: {} - }, - entityCopy: {}, - upIndex: 0, - addDia: false, - product: [], - outPower: true - } - }, - created() { - var today = new Date(); - var yesterday = new Date(today); - yesterday.setDate(today.getDate() - 1); - var yyyy = yesterday.getFullYear(); - var mm = yesterday.getMonth() + 1; - var dd = yesterday.getDate() - if (dd < 10) { - dd = "0" + dd; - } - if (mm < 10) { - mm = "0" + mm; - } - this.componentData.entity.createTime = `${yyyy}-${mm}-${dd} 00:00:00` - this.componentData.entity.name = localStorage.getItem('data_com_name')==undefined?null:localStorage.getItem('data_com_name') - }, - mounted() { - this.entityCopy = this.HaveJson(this.componentData.entity) - }, - methods: { - refreshTable() { - if (this.componentData.entity.name == null || this.componentData.entity.name == '') { - this.$message.error('涓昏处鎴峰悕绉版槸蹇呭~椤�') - } else if (this.componentData.entity.comparisonName == null || this.componentData.entity.comparisonName == '') { - this.$message.error('瀛愯处鎴峰悕绉版槸蹇呭~椤�') - } else if (this.componentData.entity.createTime == null) { - this.$message.error('鐧昏鏃堕棿鏄繀濉」') - } else if (this.componentData.entity.name === this.componentData.entity.comparisonName) { - this.$message.error('瀵规瘮鐨勮处鎴蜂笉鑳介噸澶�') - } else { - localStorage.setItem('data_com_name', this.componentData.entity.name) - this.$refs['ValueTable'].selectList() - } - }, - refresh() { - this.componentData.entity = this.HaveJson(this.entityCopy) - this.upIndex++ - } - } - } -</script> \ No newline at end of file diff --git a/src/components/view/fans-submit.vue b/src/components/view/fans-submit.vue deleted file mode 100644 index 821fb1d..0000000 --- a/src/components/view/fans-submit.vue +++ /dev/null @@ -1,253 +0,0 @@ -<style scoped> - .title { - height: 60px; - line-height: 60px; - } - - .search { - background-color: #fff; - height: 80px; - display: flex; - align-items: center; - } - - .search_thing { - width: 350px; - display: flex; - align-items: center; - } - - .search_label { - width: 110px; - font-size: 14px; - text-align: right; - } - - .search_input { - width: calc(100% - 110px); - } - - .table { - margin-top: 10px; - background-color: #fff; - width: calc(100% - 40px); - height: calc(100% - 60px - 80px - 10px - 40px); - padding: 20px; - } -</style> - -<template> - <div class="role_manage"> - <div> - <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">杩涚矇涓婃姤</el-col> - <el-col :span="12" style="text-align: right;"> - <el-button size="medium" @click="$refs.ValueTable.openUpload()" v-if="inPower"> - <i class="el-icon-upload2" style="color: #3A7BFA;"></i> - <span style="color: #3A7BFA;">瀵煎叆</span> - </el-button> - <el-button size="medium" @click="$refs.ValueTable.openDownDia()" v-if="outPower"> - <i class="el-icon-download" style="color: #3A7BFA;"></i> - <span style="color: #3A7BFA;">瀵煎嚭</span> - </el-button> - <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">鏂板</el-button> - </el-col> - </el-row> - </div> - <div class="search"> - <div class="search_thing"> - <div class="search_label">绯荤粺鏃ユ湡锛�</div> - <div class="search_input"> - <el-date-picker size="small" v-model="componentData.entity.createTime" type="date" placeholder="閫夋嫨鏃ユ湡" - value-format="yyyy-MM-dd HH:mm:ss" :clearable="false" :editable="false" @change="refreshTable()"></el-date-picker> - </div> - </div> - <div class="search_thing"> - <div class="search_label">瀹㈡埛鍚嶇О锛�</div> - <div class="search_input"> - <el-select size="small" style="width: 100%;" placeholder="璇烽�夋嫨" v-model="componentData.entity.custom"> - <el-option :value="null" label="鍏ㄩ儴"></el-option> - <el-option v-for="(a, ai) in custom" :key="ai" :label="a.name" :value="a.name"></el-option> - </el-select> - </div> - </div> - <div class="search_thing"> - <div class="search_label">椤圭洰锛�</div> - <div class="search_input"> - <el-select size="small" style="width: 100%;" placeholder="璇烽�夋嫨" v-model="componentData.entity.product"> - <el-option :value="null" label="鍏ㄩ儴"></el-option> - <el-option v-for="(a, ai) in product" :key="ai" :label="a.product" :value="a.product"></el-option> - </el-select> - </div> - </div> - <div class="search_thing"> - <div class="search_label">鐧昏浜猴細</div> - <div class="search_input"> - <el-input size="small" v-model="componentData.entity.createUserName" clearable placeholder="鐧昏浜�" - @keyup.enter.native="refreshTable()"></el-input> - </div> - </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </div> - </div> - <div class="table"> - <ValueTable ref="ValueTable" :url="$api.dataReporting.selectFansSubmitList" - :upUrl="$api.dataReporting.updateFansSubmit" :delUrl="$api.dataReporting.delFansSubmit" - :componentData="componentData" :key="upIndex" :downUrl="$api.dataReporting.downFansSubmitFile" :inputUrl="$api.dataReporting.inputFansSubmitCsv"/> - </div> - </div> -</template> - -<script> - import ValueTable from '../tool/value-table.vue' - export default { - components: { - ValueTable - }, - data() { - return { - componentData: { - entity: { - createTime: null, - custom: null, - product: null, - createUserName: null, - orderBy: { - field: 'id', - order: 'asc' - } - }, - isIndex: true, - showSelect: false, - select: true, - do: [{ - id: 'update', - font: '缂栬緫', - type: 'text', - method: 'doDiy', - field: ['createUserName'] - }, { - id: 'delete', - font: '鍒犻櫎', - type: 'text', - method: 'doDiy' - }], - tagField: {}, - selectField: { - product: { - select: [] - }, - custom: { - select: [] - } - }, - requiredAdd: ['product', 'fansAdd', 'vx'], - requiredUp: ['product', 'fansAdd', 'vx'], - disabledUp: ['product', 'vx'] - }, - entityCopy: {}, - upIndex: 0, - product: [], - custom: [], - addPower: true, - inPower: true, - outPower: true - } - }, - created() { - var today = new Date(); - var yyyy = today.getFullYear(); - var mm = today.getMonth() + 1; - var dd = today.getDate() - if (dd < 10) { - dd = "0" + dd; - } - if (mm < 10) { - mm = "0" + mm; - } - this.componentData.entity.createTime = this.HaveJson(`${yyyy}-${mm}-${dd} 00:00:00`) - }, - mounted() { - this.entityCopy = this.HaveJson(this.componentData.entity) - this.selectProductEnumList() - this.selectCustomEnumList() - this.getPower() - }, - methods: { - refreshTable() { - this.$refs['ValueTable'].selectList() - }, - refresh() { - this.componentData.entity = this.HaveJson(this.entityCopy) - this.upIndex++ - }, - openAdd() { - this.$refs.ValueTable.openAddDia(this.$api.dataReporting.addFansSubmit); - }, - selectProductEnumList() { - this.$axios.get(this.$api.enums.selectProductEnumList).then(res => { - this.product = res.data - var str = [] - res.data.forEach(a => { - str.push({ - label: a.product, - value: a.product - }) - }) - this.componentData.selectField.product.select = str - }) - }, - selectCustomEnumList() { - this.$axios.get(this.$api.enums.selectCustomEnumList).then(res => { - this.custom = res.data - var str = [] - res.data.forEach(a => { - str.push({ - label: a.name, - value: a.name - }) - }) - this.componentData.selectField.custom.select = str - }) - }, - // 鏉冮檺鍒嗛厤 - getPower() { - let power = JSON.parse(sessionStorage.getItem('power')) - let up = false - let del = false - let add = false - let inPower = false - let outPower = false - for (var i = 0; i < power.length; i++) { - if (power[i].menuMethod == 'upDataReporting') { - up = true - } - if (power[i].menuMethod == 'delFansSubmit') { - del = true - } - if (power[i].menuMethod == 'addFansSubmit') { - add = true - } - if (power[i].menuMethod == 'inputFansSubmitCsv') { - inPower = true - } - if (power[i].menuMethod == 'downFansSubmitFile') { - outPower = true - } - } - if (!del) { - this.componentData.do.splice(1, 1) - } - if (!up) { - this.componentData.do.splice(0, 1) - } - this.addPower = add - this.inPower = inPower - this.outPower = outPower - }, - openUpload() {} - } - } -</script> diff --git a/src/components/view/finance-submit.vue b/src/components/view/finance-submit.vue deleted file mode 100644 index ff389b0..0000000 --- a/src/components/view/finance-submit.vue +++ /dev/null @@ -1,280 +0,0 @@ -<style scoped> - .title { - height: 60px; - line-height: 60px; - } - - .search { - background-color: #fff; - height: 80px; - display: flex; - align-items: center; - } - - .search_thing { - width: 350px; - display: flex; - align-items: center; - } - - .search_label { - width: 110px; - font-size: 14px; - text-align: right; - } - - .search_input { - width: calc(100% - 110px); - } - - .table { - margin-top: 10px; - background-color: #fff; - width: calc(100% - 40px); - height: calc(100% - 60px - 80px - 10px - 40px); - padding: 20px; - } - .el-radio-group{ - width: 100%; - } -</style> - -<template> - <div class="role_manage"> - <div> - <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">璐㈠姟涓婃姤</el-col> - <el-col :span="12" style="text-align: right;"> - <el-button size="medium" @click="chooseDia = true" v-if="inPower"> - <i class="el-icon-upload2" style="color: #3A7BFA;"></i> - <span style="color: #3A7BFA;">瀵煎叆</span> - </el-button> - <el-button size="medium" @click="$refs.ValueTable.openDownDia()" v-if="outPower"> - <i class="el-icon-download" style="color: #3A7BFA;"></i> - <span style="color: #3A7BFA;">瀵煎嚭</span> - </el-button> - <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">鏂板</el-button> - </el-col> - </el-row> - </div> - <div class="search"> - <div class="search_thing"> - <div class="search_label">绯荤粺鏃ユ湡锛�</div> - <div class="search_input"> - <el-date-picker size="small" v-model="componentData.entity.createTime" type="date" placeholder="閫夋嫨鏃ユ湡" - value-format="yyyy-MM-dd HH:mm:ss" :clearable="false" :editable="false" @change="refreshTable()"></el-date-picker> - </div> - </div> - <div class="search_thing"> - <div class="search_label">璐︽埛鍚嶏細</div> - <div class="search_input"> - <el-input size="small" v-model="componentData.entity.name" clearable placeholder="璐︽埛鍚�" - @keyup.enter.native="refreshTable()"></el-input> - </div> - </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </div> - </div> - <div class="table"> - <ValueTable ref="ValueTable" :url="$api.dataReporting.selectFinanceSubmitList" - :upUrl="$api.dataReporting.updateFinanceSubmit" :delUrl="$api.dataReporting.delFinanceSubmit" - :componentData="componentData" :key="upIndex" :downUrl="$api.dataReporting.downFinanceSubmitFile" :inputUrl="$api.dataReporting.inputFinanceSubmitCsv"/> - </div> - <el-dialog title="璇烽�夋嫨璐㈠姟涓婃姤鐨勫璞�" :visible.sync="chooseDia" width="500px"> - <div class="body" v-if="chooseDia" style="max-height: 550px;overflow-y: auto;padding: 5px 0;"> - <el-radio-group v-model="userId"> - <el-col :span="8" v-for="(a, ai) in users" :key="ai" style="margin-bottom: 2px;"> - <el-radio border size="small" :label="a.id">{{a.name}}</el-radio> - </el-col> - </el-radio-group> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="chooseDia = false">鍙栨秷</el-button> - <el-button type="primary" @click="goDown">涓嬩竴姝�</el-button> - </span> - </el-dialog> - </div> -</template> - -<script> - import ValueTable from '../tool/value-table.vue' - export default { - components: { - ValueTable - }, - data() { - return { - componentData: { - entity: { - name: null, - createTime: null, - orderBy: { - field: 'id', - order: 'asc' - } - }, - isIndex: true, - showSelect: false, - select: true, - do: [{ - id: 'update', - font: '缂栬緫', - type: 'text', - method: 'doDiy', - field: ['createUserName','瀵硅薄=param'] - }, { - id: 'delete', - font: '鍒犻櫎', - type: 'text', - method: 'doDiy' - }], - tagField: {}, - selectField: { - product: { - select: [] - }, - custom: { - select: [] - }, - param:{ - select:[] - } - }, - requiredAdd: ['company', 'name', 'employeeRebate','param'], - requiredUp: ['employeeRebate'], - disabledUp: ['company', 'name','param'], - uploadStr: "" - }, - entityCopy: {}, - upIndex: 0, - product: [], - custom: [], - addPower: true, - inPower: true, - outPower: true, - chooseDia: false, - users: [], - userId: null - } - }, - created() { - var today = new Date(); - var yyyy = today.getFullYear(); - var mm = today.getMonth() + 1; - var dd = today.getDate() - if (dd < 10) { - dd = "0" + dd; - } - if (mm < 10) { - mm = "0" + mm; - } - this.componentData.entity.createTime = this.HaveJson(`${yyyy}-${mm}-${dd} 00:00:00`) - }, - mounted() { - this.entityCopy = this.HaveJson(this.componentData.entity) - this.selectProductEnumList() - this.selectCustomEnumList() - this.getPower() - this.getUserList() - }, - methods: { - refreshTable() { - this.$refs['ValueTable'].selectList() - }, - refresh() { - this.componentData.entity = this.HaveJson(this.entityCopy) - this.upIndex++ - }, - openAdd() { - this.$refs.ValueTable.openAddDia(this.$api.dataReporting.addFinanceSubmit); - }, - selectProductEnumList() { - this.$axios.get(this.$api.enums.selectProductEnumList).then(res => { - this.product = res.data - var str = [] - res.data.forEach(a => { - str.push({ - label: a.product, - value: a.product - }) - }) - this.componentData.selectField.product.select = str - }) - }, - selectCustomEnumList() { - this.$axios.get(this.$api.enums.selectCustomEnumList).then(res => { - this.custom = res.data - var str = [] - res.data.forEach(a => { - str.push({ - label: a.name, - value: a.name - }) - }) - this.componentData.selectField.custom.select = str - }) - }, - // 鏉冮檺鍒嗛厤 - getPower() { - let power = JSON.parse(sessionStorage.getItem('power')) - let up = false - let del = false - let add = false - let inPower = false - let outPower = false - for (var i = 0; i < power.length; i++) { - if (power[i].menuMethod == 'updateFinanceSubmit') { - up = true - } - if (power[i].menuMethod == 'delFinanceSubmit') { - del = true - } - if (power[i].menuMethod == 'addFinanceSubmit') { - add = true - } - if (power[i].menuMethod == 'inputFinanceSubmitCsv') { - inPower = true - } - if (power[i].menuMethod == 'downFinanceSubmitFile') { - outPower = true - } - } - if (!del) { - this.componentData.do.splice(1, 1) - } - if (!up) { - this.componentData.do.splice(0, 1) - } - this.addPower = add - this.inPower = inPower - this.outPower = outPower - }, - getUserList(){ - this.$axios.get(this.$api.user.getUserMenu).then(res => { - if (res.code === 201) { - return - } - this.users = res.data - var str = [] - res.data.forEach(a => { - str.push({ - label: a.name, - value: a.id - }) - }) - this.componentData.selectField.param.select = str - }) - }, - goDown(){ - if(this.userId == null || this.userId == undefined) { - this.$message.error('璇烽�夋嫨璐㈠姟涓婃姤鐨勫璞�') - return - } - this.componentData.uploadStr = this.userId - this.$refs.ValueTable.openUpload() - } - } - } -</script> diff --git a/src/components/view/product-count.vue b/src/components/view/product-count.vue deleted file mode 100644 index cdc867b..0000000 --- a/src/components/view/product-count.vue +++ /dev/null @@ -1,158 +0,0 @@ -<style scoped> - .title { - height: 60px; - line-height: 60px; - } - - .search { - background-color: #fff; - height: 80px; - display: flex; - align-items: center; - } - - .search_thing { - width: 350px; - display: flex; - align-items: center; - } - - .search_label { - width: 110px; - font-size: 14px; - text-align: right; - } - - .search_input { - width: calc(100% - 110px); - } - - .table { - margin-top: 10px; - background-color: #fff; - width: calc(100% - 40px); - height: calc(100% - 60px - 80px - 10px - 40px); - padding: 20px; - } -</style> - -<template> - <div class="product_count"> - <div> - <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">椤圭洰鏁版嵁缁熻</el-col> - <el-col :span="12" style="text-align: right;"> - <el-button size="small" @click="$refs.ValueTable.openDownDia()" v-if="outPower"> - <i class="el-icon-download" style="color: #3A7BFA;"></i> - <span style="color: #3A7BFA;">瀵煎嚭</span> - </el-button> - </el-col> - </el-row> - </div> - <div class="search"> - <div class="search_thing"> - <div class="search_label">鐧昏鏃ユ湡锛�</div> - <div class="search_input"> - <el-date-picker size="small" v-model="componentData.entity.createTime" type="date" placeholder="閫夋嫨鏃ユ湡" - value-format="yyyy-MM-dd HH:mm:ss" :clearable="false" :editable="false"></el-date-picker> - </div> - </div> - <div class="search_thing"> - <div class="search_label">椤圭洰锛�</div> - <div class="search_input"> - <el-select size="small" style="width: 100%;" placeholder="璇烽�夋嫨" v-model="componentData.entity.product"> - <el-option :value="null" label="鍏ㄩ儴"></el-option> - <el-option v-for="(a, ai) in product" :key="ai" :label="a.product" :value="a.product"></el-option> - </el-select> - </div> - </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </div> - </div> - <div class="table"> - <ValueTable ref="ValueTable" :url="$api.dataReporting.selectProductCountDtoPageList" - :componentData="componentData" :key="upIndex" :downUrl="$api.dataReporting.downProductCountFile" /> - </div> - </div> -</template> - -<script> - import ValueTable from '../tool/value-table.vue' - export default { - components: { - ValueTable - }, - data() { - return { - componentData: { - entity: { - updateTime: null, - createTime: null, - product: null, - orderBy: { - field: 'update_time', - order: 'asc' - } - }, - isIndex: false, - showSelect: false, - select: true, - do: [], - tagField: {} - }, - entityCopy: {}, - upIndex: 0, - addDia: false, - product: [], - outPower: true - } - }, - created() { - var today = new Date(); - var yesterday = new Date(today); - yesterday.setDate(today.getDate() - 1); - var yyyy = yesterday.getFullYear(); - var mm = yesterday.getMonth() + 1; - var dd = yesterday.getDate() - if (dd < 10) { - dd = "0" + dd; - } - if (mm < 10) { - mm = "0" + mm; - } - this.componentData.entity.createTime = `${yyyy}-${mm}-${dd} 00:00:00` - }, - mounted() { - this.entityCopy = this.HaveJson(this.componentData.entity) - this.selectProductEnumList() - this.getPower() - }, - methods: { - refreshTable() { - this.$refs['ValueTable'].selectList() - }, - refresh() { - this.componentData.entity = this.HaveJson(this.entityCopy) - this.upIndex++ - }, - selectProductEnumList() { - this.$axios.get(this.$api.enums.selectProductEnumList).then(res => { - this.product = res.data - }) - }, - // 鏉冮檺鍒嗛厤 - getPower() { - let power = JSON.parse(sessionStorage.getItem('power')) - let outPower = false - for (var i = 0; i < power.length; i++) { - if (power[i].menuMethod == 'downProductCountFile') { - outPower = true - } - } - this.outPower = outPower - } - } - } -</script> \ No newline at end of file diff --git a/src/components/view/product-enum.vue b/src/components/view/product-enum.vue deleted file mode 100644 index 582c15d..0000000 --- a/src/components/view/product-enum.vue +++ /dev/null @@ -1,150 +0,0 @@ -<style scoped> - .title { - height: 60px; - line-height: 60px; - } - - .search { - background-color: #fff; - height: 80px; - display: flex; - align-items: center; - } - - .search_thing { - width: 350px; - display: flex; - align-items: center; - } - - .search_label { - width: 110px; - font-size: 14px; - text-align: right; - } - - .search_input { - width: calc(100% - 110px); - } - - .table { - margin-top: 10px; - background-color: #fff; - width: calc(100% - 40px); - height: calc(100% - 60px - 80px - 10px - 40px); - padding: 20px; - } -</style> - -<template> - <div class="product_manage"> - <div> - <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">椤圭洰绠$悊</el-col> - <el-col :span="12" style="text-align: right;"> - <el-button size="medium" type="primary" @click="openAdd" v-if="addPower">鏂板</el-button> - </el-col> - </el-row> - </div> - <div class="search"> - <div class="search_thing"> - <div class="search_label">椤圭洰鍚嶇О锛�</div> - <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.product" @keyup.enter.native="refreshTable()"></el-input></div> - </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </div> - </div> - <div class="table"> - <ValueTable ref="ValueTable" :url="$api.enums.selectProductEnumLists" :upUrl="$api.enums.updateProductEnum" :delUrl="$api.enums.delProductEnum" :componentData="componentData" :key="upIndex"/> - </div> - </div> -</template> - -<script> - import ValueTable from '../tool/value-table.vue' - export default { - components: { - ValueTable - }, - data() { - return { - componentData: { - entity: { - product: null, - orderBy: { - field: 'id', - order: 'asc' - } - }, - isIndex: true, - showSelect: true, - select: true, - do: [{ - id: 'update', - font: '缂栬緫', - type: 'text', - method: 'doDiy', - field:[] - },{ - id: 'delete', - font: '鍒犻櫎', - type: 'text', - method: 'doDiy' - }], - tagField: {}, - selectField: {}, - requiredAdd:['product'], - requiredUp:['product'] - }, - entityCopy: {}, - upIndex: 0, - addDia: false, - addPower: true - } - }, - mounted() { - this.entityCopy = this.HaveJson(this.componentData.entity) - this.getPower() - }, - methods: { - refreshTable() { - this.$refs['ValueTable'].selectList() - }, - refresh() { - this.componentData.entity = this.HaveJson(this.entityCopy) - this.upIndex++ - }, - openAdd(){ - this.$refs.ValueTable.openAddDia(this.$api.enums.addProductEnum); - }, - // 鏉冮檺鍒嗛厤 - getPower(){ - let power = JSON.parse(sessionStorage.getItem('power')) - let up = false - let del = false - let add = false - for (var i = 0; i < power.length; i++) { - if(power[i].menuMethod=='updateProductEnum'){ - up = true - } - if(power[i].menuMethod=='delProductEnum'){ - del = true - } - if(power[i].menuMethod=='addProductEnum'){ - add = true - } - } - if(!del){ - this.componentData.do.splice(1, 1) - } - if(!up){ - this.componentData.do.splice(0, 1) - } - this.addPower = add - } - } - } -</script> \ No newline at end of file diff --git a/src/components/view/registrant-count.vue b/src/components/view/registrant-count.vue deleted file mode 100644 index 5f89802..0000000 --- a/src/components/view/registrant-count.vue +++ /dev/null @@ -1,155 +0,0 @@ -<style scoped> - .title { - height: 60px; - line-height: 60px; - } - - .search { - background-color: #fff; - height: 80px; - display: flex; - align-items: center; - } - - .search_thing { - width: 350px; - display: flex; - align-items: center; - } - - .search_label { - width: 110px; - font-size: 14px; - text-align: right; - } - - .search_input { - width: calc(100% - 110px); - } - - .table { - margin-top: 10px; - background-color: #fff; - width: calc(100% - 40px); - height: calc(100% - 60px - 80px - 10px - 40px); - padding: 20px; - } -</style> -<style> - .registrant_count .el-table__row{ - height: 41px; - } -</style> - -<template> - <div class="registrant_count"> - <div> - <el-row class="title"> - <el-col :span="12" style="padding-left: 20px;">鍛樺伐鏁版嵁缁熻</el-col> - <el-col :span="12" style="text-align: right;"> - <el-button size="small" @click="$refs.ValueTable.openDownDia()" v-if="outPower"> - <i class="el-icon-download" style="color: #3A7BFA;"></i> - <span style="color: #3A7BFA;">瀵煎嚭</span> - </el-button> - </el-col> - </el-row> - </div> - <div class="search"> - <div class="search_thing"> - <div class="search_label">瀹㈡埛鍚嶇О锛�</div> - <div class="search_input"> - <el-select size="small" style="width: 100%;" placeholder="璇烽�夋嫨" v-model="componentData.entity.name"> - <el-option :value="null" label="鍏ㄩ儴"></el-option> - <el-option v-for="(a, ai) in custom" :key="ai" :label="a.name" :value="a.name"></el-option> - </el-select> - </div> - </div> - <div class="search_thing"> - <div class="search_label">椤圭洰锛�</div> - <div class="search_input"> - <el-select size="small" style="width: 100%;" placeholder="璇烽�夋嫨" v-model="componentData.entity.product"> - <el-option :value="null" label="鍏ㄩ儴"></el-option> - <el-option v-for="(a, ai) in product" :key="ai" :label="a.product" :value="a.product"></el-option> - </el-select> - </div> - </div> - <div class="search_thing" style="padding-left: 30px;"> - <el-button size="small" @click="refresh()">閲� 缃�</el-button> - <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> - </div> - </div> - <div class="table"> - <ValueTable ref="ValueTable" :url="$api.dataReporting.selectRegistrantCountDtoPageList" :componentData="componentData" :key="upIndex" :downUrl="$api.dataReporting.downRegistrantCountFile"/> - </div> - </div> -</template> - -<script> - import ValueTable from '../tool/value-table.vue' - export default { - components: { - ValueTable - }, - data() { - return { - componentData: { - entity: { - name: null, - product: null, - orderBy: { - field: 'create_time', - order: 'desc' - } - }, - isIndex: false, - showSelect: false, - select: true, - do: [], - tagField: {} - }, - entityCopy: {}, - upIndex: 0, - addDia: false, - product: [], - custom:[], - outPower: true - } - }, - mounted() { - this.entityCopy = this.HaveJson(this.componentData.entity) - this.selectProductEnumList() - this.selectCustomEnumList() - this.getPower() - }, - methods: { - refreshTable() { - this.$refs['ValueTable'].selectList() - }, - refresh() { - this.componentData.entity = this.HaveJson(this.entityCopy) - this.upIndex++ - }, - selectProductEnumList(){ - this.$axios.get(this.$api.enums.selectProductEnumList).then(res=>{ - this.product = res.data - }) - }, - selectCustomEnumList(){ - this.$axios.get(this.$api.enums.selectCustomEnumList).then(res=>{ - this.custom = res.data - }) - }, - // 鏉冮檺鍒嗛厤 - getPower() { - let power = JSON.parse(sessionStorage.getItem('power')) - let outPower = false - for (var i = 0; i < power.length; i++) { - if (power[i].menuMethod == 'downRegistrantCountFile') { - outPower = true - } - } - this.outPower = outPower - } - } - } -</script> \ No newline at end of file diff --git a/static/js/menu.js b/static/js/menu.js index 4373533..0181f46 100644 --- a/static/js/menu.js +++ b/static/js/menu.js @@ -177,8 +177,8 @@ }, { v: "瀹㈡埛绠$悊", i: "el-icon-s-tools", - u: "", - p: "" + u: "custom_manage", + p: "selectCustomPageList" }, { v: "绯荤粺鏃ュ織", i: "el-icon-s-tools", -- Gitblit v1.9.3