Houjie
2025-05-26 bac10733d14f935a026ea9c3f8beeb9fd7b5d803
刀具刃磨/  工具盘点/工具报损
已添加1个文件
已修改8个文件
1362 ■■■■ 文件已修改
src/views/flowable/workflow/lossBound/lossBoundHandle.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/stocktakingBound/stocktakingBoundHandle.vue 524 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/lossBound/LossboundList.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/lossBound/modules/LossboundModal.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/requirement/ToolSharpeningList .vue 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/requirement/modules/ToolsModal.vue 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/requirement/modules/ToolsSharpeningModal.vue 355 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/stocktakingBound/ToolsStocktaKingBoundDetail.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tms/stocktakingBound/ToolsStocktakingBoundList.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flowable/workflow/lossBound/lossBoundHandle.vue
@@ -36,13 +36,13 @@
                  <a-row>
                    <a-col :span="span">
                      <a-form-model-item label="报损单单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="outNum">
                        <a-input :disabled="coldisabled" v-model="tableRowRecord.orderCode"></a-input>
                        <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.orderCode"></a-input>
                      </a-form-model-item>
                    </a-col>
                    <a-col :span="span">
                      <a-form-model-item label="报损人" :labelCol="labelCol" :wrapperCol="wrapperCol"
                                         prop="outStorehouseType">
                        <j-dict-select-tag :disabled="coldisabled"
                        <j-dict-select-tag :readOnly="inputReadOnly"
                                           v-model="tableRowRecord.losser" dictCode="sys_user,realname,id"
                                           placeholder="请选择" />
                      </a-form-model-item>
@@ -52,28 +52,28 @@
                    <a-col :span="span">
                      <a-form-model-item label="报损时间" :labelCol="labelCol" :wrapperCol="wrapperCol"
                                         prop="outboundTime">
                        <j-date :disabled="coldisabled" v-model="tableRowRecord.lossTime" :show-time="true"
                        <j-date :readOnly="inputReadOnly" v-model="tableRowRecord.lossTime" :show-time="true"
                                dateFormat="YYYY-MM-DD HH:mm" style="width: 100%" />
                      </a-form-model-item>
                    </a-col>
                    <a-col :span="span">
                      <a-form-model-item label="报损原因" :labelCol="labelCol" :wrapperCol="wrapperCol"
                                         prop="subjectMatter">
                        <a-input :disabled="coldisabled" v-model="tableRowRecord.lossReason"></a-input>
                        <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.lossReason"></a-input>
                      </a-form-model-item>
                    </a-col>
                  </a-row>
                  <a-row>
                    <a-col :span="span">
                      <a-form-model-item label="经手人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="handler">
                        <j-dict-select-tag :disabled="coldisabled"
                        <j-dict-select-tag :readOnly="inputReadOnly"
                                           v-model="tableRowRecord.handler" dictCode="sys_user,realname,id"
                                           placeholder="请选择" />
                      </a-form-model-item>
                    </a-col>
                    <a-col :span="span">
                      <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
                        <a-textarea :disabled="coldisabled" v-model="tableRowRecord.remark" rows="4" />
                        <a-textarea :readOnly="inputReadOnly" v-model="tableRowRecord.remark" rows="4" />
                      </a-form-model-item>
                    </a-col>
                  </a-row>
@@ -119,17 +119,17 @@
          <a-row>
            <a-col ::span="span">
              <a-form-model-item label="申请人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="handler_dictText">
                <a-input :disabled="coldisabled" v-model="tableRowRecord.handler_dictText"></a-input>
                <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.handler_dictText"></a-input>
              </a-form-model-item>
            </a-col>
            <a-col ::span="span">
              <a-form-model-item label="申请时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
                <a-input :disabled="coldisabled" v-model="tableRowRecord.createTime"></a-input>
                <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.createTime"></a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="24" class="btxx">
              <a-form-item label="审批状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-select v-model="assignFileStream.status" placeholder="请选择审批结果">
                <a-select :disabled="disableSubmit" v-model="assignFileStream.status" placeholder="请选择审批结果">
                  <a-select-option value="3">通过</a-select-option>
                  <a-select-option value="4">驳回</a-select-option>
                </a-select>
@@ -137,13 +137,14 @@
            </a-col>
            <a-col :span="24" class="btxx">
              <a-form-model-item label="审批意见" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-textarea v-model="assignFileStream.approvalOpinion" rows="4" placeholder="请输入审批意见" />
                <a-textarea :disabled="disableSubmit" v-model="assignFileStream.approvalOpinion" rows="4"
                            placeholder="请输入审批意见" />
              </a-form-model-item>
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button @click="submitForm">提 äº¤</a-button>
            <a-button :disabled="disableSubmit" @click="submitForm">提交</a-button>
          </div>
        </a-form-model>
      </div>
@@ -174,7 +175,8 @@
      form: this.$form.createForm(this),
      span: 12,
      span1: 8,
      coldisabled: true,
      disableSubmit: false,
      inputReadOnly: true,
      spinning: false,
      tableRowRecord: {},
      assignFileStream: {},
@@ -294,11 +296,11 @@
      visible: false,
      // è¡¨å¤´
      url: {
        queryOutBoundOrder: '/tms/toolsLossBound/queryById',
        queryOutBoundDetailList: '/tms/toolsLossBound/listlossboundDetailByMainId',
        queryLossBoundOrder: '/tms/toolsLossBound/queryById',
        queryLossBoundDetailList: '/tms/toolsLossBound/listlossboundDetailByMainId',
        diagramView: '/assign/flow/diagramView',
        queryHisTaskList: '/assign/flow/queryHisTaskList',
        approve: '/tms/outboundOrder/approval'
        approve: '/tms/toolsLossBound/approval'
      },
      dictOptions: {},
      superFieldList: [],
