Commit 052957f9 authored by 仇晓婷's avatar 仇晓婷

Merge branch 'product' of http://git.mes123.com/zhouyx/mes-ui into product

parents 9dc65f96 dfd83c51
<template>
<ul class="actions">
<li class="item" v-for="(li, i) in items" @click="detail(li)">
<span v-if="mode == 'text'" class="text" v-text="li.label"></span>
<Tooltip v-if="mode == 'icon'" :content="li.label"
><Icon :type="li.icon"
/></Tooltip>
<div v-else class="ib">
<Icon type="li.icon" />
<span class="text" v-text="li.label"></span>
</div>
</li>
</ul>
</template>
<script>
export default {
name: "actions",
data() {
return {};
},
props: {
row: {
type: Object,
},
items: {
type: Array,
default: () => {
return [
{ label: "复制", icon: "md-copy", vclick: "" },
{ label: "新增", icon: "md-add", vclick: "" },
{ label: "删除", icon: "md-trash", vclick: "" },
{ label: "移动", icon: "md-move", vclick: "" },
{ label: "派发", icon: "ios-alarm", vclick: "" },
];
},
},
mode: {
// 显示类型
type: String,
validator: (value) => {
// 这个值必须匹配下列字符串中的一个
return ["icon", "text", "icon-text"].indexOf(value) !== -1;
},
default: "icon",
},
disabled: {
type: Boolean,
default: true,
},
max: {
type: Number,
default: 3,
},
},
methods: {
detail(li) {
if (li.confirm) {
var msg = li.confirm;
if (li.confirm === true) {
msg = `确定要${li.label}吗?`;
}
this.$Modal.confirm({
title: "操作确认",
content: msg,
onOk: () => {
this.$emit("on-click", this.row, li);
},
});
} else {
this.$emit("on-click", this.row, li);
}
},
},
};
</script>
<style lang="less">
.actions {
ul {
li {
float: left;
list-style: none;
width: 20px;
height: 20px;
text-align: center;
margin-left: 5px;
color: red;
}
}
}
</style>
\ No newline at end of file
...@@ -1818,27 +1818,24 @@ export default { ...@@ -1818,27 +1818,24 @@ export default {
type: '类型', type: '类型',
attachment: '附件', attachment: '附件',
executor: '执行人', executor: '执行人',
},
project_main: {
creationTime: '创建时间',
creatorUserId: '创建人',
lastModificationTime: '更新时间',
lastModifierUserId: '更新人',
isDeleted: '删除人',
deletionTime: '删除时间',
deleterUserId: '删除人',
title: '标题',
note: '备注',
state: '状态',
type: '分类',
picture: '图片',
attachment: '附件',
phase: '阶段',
startDate: '开始日期',
endDate: '结束日期',
businessUnits: '业务单位',
} }
,
project_main: {
creationTime: '创建时间',
creatorUserId: '创建人',
lastModificationTime: '更新时间',
lastModifierUserId: '更新人',
isDeleted: '删除人',
deletionTime: '删除时间',
deleterUserId: '删除人',
title: '标题',
note: '备注',
state: '状态',
type: '分类',
picture: '图片',
attachment: '附件',
phase: '阶段',
startDate: '开始日期',
endDate: '结束日期',
businessUnits: '业务单位',
}
} }
<template> <template>
<span class="i-layout-header-trigger i-layout-header-trigger-min"> <span class="i-layout-header-trigger i-layout-header-trigger-min">
<Dropdown transfer trigger="hover" @on-click="handleClickUserDropdown"> <Dropdown transfer trigger="hover" @on-click="handleClickUserDropdown">
<span @click="openModelBugAdd"> <span @click="openModelBugAdd">
<Badge :count="bugCount === 0 ? null : bugCount" :overflow-count="99" :offset="[10, 0]"> <Badge :count="bugCount === 0 ? null : bugCount" :overflow-count="99" :offset="[10, 0]">
<Icon type="ios-bug" size="18" /> <Icon type="ios-bug" size="18" />
</Badge> </Badge>
</span> </span>
<Icon type="md-arrow-dropdown"></Icon> <Icon type="md-arrow-dropdown"></Icon>
<DropdownMenu slot="list"> <DropdownMenu slot="list">
<DropdownItem name="bug">bug列表</DropdownItem> <DropdownItem name="bug">bug列表</DropdownItem>
</DropdownMenu> </DropdownMenu>
</Dropdown> </Dropdown>
<Modal title="新增bug" v-model="bugAdd" fullscreen :z-index="10"> <Modal title="新增bug" v-model="bugAdd" fullscreen :z-index="999">
<addBugModal ref="addBug"></addBugModal> <addBugModal ref="addBug"></addBugModal>
<div slot="footer"> <div slot="footer">
<Button @click="addCancel">取消</Button> <Button @click="addCancel">取消</Button>
<Button type="primary" @click="addSave">确定</Button> <Button type="primary" @click="addSave">确定</Button>
</div> </div>
</Modal> </Modal>
</span> </span>
</template> </template>
<script> <script>
import addBugModal from "@/pages/bug/component/add"; import addBugModal from "@/pages/bug/component/add";
export default { export default {
name: "addBug", name: "addBug",
components: { components: {
addBugModal addBugModal
},
data() {
return {
bugAdd: false,
bugCount:3
};
},
computed: {},
methods: {
async handleClickUserDropdown(name) {
if (name === "bug") {
this.$router.push({ name: "bug" });
}
}, },
openModelBugAdd() { data() {
this.bugAdd = true; return {
this.$refs.addBug.getEid(); bugAdd: false,
this.$refs.addBug.initial(); bugCount: 3
};
}, },
addCancel() { computed: {},
this.$refs.addBug.resetFields(); methods: {
this.bugAdd = false; async handleClickUserDropdown(name) {
if (name === "bug") {
this.$router.push({
name: "bug"
});
}
},
openModelBugAdd() {
this.bugAdd = true;
this.$refs.addBug.getEid();
this.$refs.addBug.initial();
},
addCancel() {
this.$refs.addBug.resetFields();
this.bugAdd = false;
},
addSave() {
let param = this.$refs.addBug.addBugInfo();
//alert(JSON.stringify(param))
if (param.id == null) {
//增加确定
this.$http.bug.createorupdate(param).then(res => {
if (res.result.status) {
this.$Message.success("新增成功!");
let newId = res.result.bugId;
this.$refs.addBug.updateEid(newId);
} else {
this.$Message.error("新增失败!");
}
this.$refs.addBug.resetFields();
this.bugAdd = false;
});
} else {
this.$Message.error("新增失败!");
}
}
}, },
addSave() { created() {},
let param = this.$refs.addBug.addBugInfo(); mounted() {}
//alert(JSON.stringify(param))
if (param.id == null) {
//增加确定
this.$http.bug.createorupdate(param).then(res => {
if (res.result.status) {
this.$Message.success("新增成功!");
let newId = res.result.bugId;
this.$refs.addBug.updateEid(newId);
} else {
this.$Message.error("新增失败!");
}
this.$refs.addBug.resetFields();
this.bugAdd = false;
});
} else {
this.$Message.error("新增失败!");
}
}
},
created() {},
mounted() {}
}; };
</script> </script>
\ No newline at end of file
...@@ -344,7 +344,7 @@ henq.dirCode = (code, v) => { ...@@ -344,7 +344,7 @@ henq.dirCode = (code, v) => {
return items return items
} }
//colums验证start
henq.makeRules = (list, apiUrl) => { henq.makeRules = (list, apiUrl) => {
//测试数据start //测试数据start
...@@ -551,4 +551,5 @@ henq.makeRules = (list, apiUrl) => { ...@@ -551,4 +551,5 @@ henq.makeRules = (list, apiUrl) => {
}) })
return rules return rules
} }
//colums验证end
export default henq; export default henq;
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
</FormItem> </FormItem>
</Col> </Col>
<Col span="8"> <Col span="8">
<FormItem label="紧急程度" style="width:100%"> <FormItem label="紧急程度" style="width:100%" prop="urgencyLevel">
<dictionary style="width:240px" code="plan.order.urgencyLevel" v-model="orderSearchForm.urgencyLevel"></dictionary> <dictionary style="width:240px" code="plan.order.urgencyLevel" v-model="orderSearchForm.urgencyLevel"></dictionary>
</FormItem> </FormItem>
</Col> </Col>
...@@ -136,6 +136,12 @@ export default { ...@@ -136,6 +136,12 @@ export default {
type: "number", type: "number",
trigger: "change", trigger: "change",
}, ], }, ],
urgencyLevel: [{
required: true,
message: "请选择紧急程度",
trigger: "change",
type: "number",
}, ],
}, },
wfstatu: 1, wfstatu: 1,
......
<template> <template>
<Form :model="orderSearchForm" :label-width="95" :rules="ruleValidate" ref="formValidate"> <Form :model="orderSearchForm" :label-width="95" :rules="ruleValidate" ref="formValidate">
<Row> <Row>
<Col span="8"> <Col span="8">
<FormItem label="订单编号" style="width:100%">{{this.orderSearchForm.mesCode}}</FormItem> <FormItem label="订单编号" style="width:100%">{{this.orderSearchForm.mesCode}}</FormItem>
</Col> </Col>
<Col span="8"> <Col span="8">
<FormItem :label="l('productName')" style="width:100%" prop="productId"> <FormItem :label="l('productName')" style="width:100%" prop="productId">
<Select <Select v-model="orderSearchForm.productId" :placeholder="placeholdeinfo" style="width:240px;">
v-model="orderSearchForm.productId" <Option v-for="(item,index) in list" :key="index" :value="item.value" style="display:none" :label="item.label"></Option>
:placeholder="placeholdeinfo" <Tree key="mytree" :data="data1" ref="mytree" :render="renderContent"></Tree>
style="width:240px;" </Select>
>
<Option
v-for="(item,index) in list"
:key="index"
:value="item.value"
style="display:none"
:label="item.label"
></Option>
<Tree key="mytree" :data="data1" ref="mytree" :render="renderContent"></Tree>
</Select>
</FormItem> </FormItem>
</Col> </Col>
<Col span="8"> <Col span="8">
<FormItem :label="l('drawnNumber')" style="width:100%"> <FormItem :label="l('drawnNumber')" style="width:100%">
<Input v-model="orderSearchForm.drawnNumber" style="width:240px" disabled /> <Input v-model="orderSearchForm.drawnNumber" style="width:240px" disabled />
<Input v-model="orderSearchForm.productName" style="width:240px" v-show="false" /> <Input v-model="orderSearchForm.productName" style="width:240px" v-show="false" />
<Input v-model="orderSearchForm.bomId" style="width:240px" v-show="false" /> <Input v-model="orderSearchForm.bomId" style="width:240px" v-show="false" />
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
<Row> <Row>
<Col span="8"> <Col span="8">
<FormItem :label="l('taskType')" style="width:100%" prop="taskType"> <FormItem :label="l('taskType')" style="width:100%" prop="taskType">
<dictionary <dictionary code="plan.order.taskType" v-model="orderSearchForm.taskType" style="width:240px"></dictionary>
code="plan.order.taskType"
v-model="orderSearchForm.taskType"
style="width:240px"
></dictionary>
</FormItem> </FormItem>
</Col> </Col>
<Col span="8"> <Col span="8">
<FormItem :label="l('quantity')" style="width:100%" prop="quantity"> <FormItem :label="l('quantity')" style="width:100%" prop="quantity">
<InputNumber :min="0" v-model="orderSearchForm.quantity" style="width:240px"></InputNumber> <InputNumber :min="0" v-model="orderSearchForm.quantity" style="width:240px"></InputNumber>
</FormItem> </FormItem>
</Col> </Col>
<Col span="8"> <Col span="8">
<FormItem :label="l('demandStartDate')" style="width:100%"> <FormItem :label="l('demandStartDate')" style="width:100%">
<DatePicker <DatePicker type="date" placeholder="请选择日期" style="width:240px" @on-change="getStartDate" v-model="orderSearchForm.demandStartDate"></DatePicker>
type="date"
placeholder="请选择日期"
style="width:240px"
@on-change="getStartDate"
v-model="orderSearchForm.demandStartDate"
></DatePicker>
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
<Row> <Row>
<Col span="8"> <Col span="8">
<FormItem :label="l('demandFinishDate')" style="width:100%"> <FormItem :label="l('demandFinishDate')" style="width:100%">
<DatePicker <DatePicker type="date" placeholder="请选择日期" style="width:240px" @on-change="getFinishedDate" v-model="orderSearchForm.demandFinishDate"></DatePicker>
type="date"
placeholder="请选择日期"
style="width:240px"
@on-change="getFinishedDate"
v-model="orderSearchForm.demandFinishDate"
></DatePicker>
</FormItem> </FormItem>
</Col> </Col>
<Col span="8"> <Col span="8">
<FormItem :label="l('projectNumber')" style="width:100%"> <FormItem :label="l('projectNumber')" style="width:100%">
<Input v-model="orderSearchForm.projectNumber" style="width:240px" /> <Input v-model="orderSearchForm.projectNumber" style="width:240px" />
</FormItem> </FormItem>
</Col> </Col>
<Col span="8"> <Col span="8">
<FormItem :label="l('batchNumber')" label="批次号" style="width:100%"> <FormItem :label="l('batchNumber')" label="批次号" style="width:100%">
<Input v-model="orderSearchForm.batchNumber" style="width:240px" /> <Input v-model="orderSearchForm.batchNumber" style="width:240px" />
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
<Row> <Row>
<Col span="8"> <Col span="8">
<FormItem :label="l('urgencyLevel')" style="width:100%"> <FormItem :label="l('urgencyLevel')" style="width:100%" prop="urgencyLevel">
<dictionary <dictionary style="width:240px" code="plan.order.urgencyLevel" v-model="orderSearchForm.urgencyLevel"></dictionary>
style="width:240px"
code="plan.order.urgencyLevel"
v-model="orderSearchForm.urgencyLevel"
></dictionary>
</FormItem> </FormItem>
</Col> </Col>
<Col span="24"> <Col span="24">
<FormItem :label="l('taskRequire')" style="width:100%"> <FormItem :label="l('taskRequire')" style="width:100%">
<Input v-model="orderSearchForm.taskRequire" placeholder /> <Input v-model="orderSearchForm.taskRequire" placeholder />
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
<Row> <Row>
<Col span="24"> <Col span="24">
<FormItem :label="l('remark')" style="width:100%"> <FormItem :label="l('remark')" style="width:100%">
<Input v-model="orderSearchForm.remark" placeholder type="textarea" :rows="3" /> <Input v-model="orderSearchForm.remark" placeholder type="textarea" :rows="3" />
</FormItem> </FormItem>
</Col> </Col>
<Col span="24"> <Col span="24">
<FormItem> <FormItem>
<Button type="primary" @click="handleSubmit" v-noClick>保存</Button> <Button type="primary" @click="handleSubmit" v-noClick>保存</Button>
<Button @click="handleClose" class="ml20">取消</Button> <Button @click="handleClose" class="ml20">取消</Button>
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
</Form> </Form>
</template> </template>
<script> <script>
import Api from "./api"; import Api from "./api";
export default { export default {
name: "Edit", name: "Edit",
data() { data() {
return { return {
orderSearchForm: {}, orderSearchForm: {},
ruleValidate: { ruleValidate: {
productId: [ productId: [{
{ required: true,
required: true, message: "请选择产品名称",
message: "请选择产品名称", type: "number",
type: "number", trigger: "change",
trigger: "change", }, ],
}, taskType: [{
], required: true,
taskType: [ message: "请选择任务类型",
{ trigger: "change",
required: true, type: "number",
message: "请选择任务类型", }, ],
trigger: "change", quantity: [{
type: "number", required: true,
}, message: "请输入数量",
], type: "number",
quantity: [ trigger: "change",
{ }, ],
required: true, urgencyLevel: [{
message: "请输入数量", required: true,
type: "number", message: "请选择紧急程度",
trigger: "change", trigger: "change",
}, type: "number",
], }, ],
}, },
placeholdeinfo: "", placeholdeinfo: "",
list: [], list: [],
data1: [], data1: [],
wfstatu: 1, wfstatu: 1,
}; };
},
props: {
row: {
type: Object,
default: () => {
return null;
},
},
},
mounted() {
let params = {
id: "123327da-42b3-41f6-b785-cf933f137a95",
};
this.$api.get(`${workflowUrl}/schema/getbyid`, params).then((res) => {
if (res.success) {
let wfStatus = res.result.status;
if (wfStatus == 0) {
this.wfstatu = 1;
} else {
this.wfstatu = 3;
}
}
});
this.loadTree();
},
methods: {
load(v) {
Api.get({ id: v }).then((r) => {
this.entity = r.result;
this.$emit("on-load");
});
},
handleSubmit() {
this.$refs.formValidate.validate((v) => {
if (v) {
this.orderSearchForm.status = this.wfstatu;
Api.mesorderupdate(this.orderSearchForm)
.then((r) => {
if (r.success) {
this.$Message.success("保存成功");
this.$emit("on-ok");
} else {
this.$Message.error("保存失败");
}
})
.catch((err) => {
this.$Message.error("保存失败");
console.warn(err);
});
}
});
},
handleClose() {
this.$emit("on-close");
},
l(key) {
key = "mes_plan" + "." + key;
return this.$t(key);
},
handleSelect(data) {
this.placeholdeinfo = "";
if (data.length > 0) {
this.selectdata = [];
this.selectdata = data;
this.list = [];
this.list.push({ label: data[0].title, value: data[0].id });
if (data[0].isProduct == "1") {
this.orderSearchForm.productName = data[0].title;
this.orderSearchForm.productId = data[0].productId;
this.orderSearchForm.drawnNumber = data[0].drawingNo;
this.orderSearchForm.bomId = data[0].bomId;
} else {
this.$Message.error("此节点不是产品,请选择产品节点!");
}
}
},
resetFields() {
this.orderSearchForm = {
productId: null, //产品id
productName: "", //产品名称
drawnNumber: null, //图号
taskType: null, //任务类型
quantity: 1, //数量
taskRequire: "", //任务接点要求
demandStartDate: this.getFormatDate(nowDate), //开始时间
demandFinishDate: this.getFormatDateEnd(tomorrowDate), //完成时间
remark: "", //备注
projectNumber: "", //项目号
batchNumber: "", //批次号
urgencyLevel: null, //紧急程度
bomId: "",
};
},
loadTree() {
//打开新增订单窗口加载产品
//this.resetFields();
var sumData = [];
this.$http.order.getallselecttree().then((res) => {
if (res.result) {
for (var i = 0; i < res.result.length; i++) {
sumData = sumData.concat(res.result[i]);
}
this.data1 = sumData;
} else {
this.$Message.error("加载产品树失败!");
}
});
}, },
renderContent(h, { root, node, data }) { props: {
let type = "md-folder"; row: {
let title = data.title; type: Object,
if (data.isProduct != 0) { default: () => {
let version = this.$store.getters.dictionaryByCode( return null;
"material.main.version",
data.version
);
type = "ios-image";
if (version) {
title = data.title + "(" + data.mmcode + "/" + version.name + ")";
} else {
title = data.title + "(" + data.mmcode + ")";
}
}
return h(
"span",
{
on: {
click: () => {
let arrTree = [];
arrTree.push(data);
this.handleSelect(arrTree); //手动选择树节点
}, },
},
}, },
[
h("Icon", {
props: {
type: type,
},
style: {
marginRight: "8px",
},
}),
h(
"span",
{
style: {
color: data.isProduct == 0 ? "#000" : "rgba(38, 128, 235, 1)",
},
},
title
),
]
);
},
//时间相关start
getStartDate(value) {
if (value == "") {
this.orderSearchForm.demandStartDate = this.getFormatDate(nowDate);
} else {
this.orderSearchForm.demandStartDate = this.getFormatDate(value);
}
}, },
getFinishedDate(value) { mounted() {
if (value == "") { let params = {
this.orderSearchForm.demandFinishDate = this.getFormatDateEnd( id: "123327da-42b3-41f6-b785-cf933f137a95",
tomorrowDate };
); this.$api.get(`${workflowUrl}/schema/getbyid`, params).then((res) => {
} else { if (res.success) {
this.orderSearchForm.demandFinishDate = this.getFormatDateEnd(value); let wfStatus = res.result.status;
} if (wfStatus == 0) {
}, this.wfstatu = 1;
getFormatDate(dates) { } else {
const d = new Date(dates); this.wfstatu = 3;
const resDate = }
d.getFullYear() + }
"-" + });
this.p(d.getMonth() + 1) + this.loadTree();
"-" +
this.p(d.getDate()) +
" 00:00:01";
return resDate;
},
getFormatDateEnd(dates) {
const d = new Date(dates);
const resDate =
d.getFullYear() +
"-" +
this.p(d.getMonth() + 1) +
"-" +
this.p(d.getDate()) +
" 23:59:59";
return resDate;
}, },
p(s) { methods: {
return s < 10 ? "0" + s : s; load(v) {
Api.get({
id: v
}).then((r) => {
this.entity = r.result;
this.$emit("on-load");
});
},
handleSubmit() {
this.$refs.formValidate.validate((v) => {
if (v) {
this.orderSearchForm.status = this.wfstatu;
Api.mesorderupdate(this.orderSearchForm)
.then((r) => {
if (r.success) {
this.$Message.success("保存成功");
this.$emit("on-ok");
} else {
this.$Message.error("保存失败");
}
})
.catch((err) => {
this.$Message.error("保存失败");
console.warn(err);
});
}
});
},
handleClose() {
this.$emit("on-close");
},
l(key) {
key = "mes_plan" + "." + key;
return this.$t(key);
},
handleSelect(data) {
this.placeholdeinfo = "";
if (data.length > 0) {
this.selectdata = [];
this.selectdata = data;
this.list = [];
this.list.push({
label: data[0].title,
value: data[0].id
});
if (data[0].isProduct == "1") {
this.orderSearchForm.productName = data[0].title;
this.orderSearchForm.productId = data[0].productId;
this.orderSearchForm.drawnNumber = data[0].drawingNo;
this.orderSearchForm.bomId = data[0].bomId;
} else {
this.$Message.error("此节点不是产品,请选择产品节点!");
}
}
},
resetFields() {
this.orderSearchForm = {
productId: null, //产品id
productName: "", //产品名称
drawnNumber: null, //图号
taskType: null, //任务类型
quantity: 1, //数量
taskRequire: "", //任务接点要求
demandStartDate: this.getFormatDate(nowDate), //开始时间
demandFinishDate: this.getFormatDateEnd(tomorrowDate), //完成时间
remark: "", //备注
projectNumber: "", //项目号
batchNumber: "", //批次号
urgencyLevel: null, //紧急程度
bomId: "",
};
},
loadTree() {
//打开新增订单窗口加载产品
//this.resetFields();
var sumData = [];
this.$http.order.getallselecttree().then((res) => {
if (res.result) {
for (var i = 0; i < res.result.length; i++) {
sumData = sumData.concat(res.result[i]);
}
this.data1 = sumData;
} else {
this.$Message.error("加载产品树失败!");
}
});
},
renderContent(h, {
root,
node,
data
}) {
let type = "md-folder";
let title = data.title;
if (data.isProduct != 0) {
let version = this.$store.getters.dictionaryByCode(
"material.main.version",
data.version
);
type = "ios-image";
if (version) {
title = data.title + "(" + data.mmcode + "/" + version.name + ")";
} else {
title = data.title + "(" + data.mmcode + ")";
}
}
return h(
"span", {
on: {
click: () => {
let arrTree = [];
arrTree.push(data);
this.handleSelect(arrTree); //手动选择树节点
},
},
},
[
h("Icon", {
props: {
type: type,
},
style: {
marginRight: "8px",
},
}),
h(
"span", {
style: {
color: data.isProduct == 0 ? "#000" : "rgba(38, 128, 235, 1)",
},
},
title
),
]
);
},
//时间相关start
getStartDate(value) {
if (value == "") {
this.orderSearchForm.demandStartDate = this.getFormatDate(nowDate);
} else {
this.orderSearchForm.demandStartDate = this.getFormatDate(value);
}
},
getFinishedDate(value) {
if (value == "") {
this.orderSearchForm.demandFinishDate = this.getFormatDateEnd(
tomorrowDate
);
} else {
this.orderSearchForm.demandFinishDate = this.getFormatDateEnd(value);
}
},
getFormatDate(dates) {
const d = new Date(dates);
const resDate =
d.getFullYear() +
"-" +
this.p(d.getMonth() + 1) +
"-" +
this.p(d.getDate()) +
" 00:00:01";
return resDate;
},
getFormatDateEnd(dates) {
const d = new Date(dates);
const resDate =
d.getFullYear() +
"-" +
this.p(d.getMonth() + 1) +
"-" +
this.p(d.getDate()) +
" 23:59:59";
return resDate;
},
p(s) {
return s < 10 ? "0" + s : s;
},
//时间相关end
}, },
//时间相关end watch: {
}, row(v) {
watch: { if (v != null) {
row(v) { this.orderSearchForm = this.$u.clone(this.row);
if (v != null) { //this.placeholdeinfo = this.orderSearchForm.productName;
this.orderSearchForm = this.$u.clone(this.row); this.list = [];
//this.placeholdeinfo = this.orderSearchForm.productName; this.list.push({
this.list = []; label: this.orderSearchForm.productName,
this.list.push({ value: this.orderSearchForm.productId,
label: this.orderSearchForm.productName, });
value: this.orderSearchForm.productId, }
}); },
}
}, },
},
}; };
</script> </script>
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<Icon type="ios-arrow-down" /> <Icon type="ios-arrow-down" />
</p> </p>
项目信息 项目信息
<Actions/>
</Card> </Card>
<Card> <Card>
<TreeGrid :columns="columns" ref="grid" :items="list" <TreeGrid :columns="columns" ref="grid" :items="list"
...@@ -78,35 +79,47 @@ export default { ...@@ -78,35 +79,47 @@ export default {
key: "action", key: "action",
width: 150, width: 150,
align: "center", align: "center",
render: (h, params) => { // render:(h,params)=>{
return h("div", { class: "action" }, [ // return h("Actions"
h( // ,{
"op", // attrs:{
{ // row:params,
attrs: { oprate: "detail" }, // },
on: { click: () => this.view(params.row.id) }, // on:{
}, // 'on-click':()=>this.rowclick
"查看" // }
), // }
//h('op', { attrs: { oprate: 'copy' }, on: { click: () => this.copy(params.row.id) } }, '克隆'), // )
h( // }
"op", // render: (h, params) => {
{ // return h("div", { class: "action" }, [
attrs: { oprate: "edit" }, // h(
on: { click: () => this.edit(params.row.id) }, // "op",
}, // {
"编辑" // attrs: { oprate: "detail" },
), // on: { click: () => this.view(params.row.id) },
h( // },
"op", // "查看"
{ // ),
attrs: { oprate: "delete" }, // //h('op', { attrs: { oprate: 'copy' }, on: { click: () => this.copy(params.row.id) } }, '克隆'),
on: { click: () => this.remove(params.row.id) }, // h(
}, // "op",
"删除" // {
), // attrs: { oprate: "edit" },
]); // on: { click: () => this.edit(params.row.id) },
}, // },
// "编辑"
// ),
// h(
// "op",
// {
// attrs: { oprate: "delete" },
// on: { click: () => this.remove(params.row.id) },
// },
// "删除"
// ),
// ]);
// },
}, },
{ {
key: "type", key: "type",
...@@ -155,25 +168,29 @@ export default { ...@@ -155,25 +168,29 @@ export default {
}, },
mounted() { mounted() {
console.log(this); console.log(this);
this.search();
}, },
async fetch({ store, params }) { async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典 await store.dispatch("loadDictionary"); // 加载数据字典
}, },
methods: { methods: {
ok() { ok() {
// this.$refs.grid.load(); this.search();
this.modal = false; this.modal = false;
this.curId = 0; this.curId = 0;
}, },
search() { search() {
this.$refs.grid.reload(this.easySearch); // this.$refs.grid.reload(this.easySearch);
var params={ var params={
conditions:[] conditions:[]
} }
Api.list(params).then(r=>{ Api.list(params).then(r=>{
this.list=r.result;
}) })
}, },
rowclick(row,li){
console.warn("rowclick",row,li);
},
add() { add() {
this.curId = 0; this.curId = 0;
this.title = "新增"; this.title = "新增";
...@@ -201,7 +218,7 @@ export default { ...@@ -201,7 +218,7 @@ export default {
remove(id) { remove(id) {
Api.delete(id).then((r) => { Api.delete(id).then((r) => {
if (r.success) { if (r.success) {
this.$refs.grid.load(); this.search();
this.$Message.success("删除成功"); this.$Message.success("删除成功");
} }
}); });
......
...@@ -187,14 +187,14 @@ export default { ...@@ -187,14 +187,14 @@ export default {
runtime: 0, runtime: 0,
efficiencyValue: 1, efficiencyValue: 1,
singleOut: 1, singleOut: 1,
isOutside: null, isOutside: 0,
isImportant: null, isImportant: 0,
outsideTime: 0, outsideTime: 0,
isImportantResources: null, isImportantResources: 0,
setupTime: 0, setupTime: 0,
realWorkingHours: 0, realWorkingHours: 0,
realRuntime: 0, realRuntime: 0,
isParticipateIntime: null, isParticipateIntime: 0,
equipType: "", equipType: "",
}, },
rules: { rules: {
......
...@@ -197,11 +197,11 @@ export default { ...@@ -197,11 +197,11 @@ export default {
productionRequirement: "", productionRequirement: "",
standard: "", standard: "",
qualityTemplateName: "", qualityTemplateName: "",
isImportant: null, isImportant: 0,
firstCheck: null, firstCheck: 0,
inspection: null, inspection: 0,
inspectionTime: null, inspectionTime: 0,
sampling: null, sampling: 0,
samplingBatch: "", samplingBatch: "",
}, },
tempFile: "", tempFile: "",
......
<template> <template>
<Form ref="form" :model="entity" :rules="rules" :label-width="120"> <Form ref="form" :model="entity" :rules="rules" :label-width="120">
<Row> <Row>
<!-- <!--
<Col :span="12"> <Col :span="12">
<FormItem :label="l('routingStepId')" prop="routingStepId"> <FormItem :label="l('routingStepId')" prop="routingStepId">
<InputNumber v-model="entity.routingStepId"></InputNumber> <InputNumber v-model="entity.routingStepId"></InputNumber>
...@@ -34,19 +34,14 @@ ...@@ -34,19 +34,14 @@
</Col> </Col>
--> -->
<Col :span="12"> <Col :span="12">
<FormItem :label="l('routingDetailName')" prop="routingDetailId"> <FormItem :label="l('routingDetailName')" prop="routingDetailId">
<Select v-model="entity.routingDetailId"> <Select v-model="entity.routingDetailId">
<Option <Option v-for="(item, index) in routingDetailList" :value="item.value" :key="index">{{ item.label }}</Option>
v-for="(item, index) in routingDetailList" </Select>
:value="item.value"
:key="index"
>{{ item.label }}</Option
>
</Select>
</FormItem> </FormItem>
</Col> </Col>
<!-- <Col :span="8"> <!-- <Col :span="8">
<FormItem :label="l('materialType')" prop="materialType"> <FormItem :label="l('materialType')" prop="materialType">
<Dictionary <Dictionary
code="mes_xingchi_resource.material.materialReType" code="mes_xingchi_resource.material.materialReType"
...@@ -54,66 +49,48 @@ ...@@ -54,66 +49,48 @@
></Dictionary> ></Dictionary>
</FormItem> </FormItem>
</Col>--> </Col>-->
<Col :span="12"> <Col :span="12">
<!-- <FormItem :label="l('nameMaterial')" prop="materialNumber"> <!-- <FormItem :label="l('nameMaterial')" prop="materialNumber">
<Materiel :bomId="productBomId" v-model="entity.materialId" @on-change="change"></Materiel> <Materiel :bomId="productBomId" v-model="entity.materialId" @on-change="change"></Materiel>
</FormItem>--> </FormItem>-->
<FormItem :label="l('nameMaterial')" prop="materialId"> <FormItem :label="l('nameMaterial')" prop="materialId">
<Select <Select v-model="entity.materialId" placeholder="请选择" style="width: 300px">
v-model="entity.materialId" <Option v-for="(item, index) in listData" :key="index" :value="item.value" :label="item.label" style="display: none"></Option>
placeholder="请选择" <Tree key="mytree" :data="dataTree" ref="mytree" :render="renderContent"></Tree>
style="width: 300px" </Select>
> <!-- <Materiel
<Option
v-for="(item, index) in listData"
:key="index"
:value="item.value"
:label="item.label"
style="display: none"
></Option>
<Tree
key="mytree"
:data="dataTree"
ref="mytree"
:render="renderContent"
></Tree>
</Select>
<!-- <Materiel
v-model="entity.materialId" v-model="entity.materialId"
@on-change="change" @on-change="change"
:codeRuleType="1" :codeRuleType="1"
:setType="true" :setType="true"
></Materiel> --> ></Materiel> -->
</FormItem> </FormItem>
</Col> </Col>
<!-- <Col :span="8" v-if="false"> <!-- <Col :span="8" v-if="false">
<FormItem :label="l('nameMaterial')" prop="nameMaterial"> <FormItem :label="l('nameMaterial')" prop="nameMaterial">
<Input v-model="entity.nameMaterial"></Input> <Input v-model="entity.nameMaterial"></Input>
</FormItem> </FormItem>
</Col>--> </Col>-->
<Col :span="12"> <Col :span="12">
<FormItem :label="l('quantity')" prop="quantity"> <FormItem :label="l('quantity')" prop="quantity">
<InputNumber <InputNumber v-model="entity.quantity" style="width: 100%"></InputNumber>
v-model="entity.quantity"
style="width: 100%"
></InputNumber>
</FormItem> </FormItem>
</Col>
<Divider orientation="left">物料属性</Divider>
<Row>
<Col :span="12" v-if="entity.materialId">
<FormItem label="名称:">
<span>{{ entity.nameMaterial }}</span>
</FormItem>
</Col> </Col>
<Col :span="12" v-if="entity.materialId"> <Divider orientation="left">物料属性</Divider>
<FormItem label="编码:"> <Row>
<span>{{ entity.materialNumber }}</span> <Col :span="12" v-if="entity.materialId">
</FormItem> <FormItem label="名称:">
</Col> <span>{{ entity.nameMaterial }}</span>
</Row> </FormItem>
<CustomProperties :materialId="entity.materialId" :forItem="forItem" /> </Col>
<!-- <Col :span="8"> <Col :span="12" v-if="entity.materialId">
<FormItem label="编码:">
<span>{{ entity.materialNumber }}</span>
</FormItem>
</Col>
</Row>
<CustomProperties :materialId="entity.materialId" :forItem="forItem" />
<!-- <Col :span="8">
<FormItem :label="l('brand')" prop="brand"> <FormItem :label="l('brand')" prop="brand">
<Input v-model="entity.brand"></Input> <Input v-model="entity.brand"></Input>
</FormItem> </FormItem>
...@@ -150,203 +127,205 @@ ...@@ -150,203 +127,205 @@
</Col>--> </Col>-->
</Row> </Row>
<FormItem> <FormItem>
<Button type="primary" @click="handleSubmit" v-noClick>保存</Button> <Button type="primary" @click="handleSubmit" v-noClick>保存</Button>
<Button @click="handleClose" class="ml20">取消</Button> <Button @click="handleClose" class="ml20">取消</Button>
</FormItem> </FormItem>
</Form> </Form>
</template> </template>
<script>
<script>
import Api from "./api"; import Api from "./api";
import ApiDetail from "../api"; import ApiDetail from "../api";
export default { export default {
name: "Add", name: "Add",
data() { data() {
return { return {
forItem: {}, forItem: {},
listData: [], listData: [],
dataTree: [], dataTree: [],
entity: { entity: {
routingHeaderId: null, routingHeaderId: null,
routingDetailId: null, routingDetailId: null,
routingStepId: 0, routingStepId: 0,
quantity: null, quantity: null,
materialId: "", materialId: "",
materialType: "", materialType: "",
materialNumber: null, materialNumber: null,
nameMaterial: "", nameMaterial: "",
brand: "", brand: "",
specifications: "", specifications: "",
xhgg: "", xhgg: "",
texture: "", texture: "",
procurementStandards: "", procurementStandards: "",
qualityGrade: "", qualityGrade: "",
state: null, state: 0,
extend: "", extend: "",
remark: "", remark: "",
drawNum: "", drawNum: "",
json: {}, json: {},
},
rules: {
routingDetailId: [
{
required: true,
message: "请选择工序",
type: "number",
trigger: "change",
},
],
materialId: [
{
required: true,
message: "请选择工序",
trigger: "change",
},
],
quantity: [
{
required: true,
type: "number",
message: "请选择工序",
trigger: "blur",
},
],
},
routingDetailList: [],
};
},
props: {
v: Object,
eid: Number,
headid: Number,
productBomId: {
type: Number,
default: null,
},
},
mounted() {
this.loadDetails();
this.getData();
},
methods: {
renderContent(h, { root, node, data }) {
//渲染树的样式
return h(
"span",
{
style: {
cursor: "pointer",
},
on: {
click: () => {
this.handleSelect(data); //手动选择树节点
}, },
}, rules: {
routingDetailId: [{
required: true,
message: "请选择工序",
type: "number",
trigger: "change",
}, ],
materialId: [{
required: true,
message: "请选择工序",
trigger: "change",
}, ],
quantity: [{
required: true,
type: "number",
message: "请选择工序",
trigger: "blur",
}, ],
},
routingDetailList: [],
};
},
props: {
v: Object,
eid: Number,
headid: Number,
productBomId: {
type: Number,
default: null,
}, },
data.title
);
}, },
handleSelect(data) { mounted() {
console.log(data); this.loadDetails();
this.getData();
},
methods: {
renderContent(h, {
root,
node,
data
}) {
//渲染树的样式
return h(
"span", {
style: {
cursor: "pointer",
},
on: {
click: () => {
this.handleSelect(data); //手动选择树节点
},
},
},
data.title
);
},
handleSelect(data) {
console.log(data);
let obj = { let obj = {
label: data.title, label: data.title,
value: data.materialId, value: data.materialId,
}; };
this.listData = []; this.listData = [];
this.listData.push(obj); this.listData.push(obj);
this.entity.materialId = this.listData[0].value; this.entity.materialId = this.listData[0].value;
this.entity.nameMaterial = this.listData[0].label; this.entity.nameMaterial = this.listData[0].label;
this.entity.nameMaterial = data.name; this.entity.nameMaterial = data.name;
this.entity.materialId = data.materialId; this.entity.materialId = data.materialId;
this.entity.materialNumber = data.mmcode; this.entity.materialNumber = data.mmcode;
this.entity.json.nameMaterial = data.name; this.entity.json.nameMaterial = data.name;
this.entity.json.materialNumber = data.mmcode; this.entity.json.materialNumber = data.mmcode;
Api.getMaterial({ id: data.materialId }).then((r) => { Api.getMaterial({
if (r.result) { id: data.materialId
this.forItem = r.result; }).then((r) => {
} if (r.result) {
}); this.forItem = r.result;
}, }
getData() {
Api.alltree({ id: this.productBomId }).then((r) => {
if (r.success) {
this.dataTree = r.result;
// this.$Message.success("获取物料成功");
} else {
this.$Message.error("获取物料失败");
}
});
},
handleSubmit() {
this.$refs.form.validate((v) => {
if (v) {
this.entity.routingHeaderId = this.headid;
Api.create(this.entity)
.then((r) => {
if (r.success) {
this.$Message.success("保存成功");
this.$emit("on-ok");
} else {
this.$Message.error("保存失败");
}
})
.catch((err) => {
this.$Message.error("保存失败");
console.warn(err);
}); });
} },
}); getData() {
}, Api.alltree({
handleClose() { id: this.productBomId
this.$emit("on-close"); }).then((r) => {
}, if (r.success) {
// change(e, v) { this.dataTree = r.result;
// console.log(e); // this.$Message.success("获取物料成功");
// console.log(v); } else {
// this.entity.nameMaterial = e.name; this.$Message.error("获取物料失败");
// this.entity.materialId = e.materialId; }
// this.entity.materialNumber = e.mmcode; });
},
handleSubmit() {
this.$refs.form.validate((v) => {
if (v) {
this.entity.routingHeaderId = this.headid;
Api.create(this.entity)
.then((r) => {
if (r.success) {
this.$Message.success("保存成功");
this.$emit("on-ok");
} else {
this.$Message.error("保存失败");
}
})
.catch((err) => {
this.$Message.error("保存失败");
console.warn(err);
});
}
});
},
handleClose() {
this.$emit("on-close");
},
// change(e, v) {
// console.log(e);
// console.log(v);
// this.entity.nameMaterial = e.name;
// this.entity.materialId = e.materialId;
// this.entity.materialNumber = e.mmcode;
// this.entity.json.nameMaterial = e.name; // this.entity.json.nameMaterial = e.name;
// this.entity.json.materialNumber = e.mmcode; // this.entity.json.materialNumber = e.mmcode;
// this.forItem = v; // this.forItem = v;
// }, // },
loadDetails() { loadDetails() {
//获取工序列表 //获取工序列表
let parms = { let parms = {
headerID: this.headid, headerID: this.headid,
}; };
ApiDetail.pagedDetails(parms).then((r) => { ApiDetail.pagedDetails(parms).then((r) => {
let tempDetails = r.result; let tempDetails = r.result;
let tempD = []; let tempD = [];
tempDetails.forEach((data) => { tempDetails.forEach((data) => {
let tempObj = {}; let tempObj = {};
tempObj.value = data.id; tempObj.value = data.id;
tempObj.label = data.taskSeq + " " + data.name; tempObj.label = data.taskSeq + " " + data.name;
tempD.push(tempObj); tempD.push(tempObj);
}); });
this.routingDetailList = tempD; this.routingDetailList = tempD;
}); });
}, },
l(key) { l(key) {
key = "routingsupporting" + "." + key; key = "routingsupporting" + "." + key;
return this.$t(key); return this.$t(key);
}, },
},
watch: {
v() {
this.entity = this.$u.clone(this.v);
},
eid(v) {
if (v > 0) {
this.load(v);
}
}, },
productBomId(v) { watch: {
if (v > 0) { v() {
} this.entity = this.$u.clone(this.v);
},
eid(v) {
if (v > 0) {
this.load(v);
}
},
productBomId(v) {
if (v > 0) {}
},
}, },
},
}; };
</script> </script>
...@@ -69,6 +69,7 @@ import CustomProperties from '@/components/page/customProperties.vue' ...@@ -69,6 +69,7 @@ import CustomProperties from '@/components/page/customProperties.vue'
import InputCode from '@/components/page/inputCode.vue' import InputCode from '@/components/page/inputCode.vue'
import Pictrue from '@/components/page/pictrue.vue' import Pictrue from '@/components/page/pictrue.vue'
import WordTree from '@/components/page/wordTree.vue' import WordTree from '@/components/page/wordTree.vue'
import Actions from '@/components/page/actions.vue'
...@@ -144,6 +145,7 @@ Vue.component("CustomProperties",CustomProperties) ...@@ -144,6 +145,7 @@ Vue.component("CustomProperties",CustomProperties)
Vue.component("InputCode",InputCode) Vue.component("InputCode",InputCode)
Vue.component("Pictrue",Pictrue) Vue.component("Pictrue",Pictrue)
Vue.component("WordTree",WordTree) Vue.component("WordTree",WordTree)
Vue.component("Actions",Actions)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment