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/spare/modules/sparePartScrap/SparePartScrapForm.vue |  578 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 578 insertions(+), 0 deletions(-)

diff --git a/src/views/spare/modules/sparePartScrap/SparePartScrapForm.vue b/src/views/spare/modules/sparePartScrap/SparePartScrapForm.vue
new file mode 100644
index 0000000..2af4bf8
--- /dev/null
+++ b/src/views/spare/modules/sparePartScrap/SparePartScrapForm.vue
@@ -0,0 +1,578 @@
+<template>
+  <a-spin :spinning='confirmLoading'>
+    <j-form-container :disabled='formDisabled'>
+      <!-- 涓昏〃鍗曞尯鍩� -->
+      <a-form-model ref='form' :model='model' :rules='validatorRules' slot='detail'>
+        <a-row>
+          <a-col :span='12'>
+            <a-form-model-item label='鍗曟嵁鍙�' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='num'>
+              <a-input v-model='model.num' placeholder='璇疯緭鍏ュ崟鎹彿' :disabled="true"></a-input>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span='12'>
+            <a-form-model-item label='棰嗙敤閮ㄩ棬' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='departId'>
+              <!--              <a-input v-model="model.departId" placeholder="璇疯緭鍏ラ鐢ㄩ儴闂↖D" ></a-input>-->
+<!--              <j-dict-select-tag
+                allow-clear
+                :placeholder="'璇烽�夋嫨棰嗙敤閮ㄩ棬'"
+                v-model='model.departId'
+                dictCode="sys_depart,depart_name,id,del_flag!='1'"
+              />-->
+<!--              <a-select
+                :placeholder="'璇烽�夋嫨棰嗙敤閮ㄩ棬'"
+                :options="this.departs"
+                style="width: 100%"
+                v-model='model.departId'
+              />-->
+              <a-tree-select
+                style="width: 100%"
+                :dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
+                :tree-data="treeData"
+                placeholder="璇烽�夋嫨棰嗙敤閮ㄩ棬"
+                tree-default-expand-all
+                v-model='model.departId'
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span='12'>
+            <a-form-model-item label='棰嗙敤浜哄憳' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='userId'>
+              <j-dict-select-tag
+                allow-clear
+                :placeholder="'璇烽�夋嫨棰嗙敤浜哄憳'"
+                v-model='model.userId'
+                dictCode="sys_user,realname,id,del_flag!='1'"
+              />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span='12'>
+            <a-form-model-item label='澶囨敞' :labelCol='labelCol' :wrapperCol='wrapperCol' prop='remark'>
+              <!--              <a-input v-model="model.userId" placeholder="璇疯緭鍏ラ鐢ㄤ汉鍛業D" ></a-input>-->
+              <a-textarea
+                allow-clear
+                :placeholder="'璇疯緭鍏ュ娉�'"
+                v-model='model.remark'
+              />
+            </a-form-model-item>
+          </a-col>
+
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+    <!-- 瀛愯〃鍗曞尯鍩� -->
+    <a-tabs v-model='activeKey' @change='handleChangeTabs'>
+      <a-tab-pane tab='澶囦欢鎶ュ簾鏄庣粏琛�' :key='refKeys[0]' :forceRender='true'>
+        <j-vxe-table
+          keep-source
+          :ref='refKeys[0]'
+          :bordered='bordered'
+          :alwaysEdit='true'
+          :loading='sparesScrapDetailTable.loading'
+          :columns='sparesScrapDetailTable.columns'
+          :dataSource='sparesScrapDetailTable.dataSource'
+          :maxHeight='300'
+          :disabled='formDisabled'
+          :rowNumber='true'
+          :rowSelection='true'
+          :toolbar='true'
+          :toolbarConfig='toolbarConfig'
+        >
+          <template slot='toolbarPrefix'>
+            <a-button type='primary' @click='selectEquipmentList' :disabled='formDisabled'>閫夋嫨澶囦欢
+            </a-button>
+          </template>
+        </j-vxe-table>
+      </a-tab-pane>
+    </a-tabs>
+    <spare-select-list ref='SparesSelectModal'></spare-select-list>
+  </a-spin>
+</template>
+
+<script>
+
+import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
+import { JVXETypes } from '@comp/jeecg/JVxeTable'
+import { getRefPromise, VALIDATE_FAILED } from '@comp/jeecg/JVxeTable/utils/vxeUtils.js'
+import JFormContainer from '@comp/jeecg/JFormContainer'
+import SpareSelectList from './SpareSelectList'
+import { getAction } from '@api/manage'
+
+export default {
+  name: 'SparePartScrapForm',
+  mixins: [JVxeTableModelMixin],
+  components: {
+    JFormContainer,
+    SpareSelectList
+  },
+  data() {
+    return {
+      treeData:[],
+      departs:[],
+      bordered:true,
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 }
+      },
+      toolbarConfig: {
+        // prefix 鍓嶇紑锛泂uffix 鍚庣紑
+        slot: ['prefix', 'suffix'],
+        // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳
+        btn: ['remove', 'clearSelection']
+      },
+      model: {},
+      // 鏂板鏃跺瓙琛ㄩ粯璁ゆ坊鍔犲嚑琛岀┖鏁版嵁
+      addDefaultRowNum: 0,
+      validatorRules: {
+        num: [
+          { required: true, message: '璇疯緭鍏ュ崟鎹彿!' }
+        ],
+        departId: [
+          { required: true, message: '璇疯緭鍏ラ鐢ㄩ儴闂↖D!' }
+        ],
+        userId: [
+          { required: true, message: '璇疯緭鍏ラ鐢ㄤ汉鍛業D!' }
+        ]
+      },
+      refKeys: ['sparesScrapDetail'],
+      tableKeys: ['sparesScrapDetail'],
+      activeKey: 'sparesScrapDetail',
+      // 澶囦欢鎶ュ簾鏄庣粏琛�
+      sparesScrapDetailTable: {
+        loading: false,
+        dataSource: [],
+        columns: [
+          {
+            title: '澶囦欢缂栫爜',
+            key: 'spareNum',
+            fixed: 'left',
+            type: JVXETypes.normal,
+            align:'center',
+            width: '150px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '澶囦欢鍚嶇О',
+            key: 'spareName',
+            align:'center',
+            type: JVXETypes.normal,
+            fixed: 'left',
+            width: '150px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '鍨嬪彿',
+            key: 'model',
+            align:'center',
+            type: JVXETypes.normal,
+            width: '150px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '瑙勬牸',
+            key: 'specification',
+            type: JVXETypes.normal,
+            align:'center',
+            width: '150px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '鎵规鍙�',
+            key: 'batchNum',
+            type: JVXETypes.normal,
+            width: '200px',
+            align:'center',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '鍒堕�犲晢',
+            key: 'constructorName',
+            type: JVXETypes.normal,
+            align:'center',
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '鍑哄巶鏃ユ湡',
+            key: 'manufactureDate',
+            type: JVXETypes.normal,
+            align:'center',
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+
+          },
+          {
+            title: '鏈夋晥鏃ユ湡',
+            key: 'validityPeriod',
+            type: JVXETypes.normal,
+            align:'center',
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '鎶ュ簾鍘熷洜',
+            key: 'scrapReason',
+            type: JVXETypes.textarea,
+            width: '200px',
+            align:'center',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: '',
+            validateRules: [
+              {
+                required: true,
+                message: '璇疯緭鍏�${title}'
+              }
+            ]
+          },
+          {
+            title: '鍗曚綅',
+            key: 'mainUnitIdName',
+            type: JVXETypes.normal,
+            width: '200px',
+            align:'center',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '鍗曚綅',
+            key: 'mainUnitId',
+            type: JVXETypes.hidden,
+            align:'center',
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+         /*  {
+            title: '杈呭崟浣�',
+            key: 'auxiliaryUnitIdName',
+            type: JVXETypes.normal,
+            align:'center',
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '杈呭崟浣�',
+            key: 'auxiliaryUnitId',
+            align:'center',
+            type: JVXETypes.hidden,
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          }, */
+          {
+            title: '鏁伴噺',
+            key: 'mainQuantity',
+            align:'center',
+            type: JVXETypes.normal,
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+
+       /*    {
+            title: '杈呮暟閲�',
+            key: 'auxiliaryQuantity',
+            type: JVXETypes.normal,
+            align:'center',
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          }, */
+          {
+            title: '澶囦欢id',
+            key: 'sparePartId',
+            type: JVXETypes.hidden,
+            align:'center',
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '澶囦欢搴撳瓨id',
+            key: 'sparePartInventoryId',
+            type: JVXETypes.hidden,
+            width: '200px',
+            align:'center',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '鎶ュ簾鏁伴噺',
+            key: 'scrapMainQuantity',
+            align:'center',
+            type: JVXETypes.inputNumber,
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: 0,
+   /*          formatter({ cellValue, row, column }) {
+              if (cellValue != null) {
+                let conversionRatio = row.conversionRatio
+                console.log(conversionRatio)
+
+                row.scrapAuxiliaryQuantity = Math.abs(cellValue * conversionRatio)
+
+              }
+              return cellValue
+
+            }, */
+            validateRules: [
+              {
+                required: true,
+                // 鑷畾涔夊嚱鏁版牎楠� handler
+                handler({ cellValue, row, column }, callback, target) {
+                  if (cellValue > row.mainQuantity) {
+                    callback(false, '${title}涓嶈兘澶т簬涓绘暟閲�')
+                    // false = 鏈�氳繃锛屽彲浠ヨ窡鑷畾涔夋彁绀�
+                  } else if (cellValue < 0) {
+                    callback(false, '${title}涓嶈兘灏忎簬0')
+                  } else {
+                    callback(true) //
+                  }
+                },
+                message: '${title}榛樿鎻愮ず'
+              }
+            ]
+          },
+          /* {
+            title: '鎶ュ簾杈呮暟閲�',
+            align:'center',
+            key: 'scrapAuxiliaryQuantity',
+            type: JVXETypes.normal,
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          }, */
+          {
+            title: '搴撳尯',
+            align:'center',
+            key: 'warehouseAreaIdName',
+            type: JVXETypes.normal,
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '搴撳尯id',
+            align:'center',
+            key: 'warehouseAreaId',
+            type: JVXETypes.hidden,
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '搴撲綅',
+            align:'center',
+            key: 'warehouseLocationIdName',
+            type: JVXETypes.normal,
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          },
+          {
+            title: '搴撲綅id',
+            align:'center',
+            key: 'warehouseLocationId',
+            type: JVXETypes.hidden,
+            width: '200px',
+            placeholder: '璇疯緭鍏�${title}',
+            defaultValue: ''
+          }
+        ]
+      },
+      url: {
+        add: '/spare/sparePartScrap/add',
+        edit: '/spare/sparePartScrap/edit',
+        getSysDeparts: "/eam/equipment/getSysDeparts",
+        loadOptions: '/sys/sysDepart/loadDepartTreeOptions',
+        queryById: '/spare/sparePartScrap/queryById',
+        getNum: '/eam/sysIdentity/getNumNew',
+        sparesScrapDetail: {
+          list: '/spare/sparePartScrap/querySparesScrapDetailByMainId'
+        }
+      }
+    }
+  },
+  props: {
+    //琛ㄥ崟绂佺敤
+    disabled: {
+      type: Boolean,
+      default: false,
+      required: false
+    }
+  },
+  computed: {
+    formDisabled() {
+      return this.disabled
+    }
+  },
+  mounted() {
+    this.$bus.$on('selectionRows', (data) => {
+      // 澧炲姞閫変腑鐨勮澶囧埌鍒楄〃涓�
+      this.addSelectedEquipments(data)
+
+    })
+  },
+  created() {
+    this.initOptions()
+    this.initNum()
+  },
+  methods: {
+    initNum() {
+      getAction(this.url.getNum, { type: 'SparePart', length: '4' }).then((res) => {
+        if (res.success) {
+          this.model.num = res.message
+
+          /* this.model.setFieldsValue({ num: res.message }); */
+        }
+      })
+    },
+    initOptions() {
+      getAction(this.url.loadOptions).then(res => {
+        if (res.success) {
+          this.treeData = res.result
+        } else {
+          this.$message.warning(res.message)
+        }
+      })
+    },
+    getSysDeparts() {
+      getAction(this.url.getSysDeparts).then((res) => {
+        if (res.success) {
+          this.departs = res.result
+        }
+      })
+    },
+    selectEquipmentList() {
+      let ids = []
+      let tableData = this.$refs.sparesScrapDetail.getTableData()
+
+      let deleteData = this.$refs.sparesScrapDetail.getDeleteData()
+      console.log(tableData)
+      for (let i = 0; i < tableData.length; i++) {
+        ids.push(tableData[i].sparePartInventoryId)
+      }
+      this.$refs.SparesSelectModal.showModals(ids)
+      this.$refs.SparesSelectModal.title = '閫夋嫨澶囦欢'
+      this.$refs.SparesSelectModal.disableSubmit = false
+    },
+
+    addSelectedEquipments(data) {
+      let tableData = this.$refs.sparesScrapDetail.getTableData()
+      var tableStr = JSON.stringify(tableData)
+      const addRows = []
+      for (let i = 0; i < data.length; i++) {
+        var sparesScrapDetail = {}
+        if (tableStr.indexOf(data[i].id) == -1) {
+          debugger
+          sparesScrapDetail = {
+            sparePartInventoryId: data[i].id,
+            sparePartId: data[i].sparePartId,
+            spareNum: data[i].spareNum,
+            spareName: data[i].spareName,
+            model: data[i].model,
+            specification: data[i].specification,
+            mainUnitId: data[i].mainUnitId,
+         /*    auxiliaryUnitId: data[i].auxiliaryUnitId, */
+            mainUnitIdName: data[i].mainUnitId_dictText,
+         /*    auxiliaryUnitIdName: data[i].auxiliaryUnitId_dictText, */
+            mainQuantity: data[i].mainQuantity,
+          /*   auxiliaryQuantity: data[i].auxiliaryQuantity, */
+            scrapMainQuantity: data[i].scrapMainQuantity,
+          /*   scrapAuxiliaryQuantity: data[i].scrapAuxiliaryQuantity, */
+            manufactureDate: data[i].manufactureDate,
+            constructorId: data[i].constructorId,
+            constructorName: data[i].constructorName,
+            batchNum: data[i].batchNum,
+            scrapReason: data[i].scrapReason,
+            validityPeriod: data[i].validityPeriod,
+            conversionRatio: data[i].conversionRatio,
+            warehouseLocationId: data[i].warehouseLocationId,
+            warehouseAreaIdName: data[i].warehouseAreaIdName,
+            warehouseLocationIdName: data[i].warehouseLocationIdName,
+            warehouseAreaId: data[i].warehouseAreaId
+
+          }
+        }
+        addRows.push(sparesScrapDetail)
+      }
+      this.$refs.sparesScrapDetail.pushRows(addRows)
+    },
+
+    addBefore() {
+      this.sparesScrapDetailTable.dataSource = []
+    },
+    getAllTable() {
+      let values = this.tableKeys.map(key => getRefPromise(this, key))
+      return Promise.all(values)
+    },
+    /** 璋冪敤瀹宔dit()鏂规硶涔嬪悗浼氳嚜鍔ㄨ皟鐢ㄦ鏂规硶 */
+    editAfter() {
+      this.$nextTick(() => {
+      })
+      // 鍔犺浇瀛愯〃鏁版嵁
+      if (this.model.id) {
+        let params = { id: this.model.id }
+        this.requestSubTableData(this.url.sparesScrapDetail.list, params, this.sparesScrapDetailTable)
+      }
+    },
+    //鏍¢獙鎵�鏈変竴瀵逛竴瀛愯〃琛ㄥ崟
+    validateSubForm(allValues) {
+      let tableData = this.$refs.sparesScrapDetail.getTableData()
+      if(tableData.length == 0){
+        this.$message.warning("璇锋坊鍔犲姞鎶ュ簾鏄庣粏!");
+        return
+      }
+      return new Promise((resolve, reject) => {
+        Promise.all([]).then(() => {
+          resolve(allValues)
+        }).catch(e => {
+          if (e.error === VALIDATE_FAILED) {
+            // 濡傛灉鏈夋湭閫氳繃琛ㄥ崟楠岃瘉鐨勫瓙琛紝灏辫嚜鍔ㄨ烦杞埌瀹冩墍鍦ㄧ殑tab
+            this.activeKey = e.index == null ? this.activeKey : this.refKeys[e.index]
+          } else {
+            console.error(e)
+          }
+        })
+      })
+    },
+    /** 鏁寸悊鎴恌ormData */
+    classifyIntoFormData(allValues) {
+      let main = Object.assign(this.model, allValues.formValue)
+      return {
+        ...main, // 灞曞紑
+        sparesScrapDetailList: allValues.tablesValue[0].tableData
+      }
+    },
+    validateError(msg) {
+      this.$message.error(msg)
+    },
+    close() {
+      this.visible = false
+      this.$emit('close')
+      this.$refs.form.clearValidate()
+    },
+/*     changeAuxiliaryQuantity(target){
+      console.log(target.columnIndex)
+      let num=target.columnIndex
+      if (target.columnIndex ===num){
+        target.row.scrapAuxiliaryQuantity=Math.abs(target.row.conversionRatio*target.row.scrapMainQuantity)
+      }
+    } */
+  }
+}
+</script>
+
+<style scoped>
+</style>
\ No newline at end of file

--
Gitblit v1.9.3