Merge branch 'dev-scheduling' of http://42.192.7.176:3000/suojin/jonhon-mes-web into dev-scheduling

dev-scheduling
姜雪 3 months ago
commit c1df8786e2
  1. 9
      src/api/taskCope/index.js
  2. 20
      src/api/workCheck/index.js
  3. 32
      src/api/workReport/index.js
  4. 23
      src/router/views/index.js
  5. 917
      src/views/processManagement/components/processMainte/dsPartBasicInfo.vue
  6. 4
      src/views/processManagement/components/processMainte/dsPartIndex.vue
  7. 4
      src/views/processManagement/procepssPlanning.vue
  8. 3
      src/views/processManagement/sinTer/index.vue
  9. 31
      src/views/processManagement/taskDispatch.vue
  10. 46
      src/views/processManagement/taskProcessing.vue
  11. 327
      src/views/productionManagement/workReportingManagement/workRecord.vue
  12. 19
      src/views/productionSchedulingPlan/basic/equipmentCapacity.vue
  13. 10
      src/views/wel/components/quickAccess.vue
  14. 89
      src/views/zhgd-work/taskCope/index.vue
  15. 275
      src/views/zhgd-work/workCheck/index.vue
  16. 294
      src/views/zhgd-work/workReport/index.vue

@ -4,16 +4,17 @@ import request from '@/axios';
// 工序任务接收 // 工序任务接收
export const workPlanReceive = (data) => { export const workPlanReceive = (data) => {
return request({ return request({
url: '/produceMonitor/workPlanReceive', url: '/blade-desk/produceMonitor/workPlanReceive',
method: 'post', method: 'post',
data: data, params: data,
}); });
}; };
// 根据流程卡号查询订单信息 // 根据流程卡号查询订单信息
export const loadNotReceived = (cardNo) => { export const loadNotReceived = (params) => {
return request({ return request({
url: '/produceMonitor/loadNotReceived/' + cardNo, url: '/blade-desk/prMakeRec/loadNotReceived',
method: 'get', method: 'get',
params:params
}); });
}; };

@ -0,0 +1,20 @@
import request from '@/axios';
// 工序检验 流程卡号查询 /pdaLoad/loadProTest/{cardNo}
export const loadProTest = (params) => {
return request({
url: `/blade-desk/pdaLoad/loadProTest/${params.cardNo}`,
method: 'get',
// params:params
});
};
// 工序检验提交
export const saveProCheck = (data) => {
return request({
url: '/blade-desk/pdaLoad/saveProCheck',
method: 'post',
data: data,
});
};

@ -0,0 +1,32 @@
import request from '@/axios';
// 报工查询
export const loadCurrentWp = (params) => {
return request({
url: '/blade-desk/prMakeRec/loadCurrentWp',
method: 'get',
params:params
});
};
// 报工提交
export const saveMakeRec = (data) => {
return request({
url: '/blade-desk/prMakeRec/saveMakeRec',
method: 'post',
data:data
});
};
// 报工记录
export const queryMakeRec = (current, size, params) => {
return request({
url: '/blade-desk/prMakeRec/queryMakeRec',
method: 'get',
params: {
...params,
current,
size,
},
});
};

