From bf37344fc209db25e887aee5910108e389605d8c Mon Sep 17 00:00:00 2001
From: Mr.Shi <1878285526@qq.com>
Date: 星期五, 15 九月 2023 18:25:31 +0800
Subject: [PATCH] 企业端
---
company_admin/src/components/business/OperaStaffWindow.vue | 162 +++++
company_admin/package-lock.json | 160 ++--
company_admin/src/api/business/anchor.js | 43 +
company_admin/src/components/business/selectProductItem.vue | 183 +++++
company_admin/src/views/business/anchor.vue | 155 +++++
company_admin/src/components/business/OperaAnchorWindow.vue | 82 ++
company_admin/src/components/business/OperaAnchorPassWindow.vue | 95 +++
company_admin/src/components/business/selectProduct.vue | 119 +++
company_admin/src/api/business/page.js | 11
company_admin/src/components/business/OperaGoodsWindow.vue | 26
company_admin/src/views/business/staff.vue | 163 +++++
company_admin/src/views/system/menu.vue | 2
company_admin/src/api/business/category.js | 15
company_admin/src/views/business/category.vue | 14
company_admin/src/api/business/goods.js | 25
company_admin/src/views/business/pageConfiguration.vue | 205 ++++++
company_admin/src/components/business/OperaCategoryWindow.vue | 278 +++++++-
company_admin/.env.development | 2
company_admin/src/views/business/goods.vue | 110 ++-
19 files changed, 1,651 insertions(+), 199 deletions(-)
diff --git a/company_admin/.env.development b/company_admin/.env.development
index 6527b3f..6c3c4c6 100644
--- a/company_admin/.env.development
+++ b/company_admin/.env.development
@@ -3,6 +3,6 @@
# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
-VUE_APP_API = 'http://192.168.0.15:10017/'
+VUE_APP_API = 'http://192.168.0.15:10012/'
# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
\ No newline at end of file
diff --git a/company_admin/package-lock.json b/company_admin/package-lock.json
index 7392df2..f92c6d2 100644
--- a/company_admin/package-lock.json
+++ b/company_admin/package-lock.json
@@ -1814,6 +1814,63 @@
"integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
"dev": true
},
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "optional": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "optional": true
+ },
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ },
"ssri": {
"version": "8.0.1",
"resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
@@ -1821,6 +1878,28 @@
"dev": true,
"requires": {
"minipass": "^3.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "vue-loader-v16": {
+ "version": "npm:vue-loader@16.8.3",
+ "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
+ "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "hash-sum": "^2.0.0",
+ "loader-utils": "^2.0.0"
}
}
}
@@ -13208,87 +13287,6 @@
"resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
"integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
"dev": true
- }
- }
- },
- "vue-loader-v16": {
- "version": "npm:vue-loader@16.8.3",
- "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
- "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
- "dev": true,
- "optional": true,
- "requires": {
- "chalk": "^4.1.0",
- "hash-sum": "^2.0.0",
- "loader-utils": "^2.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true,
- "optional": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "optional": true
- },
- "loader-utils": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
- "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
- "dev": true,
- "optional": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "optional": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
}
}
},
diff --git a/company_admin/src/api/business/anchor.js b/company_admin/src/api/business/anchor.js
new file mode 100644
index 0000000..f3ca0c6
--- /dev/null
+++ b/company_admin/src/api/business/anchor.js
@@ -0,0 +1,43 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/system/user/page', data, {
+ trim: true
+ })
+}
+
+// 鍒涘缓
+export function create (data) {
+ return request.post('/system/user/companyCreateAnchor', data)
+}
+
+// 鏂板缓鍛樺伐
+export function companyCreateUser (data) {
+ return request.post('/system/user/companyCreateUser', data)
+}
+
+// 淇敼鍛樺伐淇℃伅
+export function companyUpdUser (data) {
+ return request.post('/system/user/companyUpdUser', data)
+}
+
+// 淇敼
+export function updateById (data) {
+ return request.post('/system/user/companyUpdAnchor', data)
+}
+
+// 鍒犻櫎
+export function deleteById (id) {
+ return request.get(`/system/user/delete/${id}`)
+}
+
+// 淇敼鐢ㄦ埛鐘舵��
+export function updUserStatus (params) {
+ return request.get(`/system/user/updUserStatus`, { params })
+}
+
+// 淇敼瀵嗙爜
+export function updPassword (data) {
+ return request.post('/system/user/updPassword', data)
+}
diff --git a/company_admin/src/api/business/category.js b/company_admin/src/api/business/category.js
index 400630f..f0a40c7 100644
--- a/company_admin/src/api/business/category.js
+++ b/company_admin/src/api/business/category.js
@@ -38,4 +38,19 @@
// 淇敼鐘舵��
export function updateDisableById (data) {
return request.post('/business/category/updateDisableById', data)
+}
+
+// 骞冲彴鍒嗙被鍒楄〃
+export function baseCategoryList (data) {
+ return request.post('/business/category/baseCategoryList', data)
+}
+
+// 浼佷笟鏂板缓鍒嗙被
+export function companyCreate (data) {
+ return request.post('/business/category/companyCreate', data)
+}
+
+// 浼佷笟鏍规嵁ID淇敼
+export function companyUpdateById (data) {
+ return request.post('/business/category/companyUpdateById', data)
}
\ No newline at end of file
diff --git a/company_admin/src/api/business/goods.js b/company_admin/src/api/business/goods.js
index 4bb3c85..2f57596 100644
--- a/company_admin/src/api/business/goods.js
+++ b/company_admin/src/api/business/goods.js
@@ -28,11 +28,36 @@
return request.post('/business/goods/create', data)
}
+// 浼佷笟鏂板缓鍟嗗搧
+export function companyCreate (data) {
+ return request.post('/business/goods/companyCreate', data)
+}
+
// 淇敼
export function updateById (data) {
return request.post('/business/goods/updateById', data)
}
+// 浼佷笟鏍规嵁ID淇敼
+export function companyUpdateById (data) {
+ return request.post('/business/goods/companyUpdateById', data)
+}
+
+// 鎵归噺淇敼鐘舵��
+export function batchUpdateDisableById (data) {
+ return request.post('/business/goods/batchUpdateDisableById', data)
+}
+
+// 浠庡钩鍙伴�夋嫨鍟嗗搧
+export function createPlat (data) {
+ return request.post('/business/goods/createPlat', data)
+}
+
+// 鍒嗛〉鏌ヨ
+export function pageT (data) {
+ return request.post('/business/baseGoods/page', data)
+}
+
// 鍒犻櫎
export function deleteById (id) {
return request.get(`/business/goods/delete/${id}`)
diff --git a/company_admin/src/api/business/page.js b/company_admin/src/api/business/page.js
new file mode 100644
index 0000000..2acfce3
--- /dev/null
+++ b/company_admin/src/api/business/page.js
@@ -0,0 +1,11 @@
+import request from '../../utils/request'
+
+// 鑾峰彇褰撳墠鐧诲綍浼佷笟閰嶇疆淇℃伅
+export function getByLogin (params) {
+ return request.get('/business/webParam/getByLogin', {params})
+}
+
+// 鏇存柊浼佷笟閰嶇疆淇℃伅
+export function renew (data) {
+ return request.post('/business/webParam/renew', data)
+ }
\ No newline at end of file
diff --git a/company_admin/src/components/business/OperaAnchorPassWindow.vue b/company_admin/src/components/business/OperaAnchorPassWindow.vue
new file mode 100644
index 0000000..cdedd81
--- /dev/null
+++ b/company_admin/src/components/business/OperaAnchorPassWindow.vue
@@ -0,0 +1,95 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <el-form :model="form" ref="form" :rules="rules">
+ <el-form-item label="杈撳叆鏂板瘑鐮�" prop="password">
+ <el-input v-model="form.password" show-password placeholder="瀵嗙爜鏀寔鏁板瓧銆佸瓧绗︾粍鍚堬紝闀垮害6-18浣�" v-trim />
+ </el-form-item>
+ <el-form-item label="鍐嶆杈撳叆瀵嗙爜" prop="qpassword">
+ <el-input v-model="form.qpassword" show-password placeholder="瀵嗙爜鏀寔鏁板瓧銆佸瓧绗︾粍鍚堬紝闀垮害6-18浣�" v-trim />
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+ </template>
+
+ <script>
+ import BaseOpera from '@/components/base/BaseOpera'
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import { updPassword } from '@/api/business/anchor.js'
+
+ export default {
+ name: 'OperaBrandWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ var validatePass = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('瀵嗙爜涓嶈兘涓虹┖'));
+ } else {
+ if (!/^(?![^a-zA-Z]+$)(?!\D+$)/.test(value)) {
+ callback(new Error('瀵嗙爜鏀寔鏁板瓧銆佸瓧绗︾粍鍚堬紝闀垮害6-18浣�'));
+ }
+ callback();
+ }
+ };
+ var validatePass1 = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('瀵嗙爜涓嶈兘涓虹┖'));
+ } else {
+ if (value !== this.form.password) {
+ callback(new Error('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鑷�'));
+ }
+ callback();
+ }
+ };
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: null,
+ password: '',
+ qpassword: ''
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ password: [
+ { required: true, validator: validatePass, trigger: 'blur' }
+ ],
+ qpassword: [
+ { required: true, validator: validatePass1, trigger: 'blur' }
+ ]
+ }
+ }
+ },
+ created() {
+ this.config({
+ api: '/business/anchor',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ confirm() {
+ this.$refs.form.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ // 璋冪敤鏂板缓鎺ュ彛
+ this.isWorking = true
+ updPassword({
+ id: this.form.id,
+ password: this.form.password
+ }).then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('鏂板缓鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ })
+ }
+ }
+ }
+ </script>
+
\ No newline at end of file
diff --git a/company_admin/src/components/business/OperaAnchorWindow.vue b/company_admin/src/components/business/OperaAnchorWindow.vue
new file mode 100644
index 0000000..f85640b
--- /dev/null
+++ b/company_admin/src/components/business/OperaAnchorWindow.vue
@@ -0,0 +1,82 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <el-form :model="form" ref="form" :rules="rules">
+ <el-form-item label="鐧诲綍璐﹀彿" prop="userName">
+ <el-input v-model="form.userName" :disabled="form.id ? true : false" maxlength="20" placeholder="璇疯緭鍏ワ紝涓嶈秴杩�20涓瓧绗�" v-trim />
+ </el-form-item>
+ <el-form-item label="鐧诲綍瀵嗙爜" prop="password">
+ <el-input v-model="form.password" :disabled="form.id ? true : false" show-password placeholder="瀵嗙爜鏀寔鏁板瓧銆佸瓧绗︾粍鍚堬紝闀垮害6-18浣�" v-trim />
+ </el-form-item>
+ <el-form-item label="涓绘挱濮撳悕" prop="realName">
+ <el-input v-model="form.realName" placeholder="璇疯緭鍏ヤ富鎾鍚�" v-trim />
+ </el-form-item>
+ <el-form-item label="鎵嬫満鍙�" prop="mobile">
+ <el-input v-model="form.mobile" maxlength="11" show-word-limit placeholder="璇疯緭鍏ユ墜鏈哄彿" v-trim />
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+ name: 'OperaBrandWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ var validatePass = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('鐧诲綍瀵嗙爜涓嶈兘涓虹┖'));
+ } else {
+ if (!/^(?![^a-zA-Z]+$)(?!\D+$)/.test(value)) {
+ callback(new Error('瀵嗙爜鏀寔鏁板瓧銆佸瓧绗︾粍鍚堬紝闀垮害6-18浣�'));
+ }
+ callback();
+ }
+ };
+ var validatePhone = (rule, value, callback) => {
+ if (value === '') {
+ callback();
+ } else {
+ if (!/^1[3,4,5,6,7,8,9][0-9]{9}$/.test(value)) {
+ callback(new Error('鎵嬫満鍙风爜鏍煎紡涓嶆纭紒'));
+ }
+ callback();
+ }
+ };
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: null,
+ userName: '',
+ password: '',
+ realName: '',
+ mobile: ''
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ userName: [
+ { required: true, message: '鐧诲綍璐﹀彿涓嶈兘涓虹┖', trigger: 'blur' }
+ ],
+ password: [
+ { required: true, validator: validatePass, trigger: 'blur' }
+ ],
+ realName: [
+ { required: true, message: '涓绘挱濮撳悕涓嶈兘涓虹┖', trigger: 'blur' }
+ ],
+ mobile: [
+ { required: true, validator: validatePhone, trigger: 'blur' }
+ ]
+ }
+ }
+ },
+ created() {
+ this.config({
+ api: '/business/anchor',
+ 'field.id': 'id'
+ })
+ }
+}
+</script>
+
\ No newline at end of file
diff --git a/company_admin/src/components/business/OperaCategoryWindow.vue b/company_admin/src/components/business/OperaCategoryWindow.vue
index b08bb82..89cde75 100644
--- a/company_admin/src/components/business/OperaCategoryWindow.vue
+++ b/company_admin/src/components/business/OperaCategoryWindow.vue
@@ -5,7 +5,25 @@
:confirm-working="isWorking"
@confirm="confirm"
>
+ <el-alert title="濡傛灉浠庡钩鍙伴�夋嫨鍟嗗搧杩涜鐩存挱锛屽缓璁被鍒�夋嫨浠庡钩鍙板簱閫夋嫨锛岀郴缁熷凡鍋氭暟鎹叧鑱旓紱" type="warning" effect="dark" :closable="false"></el-alert>
+ <h3 style="margin: 20px 0 10px 0;">鍩烘湰淇℃伅</h3>
<el-form :model="form" ref="form" :rules="rules">
+ <el-form-item label="绫诲埆鏉ユ簮" prop="type">
+ <el-radio-group v-model="form.type" @change="changeRadio">
+ <el-radio :label="1">浠庡钩鍙板簱閫夋嫨</el-radio>
+ <el-radio :label="0">浼佷笟鑷缓</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="閫夋嫨绫诲埆" prop="platCateId" v-if="form.type == 1">
+ <el-select v-model="form.platCateId" placeholder="璇烽�夋嫨" @change="changeCategory">
+ <el-option
+ v-for="item in categoryList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
<el-form-item label="绫诲埆鍚嶇О" prop="name">
<el-input v-model="form.name" placeholder="璇疯緭鍏ョ被鍒悕绉帮紝涓嶈秴杩�6涓瓧" maxlength="6" v-trim/>
</el-form-item>
@@ -14,7 +32,7 @@
:action="action"
:class="{ hide: hideUpload }"
:file-list="form.fileList"
- :data="{ folder: 'projects' }"
+ :data="{ folder: 'category_img' }"
list-type="picture-card"
:limit="1"
:on-success="fileSuccess"
@@ -23,13 +41,56 @@
<i class="el-icon-plus"></i>
<div slot="tip" class="el-upload__tip">鍙兘涓婁紶鍥剧墖鏍煎紡锛宲ng鏍煎紡锛屽缓璁昂瀵�120*120px</div>
</el-upload>
- <!-- <el-input v-model="form.imgurl" placeholder="璇疯緭鍏ュ浘鏍�" v-trim/> -->
</el-form-item>
<el-form-item label="鎺掑簭鐮�(鍗囧簭)" prop="sortnum">
<el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/>
</el-form-item>
- <el-form-item label="绛涢�夊睘鎬�1鍚嶇О" prop="attrFirst">
+ <div style="margin: 20px 0 10px 0; height: 30px; display: flex; justify-content: space-between;">
+ <h3 style="display: flex; align-items: flex-end;">鍙傛暟灞炴�ч厤缃�<h6 style="margin-left: 10px;">閰嶇疆褰撳墠绫诲埆鐨勪骇鍝佸弬鏁板悕</h6></h3>
+ <el-button style="display: inline-block;" type="primary" v-if="form.type == 0" @click="addItem">+ 鏂板</el-button>
+ </div>
+ <el-table
+ :data="form.tableData"
+ border
+ style="width: 100%">
+ <el-table-column label="鍙傛暟鍚�">
+ <template slot-scope="scope">
+ <el-input v-model="scope.row.name" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+ </template>
+ </el-table-column>
+ <el-table-column label="璁剧疆涓洪�夐」">
+ <template slot-scope="scope">
+ <el-switch
+ v-model="scope.row.isselect"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="1"
+ :inactive-value="0">
+ </el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column label="鏄惁鏄剧ず">
+ <template slot-scope="scope">
+ <el-switch
+ v-model="scope.row.isshow"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="1"
+ :inactive-value="0">
+ </el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" v-if="form.type == 0">
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="danger"
+ @click="handleDelete(scope.$index)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <!-- <el-form-item label="绛涢�夊睘鎬�1鍚嶇О" prop="attrFirst">
<el-input v-model="form.attrFirst" maxlength="6" placeholder="璇疯緭鍏ョ瓫閫夊睘鎬у悕绉帮紝涓嶈秴杩�6涓瓧" v-trim/>
</el-form-item>
<el-form-item label="绛涢�夊睘鎬�1鐨勫��" prop="attrFirst">
@@ -53,8 +114,9 @@
<div style="display: flex; align-items: center; flex-wrap: wrap;">
<el-tag style="margin-right: 10px; margin-top: 10px;" @close="close(index, 3)" closable v-for="(item, index) in form.paramList" :key="index">{{ item.name }}</el-tag>
</div>
- </el-form-item>
+ </el-form-item> -->
+ <h3 style="margin: 20px 0 10px 0; display: flex; align-items: flex-end;">棰勭畻鍖洪棿閰嶇疆<h6 style="margin-left: 10px;">閰嶇疆褰撳墠绫诲埆鐨勯绠楀尯闂寸瓫閫夊�硷紝涓婇檺鍜屼笅闄愪笉鑳藉悓鏃朵负绌�</h6></h3>
<el-form-item label="棰勭畻鍖洪棿" prop="attrSecond">
<div style="display: flex; align-items: center; margin-bottom: 10px;" v-for="(item, index) in form.budgetList" :key="index">
<el-input v-model="item.minamount" type="number" @input="changeInput(1, index)" placeholder="涓嬮檺" v-trim/>
@@ -71,31 +133,35 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
- import { create, updateById } from '@/api/business/category.js'
+ import { create, updateById, baseCategoryList, companyCreate, companyUpdateById } from '@/api/business/category.js'
export default {
name: 'OperaCategoryWindow',
extends: BaseOpera,
components: { GlobalWindow },
data () {
return {
- action: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal',
+ action: process.env.VUE_APP_API_PREFIX + '/public/upload',
hideUpload: false,
+ categoryList: [],
// 琛ㄥ崟鏁版嵁
form: {
id: null,
+ type: 1,
+ platCateId: '',
name: '',
- attrFirst: '',
- attrFirst1: '',
- attrFirstList: [],
- attrSecond: '',
- attrSecond1: '',
- attrSecondList: [],
+ // attrFirst: '',
+ // attrFirst1: '',
+ // attrFirstList: [],
+ // attrSecond: '',
+ // attrSecond1: '',
+ // attrSecondList: [],
sortnum: '',
- parameter: '',
+ // parameter: '',
paramList: [],
imgurl: '',
+ tableData: [],
budgetList: [
{
maxamount: '',
@@ -103,7 +169,7 @@
}
],
fileList: [],
- attributeValueOne: []
+ // attributeValueOne: []
},
// 楠岃瘉瑙勫垯
rules: {
@@ -121,6 +187,91 @@
})
},
methods: {
+ addItem() {
+ this.form.tableData.push({ name: '', isselect: 0, isshow: 1 })
+ },
+ handleDelete(index) {
+ this.form.tableData.splice(index, 1)
+ },
+ changeRadio(e) {
+ this.form.name = ''
+ this.form.platCateId = ''
+ this.form.sortnum = ''
+ this.form.tableData = []
+ this.form.imgurl = ''
+ this.form.fileList = []
+ this.form.budgetList = [{
+ maxamount: '',
+ minamount: ''
+ }]
+ },
+ confirm() {
+ this.$refs.form.validate((valid) => {
+ if (!valid) return
+ // 璋冪敤鏂板缓鎺ュ彛
+ this.isWorking = true
+ if (!this.form.id) {
+ companyCreate({
+ paramList: this.form.tableData,
+ type: this.form.type,
+ sortnum: this.form.sortnum,
+ platCateId: this.form.platCateId,
+ name: this.form.name,
+ imgurl: this.form.imgurl,
+ budgetList: this.form.budgetList
+ })
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('鏂板缓鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ } else {
+ companyUpdateById({
+ id: this.form.id,
+ paramList: this.form.tableData,
+ type: this.form.type,
+ sortnum: this.form.sortnum,
+ platCateId: this.form.platCateId,
+ name: this.form.name,
+ imgurl: this.form.imgurl,
+ budgetList: this.form.budgetList
+ })
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('缂栬緫鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ }
+ })
+ },
+ // 鍒囨崲鍒嗙被
+ changeCategory(id) {
+ this.categoryList.forEach(item => {
+ if (item.id === id) {
+ this.form.name = item.name
+ this.form.sortnum = item.sortnum
+ let arr = []
+ item.baseCateParamList.forEach((row, index) => {
+ arr.push({ name: row.name, isselect: index <= 1 ? 1 : 0, isshow: 1 })
+ })
+ this.form.tableData = arr
+ this.form.imgurl = item.imgurl
+ this.form.fileList = [{ url: item.imgfullurl }]
+ }
+ })
+ },
changeInput(type, index) {
if (type === 1) {
if (!this.form.budgetList[index].minamount) return
@@ -147,42 +298,42 @@
message: '鍙兘涓婁紶涓�涓浘鏍�'
})
},
- confirm() {
- this.$refs.form.validate((valid) => {
- if (valid) {
- this.isWorking = true
- if (!this.form.id) {
- create(this.form)
- .then(() => {
- this.visible = false
- this.$tip.apiSuccess('鏂板缓鎴愬姛')
- this.$emit('success')
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.isWorking = false
- })
- } else {
- updateById(this.form)
- .then(() => {
- this.visible = false
- this.$tip.apiSuccess('缂栬緫鎴愬姛')
- this.$emit('success')
- })
- .catch(e => {
- this.$tip.apiFailed(e)
- })
- .finally(() => {
- this.isWorking = false
- })
- }
- } else {
- return false;
- }
- });
- },
+ // confirm() {
+ // this.$refs.form.validate((valid) => {
+ // if (valid) {
+ // this.isWorking = true
+ // if (!this.form.id) {
+ // create(this.form)
+ // .then(() => {
+ // this.visible = false
+ // this.$tip.apiSuccess('鏂板缓鎴愬姛')
+ // this.$emit('success')
+ // })
+ // .catch(e => {
+ // this.$tip.apiFailed(e)
+ // })
+ // .finally(() => {
+ // this.isWorking = false
+ // })
+ // } else {
+ // updateById(this.form)
+ // .then(() => {
+ // this.visible = false
+ // this.$tip.apiSuccess('缂栬緫鎴愬姛')
+ // this.$emit('success')
+ // })
+ // .catch(e => {
+ // this.$tip.apiFailed(e)
+ // })
+ // .finally(() => {
+ // this.isWorking = false
+ // })
+ // }
+ // } else {
+ // return false;
+ // }
+ // });
+ // },
close(index, type) {
if (type === 1) {
this.form.attrFirstList.splice(index, 1)
@@ -230,15 +381,18 @@
this.form = {
id: null,
name: '',
- attrFirst: '',
- attrFirst1: '',
- attrFirstList: [],
- attrSecond: '',
- attrSecond1: '',
- attrSecondList: [],
+ type: 1,
+ platCateId: '',
+ tableData: [],
+ // attrFirst: '',
+ // attrFirst1: '',
+ // attrFirstList: [],
+ // attrSecond: '',
+ // attrSecond1: '',
+ // attrSecondList: [],
sortnum: '',
- parameter: '',
- paramList: [],
+ // parameter: '',
+ // paramList: [],
imgurl: '',
budgetList: [
{
@@ -247,8 +401,14 @@
}
],
fileList: [],
- attributeValueOne: []
+ // attributeValueOne: []
}
+ } else {
+ // 鑾峰彇鍒嗙被鍒楄〃
+ baseCategoryList({})
+ .then(res => {
+ this.categoryList = res
+ })
}
}
}
diff --git a/company_admin/src/components/business/OperaGoodsWindow.vue b/company_admin/src/components/business/OperaGoodsWindow.vue
index e22ce7f..f54453e 100644
--- a/company_admin/src/components/business/OperaGoodsWindow.vue
+++ b/company_admin/src/components/business/OperaGoodsWindow.vue
@@ -31,7 +31,7 @@
</el-option>
</el-select>
</el-form-item>
- <el-form-item :label="name1" prop="attrFirstIds" v-if="name1">
+ <!-- <el-form-item :label="name1" prop="attrFirstIds" v-if="name1">
<el-select v-model="form.attrFirstIds" multiple placeholder="璇烽�夋嫨锛屾敮鎸佸閫�">
<el-option
v-for="item in form.attrFirstList"
@@ -50,7 +50,7 @@
:value="item.id">
</el-option>
</el-select>
- </el-form-item>
+ </el-form-item> -->
<el-form-item label="鎸囧浠凤紙鍏冿級" prop="zdPrice">
<el-input v-model="form.zdPrice" @input="priceCHANEG(form.zdPrice, 1)" type="number" placeholder="寤鸿褰曞叆鏁存暟锛屽崟浣嶅厓" v-trim/>
</el-form-item>
@@ -61,7 +61,7 @@
<el-upload
:action="action"
:file-list="form.ztList"
- :data="{ folder: 'projects' }"
+ :data="{ folder: 'goods_img' }"
list-type="picture-card"
:limit="1"
:on-success="fileSuccess"
@@ -76,7 +76,7 @@
:action="action"
:file-list="form.files"
:multiple="true"
- :data="{ folder: 'projects' }"
+ :data="{ folder: 'goods_img' }"
list-type="picture-card"
:on-success="fileSuccess1"
:on-remove="handleRemove1">
@@ -84,10 +84,12 @@
<div slot="tip" class="el-upload__tip">鍙兘涓婁紶鍥剧墖鏍煎紡锛宲ng鏍煎紡锛屽缓璁昂瀵�600*600px</div>
</el-upload>
</el-form-item>
- <div style="font-size: 18px;font-weight: bold;">鍙傛暟灞炴�у�奸厤缃� <span style="font-size: 13px; font-weight: 500;">鎸夐渶閰嶇疆褰撳墠鍟嗗搧鐨勪骇鍝佸弬鏁板�硷紝鍗曚釜鍙傛暟鍊间笉瓒呰繃30涓瓧</span></div>
- <el-form-item :label="item.name" v-for="(item, index) in form.goodsParamList" :key="index">
- <el-input v-model="item.val" maxlength="30" type="text" placeholder="璇疯緭鍏�" v-trim/>
- </el-form-item>
+ <template v-if="form.goodsParamList && form.goodsParamList.length > 0">
+ <div style="font-size: 18px;font-weight: bold;">鍙傛暟灞炴�у�奸厤缃� <span style="font-size: 13px; font-weight: 500;">鎸夐渶閰嶇疆褰撳墠鍟嗗搧鐨勪骇鍝佸弬鏁板�硷紝鍗曚釜鍙傛暟鍊间笉瓒呰繃30涓瓧</span></div>
+ <el-form-item :label="item.name" v-for="(item, index) in form.goodsParamList" :key="index">
+ <el-input v-model="item.val" maxlength="30" type="text" placeholder="璇疯緭鍏�" v-trim/>
+ </el-form-item>
+ </template>
</el-form>
</GlobalWindow>
</template>
@@ -96,14 +98,14 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { brand } from '@/api/system/common.js'
- import { findListForGoodsId, create, updateById } from '@/api/business/goods.js'
+ import { findListForGoodsId, create, updateById, companyCreate, companyUpdateById } from '@/api/business/goods.js'
export default {
name: 'OperaGoodsWindow',
extends: BaseOpera,
components: { GlobalWindow },
data () {
return {
- action: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal',
+ action: process.env.VUE_APP_API_PREFIX + '/public/upload',
name1: '',
name2: '',
// 琛ㄥ崟鏁版嵁
@@ -259,7 +261,7 @@
this.form.attrSecodIds = ''
}
if (!this.form.id) {
- create(this.form)
+ companyCreate({...this.form, type: 0})
.then(() => {
this.visible = false
this.$tip.apiSuccess('鏂板缓鎴愬姛')
@@ -272,7 +274,7 @@
this.isWorking = false
})
} else {
- updateById(this.form)
+ companyUpdateById({...this.form, type: 0})
.then(() => {
this.visible = false
this.$tip.apiSuccess('缂栬緫鎴愬姛')
diff --git a/company_admin/src/components/business/OperaStaffWindow.vue b/company_admin/src/components/business/OperaStaffWindow.vue
new file mode 100644
index 0000000..d3fec5e
--- /dev/null
+++ b/company_admin/src/components/business/OperaStaffWindow.vue
@@ -0,0 +1,162 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <el-form :model="form" ref="form" :rules="rules">
+ <el-form-item label="鐧诲綍璐﹀彿" prop="userName">
+ <el-input v-model="form.userName" :disabled="form.id ? true : false" maxlength="20" placeholder="璇疯緭鍏ワ紝涓嶈秴杩�20涓瓧绗�" v-trim />
+ </el-form-item>
+ <el-form-item label="鐧诲綍瀵嗙爜" prop="password">
+ <el-input v-model="form.password" :disabled="form.id ? true : false" show-password placeholder="瀵嗙爜鏀寔鏁板瓧銆佸瓧绗︾粍鍚堬紝闀垮害6-18浣�" v-trim />
+ </el-form-item>
+ <el-form-item label="鍛樺伐濮撳悕" prop="realName">
+ <el-input v-model="form.realName" placeholder="璇疯緭鍏ュ憳宸ュ鍚�" v-trim />
+ </el-form-item>
+ <el-form-item label="鎵嬫満鍙�" prop="mobile">
+ <el-input v-model="form.mobile" maxlength="11" show-word-limit placeholder="璇疯緭鍏ユ墜鏈哄彿" v-trim />
+ </el-form-item>
+ <el-form-item label="瑙掕壊" prop="roleId">
+ <el-select v-model="form.roleId" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in roleList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ </GlobalWindow>
+ </template>
+
+ <script>
+ import BaseOpera from '@/components/base/BaseOpera'
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import { fetchAll } from '@/api/system/role'
+ import { companyCreateUser, companyUpdUser } from '@/api/business/anchor'
+
+ export default {
+ name: 'OperaBrandWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ var validatePass = (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('鐧诲綍瀵嗙爜涓嶈兘涓虹┖'));
+ } else {
+ if (!/^(?![^a-zA-Z]+$)(?!\D+$)/.test(value)) {
+ callback(new Error('瀵嗙爜鏀寔鏁板瓧銆佸瓧绗︾粍鍚堬紝闀垮害6-18浣�'));
+ }
+ callback();
+ }
+ };
+ var validatePhone = (rule, value, callback) => {
+ if (value === '') {
+ callback();
+ } else {
+ if (!/^1[3,4,5,6,7,8,9][0-9]{9}$/.test(value)) {
+ callback(new Error('鎵嬫満鍙风爜鏍煎紡涓嶆纭紒'));
+ }
+ callback();
+ }
+ };
+ return {
+ roleList: [],
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: null,
+ userName: '',
+ password: '',
+ realName: '',
+ mobile: '',
+ roleId: ''
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ userName: [
+ { required: true, message: '鐧诲綍璐﹀彿涓嶈兘涓虹┖', trigger: 'blur' }
+ ],
+ password: [
+ { required: true, validator: validatePass, trigger: 'blur' }
+ ],
+ realName: [
+ { required: true, message: '涓绘挱濮撳悕涓嶈兘涓虹┖', trigger: 'blur' }
+ ],
+ mobile: [
+ { validator: validatePhone, trigger: 'blur' }
+ ]
+ }
+ }
+ },
+ created() {
+ this.config({
+ api: '/business/anchor',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ confirm() {
+ this.$refs.form.validate((valid) => {
+ if (!valid) return
+ // 璋冪敤鏂板缓鎺ュ彛
+ this.isWorking = true
+ // 鏂板缓
+ if (!this.form.id) {
+ companyCreateUser(this.form)
+ .then(res => {
+ this.visible = false
+ this.$tip.apiSuccess('鏂板缓鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ } else {
+ companyUpdUser(this.form)
+ .then(res => {
+ this.visible = false
+ this.$tip.apiSuccess('缂栬緫鎴愬姛')
+ this.$emit('success')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ }
+ })
+ },
+ /**
+ * 鎵撳紑绐楀彛
+ * @title 绐楀彛鏍囬
+ * @target 缂栬緫鐨勫璞�
+ */
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ // 鑾峰彇鎵�鏈夎鑹�
+ fetchAll()
+ .then(res => {
+ this.roleList = res
+ })
+ // 鏂板缓
+ 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]
+ }
+ })
+ }
+ }
+ }
+ </script>
+
\ No newline at end of file
diff --git a/company_admin/src/components/business/selectProduct.vue b/company_admin/src/components/business/selectProduct.vue
new file mode 100644
index 0000000..8137bca
--- /dev/null
+++ b/company_admin/src/components/business/selectProduct.vue
@@ -0,0 +1,119 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <el-form :model="form" ref="form" :rules="rules">
+ <el-form-item label="鍟嗗搧绫诲埆" prop="categoryId">
+ <el-select v-model="form.categoryId" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in categoryList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍟嗗搧鑼冨洿" prop="type">
+ <el-radio-group v-model="form.type">
+ <el-radio :label="0">鍏ㄩ儴</el-radio>
+ <el-radio :label="1">閮ㄥ垎</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="鍔犱环绯绘暟" prop="rate">
+ <el-input v-model="form.rate" placeholder="骞冲彴閲囪喘浠�*鍔犱环绯绘暟锛屼綔涓哄弬鑰冨嚭鎵嬩环锛屽缓璁緭鍏ュぇ浜�1鐨勬暟瀛�" v-trim />
+ </el-form-item>
+ </el-form>
+ <!-- 閫夋嫨骞冲彴鍟嗗搧 -->
+ <selectProductItem ref="selectProductItem" @result="result" />
+ </GlobalWindow>
+ </template>
+
+ <script>
+ import BaseOpera from '@/components/base/BaseOpera'
+ import GlobalWindow from '@/components/common/GlobalWindow'
+ import selectProductItem from '@/components/business/selectProductItem'
+ import { baseCategoryList } from '@/api/business/category.js'
+ import { createPlat } from '@/api/business/goods'
+
+ export default {
+ name: 'OperaBrandWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow, selectProductItem },
+ data() {
+ return {
+ categoryList: [],
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ categoryId: '',
+ type: 0,
+ rate: ''
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ categoryId: [
+ { required: true, message: '鍟嗗搧绫诲埆涓嶈兘涓虹┖', trigger: 'blur' }
+ ],
+ type: [
+ { required: true, message: '鍟嗗搧鑼冨洿涓嶈兘涓虹┖', trigger: 'blur' }
+ ],
+ rate: [
+ { required: true, message: '鍔犱环绯绘暟涓嶈兘涓虹┖', trigger: 'blur' }
+ ]
+ }
+ }
+ },
+ created() {
+ this.config({
+ api: '/business/anchor',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ result() {
+ // this.$emit('success')
+ this.$emit('result')
+ this.visible = false
+ },
+ confirm() {
+ this.$refs.form.validate((valid) => {
+ if (!valid) return
+ // 鏂板缓
+ if (this.form.type == 0) {
+ this.isWorking = true
+ createPlat({
+ categoryId: this.form.categoryId,
+ rate: this.form.rate,
+ type: this.form.type
+ }).then(res => {
+ this.visible = false
+ this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+ // this.$emit('success')
+ this.$emit('result')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ } else {
+ this.$refs.selectProductItem.open('閫夋嫨骞冲彴鍟嗗搧', this.form)
+ }
+ })
+ },
+ /**
+ * 鎵撳紑绐楀彛
+ * @title 绐楀彛鏍囬
+ * @target 缂栬緫鐨勫璞�
+ */
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ // 鑾峰彇鍒嗙被鍒楄〃
+ baseCategoryList({ type: 1 })
+ .then(res => {
+ this.categoryList = res
+ })
+ }
+ }
+ }
+ </script>
+
\ No newline at end of file
diff --git a/company_admin/src/components/business/selectProductItem.vue b/company_admin/src/components/business/selectProductItem.vue
new file mode 100644
index 0000000..50edba6
--- /dev/null
+++ b/company_admin/src/components/business/selectProductItem.vue
@@ -0,0 +1,183 @@
+<template>
+ <GlobalWindow :title="title" width="70%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+ <div class="head">
+ <el-form :inline="true" :model="form" class="demo-form-inline">
+ <el-form-item label="鍟嗗搧鍚嶇О" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�"></el-input>
+ </el-form-item>
+ <el-form-item label="绫诲埆" prop="categoryId">
+ <el-select v-model="form.categoryId" disabled placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in categoryList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="getList">鏌ヨ</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <div class="tab">
+ <el-table
+ :data="tableData"
+ stripe
+ border
+ @selection-change="handleSelectionChange">
+ <el-table-column type="selection" width="55"></el-table-column>
+ <el-table-column prop="id" label="鍟嗗搧ID" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="鍟嗗搧鍚嶇О/鍨嬪彿" show-overflow-tooltip min-width="200px">
+ <template slot-scope="{row}">
+ <div style="display: flex; align-items: center;">
+ <div style="width: 70px; height: 70px; flex-shrink: 0;">
+ <el-image
+ v-if="row.imgurl"
+ style="width: 70px; height: 70px"
+ :src="row.fullImgUrl"
+ fit="cover"></el-image>
+ </div>
+ {{ row.name }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="brandName" label="鍝佺墝" show-overflow-tooltip min-width="100px"></el-table-column>
+ <el-table-column prop="categoryName" label="绫诲埆" show-overflow-tooltip min-width="100px"></el-table-column>
+ <el-table-column prop="zdPrice" label="鎸囧浠凤紙鍏冿級" show-overflow-tooltip min-width="100px"></el-table-column>
+ <el-table-column prop="price" label="閲囪喘浠凤紙鍏冿級" show-overflow-tooltip min-width="100px"></el-table-column>
+ <el-table-column label="鍏ユ墜浠凤紙鍏冿級" show-overflow-tooltip min-width="100px">
+ <template slot-scope="{row}">
+ <el-input v-model="row.purchasePrice" placeholder="璇疯緭鍏�"></el-input>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="[10, 20, 30]"
+ :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { baseCategoryList } from '@/api/business/category.js'
+import { pageT } from '@/api/business/goods'
+import { createPlat } from '@/api/business/goods'
+
+export default {
+ name: 'OperaBrandWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ categoryId: '',
+ type: 0,
+ rate: '',
+ name: '',
+ goodsParamList: []
+ },
+ pageSize: 10,
+ page: 1,
+ total: 0,
+ tableData: [],
+ categoryList: []
+ }
+ },
+ created() {
+ this.config({
+ api: '/business/anchor',
+ 'field.id': 'id'
+ })
+ },
+ methods: {
+ getList() {
+ pageT({
+ capacity: this.pageSize,
+ model: {
+ categoryId: this.form.categoryId,
+ name: this.form.name
+ },
+ page: this.page
+ }).then(res => {
+ res.records.forEach(item => {
+ item.purchasePrice = item.price * this.form.rate
+ })
+ this.tableData = res.records
+ this.total = res.total
+ })
+ },
+ handleCurrentChange(e) {
+ this.page = e
+ this.getList()
+ },
+ handleSizeChange(e) {
+ this.pageSize = e
+ this.getList()
+ },
+ handleSelectionChange(e) {
+ let arr = []
+ e.forEach(item => {
+ arr.push({ goodsId: item.id, price: item.purchasePrice })
+ })
+ this.form.goodsParamList = arr
+ console.log(arr)
+ },
+ confirm() {
+ // 璋冪敤鏂板缓鎺ュ彛
+ this.isWorking = true
+ createPlat({
+ categoryId: this.form.categoryId,
+ goodsParamList: this.form.goodsParamList,
+ rate: this.form.rate,
+ type: this.form.type
+ }).then(res => {
+ this.visible = false
+ this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+ // this.$emit('success')
+ this.$emit('result')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ },
+ /**
+ * 鎵撳紑绐楀彛
+ * @title 绐楀彛鏍囬
+ * @target 缂栬緫鐨勫璞�
+ */
+ open(title, target) {
+ this.title = title
+ this.visible = true
+ this.form.categoryId = target.categoryId
+ this.form.rate = Number(target.rate)
+ this.form.type = target.type
+ // 鑾峰彇鍒嗙被鍒楄〃
+ baseCategoryList({})
+ .then(res => {
+ this.categoryList = res
+ })
+ this.getList()
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+ .head {
+ width: 100%;
+
+ }
+</style>
\ No newline at end of file
diff --git a/company_admin/src/views/business/anchor.vue b/company_admin/src/views/business/anchor.vue
new file mode 100644
index 0000000..67d44ff
--- /dev/null
+++ b/company_admin/src/views/business/anchor.vue
@@ -0,0 +1,155 @@
+<template>
+ <TableLayout :permissions="['system:user:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
+ <el-form-item label="璐﹀彿淇℃伅" prop="keyword">
+ <el-input v-model="searchForm.keyword" v-trim placeholder="璇疯緭鍏ョ櫥褰曡处鍙�/濮撳悕" @keypress.enter.native="search"/>
+ </el-form-item>
+ <el-form-item label="鐘舵��" prop="status">
+ <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in status"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <section>
+ <el-button type="primary" icon="el-icon-search" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']">
+ <li v-permissions="['system:user:create']"><el-button icon="el-icon-plus" type="primary" @click="$refs.OperaAnchorWindow.open('鏂板缓鐢ㄦ埛')">鏂板缓</el-button></li>
+ <!-- <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li> -->
+ </ul>
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ :default-sort = "{prop: 'createTime', order: 'descending'}"
+ stripe
+ @selection-change="handleSelectionChange"
+ @sort-change="handleSortChange"
+ >
+ <el-table-column type="selection" width="55"></el-table-column>
+ <el-table-column prop="username" label="鐧诲綍璐﹀彿"></el-table-column>
+ <el-table-column prop="realname" label="濮撳悕"></el-table-column>
+ <el-table-column prop="mobile" label="鎵嬫満鍙�"></el-table-column>
+ <el-table-column label="鐘舵��">
+ <template slot-scope="{row}">
+ <el-switch
+ v-model="row.status"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ @change="changeStatus($event, row.id)"
+ :active-value="0"
+ :inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createTime" label="鍒涘缓鏃堕棿"></el-table-column>
+ <el-table-column
+ v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])"
+ label="鎿嶄綔"
+ width="230"
+ fixed="right"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" icon="el-icon-edit" @click="edit(row)" v-permissions="['system:user:update']">缂栬緫</el-button>
+ <el-button type="text" @click="editPass(row)" v-permissions="['system:user:resetPwd']">淇敼瀵嗙爜</el-button>
+ <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ ></pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaAnchorWindow ref="OperaAnchorWindow" @success="handlePageChange"/>
+ <!-- 淇敼瀵嗙爜 -->
+ <OperaAnchorPassWindow ref="OperaAnchorPassWindow" @success="handlePageChange"/>
+ </TableLayout>
+ </template>
+
+ <script>
+ import Pagination from '@/components/common/Pagination'
+ import TableLayout from '@/layouts/TableLayout'
+ import BaseTable from '@/components/base/BaseTable'
+ import OperaAnchorWindow from '@/components/business/OperaAnchorWindow'
+ import OperaAnchorPassWindow from '@/components/business/OperaAnchorPassWindow'
+ import { updUserStatus } from '@/api/business/anchor.js'
+
+ export default {
+ name: 'SystemUser',
+ extends: BaseTable,
+ components: { OperaAnchorWindow, TableLayout, Pagination, OperaAnchorPassWindow },
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ status: '',
+ keyword: '',
+ type: 2
+ },
+ status: [
+ { name: '鍚敤', id: 0 },
+ { name: '绂佺敤', id: 1 }
+ ]
+ }
+ },
+ created () {
+ this.config({
+ module: '鐢ㄦ埛',
+ api: '/business/anchor',
+ 'field.main': 'realname',
+ sorts: [{
+ property: 'CREATE_TIME',
+ direction: 'DESC'
+ }]
+ })
+ this.search()
+ },
+ methods: {
+ editPass(row) {
+ let obj = {
+ id: row.id
+ }
+ this.$refs.OperaAnchorPassWindow.open('淇敼瀵嗙爜', obj)
+ },
+ // 淇敼鐘舵��
+ changeStatus(status, id) {
+ updUserStatus({ id, status })
+ .then(res => {
+ console.log(res)
+ })
+ },
+ edit(row) {
+ let obj = {
+ id: row.id,
+ userName: row.username,
+ password: row.password,
+ realName: row.realname,
+ mobile: row.mobile
+ }
+ this.$refs.OperaAnchorWindow.open('缂栬緫鐢ㄦ埛', obj)
+ }
+ }
+ }
+ </script>
+
+ <style scoped lang="scss">
+ @import "@/assets/style/variables.scss";
+ // 鍒楄〃澶村儚澶勭悊
+ .table-column-avatar {
+ img {
+ width: 48px;
+ }
+ }
+ </style>
+
\ No newline at end of file
diff --git a/company_admin/src/views/business/category.vue b/company_admin/src/views/business/category.vue
index 90fc46f..9833d20 100644
--- a/company_admin/src/views/business/category.vue
+++ b/company_admin/src/views/business/category.vue
@@ -35,8 +35,6 @@
</template>
</el-table-column>
<el-table-column prop="name" label="绫诲埆鍚嶇О" min-width="100px"></el-table-column>
- <el-table-column prop="attrFirst" label="灞炴��1" min-width="100px"></el-table-column>
- <el-table-column prop="attrSecond" label="灞炴��2" min-width="100px"></el-table-column>
<el-table-column prop="sortnum" label="鎺掑簭鐮�(鍗囧簭)" min-width="100px"></el-table-column>
<el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
<el-table-column prop="status" label="鐘舵��" min-width="100px">
@@ -130,8 +128,18 @@
paramList: res.paramList,
imgurl: res.imgurl,
budgetList: res.budgetList,
- fileList: res.imgurl ? [ {url: res.prefixUrl + res.imgurl} ] : []
+ type: res.type,
+ platCateId: res.platCateId,
+ tableData: res.paramList.map(item => {
+ return {
+ name: item.name,
+ isselect: item.isselect,
+ isshow: item.isshow
+ }
+ }),
+ fileList: res.imgurl ? [{ url: res.prefixUrl + res.imgurl }] : []
}
+ console.log(obj)
this.$refs.operaCategoryWindow.open('缂栬緫绫诲埆', obj)
})
}
diff --git a/company_admin/src/views/business/goods.vue b/company_admin/src/views/business/goods.vue
index 16d2c4f..5998a93 100644
--- a/company_admin/src/views/business/goods.vue
+++ b/company_admin/src/views/business/goods.vue
@@ -10,41 +10,40 @@
<el-input v-model="searchForm.id" placeholder="璇疯緭鍏ュ晢鍝両D" @keypress.enter.native="search"></el-input>
</el-form-item>
<el-form-item label="绫诲埆" prop="categoryId">
- <el-select v-model="searchForm.categoryId" clearable placeholder="璇烽�夋嫨">
- <el-option
- v-for="item in categoryList"
- :key="item.id"
- :label="item.name"
- :value="item.id">
- </el-option>
- </el-select>
+ <el-select v-model="searchForm.categoryId" clearable placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in categoryList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
<!-- <el-input v-model="searchForm.categoryId" placeholder="璇疯緭鍏ユ墍灞炲搧绫荤紪鐮�" @keypress.enter.native="search"></el-input> -->
</el-form-item>
<el-form-item label="鍝佺墝" prop="brandId">
- <el-select v-model="searchForm.brandId" clearable placeholder="璇烽�夋嫨">
- <el-option
- v-for="item in brandList"
- :key="item.id"
- :label="item.name"
- :value="item.id">
- </el-option>
- </el-select>
+ <el-select v-model="searchForm.brandId" clearable placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in brandList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
<!-- <el-input v-model="searchForm.brandId" placeholder="璇疯緭鍏ユ墍灞炲搧鐗岀紪鐮�" @keypress.enter.native="search"></el-input> -->
</el-form-item>
<el-form-item label="鐘舵��" prop="status">
- <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨">
- <el-option
- v-for="item in statusList"
- :key="item.id"
- :label="item.name"
- :value="item.id">
- </el-option>
- </el-select>
+ <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in statusList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
<!-- <el-input v-model="searchForm.status" placeholder="璇疯緭鍏ョ姸鎬� 0鍚敤 1绂佺敤" @keypress.enter.native="search"></el-input> -->
</el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
-
<el-button @click="reset">閲嶇疆</el-button>
</section>
</el-form>
@@ -52,8 +51,12 @@
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:goods:create', 'business:goods:delete']">
<li><el-button type="primary" @click="$refs.operaGoodsWindow.open('鏂板缓鍟嗗搧')" icon="el-icon-plus" v-permissions="['business:goods:create']">鏂板缓</el-button></li>
+ <el-button type="primary" :loading="isWorking.export" @click="$refs.selectProduct.open('閫夋嫨骞冲彴鍟嗗搧')">閫夋嫨骞冲彴鍟嗗搧</el-button>
<el-button type="primary" :loading="isWorking.export" v-permissions="['business:goods:exportExcel']" @click="importFile">瀵煎叆</el-button>
<el-button type="primary" :loading="isWorking.export" @click="downloadFile">涓嬭浇妯℃澘</el-button>
+
+ <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(0)">鎵归噺涓婃灦</el-button>
+ <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(1)">鎵归噺涓嬫灦</el-button>
<!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:goods:delete']">鍒犻櫎</el-button></li> -->
</ul>
<el-table
@@ -63,7 +66,9 @@
border
:header-cell-style="rowStyle"
:cell-style="rowStyle"
+ @selection-change="handleSelectionChange"
>
+ <el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="id" label="鍟嗗搧ID" min-width="100px"></el-table-column>
<el-table-column prop="name" label="鍟嗗搧鍚嶇О/鍨嬪彿" min-width="200px">
<template slot-scope="{row}">
@@ -76,27 +81,26 @@
:preview-src-list="[row.prefixUrl + row.imgurl]"
fit="cover"></el-image>
</div>
- {{ row.name }}
+ {{ row.name }}
</div>
</template>
</el-table-column>
<el-table-column prop="brandName" label="鍝佺墝" min-width="100px"></el-table-column>
<el-table-column prop="categoryName" label="绫诲埆" min-width="100px"></el-table-column>
- <el-table-column prop="attrFirstNames" label="灞炴��1" min-width="100px"></el-table-column>
- <el-table-column prop="attrSecodNames" label="灞炴��2" min-width="100px"></el-table-column>
- <el-table-column prop="zdPrice" label="鎸囧浠凤紙鍏冿級" min-width="100px"></el-table-column>
+ <el-table-column prop="baseZdPrice" label="鎸囧浠凤紙鍏冿級" min-width="100px"></el-table-column>
+ <el-table-column prop="basePrice" label="閲囪喘浠�(鍏�)" min-width="100px"></el-table-column>
<el-table-column prop="price" label="鍏ユ墜浠凤紙鍏冿級" min-width="100px"></el-table-column>
<el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
<el-table-column prop="status" label="鐘舵��" min-width="100px">
<template slot-scope="{row}">
- <el-switch
- v-model="row.status"
- @change="changeStatus(row)"
- active-color="#13ce66"
- inactive-color="#ff4949"
- :active-value="0"
- :inactive-value="1">
- </el-switch>
+ <el-switch
+ v-model="row.status"
+ @change="changeStatus(row)"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ :active-value="0"
+ :inactive-value="1">
+ </el-switch>
</template>
</el-table-column>
<el-table-column
@@ -121,6 +125,8 @@
</template>
<!-- 鏂板缓/淇敼 -->
<OperaGoodsWindow ref="operaGoodsWindow" @success="handlePageChange"/>
+ <!-- 閫夋嫨骞冲彴鍟嗗搧 -->
+ <selectProduct ref="selectProduct" @success="handlePageChange" @result="search"/>
</TableLayout>
</template>
@@ -129,12 +135,13 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaGoodsWindow from '@/components/business/OperaGoodsWindow'
+ import selectProduct from '@/components/business/selectProduct'
import { brand, category, importExcel } from '@/api/system/common.js'
- import { updateDisableById, queryById, exportDoc } from '@/api/business/goods.js'
+ import { updateDisableById, queryById, exportDoc, batchUpdateDisableById } from '@/api/business/goods.js'
export default {
name: 'Goods',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaGoodsWindow },
+ components: { TableLayout, Pagination, OperaGoodsWindow, selectProduct },
data () {
return {
// 鎼滅储
@@ -145,11 +152,12 @@
categoryId: '',
brandId: ''
},
+ ids: '',
categoryList: [],
brandList: [],
statusList: [
- { name: '鍚敤', id: 0 },
- { name: '绂佺敤', id: 1 }
+ { name: '鍚敤', id: 0 },
+ { name: '绂佺敤', id: 1 }
]
}
},
@@ -165,8 +173,26 @@
this.getcategory()
},
methods: {
+ handleSelectionChange(e) {
+ let arr = e.map(item => item.id)
+ this.ids = arr.join(',')
+ console.log(this.ids)
+ },
+ // 鎵归噺涓婁笅鏋�
+ bulkOperation(type) {
+ if (!this.ids) {
+ this.$message.warning({ message: '鑷冲皯閫夋嫨涓�椤瑰唴瀹�' })
+ return
+ }
+ batchUpdateDisableById({
+ ids: this.ids,
+ status: type
+ }).then(res => {
+ this.$message.success({ message: res })
+ this.search()
+ })
+ },
downloadFile() {
- // window.open(`${process.env.VUE_APP_API_PREFIX}/business/goods/export`)
exportDoc({})
.then(response => {
this.download(response)
diff --git a/company_admin/src/views/business/pageConfiguration.vue b/company_admin/src/views/business/pageConfiguration.vue
new file mode 100644
index 0000000..6c4a2a4
--- /dev/null
+++ b/company_admin/src/views/business/pageConfiguration.vue
@@ -0,0 +1,205 @@
+<template>
+ <div class="pz">
+ <div class="pz_head">鍩烘湰淇℃伅</div>
+ <div class="pz_item">
+ <div class="pz_item_label">鍐呭鑼冨洿灏哄锛�</div>
+ <div class="pz_item_ipt">
+ <el-input v-model="from.rangeSize" placeholder="鏀寔750px-1200px"></el-input>
+ </div>
+ </div>
+ <div class="pz_item">
+ <div class="pz_item_label">涓昏壊鑹插�硷細</div>
+ <div class="pz_item_ipt">
+ <el-color-picker v-model="from.mainColor"></el-color-picker>
+ </div>
+ </div>
+ <div class="pz_item">
+ <div class="pz_item_label">鑳屾櫙鍥撅細</div>
+ <div class="pz_item_ipt">
+ <el-upload
+ :action="action"
+ :data="{ folder: 'web_param' }"
+ list-type="picture-card"
+ :limit="1"
+ :on-exceed="exceed"
+ :file-list="fileList1"
+ :on-success="fileSuccess1"
+ :on-remove="handleRemove1">
+ <i class="el-icon-plus"></i>
+ </el-upload>
+ </div>
+ </div>
+ <div class="pz_item">
+ <div class="pz_item_label">椤堕儴瀹d紶鍥撅細</div>
+ <div class="pz_item_ipt">
+ <el-upload
+ :action="action"
+ :data="{ folder: 'web_param' }"
+ list-type="picture-card"
+ :on-exceed="exceed"
+ :file-list="fileList2"
+ :on-success="fileSuccess2"
+ :on-remove="handleRemove2">
+ <i class="el-icon-plus"></i>
+ </el-upload>
+ </div>
+ </div>
+ <div class="pz_item">
+ <div class="pz_item_label">PK鍙板浘锛�</div>
+ <div class="pz_item_ipt">
+ <el-upload
+ :action="action"
+ :data="{ folder: 'web_param' }"
+ list-type="picture-card"
+ :on-exceed="exceed"
+ :file-list="fileList3"
+ :on-success="fileSuccess3"
+ :on-remove="handleRemove3">
+ <i class="el-icon-plus"></i>
+ </el-upload>
+ </div>
+ </div>
+ <div class="pz_footer">
+ <el-button type="primary" @click="submit">淇濆瓨</el-button>
+ <el-button>杩斿洖</el-button>
+ </div>
+ </div>
+</template>
+
+<script>
+import { getByLogin, renew } from '@/api/business/page.js'
+
+export default {
+ data() {
+ return {
+ action: process.env.VUE_APP_API_PREFIX + '/public/upload',
+ from: {
+ rangeSize: '',
+ mainColor: '',
+ bgImg: '',
+ topImg: '',
+ pkImg: ''
+ },
+ fileList1: [],
+ fileList2: [],
+ fileList3: []
+ }
+ },
+ created() {
+ this.getDesc()
+ },
+ methods: {
+ submit() {
+ renew(this.from)
+ .then(res => {
+ this.$message.success({ message: '淇濆瓨鎴愬姛' })
+ })
+ },
+ getDesc() {
+ getByLogin({})
+ .then(res => {
+ if (res) {
+ this.from.rangeSize = res.rangeSize
+ this.from.mainColor = res.mainColor
+ if (res.bgImg) {
+ this.from.bgImg = res.bgImg
+ this.fileList1 = [{ name: res.bgImg, url: res.resourcePath + res.bgImg }]
+ }
+ if (res.topImg) {
+ this.fileList2 = []
+ this.from.topImg = res.topImg
+ let arr = res.topImg.split(',').map(item => item)
+ arr.forEach(item => {
+ this.fileList2.push({ name: item, url: res.resourcePath + item })
+ })
+ }
+ if (res.pkImg) {
+ this.fileList3 = []
+ this.from.pkImg = res.pkImg
+ let arr = res.pkImg.split(',').map(item => item)
+ arr.forEach(item => {
+ this.fileList3.push({ name: item, url: res.resourcePath + item })
+ })
+ }
+ }
+ })
+ },
+ exceed() {
+ this.$message.warning({ message: '鍙兘涓婁紶涓�寮犲浘鐗�' })
+ },
+
+ handleRemove1(file, fileList) {
+ this.fileList1 = []
+ this.from.bgImg = ''
+ },
+ fileSuccess1(response) {
+ this.fileList1.push({ name: response.data.imgaddr, url: response.data.url })
+ this.from.bgImg = response.data.imgaddr
+ },
+
+ handleRemove2(file, fileList) {
+ this.fileList2.forEach((item, index) => {
+ if (file.name === item.name) {
+ this.fileList2.splice(index, 1)
+ }
+ })
+ let arr = this.fileList2.map(item => item.name)
+ this.from.topImg = arr.join(',')
+ },
+ fileSuccess2(response) {
+ this.fileList2.push({ name: response.data.imgaddr, url: response.data.url })
+ let arr = this.fileList2.map(item => item.name)
+ this.from.topImg = arr.join(',')
+ },
+
+ handleRemove3(file, fileList) {
+ this.fileList3.forEach((item, index) => {
+ if (file.name === item.name) {
+ this.fileList3.splice(index, 1)
+ }
+ })
+ let arr = this.fileList3.map(item => item.name)
+ this.from.pkImg = arr.join(',')
+ },
+ fileSuccess3(response) {
+ this.fileList3.push({ name: response.data.imgaddr, url: response.data.url })
+ let arr = this.fileList3.map(item => item.name)
+ this.from.pkImg = arr.join(',')
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+ .pz {
+ width: 100%;
+ padding: 30px;
+ box-sizing: border-box;
+ background-color: #fff;
+ .pz_head {
+ font-size: 20px;
+ margin-bottom: 30px;
+ font-weight: bold;
+ }
+ .pz_item {
+ width: 750px;
+ display: flex;
+ align-items: flex-start;
+ margin-bottom: 30px;
+ .pz_item_label {
+ width: 140px;
+ flex-shrink: 0;
+ font-size: 16px;
+ text-align: right;
+ }
+ .pz_item_ipt {
+ flex: 1;
+ }
+ }
+ .pz_footer {
+ width: 100%;
+ padding-left: 140px;
+ box-sizing: border-box;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/company_admin/src/views/business/staff.vue b/company_admin/src/views/business/staff.vue
new file mode 100644
index 0000000..dc18899
--- /dev/null
+++ b/company_admin/src/views/business/staff.vue
@@ -0,0 +1,163 @@
+<template>
+ <TableLayout :permissions="['system:user:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="80px" inline>
+ <el-form-item label="璐﹀彿淇℃伅" prop="keyword">
+ <el-input v-model="searchForm.keyword" v-trim placeholder="璇疯緭鍏ョ櫥褰曡处鍙�/濮撳悕" @keypress.enter.native="search"/>
+ </el-form-item>
+ <el-form-item label="鐘舵��" prop="status">
+ <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in status"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <section>
+ <el-button type="primary" icon="el-icon-search" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <ul class="toolbar" v-permissions="['system:user:create', 'system:user:delete']">
+ <li v-permissions="['system:user:create']"><el-button icon="el-icon-plus" type="primary" @click="$refs.OperaStaffWindow.open('鏂板缓鐢ㄦ埛')">鏂板缓</el-button></li>
+ <!-- <li v-permissions="['system:user:delete']"><el-button icon="el-icon-delete" @click="deleteByIdInBatch">鍒犻櫎</el-button></li> -->
+ </ul>
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ :default-sort = "{prop: 'createTime', order: 'descending'}"
+ stripe
+ @selection-change="handleSelectionChange"
+ @sort-change="handleSortChange"
+ >
+ <el-table-column type="selection" width="55"></el-table-column>
+ <el-table-column prop="username" label="鐧诲綍璐﹀彿"></el-table-column>
+ <el-table-column prop="realname" label="濮撳悕"></el-table-column>
+ <el-table-column prop="mobile" label="鎵嬫満鍙�"></el-table-column>
+ <el-table-column prop="roles" label="瑙掕壊">
+ <template slot-scope="{row}">
+ <ul>
+ <li style="padding: 0px 5px; background-color: #ececec; border-radius: 8px; display: inline-block; margin-right: 10px;" v-for="role in row.roles" :key="role.id">{{role.name}}</li>
+ </ul>
+ </template>
+ </el-table-column>
+ <el-table-column label="鐘舵��">
+ <template slot-scope="{row}">
+ <el-switch
+ v-model="row.status"
+ active-color="#13ce66"
+ inactive-color="#ff4949"
+ @change="changeStatus($event, row.id)"
+ :active-value="0"
+ :inactive-value="1">
+ </el-switch>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createTime" label="鍒涘缓鏃堕棿"></el-table-column>
+ <el-table-column
+ v-if="containPermissions(['system:user:update', 'system:user:createUserRole', 'system:user:resetPwd', 'system:user:delete'])"
+ label="鎿嶄綔"
+ width="230"
+ fixed="right"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" icon="el-icon-edit" @click="edit(row)" v-permissions="['system:user:update']">缂栬緫</el-button>
+ <el-button type="text" @click="editPass(row)" v-permissions="['system:user:resetPwd']">淇敼瀵嗙爜</el-button>
+ <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:user:delete']">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ ></pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ <OperaStaffWindow ref="OperaStaffWindow" @success="handlePageChange"/>
+ <!-- 淇敼瀵嗙爜 -->
+ <OperaAnchorPassWindow ref="OperaAnchorPassWindow" @success="handlePageChange"/>
+ </TableLayout>
+ </template>
+
+ <script>
+ import Pagination from '@/components/common/Pagination'
+ import TableLayout from '@/layouts/TableLayout'
+ import BaseTable from '@/components/base/BaseTable'
+ import OperaStaffWindow from '@/components/business/OperaStaffWindow'
+ import OperaAnchorPassWindow from '@/components/business/OperaAnchorPassWindow'
+ import { updUserStatus } from '@/api/business/anchor.js'
+
+ export default {
+ name: 'SystemUser',
+ extends: BaseTable,
+ components: { OperaStaffWindow, OperaAnchorPassWindow, TableLayout, Pagination },
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ status: '',
+ keyword: '',
+ type: 1
+ },
+ status: [
+ { name: '鍚敤', id: 0 },
+ { name: '绂佺敤', id: 1 }
+ ]
+ }
+ },
+ created () {
+ this.config({
+ module: '鐢ㄦ埛',
+ api: '/business/anchor',
+ 'field.main': 'realname',
+ sorts: [{
+ property: 'CREATE_TIME',
+ direction: 'DESC'
+ }]
+ })
+ this.search()
+ },
+ methods: {
+ editPass(row) {
+ let obj = {
+ id: row.id
+ }
+ this.$refs.OperaAnchorPassWindow.open('淇敼瀵嗙爜', obj)
+ },
+ // 淇敼鐘舵��
+ changeStatus(status, id) {
+ updUserStatus({ id, status })
+ .then(res => {
+ console.log(res)
+ })
+ },
+ edit(row) {
+ let obj = {
+ id: row.id,
+ userName: row.username,
+ password: row.password,
+ realName: row.realname,
+ mobile: row.mobile,
+ roleId: row.roles.length > 0 ? row.roles[0].id : null
+ }
+ this.$refs.OperaStaffWindow.open('缂栬緫鐢ㄦ埛', obj)
+ }
+ }
+ }
+ </script>
+
+<style scoped lang="scss">
+ @import "@/assets/style/variables.scss";
+ // 鍒楄〃澶村儚澶勭悊
+ .table-column-avatar {
+ img {
+ width: 48px;
+ }
+ }
+</style>
+
\ No newline at end of file
diff --git a/company_admin/src/views/system/menu.vue b/company_admin/src/views/system/menu.vue
index 2e98085..87bf4b3 100644
--- a/company_admin/src/views/system/menu.vue
+++ b/company_admin/src/views/system/menu.vue
@@ -15,7 +15,7 @@
:tree-props="{children: 'children', hasChildren: 'hasChildren'}"
row-key="id"
stripe
- default-expand-all
+ :default-expand-all="false"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" fixed="left"></el-table-column>
--
Gitblit v1.9.3