Commit 4a7599b0 authored by 周远喜's avatar 周远喜

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

parents 12c8bc91 6b5b68d7
import XLSX from 'xlsx';
import Api from '@/plugins/request'
let henq = {};
let pdfInfo = ''
henq.clone = (obj) => {
......@@ -169,14 +170,13 @@ henq.findRoots = (arr1, id) => {
//省市县pacc转为list
henq.treeToList1 = (tree) => {
let list = [];
function treeToList1(data) {
data.map(u => {
if (u.children&&u.level!=1) {
if (u.children && u.level != 1) {
treeToList1(u.children, u)
}
else if(u.children&&u.level==1)
{
list=list.concat(u.children);
} else if (u.children && u.level == 1) {
list = list.concat(u.children);
}
})
}
......@@ -185,22 +185,22 @@ henq.treeToList1 = (tree) => {
return list;
}
//根据departId返出上级所有name
henq.getDepartAllName = (list,id) => {
henq.getDepartAllName = (list, id) => {
let names = '';
function getDepartAllName(list,id) {
function getDepartAllName(list, id) {
list.map(u => {
if(id==u.id)
{
names=u.name+"/"+names
if (u.parent_Id>0) {
if (id == u.id) {
names = u.name + "/" + names
if (u.parent_Id > 0) {
getDepartAllName(list, u.parent_Id)
}
}
})
}
getDepartAllName(list,id)
getDepartAllName(list, id)
return names.slice(0,names.length-1);
return names.slice(0, names.length - 1);
}
//导出pdf
henq.outPdf = (ele, fileName) => {
......@@ -343,4 +343,212 @@ henq.dirCode = (code, v) => {
}
return items
}
henq.makeRules = (list, apiUrl) => {
//测试数据start
list = [{ //普通输入框
columnDescription: "测试列1", // 中文名称
dbColumnName: "colums1", // 字段名称
dataType: "varchar", // 数据库中字段类型
propertyName: "colums1", //程序中的字段名称
propertyType: "String", // 程序中的字段类型
code: "", // 数据字典编码
isNullable: false, // 是否可空
isKey: false, // 是否主键
unit: "", // 单位
length: 50, //
decimalDigits: 0, // 精度
link: 0, //外键 表的
defaultValue: "", // 默认值
control: 0,
uniqueness: 0, // 唯一性 0 不限制 1 表内唯一 2 表内某条件下唯一
ruleType: "", // 邮箱 ,电话,等
},
{ //数据字典项
columnDescription: "测试列2",
dbColumnName: "colums2",
dataType: "int32",
propertyName: "colums2",
propertyType: "int",
code: "aps.plan.status",
isNullable: false,
isKey: false,
unit: "",
length: 50,
decimalDigits: 0,
link: 0,
defaultValue: "",
control: 0,
uniqueness: 0,
ruleType: "",
},
{ //手机号码
columnDescription: "测试列3",
dbColumnName: "colums3",
dataType: "varchar",
propertyName: "colums3",
propertyType: "int",
code: "",
isNullable: false,
isKey: false,
unit: "",
length: 50,
decimalDigits: 0,
link: 0,
defaultValue: "",
control: 0,
uniqueness: 0,
ruleType: "phone",
},
{ //电子邮件
columnDescription: "测试列4",
dbColumnName: "colums4",
dataType: "varchar",
propertyName: "colums4",
propertyType: "String",
code: "",
isNullable: false,
isKey: false,
unit: "",
length: 50,
decimalDigits: 0,
link: 0,
defaultValue: "",
control: 0,
uniqueness: 0,
ruleType: "email",
},
{ //唯一性api接口校验
columnDescription: "测试列5",
dbColumnName: "colums5",
dataType: "varchar",
propertyName: "colums5",
propertyType: "String",
code: "",
isNullable: false,
isKey: false,
unit: "",
length: 50,
decimalDigits: 0,
link: 0,
defaultValue: "",
control: 0,
uniqueness: 1, //表内唯一验证
ruleType: "",
},
{ //日期校验
columnDescription: "测试列6",
dbColumnName: "colums6",
dataType: "datetime",
propertyName: "colums6",
propertyType: "String",
code: "",
isNullable: false,
isKey: false,
unit: "",
length: 50,
decimalDigits: 0,
link: 0,
defaultValue: "",
control: 0,
uniqueness: 0, //表内唯一验证
ruleType: "datetime",
}
]
apiUrl = `${systemUrl}/user/list`
//测试数据end
//唯一性校验
const validateCol = (rule, value, callback) => {
if (!value) {
return callback(new Error("输入不能为空"));
}
var params1 = {
"conditions": [{
"fieldName": "cardNo",
"fieldValue": value,
"conditionalType": "Equal"
}],
"pageSize": 3
}
Api.post(apiUrl, params1).then((r) => {
if (r.result.length > 0) {
return callback(new Error("输入数据已经存在"));
} else {
callback();
}
})
};
//手机号验证
const valideTel = (rule, value, callback) => {
var re = /^1[3-9]{1}[0-9]{9}/;
if (value === "" || value === null) {
callback(new Error("请输入手机号"));
} else if (!re.test(value)) {
callback(new Error("请输入正确手机号"));
} else {
callback();
}
}
let rules = {}
list.forEach(el => {
if (!el.isNullable) {
let objInfo = {}
rules[el.propertyName] = []
if (el.code == '') { //不能为空,必填文本或数字类型
if (el.ruleType == '') {
objInfo = {
required: true,
message: "必填",
trigger: "blur"
}
if (el.uniqueness != 0) {
var objUniqueness = {
validator: validateCol,
trigger: "blur"
}
}
} else if (el.ruleType == 'email') {
objInfo = {
required: true,
message: '必填',
trigger: 'blur',
type: 'email'
}
} else if (el.ruleType == 'phone') {
objInfo = {
validator: valideTel,
required: true,
trigger: "blur"
}
}
else if (el.ruleType == 'datetime')
{
objInfo = {
required: true,
message: "请选择时间",
trigger: "change"
}
}
} else { //数据字典
objInfo = {
required: true,
message: "必选",
trigger: "change",
type: "number",
}
}
rules[el.propertyName].push(objInfo)
if (el.uniqueness != 0) {
rules[el.propertyName].push(objUniqueness)
}
}
})
return rules
}
export default henq;
......@@ -322,9 +322,9 @@ export default {
this.goMethod(params.row) : null,
},
},
params.row.mainRoutingSetStatus == 0 ?
params.row.mainRoutingSetStatus == 0 && params.row.isPreschedule == 0 ?
"工艺派发" :
params.row.mainRoutingSetStatus == 1 ?
params.row.mainRoutingSetStatus == 1 && params.row.isPreschedule == 0 ?
"移入排产" :
""
),
......
<template>
<div style="width:100%;">
<template>
<div style="width:100%;">
<Form :model="orderSearchForm" :label-width="95" :rules="ruleValidate" ref="formValidate">
<Row>
<Col span="8">
<FormItem label="产品名称" style="width:100%" prop="productId">
<Select
v-model="orderSearchForm.productId"
:placeholder="placeholdeinfo"
style="width:240px;"
>
<Option
v-for="(item,index) in list"
:key="item.index"
:value="item.value"
:label="item.label"
style="display:none"
></Option>
<Select v-model="orderSearchForm.productId" :placeholder="placeholdeinfo" style="width:240px;">
<Option v-for="(item,index) in list" :key="item.index" :value="item.value" :label="item.label" style="display:none"></Option>
<Tree key="mytree" :data="data1" ref="mytree" :render="renderContent"></Tree>
</Select>
</FormItem>
......@@ -29,11 +19,7 @@
</Col>
<Col span="8">
<FormItem label="任务类型" style="width:100%" prop="taskType">
<dictionary
code="plan.order.taskType"
v-model="orderSearchForm.taskType"
style="width:240px"
></dictionary>
<dictionary code="plan.order.taskType" v-model="orderSearchForm.taskType" style="width:240px"></dictionary>
</FormItem>
</Col>
</Row>
......@@ -45,24 +31,12 @@
</Col>
<Col span="8">
<FormItem label="开始时间" style="width:100%">
<DatePicker
type="date"
placeholder="请选择日期"
style="width:240px"
@on-change="getStartDate"
v-model="orderSearchForm.demandStartDate"
></DatePicker>
<DatePicker type="date" placeholder="请选择日期" style="width:240px" @on-change="getStartDate" v-model="orderSearchForm.demandStartDate"></DatePicker>
</FormItem>
</Col>
<Col span="8">
<FormItem label="完成时间" style="width:100%">
<DatePicker
type="date"
placeholder="请选择日期"
style="width:240px"
@on-change="getFinishedDate"
v-model="orderSearchForm.demandFinishDate"
></DatePicker>
<DatePicker type="date" placeholder="请选择日期" style="width:240px" @on-change="getFinishedDate" v-model="orderSearchForm.demandFinishDate"></DatePicker>
</FormItem>
</Col>
</Row>
......@@ -79,11 +53,7 @@
</Col>
<Col span="8">
<FormItem label="紧急程度" style="width:100%">
<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>
</Col>
</Row>
......@@ -106,9 +76,10 @@
</Col>
</Row>
</Form>
</div>
</div>
</template>
<script>
<script>
var myDate = new Date();
var dayTomorrow = new Date();
dayTomorrow.setTime(dayTomorrow.getTime() + 24 * 60 * 60 * 1000);
......@@ -147,31 +118,26 @@ export default {
bomId: null,
},
ruleValidate: {
productId: [
{
productId: [{
required: true,
message: "请选择产品名称",
type: "number",
trigger: "change",
},
],
taskType: [
{
}, ],
taskType: [{
required: true,
message: "请选择任务类型",
trigger: "change",
type: "number",
},
],
quantity: [
{
}, ],
quantity: [{
required: true,
message: "请输入数量",
type: "number",
trigger: "change",
}, ],
},
],
},
wfstatu: 1,
};
},
......@@ -227,7 +193,10 @@ export default {
this.selectdata = [];
this.selectdata = data;
this.list = [];
this.list.push({ label: data[0].title, value: data[0].id });
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;
......@@ -269,7 +238,11 @@ export default {
}
});
},
renderContent(h, { root, node, data }) {
renderContent(h, {
root,
node,
data
}) {
let type = "md-folder";
let title = data.title;
if (data.isProduct != 0) {
......@@ -285,8 +258,7 @@ export default {
}
}
return h(
"span",
{
"span", {
on: {
click: () => {
let arrTree = [];
......@@ -305,8 +277,7 @@ export default {
},
}),
h(
"span",
{
"span", {
style: {
color: data.isProduct == 0 ? "#000" : "rgba(38, 128, 235, 1)",
},
......
<template>
<Form ref="form" :model="entity" :rules="rules" :label-width="90">
<Row>
<Col span="8">
<FormItem :label="l('picture')" prop="picture">
<inputFile
class="tphoto"
ref="refmovieFile1"
v-model="imgName"
:parms="parmsName"
/>
</FormItem>
<div class="img-touxiang">
<img :src="avatorPath" v-if="imgName" @click="imgUrl" class="img1" />
<img
src="@/assets/images/files_header.png"
v-else
width="100%"
height="100%"
/>
</div>
</Col>
<Col span="16">
<!-- <Col :span="12"
><FormItem :label="l('creationTime')" prop="creationTime">
<DatePicker
......@@ -51,32 +71,10 @@
<Col :span="12"
><FormItem :label="l('state')" prop="state">
<Dictionary
code="mes.project_main.State"
code="project.main.state"
v-model="entity.state"
></Dictionary> </FormItem
></Col>
<Col :span="12"
><FormItem :label="l('type')" prop="type">
<Dictionary
code="mes.project_main.Type"
v-model="entity.type"
></Dictionary> </FormItem
></Col>
<Col :span="12"
><FormItem :label="l('picture')" prop="picture">
<Input v-model="entity.picture"> </Input> </FormItem
></Col>
<Col :span="12"
><FormItem :label="l('attachment')" prop="attachment">
<Input v-model="entity.attachment"> </Input> </FormItem
></Col>
<Col :span="12"
><FormItem :label="l('phase')" prop="phase">
<Dictionary
code="mes.project_main.Phase"
v-model="entity.phase"
></Dictionary> </FormItem
></Col>
<Col :span="12"
><FormItem :label="l('startDate')" prop="startDate">
<DatePicker
......@@ -92,9 +90,31 @@
></DatePicker> </FormItem
></Col>
<Col :span="12"
><FormItem :label="l('type')" prop="type">
<Dictionary
code="project.main.type"
v-model="entity.type"
></Dictionary> </FormItem
></Col>
<!--
<Col :span="12"
><FormItem :label="l('phase')" prop="phase">
<Dictionary
code="mes.project_main.Phase"
v-model="entity.phase"
></Dictionary> </FormItem
></Col> -->
<!-- <Col :span="12"
><FormItem :label="l('businessUnits')" prop="businessUnits">
<Input v-model="entity.businessUnits"> </Input> </FormItem
></Col>
></Col> -->
<Col :span="24">
<FormItem :label="l('attachment')" prop="attachment">
<!-- <Input v-model="entity.template" type="textarea" :rows="5"></Input> -->
<files ref="refFile" :parms="parms" files />
</FormItem>
</Col>
<Col :span="24"
><FormItem :label="l('note')" prop="note">
<Input
......@@ -103,11 +123,10 @@
:rows="5"
></Input> </FormItem
></Col>
</Col>
</Row>
<FormItem>
<Button type="primary" @click="handleSubmit" :disabled="disabled"
>保存</Button
>
<Button type="primary" @click="handleSubmit" v-noClick>保存</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
......@@ -119,6 +138,8 @@ export default {
data() {
return {
disabled: false,
imgName: "",
avatorPath: "",
entity: {
// creationTime: null,
creatorUserId: this.$store.state.userInfo.userId,
......@@ -141,6 +162,13 @@ export default {
rules: {
name: [{ required: true, message: "必填", trigger: "blur" }],
},
parmsName: "app=material&eid=1&name=ProjectMain",
parms: {
app: "material",
eid: null,
name: "",
field: "",
},
};
},
props: {
......@@ -148,15 +176,24 @@ export default {
eid: Number,
},
mounted() {
if (this.eid > 0) {
this.load(this.eid);
}
// if (this.eid > 0) {
// this.load(this.eid);
// }
this.$refs.refmovieFile1.inputShow = false;
this.parms.eid = this.$u.guid();
},
methods: {
imgUrl() {
window.open(this.avatorPath, "_blank");
},
handleSubmit() {
this.$refs.form.validate((v) => {
if (v) {
this.disabled = true;
if (this.$refs.refFile.nameList.length > 0) {
this.entity.attachment = this.parms.eid;
} else {
this.entity.attachment = "";
}
Api.create(this.entity)
.then((r) => {
this.disabled = false;
......@@ -198,6 +235,12 @@ export default {
this.load(v);
}
},
imgName(newName, oldName) {
console.log(newName);
const imgPathsArr = JSON.parse(newName);
this.entity.picture = imgPathsArr[0].filePath;
this.avatorPath = fileUrlDown + imgPathsArr[0].filePath;
},
},
};
</script>
\ No newline at end of file
<style lang="less">
.test_layout {
height: 100%;
.bg1 {
background: #fefefe;
}
// &.fg {
// // overflow: auto;
// }
}
.layout-copy {
text-align: center;
padding: 10px 0 20px;
......@@ -15,7 +18,7 @@
}
</style>
<template>
<div class="flex fd test_layout">
<div class="flex fd test_layout">
<div>
<Menu mode="horizontal" theme="light" active-name="a0">
<div class="layout-assistant">
......@@ -24,18 +27,23 @@
<MenuItem name="a2" to="/test/com">异步组件</MenuItem>
<MenuItem name="a4" to="/test/resource">资源选择</MenuItem>
<MenuItem name="a3" to="/test/view">详情拖拽排版</MenuItem>
<MenuItem name="a5" to="/test/test1">colum验证</MenuItem>
</div>
</Menu>
</div>
<div class="fg">
<nuxt-child></nuxt-child>
</div>
</div>
</div>
</template>
<script>
export default {
layout: "empty",
async fetch({ store, params }) {
async fetch({
store,
params
}) {
await store.dispatch("loadDictionary"); // 加载数据字典
}
};
......
<template>
<div style="width:100%;">
<Form :model="orderSearchForm" :label-width="120" :rules="ruleValidate" ref="formValidate">
<Row>
<Col span="8">
<FormItem label="输入校验" style="width:100%" prop="colums1">
<Input v-model="orderSearchForm.colums1" style="width:240px" />
</FormItem>
</Col>
<Col span="8">
<FormItem label="数据字典" style="width:100%" prop="colums2">
<dictionary code="plan.order.taskType" v-model="orderSearchForm.colums2" style="width:240px"></dictionary>
</FormItem>
</Col>
<Col span="8">
<FormItem label="电话校验" style="width:100%" prop="colums3">
<Input v-model="orderSearchForm.colums3" style="width:240px" />
</FormItem>
</Col>
<Col span="8">
<FormItem label="email校验" style="width:100%" prop="colums4">
<Input v-model="orderSearchForm.colums4" style="width:240px" />
</FormItem>
</Col>
<Col span="8">
<FormItem label="唯一性校验(用户编号)" style="width:100%" prop="colums5">
<Input v-model="orderSearchForm.colums5" style="width:240px" />
</FormItem>
</Col>
<Col span="8">
<FormItem label="时间校验" style="width:100%" prop="colums6">
<DatePicker v-model="orderSearchForm.colums6" type="date" placeholder="请选择日期" @on-change="getTime"></DatePicker>
</FormItem>
</Col>
</Row>
<Row>
<Col span="24">
<FormItem>
<Button type="primary" @click="handleSubmit" v-noClick>保存</Button>
</FormItem>
</Col>
</Row>
</Form>
</div>
</template>
<script>
export default {
layout: 'empty',
name: "Test1",
data() {
return {
orderSearchForm: {
colums6: ""
},
ruleValidate: this.$u.makeRules(),
};
},
mounted() {
},
methods: {
handleSubmit() {
this.$refs.formValidate.validate((v) => {
if (v) {
this.$Message.success('验证通过')
}
});
},
getTime(value) {
if (value != '') {
this.orderSearchForm.colums6 = this.getFormatDateEnd(value);
}
},
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;
},
},
};
</script>
<template>
<div class="flex">
<div class="flex">
<div class="fg1">
<Form ref="form" :model="entity" :rules="rules" :label-width="110">
<Row class="view">
......@@ -27,8 +27,9 @@
</li>
</ul>
</div>
</div>
</div>
</template>
<script>
export default {
name: "",
......@@ -65,14 +66,16 @@ export default {
};
</script>
<style lang="less" >
<style lang="less">
@line-height: 40px;
@item-width: 12.5%;
.view {
margin: 30px;
border: 1px solid #ddd;
line-height: @line-height;
background-color: white;
.item {
border-right: 1px solid #ddd;
border-top: 1px solid #ddd;
......
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