@ -37,7 +37,7 @@ export default [
}, },
{ {
path: '/taskCope', path: '/taskCope',
component: () => import(/* webpackChunkName: "page" */ '@/views/wel/taskCope/index.vue'), component: () => import(/* webpackChunkName: "page" */ '@/views/zhgd-work/taskCope/index.vue'),
name: '工序接收', name: '工序接收',
meta: { meta: {
keepAlive: true, keepAlive: true,
@ -45,6 +45,27 @@ export default [
isAuth: false, isAuth: false,
}, },
}, },
// workReport
{
path: '/workReport',
component: () => import(/* webpackChunkName: "page" */ '@/views/zhgd-work/workReport/index.vue'),
name: '工序报工',
meta: {
keepAlive: true,
isTab: false,
isAuth: false,
},
},
{
path: '/workCheck',
component: () => import(/* webpackChunkName: "page" */ '@/views/zhgd-work/workCheck/index.vue'),
name: '工序检验',
meta: {
keepAlive: true,
isTab: false,
isAuth: false,
},
},
// { // {
// path: 'search', // path: 'search',
// name: '菜单搜索', // name: '菜单搜索',

@ -8,365 +8,495 @@
ref="testForm" ref="testForm"
:model="formData" :model="formData"
:rules="rules" :rules="rules"
label-width="120px" label-width="90px"
label-position="right" label-position="right"
:validate-on-rule-change="false" :validate-on-rule-change="false"
class="vd-form-three" class="vd-form-three"
> >
<el-row :gutter="24"> <template v-if="partType == '热表'">
<el-col :span="8"> <el-row :gutter="24">
<el-form-item label="零件号:" prop="partCode"> <el-col :span="6">
<el-input v-model="formData.partCode" disabled placeholder="请输入" /> <el-form-item label="零件号:" prop="partCode">
</el-form-item> <el-input v-model="formData.partCode" disabled placeholder="请输入" />
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label="零件名称:" prop="partName"> <el-col :span="6">
<el-input v-model="formData.partName" disabled placeholder="请输入" /> <el-form-item label="零件名称:" prop="partName">
</el-form-item> <el-input v-model="formData.partName" disabled placeholder="请输入" />
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label="产品型号:" prop="productType"> <el-col :span="6">
<el-input v-model="formData.productType" placeholder="请输入" disabled /> <el-form-item label="产品型号:" prop="productType">
</el-form-item> <el-input v-model="formData.productType" placeholder="请输入" disabled />
</el-col> </el-form-item>
<!-- <el-col :span="8"> </el-col>
<el-form-item label="相似零件:" prop="productType"> <el-col :span="6">
<el-form-item label="是否印字:" prop="isPrint">
</el-form-item> <el-radio-group v-model="formData.isPrint">
</el-col> :disabled="disabled"--> <el-radio value="2"></el-radio>
<el-col :span="8" v-if="partType == '烧结'"> <el-radio value="1"></el-radio>
<el-form-item label="是否为玻璃饼:" prop="isClassCake"> </el-radio-group>
<el-switch </el-form-item>
v-model="formData.isClassCake" </el-col>
disabled <el-col :span="6">
active-color="#13ce66" <el-form-item label="材料:" prop="material">
inactive-color="#ff4949" <el-input v-model="formData.material" placeholder="请输入" />
active-value="1" </el-form-item>
inactive-value="0" </el-col>
/> <el-col :span="6">
</el-form-item> <el-form-item label="硬度:" prop="hardness">
</el-col> <el-input v-model="formData.hardness" placeholder="请输入" />
<el-col :span="8" v-if="partType == '烧结'"> </el-form-item>
<el-form-item label="是否印字:" prop="isPrint" > </el-col>
<el-radio-group v-if="formData.isGlassCake" v-model="formData.isPrint"> <el-col :span="6">
<el-radio value="2"></el-radio> <el-form-item label="物料编码:" prop="plateGoodsCode">
<el-radio value="3"></el-radio> <el-select
<el-radio value="1"></el-radio> v-model="formData.plateGoodsCode"
</el-radio-group> placeholder="请选择"
<el-radio-group v-model="formData.isPrint" v-else> style="width: 250px"
<el-radio value="2"></el-radio> clearable
<el-radio value="1"></el-radio> filterable
</el-radio-group> >
</el-form-item> <el-option :value="'04-05-023'" label="金钾-04-05-023" />
</el-col> <el-option :value="'04-05-024'" label="银板-04-05-024" />
<el-col :span="8" v-if="partType == '热表' && formData.isGlassCake"> </el-select>
<el-form-item label="材料:" prop="material"> </el-form-item>
<el-input v-model="formData.material" placeholder="请输入" /> </el-col>
</el-form-item> <el-col :span="6">
</el-col> <el-form-item label="产品应用领域:" prop="productApplicationArea">
<el-col :span="8" v-if="formData.isGlassCake"> <el-input v-model="formData.productApplicationArea" placeholder="请输入" />
<el-form-item label="粉重:" prop="powderWeight"> </el-form-item>
<el-input v-model="formData.powderWeight" placeholder="请输入" /> </el-col>
</el-form-item> </el-row>
</el-col> <el-row>
<el-col :span="8" v-if="formData.isGlassCake"> <el-col :span="6">
<el-form-item label="成型厚度:" prop="formingThickness"> <el-form-item label="镀种1:" prop="plate">
<el-input v-model="formData.formingThickness" placeholder="请输入" /> <el-input v-model="formData.plate" placeholder="请输入" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-if="partType == '烧结' && formData.isGlassCake"> <el-col :span="6">
<!-- prop="area" 热表必填 非热表不必填 --> <el-form-item label="镀层代号1:" prop="plateCode">
<el-form-item label="面积(dm²):" > <el-input v-model="formData.plateCode" placeholder="请输入" />
<el-input v-model="formData.area" placeholder="请输入" /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="6">
<el-col :span="8" v-if="partType == '热表'"> <el-form-item label="面积1(dm²):" prop="area">
<el-form-item label="硬度:" prop="hardness"> <el-input v-model="formData.area" placeholder="请输入" />
<el-input v-model="formData.hardness" placeholder="请输入" /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="6">
<el-col :span="8" v-if="partType == '热表'"> <el-form-item label="镀层厚度1:" prop="plateThickness">
<el-form-item label="材料:" prop="material"> <el-input v-model="formData.plateThickness" placeholder="请输入" />
<el-input v-model="formData.material" placeholder="请输入" /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="6">
<el-col <el-form-item label="镀种2:" prop="plateTwo">
:span="8" <el-input v-model="formData.plateTwo" placeholder="请输入" />
v-if="partType == '热表'" </el-form-item>
> </el-col>
<el-form-item label="物料编码:" prop="plateGoodsCode"> <el-col :span="6">
<el-select <el-form-item label="镀层代号2:" prop="plateCodeTwo">
v-model="formData.plateGoodsCode" <el-input v-model="formData.plateCodeTwo" placeholder="请输入" />
placeholder="请选择" </el-form-item>
style="width: 250px" </el-col>
clearable <el-col :span="6">
filterable <el-form-item label="面积2(dm²):" prop="areaTwo">
> <el-input v-model="formData.areaTwo" placeholder="请输入" />
<el-option :value="'04-05-023'" label="金钾-04-05-023" /> </el-form-item>
<el-option :value="'04-05-024'" label="银板-04-05-024" /> </el-col>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '热表'">
<el-form-item label="镀种1:" prop="plate">
<el-input v-model="formData.plate" placeholder="请输入" />
<!-- <el-select
v-model="formData.plate"
placeholder="请选择"
style="width: 250px"
clearable
filterable
>
<el-option
v-for="item in plateList"
:label="item.plating"
:value="item.id"
></el-option>
</el-select> -->
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '热表'">
<el-form-item label="镀层代号1:" prop="plateCode">
<el-input v-model="formData.plateCode" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '热表'">
<el-form-item label="面积1(dm²):" prop="area">
<el-input v-model="formData.area" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '热表'">
<el-form-item label="镀种2:" prop="plateTwo">
<el-input v-model="formData.plateTwo" placeholder="请输入" />
<!-- <el-select
v-model="formData.plateTwo"
placeholder="请选择"
style="width: 250px"
clearable
filterable
>
<el-option
v-for="item in plateList"
:label="item.plating"
:value="item.id"
></el-option>
</el-select> -->
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '热表'">
<el-form-item label="镀层代号2:" prop="plateCodeTwo">
<el-input v-model="formData.plateCodeTwo" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '热表'">
<el-form-item label="面积2(dm²):" prop="areaTwo">
<el-input v-model="formData.areaTwo" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '烧结' && !formData.isGlassCake">
<el-form-item label="镀层厚度:" prop="plateThickness">
<el-input v-model="formData.plateThickness" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '热表'">
<el-form-item label="镀层厚度1:" prop="plateThickness">
<el-input v-model="formData.plateThickness" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '热表'">
<el-form-item label="镀层厚度2:" prop="plateThickness">
<el-input v-model="formData.plateThickness" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="6">
<el-form-item label="产品应用领域:" prop="productApplicationArea"> <el-form-item label="镀层厚度2:" prop="plateThickness">
<el-input v-model="formData.productApplicationArea" placeholder="请输入" /> <el-input v-model="formData.plateThickness" placeholder="请输入" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8" v-if="partType == '烧结'"> </el-row>
<el-form-item label="玻璃饼直径"> <el-row :gutter="24">
<el-input-number <el-col :span="16">
:max="100000" <el-form-item label="工艺路线:">
:min="0" {{ formData.craftWay }}
v-model="formData.blbDiameter" </el-form-item>
precision="10" </el-col>
/> </el-row>
</el-form-item>
</el-col>
<el-col :span="8" v-if="partType == '烧结'">
<el-form-item label="壳体最大外径">
<el-input-number
:max="100000"
:min="0"
v-model="formData.externalDiameter"
precision="10"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="16"> <el-col :span="6">
<el-form-item label="工艺路线:"> <el-form-item label="涂色标个数:" prop="tsbNum">
{{ formData.craftWay }} <el-input-number
</el-form-item> v-model="formData.tsbNum"
</el-col> :min="1"
</el-row> :max="10"
controls-position="right"
<el-row :gutter="24"> placeholder="请输入"
<el-col :span="8"> />
<el-form-item label="涂色标个数:" prop="tsbNum"> </el-form-item>
<el-input-number </el-col>
v-model="formData.tsbNum" <el-col :span="6">
:min="1" <el-form-item label="涂色带个数:" prop="tsdNum">
:max="10" <el-input-number
controls-position="right" v-model="formData.tsdNum"
placeholder="请输入" :min="1"
/> :max="10"
</el-form-item> controls-position="right"
</el-col> placeholder="请输入"
<el-col :span="8"> />
<el-form-item label="涂色带个数:" prop="tsdNum"> </el-form-item>
<el-input-number </el-col>
v-model="formData.tsdNum" <el-col :span="6">
:min="1" <el-form-item label="涂箭头个数:" prop="tjtNum">
:max="10" <el-input-number
controls-position="right" v-model="formData.tjtNum"
placeholder="请输入" :min="1"
/> :max="10"
</el-form-item> controls-position="right"
</el-col> placeholder="请输入"
<el-col :span="8"> />
<el-form-item label="涂箭头个数:" prop="tjtNum"> </el-form-item>
<el-input-number </el-col>
v-model="formData.tjtNum" </el-row>
:min="1" <el-row :gutter="24">
:max="10" <el-col :span="14">
controls-position="right" <el-form-item label="色标色带:" prop="memo">
placeholder="请输入" <el-input
/> v-model="formData.memo"
</el-form-item> :rows="3"
</el-col> type="textarea"
</el-row> maxlength="150"
<el-row :gutter="24"> show-word-limit
<el-col :span="16"> placeholder="请输入"
<el-form-item label="色标色带:" prop="memo"> />
<el-input </el-form-item>
v-model="formData.memo" </el-col>
:rows="3" </el-row>
type="textarea"
maxlength="150" <el-row :gutter="24">
show-word-limit <el-col :span="14">
placeholder="请输入" <el-form-item label="关键信息:" prop="keyInfo">
/> <el-input
</el-form-item> v-model="formData.keyInfo"
</el-col> type="textarea"
</el-row> maxlength="150"
show-word-limit
<el-row :gutter="24"> rows="3"
<el-col :span="16"> placeholder="请输入"
<el-form-item label="关键信息:" prop="keyInfo"> />
<el-input </el-form-item>
v-model="formData.keyInfo" </el-col>
type="textarea" </el-row>
maxlength="150" <el-row :gutter="24">
show-word-limit <el-col :span="5">
rows="3" <el-form-item label="有效期:" prop="periodOfValidity">
placeholder="请输入" <el-radio-group v-model="formData.periodOfValidity" @change="periodOfValidityFn">
/> <el-radio value="1">长期有效</el-radio>
</el-form-item> <el-radio value="2">自定义</el-radio>
</el-col> </el-radio-group>
</el-row> </el-form-item>
<el-row :gutter="24"> </el-col>
<el-col :span="8"> <el-col :span="6" v-if="formData.periodOfValidity == '2'">
<el-form-item label="有效期:" prop="periodOfValidity"> <el-form-item label="有效周期(天):" prop="expirationPeriod" label-width="100px">
<el-radio-group v-model="formData.periodOfValidity" @change="periodOfValidityFn"> <el-input-number
<el-radio value="1">长期有效</el-radio> :max="100000"
<el-radio value="2">自定义</el-radio> :min="0"
</el-radio-group> v-model="formData.expirationPeriod"
</el-form-item> controls-position="right"
</el-col> placeholder="请输入"
<el-col :span="8" v-if="formData.periodOfValidity=='2'"> />
<el-form-item label="有效周期(天):" prop="expirationPeriod"> </el-form-item>
<el-input-number </el-col>
:max="100000" <el-col :span="6" v-if="formData.periodOfValidity == '2'">
:min="0" <el-form-item label="到期提醒(天):" prop="advanceRemind">
v-model="formData.expirationPeriod" <el-input-number
controls-position="right" :max="100000"
placeholder="请输入" :min="0"
style="width: 250px" v-model="formData.advanceRemind"
/> controls-position="right"
</el-form-item> placeholder="请输入"
</el-col> />
<el-col :span="8" v-if="formData.periodOfValidity=='2'"> </el-form-item>
<el-form-item label="到期提醒(天):" prop="advanceRemind"> </el-col>
<el-input-number </el-row>
:max="100000" <el-row :gutter="24">
:min="0" <el-col :span="24">
v-model="formData.advanceRemind" <el-form-item label="工艺校验:" prop="sinTer">
controls-position="right" <div style="width: 100%">
placeholder="请输入" <el-checkbox v-model="formData.goldMark" disabled>镀金标识</el-checkbox>
style="width: 250px" <el-checkbox
/> v-model="formData.markingsTest"
</el-form-item> @change="setDataLocal"
</el-col> :true-label="'1'"
</el-row> :false-label="'0'"
<el-row :gutter="24"> >涂色标</el-checkbox
<el-col >
:span="24" <el-checkbox
v-if="partType == '热表' || (partType == '烧结' && formData.isGlassCake)" v-model="formData.fluorescenceCheck"
> @change="setDataLocal"
<el-form-item label="工艺校验:" prop="sinTer"> :true-label="'1'"
<div style="width: 100%"> :false-label="'0'"
<el-checkbox v-model="formData.goldMark" disabled v-if="partType == '热表'" >荧光检</el-checkbox
>镀金标识</el-checkbox >
> <el-checkbox
<el-checkbox v-model="formData.hotDispose"
v-model="formData.markingsTest" @change="setDataLocal"
@change="setDataLocal" :true-label="'1'"
:true-label="'1'" :false-label="'0'"
:false-label="'0'" >热处理检验</el-checkbox
>涂色标</el-checkbox >
> <el-checkbox
<el-checkbox v-model="formData.inkjetPrinting"
v-model="formData.fluorescenceCheck" @change="setDataLocal"
@change="setDataLocal" :true-label="'1'"
v-if="partType == '热表'" :false-label="'0'"
:true-label="'1'" >喷码</el-checkbox
:false-label="'0'" >
>荧光检</el-checkbox </div>
> </el-form-item>
<el-checkbox </el-col>
v-model="formData.hotDispose" </el-row>
@change="setDataLocal" </template>
v-if="partType == '热表'" <template v-if="partType == '烧结'">
:true-label="'1'" <el-row :gutter="24">
:false-label="'0'" <el-col :span="6">
>热处理检验</el-checkbox <el-form-item label="零件号:" prop="partCode">
> <el-input v-model="formData.partCode" disabled placeholder="请输入" />
<el-checkbox </el-form-item>
v-model="formData.inkjetPrinting" </el-col>
@change="setDataLocal" <el-col :span="6">
v-if="partType == '热表'" <el-form-item label="零件名称:" prop="partName">
:true-label="'1'" <el-input v-model="formData.partName" disabled placeholder="请输入" />
:false-label="'0'" </el-form-item>
>喷码</el-checkbox </el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="产品型号:" prop="productType">
<el-input v-model="formData.productType" placeholder="请输入" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="是否为玻璃饼:" prop="isClassCake">
<el-switch
v-model="formData.isClassCake"
disabled
active-color="#13ce66"
inactive-color="#ff4949"
active-text="是"
inactive-text="否"
active-value="1"
inactive-value="0"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="是否印字:" prop="isPrint">
<el-radio-group v-model="formData.isPrint" v-if="notGlassCake">
<el-radio value="2"></el-radio>
<el-radio value="3"></el-radio>
<el-radio value="1"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer || !notGlassCake">
<el-form-item label="面积(dm²):">
<el-input v-model="formData.area" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer || !notGlassCake">
<el-form-item label="材料:" prop="material">
<el-input v-model="formData.material" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="硬度:" prop="hardness">
<el-input v-model="formData.hardness" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="物料编码:" prop="plateGoodsCode">
<el-select
v-model="formData.plateGoodsCode"
placeholder="请选择"
style="width: 250px"
clearable
filterable
> >
</div> <el-option :value="'04-05-023'" label="金钾-04-05-023" />
<!-- <div style="width: 100%" v-if="formData.goldMark==1 && partType == '热表'"> <el-option :value="'04-05-024'" label="银板-04-05-024" />
<el-text class="mx-1" type="danger">本零件需要编制一级和二级工艺</el-text> </el-select>
</div> --> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="6" v-if="notSinTer && notGlassCake">
</el-row> <el-form-item label="镀种:" prop="plate">
<el-input v-model="formData.plate" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="镀层代号:" prop="plateCode">
<el-input v-model="formData.plateCode" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="面积(dm²):" prop="area">
<el-input v-model="formData.area" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6" v-if="(child || formData.glassCake) && formData.sinTerType != 5">
<el-form-item label="粉重:" prop="powderWeight">
<el-input v-model="formData.powderWeight" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6" v-if="notSinTer && notGlassCake">
<el-form-item label="镀层厚度:" prop="plateThickness">
<el-input v-model="formData.plateThickness" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6" v-if="!notGlassCake">
<el-form-item label="成型厚度:" prop="formingThickness">
<el-input v-model="formData.formingThickness" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="产品应用领域:" prop="productApplicationArea">
<el-input v-model="formData.productApplicationArea" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="玻璃饼直径">
<el-input-number
:max="100000"
:min="0"
v-model="formData.blbDiameter"
precision="10"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="壳体最大外径">
<el-input-number
:max="100000"
:min="0"
v-model="formData.externalDiameter"
precision="10"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="涂色标个数:" prop="tsbNum">
<el-input-number
v-model="formData.tsbNum"
:min="1"
:max="10"
controls-position="right"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="涂色带个数:" prop="tsdNum">
<el-input-number
v-model="formData.tsdNum"
:min="1"
:max="10"
controls-position="right"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="涂箭头个数:" prop="tjtNum">
<el-input-number
v-model="formData.tjtNum"
:min="1"
:max="10"
controls-position="right"
placeholder="请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24" v-if="notGlassCake || !notSinTer">
<el-col :span="24">
<el-form-item label="工艺路线:">
{{ formData.craftWay }}
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item label="关键信息:" prop="keyInfo">
<el-input
v-model="formData.keyInfo"
type="textarea"
maxlength="150"
show-word-limit
rows="3"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item label="色标色带:" prop="memo">
<el-input
v-model="formData.memo"
:rows="3"
type="textarea"
maxlength="150"
show-word-limit
placeholder="请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="5">
<el-form-item label="有效期:" prop="periodOfValidity">
<el-radio-group v-model="formData.periodOfValidity" @change="periodOfValidityFn">
<el-radio value="1">长期有效</el-radio>
<el-radio value="2">自定义</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6" v-if="formData.periodOfValidity == '2'">
<el-form-item label="有效周期(天):" prop="expirationPeriod" label-width="100px">
<el-input-number
:max="100000"
:min="0"
v-model="formData.expirationPeriod"
controls-position="right"
placeholder="请输入"
/>
</el-form-item>
</el-col>
<el-col :span="6" v-if="formData.periodOfValidity == '2'">
<el-form-item label="到期提醒(天):" prop="advanceRemind">
<el-input-number
:max="100000"
:min="0"
v-model="formData.advanceRemind"
controls-position="right"
placeholder="请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="工艺校验:" prop="sinTer">
<div style="width: 100%">
<el-checkbox v-model="formData.goldMark" disabled>镀金标识</el-checkbox>
<el-checkbox
v-model="formData.markingsTest"
@change="setDataLocal"
:true-label="'1'"
:false-label="'0'"
>涂色标</el-checkbox
>
</div>
</el-form-item>
</el-col>
</el-row>
</template>
</el-form> </el-form>
</el-card> </el-card>
<el-card <el-card class="box-card" v-if="data.length > 0" style="margin-top: 24px">
class="box-card"
v-if="formData.isSintering == '1' && formData.isClassCake == '0'"
style="margin-top: 24px"
>
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span style="font-size: 16px">子件信息</span> <span style="font-size: 16px">子件信息</span>
</div> </div>
@ -672,20 +802,32 @@ export default {
if (this.data.length > 0) { if (this.data.length > 0) {
this.data.forEach(item => { this.data.forEach(item => {
item.$cellEdit = true; item.$cellEdit = true;
item.totalArea = (item.quota * item.area).toFixed(5); // 5 if (item.area < 0) {
// if (item.sinTerType == 1 && item.partName.indexOf('A1') > -1) { item.totalArea = 0;
// item.isElectroplating = '1'; } else {
// } item.totalArea = (item.quota * item.area).toFixed(5); // 5
}
}); });
} }
this.partType = res.data.data.dsPartEntity.isSintering == '1' ? '烧结' : '热表'; this.partType = res.data.data.dsPartEntity.isSintering == '1' ? '烧结' : '热表';
// this.partType = '';
if (this.formData.sinTerType == 3) {
this.formData.glassCake = true;
} else if (this.formData.sinTerType == 5) {
this.formData.sinTer = true;
} else {
this.formData.glassCake = false;
this.formData.sinTer = false;
}
this.sinTerChange(this.formData.sinTer);
this.glassCakeChange(this.formData.glassCake);
const craftWay = this.formData.craftWay;
if (craftWay.indexOf('涂色标') !== -1 || craftWay.indexOf('涂色带') !== -1) {
this.formData.markingsTest = true;
}
// if (res.data.data.dsPartEntity.isGlassCake === '0') {
this.formData.isGlassCake = false;
// } else {
// this.formData.isGlassCake = true;
// }
// this.getLocallyPlatedPartList(); // this.getLocallyPlatedPartList();
let selPart = this.locallyPlatedData.filter(item => { let selPart = this.locallyPlatedData.filter(item => {
return item.partCode == this.formData.partCode; return item.partCode == this.formData.partCode;
@ -695,10 +837,65 @@ export default {
this.formData.goldMark = true; this.formData.goldMark = true;
} }
} }
this.formData.isClassCake = true this.formData.isClassCake = true;
}); });
}, },
sinTerChange(v) {
if (v) {
this.notSinTer = false;
// this.rules = this.rules2;
// this.$set(this.rules, 'craftWay', [this.$validation.required]);
// if (!this.formData.expirationPeriod && this.formData.expirationPeriod == '') {
// this.$set(this.formData, 'expirationPeriod', 9999);
// }
// if (!this.formData.advanceRemind && this.formData.advanceRemind == '') {
// this.$set(this.formData, 'advanceRemind', 10);
// }
// if (!this.formData.area && this.formData.area == '') {
// this.$set(this.formData, 'area', 1);
// }
} else {
this.notSinTer = true;
if (this.notGlassCake) {
// this.rules = this.rules1;
// if (!this.childPage) {
// this.$set(this.rules, 'lettering', [this.$validation.required]);
// }
} else {
// this.$set(this.rules, 'craftWay', []);
}
}
},
glassCakeChange(value) {
if (value) {
this.notGlassCake = false;
// this.$set(this.rules, 'lettering', []);
// this.areaText = '';
// this.rules = this.rules2;
// if (!this.formData.expirationPeriod && this.formData.expirationPeriod == '') {
// this.$set(this.formData, 'expirationPeriod', 9999);
// }
// if (!this.formData.advanceRemind && this.formData.advanceRemind == '') {
// this.$set(this.formData, 'advanceRemind', 10);
// }
// if (!this.formData.area && this.formData.area == '') {
// this.$set(this.formData, 'area', 1);
// }
// this.$set(this.rules, 'craftWay', []);
} else {
this.notGlassCake = true;
// this.areaText = this.$t('global.area');
// if (this.notSinTer) {
// this.rules = this.rules1;
// }
// if (!this.childPage) {
// this.$set(this.rules, 'lettering', [this.$validation.required]);
// }
// this.$set(this.rules, 'craftWay', [this.$validation.required]);
}
},
// //
periodOfValidityFn(value) { periodOfValidityFn(value) {
if (value == 2) { if (value == 2) {

@ -33,10 +33,6 @@ import dsPartBasicInfo from './dsPartBasicInfo.vue';
import dsCraftPage from './dsCraft.vue' import dsCraftPage from './dsCraft.vue'
import processPlanning from './processPlanning.vue' import processPlanning from './processPlanning.vue'
import {
getPartDetail,getModelList
} from '@/api/processManagement/taskProcessing';
export default { export default {
name: 'DsPartIndex', name: 'DsPartIndex',
components: { components: {

@ -233,7 +233,7 @@ export default {
sortable: true, sortable: true,
search: false, search: false,
overHidden: true, overHidden: true,
width: 120,
headerAlign: 'center', headerAlign: 'center',
align: 'center', align: 'center',
}, },
@ -243,9 +243,9 @@ export default {
sortable: true, sortable: true,
search: false, search: false,
overHidden: true, overHidden: true,
width: 140,
headerAlign: 'center', headerAlign: 'center',
align: 'center', align: 'center',
width: 120,
}, },
], ],
}, },

@ -82,7 +82,6 @@ export default {
height: 'auto', height: 'auto',
calcHeight: 32, calcHeight: 32,
tip: false, tip: false,
size: 'medium',
simplePage: true, simplePage: true,
searchShow: true, searchShow: true,
searchMenuSpan: 6, searchMenuSpan: 6,
@ -183,7 +182,7 @@ export default {
if (this.form.zijian != '') { if (this.form.zijian != '') {
this.isComponentOpen = false; this.isComponentOpen = false;
this.isSubOpen = true; this.isSubOpen = true;
getSinteringPart({ partCode: this.form.bujian, zPartCode: this.form.zijian }).then(res => { getSinteringPart({ bPartCode: this.form.bujian, zPartCode: this.form.zijian }).then(res => {
this.data = res.data.data; this.data = res.data.data;
}); });
} else if (this.form.bujian != '') { } else if (this.form.bujian != '') {

@ -220,13 +220,13 @@ export default {
return; return;
} }
this.updateRow = this.selectionList; this.updateRow = this.selectionList;
this.selectionList.forEach(item => { // this.selectionList.forEach(item => {
if (item.children && item.children.length > 0) { // if (item.children && item.children.length > 0) {
item.children.forEach(element => { // item.children.forEach(element => {
this.updateRow.push(element); // this.updateRow.push(element);
}); // });
} // }
}); // });
// console.log(5555, this.updateRow); // console.log(5555, this.updateRow);
this.setCrewOpen = true; this.setCrewOpen = true;
this.title = '批量分派'; this.title = '批量分派';
@ -234,28 +234,25 @@ export default {
// //
setCrew(row) { setCrew(row) {
this.updateRow = [row]; this.updateRow = [row];
if (row.children.length > 0) { // if (row.children.length > 0) {
row.children.forEach(element => { // row.children.forEach(element => {
this.updateRow.push(element); // this.updateRow.push(element);
}); // });
} // }
// console.log(999999, this.updateRow); // console.log(999999, this.updateRow);
this.setCrewOpen = true; this.setCrewOpen = true;
this.title = '分派'; this.title = '分派';
}, },
// //
setCrewOpeSancel(isRefresh) { setCrewOpeSancel(isRefresh) {
// if (isRefresh) {
// this.$refs.myTable.load();
// }
this.setCrewOpen = false; this.setCrewOpen = false;
this.onLoad(this.page); this.onLoad(this.page,this.query);
}, },
// //
searchReset() { searchReset() {
this.query = {}; this.query = {};
this.parentId = 0; this.parentId = 0;
this.onLoad(this.page); this.onLoad(this.page,this.query);
}, },
// //
searchChange(params, done) { searchChange(params, done) {

@ -21,16 +21,17 @@
<template #menu-right="{ size }"> </template> <template #menu-right="{ size }"> </template>
<template #menu="scope"> <template #menu="scope">
{{ scope.$index }} <!-- {{ scope.$index }} -->
<el-button type="primary" link @click="viewDetails(scope.row.partId, scope.row)" <el-button type="primary" link @click="viewDetails(scope.row.partId, scope.row)"
>详情</el-button >详情</el-button
> >
<!-- 0 待分派 1 待接收 2 进行中 3 已完成 " --> <!-- 0 待分派 1 待接收 2 进行中 3 已完成 " -->
<el-button <el-button
type="primary" type="primary"
link link
@click="organization(scope.row.partId, scope.row)" @click="organization(scope.row.partId, scope.row)"
v-if="scope.row.taskStatus == 2" v-if="scope.row.taskStatus == 2|| scope.row.sinTerType != -1"
>编制</el-button >编制</el-button
> >
<!-- <el-button <!-- <el-button
@ -54,11 +55,7 @@
> >
</template> </template>
<template #bsWorkType.wtName="scope">
<span>
{{ scope.row.bsWorkType ? scope.row.bsWorkType.wtName : '-' }}
</span>
</template>
<template #name="{ row }"> <template #name="{ row }">
<i :class="row.source" style="margin-right: 5px" /> <i :class="row.source" style="margin-right: 5px" />
<span>{{ row.name }}</span> <span>{{ row.name }}</span>
@ -86,7 +83,6 @@
v-if="isOpen" v-if="isOpen"
:part-id="partId" :part-id="partId"
@cancel="cancel" @cancel="cancel"
:partType="partType"
:dialogType="dialogType" :dialogType="dialogType"
:updateRow="updateRow" :updateRow="updateRow"
></dsPartIndex> ></dsPartIndex>
@ -193,6 +189,7 @@ export default {
searchSpan: 6, searchSpan: 6,
searchMenuPosition: 'right', searchMenuPosition: 'right',
align: 'center', align: 'center',
load: this.loadNode, //
column: [ column: [
{ {
label: '零件号', label: '零件号',
@ -346,16 +343,16 @@ export default {
headerAlign: 'center', headerAlign: 'center',
align: 'center', align: 'center',
}, },
{ // {
label: '接收时间', // label: '',
prop: 'receptionTime', // prop: 'receptionTime',
sortable: true, // sortable: true,
search: false, // search: false,
overHidden: true, // overHidden: true,
width: 180, // width: 180,
headerAlign: 'center', // headerAlign: 'center',
align: 'center', // align: 'center',
}, // },
], ],
}, },
data: [], data: [],
@ -422,13 +419,8 @@ export default {
this.showPartDetails = true; this.showPartDetails = true;
this.partId = partId; this.partId = partId;
this.detailsRow = row; this.detailsRow = row;
this.dialogType = 'view'; this.dialogType = 'view';
if (row.children && row.children.length >= 0) {
this.partType = '烧结';
} else {
this.partType = '热表';
}
}, },
// //
organization(partId, row) { organization(partId, row) {
@ -441,11 +433,7 @@ export default {
} }
this.dialogType = 'edit'; this.dialogType = 'edit';
if (row.children && row.children.length >= 0) {
this.partType = '烧结';
} else {
this.partType = '热表';
}
}, },
// //
setBathCrew(row) { setBathCrew(row) {

@ -0,0 +1,327 @@
<template>
<basic-container>
<avue-crud
:option="option"
:table-loading="loading"
:data="data"
v-model="form"
v-model:page="page"
ref="crud"
@search-change="searchChange"
@search-reset="searchReset"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template #menu-left> </template>
<template #menu-right> </template>
<template #menu="{ row }"> </template>
<template #heatTreat="scope"> </template>
</avue-crud>
</basic-container>
</template>
<script>
import { queryMakeRec } from '@/api/workReport/index.js';
export default {
components: {},
data() {
return {
form: {},
selectionList: [],
query: {},
loading: false,
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
option: {
columnSort: true,
tip: false,
height: 'auto',
calcHeight: 32,
simplePage: false,
searchShow: true,
searchMenuSpan: 6,
searchIcon: true,
searchIndex: 3,
tree: false,
border: true,
index: true,
selection: false,
addBtn: false,
editBtn: false,
viewBtn: false,
delBtn: false,
editBtnText: '修改',
labelWidth: 120,
menuWidth: 80,
dialogWidth: 900,
dialogClickModal: false,
searchEnter: true,
excelBtn: false,
filterBtn: true,
searchShowBtn: false,
excelBtn: true,
showOverflowTooltip: true,
addBtnIcon: ' ',
viewBtnIcon: ' ',
delBtnIcon: ' ',
editBtnIcon: ' ',
gridBtn: false,
searchLabelPosition: 'left',
searchGutter: 24,
searchSpan: 6,
menuAlign: 'left',
gridBtn: false,
searchMenuPosition: 'right',
align: 'center',
menu:false,
column: [
{
label: '车间订单号',
prop: 'woCode',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '产品号',
prop: 'partCode',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '流程卡号',
prop: 'cardNo',
search: true,
sortable: true,
span: 12,
width:150,
},
{
label: '产品型号',
prop: 'productType',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '批次',
prop: 'batchNo',
search: true,
sortable: true,
span: 12,
width:150,
},
{
label: '产品名称',
prop: 'partName',
search: true,
sortable: true,
span: 12,
width:150,
},
{
label: '镀种信息',
prop: 'plate',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '生产标识',
prop: 'productIdent',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '上序',
prop: 'frontPpsName',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '上一班组',
prop: 'frontMakeTeamName',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '加工工序',
prop: 'ppsName',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '加工班组',
prop: 'makeTeamName',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '下序',
prop: 'nextPpsName',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '下一班组',
prop: 'nextMakeTeamName',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '合格数量',
prop: 'workQty',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '面积(d㎡)',
prop: 'ypArea',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '报废数量',
prop: 'scrapQty',
search: false,
sortable: true,
span: 12,
width:150,
},
{
label: '报工时间',
prop: 'makeTime',
search: false,
sortable: true,
span: 12,
width:150,
},
],
},
data: [],
};
},
methods: {
rowSave(row, done, loading) {
// addPersonAbility(row).then(
// () => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
// done();
// },
// error => {
// window.console.log(error);
// loading();
// }
// );
},
rowUpdate(row, index, done, loading) {
// updatePersonAbility(row).then(
// () => {
// this.onLoad(this.page);
// this.$message({
// type: 'success',
// message: '!',
// });
// done();
// },
// error => {
// window.console.log(error);
// loading();
// }
// );
},
rowDel(row) {
this.$confirm('确定将选择数据删除?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
// return removePersonAbility(row.id);
})
.then(() => {
this.onLoad(this.page);
this.$message({
type: 'success',
message: '操作成功!',
});
});
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
selectionChange(list) {
this.selectionList = list;
},
selectionClear() {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
refreshChange() {
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
this.loading = true;
queryMakeRec(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
this.data = res.data.data.records;
this.loading = false;
this.selectionClear();
});
},
},
mounted() {},
};
</script>
d

@ -23,7 +23,15 @@
<template #menu-right> </template> <template #menu-right> </template>
<template #menu="{ row }"> </template> <template #menu="{ row }"> </template>
<template #heatTreat="scope"> </template> <template #standardProcessAbility="scope">
<span v-if="scope.row.partType==1||scope.row.partType==2||scope.row.partType==3">
<!-- <i v-for="(item,index) in JSON.parse(scope.row.standardProcessAbility)" :key="index">
{{ }}
</i> -->
{{ JSON.parse(scope.row.standardProcessAbility) }}
</span>
<span v-else>{{ scope.row.standardProcessAbility }}</span>
</template>
</avue-crud> </avue-crud>
</basic-container> </basic-container>
</template> </template>
@ -160,6 +168,15 @@ export default {
disabled: true, disabled: true,
// display:false, // display:false,
}, },
{
label: '设备型号',
prop: 'equipNameType',
search: false,
sortable: true,
span: 12,
width: 120,
disabled: true,
},
// { // {
// label: '', // label: '',
// prop: 'equipCode', // prop: 'equipCode',

@ -26,17 +26,17 @@
</template> </template>
<script> <script>
import taskCope from '../taskCope/index.vue'; import taskCope from '@/views/zhgd-work/taskCope/index.vue';
export default { export default {
components: { taskCope }, components: { taskCope },
data() { data() {
return { return {
accessData: [ accessData: [
{ name: '工序接收', url: 'plan', page: '/taskCope' }, { name: '工序接收', url: 'plan', page: '/taskCope' },
{ name: '工序报工', url: 'rule', page: '/productionSchedulingPlan/productRlue ' }, { name: '工序报工', url: 'rule', page: '/workReport' },
{ name: '工序检验', url: 'product' }, { name: '工序检验', url: 'product',page:'/workCheck' },
{ name: '工艺模板', url: 'craft' }, // { name: '', url: 'craft' },
{ name: '质量检验', url: 'quality' }, // { name: '', url: 'quality' },
], ],
}; };
}, },

@ -10,17 +10,17 @@
/> />
</template> </template>
<template #menu-right> <template #menu-right>
<el-button type="primary" @click="receiveBatch('add')">批量接收 </el-button> <el-button type="primary" @click="receiveBatch()">批量接收 </el-button>
</template> </template>
<template #menu> <template #menu="scope">
<el-button type="text" @click="delFn(scope.row)">删除</el-button> <el-button type="text" @click="delFn(scope.row,scope.$index)">删除</el-button>
</template> </template>
</avue-crud> </avue-crud>
</basic-container> </basic-container>
</template> </template>
<script> <script>
import { loadNotReceived } from '@/api/taskCope/index'; import { loadNotReceived,workPlanReceive } from '@/api/taskCope/index';
export default { export default {
components: {}, components: {},
data() { data() {
@ -80,35 +80,35 @@ export default {
column: [ column: [
{ {
label: '车间订单号', label: '车间订单号',
prop: 'partCode', prop: 'woCode',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '产品号', label: '产品号',
prop: 'partName', prop: 'partCode',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '流程卡号', label: '流程卡号',
prop: 'partName', prop: 'nextRoam',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '产品型号', label: '产品型号',
prop: 'partName', prop: 'productType',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '批次', label: '批次',
prop: 'partName', prop: 'batchNo',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
@ -122,7 +122,7 @@ export default {
}, },
{ {
label: '当前工序', label: '当前工序',
prop: 'partName', prop: 'currentWpTitle',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
@ -143,91 +143,91 @@ export default {
}, },
{ {
label: '镀种信息', label: '镀种信息',
prop: 'partName', prop: 'plate',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '生产标识', label: '生产标识',
prop: 'partName', prop: 'prodIdent',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '订单优先级', label: '订单优先级',
prop: 'partName', prop: 'priorityTitle',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '需求部门', label: '需求部门',
prop: 'partName', prop: 'useDept',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '生产数量', label: '生产数量',
prop: 'partName', prop: 'makeQty',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '面积(d㎡)', label: '面积(d㎡)',
prop: 'partName', prop: 'poArea',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '交期', label: '交期',
prop: 'partName', prop: 'demandDate',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '计划员', label: '计划员',
prop: 'partName', prop: 'planUser',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '计划下达时间', label: '计划下达时间',
prop: 'partName', prop: 'releaseDate',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '计划完工时间', label: '计划完工时间',
prop: 'partName', prop: 'planEndTime',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '已入库数量', label: '已入库数量',
prop: 'partName', prop: 'inventoryQty',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '未入库数量', label: '未入库数量',
prop: 'partName', prop: 'notInQty',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '加工班组', label: '加工班组',
prop: 'partName', prop: 'currentMakeTeam',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
@ -248,14 +248,14 @@ export default {
}, },
{ {
label: '领料状态', label: '领料状态',
prop: 'partName', prop: 'pickingStatusTitle',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
}, },
{ {
label: '运行状态', label: '运行状态',
prop: 'partName', prop: 'runStatusTitle',
search: false, search: false,
sortable: false, sortable: false,
width: '120', width: '120',
@ -267,31 +267,50 @@ export default {
}; };
}, },
methods: { methods: {
delFn(row,index){ delFn(row, index) {
this.$confirm('确定要删除该条数据吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
// data
this.data.splice(index, 1);
this.$message.success('删除成功');
})
.catch(() => {});
}, },
// //
changeCode() { changeCode() {
this.loading = true; this.loading = true;
loadNotReceived(this.cardNo) loadNotReceived({ cardNo: this.cardNo })
.then(res => { .then(res => {
this.cardNo = ''; this.cardNo = '';
console.log(res, 'resres'); this.data.push(res.data.data);
this.loading = false;
console.log(res.data.data, 'resres');
}) })
.catch(err => {}); .catch(err => {
this.cardNo = '';
this.loading = false;
});
}, },
// //
receiveBatch(type) { receiveBatch() {
if (this.selectionList.length === 0) {
this.$message.warning('请选择要处理的数据');
return;
}
this.$confirm('确定要批量处理吗?', '提示', { this.$confirm('确定要批量处理吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
}).then(() => { }).then(() => {
this.loading = true; this.loading = true;
let ids = this.data.map(item => item.wpId);
workPlanReceive({ wpIds:ids.join(',') }).then(res => {
this.loading = false;
this.data=[]
this.$message.success('处理成功');
}).catach(err => {
this.loading = false;
});
}); });
}, },
}, },

@ -0,0 +1,275 @@
<template>
<basic-container>
<el-form ref="form" :model="formData" :rules="rules" inline label-width="80px">
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="流程卡号" prop="cardNo">
<el-input
ref="codeFocus"
v-model="formData.cardNo"
placeholder="请扫描流程卡号"
@keyup.enter.native="codeKeyUp"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-descriptions
:column="3"
label-width="100px"
:content-style="{ 'min-width': '120px' }"
class="margin-top"
border
>
<el-descriptions-item>
<template #label> 流程卡号 </template>
{{ tableObj.cardNo }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 车间订单号 </template>
{{ tableObj.woCode }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 批次 </template>
{{ tableObj.batchNo }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 零件号 </template>
{{ tableObj.partCode }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 零件名称 </template>
{{ tableObj.partName }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 上序号 </template>
{{ tableObj.frontOrders }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 上序名称 </template>
{{ tableObj.frontPpsName }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 工序号 </template>
{{ tableObj.orders }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 工序名称 </template>
{{ tableObj.ppsName }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 加工班组 </template>
{{ tableObj.makeTeam }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 检验数量 </template>
<el-input v-model="tableObj.makeQty" placeholder="请输入" type="number" min="0" />
</el-descriptions-item>
<el-descriptions-item>
<template #label> 是否合格 </template>
<div>
<el-radio
v-model="fillInObj.checkResult"
:label="1"
@input="checkResulInput($event, fillInObj)"
>合格</el-radio
>
<el-radio
v-model="fillInObj.checkResult"
:label="2"
@input="checkResulInput($event, fillInObj)"
>不合格</el-radio
>
<el-radio
v-model="fillInObj.checkResult"
:label="-1"
@input="checkResulInput($event, fillInObj)"
>NA</el-radio
>
</div>
</el-descriptions-item>
<el-descriptions-item>
<template #label> 合格数量 </template>
<el-input
v-model="fillInObj.qualifiedQty"
placeholder="请输入"
type="number"
min="0"
/>
</el-descriptions-item>
<el-descriptions-item>
<template #label> 不合格数量 </template>
<el-input
v-model="fillInObj.unqualifiedQty"
placeholder="请输入"
type="number"
min="0"
@change="unqualifiedQtyChange"
/>
</el-descriptions-item>
<!-- 比例 -->
<el-descriptions-item>
<template #label> 比例(%) </template>
<el-input v-model="fillInObj.scale" placeholder="请输入" type="number" />
</el-descriptions-item>
<el-descriptions-item>
<template #label> 不良原因 </template>
<!-- <poor-reason v-model="fillInObj.poorReason" placeholder="请选择" @change="prChange" /> -->
<el-select v-model="fillInObj.poorReason" placeholder="请选择" @change="prChange">
<el-option
v-for="item in poorReasonList"
:key="item.dictValue"
:label="item.dictValue"
:value="item.dictValue"
></el-option>
</el-select>
</el-descriptions-item>
<el-descriptions-item>
<template #label> 不良描述 </template>
<el-input
v-model="fillInObj.poorMemo"
:autosize="{ minRows: 2, maxRows: 5 }"
type="textarea"
/>
</el-descriptions-item>
</el-descriptions>
</el-col>
</el-row>
</el-form>
<span style="text-align: center; display: block; margin: 20px 0px 10px 0px">
<el-button slot="right" type="primary" :disabled="isDisabled" @click="onSubmit"
>保存</el-button
>
</span>
</basic-container>
</template>
<script>
import { loadProTest, saveProCheck } from '@/api/workCheck/index.js';
// defective_cause
import { getDictionary } from '@/api/system/dict';
export default {
data() {
return {
formData: {
cardNo: null,
},
rules: {
cardNo: [{ required: true, message: '请输入', trigger: 'blur' }],
},
tableObj: {
makeQty: null,
},
fillInObj: {
checkResult: 1,
qualifiedQty: null,
unqualifiedQty: null,
scale: 0,
poorReason: '',
poorMemo: '',
},
isDisabled: false,
poorReasonList: [], //
};
},
mounted(){
this.getDictionary()
},
methods: {
getDictionary(){
getDictionary({code:'defective_cause'}).then(res => {
this.poorReasonList = res.data.data;
});
},
unqualifiedQtyChange(v) {
this.fillInObj.unqualifiedQty = v;
// this.$set(this.qcReviewSheet, 'unqualifiedQty', v);
const makeQty = this.tableObj.makeQty;
if (v > makeQty) {
this.$message.error('不合格数不能大于' + makeQty);
this.$set(this.fillInObj, 'unqualifiedQty', null);
this.$set(this.fillInObj, 'scale', null);
} else {
this.$set(this.fillInObj, 'scale', Math.round((v / makeQty) * 100));
}
},
checkResulInput(v, item) {
if (v === 2) {
this.fillInObj.unqualifiedQty = this.tableObj.makeQty;
this.fillInObj.qualifiedQty = 0;
} else {
this.fillInObj.qualifiedQty = this.tableObj.makeQty;
this.fillInObj.unqualifiedQty = 0;
}
},
prChange(id, item) {
// this.fillInObj.poorReason = '';
// if (item) {
// this.fillInObj.poorReason = item.name;
// } else {
// this.fillInObj.poorReason = '';
// }
},
codeKeyUp() {
if (this.formData.cardNo) {
loadProTest({ cardNo: this.formData.cardNo }).then(res => {
this.tableObj = res.data.data;
this.fillInObj = {
checkResult: 1,
qualifiedQty: this.tableObj.makeQty,
unqualifiedQty: 0,
scale: 0,
poorReason: '',
poorMemo: '',
};
});
}
},
onSubmit() {
this.isDisabled = true;
this.$refs.form.validate(valid => {
if (valid) {
const num = Number(this.fillInObj.unqualifiedQty) + Number(this.fillInObj.qualifiedQty);
if (num > this.tableObj.makeQty) {
this.$message.warning('合格与不合格数量之和不能大于检验数量!!!');
return;
}
if (this.fillInObj.checkResult === 2) {
if (this.fillInObj.poorReason === '' || this.fillInObj.poorMemo === '') {
this.$message.warning('请填写原因或描述!!!');
return;
}
}
if (Number(this.fillInObj.scale) > 100 || Number(this.fillInObj.scale) < 0) {
this.$message.warning('比例所填值的范围在0~100!!!');
return;
}
this.fillInObj.makeQty = this.tableObj.makeQty;
this.fillInObj.wpId = this.tableObj.wpId;
saveProCheck(this.fillInObj)
.then(res => {
this.$message.success('检验成功!!!');
this.tableObj = {
makeQty: null,
};
this.fillInObj = {
checkResult: 1,
qualifiedQty: null,
unqualifiedQty: null,
scale: 0,
poorReason: '',
poorMemo: '',
};
this.formData.cardNo = '';
this.isDisabled = false;
})
.catch(err => {});
}
});
},
},
};
</script>
<style lang="scss" scoped>
</style>

@ -0,0 +1,294 @@
<template>
<basic-container>
<el-form ref="form" :model="formData" :rules="rulesMold" label-width="90px">
<el-row :gutter="24">
<el-col :span="6" :offset="3">
<el-form-item label="流程卡号:" prop="cardNo">
<el-input
ref="codeFocus"
v-model="formData.cardNo"
placeholder="请输入"
@keyup.enter.native="codeKeyUp"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="合格数量:" prop="workQty">
<el-input-number
:disabled="workPlanDto.notWorkQty - formData.scrapQty == 0"
v-model="formData.workQty"
@change="handleChange"
:min="0"
:max="workPlanDto.notWorkQty - formData.scrapQty"
label="请输入"
@blur="scrapQtyBlur($event, 'workQty')"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="报废数量:" prop="scrapQty">
<el-input-number
:disabled="workPlanDto.notWorkQty - formData.workQty == 0"
v-model="formData.scrapQty"
:min="0"
:max="workPlanDto.notWorkQty - formData.workQty"
@blur="scrapQtyBlur($event, 'scrapQty')"
></el-input-number>
</el-form-item>
</el-col>
<el-col :span="20" :offset="2">
<el-descriptions
:column="3"
label-width="100px"
:content-style="{ 'min-width': '120px' }"
class="margin-top"
border
>
<el-descriptions-item>
<template #label> 车间订单号 </template>
{{ workPlanDto.woCode }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 流程卡号 </template>
{{ workPlanDto.cardNo }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 批次 </template>
{{ workPlanDto.batchNo }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 产品号 </template>
{{ workPlanDto.partCode }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 产品型号 </template>
{{ workPlanDto.productType }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 产品名称 </template>
{{ workPlanDto.partName }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 镀种信息 </template>
{{ workPlanDto.plate }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 当前工序 </template>
{{ workPlanDto.currentWpTitle }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 接收数量 </template>
{{ workPlanDto.makeQty }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 已合格数量 </template>
{{ workPlanDto.workQty }}
</el-descriptions-item>
<el-descriptions-item>
<template #label> 报废数量 </template>
{{ workPlanDto.scrapQty }}
</el-descriptions-item>
</el-descriptions>
</el-col>
<el-col :span="5" :offset="2">
<el-form-item label="色标数量:" prop="flagQty">
<el-input-number v-model="formData.flagQty" :min="0" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="颜色1:" prop="flagColourOne">
<el-input v-model="formData.flagColourOne" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="颜色2:" prop="flagColourTwo">
<el-input v-model="formData.flagColourTwo" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="油墨:" prop="flagInk">
<el-input v-model="formData.flagInk" />
</el-form-item>
</el-col>
<el-col :span="5" :offset="2">
<el-form-item label="色带数量:" prop="beltQty">
<el-input-number v-model="formData.beltQty" :min="0" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="颜色1:" prop="beltColourOne">
<el-input v-model="formData.beltColourOne" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="颜色2:" prop="beltColourTwo">
<el-input v-model="formData.beltColourTwo" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="油墨:" prop="beltInk">
<el-input v-model="formData.beltInk" />
</el-form-item>
</el-col>
<el-col :span="18" :offset="2">
<el-form-item label="备注" prop="memo">
<el-input v-model="formData.memo" type="textarea" />
</el-form-item>
</el-col>
<el-col
v-if="workPlanDto.currentWpId != null && workPlanDto.frontMakeTeam == null"
:span="24"
>
<el-form-item label="自检是否合格:" label-width="120px" style="line-height: 40px">
<el-radio-group v-model="formData.resource">
<el-radio :label="true">合格</el-radio>
<el-radio :label="false">不合格</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<!-- 热处理 -->
<template v-if="heatTreatmentShow">
<el-col :span="6" :offset="2">
<el-form-item label="试片数量/个:" label-width="120px">
<el-radio-group v-model="heatTreatment.resource">
<el-radio label="合格">合格</el-radio>
<el-radio label="不合格">不合格</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="" label-width="0px">
<el-input v-model="heatTreatment.num" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="材料厚度/mm:" label-width="120px">
<el-input v-model="heatTreatment.thickness"
/></el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="热处理工装编号:" label-width="120px">
<el-input v-model="heatTreatment.code" />
</el-form-item>
</el-col>
<el-col :span="6" :offset="2">
<el-form-item label="材料检验编号:" label-width="120px">
<el-input v-model="heatTreatment.inspectCode" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="材料检验编号:" label-width="120px">
<el-input v-model="heatTreatment.status" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="原材料制品形式:" label-width="120px">
<el-input v-model="heatTreatment.shape" />
</el-form-item>
</el-col>
</template>
</el-row>
</el-form>
<span style="text-align: center; display: block; margin-top: 8px">
<el-button slot="right" type="primary" :disabled="isDisabled" @click="onSubmit"
>报工</el-button
>
</span>
</basic-container>
</template>
<script>
import { loadCurrentWp, saveMakeRec } from '@/api/workReport/index';
export default {
components: {},
data() {
return {
workPlanDto: {},
workPlanDto: {},
isDisabled: false,
formData: {
flagQty: 0,
beltQty: 0,
prWorkPlan: {},
workQty: 0,
scrapQty: 0,
resource: true,
},
rulesMold: {
cardNo: [{ required: true, message: '请输入', trigger: 'blur' }],
workQty: [{ required: true, message: '请输入', trigger: 'blur' }],
scrapQty: [{ required: true, message: '请输入', trigger: 'blur' }],
},
heatTreatment: { resource: '合格' },
heatTreatmentShow: false,
};
},
methods: {
codeKeyUp() {
if (this.formData.cardNo) {
loadCurrentWp({ cardNo: this.formData.cardNo })
.then(res => {
this.workPlanDto = res.data.data;
this.formData.prWorkPlan.wpId = this.workPlanDto.currentWpId;
if (
this.workPlanDto != null &&
this.workPlanDto.currentWpTitle != null &&
this.workPlanDto.currentWpTitle.split('|')[1] === '热处理'
) {
this.heatTreatmentShow = true;
}
this.formData.workQty = this.workPlanDto.notWorkQty;
this.formData.scrapQty = 0;
})
.catch(err => {});
}
},
scrapQtyBlur(e, str) {
if (!e.target.value) {
if (str === 'workQty') {
this.formData.workQty = 0;
} else {
this.formData.scrapQty = 0;
}
}
},
onSubmit() {
this.isDisabled = true;
this.$refs.form.validate(valid => {
if (valid) {
if (this.formData.workQty || this.formData.scrapQty) {
saveMakeRec({ ...this.formData, ...this.heatTreatment,...this.formData.prWorkPlan }).then(res => {
this.$message.success('保存成功');
this.$refs.form.resetFields();
this.workPlanDto = {};
this.formData = {
prWorkPlan: {},
workQty: 0,
scrapQty: 0,
resource: true,
};
this.heatTreatment = { resource: '合格' };
this.heatTreatmentShow = false;
this.isDisabled = false;
});
} else {
this.$message.error('请填写报工数量');
this.isDisabled = false;
}
}
});
},
},
mounted() {},
created() {},
beforeDestroy() {},
};
</script>
<style lang="scss" scoped>
.margin-top {
margin-bottom: 15px;
}
</style>
Loading…
Cancel
Save