From 3d3e7f45086799fdd7a412e2079710a6cdf8dc2b Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 24 十月 2024 08:30:04 +0800
Subject: [PATCH] Merge branch 'lsf-dataproduct-1018'

---
 src/views/fysp/task/components/CompSubTaskEdit.vue |  170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 170 insertions(+), 0 deletions(-)

diff --git a/src/views/fysp/task/components/CompSubTaskEdit.vue b/src/views/fysp/task/components/CompSubTaskEdit.vue
new file mode 100644
index 0000000..f80a20a
--- /dev/null
+++ b/src/views/fysp/task/components/CompSubTaskEdit.vue
@@ -0,0 +1,170 @@
+<template>
+  <FYForm
+    ref="formRef"
+    :form-info="formInfo"
+    :rules="rules"
+    :useCancel="true"
+    @submit="submit"
+    @cancel="cancel"
+  >
+    <template #form-item="{ formObj }">
+      <el-form-item label="浠诲姟鍚嶇О" prop="name">
+        <el-input disabled v-model="formObj.name" placeholder="浠诲姟鍚嶇О" />
+      </el-form-item>
+      <el-form-item label="鍦烘櫙鍦板潃" prop="name">
+        <el-input
+          disabled
+          v-model="formObj.scenseaddress"
+          placeholder="鍦烘櫙鍦板潃"
+        />
+      </el-form-item>
+      <FYOptionTime
+        label="璁″垝鏃堕棿"
+        prop="planstarttime"
+        :initValue="false"
+        type="date"
+        v-model:value="formObj.planstarttime"
+        @change="handleTimeChange"
+      ></FYOptionTime>
+      <el-form-item label="鎵ц浜�" prop="_executors">
+        <el-select
+          v-model="formObj._executors"
+          multiple
+          clearable
+          collapse-tags
+          placeholder="閫夋嫨鎵ц浜�"
+          :max-collapse-tags="3"
+          style="width: 300px"
+        >
+          <el-option
+            v-for="s in executorOptions"
+            :key="s.value"
+            :label="s.label"
+            :value="s.value"
+          />
+        </el-select>
+      </el-form-item>
+    </template>
+  </FYForm>
+</template>
+<script setup>
+import { ref, computed, onMounted, reactive } from 'vue';
+import subtaskApi from '@/api/fysp/subtaskApi';
+import userApi from '@/api/fysp/userApi';
+import dayjs from 'dayjs';
+
+const props = defineProps({
+  //鍩烘湰淇℃伅
+  modelValue: Object,
+  //鏄垱寤烘垨鑰呮洿鏂�
+  create: Boolean
+});
+
+const emit = defineEmits(['submit', 'cancel', 'update:modelValue']);
+
+const formRef = ref(null);
+// 浠诲姟鎵ц浜洪�夐」
+const executorOptions = ref([]);
+const formInfo = computed(() => {
+  return {
+    ...props.modelValue,
+    _executors: props.modelValue
+      ? props.modelValue.executorguids.split('#')
+      : []
+  };
+});
+
+const rules = reactive({
+  name: [
+    {
+      required: true,
+      message: '鍦烘櫙鍚嶇О涓嶈兘涓虹┖',
+      trigger: 'blur'
+    }
+  ],
+  _scenetype: [
+    {
+      required: true,
+      message: '鍦烘櫙绫诲瀷涓嶈兘涓虹┖',
+      trigger: 'change'
+    }
+  ]
+});
+
+function handleTimeChange(time) {
+  formRef.value.formObj.planendtime = dayjs(time).endOf('day').set('millisecond', 0)
+}
+
+function getExecutors(data) {
+  const ids = [];
+  const uNames = [];
+  const rNames = [];
+  executorOptions.value.forEach((e) => {
+    const index = data._executors.indexOf(e.value);
+    if (index != -1) {
+      ids.push(e.data.guid);
+      uNames.push(e.data.acountname);
+      rNames.push(e.data.realname);
+    }
+  });
+  return {
+    id: ids.join('#'),
+    uName: uNames.join('#'),
+    rName: rNames.join('#')
+  };
+}
+
+// 鍒涘缓鏂板満鏅�
+function createScene(v, success, fail) {
+  // return sceneApi
+  //   .createScene(v)
+  //   .then(() => {
+  //     emit('onSubmit', v);
+  //     success();
+  //   })
+  //   .catch((err) => {
+  //     fail(err);
+  //   });
+}
+// 鏇存柊鍦烘櫙
+function updateScene(v, success, fail) {
+  return subtaskApi
+    .adjustSubtask(v)
+    .then(() => {
+      emit('update:modelValue', v)
+      emit('submit', v);
+      success();
+    })
+    .catch((err) => {
+      fail(err);
+    });
+}
+function submit(v, success, fail) {
+  const executors = getExecutors(v.value);
+  v.value.executorguids = executors.id
+  v.value.executorusernames = executors.uName
+  v.value.executorrealtimes = executors.rName
+  return props.create
+    ? createScene(v.value, success, fail)
+    : updateScene(v.value, success, fail);
+}
+function cancel() {
+  emit('cancel');
+}
+
+function initOptions() {
+  userApi.getUserByType(1).then((res) => {
+    executorOptions.value = res.map((v) => {
+      return {
+        label: v.realname,
+        value: v.guid,
+        data: v
+      };
+    });
+  });
+}
+
+onMounted(() => {
+  initOptions();
+});
+</script>

--
Gitblit v1.9.3