@@ -384,6 +386,10 @@
      })
    },
    /**
     * èŽ·å–æµç¨‹èŠ‚ç‚¹å’Œæµç¨‹å›¾
     * @param record å¾…办记录信息
     */
    getAllApproveData(item) {
      this.visible = true
      this.loading = true
@@ -394,12 +400,12 @@
          this.hitaskDataSource = res.result
        }
      })
      getAction(this.url.queryOutBoundOrder, { id: item.dataId }).then((res => {
      getAction(this.url.queryLossBoundOrder, { id: item.dataId }).then((res => {
        if (res.success) {
          this.tableRowRecord = res.result
        }
      }))
      getAction(this.url.queryOutBoundDetailList, { lossBoundId: item.dataId }).then(res => {
      getAction(this.url.queryLossBoundDetailList, { lossBoundId: item.dataId }).then(res => {
        if (res.success) {
          this.dataSource = res.result.records
          if (res.result.total) {
src/views/flowable/workflow/stocktakingBound/stocktakingBoundHandle.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,524 @@
<template>
  <a-modal
    :title="title"
    :width="width"
    :visible="visible"
    :footer="null"
    @cancel="handCancel"
  >
    <a-card :bordered="false">
      <div>
        <b>{{ selectShenpiData.description }}</b>
        <br>
        <br>
        <a-tag color="blue">
          å¤„理人 {{ selectShenpiData.assignee_dictText }}
        </a-tag>
        <a-tag color="blue">
          åˆ›å»ºæ—¶é—´ {{ selectShenpiData.createTime }}
        </a-tag>
        <br>
        <br>
        <button @click="fetchAndShowBmp" class="btn-custom">打开流程图</button>
        <div v-if="imageSrc">
          <img :src="imageSrc" alt="Fetched Image" />
        </div>
        <hr class="shallow-hr">
      </div>
      <div>
        <b>盘点详情</b>
        <br>
        <a-form :form="form">
          <a-spin :spinning="spinning">
            <a-tabs default-active-key="1" @change="callback">
              <a-tab-pane key="1" tab="申请基本信息">
                <a-form-model ref="form" :model="tableRowRecord">
                  <a-row>
                    <a-col :span="span">
                      <a-form-model-item label="出库单编号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="outNum">
                        <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.outNum"></a-input>
                      </a-form-model-item>
                    </a-col>
                    <a-col :span="span">
                      <a-form-model-item label="出库类型" :labelCol="labelCol" :wrapperCol="wrapperCol"
                                         prop="outStorehouseType">
                        <j-dict-select-tag :readOnly="inputReadOnly" type="list"
                                           v-model="tableRowRecord.outStorehouseType" dictCode="out_storehouse_type" />
                      </a-form-model-item>
                    </a-col>
                  </a-row>
                  <a-row>
                    <a-col :span="span">
                      <a-form-model-item label="出库时间" :labelCol="labelCol" :wrapperCol="wrapperCol"
                                         prop="outboundTime">
                        <j-date :readOnly="inputReadOnly" v-model="tableRowRecord.outboundTime" :show-time="true"
                                dateFormat="YYYY-MM-DD HH:mm" style="width: 100%" />
                      </a-form-model-item>
                    </a-col>
                    <a-col :span="span">
                      <a-form-model-item label="领用事由" :labelCol="labelCol" :wrapperCol="wrapperCol"
                                         prop="subjectMatter">
                        <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.subjectMatter"></a-input>
                      </a-form-model-item>
                    </a-col>
                  </a-row>
                  <a-row>
                    <a-col :span="span">
                      <a-form-model-item label="经手人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="handler">
                        <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.handler_dictText"></a-input>
                      </a-form-model-item>
                    </a-col>
                    <a-col :span="span">
                      <a-form-model-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark">
                        <a-textarea :readOnly="inputReadOnly" v-model="tableRowRecord.remark" rows="4" />
                      </a-form-model-item>
                    </a-col>
                  </a-row>
                </a-form-model>
              </a-tab-pane>
              <a-tab-pane key="2" tab="盘点明细信息">
                <a-table
                  ref="table"
                  size="middle"
                  bordered
                  rowKey="id"
                  :scroll="{x:'max-content'}"
                  :columns="columns"
                  :dataSource="dataSource"
                  :pagination="ipagination"
                  :loading="loading"
                  :rowSelection="null">
                </a-table>
              </a-tab-pane>
              <a-tab-pane key="3" tab="流程节点">
                <a-timeline>
                  <a-timeline-item v-for="(item,index) in hitaskDataSource" :key="index">
                    <div>
                      <h3 style="font-weight: bold;">{{ item.taskName }}</h3>
                      <div>处理人:{{ item.assignee_dictText }}</div>
                      <div v-if="index !==0">处理时长:{{ item.duration }}</div>
                      <div v-if="item.name !== '提交申请'">处理类型:{{ item.sequenceFlowName }}</div>
                      <div v-if="item.description">处理意见:{{ item.description }}</div>
                    </div>
                  </a-timeline-item>
                </a-timeline>
              </a-tab-pane>
            </a-tabs>
          </a-spin>
        </a-form>
      </div>
      <div v-if="auditVisible">
        <hr class="shallow-hr">
        <br>
        <b>审批详情</b>
        <br>
        <a-form-model ref="form" :model="approveData" :rules="validatorRules" slot="detail">
          <a-row>
            <a-col ::span="span">
              <a-form-model-item label="申请人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="handler_dictText">
                <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.handler_dictText"></a-input>
              </a-form-model-item>
            </a-col>
            <a-col ::span="span">
              <a-form-model-item label="申请时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
                <a-input :readOnly="inputReadOnly" v-model="tableRowRecord.createTime"></a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="24" class="btxx">
              <a-form-item label="审批状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-select :disabled="disableSubmit" v-model="assignFileStream.status" placeholder="请选择审批结果">
                  <a-select-option value="3">通过</a-select-option>
                  <a-select-option value="4">驳回</a-select-option>
                </a-select>
              </a-form-item>
            </a-col>
            <a-col :span="24" class="btxx">
              <a-form-model-item label="审批意见" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-textarea :disabled="disableSubmit" v-model="assignFileStream.approvalOpinion" rows="4"
                            placeholder="请输入审批意见" />
              </a-form-model-item>
            </a-col>
          </a-row>
          <div class="table-operator" style="text-align: right;">
            <a-button @click="handleQueXiaoTask" type="primary" icon="close">取消</a-button>
            <a-button :disabled="disableSubmit" @click="submitForm">提 äº¤</a-button>
          </div>
        </a-form-model>
      </div>
    </a-card>
  </a-modal>
</template>
<script>
import '@assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { downFile, getAction, httpAction } from '@api/manage'
export default {
  name: 'stocktakingBoundHandle',
  mixins: [mixinDevice],
  props: {
    selectShenpiData: {
      type: Object,
      required: true
    }
  },
  data() {
    return {
      form: this.$form.createForm(this),
      span: 12,
      span1: 8,
      inputReadOnly: true,
      spinning: false,
      tableRowRecord: {},
      assignFileStream: {},
      tableDataSource: [],
      usageDataSource: [],
      hitaskDataSource: [],
      dataSource: [],
      bomForm: {},
      imageSrc: null,
      drawerVisible: true,
      auditVisible: true,
      disableSubmit: false,
      loading: false,
      labelCol: {
        xs: { span: 24 },
        sm: { span: 5 }
      },
      wrapperCol: {
        xs: { span: 30 },
        sm: { span: 16 }
      },
      /* åˆ†é¡µå‚æ•° */
      ipagination: {
        current: 1,
        pageSize: 5,
        pageSizeOptions: ['5', '10', '50'],
        showTotal: (total, range) => {
          return range[0] + '-' + range[1] + ' å…±' + total + '条'
        },
        showQuickJumper: true,
        showSizeChanger: true,
        total: 0
      },
      columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          width: 60,
          align: 'center',
          customRender: function(t, r, index) {
            return parseInt(index) + 1
          }
        },
        {
          title: '刀具编号',
          dataIndex: 'toolCode',
          align: 'center'
        },
        {
          title: '工具类型',
          dataIndex: 'applicationType_dictText',
          align: 'center'
        },
        {
          title: '中文名称',
          dataIndex: 'chineseName',
          align: 'center'
        },
        {
          title: '型号/图号',
          dataIndex: 'toolModel',
          align: 'center'
        },
        {
          title: '刀具材料',
          dataIndex: 'toolMaterial',
          align: 'center'
        },
        {
          title: '零件材料',
          dataIndex: 'partMaterial',
          align: 'center'
        },
        {
          title: '厂家',
          dataIndex: 'supplierId',
          align: 'center'
        },
        {
          title: '存储位置(库位号)',
          dataIndex: 'goodsShelvesId',
          align: 'center'
        },
        {
          title: '账面数量',
          dataIndex: 'bookQuantity',
          align: 'center'
        },
        {
          title: '可用数量',
          dataIndex: 'availableQuantity',
          align: 'center'
        },
        {
          title: '实盘数量',
          dataIndex: 'practicalQuantity',
          align: 'center'
        },
        {
          title: '差异值',
          dataIndex: 'differenceValue',
          align: 'center'
        },
        {
          title: '盘亏盘盈',
          dataIndex: 'surplusDeficit_dictText',
          align: 'center'
        },
        {
          title: '盘库时间',
          dataIndex: 'stocktakingDate',
          align: 'center'
        },
        {
          title: '备注',
          dataIndex: 'remark',
          align: 'center'
        }
      ],
      validatorRules: {
        status: {
          rules: [
            { required: true, message: '请选择审批状态!' }
          ]
        }
      },
      approveData: {},
      flowData: {},
      title: '审批页面',
      width: 1200,
      visible: false,
      // è¡¨å¤´
      url: {
        queryStocktakingBoundOrder: '/tms/toolsStocktakingBound/queryById',
        queryStocktakingBoundDetailList: '/tms/toolsStocktakingBound/listToolsStocktakingBoundControllerDetailsByMainId',
        diagramView: '/assign/flow/diagramView',
        queryHisTaskList: '/assign/flow/queryHisTaskList',
        approve: '/tms/toolsStocktakingBound/approval'
      },
      dictOptions: {},
      superFieldList: [],
      workflowSource: []
    }
  },
  created() {
  },
  computed: {},
  methods: {
    callback() {
    },
    handCancel() {
      this.visible = false
    },
    clearTableSource() {
      this.tableDataSource = []
      this.usageDataSource = []
    },
    fetchAndShowBmp() {
      console.log('flowData----->', this.flowData)
      try {
        let parm = {
          processDefinitionId: this.flowData.processDefinitionId,
          processInstanceId: this.flowData.processInstanceId,
          TaskDefinitionKey: this.flowData.processDefinitionKey
        }
        downFile(this.url.diagramView, parm, 'get').then((res => {
          console.log('Pica------>', res)
          const urlObject = window.URL.createObjectURL(new Blob([res]))
          this.imageSrc = urlObject
        }))
      } catch (error) {
        console.error('Error fetching image blob:', error)
        alert('无法加载图片,请稍后再试。')
      }
    },
    handleQueXiaoTask() {
      this.visible = false
      this.routeReload()
    },
    submitForm() {
      const that = this
      if (!that.assignFileStream.status == null || that.assignFileStream.status === undefined) {
        this.$message.warning('请选择审批状态!')
        return false
      }
      if (!that.assignFileStream.approvalOpinion == null || that.assignFileStream.approvalOpinion === undefined) {
        this.$message.warning('请输入审批意见!')
        return false
      }
      // è§¦å‘表单验证
      this.form.validateFields((err, values) => {
        if (!err) {
          that.confirmLoading = true
          let url = this.url.approve
          let method = 'post'
          let flowTaskVo = {}
          flowTaskVo.status = that.assignFileStream.status
          flowTaskVo.approvalOpinion = that.assignFileStream.approvalOpinion
          flowTaskVo.comment = that.assignFileStream.approvalOpinion
          flowTaskVo.dataId = this.selectShenpiData.dataId
          flowTaskVo.taskId = this.selectShenpiData.id
          flowTaskVo.userId = this.selectShenpiData.assignee
          flowTaskVo.instanceId = this.selectShenpiData.procInstId
          flowTaskVo.targetKey = this.selectShenpiData.taskDefKey
          flowTaskVo.values = this.selectShenpiData.variables
          flowTaskVo.assignee = this.selectShenpiData.assignee
          console.log('表单提交数据', flowTaskVo)
          httpAction(url, flowTaskVo, method).then((res) => {
            if (res.success) {
              that.$message.success(res.message)
              that.visible = false
              //刷新表格
              that.$emit('searchReset')
            } else {
              that.$message.warning(res.message)
            }
          }).finally(() => {
            that.confirmLoading = false
          })
        }
      })
    },
    /**
     * èŽ·å–æµç¨‹èŠ‚ç‚¹å’Œæµç¨‹å›¾
     * @param record å¾…办记录信息
     */
    getAllApproveData(item) {
      this.visible = true
      this.loading = true
      console.log('selectShenpiData----->', this.selectShenpiData)
      this.flowData = item
      getAction(this.url.queryHisTaskList, { procInstId: item.procInstId }).then(res => {
        if (res.success) {
          this.hitaskDataSource = res.result
        }
      })
      getAction(this.url.queryStocktakingBoundOrder, { id: item.dataId }).then((res => {
        if (res.success) {
          this.tableRowRecord = res.result
        }
      }))
      getAction(this.url.queryStocktakingBoundDetailList, { stocktakingBoundId: item.dataId }).then(res => {
        if (res.success) {
          this.dataSource = res.result.records
          if (res.result.total) {
            this.ipagination.total = res.result.total
          } else {
            this.ipagination.total = 0
          }
        } else {
          this.$message.warning(res.message)
        }
      }).finally(() => {
        this.loading = false
      })
    }
  }
}
</script>
<style scoped>
.shallow-hr {
  border: 0;
  height: 1px; /* åˆ†ç•Œçº¿çš„高度 */
  background-color: rgba(0, 0, 0, 0.1); /* ä½¿ç”¨ RGBA é¢œè‰²ï¼Œå¹¶è®¾ç½®è¾ƒä½Žçš„透明度 */
  margin: 20px 0; /* åˆ†ç•Œçº¿ä¸Šä¸‹çš„外边距 */
}
.btn-custom {
  background-color: #4CAF50; /* ç»¿è‰²èƒŒæ™¯ */
  color: white; /* ç™½è‰²æ–‡å­— */
  border: none; /* æ— è¾¹æ¡† */
  padding: 5px 15px; /* å†…边距 */
  text-align: center; /* æ–‡å­—居中 */
  text-decoration: none; /* æ— ä¸‹åˆ’线 */
  display: inline-block; /* è¡Œå†…块元素 */
  font-size: 12px; /* å­—体大小 */
  margin: 4px 2px; /* å¤–边距 */
  cursor: pointer; /* é¼ æ ‡æ‚¬åœæ—¶æ˜¾ç¤ºæ‰‹åž‹ */
  border-radius: 4px; /* åœ†è§’边框 */
}
.bold-large-label {
  font-weight: bold;
  font-size: 20px; /* æˆ–你需要的任何大小 */
}
.left_qiu {
  position: absolute;
  left: -74px;
  top: 0;
  width: 54px;
  border-radius: 50%;
  height: 54px;
  font-size: 13px;
  margin: auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  background: #0099ff;
  transform: translate(0, 0);
}
/deep/ .ant-timeline-item-tail {
  left: -29px !important;
}
.left_qiu span {
  width: 3em;
  display: block;
  color: #fff;
  text-align: center;
}
.img {
  width: 75%;
}
.wrap {
  clear: both;
  width: 100%;
  display: flex;
  height: 50px;
  border: 1px solid #ccc;
  /* background-color: aqua; */
}
.box {
  width: 21%;
  height: 50px;
  border-right: 1px solid #ccc;
  line-height: 50px;
  /* background: red; */
  text-align: center;
  margin: auto;
}
@import '~@assets/less/common.less';
</style>
src/views/tms/lossBound/LossboundList.vue
@@ -6,7 +6,7 @@
        <a-row :gutter="24">
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-item label="报损单单号">
              <a-input placeholder="请输入报损单单号" v-model="queryParam.orderCode"></a-input>
              <j-input placeholder="请输入报损单单号"    v-model="queryParam.orderCode"></j-input>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -19,10 +19,10 @@
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
              <a @click="handleToggleSearch" style="margin-left: 8px">
                {{ toggleSearchStatus ? '收起' : '展开' }}
                <a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
              </a>
<!--              <a @click="handleToggleSearch" style="margin-left: 8px">-->
<!--                {{ toggleSearchStatus ? '收起' : '展开' }}-->
<!--                <a-icon :type="toggleSearchStatus ? 'up' : 'down'" />-->
<!--              </a>-->
            </span>
          </a-col>
        </a-row>
@@ -190,6 +190,16 @@
    }
  },
  methods: {
    // handleEdit: function (record) {
    //   this.$refs.modalForm.edit(record);
    //   this.$refs.modalForm.title = "编辑";
    //   this.$refs.modalForm.disableSubmit = false;
    // },
    // handleAdd: function () {
    //   this.$refs.modalForm.add();
    //   this.$refs.modalForm.title = "新增";
    //   this.$refs.modalForm.disableSubmit = false;
    // },
    modalFormOk() {
      this.$refs.lossboundDetailList.clearList()
      this.loadData()
src/views/tms/lossBound/modules/LossboundModal.vue
@@ -13,7 +13,7 @@
        <a-row>
          <a-col :span="12">
            <a-form-model-item label="报损单单号" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderCode">
              <a-input v-model="model.orderCode" placeholder="系统自动生成" :disabled="true"></a-input>
              <j-input v-model="model.orderCode" placeholder="系统自动生成" :disabled="true"></j-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="12">
@@ -28,7 +28,7 @@
          <a-col :span="12">
            <a-form-model-item label="报损时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="lossTime">
              <j-date placeholder="请选择报损时间" date-format="YYYY-MM-DD HH:mm:ss" v-model="model.lossTime"
              <j-date placeholder="请选择报损时间" :disabled="disableSubmit" date-format="YYYY-MM-DD HH:mm:ss" v-model="model.lossTime"
                      style="width: 100%" />
            </a-form-model-item>
          </a-col>
@@ -66,7 +66,7 @@
            <a-form-model-item v-if="addShow" label="审核时间" :labelCol="labelCol" :wrapperCol="wrapperCol"
                               prop="approvalDate">
              <j-date placeholder="请选择审核时间" date-format="YYYY-MM-DD HH:mm:ss" v-model="model.approvalDate"
              <j-date placeholder="请选择审核时间"  :disabled="disableSubmit" date-format="YYYY-MM-DD HH:mm:ss" v-model="model.approvalDate"
                      style="width: 100%" />
            </a-form-model-item>
          </a-col>
@@ -96,7 +96,7 @@
      </a-form-model>
    </a-spin>
    <a-button type="primary" :style="{ marginBottom: '8px' }" @click="selectTools">
    <a-button type="primary" :style="{ marginBottom: '8px' }"  :disabled="disableSubmit" @click="selectTools">
      é€‰æ‹©å·¥å…·
    </a-button>
    <a-table
@@ -355,27 +355,34 @@
    },
    add() {
      this.addShow = false
      this.edit()
      this.edit({}) // ä¼ å…¥ç©ºå¯¹è±¡ä½œä¸ºé»˜è®¤å€¼
      this.dataSource = []
    },
    edit(record) {
      console.log(record)
      this.model = Object.assign({}, record)
      this.visible = true
      getAction(this.url.list, {
        lossBoundId: record.id,
        pageNo: 1,
        pageSize: 99999
      }).then((res) => {
        if (res.success) {
          console.log(res.result.records)
          this.dataSource = res.result.records
        } else {
          this.dataSource = null
        }
      })
      if (record && record.id) {
        this.model = Object.assign({}, record)
        this.visible = true
        getAction(this.url.list, {
          lossBoundId: record.id,
          pageNo: 1,
          pageSize: 99999
        }).then((res) => {
          if (res.success) {
            console.log(res.result.records)
            this.dataSource = res.result.records
          } else {
            this.dataSource = null
          }
        })
      } else {
        this.model = {} // å¦‚果是新增模式,则初始化 model
        this.visible = true
        this.dataSource = [] // æ¸…空数据源
      }
    },
    close() {
      this.$emit('close')
      this.addShow = true
src/views/tms/requirement/ToolSharpeningList .vue
@@ -6,12 +6,12 @@
        <a-row :gutter="24">
          <a-col :xl="4" :lg="7" :md="8" :sm="24">
            <a-form-item label="刀具名称">
              <a-input placeholder="请输入刀具名称" v-model="queryParam.toolName"></a-input>
              <j-input placeholder="请输入刀具名称" v-model="queryParam.toolName"></j-input>
            </a-form-item>
          </a-col>
          <a-col :xl="4" :lg="7" :md="8" :sm="24">
            <a-form-item label="刃磨结果">
              <a-input placeholder="请输入刃磨结果" v-model="queryParam.grindingResult"></a-input>
              <j-input placeholder="请输入刃磨结果" v-model="queryParam.grindingResult"></j-input>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -79,7 +79,7 @@
      </a-table>
    </div>
    <tools-sharpening-modal ref="modalForm" :treeSelected="treeSelected" @ok="modalFormOk"></tools-sharpening-modal>
    <tools-sharpening-modal ref="modalForm"  @ok="modalFormOk"></tools-sharpening-modal>
  </a-card>
</template>
@@ -115,48 +115,38 @@
        {
          title:'刀具分类',
          align:"center",
          dataIndex: 'warehouseId'
          dataIndex: 'paramaTableName_dictText'
        },
        {
          title:'刀具编号',
          align:"center",
          dataIndex: 'warehouseName'
          dataIndex: 'toolId'
        },
        {
          title:'刀具名称',
          align:"center",
          dataIndex: 'warehouseName'
        },
        {
          title:'刀具材料',
          align:"center",
          dataIndex: 'parentWarehouseName',
        },
        {
          title:'厂家',
          align:"center",
          dataIndex: 'status',
        },
        {
          title:'零件材料',
          align:"center",
          dataIndex: 'remark'
          dataIndex: 'typeName'
        },
        {
          title:'厂家',
          align:"center",
          dataIndex: 'supplierId',
        },
        {
          title:'刃磨时间',
          align:"center",
          dataIndex: 'createBy'
          dataIndex: 'sharpeningTime'
        },
        {
          title:'刃磨结果及建议',
          align:"center",
          dataIndex: 'createBy'
          dataIndex: 'sharpeningResult'
        },
        {
          title:'责任人',
          align:"center",
          dataIndex: 'createBy'
          dataIndex: 'responsiblePerson_dictText'
        },
        {
@@ -180,7 +170,8 @@
        }
      ],
      url: {
        list: "/tms/toolSharpening/list",
        list: "/tms/toolSharpening/listToolSharpening",
        add: "/tms/toolSharpening/add",
        delete: "/tms/toolSharpening/delete",
        edit: "/tms/toolSharpening/edit",
        deleteBatch: "/tms/toolSharpening/deleteBatch",
@@ -190,104 +181,62 @@
      },
      dictOptions:{},
      superFieldList:[],
      treeSelected: {},
    }
  },
  created() {
    this.getSuperFieldList();
  },
  created() {},
  computed: {
    importExcelUrl: function(){
      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
    },
    addFlag: function(){
      return !(this.treeSelected.key && this.treeSelected.entity.leafFlag === '2');
    }
  },
  mounted() {
    this.handleGetCurrSelected = (data) => {
      this.treeSelected = data;
      this.queryParam.parentId = data.key;
      this.loadData();
    }
    this.$bus.$on('getCurrSelected', this.handleGetCurrSelected);
  },
  beforeDestroy() {
    this.$bus.$off('getCurrSelected', this.handleGetCurrSelected);
  },
  methods: {
    handleStatus(record) {
      getAction(this.url.list, { parentId: record.id }).then((res) => {
        if (res.success) {
          if (res.result.total > 0) {
            this.$message.warning('该节点下存在子节点,不能变更状态!')
          } else {
            const params = {
              id: record.id,
              status: record.status === '1' ? '2' : '1'
            }
            putAction(this.url.edit, params).then((res) => {
              if (res.success) {
                this.$message.success(res.message)
                this.loadData()
              } else {
                this.$message.warning(res.message)
              }
            })
          }
        } else {
          this.$message.warning(res.message);
        }
      });
    onInspectionDateChange: function(value, dateString) {
      this.queryParam.inspectionDateBegin = dateString[0]
      this.queryParam.inspectionDateEnd = dateString[1]
    },
    handleEdit: function (record) {
      console.log('record:', record)
      this.$refs.modalForm.title = '编辑'
      this.$refs.modalForm.disableSubmit = false
      this.$refs.modalForm.edit(record)
    },
    handleDelete(id) {
      getAction(this.url.list, { parentId: id }).then((res) => {
    handleDetail:function(record){
      this.$refs.modalForm.title="详情";
      this.$refs.modalForm.disableSubmit = true;
      this.$refs.modalForm.edit(record);
    },
    handleDelete: function (id) {
      if (!this.url.delete) {
        this.$message.error('请设置url.delete属性!')
        return
      }
      deleteAction(this.url.delete, { id: id }).then((res) => {
        if (res.success) {
          if (res.result.total > 0) {
            this.$message.warning('请先删除子节点');
          } else {
            deleteAction(this.url.delete, {id: id}).then((res) => {
              if (res.success) {
                //重新计算分页问题
                this.loadData()
                this.$message.success(res.message);
                this.$bus.$emit('queryTreeData')
              } else {
                this.$message.warning(res.message);
              }
            });
          }
          //重新计算分页问题
          this.reCalculatePage(1)
          this.$message.success(res.message)
          this.$refs.toolStockingBoundDetail.dataSource = []
          this.loadData()
        } else {
          this.$message.warning(res.message);
          this.$message.warning(res.message)
        }
      })
    },
    searchReset() {
      this.queryParam = {
        parentId: this.treeSelected.key
      }
      this.loadData(1)
    },
    modalFormOk() {
      this.loadData()
      this.$bus.$emit('queryTreeData')
    },
    initDictConfig(){
    },
    getSuperFieldList(){
      let fieldList=[];
      fieldList.push({type:'string',value:'toolId',text:'工具编号',dictCode:''})
      fieldList.push({type:'string',value:'warehouseName',text:'仓库名称',dictCode:''})
      fieldList.push({type:'string',value:'parentId',text:'父节点编号',dictCode:''})
      fieldList.push({type:'string',value:'seq',text:'展示序号',dictCode:''})
      fieldList.push({type:'string',value:'leafFlag',text:'是否叶子节点(1是;2否)',dictCode:''})
      fieldList.push({type:'string',value:'status',text:'状态(1启用;2停用)',dictCode:''})
      fieldList.push({type:'string',value:'remark',text:'备注',dictCode:''})
      fieldList.push({type:'string',value:'createBy',text:'创建人',dictCode:''})
      fieldList.push({type:'date',value:'createTime',text:'创建时间'})
      this.superFieldList = fieldList
    }
  }
}
</script>
src/views/tms/requirement/modules/ToolsModal.vue
@@ -0,0 +1,221 @@
<template>
  <a-modal :title="title" :width="1000" :visible="visible" :maskClosable="false" @ok="handleOk" @cancel="handleCancel"
           cancelText="关闭">
    <a-card :bordered="false">
      <!-- æŸ¥è¯¢åŒºåŸŸ -->
      <div class="table-page-search-wrapper">
        <a-form layout="inline" @keyup.enter.native="searchQuery">
          <a-row :gutter="24">
            <a-col :md="7" :sm="7">
              <a-form-item label="工具编码">
                <a-input placeholder="请输入工具编码检索" v-model="queryParam.equipmentid"></a-input>
              </a-form-item>
            </a-col>
            <a-col :md="3" :sm="3">
              <a-space>
                <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
                <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
              </a-space>
            </a-col>
          </a-row>
        </a-form>
      </div>
      <!-- table区域-begin -->
      <div>
        <a-table ref="table" size="middle" bordered rowKey="id" :scroll="{  y: 300 }" :columns="columns"
                 :dataSource="dataSource" :pagination="ipagination" :loading="loading"
                 :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type:'radio'}"
                 @change="handleTableChange">
        </a-table>
      </div>
      <!-- table区域-end -->
    </a-card>
  </a-modal>
</template>
<script>
import JDictSelectTag from '@/components/dict/JDictSelectTag'
import { getAction } from '@/api/manage'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import JInput from '@/components/jeecg/JInput'
import JEllipsis from '@/components/jeecg/JEllipsis'
import Tooltip from 'ant-design-vue/es/tooltip'
import JDate from '@/components/jeecg/JDate'
import { filterObj } from '@/utils/util'
export default {
  name: 'ToolsModal',
  mixins: [JeecgListMixin],
  components: {
    JDictSelectTag,
    JEllipsis,
    JInput,
    Tooltip,
    JDate
  },
  props: {
    status: {
      type: Number,
      default: 1
    }
  },
  data() {
    return {
      disableSubmit:false,
      title: '',
      visible: false,
      disableMixinCreated: true,
      queryParam: {},
      columns: [{
        title: '工具编码',
        align: 'center',
        dataIndex: 'toolCode'
      },
        {
          title: '工具类型',
          align: 'center',
          dataIndex: 'applicationType_dictText'
        },
        {
          title: '工具编号',
          align: 'center',
          dataIndex: 'toolId'
        },
        {
          title: '中文名称',
          align: 'center',
          dataIndex: 'chineseName'
        },
        {
          title: '工具参数标识',
          align: 'center',
          dataIndex: 'paramaTableName'
        },
        {
          title: '型号/图号',
          align: 'center',
          dataIndex: 'toolModel'
        },
        {
          title: '主计量单位',
          align: 'center',
          dataIndex: 'mainUnit'
        }
      ],
      url: {
        list: '/tms/baseTools/listWithSharpedAndConfig'
      }
    }
  },
  created() {
  },
  methods: {
    showModals() {
      this.selectedRowKeys = []
      this.visible = true
      this.loadData(1)
    },
    getQueryParams() {
      //获取查询条件
      let sqp = {}
      if (this.superQueryParams) {
        sqp['superQueryParams'] = encodeURI(this.superQueryParams)
        sqp['superQueryMatchType'] = this.superQueryMatchType
      }
      var param = Object.assign(sqp, this.queryParam)
      // param.field = this.getQueryField();
      param.pageNo = this.ipagination.current
      param.pageSize = this.ipagination.pageSize
      return filterObj(param)
    },
    loadData(arg) {
      if (!this.url.list) {
        this.$message.error('请设置url.list属性!')
        return
      }
      //加载数据 è‹¥ä¼ å…¥å‚æ•°1则加载第一页的内容
      if (arg === 1) {
        this.ipagination.current = 1
      }
      var params = this.getQueryParams()//查询条件
      if (!params) {
        return false
      }
      this.loading = true
      getAction(this.url.list, params).then((res) => {
        if (res.success) {
          this.dataSource = res.result.records || res.result
          if (res.result.total) {
            this.ipagination.total = res.result.total
          } else {
            this.ipagination.total = 0
          }
        } else {
          // this.$message.warning(res.message)
          this.$notification.warning({
            message: '消息',
            description: res.message
          })
        }
      }).finally(() => {
        this.loading = false
      })
    },
    getQueryField() {
      //TODO å­—段权限控制
      // var str = "";
      // this.columns.forEach(function (value) {
      //   str +=  value.dataIndex +"," ;
      // });
      // return str;
    },
    modalFormOk(val) {
      // æ–°å¢ž/修改 æˆåŠŸæ—¶ï¼Œé‡è½½åˆ—è¡¨
      this.loadData()
      this.selectedRowKeys = [val.id]
    },
    searchQuery() {
      this.loadData()
      this.onClearSelected()
    },
    searchReset() {
      this.queryParam = {}
      this.loadData()
      this.onClearSelected()
    },
    close() {
      this.$emit('close')
      this.visible = false
    },
    handleCancel() {
      this.close()
    },
    handleOk() {
      this.$bus.$emit('selectionRows', this.selectionRows)
      this.close()
    },
  }
}
</script>
<style>
@import '~@assets/less/common.less';
.frozenRowClass {
  color: #c9c9c9;
}
.success {
  color: green;
}
.error {
  color: red;
}
</style>
src/views/tms/requirement/modules/ToolsSharpeningModal.vue
@@ -2,10 +2,10 @@
  <j-modal
    :title="title"
    :width="1200"
    :visible="visible"
    :confirmLoading="confirmLoading"
    switchFullscreen
    centered
    :visible="visible"
    :mask-closable="false"
    @ok="handleOk"
    @cancel="handleCancel"
@@ -14,113 +14,122 @@
    <a-spin :spinning="spinning">
      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
        <a-row :gutter="24">
          <a-col :span="8">
          <a-col :span="12">
            <a-form-model-item prop="standardCode" label="工具编号">
              <a-input-search v-model="model.toolsId"  placeholder="请选择工具编号"  :disabled="disableSubmit" @search="onSearchPart" enter-button
              <a-input-search v-model="model.toolId" placeholder="请选择工具编号" :disabled="disableSubmit"
                              @search="selectTools" enter-button
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="10">
            <a-form-model-item prop="equipmentId" label="工具分类名称">
              <a-input placeholder="请输入工具分类名称" v-model="model.typeName" readOnly/>
          <a-col :span="12">
            <a-form-model-item prop="classify_id" label="工具分类编码">
              <a-input placeholder="请输入工具分类名称" v-model="model.classifyId" readOnly :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="8">
            <a-form-model-item prop="standardCode" label="工具参数标识">
              <a-input placeholder="选择设备后自动带出" readOnly v-model="model.paraTypeFlagName" readOnly/>
          <a-col :span="12">
            <a-form-model-item prop="paramaTableName" label="工具参数标识">
              <a-input placeholder="选择设备后自动带出" readOnly v-model="model.paramaTableName" readOnly
                       :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
          <a-col :span="8">
          <a-col :span="12">
            <a-form-model-item label="工具类型">
              <a-input placeholder="选择设备后自动带出" v-model="model.applicationType" readOnly/>
              <a-input placeholder="选择设备后自动带出" v-model="model.applicationType" readOnly
                       :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="8">
          <a-col :span="12">
            <a-form-model-item prop="operator" label="责任人">
              <j-dict-select-tag type="list" v-model="model.reportPerson" dictCode="sys_user,realname,id" placeholder="请选择报工人员" />
              <j-dict-select-tag type="list" v-model="model.responsiblePerson" dictCode="sys_user,realname,id"
                                 placeholder="请选择责任人" :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
          <a-col :span="8">
            <a-form-model-item prop="standardName" label="工具分类编码">
              <a-input placeholder="选择设备后自动带出" readOnly v-model="model.classifyId" readOnly/>
          <a-col :span="12">
            <a-form-model-item label="刃磨时间" prop="sharpeningTime">
              <j-date placeholder="请选择刃磨时间" date-format="YYYY-MM-DD HH:mm:ss" v-model="model.sharpeningTime"
                      style="width: 100%" :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="8">
            <a-form-model-item label="结果及建议" prop="inspectionDate">
              <a-input placeholder="选择填写刃磨结果及建议"  v-model="model.sharpeningResult" readOnly/>
          <a-col :span="12">
            <a-form-model-item label="刃磨结果及建议" prop="sharpeningResult">
              <a-textarea placeholder="选择填写刃磨结果及建议" v-model="model.sharpeningResult"
                          :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
          <a-col :span="6">
          <a-col :span="12">
            <a-form-model-item label="型号/图号">
              <j-date placeholder="选择填写型号/图号" v-model="model.toolModel" disabled style="width: 100%"/>
              <a-input placeholder="选择填写型号/图号" v-model="model.toolModel" :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="8">
          <a-col :span="12">
            <a-form-model-item label="仓库城市" prop="inspectionDate">
              <a-input placeholder="选择填写仓库省份城市"  v-model="model.provinceCity" readOnly/>
              <a-input placeholder="选择填写仓库省份城市" v-model="model.provinceCity" readOnly
                       :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
          <a-col :span="8">
          <a-col :span="12">
            <a-form-model-item label="库区/库号">
              <j-date placeholder="选择填写库区/库号" v-model="model.warehouseId" disabled style="width: 100%"/>
              <a-input placeholder="选择填写库区/库号" v-model="model.warehouseId" readOnly :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="8">
            <a-form-model-item label="存储位置" prop="inspectionDate">
              <a-input placeholder="选择填写存储位置"  v-model="model.storageLocation" readOnly/>
          <a-col :span="12">
            <a-form-model-item label="存储位置" prop="storageLocation">
              <a-input placeholder="选择填写存储位置" v-model="model.positionCode" readOnly
                       :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
          <a-col :span="8">
          <a-col :span="12">
            <a-form-model-item label="计量主单位">
              <j-date placeholder="请填写计量主单位" v-model="model.mainUnit" disabled style="width: 100%"/>
              <a-input placeholder="请填写计量主单位" v-model="model.mainUnit" readOnly :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="8">
            <a-form-model-item label="刃磨时间" prop="inspectionDate">
              <j-date placeholder="请选择打印时间" v-model="model.sharpeningTime"  style="width: 100%" />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="24">
            <a-form-model-item label="备注" :labelCol="{span:2}" :wrapperCol="{span:21}" prop="remark">
              <a-textarea v-model="model.remark" rows="3" placeholder="请输入备注"/>
              <a-textarea v-model="model.remark" rows="3" placeholder="请输入备注" :disabled="disableSubmit" />
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </a-spin>
    <template slot="footer">
      <a-button :style="{ marginRight: '8px' }" @click="handleCancel()">
        å…³é—­
      </a-button>
      <a-button @click="handleOk()" :disabled="disableSubmit" type="primary" :loading="confirmLoading">确定</a-button>
    </template>
    <tools-modal ref="toolListModel"></tools-modal>
  </j-modal>
</template>
<script>
import { getAction, httpAction } from '@/api/manage'
import { getAction, httpAction, postAction, requestPut } from '@/api/manage'
import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js'
import { JVXETypes } from '@/components/jeecg/JVxeTable'
import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect'
import moment from 'dayjs'
import ToolsModal from '@views/tms/requirement/modules/ToolsModal.vue'
export default {
  name: 'ToolsSharpeningModal',
  mixins: [JVxeTableModelMixin],
  components: {
    MaintenanceEquipmentSelect
    ToolsModal
  },
  data() {
    return {
@@ -138,123 +147,99 @@
      confirmLoading: false,
      spinning: false,
      disabled: false,
      disableSubmit: false,
      validatorRules: {
        // standardName: [
        //   { required: true, message: '请输入标准名称!' }
        // ],
        inspectionDate: [
          { required: true, message: '请选择点检日期!' }
        sharpeningTime: [
          { required: true, message: '请选择刃磨日期!' }
        ],
        // maintenancePeriod: [
        //   { required: true, message: '请输入保养周期,单位:天!' }
        // ],
        equipmentId: [
          { required: true, message: '请选择设备!' }
        responsibleRerson: [
          { required: true, message: '请选择责任人!' }
        ],
        sharpeningResult: [
          { required: true, message: '请输入刃磨结果及建议!' }
        ],
        responsiblePerson: [
          { required: true, message: '请选择责任人!' }
        ]
      },
      url: {
        add: '/eam/eamInspectionOrder/add',
        edit: '/eam/eamInspectionOrder/edit',
        detail: '/eam/eamMaintenanceStandardDetail/queryList',
        detailOrder: '/eam/eamInspectionOrderDetail/queryList',
        userSelect: '/eam/user_select/list'
      },
      maintenanceCategory: 'POINT_INSPECTION',
      maintenanceOperatorOptions: [],
      standardId: '',
      standardType: false,
      detail: {
        loading: false,
        dataSource: [],
        columns: [
          {
            title: '序号',
            key: 'itemCode',
            type: JVXETypes.inputNumber,
            width: '10%',
            align: 'center',
            validateRules: [
              { required: true, unique: true, message: '序号不能重复' }
            ]
          },
          {
            title: '保养项',
            key: 'itemName',
            type: JVXETypes.textarea,
            width: '20%',
            align: 'center',
            validateRules: [
              { required: true, message: '保养项不能为空!' }
            ]
          },
          {
            title: '保养要求',
            key: 'itemDemand',
            type: JVXETypes.textarea,
            width: '30%',
            align: 'center',
            validateRules: [
              { required: true, message: '保养要求不能为空!' }
            ]
          }
        ]
        add: '/tms/toolSharpening/add',
        edit: '/tms/toolSharpening/edit',
        queryDetailList: '/tms/toolSharpening/listToolSharpening'
      }
    }
  },
  created() {
  },
  mounted() {
    this.$bus.$on('selectionRows', (data) => {
      console.log('selectionRows', data)
      if (data && data.length > 0) {
        const item = data[0]
        // ä½¿ç”¨ $set ç¡®ä¿ model çš„属性是响应式的
        this.$set(this.model, 'toolId', item.toolCode)
        this.$set(this.model, 'toolCode', item.id)
        this.$set(this.model, 'classifyId', item.classifyId)
        this.$set(this.model, 'paramaTableName', item.paramaTableName_dictText)
        this.$set(this.model, 'applicationType', item.applicationType_dictText)
        this.$set(this.model, 'toolModel', item.toolModel)
        this.$set(this.model, 'provinceCity', item.provinceCity)
        this.$set(this.model, 'warehouseId', item.warehouseId)
        this.$set(this.model, 'positionCode', item.positionCode)
        this.$set(this.model, 'mainUnit', item.mainUnit)
      }
    })
  },
  methods: {
    selectTools: function() {
      this.$refs.toolListModel.showModals()
      this.$refs.toolListModel.title = '选择工具信息'
      this.$refs.toolListModel.disableSubmit = false
    },
    add() {
      this.model = {}
      this.detail.dataSource = []
      this.visible = true
      this.disabled = false
      this.standardType = false
      this.addShow = false
      this.edit()
    },
    edit(record) {
      console.log(record)
      this.model = Object.assign({}, record)
      this.standardId = record.standardId
      this.disabled = true
      this.standardType = true
      this.visible = true
      this.detail.dataSource = []
      if (record && record.referenceFile) {
        let obj = JSON.parse(record.referenceFile)
        this.model.fileList = [obj]
      } else {
        this.model.fieldList = []
      }
      this.loadDetailOrder(record.id)
      getAction(this.url.queryDetailList, {
        id: record.id,
        pageNo: 1,
        pageSize: 99999
      }).then((res) => {
        if (res.success) {
          console.log(res.result.records)
          this.dataSource = res.result.records
        } else {
          this.dataSource = null
        }
      })
    },
    async handleOk() {
    handleOk() {
      const that = this
      let errMap = await that.$refs.editableDetailTable.validateTable()
      if (errMap) {
        this.$message.warning('数据校验失败!')
        return
      }
      // è§¦å‘表单验证
      that.confirmLoading = true
      // âœ… è§¦å‘表单验证
      this.$refs.form.validate(valid => {
        if (valid) {
          let tableData = that.$refs.editableDetailTable.getTableData()
          let removeData = that.$refs.editableDetailTable.getDeleteData()
          that.model.tableDetailList = [...tableData]
          that.model.removeDetailList = [...removeData]
          let formData = Object.assign(this.model)
          that.confirmLoading = that.spinning = true
          let httpurl = ''
          let method = ''
          let obj
          if (!this.model.id) {
            httpurl += this.url.add
            method = 'post'
            obj = postAction(this.url.add, formData)
          } else {
            httpurl += this.url.edit
            method = 'put'
            obj = requestPut(this.url.edit, formData, { id: this.model.id })
          }
          this.model.standardId = this.standardId
          httpAction(httpurl, this.model, method).then((res) => {
          obj.then((res) => {
            if (res.success) {
              that.$message.success(res.message)
              that.$emit('ok')
@@ -263,108 +248,14 @@
              that.$message.warning(res.message)
            }
          }).finally(() => {
            that.confirmLoading = that.spinning = false
            that.confirmLoading = false
          })
        } else {
          that.$message.warning('请填写必填字段')
          that.confirmLoading = false
          return false
        }
      })
    },
    onSearchPart() {
      this.$refs.PartPopUp.showModals([this.model.enterpriseId])
    },
    autocompleteForm(selectObj) {
      this.model.standardName = selectObj.standardName
      this.model.maintenancePeriod = selectObj.maintenancePeriod
      this.model.standardCode = selectObj.standardCode
      // è‹¥å–消设备选择后保养周期为空则需清空点检日期和点检过期时间
      if (!this.model.equipmentId) {
        delete this.model.inspectionDate
        delete this.model.expirationTime
      } else {
        // å¦‚果点检日期存在,则在重新选择设备后即保养周期可能发生改变后重新计算过期时间
        if (this.model.inspectionDate) this.expirationTimeFrom(this.model.inspectionDate)
      }
      if (!this.standardType) {
        console.log('this.standardType', this.standardType)
        this.standardId = selectObj.id
        this.loadDetail(selectObj.id)
      }
      this.$nextTick(() => this.loadMaintenanceOperatorList(this.model.equipmentId))
    },
    expirationTimeFrom(date) {
      //过期时间是初始时间+保养周期
      if (date && this.model.maintenancePeriod) {
        // è½¬æ¢ä¸ºæ—¶é—´æˆ³å­—符串(或指定格式)
        this.model.expirationTime = moment(date)
          .add(this.model.maintenancePeriod, 'days')
          .format('YYYY-MM-DD')
      } else {
        this.model.expirationTime = null // æ¸…空无效值
      }
    },
    //加载详情数据
    loadDetail(standardId) {
      this.detail.dataSource = []
      if (standardId) {
        console.log('standardId', standardId)
        this.spinning = true
        getAction(this.url.detail, { standardId: standardId })
          .then(res => {
            if (res.success) {
              this.detail.dataSource = [...res.result]
            }
          })
          .finally(() => {
            this.spinning = false
          })
      }
    },
    loadDetailOrder(orderId) {
      if (orderId) {
        this.spinning = true
        getAction(this.url.detailOrder, { orderId: orderId })
          .then(res => {
            if (res.success) {
              this.detail.dataSource = [...res.result]
            }
          })
          .finally(() => {
            this.spinning = false
          })
      }
    },
    loadMaintenanceOperatorList(equipmentId) {
      this.maintenanceOperatorOptions = []
      let params = { positionCode: 'PCR0001' }
      if (equipmentId) {
        params.equipmentId = equipmentId
      } else {
        delete this.model.operator
        return
      }
      const that = this
      getAction(this.url.userSelect, params)
        .then(res => {
          if (res.success) {
            that.maintenanceOperatorOptions = res.result.map(item => ({
              key: item.id,
              value: item.username,
              text: item.realname
            }))
            if (!that.maintenanceOperatorOptions.find(item => item.value === that.model.operator)) delete that.model.operator
          } else {
            if (that.model.operator) delete that.model.operator
          }
        })
        .catch(err => {
          if (that.model.operator) delete that.model.operator
        })
    },
    handleCancel() {
src/views/tms/stocktakingBound/ToolsStocktaKingBoundDetail.vue
@@ -38,7 +38,6 @@
        if (!this.mainId) {
          this.clearList()
        } else {
          alert(val)
          this.queryParam['stocktakingBoundId'] = val;
          this.queryParam['delFlag'] = 0;
          this.loadData(1);
src/views/tms/stocktakingBound/ToolsStocktakingBoundList.vue
@@ -6,7 +6,7 @@
        <a-row :gutter="24">
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
            <a-form-item label="盘点单号">
              <a-input placeholder="请输入盘点单号" v-model="queryParam.orderCode"></a-input>
              <j-input placeholder="请输入盘点单号" v-model="queryParam.orderCode"></j-input>
            </a-form-item>
          </a-col>
          <a-col :xl="6" :lg="7" :md="8" :sm="24">
@@ -260,6 +260,7 @@
      handleSubmit(record) {
        getAction(this.url.submit,{ id: record.id }).then((res)=>{
          if (res.success) {
            this.$message.success(res.message);
            this.loadData();
            this.$refs.toolStockingBoundDetail.clearList()