Mr.Zhang
2023-08-14 287934f48daa9889f824e12d1af687bc5aa3bbe2
工资
已添加8个文件
已删除1个文件
已修改10个文件
1366 ■■■■ 文件已修改
platform_web/src/components/system/permission/OperaPermissionWindow.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/views/system/permission.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/views/system/permissionCom.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/.env.development 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/coderd.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/api/business/salaryParam.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/api/ext/salaryStatistic.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/api/ext/userSalary.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/components/business/OperaSalaryParamWindow.vue 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/components/ext/OperaWorkorderDetailWindow.vue 217 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/components/ext/OrderDistrubution.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/components/ext/addProcesRoute.vue 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/views/business/salaryParam.vue 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/views/business/workPlans.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/views/ext/salaryStatistic.vue 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/views/ext/userSalary.vue 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/views/ext/workingorderExt.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/views/ext/workorderPutRecordExt.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web_standard/src/views/ext/workorderRecordExt.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/components/system/permission/OperaPermissionWindow.vue
@@ -26,6 +26,12 @@
  name: 'OperaPermissionWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  props: {
    type: {
      type: Number|String,
      default: 0
    }
  },
  data () {
    return {
      // åŽŸæƒé™ç 
@@ -58,6 +64,7 @@
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
          this.form.type = this.type
        })
        return
      }
@@ -67,6 +74,7 @@
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        this.form.type = this.type
      })
    },
    confirm () {
platform_web/src/views/system/permission.vue
@@ -60,7 +60,7 @@
      ></pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaPermissionWindow ref="operaPermissionWindow" @success="handlePageChange"/>
    <OperaPermissionWindow ref="operaPermissionWindow" :type="0" @success="handlePageChange"/>
  </TableLayout>
</template>
platform_web/src/views/system/permissionCom.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
<template>
  <TableLayout :permissions="['system:permission:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="权限编码" prop="code">
        <el-input v-model="searchForm.code" v-trim placeholder="请输入权限编码" @keypress.enter.native="search"/>
      </el-form-item>
      <el-form-item label="权限名称" prop="name">
        <el-input v-model="searchForm.name" v-trim placeholder="请输入权限名称" @keypress.enter.native="search"/>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['system:permission:create', 'system:permission:delete']">
        <li><el-button type="primary" @click="$refs.operaPermissionWindow.open('新建系统权限')" icon="el-icon-plus" v-permissions="['system:permission:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" v-permissions="['system:permission:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        :default-sort = "{prop: 'createTime', order: 'descending'}"
        stripe
        border
        @selection-change="handleSelectionChange"
        @sort-change="handleSortChange"
      >
        <el-table-column type="selection" fixed="left" align="center" width="55"></el-table-column>
        <el-table-column prop="code" label="权限编码" fixed="left" align="center" min-width="200px"></el-table-column>
        <el-table-column prop="name" label="权限名称" fixed="left" align="center" min-width="120px"></el-table-column>
        <el-table-column prop="remark" label="权限备注" align="center" min-width="120px"></el-table-column>
        <el-table-column prop="createUser" label="创建人" align="center" min-width="100px">
          <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
        </el-table-column>
        <el-table-column prop="createTime" label="创建时间" align="center" min-width="140px" sortable="custom" sort-by="perm.CREATE_TIME"></el-table-column>
        <el-table-column prop="updateUser" label="更新人" align="center" min-width="100px">
          <template slot-scope="{row}">{{row.updateUserInfo == null ? '' : row.updateUserInfo.username}}</template>
        </el-table-column>
        <el-table-column prop="updateTime" label="更新时间" align="center" min-width="140px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['system:permission:update', 'system:permission:delete'])"
          label="操作"
          align="center"
          min-width="130"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button v-if="!row.fixed" type="text" @click="$refs.operaPermissionWindow.open('编辑系统权限', row)"  v-permissions="['system:permission:update']">编辑</el-button>
            <el-button v-if="!row.fixed" type="text" @click="deleteById(row)" style="color: red" v-permissions="['system:permission:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      ></pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaPermissionWindow ref="operaPermissionWindow" :type="1" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import Pagination from '@/components/common/Pagination'
import TableLayout from '@/layouts/TableLayout'
import BaseTable from '@/components/base/BaseTable'
import OperaPermissionWindow from '@/components/system/permission/OperaPermissionWindow'
export default {
  name: 'SystemPermission',
  extends: BaseTable,
  components: { OperaPermissionWindow, TableLayout, Pagination },
  data () {
    return {
      // æœç´¢
      searchForm: {
        code: '',
        name: '',
        remark: '',
        type: 1
      }
    }
  },
  created () {
    this.config({
      module: '权限',
      api: '/system/permission',
      sorts: [{
        property: 'perm.CREATE_TIME',
        direction: 'DESC'
      }]
    })
    this.search()
  }
}
</script>
web_standard/.env.development
@@ -21,5 +21,8 @@
# ç„¦æ¾
VUE_APP_BASE_URL = 'http://192.168.0.36:10021/'
# æ±Ÿè
VUE_APP_BASE_URL = 'http://192.168.0.35:10021'
# VUE_APP_BASE_URL = 'https://dmtest.ahapp.net/doumeeplant_api/'
web_standard/coderd.json
@@ -4,7 +4,7 @@
    "alias": "eva",
    "command": "page",
    "option": {
      "resources": "workorder_check_attr_ext"
      "resources": "salary_param"
    }
  }
}
web_standard/src/api/business/salaryParam.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/business/salaryParam/page', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/business/salaryParam/exportExcel', data, {
    trim: true,
    download: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/business/salaryParam/create', data)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/business/salaryParam/updateById', data)
}
// åˆ é™¤
export function deleteById (id) {
  return request.get(`/business/salaryParam/delete/${id}`)
}
// æ‰¹é‡åˆ é™¤
export function deleteByIdInBatch (ids) {
  return request.get('/business/salaryParam/delete/batch', {
    params: {
      ids
    }
  })
}
web_standard/src/api/ext/salaryStatistic.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/ext/workorderRecordExt/salaryStatistic', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/ext/workorderRecordExt/exportSalaryStatistics', data, {
    trim: true,
    download: true
  })
}
web_standard/src/api/ext/userSalary.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
import request from '../../utils/request'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/ext/workorderRecordExt/userSalary', data, {
    trim: true
  })
}
// å¯¼å‡ºExcel
export function exportExcel (data) {
  return request.post('/ext/workorderRecordExt/exportUserSalary', data, {
    trim: true,
    download: true
  })
}
web_standard/src/components/business/OperaSalaryParamWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,229 @@
<template>
  <GlobalWindow
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="计价方式" prop="type">
        <el-select v-model="form.type" placeholder="请选择计价方式" clearable>
          <el-option
            v-for="item in type"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          >
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="工厂" prop="departId">
        <el-select v-model="form.departId" placeholder="请选择工厂" clearable @change="selectFactoey">
          <el-option
            v-for="item in factories"
            :key="item.id"
            :label="item.name"
            :value="item.id"
          >
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="物料" prop="materialId">
        <el-select v-model="form.materialId" placeholder="请选择物料" clearable>
          <el-option
            v-for="item in materials"
            :key="item.materialId"
            :label="item.mmodel.name"
            :value="item.materialId"
          >
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="工序" prop="procedureId">
        <el-select v-model="form.procedureId" placeholder="请选择计价方式" clearable>
          <el-option
            v-for="item in productes"
            :key="item.id"
            :label="item.name"
            :value="item.id"
          >
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="工资单价(元)" prop="salary">
        <el-input v-model="form.salary" placeholder="请输入工资单价(元)" v-trim/>
      </el-form-item>
      <el-form-item label="标准效率" prop="num">
        <div style="display: flex;">
          <el-input v-model="form.num" v-trim/>/
          <el-input v-model="form.hours" v-trim/><div class="unit">小时</div>
          <el-input v-model="form.minute" v-trim/><div class="unit">分钟</div>
          <el-input v-model="form.second" v-trim/><div>秒</div>
        </div>
      </el-form-item>
      <el-form-item label="不良品是否计入" prop="unqualified">
        <el-switch v-model="form.unqualified" :inactive-value="0" :active-value="1"></el-switch>
        <!-- <el-input v-model="form.unqualified" placeholder="请输入不良品是否计入 0否 1是" v-trim/> -->
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { getDepartmentListByConditon } from '@/api/ext/departmentExt'
import { getBomMaterialList } from '@/api/ext/bomExt'
import { routeExt as proceList } from '@/api/ext/routeProcedureExt'
export default {
  name: 'OperaSalaryParamWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        materialId: '',
        createUser: '',
        createTime: '',
        updateUser: '',
        updateTime: '',
        remark: '',
        rootDepartId: '',
        departId: '',
        procedureId: '',
        bomId: '',
        salary: '',
        num: '',
        times: '',
        hours: '',
        minute: '',
        second: '',
        unqualified: 0,
        type: ''
      },
      type: [
        { label: '计件', value: 0 },
        { label: '计时', value: 1 },
      ],
      factories: [],
      materials: [],
      productes: [],
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/salaryParam',
      'field.id': 'id'
    })
    this.initData()
  },
  methods: {
    open (title, target) {
      this.title = title
      this.visible = true
      this.isEdit = false
      // æ–°å»º
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
          this.form.times = ''
          this.form.second = ''
          this.form.minute = ''
          this.form.hours = ''
          this.form.departId = this.factories[0]?this.factories[0].id:''
          this.selectFactoey(this.form.departId)
        })
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        this.isEdit = true
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        let { times } = target
        this.form.second = +times%60
        let lesMin = Math.floor(+times/60)
        this.form.minute = lesMin%60
        this.form.hours = Math.floor(lesMin/60)
        this.selectFactoey(this.form.departId, true)
      })
    },
    initData() {
      getDepartmentListByConditon({ type: 1 })
        .then(res => {
          this.factories = res
        })
        .catch(err => {
          console.log(err)
        })
    },
    selectFactoey (v, isEdit=false) {
      // console.log(v)
      if (!isEdit) {
        this.materials = []
        this.form.materialId = ''
        this.form.procedureId = ''
        this.productes = []
      }
      getBomMaterialList({ departId: v })
        .then(res => {
          // console.log(res)
          this.materials = res
          if (!isEdit) {
            this.form.materialId = res[0]?res[0].materialId:''
          }
          this.selectMaterial(this.form.materialId, isEdit)
        })
        .catch(err => {
          console.log(err)
        })
    },
    selectMaterial (id, isEdit) {
      let routeId;
      for (const item of this.materials) {
        if (item.materialId === id) {
          routeId = item.routeId
        }
      }
      proceList(routeId)
        .then(res => {
          // console.log(res)
          this.productes = res.proceList
          if (!isEdit) {
            this.form.procedureId = this.productes[0]?this.productes[0].id:''
          }
        }).catch(err => {
          console.log(err)
        })
    },
    confirm () {
      // console.log((+this.form.hours) * 3600);
      // console.log((+this.form.minute) * 60);
      // console.log(this.form.second);
      this.form.times = (+this.form.hours) * 3600 + (+this.form.minute)* 60 + (+this.form.second)
      if (this.form.id == null || this.form.id === '') {
        this.__confirmCreate()
        return
      }
      this.__confirmEdit()
    },
  },
}
</script>
<style>
.unit {
  white-space: nowrap;
}
</style>
web_standard/src/components/ext/OperaWorkorderDetailWindow.vue
@@ -1,28 +1,23 @@
<template>
  <GlobalWindow
    :title="title"
    width="1182px"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
  <GlobalWindow :title="title" width="1182px" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
    <div style="min-width:1150px">
      <el-form :model="form" ref="form" label-width="100px" label-suffix=":" inline>
        <div style="margin-bottom:15px">
          <span class="text-code">{{ form.procedureName + ' | ' + form.mmodel.name + ' ' + form.mmodel.code }}</span>
          <!-- 0已创建、1已备料、2已完工检、3已检验、4已报工、、6已取消 -->
          <span v-if="form.status==0" style="background-color: #305ED5;" class="status-log">已创建</span>
          <span v-else-if="form.status==6" style="background-color: #BBBBBB;" class="status-log">已取消</span>
          <span v-else style="background-color: #03AF76;" class="status-log">{{ form.status==1 ? '已备料' : form.status==2 ? '已完工检' : form.status==3 ? '已检验' : '已报工' }}</span>
          <span v-if="form.status == 0" style="background-color: #305ED5;" class="status-log">已创建</span>
          <span v-else-if="form.status == 6" style="background-color: #BBBBBB;" class="status-log">已取消</span>
          <span v-else style="background-color: #03AF76;" class="status-log">{{ form.status == 1 ? '已备料' : form.status == 2 ?
            '已完工检' : form.status == 3 ? '已检验' : '已报工' }}</span>
          <!-- <span v-if="form.status==3" style="background-color: #BBBBBB;" class="status-log">已取消</span> -->
        </div>
        <el-form-item label="工单编号" prop="workorderCode" class="count-style" >
        <el-form-item label="工单编号" prop="workorderCode" class="count-style">
          {{ form.code }}
        </el-form-item>
        <el-form-item label="生产日期" prop="proTime" class="count-style" >
        <el-form-item label="生产日期" prop="proTime" class="count-style">
          {{ form.planDate }}
        </el-form-item>
        <el-form-item label="生产批次号" prop="batch" class="count-style" >
        <el-form-item label="生产批次号" prop="batch" class="count-style">
          {{ form.batch }}
        </el-form-item>
        <!-- <el-form-item label="计划人员" prop="planUser" class="count-style" >
@@ -31,8 +26,8 @@
        <el-form-item label="计划日期" prop="planDate" class="count-style" >
          {{ form.pmodel.createTime }}
        </el-form-item> -->
        <el-form-item label="生产数量" prop="machine" class="count-style" >
          {{ form.planNum ? (form.planNum + (form.umodel.name ? form.umodel.name : '')) : '0'  }}
        <el-form-item label="生产数量" prop="machine" class="count-style">
          {{ form.planNum ? (form.planNum + (form.umodel.name ? form.umodel.name : '')) : '0' }}
        </el-form-item>
        <!-- <el-form-item label="计划数量" prop="planNum" class="count-style" >
          {{ form.pmodel.num }}
@@ -43,42 +38,36 @@
        <!-- <el-form-item label="发布日期" prop="startDate" class="count-style" >
          {{ form.pmodel.publishDate }}
        </el-form-item> -->
        <el-form-item label="原工单号" prop="originWorkorderId" class="count-style" >
        <el-form-item label="原工单号" prop="originWorkorderId" class="count-style">
          {{ form.originWorkorderId }}
        </el-form-item>
        <el-form-item label="分配人员" prop="distributeUser" class="count-style" >
        <el-form-item label="分配人员" prop="distributeUser" class="count-style">
          {{ form.userName }}
        </el-form-item>
        <el-form-item label="分配时间" prop="distributeTime" class="count-style" >
        <el-form-item label="分配时间" prop="distributeTime" class="count-style">
          {{ form.createTime }}
        </el-form-item>
        <el-form-item label="生产人员" prop="proUser" class="count-style" >
        <el-form-item label="生产人员" prop="proUser" class="count-style">
          <div v-for="(item, index) in form.proUserList" :key="index">{{ item.proUserDepartName }}</div>
          <!-- {{ form.proUserName + (form.proUserDepartName ? ('/' + form.proUserDepartName) : '') }} -->
        </el-form-item>
        <el-form-item label="生产设备" prop="machine" class="count-style" >
          {{ form.pgmodel && `【${form.pgmodel.code}】${form.pgmodel.name}`}}
        <el-form-item label="生产设备" prop="machine" class="count-style">
          {{ form.pgmodel && `【${form.pgmodel.code}】${form.pgmodel.name}` }}
        </el-form-item>
        <el-form-item label="合格数量" prop="qualifiedNum" class="count-style" >
        <el-form-item label="合格数量" prop="qualifiedNum" class="count-style">
          {{ form.qualifiedNum ? (form.qualifiedNum + (form.umodel.name ? form.umodel.name : '')) : '0' }}
        </el-form-item>
        <el-form-item label="不良数量" prop="unqualifiedNum" class="count-style" >
        <el-form-item label="不良数量" prop="unqualifiedNum" class="count-style">
          {{ form.unqualifiedNum ? (form.unqualifiedNum + (form.umodel.name ? form.umodel.name : '')) : '0' }}
        </el-form-item>
      </el-form>
      <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
      <el-tabs v-model="activeName" @tab-click="handleClick">
        <el-tab-pane label="生产报工" name="first">
          <el-table
            v-loading="isSearch"
            :data="report"
            border
            show-summary
            :summary-method="getReportSummaries"
          >
          <!-- stripe -->
          <el-table v-loading="isSearch" :data="report" border show-summary :summary-method="getReportSummaries">
            <!-- stripe -->
            <el-table-column prop="createTime" label="报工时间" min-width="140px"></el-table-column>
            <el-table-column label="生产人员" show-overflow-tooltip min-width="100px">
              <template slot-scope="{row}">
