From 74da5f0d434681ca8e9090e242e7fd29c144ebcb Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期六, 15 二月 2025 16:15:02 +0800 Subject: [PATCH] 工时管理30% --- src/views/system/customer/index.vue | 475 +++++++++++++++++++++++++--------------------------------- 1 files changed, 205 insertions(+), 270 deletions(-) diff --git a/src/views/system/customer/index.vue b/src/views/system/customer/index.vue index 9bef5d6..b67c0b1 100644 --- a/src/views/system/customer/index.vue +++ b/src/views/system/customer/index.vue @@ -2,318 +2,253 @@ <div class="app-container"> <div class="search"> <div> - <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"> - <el-form-item label="鐘舵��" prop="state"> - <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.company" - @keyup.enter.native="refreshTable()"></el-input> + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + > + <el-form-item label="瀹㈡埛鍚嶇О" prop="company"> + <el-input + size="small" + placeholder="璇疯緭鍏�" + clearable + v-model="queryParams.company" + @keyup.enter.native="getList" + ></el-input> </el-form-item> <el-form-item> - <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">鏌� 璇�</el-button> - <el-button icon="el-icon-refresh" size="mini" @click="refresh">閲� 缃�</el-button> + <el-button + type="primary" + icon="el-icon-search" + size="mini" + @click="getList" + >鏌� 璇�</el-button + > + <el-button icon="el-icon-refresh" size="mini" @click="refresh" + >閲� 缃�</el-button + > </el-form-item> </el-form> </div> <div> - <el-button size="small" type="primary" @click="addDia = true" v-if="addPower" icon="el-icon-plus">鏂板</el-button> + <el-button + size="small" + type="primary" + @click="openFormDia('add')" + icon="el-icon-plus" + >鏂板</el-button + > </div> </div> -<!-- <div class="table">--> -<!-- <ValueTable ref="ValueTable" :url="$api.user.selectCustomPageList" :delUrl="$api.user.delCustomById"--> -<!-- :componentData="componentData" :key="upIndex" :upUrl="$api.user.upCustom"/>--> -<!-- </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.company" 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>瀹㈡埛鍗曚綅EN锛�</el-col> - <el-col :span="15"> - <el-input v-model="user.companyEn" 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> - <el-row style="margin-top: 15px;"> - <el-col :span="7" style="text-align: right;padding-right: 8px;"><span class="required-span">* - </span>瀹㈡埛鍦板潃EN锛�</el-col> - <el-col :span="15"> - <el-input type="textarea" v-model="user.addressEn" size="small" clearable - :autosize="{minRows: 2, maxRows: 4}"></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.num" 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;">鍗曚綅鐢佃瘽锛�</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;">宸ュ巶鍩燂細</el-col> - <el-col :span="15"> - <el-input v-model="user.code" 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.code2" size="small" clearable></el-input> - </el-col> - </el-row> - </div> + <div> + <lims-table + :tableData="tableData" + :column="column" + :page="page" + :tableLoading="tableLoading" + ></lims-table> + </div> + <el-dialog :title="formTitle" :visible.sync="addDia" width="450px"> + <el-form + ref="userForm" + :model="user" + :rules="userRules" + label-position="right" + label-width="100px" + > + <el-form-item label="瀹㈡埛鍚嶇О" prop="company"> + <el-input v-model="user.company" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="瀹㈡埛鍗曚綅EN" prop="companyEn"> + <el-input v-model="user.companyEn" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="鍗曚綅鍦板潃" prop="address"> + <el-input + type="textarea" + v-model="user.address" + size="small" + clearable + :autosize="{ minRows: 2, maxRows: 4 }" + ></el-input> + </el-form-item> + <el-form-item label="鍗曚綅鍦板潃EN" prop="addressEn"> + <el-input + type="textarea" + v-model="user.addressEn" + size="small" + clearable + :autosize="{ minRows: 2, maxRows: 4 }" + ></el-input> + </el-form-item> + <el-form-item label="鍗曚綅鐢佃瘽" prop="phone"> + <el-input v-model="user.phone" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="鍔犳�ラ搴�" prop="num"> + <el-input v-model="user.num" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="瀹㈡埛缂栧彿" prop="code2"> + <el-input v-model="user.code2" size="small" clearable></el-input> + </el-form-item> + <el-form-item label="宸ュ巶鍩�" prop="code"> + <el-input v-model="user.code" size="small" clearable></el-input> + </el-form-item> + </el-form> <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="search" style="height: 35px; margin-bottom: 9px;"> - <div class="search_thing"> - <div class="search_label">鐢ㄦ埛鍚嶏細</div> - <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData2.entity.name" @keyup.enter.native="$refs.ValueTable2.selectList()"></el-input></div> - </div> - </div> -<!-- <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-button @click="reset">鍙� 娑�</el-button> + <el-button type="primary" @click="customAdd" :loading="loading" + >纭� 瀹�</el-button + > + </span> </el-dialog> </div> </template> <script> -import ValueTable from '@/components/Table/value-table.vue' +import limsTable from "@/components/Table/lims-table.vue"; +import { + addCustom, + selectCustomPageList, + upCustom, +} from "@/api/system/customer"; export default { components: { - ValueTable + limsTable, }, data() { return { queryParams: { - company: '' + company: "", }, - componentData: { - entity: { - company: null, - orderBy: { - field: 'id', - order: 'asc' - } + tableData: [], + column: [ + { label: "瀹㈡埛鍚嶇О", prop: "company" }, + { label: "瀹㈡埛鍗曚綅EN", prop: "companyEn" }, + { label: "鍗曚綅鍦板潃", prop: "address" }, + { label: "鍗曚綅鍦板潃EN", prop: "addressEn" }, + { label: "鍗曚綅鐢佃瘽", prop: "phone" }, + { label: "鍔犳�ラ搴�", prop: "num" }, + { label: "瀹㈡埛缂栧彿", prop: "code2" }, + { label: "宸ュ巶鍩�", prop: "code" }, + { + dataType: "action", + fixed: "right", + label: "鎿嶄綔", + operation: [ + { + name: "缂栬緫", + type: "text", + clickFun: (row) => { + this.openFormDia("edit", row); + }, + }, + ], }, - isIndex: true, - showSelect: false, - select: false, - do: [{ - font: '濮旀墭璁板綍', - type: 'text', - method: 'entrust' - }, { - font: '鍗忚璁板綍', - type: 'text', - method: 'protocol' - },{ - id: 'update', - font: '缂栬緫', - type: 'text', - method: 'doDiy', - field:[] - },{ - 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: ['company','address','code2','companyEn','addressEn','num'] + ], + page: { + total: 0, + size: 10, + current: 0, }, - entityCopy: {}, - upIndex: 0, + tableLoading: false, + // 缂栬緫瀹㈡埛寮规 + operationType: "", + formTitle: "", addDia: false, addPower: true, - user: { - name: null + user: {}, + userRules: { + company: [ + { required: true, message: "璇疯緭鍏ュ鎴峰悕绉�", trigger: "blur" }, + ], + companyEn: [ + { required: true, message: "璇疯緭鍏ュ鎴峰悕绉癊N", trigger: "blur" }, + ], + address: [ + { required: true, message: "璇疯緭鍏ュ崟浣嶅湴鍧�", trigger: "blur" }, + ], + addressEn: [ + { required: true, message: "璇疯緭鍗曚綅鍦板潃EN", trigger: "blur" }, + ], + num: [{ required: true, message: "璇疯緭鍏ュ姞鎬ラ搴�", trigger: "blur" }], + code2: [{ required: true, message: "璇疯緭鍏ュ鎴风紪鍙�", trigger: "blur" }], }, - selectUserDia: false, loading: false, - componentData2: { - entity: { - isCustom: 0, - orderBy: { - field: 'id', - order: 'asc' - } - }, - isIndex: true, - showSelect: true, - select: false, - do: [], - tagField: { - state: { - select: [{ - value: 1, - type: 'success', - label: '鍚敤' - }, { - value: 0, - type: 'danger', - label: '鍋滅敤' - }] - } - }, - selectField: {}, - needSort: ['company'], - } - } + // + }; }, mounted() { - this.entityCopy = this.HaveJson(this.componentData.entity) - this.getPower() + this.getList(); }, methods: { - refreshTable() { - this.$refs['ValueTable'].selectList() + // 鏌ヨ瀹㈡埛鍒楄〃 + getList() { + this.tableLoading = true; + selectCustomPageList({ ...this.queryParams, ...this.page }) + .then((res) => { + this.tableLoading = false; + if (res.code === 200) { + this.tableData = res.data; + this.page.total = res.total; + } + }) + .catch((err) => { + this.tableLoading = false; + }); }, + // 閲嶇疆table refresh() { - this.componentData.entity = this.HaveJson(this.entityCopy) - this.upIndex++ + this.queryParams.company = ""; + this.getList(); + }, + openFormDia(type, row) { + this.addDia = true; + this.formTitle = type === "add" ? "鏂板瀹㈡埛" : "缂栬緫瀹㈡埛"; + this.operationType = type; }, customAdd() { - if (this.user.company == '' || this.user.company == null) { - this.$message.error('璇峰~鍐欏鎴峰崟浣�') - return - } - if (this.user.address == '' || this.user.address == null) { - this.$message.error('璇峰~鍐欏崟浣嶅湴鍧�') - return - } - if (this.user.companyEn == '' || this.user.companyEn == null) { - this.$message.error('璇峰~鍐欒嫳鏂囧鎴峰崟浣�') - return - } - if (this.user.addressEn == '' || this.user.addressEn == null) { - this.$message.error('璇峰~鍐欒嫳鏂囧崟浣嶅湴鍧�') - return - } - if (this.user.code2 == '' || this.user.code2 == null) { - this.$message.error('璇峰~鍐欏鎴风紪鍙�') - return - } - if (this.user.code2 == '' || this.user.code2 == null) { - this.$message.error('璇峰~鍐欏姞鎬ラ搴�') - return - } - this.loading = true - this.$axios.post(this.$api.user.addCustom, this.user, { - headers: { - 'Content-Type': 'application/json' + this.$refs["userForm"].validate((valid) => { + if (valid) { + this.loading = true; + if (this.operationType === "add") { + addCustom(this.user) + .then((res) => { + this.loading = false; + if (res.code !== 200) return; + this.$message.success("鏂板鎴愬姛"); + this.getList(); + this.reset(); + }) + .catch((err) => { + this.loading = false; + }); + } else { + upCustom(this.user) + .then((res) => { + this.loading = false; + if (res.code !== 200) return; + this.$message.success("淇敼鎴愬姛"); + this.getList(); + this.reset(); + }) + .catch((err) => { + this.loading = false; + }); + } } - }).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 (power[i].menuMethod == 'upCustom') { - up = true - } - } - if (!del) { - this.componentData.do.splice(3, 1) - } - if (!up) { - this.componentData.do.splice(2, 1) - } - this.addPower = add + reset() { + this.addDia = false; + this.resetForm("userForm"); }, - 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> <style scoped> .search { - height: 80px; + height: 46px; display: flex; justify-content: space-between; } -- Gitblit v1.9.3