From 92ff846fb659c62037a32b1d8c15eae9df9d9b54 Mon Sep 17 00:00:00 2001
From: zenglf <18502938215@163.com>
Date: 星期一, 18 九月 2023 13:24:30 +0800
Subject: [PATCH] Merge branch 'develop' of http://117.34.109.166:18448/r/vue_mdc_430

---
 src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue |  342 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 342 insertions(+), 0 deletions(-)

diff --git a/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue b/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue
new file mode 100644
index 0000000..0bf4755
--- /dev/null
+++ b/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue
@@ -0,0 +1,342 @@
+<template>
+  <a-card
+    :bordered="false"
+    :class="'cust-erp-sub-tab'"
+  >
+    <a-table
+      ref="table"
+      bordered
+      rowKey="id"
+      :columns="columns"
+      :dataSource="dataSource"
+      :pagination="ipagination"
+      @change="handleTableChange"
+    >
+      <template
+        v-for="col in columns"
+        :slot="col.dataIndex"
+        slot-scope='text, record, index'
+      >
+        <div :key="col.dataIndex">
+          <a-input-search
+            v-if="col.dataIndex == 'username'"
+            enter-button
+            @search="onSearchUser(index)"
+            :value="text"
+            :read-only="true"
+            :disabled="orderStatus!='4'"
+            @change="(e) => handleChange(e, record.key, col, index)"
+          />
+          <a-input-number
+            :value="text"
+            v-if="col.dataIndex == 'actualWorkingHourQuota'"
+            :min="0"
+            :max="99999"
+            @change="(e)=>handleChange(e, record.key, col, index)"
+            :disabled="record.disabled||orderStatus!='4'"
+          />
+
+        </div>
+      </template>
+      <span
+        slot='action'
+        slot-scope='text, record,index'
+      >
+        <a
+          v-has="'specialtyMaintenanceOrder:actualWorkHoursDelete'"
+          v-if="orderStatus=='4'"
+          @click="handleDelete(index)"
+        >鍒犻櫎</a>
+      </span>
+    </a-table>
+    <a-button
+      style="width: 100%; margin-top: 16px; margin-bottom: 8px"
+      type="dashed"
+      icon="plus"
+      @click="addHour"
+      :disabled="orderStatus!='4'"
+    >娣诲姞瀹為檯宸ユ椂
+    </a-button>
+    <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
+      <a-row :style="{textAlign:'right'}">
+        <a-button
+          :style="{marginRight: '8px'}"
+          @click="handleCancel"
+        >
+          鍙栨秷
+        </a-button>
+        <a-button
+          @click="handleOk(1)"
+          type="primary"
+          :style="{marginRight: '8px'}"
+          :disabled="orderStatus!='4'"
+          v-has="'specialtyMaintenanceOrder:actualWorkHoursTS'"
+        >鏆傚瓨</a-button>
+        <a-button
+          @click="handleOk(0)"
+          type="primary"
+          :disabled="orderStatus!='4'"
+          v-has="'specialtyMaintenanceOrder:actualWorkHoursSave'"
+        >淇濆瓨</a-button>
+      </a-row>
+      <!-- :disabled="false" -->
+    </div>
+    <actual-hour-user-select
+      ref="actualUserSelect"
+      @sendUserRecord="sendUserRecord"
+    >
+    </actual-hour-user-select>
+  </a-card>
+</template>
+<script>
+import { postAction, getAction } from '@/api/manage'
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+import pick from 'lodash.pick'
+import JEllipsis from '@/components/jeecg/JEllipsis'
+import ActualHourUserSelect from './select/ActualHourUserSelect.vue'
+export default {
+  name: 'ActualWorkHoursEditTable',
+  mixins: [JeecgListMixin],
+  components: {
+    JEllipsis,
+    ActualHourUserSelect
+  },
+  props: {
+    orderId: {
+      type: String,
+      required: false,
+      default: ''
+    },
+    orderStatus: {
+      type: String,
+      required: false,
+      default: ''
+    },
+    equipmentId: {
+      type: String,
+      required: false,
+      default: ''
+    },
+    teamId: {
+      type: String,
+      required: false,
+      default: ''
+    },
+  },
+  data() {
+    return {
+      title: "瀹為檯宸ユ椂",
+      flag: false,//涓婚〉闈㈢殑鏍囪浣�  鐢ㄤ簬鍖哄垎鏄惁纭杩囧伐鍗曞伐鑹� 鏉ュ尯鍒唗able椤靛睍绀� 宸ュ崟宸ュ簭 杩樻槸浜у搧宸ュ簭
+      visible: false,
+      model: {},
+      obj: {},
+      maskClosable: true,
+      confirmLoading: false,
+      form: this.$form.createForm(this),
+      /* 鍒嗛〉鍙傛暟 */
+      ipagination: {
+        current: 1,
+        pageSize: 99,
+        pageSizeOptions: ['99', '199'],
+        showTotal: (total, range) => {
+          return range[0] + "-" + range[1] + " 鍏�" + total + "鏉�"
+        },
+        showQuickJumper: true,
+        showSizeChanger: true,
+        total: 0
+      },
+      validatorRules: {
+        userId: {
+          rules: [
+            { required: true, message: '璇烽�夋嫨浜哄憳!' },
+          ]
+        },
+        actual_hour: {
+          rules: [
+            { required: false, message: '璇峰~鍐欏伐鏃�!' },
+          ]
+        },
+      },
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 7 },
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 },
+      },
+      drawerWidth: "100%",
+      visible: false,
+      disableSubmit: false,
+      disableSelect: false,
+      loading: false,
+      dataSource: [],
+      columns: [
+        {
+          title: '*浜哄憳缂栫爜',
+          dataIndex: 'username',
+          align: "center",
+          scopedSlots: { customRender: 'username' },
+          className: 'red',
+          width: 250,
+        },
+        {
+          title: '浜哄憳鍚嶇О',
+          dataIndex: 'realname',
+          align: "center",
+          width: 250,
+        },
+        {
+          title: '*瀹為檯宸ユ椂',
+          dataIndex: 'actualWorkingHourQuota',
+          align: "center",
+          className: 'red',
+          scopedSlots: { customRender: 'actualWorkingHourQuota' },
+          width: 250,
+        },
+        {
+          title: '鎿嶄綔',
+          dataIndex: 'action',
+          align: 'center',
+          width: 250,
+          scopedSlots: { customRender: 'action' }
+        }
+      ],
+      url: {
+        list: "/eam/maintenanceOrderActualWorkingHour/getMaintenanceOrderActualWorkingHourList",
+        confirmHour: "/eam/maintenanceOrderActualWorkingHour/add"
+      },
+      changeIndex: 0
+    }
+  },
+  created() {
+    this.queryParam['maintenanceOrderId'] = this.orderId;
+    this.queryParam['equipmentId'] = this.equipmentId
+    this.loadData(1);
+  },
+  watch: {
+    orderId: {
+      immediate: true,
+      handler(val) {
+        this.clearList();
+        this.queryParam['maintenanceOrderId'] = val
+        this.queryParam['equipmentId'] = this.equipmentId
+        this.loadData(1);
+      }
+    },
+  },
+  methods: {
+    addHour() {
+      this.dataSource.push({ id: this.getUuiD(16), userId: '', maintenanceOrderId: this.dailyMaintenanceOrderId, actualWorkingHourQuota: 0, username: '', realname: '' })
+    },
+    handleCancel() {
+      this.$bus.$emit('closeDrawer');
+    },
+    close() {
+      this.$emit('close');
+      this.dataSource = []
+      this.disableSubmit = false;
+      this.visible = false;
+    },
+    // handleDeleteFake(index) {
+    //   this.dataSource.splice(index,1);
+    // },
+    handleDelete(text, record, index) {
+      this.dataSource.splice(index, 1);
+    },
+
+    handleOk(saveStatus) {
+      const that = this
+      if (saveStatus == 0) {
+        let workHoursDataSource = that.dataSource;
+        for (let i = 0; i < workHoursDataSource.length; i++) {
+          if (workHoursDataSource[i].userId == undefined || workHoursDataSource[i].userId == null || workHoursDataSource[i].userId == '') {
+            that.$message.warning("璇烽�夋嫨绗�" + (i + 1) + "琛岀淮淇汉鍛橈紒");
+            return false;
+          }
+          if (workHoursDataSource[i].actualWorkingHourQuota == undefined || workHoursDataSource[i].actualWorkingHourQuota == null || workHoursDataSource[i].actualWorkingHourQuota == '') {
+            that.$message.warning("璇峰~鍐欑" + (i + 1) + "琛屽疄闄呭伐鏃讹紒");
+            return false;
+          }
+        }
+      }
+      if (that.dataSource.length === 0) {
+        that.$message.warning("璇烽�夋嫨浜哄憳锛�")
+        return
+      }
+      this.form.validateFields((err, values) => {
+        if (!err) {
+          that.confirmLoading = true
+          let formData = {}
+          formData.maintenanceOrderId = that.orderId;
+          formData.maintenanceOrderActualWorkingHourList = that.dataSource;
+          formData.equipmentId = that.equipmentId;
+          let obj = obj = postAction(this.url.confirmHour, formData)
+          obj.then((res) => {
+            if (res.success) {
+              that.$message.success(res.message)
+              that.$emit('ok')
+            } else {
+              that.$message.warning(res.message)
+            }
+          }).finally(() => {
+            that.confirmLoading = false
+            that.close()
+            that.loadData(1);
+          })
+        }
+      })
+    },
+    handleChange(value, key, column, index) {
+      let that = this;
+      const temp = [...that.dataSource];
+      const target = temp[index];
+      if (target) {
+        target[column.dataIndex] = value;
+        if ('userId' == column.dataIndex) {
+          target['userId'] = value;
+        }
+        if ('actualWorkingHourQuota' == column.dataIndex) {
+          target['actualWorkingHourQuota'] = value;
+        }
+        that.dataSource = temp;
+      }
+    },
+    onSearchUser(index) {
+      this.recordIndex = index
+      this.$refs.actualUserSelect.list(this.teamId)
+      this.$refs.actualUserSelect.title = '浜哄憳閫夋嫨'
+    },
+    sendUserRecord(data, val) {
+      let record = data.record
+      const temp = [...this.dataSource]
+      const target = temp[this.recordIndex]
+      if (target) {
+        console.log(record)
+        target.userId = record.id;
+        target.username = record.username;
+        target.realname = record.realname;
+        this.dataSource = temp
+      }
+    },
+    clearList() {
+      this.dataSource = [];
+      this.ipagination.current = 1
+    },
+    getUuiD(randomLength) {
+      return Number(
+        Math.random()
+          .toString()
+          .substr(2, randomLength) + Date.now()
+      ).toString(36)
+    },
+  },
+
+}
+</script>
+
+<style scoped>
+/deep/ .red {
+  color: red;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3