@@ -86,11 +75,27 @@
              </template>
            </el-table-column>
            <el-table-column prop="machine" label="生产设备" min-width="100px">
              {{ form.pgmodel && `【${form.pgmodel.code}】${form.pgmodel.name}`}}
              {{ form.pgmodel && `【${form.pgmodel.code}】${form.pgmodel.name}` }}
            </el-table-column>
            <!-- <el-table-column prop="amodel.code" label="工装容器编号" show-overflow-tooltip="" min-width="100px"></el-table-column> -->
            <el-table-column prop="mmodel.name" label="物料名称" show-overflow-tooltip min-width="100px"></el-table-column>
            <el-table-column prop="doneType" label="报工类型" min-width="60px">
            <el-table-column prop="qualifiedNum" label="合格数量" min-width="100px">
              <template slot-scope="{row}">
                <span class="valid-style">{{ row.qualifiedNum + row.umodel.name }}</span>
              </template>
            </el-table-column>
            <el-table-column prop="unqualifiedNum" label="不良数量" min-width="100px">
              <template slot-scope="{row}">
                <span class="unvalid-style">{{ row.unqualifiedNum + row.umodel.name }}</span>
                <!-- <span :class="row.materialDonetype==0 ? 'valid-style' : ''">{{ row.num + row.umodel.name }}</span> -->
              </template>
            </el-table-column>
            <el-table-column prop="num" label="报工数量" min-width="100px">
              <template slot-scope="{row}">
                <span>{{ row.num + row.umodel.name }}</span>
              </template>
            </el-table-column>
            <!-- <el-table-column prop="doneType" label="报工类型" min-width="60px">
              <template slot-scope="{row}">
                <span v-if="row.doneType==0" class="valid-style">合格</span>
                <span v-else-if="row.doneType==1" class="unvalid-style">不良</span>
@@ -102,15 +107,11 @@
              <template slot-scope="{row}">
                <span :class="row.doneType==0 ? 'valid-style' : (row.doneType==1 ? 'unvalid-style' :(row.doneType==2 ? 'scrap-style' : ''))">{{ row.num ? (row.num + (row.umodel.name ? row.umodel.name : '')) : '0' }}</span>
              </template>
            </el-table-column>
            </el-table-column> -->
          </el-table>
        </el-tab-pane>
        <el-tab-pane label="生产检验" name="second">
          <el-table
            v-loading="isSearch"
            :data="verify"
            stripe
            border>
          <el-table v-loading="isSearch" :data="verify" stripe border>
            <el-table-column prop="code" label="检验记录编号" min-width="140px"></el-table-column>
            <el-table-column prop="createTime" label="检验时间" min-width="140px"></el-table-column>
            <el-table-column prop="smodelRealName" label="检验人员" min-width="100px"></el-table-column>
@@ -138,30 +139,23 @@
            </el-table-column>
            <el-table-column prop="devmodel.code" label="生产设备" min-width="100px">
              <template slot-scope="{row}">
                {{ row.devmodel && `【${row.devmodel.code}】${row.devmodel.name}`}}
                {{ row.devmodel && `【${row.devmodel.code}】${row.devmodel.name}` }}
              </template>
            </el-table-column>
            <!-- <el-table-column prop="proUserids" label="生产人员" show-overflow-tooltip min-width="100px"></el-table-column> -->
          </el-table>
        </el-tab-pane>
        <el-tab-pane label="生产投料" name="third">
          <el-table
            v-loading="isSearch"
            :data="feeds"
            stripe
            border
            show-summary
            :summary-method="getPutSummaries"
          >
          <el-table v-loading="isSearch" :data="feeds" stripe border show-summary :summary-method="getPutSummaries">
            <el-table-column prop="createTime" label="投料时间" min-width="140px"></el-table-column>
            <!-- <el-table-column prop="amodel.code" label="工装容器编号" min-width="100px"></el-table-column> -->
            <el-table-column prop="mmodel.name" label="物料名称" min-width="100px"></el-table-column>
            <el-table-column prop="promodel.name" label="工序名称" min-width="100px"></el-table-column>
            <el-table-column label="质量属性" min-width="100px">
              <template slot-scope="{row}">
                <span v-if="row.materialDonetype==0" class="valid-style">合格</span>
                <span v-else-if="row.materialDonetype==1" class="unvalid-style">不良</span>
                <span v-else-if="row.materialDonetype==2" class="scrap-style">报废</span>
                <span v-if="row.materialDonetype == 0" class="valid-style">合格</span>
                <span v-else-if="row.materialDonetype == 1" class="unvalid-style">不良</span>
                <span v-else-if="row.materialDonetype == 2" class="scrap-style">报废</span>
                <span v-else>-</span>
              </template>
            </el-table-column>
@@ -178,12 +172,7 @@
          </el-table>
        </el-tab-pane>
        <el-tab-pane label="生产点检" name="fourth">
          <el-table
            v-loading="isSearch"
            :data="check"
            stripe
            border
          >
          <el-table v-loading="isSearch" :data="check" stripe border>
            <el-table-column prop="createTime" label="记录时间" min-width="140px"></el-table-column>
            <el-table-column prop="userName" label="操作人员" min-width="100px"></el-table-column>
            <el-table-column prop="attrName" label="检点属性" min-width="100px"></el-table-column>
@@ -203,12 +192,8 @@
            <el-table-column prop="value" align="left"></el-table-column>
          </el-table> -->
        </el-tab-pane>
        <Pagination
          style="margin-top:10px"
          @size-change="handleSizeChange"
          @current-change="handlePageChange"
          :pagination="pagination"
        ></Pagination>
        <Pagination style="margin-top:10px" @size-change="handleSizeChange" @current-change="handlePageChange"
          :pagination="pagination"></Pagination>
      </el-tabs>
    </div>
    <div slot="footer" class="window__header">
