XuZinan hace 2 años
padre
commit
453067734a
Se han modificado 3 ficheros con 90 adiciones y 8 borrados
  1. 3 6
      pages/Project/detail.vue
  2. 83 2
      pages/Project/member.vue
  3. 4 0
      services/project.js

+ 3 - 6
pages/Project/detail.vue

@@ -216,9 +216,7 @@ import {
   startWarranty,
   startOperate,
 } from "@/services/project";
-import uniFormsItem from "../../uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue";
 export default {
-  components: { uniFormsItem },
   data() {
     return {
       auth: false,
@@ -496,15 +494,15 @@ export default {
       });
     },
     changeManager(e) {
-      this.formData.manager = e.detail.value[e.detail.value.length - 1].value;
+      if (e.detail.value.length > 0)
+        this.formData.manager = e.detail.value[e.detail.value.length - 1].value;
+      else this.formData.manager = "";
     },
     onExecute() {
       this.$refs.exePopup.open();
-      return;
     },
     onWarranty() {
       this.$refs.wtyPopup.open();
-      return;
     },
     async submitWarranty() {
       this.$refs.wty.validate(async (err) => {
@@ -531,7 +529,6 @@ export default {
     },
     onOperate() {
       this.$refs.optPopup.open();
-      return;
     },
     async submitOperate() {
       this.$refs.opt.validate(async (err) => {

+ 83 - 2
pages/Project/member.vue

@@ -22,21 +22,48 @@
           </uni-card>
         </uni-collapse-item>
       </uni-collapse>
+      <view class="add">
+        <uni-forms
+          label-position="top"
+          class="form"
+          ref="form"
+          :modelValue="formData"
+          :rules="rules"
+        >
+          <uni-forms-item label="添加成员" name="member">
+            <uni-data-picker
+              ref="member"
+              class="depSelect"
+              :localdata="depUserTree"
+              @change="changeMember"
+            />
+          </uni-forms-item>
+        </uni-forms>
+        <button class="button" @click="onAddMember">添加</button>
+      </view>
     </view>
   </view>
 </template>
 
 <script>
 import { mapState } from "vuex";
-import { queryMember, deleteMember } from "@/services/project";
+import { queryMember, deleteMember, addMember } from "@/services/project";
 export default {
   data() {
     return {
       memberList: [],
+      formData: {
+        member: "",
+      },
+      rules: {
+        member: {
+          rules: [{ required: true, errorMessage: "请选择成员" }],
+        },
+      },
     };
   },
   computed: {
-    ...mapState(["currentProject"]),
+    ...mapState(["currentProject", "depUserTree"]),
   },
   onLoad() {
     this.init();
@@ -78,6 +105,32 @@ export default {
         },
       });
     },
+    changeMember(e) {
+      if (e.detail.value.length > 0)
+        this.formData.member = e.detail.value[e.detail.value.length - 1].value;
+      else this.formData.member = "";
+    },
+    onAddMember() {
+      this.$refs.form.validate(async (err) => {
+        if (!err) {
+          const member_id = this.formData.member.split("-")[1];
+          let payload = {
+            project_code_id: this.currentProject.id,
+            user_id: Number(member_id),
+          };
+          await addMember(payload);
+          uni.showToast({
+            title: "添加成功",
+          });
+          setTimeout(() => {
+            uni.hideToast();
+            this.init();
+            this.$refs.member.clear();
+            this.formData.member = "";
+          }, 1800);
+        }
+      });
+    },
   },
 };
 </script>
@@ -95,6 +148,9 @@ export default {
 .list {
   margin: 0 5% 20px 5%;
   width: 100%;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: center;
 }
 .actions {
   font-size: 14px;
@@ -104,6 +160,31 @@ export default {
   justify-content: flex-end;
 }
 
+.add {
+  width: 90%;
+  margin-top: 20px;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: flex-end;
+}
+
+.form {
+  width: 100%;
+}
+
+.depSelect {
+  background: #fff;
+}
+
+.button {
+  width: 60px;
+  height: 40px;
+  font-size: 14px;
+  background: #1890ff;
+  color: #fff;
+  margin: 0;
+}
+
 ::v-deep {
   .uni-collapse-item__title-text {
     font-size: 16px;

+ 4 - 0
services/project.js

@@ -70,3 +70,7 @@ export async function startOperate(data) {
 export async function startWarranty(data) {
   return request(`v2/project_code/to_wty`, "POST", data);
 }
+
+export async function addMember(data) {
+  return request(`v2/project_code/user`, "POST", data);
+}