From a3da6dcfea48db3ab497138dcb07c6650f1a6474 Mon Sep 17 00:00:00 2001
From: xy <271556543@qq.com>
Date: Wed, 12 Apr 2023 17:34:35 +0800
Subject: [PATCH] 2023-4-12
---
src/api/budget/planTarget.js | 33 ++
src/components/XyTable/index.vue | 3 +
src/utils/index.js | 61 +++
.../achievements/components/addPoint.vue | 2 +
src/views/achievements/point.vue | 29 +-
src/views/budget/budgetList.vue | 31 +-
src/views/budget/components/addPoint.vue | 397 ++++++++++++++++++
7 files changed, 543 insertions(+), 13 deletions(-)
create mode 100644 src/api/budget/planTarget.js
create mode 100644 src/views/budget/components/addPoint.vue
diff --git a/src/api/budget/planTarget.js b/src/api/budget/planTarget.js
new file mode 100644
index 0000000..33109f6
--- /dev/null
+++ b/src/api/budget/planTarget.js
@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+
+export function index(params) {
+ return request({
+ method: "get",
+ url: "/api/admin/plan_target/index",
+ params
+ })
+}
+
+export function show(params) {
+ return request({
+ method: "get",
+ url: "/api/admin/plan_target/show",
+ params
+ })
+}
+
+export function save(data) {
+ return request({
+ method: "post",
+ url: "/api/admin/plan_target/save",
+ data
+ })
+}
+
+export function destroy(params) {
+ return request({
+ method: "get",
+ url: "/api/admin/plan_target/destroy",
+ params
+ })
+}
diff --git a/src/components/XyTable/index.vue b/src/components/XyTable/index.vue
index feec659..d18dbd5 100644
--- a/src/components/XyTable/index.vue
+++ b/src/components/XyTable/index.vue
@@ -129,6 +129,9 @@ export default {
},
toggleAllSelection(){
this.$refs.table.toggleAllSelection()
+ },
+ doLayout() {
+ this.$refs['table'].doLayout();
}
},
created() {
diff --git a/src/utils/index.js b/src/utils/index.js
index 5759438..fc12e4b 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -135,3 +135,64 @@ export function moneyFormatter(money,precision=2){
export function moneyRecovery(money){
return parseFloat(money.replace(/[^\d\.-]/g, ""));
}
+
+//深拷贝
+export function deepCopy(data) {
+ //string,number,bool,null,undefined,symbol
+ //object,array,date
+ if (data && typeof data === "object") {
+ //针对函数的拷贝
+ if (typeof data === "function") {
+ let tempFunc = data.bind(null);
+ tempFunc.prototype = deepCopy(data.prototype);
+ return tempFunc;
+ }
+
+ switch (Object.prototype.toString.call(data)) {
+ case "[object String]":
+ return data.toString();
+ case "[object Number]":
+ return Number(data.toString());
+ case "[object Boolean]":
+ return new Boolean(data.toString());
+ case "[object Date]":
+ return new Date(data.getTime());
+ case "[object Array]":
+ let arr = [];
+ for (let i = 0; i < data.length; i++) {
+ arr[i] = deepCopy(data[i]);
+ }
+ return arr;
+
+ //js自带对象或用户自定义类实例
+ case "[object Object]":
+ let obj = {};
+ for (let key in data) {
+ //会遍历原型链上的属性方法,可以用hasOwnProperty来控制 (obj.hasOwnProperty(prop)
+ obj[key] = deepCopy(data[key]);
+ }
+ return obj;
+ }
+ } else {
+ //string,number,bool,null,undefined,symbol
+ return data;
+ }
+}
+
+export function resetSelect(select) {
+ let keys = Object.keys(select);
+ keys.forEach(key => {
+ if(key === 'page'){
+ select[key] = 1
+ }
+ else if(key === 'page_size'){
+ select[key] = 10
+ }
+ else if(select[key] instanceof Array){
+ select[key] = []
+ }
+ else {
+ select[key] = ""
+ }
+ })
+}
diff --git a/src/views/achievements/components/addPoint.vue b/src/views/achievements/components/addPoint.vue
index 0afd00a..176e26c 100644
--- a/src/views/achievements/components/addPoint.vue
+++ b/src/views/achievements/components/addPoint.vue
@@ -286,6 +286,8 @@ export default {
async getDetail() {
const res = await show({ id: this.id });
this.$integrateData(this.form, res);
+
+ this.target_type2s = this.target_types?.filter(i => i.id === this.form.target_type_id)[0]?.children
},
submit() {
diff --git a/src/views/achievements/point.vue b/src/views/achievements/point.vue
index 334e1ae..e371c5d 100644
--- a/src/views/achievements/point.vue
+++ b/src/views/achievements/point.vue
@@ -13,15 +13,16 @@
-
+