@@ -229,7 +214,7 @@
  name: 'OperaWorkorderDetailWindow',
  extends: BaseOpera,
  components: { GlobalWindow, Pagination },
  data () {
  data() {
    return {
      // è¡¨å•数据
      form: {
@@ -287,7 +272,7 @@
    }
  },
  inject: ['origins'],
  created () {
  created() {
    this.config({
      api: '/ext/materialExt',
      'field.id': 'id'
@@ -302,39 +287,39 @@
    //   })
  },
  methods: {
    open (title, target) {
    open(title, target) {
      this.title = title
      this.visible = true
      this.activeName = 'first',
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        // console.log('this.form', this.form)
        workorderRecordExtPage(
          {
            capacity: this.pagination.pageSize,
            model: {
              type: 1,
              workorderId: this.form.id
            },
            page: this.pagination.pageIndex,
            sorts: null
          })
          .then(res => {
            // console.log(res)
            this.report = res.records
            this.pagination.pageIndex = res.page
            this.pagination.total = res.total
            this.pagination.pageSize = res.capacity
          })
          .catch(err => {
            console.log(err)
          })
      })
        // ç¼–辑
        this.$nextTick(() => {
          for (const key in this.form) {
            this.form[key] = target[key]
          }
          // console.log('this.form', this.form)
          workorderRecordExtPage(
            {
              capacity: this.pagination.pageSize,
              model: {
                type: 1,
                workorderId: this.form.id
              },
              page: this.pagination.pageIndex,
              sorts: null
            })
            .then(res => {
              // console.log(res)
              this.report = res.records
              this.pagination.pageIndex = res.page
              this.pagination.total = res.total
              this.pagination.pageSize = res.capacity
            })
            .catch(err => {
              console.log(err)
            })
        })
    },
    cancel () {
    cancel() {
      this.$refs.form.resetFields()
      this.activeName = 'first'
      this.pagination.pageIndex = 1
@@ -342,21 +327,21 @@
      this.pagination.total = 0
      this.visible = false
    },
    statusToStr (status) {
    statusToStr(status) {
      for (const item of this.status) {
        if (item.id === status) {
          return item.name
        }
      }
    },
    originToStr (id) {
    originToStr(id) {
      for (const item of this.origins()) {
        if (item.id === id) {
          return item.code
        }
      }
    },
    columnStyle ({ row, column, rowIndex, columnIndex }) {
    columnStyle({ row, column, rowIndex, columnIndex }) {
      if (rowIndex % 2 === 0) {
        // ä¿®æ”¹æ¯è¡Œç¬¬ä¸€ä¸ªå•元格的背景色
        return 'background:#f3f6fc;'
@@ -364,22 +349,22 @@
        return 'background:#ffffff;'
      }
    },
    handleClick (tab, event) {
    handleClick(tab, event) {
      this.pagination.pageIndex = 1
      this.pagination.pageSize = 10
      this.pagination.total = 0
      this.search()
    },
    handleSizeChange (pageSize) {
    handleSizeChange(pageSize) {
      this.pagination.pageSize = pageSize
      this.search()
    },
    handlePageChange (pageIndex) {
    handlePageChange(pageIndex) {
      this.pagination.pageIndex = pageIndex
      // console.log('获取数据')
      this.search()
    },
    search () {
    search() {
      if (this.activeName === 'first') {
        workorderRecordExtPage(
          {
@@ -389,7 +374,7 @@
              workorderId: this.form.id
            },
            page: this.pagination.pageIndex,
            sorts: [{direction: "DESC", property: "CREATE_TIME"}]
            sorts: [{ direction: "DESC", property: "CREATE_TIME" }]
          })
          .then(res => {
            // console.log(res)
@@ -408,7 +393,7 @@
            workorderId: this.form.id
          },
          page: this.pagination.pageIndex,
          sorts: [{direction: "DESC", property: "CREATE_TIME"}]
          sorts: [{ direction: "DESC", property: "CREATE_TIME" }]
        })
          .then(res => {
            // console.log(res.records)
@@ -429,7 +414,7 @@
              workorderId: this.form.id
            },
            page: this.pagination.pageIndex,
            sorts: [{direction: "DESC", property: "CREATE_TIME"}]
            sorts: [{ direction: "DESC", property: "CREATE_TIME" }]
          })
          .then(res => {
            // console.log(res)
@@ -449,7 +434,7 @@
              workorderId: this.form.id
            },
            page: this.pagination.pageIndex,
            sorts: [{direction: "DESC", property: "CREATE_TIME"}]
            sorts: [{ direction: "DESC", property: "CREATE_TIME" }]
          })
          .then(res => {
            // console.log(res)
@@ -463,7 +448,7 @@
          })
      }
    },
    getPutSummaries (param) {
    getPutSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      columns.forEach((column, index) => {
@@ -476,7 +461,7 @@
        } else if (index === 5) {
          sums[index] = '-';
          return;
        }
        }
        const values = data.map(item => Number(item[column.property]));
        if (!values.every(value => isNaN(value))) {
          sums[index] = 0
@@ -489,15 +474,12 @@
      });
      return sums
    },
    getReportSummaries (param) {
    getReportSummaries(param) {
      const { columns, data } = param;
      const sums = [];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = '合计';
          return;
        } else if (index === 4) {
          sums[index] = '-';
          return;
        }
        const values = data.map(item => Number(item[column.property]));
@@ -522,21 +504,24 @@
  width: 23%;
  // height: 32px;
}
::v-deep .el-form-item {
  margin-bottom: 8px !important;
}
.text-code {
  color: #333;
  font-weight: 500;
  padding-right: 15px;
  font-size: 15px;
  vertical-align:middle;
  vertical-align: middle;
}
.status-log {
  padding: 1px 5px;
  border-radius: 3px;
  font-size: 12px;
  color:#fff;
  vertical-align:middle;
  color: #fff;
  vertical-align: middle;
}
</style>
web_standard/src/components/ext/OrderDistrubution.vue
@@ -109,9 +109,12 @@
        this.form.planDate = new Date()
        this.form.planId = target.id
        this.form.planNum = target.num - target.distributNum
        getDeviceByCondition({})
        getDeviceByCondition({procedureId: target.procedureId})
          .then(res => {
            this.device = res
            this.form.proGroupId = res[0] ? res[0].id : ''
            this.getUser(this.form.proGroupId)
          })
          .catch(err => {
            console.log(err)
web_standard/src/components/ext/addProcesRoute.vue
ÎļþÒÑɾ³ý
web_standard/src/views/business/salaryParam.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,142 @@
<template>
  <TableLayout :permissions="['business:salaryparam:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="物料" prop="keyWord">
        <el-input v-model="searchForm.keyWord" placeholder="请输入物料名称/编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="工序" prop="procedureName">
        <el-input v-model="searchForm.procedureName" placeholder="请输入工序" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="计价方式" prop="type">
        <el-select v-model="searchForm.type" placeholder="请选择计价方式" clearable>
          <el-option
            v-for="item in type"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          >
          </el-option>
        </el-select>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:salaryparam:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:salaryparam:create', 'business:salaryparam:delete']">
        <li><el-button type="primary" @click="$refs.operaSalaryParamWindow.open('新建绩效工资配置')" icon="el-icon-plus" v-permissions="['business:salaryparam:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:salaryparam:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        border
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键"  min-width="100px"></el-table-column>
        <el-table-column prop="type" label="计价方式" min-width="100px">
          <template slot-scope="{row}">
            {{ row.type == 0 ? '计件' : '计时' }}
          </template>
        </el-table-column>
        <el-table-column prop="materialName" label="物料名称" min-width="140px"></el-table-column>
        <el-table-column prop="materialCode" label="物料编码" min-width="100px"></el-table-column>
        <el-table-column prop="procedureName" label="工序名称" min-width="100px"></el-table-column>
        <el-table-column prop="salary" label="工资单价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="num" label="标准数量" min-width="100px">
        </el-table-column>
        <el-table-column prop="times" label="标准时长" min-width="100px">
          <template slot-scope="{row}">
            {{ timesToStr(row.times) }}
          </template>
        </el-table-column>
        <el-table-column prop="unqualified" label="不良品是否计入" min-width="110px">
          <template slot-scope="{row}">
            {{ row.unqualified == 0 ? '否' : '是' }}
          </template>
        </el-table-column>
        <el-table-column prop="createTime" label="创建时间" min-width="150px"></el-table-column>
        <!-- <el-table-column prop="updateUser" label="更新人编码" min-width="100px"></el-table-column> -->
        <!-- <el-table-column prop="updateTime" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="remark" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="rootDepartId" label="主组织编码(关联department表根组织)" min-width="100px"></el-table-column>
        <el-table-column prop="departId" label="工厂编码(关联department表)" min-width="100px"></el-table-column>
        <el-table-column prop="bomId" label="bom编码(关联bom表)" min-width="100px"></el-table-column> -->
        <el-table-column
          v-if="containPermissions(['business:salaryparam:update', 'business:salaryparam:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaSalaryParamWindow.open('编辑绩效工资配', row)" v-permissions="['business:salaryparam:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" v-permissions="['business:salaryparam:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaSalaryParamWindow ref="operaSalaryParamWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaSalaryParamWindow from '@/components/business/OperaSalaryParamWindow'
export default {
  name: 'SalaryParam',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaSalaryParamWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        keyWord: '',
        procedureName: '',
        type: ''
      },
      type: [
        { label: '计件', value: '0' },
        { label: '计时', value: '1' },
      ]
    }
  },
  created () {
    this.config({
      module: '设置类-绩效工资配置表',
      api: '/business/salaryParam',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  },
  methods: {
    timesToStr(times) {
      if (!times) {
        return '-'
      }
      let sec = times%60
      let lesMin = Math.floor(times/60)
      let min = lesMin%60
      let hours =  Math.floor(lesMin/60)
      return `${hours}时${min}分${sec}秒`
    }
  },
}
</script>
web_standard/src/views/business/workPlans.vue
@@ -109,16 +109,15 @@
            <span v-else>-</span>
          </template>
        </el-table-column>
        <el-table-column label="优先级" min-width="80px">
          <template slot-scope="{row}">
        <el-table-column prop="urgent" label="优先级" min-width="80px">
          <!-- <template slot-scope="{row}">
            <span v-if="row.urgent">{{ row.urgent }}</span>
            <span v-else>-</span>
          </template>
          </template> -->
        </el-table-column>
        <el-table-column label="暂停" min-width="80px">
          <template slot-scope="{row}">
            {{ row.paused==0?'否':'是' }}
          </template>
        </el-table-column>
web_standard/src/views/ext/salaryStatistic.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,182 @@
<template>
  <TableLayout v-permissions="['ext:workorderrecordext:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" label-suffix=":" inline>
      <el-form-item label="生产人员" prop="userId">
        <el-select v-model="searchForm.userId" clearable filterable placeholder="请选择">
          <el-option
            v-for="item in proUsers"
            :key="item.id"
            :label="item.name"
            :value="item.userId">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="物料编码" prop="mmodelCode">
        <el-input v-model="searchForm.mmodelCode" placeholder="请输入物料编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="工序" prop="procedureId">
        <el-select v-model="searchForm.procedureId" filterable clearable placeholder="请选择">
          <el-option
            v-for="(item, index) in procedures"
            :key="index"
            :label="item.name"
            :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="报工时间">
        <el-date-picker
          v-model="planDate"
          type="daterange"
          value-format="yyyy-MM-dd"
          range-separator="~"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          @change="dateChange"
        ></el-date-picker>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar">
        <!-- v-permissions="['ext:workorderrecordext:exportExcel']" -->
        <li ><el-button type="primary" :loading="isWorking.export" @click="exportExcel">导出</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        border
      >
        <el-table-column type="index" :index="customIndex" label="序号" fixed="left" min-width="80px">
        </el-table-column>
        <el-table-column prop="userInfo.userName" label="生产人员" min-width="100px"></el-table-column>
        <el-table-column prop="userInfo.departName" label="部门" min-width="100px"> </el-table-column>
        <el-table-column prop="jijianSalary" label="计件工资" min-width="100px">
          <template slot-scope="{row}">
            {{ row.jijianSalary / 100 }}
          </template>
        </el-table-column>
        <el-table-column prop="jishiSalary" label="计时工资" min-width="100px">
          <template slot-scope="{row}">
            {{ row.jishiSalary / 100 }}
          </template>
        </el-table-column>
        <el-table-column prop="num" label="报工单总数" min-width="100px"></el-table-column>
        <el-table-column prop="totalSalary" label="小计工资(元)" min-width="100px">
          <template slot-scope="{row}">
            {{ row.totalSalary / 100 }}
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      ></pagination>
    </template>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { productesGroup } from '@/api/ext/proceduresExt'
import { companyUserExtAllUser } from '@/api/ext/companyUserExt'
export default {
  name: 'WorkorderRecordExt',
  extends: BaseTable,
  components: { TableLayout, Pagination },
  data () {
    return {
      // æœç´¢
      searchForm: {
        procedureId: '',
        userId: '',
        startDate: '',
        endDate: '',
        materialId: '',
      },
      procedures: [
      ],
      proUsers: [
      ],
      orderStatus:[
        // 0已创建、1已领料、2已完工检、3已检验、4已返工、5已入库、6已暂停、7已取消、8已关闭
        //  0已创建、1已备料、2已完工检、3已检验、4已报工、5已入库、6已取消
        { name: '已创建', id: 0 },
        { name: '已备料', id: 1 },
        { name: '已完工检', id: 2 },
        { name: '已检验', id: 3 },
        { name: '已报工', id: 4 },
        { name: '已取消', id: 6 }
      ],
      planDate: []
    }
  },
  created () {
    this.config({
      module: '报工记录',
      api: '/ext/salaryStatistic',
      'field.id': 'id',
      'field.main': 'name',
      sorts: [{ direction: 'DESC', property: 'CREATE_TIME' }]
    })
    this.search()
  },
  activated() {
    productesGroup({})
      .then(res => {
        this.procedures = res
      })
      .catch(err => {
        console.log(err)
      })
    companyUserExtAllUser({ departmentId: this.$store.state.userInfo.curComDepartment.id })
      .then(res => {
        this.proUsers = res
      })
      .catch(err => {
        console.log(err)
      })
  },
  methods: {
    dateChange (v) {
      // console.log('日期选择了')
      this.searchForm.startDate = v[0]
      this.searchForm.endDate = v[1]
    },
    reset () {
      // console.log('rest', this.searchDate)
      this.planDate = []
      this.searchForm.startDate = ''
      this.searchForm.endDate = ''
      this.$refs.searchForm.resetFields()
      this.search()
    },
    statusToStr (row) {
      for (const item of this.orderStatus) {
        if (item.id === row.omodel.status) {
          return item.name
        }
      }
      return '-'
    },
    customIndex(index) {
      console.log();
      return (this.tableData.pagination.pageIndex-1) * this.tableData.pagination.pageSize + index + 1
    }
  }
}
</script>
web_standard/src/views/ext/userSalary.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,201 @@
<template>
  <TableLayout v-permissions="['ext:workorderrecordext:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" label-suffix=":" inline>
      <el-form-item label="生产人员" prop="userId">
        <el-select v-model="searchForm.userId" clearable filterable placeholder="请选择">
          <el-option
            v-for="item in proUsers"
            :key="item.id"
            :label="item.name"
            :value="item.userId">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="物料编码" prop="mmodelCode">
        <el-input v-model="searchForm.mmodelCode" placeholder="请输入物料编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="工序" prop="procedureId">
        <el-select v-model="searchForm.procedureId" filterable clearable placeholder="请选择">
          <el-option
            v-for="(item, index) in procedures"
            :key="index"
            :label="item.name"
            :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="报工时间">
        <el-date-picker
          v-model="planDate"
          type="daterange"
          value-format="yyyy-MM-dd"
          range-separator="~"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          @change="dateChange"
        ></el-date-picker>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar">
        <!-- v-permissions="['ext:workorderrecordext:exportExcel']" -->
        <li ><el-button type="primary" :loading="isWorking.export" @click="exportExcel">导出</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        border
      >
        <el-table-column prop="id" label="序号" fixed="left" min-width="80px"></el-table-column>
        <el-table-column prop="userInfo.userName" label="生产人员" min-width="100px"></el-table-column>
        <el-table-column prop="userInfo.departName" label="部门" min-width="100px"> </el-table-column>
        <el-table-column prop="materialName" label="物料名称" min-width="100px"></el-table-column>
        <el-table-column prop="materialCode" label="物料编码" min-width="140px"></el-table-column>
        <el-table-column prop="procedureName" label="工序名称" min-width="100px"></el-table-column>
        <el-table-column prop="workorderCode" label="工单编码" min-width="150px"></el-table-column>
        <el-table-column prop="unitName" label="单位" min-width="100px"></el-table-column>
        <el-table-column prop="num" label="报工数" min-width="100px"></el-table-column>
        <el-table-column prop="qualifiedNum" label="良品数" min-width="100px"></el-table-column>
        <el-table-column prop="unQualifiedNum" label="不良品数" min-width="100px"></el-table-column>
        <el-table-column prop="rate" label="合格率(%)" min-width="100px"></el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      ></pagination>
    </template>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import { getDeviceByCondition } from '@/api/ext/deviceExt'
import { productesGroup } from '@/api/ext/proceduresExt'
import { companyUserExtAllUser } from '@/api/ext/companyUserExt'
import { addPrecision } from '@/utils/util'
export default {
  name: 'WorkorderRecordExt',
  extends: BaseTable,
  components: { TableLayout, Pagination },
  data () {
    return {
      // æœç´¢
      searchForm: {
        procedureId: '',
        userId: '',
        startDate: '',
        endDate: '',
        materialId: '',
      },
      procedures: [
      ],
      proUsers: [
      ],
      orderStatus:[
        // 0已创建、1已领料、2已完工检、3已检验、4已返工、5已入库、6已暂停、7已取消、8已关闭
        //  0已创建、1已备料、2已完工检、3已检验、4已报工、5已入库、6已取消
        { name: '已创建', id: 0 },
        { name: '已备料', id: 1 },
        { name: '已完工检', id: 2 },
        { name: '已检验', id: 3 },
        { name: '已报工', id: 4 },
        { name: '已取消', id: 6 }
      ],
      planDate: []
    }
  },
  created () {
    this.config({
      module: '报工记录',
      api: '/ext/userSalary',
      'field.id': 'id',
      'field.main': 'name',
      sorts: [{ direction: 'DESC', property: 'CREATE_TIME' }]
    })
    this.search()
  },
  activated() {
    productesGroup({})
      .then(res => {
        this.procedures = res
      })
      .catch(err => {
        console.log(err)
      })
    companyUserExtAllUser({ departmentId: this.$store.state.userInfo.curComDepartment.id })
      .then(res => {
        this.proUsers = res
      })
      .catch(err => {
        console.log(err)
      })
  },
  methods: {
    dateChange (v) {
      // console.log('日期选择了')
      this.searchForm.startDate = v[0]
      this.searchForm.endDate = v[1]
    },
    reset () {
      // console.log('rest', this.searchDate)
      this.planDate = []
      this.searchForm.startDate = ''
      this.searchForm.endDate = ''
      this.$refs.searchForm.resetFields()
      this.search()
    },
    statusToStr (row) {
      for (const item of this.orderStatus) {
        if (item.id === row.omodel.status) {
          return item.name
        }
      }
      return '-'
    },
    getSummaries (param) {
      const { columns, data } = param;
      const sums = [];
      columns.forEach((column, index) => {
        if (index === 0) {
          sums[index] = '合计';
          return;
        } else if (index === 4 || index === 8 || index === 6 || index === 10) {
          // || index === 8 || index === 9 || index === 16 || index === 17
          sums[index] = '-';
          return;
        }
        const values = data.map(item => {
          if (index === 6) {
            return Number(item.omodel.planNum)
          } else {
            return Number(item[column.property])
          }
        });
        if (!values.every(value => isNaN(value))) {
          sums[index] = 0
          values.forEach(item => {
            sums[index] = addPrecision(item, sums[index])
          })
        } else {
          sums[index] = '-';
        }
      });
      return sums
    }
  }
}
</script>
web_standard/src/views/ext/workingorderExt.vue
@@ -282,7 +282,7 @@
        status: '',
        mixParam: '',
        pgmodelId: '',
        statusList: [0,1,2,3]
        statusList: [0,1,2,3,7]
      },
      origins: [],
      types: [
@@ -307,7 +307,7 @@
        { name: '已检验', id: 3 },
        // { name: '已报工', id: 4 },
        // { name: '已入库', id: 5 },
        // { name: '已取消', id: 6 }
        { name: '生产中', id: 7 }
      ],
      productes: [
      ],
web_standard/src/views/ext/workorderPutRecordExt.vue
@@ -120,19 +120,18 @@
            <span class="long-title-style">{{ row.procedureName }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="doneType" label="质量属性" min-width="100px">
        <el-table-column prop="qualifiedNum" label="合格数量" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="row.materialDonetype==0" class="valid-style">合格</span>
            <span v-else-if="row.materialDonetype==1" class="unvalid-style">不良</span>
            <!-- <span v-else-if="row.doneType==2" class="scrap-style">报废</span> -->
            <span v-else>-</span>
            <span class="valid-style">{{ row.qualifiedNum + row.umodel.name }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="num" label="数量" min-width="100px">
        <el-table-column prop="unqualifiedNum" label="不良数量" min-width="100px">
          <template slot-scope="{row}">
            <span :class="row.materialDonetype==0 ? 'valid-style' : 'unvalid-style'">{{ row.num + row.umodel.name }}</span>
            <span class="unvalid-style">{{ row.num + row.umodel.name}}</span>
            <!-- <span :class="row.materialDonetype==0 ? 'valid-style' : ''">{{ row.num + row.umodel.name }}</span> -->
          </template>
        </el-table-column>
        <el-table-column prop="num" label="报工数量" min-width="100px"></el-table-column>
        <!-- <el-table-column prop="amodel.code" label="工装器具" min-width="100px"></el-table-column> -->
        <el-table-column prop="deviceCode" label="设备" show-overflow-tooltip min-width="100px">
          <template slot-scope="{row}">
web_standard/src/views/ext/workorderRecordExt.vue
@@ -112,7 +112,7 @@
          </template>
        </el-table-column>
        <el-table-column prop="procedureName" label="生产员工" min-width="100px"></el-table-column>
        <el-table-column prop="doneType" label="报工类型" min-width="100px">
        <!-- <el-table-column prop="doneType" label="报工类型" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="row.doneType==0" class="valid-style">合格</span>
            <span v-else-if="row.doneType==1" class="unvalid-style">不良</span>
@@ -124,6 +124,22 @@
          <template slot-scope="{row}">
            <span :class="row.doneType==0 ? 'valid-style' : (row.doneType==1 ? 'unvalid-style' : (row.doneType==2 ? 'scrap-style' : ''))">{{ row.num + row.umodel.name }}</span>
          </template>
        </el-table-column> -->
        <el-table-column prop="qualifiedNum" label="合格数量" min-width="100px">
          <template slot-scope="{row}">
            <span class="valid-style">{{ row.qualifiedNum + row.umodel.name }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="unqualifiedNum" label="不良数量" min-width="100px">
          <template slot-scope="{row}">
            <span class="unvalid-style">{{ row.unqualifiedNum + row.umodel.name}}</span>
            <!-- <span :class="row.materialDonetype==0 ? 'valid-style' : ''">{{ row.num + row.umodel.name }}</span> -->
          </template>
        </el-table-column>
        <el-table-column prop="num" label="报工数量" min-width="100px">
          <template slot-scope="{row}">
            <span>{{ row.num + row.umodel.name}}</span>
          </template>
        </el-table-column>
        <!-- <el-table-column prop="amodel.code" label="工装器具" min-width="100px"></el-table-column> -->
        <el-table-column prop="deviceCode" label="设备" show-overflow-tooltip min-width="100px">