From f40baa32448083d55bae9b5a51724989ad8413d4 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 08 十一月 2024 10:10:21 +0800
Subject: [PATCH] 优化需求
---
company/src/components/business/OperaCompanyUserApplyWindow.vue | 263 +++++++++++++++++++++++++++++++++++++
company/src/api/business/companyUserApply.js | 18 ++
company/src/api/business/company.js | 5
company/src/api/system/user.js | 5
company/src/views/business/companyUserApply.vue | 93 +++++++++++++
5 files changed, 384 insertions(+), 0 deletions(-)
diff --git a/company/src/api/business/company.js b/company/src/api/business/company.js
index dba1e13..8547df0 100644
--- a/company/src/api/business/company.js
+++ b/company/src/api/business/company.js
@@ -55,3 +55,8 @@
export function updateSolutions (data) {
return request.post('/business/company/updateSolutions', data)
}
+
+// 鏌ヨ褰撳墠浼佷笟杩涜闆嗗洟鐢宠鍙互鐢宠鐨勪紒涓�
+export function findAllCompanyList (data) {
+ return request.post('/business/company/findAllCompanyList', data)
+}
diff --git a/company/src/api/business/companyUserApply.js b/company/src/api/business/companyUserApply.js
new file mode 100644
index 0000000..0da4669
--- /dev/null
+++ b/company/src/api/business/companyUserApply.js
@@ -0,0 +1,18 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/business/companyUserApply/page', data, {
+ trim: true
+ })
+}
+
+// 鍒涘缓
+export function create (data) {
+ return request.post('/business/companyUserApply/create', data)
+}
+
+// 淇敼
+export function updateById (data) {
+ return request.post('/business/companyUserApply/updateById', data)
+}
diff --git a/company/src/api/system/user.js b/company/src/api/system/user.js
index 6cbfe6b..e47475a 100644
--- a/company/src/api/system/user.js
+++ b/company/src/api/system/user.js
@@ -52,3 +52,8 @@
export function updateHead (data) {
return request.post('/system/user/updateHead', data)
}
+
+// 鏌ヨ褰撳墠浼佷笟涓嬫墍鏈夌敤鎴�
+export function findUserList (data) {
+ return request.post('/system/user/findUserList', data)
+}
diff --git a/company/src/components/business/OperaCompanyUserApplyWindow.vue b/company/src/components/business/OperaCompanyUserApplyWindow.vue
new file mode 100644
index 0000000..de7970a
--- /dev/null
+++ b/company/src/components/business/OperaCompanyUserApplyWindow.vue
@@ -0,0 +1,263 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ width="50%"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ @confirm="confirm"
+ >
+ <el-form :model="form" ref="form" :rules="rules">
+ <el-form-item label="鎺堟潈璐﹀彿" prop="userId">
+ <el-select v-model="form.userId" filterable placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in account"
+ :key="item.id"
+ :label="item.username"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鐢宠鎺堟潈浼佷笟" prop="companyIds">
+ <el-select
+ v-model="form.companyIds"
+ multiple
+ filterable
+ allow-create
+ default-first-option
+ placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in company"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+<!-- <div style="display: flex; align-items: center;">-->
+<!-- <el-input v-model="form.content" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>-->
+<!-- </div>-->
+<!-- <div class="list">-->
+<!-- <div class="list_label">宸查�変紒涓氾細</div>-->
+<!-- <div class="list_box">-->
+<!-- <div class="list_box_row">-->
+<!-- <span>XXX鏈夐檺璐d换鍏徃</span>-->
+<!-- <i class="el-icon-error"></i>-->
+<!-- </div>-->
+<!-- <div class="list_box_row">-->
+<!-- <span>XXX鏈夐檺璐d换鍏徃</span>-->
+<!-- <i class="el-icon-error"></i>-->
+<!-- </div>-->
+<!-- </div>-->
+<!-- </div>-->
+ </el-form-item>
+ <el-form-item label="鐢宠璇存槑" prop="content">
+ <el-input
+ type="textarea"
+ placeholder="璇疯緭鍏ョ敵璇疯鏄�"
+ v-model="form.content"
+ maxlength="30"
+ show-word-limit />
+ </el-form-item>
+ <el-form-item label="鎺堟潈涔�" prop="multifileList">
+ <UploadFile @remove="deleFile" :uploadData="{ folder: 'apply', fileType:'.pdf' }" :fileList="fileList" @uploadSuccess="editFanganFile" />
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+ import BaseOpera from '@/components/base/BaseOpera'
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import UploadFile from '@/components/common/UploadFile'
+ import { findUserList } from '@/api/system/user'
+ import { findAllCompanyList } from '@/api/business/company'
+ export default {
+ name: 'OperaCompanyUserApplyWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow, UploadFile },
+ data () {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: null,
+ userId: '',
+ content: '',
+ companyIds: [],
+ multifileList: null
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ multifileList: [
+ { required: true, message: '璇蜂笂浼犳巿鏉冧功' }
+ ],
+ companyIds: [
+ { required: true, message: '璇烽�夋嫨鎺堟潈浼佷笟' }
+ ],
+ userId: [
+ { required: true, message: '璇烽�夋嫨鎺堟潈璐﹀彿' }
+ ]
+ },
+ account: [],
+ fileList: [],
+ company: []
+ }
+ },
+ created () {
+ this.config({
+ api: '/business/companyUserApply',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ __confirmCreate () {
+ this.$refs.form.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ let obj = JSON.parse(JSON.stringify(this.form))
+ obj.multifileList = [obj.multifileList]
+ obj.companyIds = obj.companyIds.join(',')
+ obj.companyNames = []
+ this.form.companyIds.forEach(item => {
+ this.company.forEach(row => {
+ if (item === row.id) {
+ obj.companyNames.push(row.name)
+ }
+ })
+ })
+ obj.companyNames = obj.companyNames.join(',')
+ this.isWorking = true
+ this.api.create(obj)
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('鏂板缓鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ })
+ },
+ // 纭淇敼
+ __confirmEdit () {
+ this.$refs.form.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ let obj = JSON.parse(JSON.stringify(this.form))
+ obj.multifileList = [obj.multifileList]
+ obj.companyIds = obj.companyIds.join(',')
+ obj.companyNames = []
+ this.form.companyIds.forEach(item => {
+ this.company.forEach(row => {
+ if (item === row.id) {
+ obj.companyNames.push(row.name)
+ }
+ })
+ })
+ obj.companyNames = obj.companyNames.join(',')
+ this.isWorking = true
+ this.api.updateById(obj)
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('淇敼鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ })
+ },
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ this.getAccount()
+ this.getFindAllCompanyList()
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ })
+ },
+ deleFile () {
+ this.form.multifileList = null
+ },
+ editFanganFile (data) {
+ this.form.multifileList = data
+ },
+ getAccount() {
+ findUserList({})
+ .then(res => {
+ console.log(res)
+ this.account = res
+ })
+ },
+ getFindAllCompanyList() {
+ findAllCompanyList({})
+ .then(res => {
+ console.log(res)
+ this.company = res
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .list {
+ width: 100%;
+ padding: 10px 16px;
+ box-sizing: border-box;
+ background: #F4F7FC;
+ border-radius: 2px;
+ border: 1px solid #DFE2E8;
+ margin-top: 10px;
+ .list_label {
+ font-weight: 400;
+ font-size: 13px;
+ color: #333333;
+ }
+ .list_box {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ .list_box_row {
+ padding: 0 10px;
+ box-sizing: border-box;
+ background: #FFFFFF;
+ border-radius: 2px;
+ display: flex;
+ align-items: center;
+ margin-right: 10px;
+ &:last-child {
+ margin: 0 !important;
+ }
+ span {
+ font-weight: 400;
+ font-size: 12px;
+ color: #3F4F69;
+ margin-right: 12px;
+ }
+ i {
+ color: #BFC3CB;
+ cursor: pointer;
+ }
+ }
+ }
+ }
+</style>
diff --git a/company/src/views/business/companyUserApply.vue b/company/src/views/business/companyUserApply.vue
new file mode 100644
index 0000000..a1443b8
--- /dev/null
+++ b/company/src/views/business/companyUserApply.vue
@@ -0,0 +1,93 @@
+<template>
+ <TableLayout :permissions="['business:companyuserapply:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="鐢宠鐘舵��" prop="status">
+ <el-select v-model="searchForm.status" @change="search" placeholder="璇烽�夋嫨">
+ <el-option label="寰呭鏍�" :value="0"></el-option>
+ <el-option label="瀹℃牳閫氳繃" :value="1"></el-option>
+ <el-option label="瀹℃牳涓嶉�氳繃" :value="2"></el-option>
+ </el-select>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['business:companyuserapply:create']">
+ <li><el-button type="primary" @click="$refs.operaCompanyUserApplyWindow.open('鏂板缓鐢宠')" icon="el-icon-plus" v-permissions="['business:companyuserapply:create']">鏂板缓</el-button></li>
+ </ul>
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ >
+ <el-table-column label="搴忓彿" width="80px">
+ <template slot-scope="scope">
+ <span>{{scope.$index + 1}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="realName" label="鐢宠浜�"></el-table-column>
+ <el-table-column prop="userName" label="鎺堟潈璐﹀彿"></el-table-column>
+ <el-table-column prop="content" label="鐢宠璇存槑"></el-table-column>
+ <el-table-column prop="createDate" label="鐢宠鏃堕棿"></el-table-column>
+ <el-table-column label="鐢宠鐘舵��">
+ <template slot-scope="{row}">
+ <span v-if="row.status === 0">寰呭鏍�</span>
+ <span v-if="row.status === 1">瀹℃牳閫氳繃</span>
+ <span v-if="row.status === 2">瀹℃牳涓嶉�氳繃</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ min-width="120"
+ fixed="right"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.operaCompanyUserApplyWindow.open('鐢宠璁板綍璇︽儏', row)" icon="el-icon-view">鏌ョ湅</el-button>
+ <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:companyuserapply:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaCompanyUserApplyWindow ref="operaCompanyUserApplyWindow" @success="handlePageChange"/>
+ </TableLayout>
+</template>
+
+<script>
+ import BaseTable from '@/components/base/BaseTable'
+ import TableLayout from '@/layouts/TableLayout'
+ import Pagination from '@/components/common/Pagination'
+ import OperaCompanyUserApplyWindow from '@/components/business/OperaCompanyUserApplyWindow'
+ export default {
+ name: 'CompanyUserApply',
+ extends: BaseTable,
+ components: { TableLayout, Pagination, OperaCompanyUserApplyWindow },
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ status: ''
+ }
+ }
+ },
+ created () {
+ this.config({
+ module: '闆嗗洟鐢宠璁板綍琛�',
+ api: '/business/companyUserApply',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.search()
+ }
+ }
+</script>
--
Gitblit v1.9.3