Commit 4cc501a4 authored by renjintao's avatar renjintao

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

parents d6ef13f7 9eda8978
......@@ -375,7 +375,7 @@ export default {
this.$emit("on-drag-drop", a, b);
},
easySearch() {
if (this.conditions && this.conditions.keys.default) {
if (this.conditions &&this.conditions.keys&& this.conditions.keys.default) {
//判断没有传入条件的用默认的查询
this.conditions.keys.value = this.keys;
}
......
......@@ -1473,5 +1473,21 @@ export default {
routingDetailId:'工序id',
routingHeaderId:'工艺规程id',
type:'类型(工艺案例还是工艺提醒)',
}
},
coderule:{
creationTime:'创建时间',
creatorUserId:'创建人',
lastModificationTime:'更新时间',
lastModifierUserId:'更新人',
isDeleted:'删除人',
deletionTime:'删除时间',
deleterUserId:'删除人',
code:'编码',
name:'名称',
type:'类型',
status:'状态',
description:'描述',
levelNum:'编码分类层数',
codeLength:'编码分类位数',
}
}
......@@ -14,7 +14,7 @@
</Col>
<Col :span="12">
<FormItem label="状态" prop="productName" placeholder="请选择">
<Select v-model="entity.productName" style="width:200px">
<Select v-model="entity.productName">
<Option value="0">New York</Option>
<Option value="1" disabled>London</Option>
<Option value="2">Sydney</Option>
......@@ -109,7 +109,7 @@ export default {
this.$refs.form.validate(v => {});
},
handleClose() {
this.$emit('on-close')
this.$emit("on-close");
}
}
};
......
import Api from '@/plugins/request'
export default {
// index:`${systemUrl}/category/paged`,
// getleveltree(params){
// return Api.post(`${systemUrl}/category/paged`,params);
// },
list(params){
return Api.post(`${systemUrl}/category/list`,params);
},
get(params){
return Api.get(`${systemUrl}/category/get`,params);
},
create(params){
return Api.post(`${systemUrl}/category/create`,params);
},
update(params){
return Api.post(`${systemUrl}/category/update`,params);
},
delete(id) {
return Api.delete(`${systemUrl}/category/delete`,{params:{id:id}});
},
}
\ No newline at end of file
<template>
<div class="classification">
<Button type="dashed" @click="add">新增</Button>
<Modal v-model="addModal" title="新增" footer-hide width='1000'>
<Add @on-close="cancel" @on-ok="addOk" ref="add" />
<Layout>
<Sider width="300" v-if="showMenu">
<div class="p-list">
<h3>
零部件库
<div class="fr mr10 mt10">
<ButtonGroup class="fr" size="small">
<Button icon="md-add" title="新增顶级" @click="addNew"></Button>
<Button
:icon="expand ? 'md-arrow-dropright' : 'md-arrow-dropdown'"
@click="toggle"
title="展开/合并"
></Button>
<Button icon="md-refresh" title="刷新" @click="loadTree"></Button>
<Button icon="md-rewind" title="收起" @click="hide"></Button>
</ButtonGroup>
</div>
</h3>
<div class="search">
<Input search placeholder="关键字" v-model="keys" clearable />
</div>
<div class="fg">
<div class="tree">
<Tree :data="data" ref="tree" @on-select-change="change" :render="renderContent"></Tree>
<Dropdown
transfer
ref="contentMenu"
style="display: none;"
trigger="click"
placement="right-start"
>
<DropdownMenu slot="list" ref="ppp" style="min-width: 80px;">
<DropdownItem>
<a @click="add">添加</a>
</DropdownItem>
<DropdownItem name="edit">
<a @click="edit">修改</a>
</DropdownItem>
<DropdownItem name="del">
<a @click="remove">删除</a>
</DropdownItem>
</DropdownMenu>
</Dropdown>
</div>
</div>
</div>
</Sider>
<div v-if="!showMenu" class="show_menu">
<a class="menu_play fr" @click="showMenuFn" title="展开">
<Icon type="ios-arrow-forward" size="24" />
</a>
</div>
<Content :class="!showMenu?'con_bord':''">
<!-- <Product :parent="parent" /> -->
</Content>
</Layout>
<Modal v-model="modal" :title="title" width="1000" footer-hide>
<component :is="detail" :eid="curId" :nodeInfo="nodeInfo" @on-close="cancel" @on-ok="ok" />
</Modal>
</div>
</template>
<script>
import Add from "./add";
// import spareParts from "./spareParts";
// import Product from "./product";
import Api from "./api";
export default {
components: {
Add
},
name: "",
data() {
return {
addModal: false
keys: "",
expand: false,
list: [],
nodeInfo: {},
modal: false,
title: "新增",
curId: 0,
detail: null,
showMenu: true,
parent: {
id: null,
parentName: "",
ids: ""
}
};
},
created() {
this.loadTree();
},
methods: {
showMenuFn() {
//this.$Message.info("展开左侧树")
this.showMenu = true;
},
ok() {
this.loadTree();
this.modal = false;
this.curId = 0;
},
addNew() {
this.nodeInfo.id = 0;
this.add();
},
add() {
this.addModal = true;
this.curId = 0;
this.title = "新增";
this.detail = () => import("./add");
this.modal = true;
},
remove(){
edit() {
// this.curId = this.nodeInfo.id;
// this.title = "编辑";
// this.detail = () => import("./edit");
// this.modal = true;
},
addOk() {
this.addModal = false;
remove() {
// console.log(this.nodeInfo);
if (this.nodeInfo.children.length > 1) {
this.$Message.error("因为有子级,不能直接删除");
} else {
this.$Modal.confirm({
title: "删除",
content: "<p>您确定要删除吗?</p>",
onOk: () => {
Api.delete(this.nodeInfo.id).then(r => {
if (r.success) {
this.loadTree();
this.$Message.success("删除成功");
}
});
},
onCancel: () => {
this.$Message.success("取消删除");
}
});
}
},
cancel() {
this.addModal = false;
this.curId = 0;
this.modal = false;
},
renderContent(h, { root, node, data }) {
return h(
"span",
{
on: {
// click: () => {
// this.handleSelect(data); //手动选择树节点
// },
//右键点击事件
contextmenu: e => {
e.preventDefault();
this.$refs.contentMenu.$refs.reference = event.target;
this.$refs.contentMenu.currentVisible = !this.$refs.contentMenu
.currentVisible;
this.nodeInfo = data;
}
}
},
data.title
);
},
// handleSelect(data) {
// this.$emit("clickItem", data);
// },
loadTree() {
let conditions = [];
Api.list({ conditions: conditions }).then(r => {
setTree(r.result);
function setTree(data) {
data.map(u => {
u.title = u.name;
u.value = u.id;
if (u.children) {
setTree(u.children);
}
});
}
var data = r.result;
this.list = this.$u.clone(data);
});
},
toggle() {
this.expand = !this.expand;
},
change(v, b) {
// console.log(v);
// console.log(b);
let ids = [];
ids.push(b.value);
if (b.children) {
addId(b.children);
function addId(data) {
data.map(u => {
ids.push(u.value);
if (u.children) {
addId(u.children);
}
});
}
}
// this.$emit("on-select", b.value, b, ids);
},
hide() {
this.showMenu = false;
}
},
computed: {
data() {
let items = this.$u.clone(this.list);
let expand = this.expand;
let result = [];
search(this.keys, items);
function search(keys, data) {
data.map(u => {
if (keys.length < u.title) {
u.expand = expand;
result.push(u);
} else {
u.expand = expand;
if (u.title.indexOf(keys) > -1) {
result.push(u);
} else if (u.children) {
search(keys, u.children);
}
}
});
}
return result;
}
}
};
</script>
<style lang="less" scoped>
<style lang="less" >
.classification {
width: 100%;
height: 100%;
font-family: Microsoft YaHei;
.ivu-layout-sider {
background: rgba(255, 255, 255, 1);
margin-right: 10px;
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15);
height: 87vh;
h4 {
height: 30px;
line-height: 30px;
background: #eee;
padding-left: 10px;
}
.p-list {
h3 {
height: 50px;
font-size: 14px;
font-family: Microsoft YaHei;
font-weight: bold;
line-height: 50px;
color: rgba(81, 90, 110, 1);
background: rgba(245, 246, 250, 1);
opacity: 1;
padding-left: 10px;
}
.search {
height: 50px;
padding: 5px 10px;
}
.fg {
flex: none;
height: 100%;
overflow: auto;
padding-left: 10px;
}
.tree {
height: calc(100vh - 215px);
overflow: auto;
}
}
}
.show_menu {
width: 30px;
height: 30px;
position: fixed;
top: 100px;
left: 0;
z-index: 9;
.menu_play {
width: 30px;
height: 30px;
line-height: 34px;
font-size: 14px;
text-align: center;
color: #515a6e;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
background: #ffffff;
box-shadow: #ccc 2px 2px 4px 1px;
}
.menu_play:hover {
background-color: #2d8cf0;
color: white;
}
}
.ivu-layout-content {
// margin-left: 5px;
background: rgba(255, 255, 255, 1);
box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.15);
overflow: auto;
padding: 10px;
height: 87vh;
overflow-y: hidden;
}
}
</style>
\ No newline at end of file
<template>
<div>
<Form ref="form" :model="entity" :rules="rules" :label-width="90">
<Row>
<Col :span="12">
<FormItem label="编码" prop="userUnit">
<Input v-model="entity.userUnit" placeholder="请输入"></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem label="名称" prop="taskBased">
<Input v-model="entity.taskBased" placeholder="请输入"></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem label="状态" prop="productName" placeholder="请选择">
<Select v-model="entity.productName" style="width:200px">
<Option value="0">New York</Option>
<Option value="1" disabled>London</Option>
<Option value="2">Sydney</Option>
</Select>
</FormItem>
</Col>
<Col :span="24">
<FormItem label="描述" prop="productName">
<Input v-model="entity.productName" type="textarea" placeholder="请输入..."></Input>
</FormItem>
</Col>
<Col :span="24">
<h4>属性配置</h4>
</Col>
<Col :span="24" style="padding:20px 0 0px 10px;margin-bottom:10px;" class="table-solt">
<Table border :columns="columns" :data="checkList" class="tableCommon">
<template slot-scope="{ row, index }" slot="name">
<Input v-model="row.name" placeholder="请输入" @on-blur="setRow(row,index)" />
</template>
<template slot-scope="{ row, index }" slot="require">
<Input v-model="row.require" placeholder="请输入" @on-blur="setRow(row,index)" />
</template>
<template slot-scope="{ row, index }" slot="result">
<Input v-model="row.result" placeholder="请输入" @on-blur="setRow(row,index)" />
</template>
<template slot-scope="{ row, index }" slot="pash">
<inputFile v-model="row.file" :files="true" :parms="getParams(row.fileId)" />
</template>
<template slot-scope="{ row, index }" slot="remark">
<Input v-model="row.remark" placeholder="请输入" @on-blur="setRow(row,index)" />
</template>
</Table>
</Col>
<Col :span="24" style="margin-bottom:20px;">
<Button type="primary" long @click="addNew" class="mt10">添加</Button>
</Col>
<Col :span="24" style="text-align: right;">
<FormItem>
<Button type="primary" @click="handleSubmit" :disabled="disabled">保存</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Col>
</Row>
</Form>
</div>
</template>
<script>
export default {
data() {
return {
entity: {},
disabled: false,
columns: [
{
title: "序号",
type: "index",
width: 80,
align: "center"
},
{
title: "检验项目",
key: "name",
align: "center",
slot: "name"
},
{
title: "要求",
key: "require",
align: "center",
slot: "require"
},
{
title: "预测结果",
key: "result",
align: "center",
slot: "result"
}
],
checkList: [],
rules: {
businessName: [{ required: true, message: "必填", trigger: "blur" }],
businessCode: [{ required: true, message: "必填", trigger: "blur" }]
}
};
},
methods: {
setRow() {
this.checkList = r.result;
},
addNew() {},
handleSubmit() {
this.$refs.form.validate(v => {});
},
handleClose() {
this.$emit('on-close')
}
}
};
</script>
<template>
<div class="spare-parts">
<Button type="dashed" @click="add">新增</Button>
<Modal v-model="addModal" title="新增" footer-hide width='1000'>
<Add @on-close="cancel" @on-ok="addOk" ref="add" />
</Modal>
</div>
</template>
<script>
import Add from "./add";
export default {
components: {
Add
},
data() {
return {
addModal: false
};
},
methods: {
add() {
this.addModal = true;
},
remove(){
},
addOk() {
this.addModal = false;
},
cancel() {
this.addModal = false;
}
}
};
</script>
<style lang="less" scoped>
.spare-parts {
width: 100%;
height: 100%;
}
</style>
\ No newline at end of file
<template>
<Form ref="form" :model="entity" :rules="rules" :label-width="120">
<Row>
<Col :span="12">
<FormItem :label="l('code')" prop="code">
<Input v-model="entity.code" disabled></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('name')" prop="name">
<Input v-model="entity.name"></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('type')" prop="type">
<Dictionary code="material.code.type" v-model="entity.type"></Dictionary>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('status')" prop="status">
<Dictionary code="material.code.status" v-model="entity.status"></Dictionary>
</FormItem>
</Col>
<Col :span="24">
<FormItem :label="l('description')" prop="description">
<Input v-model="entity.description" type="textarea" :rows="2"></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('levelNum')" prop="levelNum">
<InputNumber v-model="entity.levelNum" :max="10" :min="1"></InputNumber>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('codeLength')" prop="codeLength">
<InputNumber v-model="entity.codeLength" :max="5" :min="1"></InputNumber>
</FormItem>
</Col>
</Row>
<FormItem>
<Button type="primary" @click="handleSubmit" :disabled="disabled">保存</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
</template>
<script>
import Api from "./api";
export default {
name: "Add",
data() {
return {
disabled: false,
entity: {
creationTime: null,
creatorUserId: null,
lastModificationTime: null,
lastModifierUserId: null,
isDeleted: null,
deletionTime: null,
deleterUserId: null,
code: "",
name: "",
type: null,
status: null,
description: "",
levelNum: null,
codeLength: null
},
// formValidate:{
// name:'',type:'',status:'',levelNum:'',codeLength:''
// },
rules: {
name: [{ required: true, message: "必填", trigger: "blur" }],
type: [{ required: true, message: "必填"}],
status: [{ required: true, message: "必填"}],
levelNum: [{ required: true, message: "必填"}],
codeLength: [{ required: true, message: "必填"}]
}
};
},
props: {
v: Object,
eid: Number
},
mounted() {
if (this.eid > 0) {
this.load(this.eid);
}
},
methods: {
handleSubmit() {
this.$refs.form.validate(v => {
if (v) {
this.disabled = true;
Api.create(this.entity)
.then(r => {
this.disabled = false;
if (r.success) {
this.$Message.success("保存成功");
this.$emit("on-ok");
} else {
this.$Message.error("保存失败");
}
})
.catch(err => {
this.disabled = false;
this.$Message.error("保存失败");
console.warn(err);
});
}
});
},
handleClose() {
this.$emit("on-close");
},
load(v) {
Api.get({ id: v }).then(r => {
this.entity = r.result;
this.entity.id = 0;
});
},
l(key) {
key = "coderule" + "." + key;
return this.$t(key);
}
},
watch: {
v() {
this.entity = this.$u.clone(this.v);
},
eid(v) {
if (v > 0) {
this.load(v);
}
}
}
};
</script>
\ No newline at end of file
import Api from '@/plugins/request'
export default {
index:`${systemUrl}/coderule/paged`,
paged(params){
return Api.post(`${systemUrl}/coderule/paged`,params);
},
get(params){
return Api.get(`${systemUrl}/coderule/get`,params);
},
create(params){
return Api.post(`${systemUrl}/coderule/create`,params);
},
update(params){
return Api.post(`${systemUrl}/coderule/update`,params);
},
delete(id) {
return Api.delete(`${systemUrl}/coderule/delete`,{params:{id:id}});
},
deletes(params) {
return Api.post(`${systemUrl}/coderule/batchdelete`,params);
}
}
\ No newline at end of file
<template>
<div class="detail">
<Row>
<Filed :span="12" :name="l('code')">{{entity.code}}</Filed>
<Filed :span="12" :name="l('name')">{{entity.name}}</Filed>
<!-- <Filed :span="12" :name="l('type')">
<state code="material.code.type" :value="entity.type" type="text"></state>
</Filed>
<Filed :span="12" :name="l('status')">
<state code="material.code.status" :value="entity.status" type="text"></state>
</Filed> -->
<Filed :span="24" :name="l('description')">{{entity.description}}</Filed>
<Filed :span="12" :name="l('levelNum')">{{entity.levelNum}}</Filed>
<Filed :span="12" :name="l('codeLength')">{{entity.codeLength}}</Filed>
</Row>
</div>
</template>
<script>
import Api from './api'
export default {
name: 'Add',
data() {
return {
entity: {},
rules: {
name: [{ required: true, message: '必填', trigger: 'blur' }],
code: [{ required: true, message: '必填', trigger: 'blur' }]
}
}
},
props: {
eid: Number
},
mounted() {
if (this.eid > 0) {
this.load(this.eid);
}
},
methods: {
load(v) {
Api.get({ id: v }).then(r => {
this.entity = r.result;
this.$emit('on-load')
})
},
handleClose() {
this.$emit('on-close')
},
l(key) {
key = "coderule" + "." + key;
return this.$t(key)
}
},
watch: {
eid(v) {
if (v > 0) {
this.load(v);
}
}
}
}
</script>
\ No newline at end of file
<template>
<Form ref="form" :model="entity" :rules="rules" :label-width="120">
<Row>
<Col :span="12">
<FormItem :label="l('code')" prop="code">
<Input v-model="entity.code" disabled></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('name')" prop="name">
<Input v-model="entity.name"></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('type')" prop="type">
<Dictionary code="material.code.type" v-model="entity.type"></Dictionary>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('status')" prop="status">
<Dictionary code="material.code.status" v-model="entity.status"></Dictionary>
</FormItem>
</Col>
<Col :span="24">
<FormItem :label="l('description')" prop="description">
<Input v-model="entity.description" type="textarea" :rows="2"></Input>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('levelNum')" prop="levelNum">
<InputNumber v-model="entity.levelNum" disabled :max="10" :min="1"></InputNumber>
</FormItem>
</Col>
<Col :span="12">
<FormItem :label="l('codeLength')" prop="codeLength">
<InputNumber v-model="entity.codeLength" disabled :max="5" :min="1"></InputNumber>
</FormItem>
</Col>
</Row>
<FormItem>
<Button type="primary" @click="handleSubmit" :disabled="disabled">保存</Button>
<Button @click="handleClose" class="ml20">取消</Button>
</FormItem>
</Form>
</template>
<script>
import Api from "./api";
export default {
name: "Edit",
data() {
return {
disabled: false,
entity: {},
rules: {
name: [{ required: true, message: "必填", trigger: "blur" }],
type: [{ required: true, message: "必填" }],
status: [{ required: true, message: "必填" }],
levelNum: [{ required: true, message: "必填" }],
codeLength: [{ required: true, message: "必填" }]
}
};
},
props: {
eid: Number
},
mounted() {
if (this.eid > 0) {
this.load(this.eid);
}
},
methods: {
load(v) {
Api.get({ id: v }).then(r => {
this.entity = r.result;
});
},
handleSubmit() {
this.$refs.form.validate(v => {
if (v) {
this.disabled = true;
Api.update(this.entity)
.then(r => {
this.disabled = false;
if (r.success) {
this.$Message.success("保存成功");
this.$emit("on-ok");
} else {
this.$Message.error("保存失败");
}
})
.catch(err => {
this.disabled = false;
this.$Message.error("保存失败");
console.warn(err);
});
}
});
},
handleClose() {
this.$emit("on-close");
},
l(key) {
key = "coderule" + "." + key;
return this.$t(key);
}
},
watch: {
eid(v) {
if (v != 0) {
this.load(v);
}
}
}
};
</script>
\ No newline at end of file
<template>
<div>
<DataGrid :columns="columns" ref="grid" :action="action"><template slot="easySearch"><Form ref="formInline" :model="easySearch" inline><FormItem prop="keys"><Input placeholder="请输入关键字编码/名称" v-model="easySearch.keys.value" /> </FormItem>
<FormItem><Button type="primary" @click="search">查询</Button></FormItem>
</Form></template>
<template slot="searchForm">
<Search />
</template>
<template slot="buttons">
<Button type="primary" @click="add">新增</Button>
</template>
</DataGrid>
<Modal v-model="modal" :title="title" width="800" footer-hide>
<component :is="detail" :eid="curId" @on-close="cancel" @on-ok="ok" />
</Modal>
</div>
</template>
<script>
import Api from './api'
import Search from './search'
export default {
name: 'list',
components:{
Search
},
head: {
title: "物料编码规则",
author: "henq",
description: "coderule 6/4/2020 9:02:55 AM",
},
data() {
return {
action: Api.index,
easySearch: {
keys:{op:"code,name",value:null}
},
modal: false,
title:"新增",
detail:null,
curId: 0,
columns: [
{ key:"id",title:this.$t("id") ,hide:true ,align:"left" ,high:true },
{ key:"creationTime",title:this.l("creationTime") ,hide:true ,align:"left" ,high:true },
{ key:"creatorUserId",title:this.l("creatorUserId") ,hide:true ,align:"left" ,high:true },
{ key:"lastModificationTime",title:this.l("lastModificationTime") ,hide:true ,align:"left" ,high:true },
{ key:"lastModifierUserId",title:this.l("lastModifierUserId") ,hide:true ,align:"left" ,high:true },
{ key:"isDeleted",title:this.l("isDeleted") ,align:"left" ,hide:true ,high:true },
{ key:"deletionTime",title:this.l("deletionTime") ,hide:true ,align:"left" ,high:true },
{ key:"deleterUserId",title:this.l("deleterUserId") ,hide:true ,align:"left" ,high:true },
{ key:"code",title:this.l("code") ,align:"left" ,easy:true ,high:true },
{ key:"name",title:this.l("name") ,align:"left" ,easy:true ,high:true },
{ key:"type",title:this.l("type") ,align:"center" ,high:true,code:"material.code.type" },
{ key:"status",title:this.l("status") ,align:"center" ,high:true,code:"material.code.status" },
{ key:"description",title:this.l("description") ,align:"center" ,high:true },
{ key:"levelNum",title:this.l("levelNum") ,align:"center" ,high:true ,hide:true , },
{ key:"codeLength",title:this.l("codeLength") ,align:"center" ,high:true,hide:true , },
{
title: '操作',
key: 'action',
width: 140,
align: 'center',
render: (h, params) => {
return h('div', { class: "action" }, [
h('op', { attrs: { oprate: 'detail' }, on: { click: () => this.view(params.row.id) } }, '查看'),
//h('op', { attrs: { oprate: 'copy' }, on: { click: () => this.copy(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) } }, '删除')
])
}
},
]
}
},
mounted(){
console.log(this);
},
async fetch({ store, params }) {
await store.dispatch('loadDictionary') // 加载数据字典
},
methods:{
ok() {
this.$refs.grid.load()
this.modal = false
this.curId = 0;
},
search() {
this.$refs.grid.reload(this.easySearch)
},
add() {
this.curId = 0;
this.title = "新增";
this.detail =()=> import('./add')
this.modal = true;
},
copy(id) {
this.curId = id;
this.title = "克隆";
this.detail = () =>import('./add')
this.modal = true;
},
view(id) {
this.curId = id;
this.title = "详情";
this.detail = () =>import('./detail')
this.modal = true;
},
edit(id) {
this.curId = id;
this.title = "编辑";
this.detail = () => import('./edit')
this.modal = true;
},
remove(id) {
Api.delete(id).then((r) => {
if (r.success) {
this.$refs.grid.load();
this.$Message.success('删除成功')
}
})
},
cancel() {
this.curId = 0;
this.modal = false
},
l(key) {
/*
coderule:{
creationTime:'创建时间',
creatorUserId:'创建人',
lastModificationTime:'更新时间',
lastModifierUserId:'更新人',
isDeleted:'删除人',
deletionTime:'删除时间',
deleterUserId:'删除人',
code:'编码',
name:'名称',
type:'类型',
status:'状态',
description:'描述',
levelNum:'编码分层数',
codelength:'编码分类位数',
}
*/
let vkey = "coderule" + "." + key;
return this.$t(vkey)||key
}
}
}
</script>
<style lang="less">
</style>
\ No newline at end of file
<template>
<Form ref="form" :model="condition" :label-width="120">
<Row>
<Col :span="12" :v-if="condition.id.show"><FormItem :label="$t('id')" prop="id"> <Input v-model="condition.id.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.creationTime.show"><FormItem :label="l('creationTime')" prop="creationTime"> <DatePicker type="daterange" v-model="condition.creationTime.value"></DatePicker>
</FormItem></Col>
<!-- <Col :span="12" :v-if="condition.creatorUserId.show"><FormItem :label="l('creatorUserId')" prop="creatorUserId"> <Input v-model="condition.creatorUserId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.lastModificationTime.show"><FormItem :label="l('lastModificationTime')" prop="lastModificationTime"> <DatePicker type="daterange" v-model="condition.lastModificationTime.value"></DatePicker>
</FormItem></Col>
<Col :span="12" :v-if="condition.lastModifierUserId.show"><FormItem :label="l('lastModifierUserId')" prop="lastModifierUserId"> <Input v-model="condition.lastModifierUserId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.deletionTime.show"><FormItem :label="l('deletionTime')" prop="deletionTime"> <DatePicker type="daterange" v-model="condition.deletionTime.value"></DatePicker>
</FormItem></Col> -->
<Col :span="12" :v-if="condition.code.show"><FormItem :label="l('code')" prop="code"> <Input v-model="condition.code.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.name.show"><FormItem :label="l('name')" prop="name"> <Input v-model="condition.name.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.type.show"><FormItem :label="l('type')" prop="type"> <Dictionary code="material.code.type" v-model="condition.type.value"></Dictionary>
</FormItem></Col>
<Col :span="12" :v-if="condition.status.show"><FormItem :label="l('status')" prop="status"> <Dictionary code="material.code.status" v-model="condition.status.value"></Dictionary>
</FormItem></Col>
<Col :span="24" :v-if="condition.description.show"><FormItem :label="l('description')" prop="description"> <Input v-model="condition.description.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.levelNum.show"><FormItem :label="l('levelNum')" prop="levelNum"> <Input v-model="condition.levelNum.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.codeLength.show"><FormItem :label="l('codeLength')" prop="codeLength"> <Input v-model="condition.codeLength.value"> </Input>
</FormItem></Col>
</Row>
</Form>
</template>
<script>
import Api from './api'
export default {
name: 'Add',
data() {
return {
condition: {
id:{op:"Equal",value:null,show:true},
creationTime:{op:"Range",value:null,show:true},
creatorUserId:{op:"Equal",value:null,show:true},
lastModificationTime:{op:"Range",value:null,show:true},
lastModifierUserId:{op:"Equal",value:null,show:true},
deletionTime:{op:"Range",value:null,show:true},
code:{op:"Equal",value:null,show:true},
name:{op:"Equal",value:null,show:true},
type:{op:"Equal",value:null,show:true},
status:{op:"Equal",value:null,show:true},
description:{op:"Equal",value:null,show:true},
levelNum:{op:"Equal",value:null,show:true},
codeLength:{op:"Equal",value:null,show:true},
},
}
},
methods: {
handleClose() {
this.$emit('on-close')
},
l(key) {
key = "coderule" + "." + key;
return this.$t(key)
}
}
}
</script>
\ No newline at end of file
<template>
<div class="pross_case">
<!-- table -->
<DataGrid :columns="columns" ref="grid" :action="action" type="card" :span="6" class="table_box">
<!-- table -->
<DataGrid
:columns="columns"
ref="grid"
:action="action"
:conditions="easySearch"
type="card"
:span="6"
:high="false"
>
<template slot="easySearch">
<Form ref="formInline" :model="easySearch" inline>
<FormItem prop="keys">
......@@ -19,22 +27,24 @@
<Button type="primary" @click="add">新增</Button>
</template>
<template slot="card" slot-scope="{row}">
<div class="card_box" @click="changeCards(row)">
<Row :gutter="16">
<Col span="6">
<div class="file">
<Icon type="ios-paper" v-if="row.id%2==0"/>
<Icon type="md-film" v-else/>
</div>
</Col>
<Col span="18">
<p><b>{{row.title}}</b></p>
<p>{{row.creationTime}}</p>
<p>{{row.id}}{{row.creator}}</p>
</Col>
</Row>
</div>
<!-- <Tag type="dot" slot-scope="{row}" :checkable="true" class="tag_card" size="large" :name="row.id" :key="row.index" :checked="row.checked"
<div class="card_box" @click="changeCards(row)">
<Row :gutter="16">
<Col span="6">
<div class="file">
<Icon type="ios-paper" v-if="row.id%2==0" />
<Icon type="md-film" v-else />
</div>
</Col>
<Col span="18">
<p>
<b>{{row.title}}</b>
</p>
<p>{{row.creationTime}}</p>
<p>{{row.id}}{{row.creator}}</p>
</Col>
</Row>
</div>
<!-- <Tag type="dot" slot-scope="{row}" :checkable="true" class="tag_card" size="large" :name="row.id" :key="row.index" :checked="row.checked"
color="primary" @on-change="changeCards" >
<Row :gutter="16">
<Col span="6">
......@@ -49,7 +59,7 @@
<p>{{row.id}}{{row.creator}}</p>
</Col>
</Row>
</Tag> -->
</Tag>-->
</template>
</DataGrid>
<Modal v-model="modal" :title="title" width="1200" footer-hide>
......@@ -66,7 +76,7 @@ export default {
Search
},
head: {
title: "工艺案例/工艺提醒",
title: "工艺案例",
author: "henq",
description: "process_case 6/1/2020 5:06:34 PM"
},
......@@ -74,7 +84,8 @@ export default {
return {
action: Api.index,
easySearch: {
keys: { op: "title", value: null }
keys: { op: "title", value: null },
type: { op: "Equal", value: 1 }
},
modal: false,
title: "新增",
......@@ -184,7 +195,6 @@ export default {
},
"查看"
),
//h('op', { attrs: { oprate: 'copy' }, on: { click: () => this.copy(params.row.id) } }, '克隆'),
h(
"op",
{
......@@ -207,15 +217,22 @@ export default {
]
};
},
created() {},
mounted() {
console.log(this);
// console.log(this);
// let where = { type: { op: "Equal", value: 1 } };
// this.$refs.grid.reload(where);
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
methods: {
changeCards(carData){
this.$Message.success("选择工艺")
laodparme() {
console.log(555);
this.$refs.grid.reload(condition);
},
changeCards(carData) {
this.$Message.success("选择工艺");
},
ok() {
this.$refs.grid.load();
......
<template>
<Form ref="form" :model="condition" :label-width="90">
<Row>
<Col :span="12" :v-if="condition.id.show"><FormItem :label="$t('id')" prop="id"> <Input v-model="condition.id.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.creationTime.show"><FormItem :label="l('creationTime')" prop="creationTime"> <DatePicker type="daterange" v-model="condition.creationTime.value"></DatePicker>
</FormItem></Col>
<Col :span="12" :v-if="condition.creatorUserId.show"><FormItem :label="l('creatorUserId')" prop="creatorUserId"> <Input v-model="condition.creatorUserId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.lastModificationTime.show"><FormItem :label="l('lastModificationTime')" prop="lastModificationTime"> <DatePicker type="daterange" v-model="condition.lastModificationTime.value"></DatePicker>
</FormItem></Col>
<Col :span="12" :v-if="condition.lastModifierUserId.show"><FormItem :label="l('lastModifierUserId')" prop="lastModifierUserId"> <Input v-model="condition.lastModifierUserId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.deletionTime.show"><FormItem :label="l('deletionTime')" prop="deletionTime"> <DatePicker type="daterange" v-model="condition.deletionTime.value"></DatePicker>
</FormItem></Col>
<Col :span="12" :v-if="condition.title.show"><FormItem :label="l('title')" prop="title"> <Input v-model="condition.title.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.creator.show"><FormItem :label="l('creator')" prop="creator"> <Input v-model="condition.creator.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.filePath.show"><FormItem :label="l('filePath')" prop="filePath"> <Input v-model="condition.filePath.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.filePaths.show"><FormItem :label="l('filePaths')" prop="filePaths"> <Input v-model="condition.filePaths.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.dispatchId.show"><FormItem :label="l('dispatchId')" prop="dispatchId"> <Input v-model="condition.dispatchId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.routingDetailId.show"><FormItem :label="l('routingDetailId')" prop="routingDetailId"> <Input v-model="condition.routingDetailId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.routingHeaderId.show"><FormItem :label="l('routingHeaderId')" prop="routingHeaderId"> <Input v-model="condition.routingHeaderId.value"> </Input>
</FormItem></Col>
<Col :span="12" :v-if="condition.type.show"><FormItem :label="l('type')" prop="type"> <Input v-model="condition.type.value"> </Input>
</FormItem></Col>
</Row>
</Form>
<Form ref="form" :model="condition" :label-width="90">
<Row>
<Col :span="12" :v-if="condition.id.show">
<FormItem :label="$t('id')" prop="id">
<Input v-model="condition.id.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.creationTime.show">
<FormItem :label="l('creationTime')" prop="creationTime">
<DatePicker type="daterange" v-model="condition.creationTime.value"></DatePicker>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.creatorUserId.show">
<FormItem :label="l('creatorUserId')" prop="creatorUserId">
<Input v-model="condition.creatorUserId.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.lastModificationTime.show">
<FormItem :label="l('lastModificationTime')" prop="lastModificationTime">
<DatePicker type="daterange" v-model="condition.lastModificationTime.value"></DatePicker>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.lastModifierUserId.show">
<FormItem :label="l('lastModifierUserId')" prop="lastModifierUserId">
<Input v-model="condition.lastModifierUserId.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.deletionTime.show">
<FormItem :label="l('deletionTime')" prop="deletionTime">
<DatePicker type="daterange" v-model="condition.deletionTime.value"></DatePicker>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.title.show">
<FormItem :label="l('title')" prop="title">
<Input v-model="condition.title.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.creator.show">
<FormItem :label="l('creator')" prop="creator">
<Input v-model="condition.creator.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.filePath.show">
<FormItem :label="l('filePath')" prop="filePath">
<Input v-model="condition.filePath.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.filePaths.show">
<FormItem :label="l('filePaths')" prop="filePaths">
<Input v-model="condition.filePaths.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.dispatchId.show">
<FormItem :label="l('dispatchId')" prop="dispatchId">
<Input v-model="condition.dispatchId.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.routingDetailId.show">
<FormItem :label="l('routingDetailId')" prop="routingDetailId">
<Input v-model="condition.routingDetailId.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.routingHeaderId.show">
<FormItem :label="l('routingHeaderId')" prop="routingHeaderId">
<Input v-model="condition.routingHeaderId.value"></Input>
</FormItem>
</Col>
<Col :span="12" :v-if="condition.type.show">
<FormItem :label="l('type')" prop="type">
<Input v-model="condition.type.value"></Input>
</FormItem>
</Col>
</Row>
</Form>
</template>
<script>
import Api from './api'
export default {
name: 'Add',
data() {
return {
condition: {
id:{op:"Equal",value:null,show:true},
creationTime:{op:"Range",value:null,show:true},
creatorUserId:{op:"Equal",value:null,show:true},
lastModificationTime:{op:"Range",value:null,show:true},
lastModifierUserId:{op:"Equal",value:null,show:true},
deletionTime:{op:"Range",value:null,show:true},
title:{op:"Equal",value:null,show:true},
creator:{op:"Equal",value:null,show:true},
filePath:{op:"Equal",value:null,show:true},
filePaths:{op:"Equal",value:null,show:true},
dispatchId:{op:"Equal",value:null,show:true},
routingDetailId:{op:"Equal",value:null,show:true},
routingHeaderId:{op:"Equal",value:null,show:true},
type:{op:"Equal",value:null,show:true},
},
}
},
methods: {
handleClose() {
this.$emit('on-close')
},
l(key) {
key = "process_case" + "." + key;
return this.$t(key)
import Api from "./api";
export default {
name: "Add",
data() {
return {
condition: {
id: { op: "Equal", value: null, show: true },
creationTime: { op: "Range", value: null, show: true },
creatorUserId: { op: "Equal", value: null, show: true },
lastModificationTime: { op: "Range", value: null, show: true },
lastModifierUserId: { op: "Equal", value: null, show: true },
deletionTime: { op: "Range", value: null, show: true },
title: { op: "Equal", value: null, show: true },
creator: { op: "Equal", value: null, show: true },
filePath: { op: "Equal", value: null, show: true },
filePaths: { op: "Equal", value: null, show: true },
dispatchId: { op: "Equal", value: null, show: true },
routingDetailId: { op: "Equal", value: null, show: true },
routingHeaderId: { op: "Equal", value: null, show: true },
type: { op: "Equal", value: null, show: true }
}
}
};
},
methods: {
handleClose() {
this.$emit("on-close");
},
l(key) {
key = "process_case" + "." + key;
return this.$t(key);
}
}
};
</script>
\ No newline at end of file
<template>
<div class="">
<div class="case_box">
<!-- <a class="file_card div_card" @click="ditaile(item.name)"
v-for="(item,index) in cardlist" :label="item.id" :key="index">
<div class="file">
<Icon type="ios-paper" v-if="item.id%3==0"/> -->
<!-- <Icon type="ios-film" v-else/> -->
<!-- <Icon type="md-film" v-else/>
</div>
<div class="list">
<ul>
<li>{{item.name}}</li>
<li>{{item.userName}}</li>
<li>{{item.time}}</li>
</ul>
</div>
</a> -->
工艺提醒列表
<DataGrid
:columns="columns"
ref="grid" style="height:auto"
type="card"
:high="false"
:span="6"
:lazy="true"
>
<!-- <template slot="easySearch">
<Form ref="formInline" :model="easySearch" inline>
<FormItem prop="keys">
<Input
search
enter-button
placeholder="请输入关键字项目名称"
v-model="easySearch.keys.value"
@on-search="search"
/>
</FormItem>
</Form>
</template> -->
<template slot="buttons">
<Button type="primary">新增</Button>
</template>
<!--<template slot="card" slot-scope="{row}">
<!-- v-for="(item,index) in cardlist" :label="item.id" :key="index"
<div class="body">
<Row class="title-i">
<Col :span="18" class="order-code">项目名称:{{row.name}}</Col>
<Col :span="6" class="btn-click">
<a @click="edit(row.id)">
<Icon type="ios-create" @click="edit(row.id)" />
</a>
<a @click="detail(row.id)">
<Icon type="ios-paper" />
</a>
<a @click="remove(row.id)">
<Icon type="ios-trash" />
</a>
</Col>
</Row>
<div class="down-text">
<Row class="row">
<Col span="12" class="fa">主管部门:{{row.shopId}}</Col>
<Col span="12" class="fa">负责人:{{row.principal}}</Col>
</Row>
<Row class="row">
<Col span="12" class="fa">
销售阶段:
<state code="crm.project.stage" :value="row.stage" />
</Col>
<Col span="12" class="fa">
是否报备:
<state code="crm.project.isInform" :value="row.isInform" />
</Col>
</Row>
<Row class="row">
<Col span="12" class="fa">
状态:
<state code="crm.project.status" :value="row.status" />
</Col>
<Col span="12" class="fa">预算:{{row.budget}}</Col>
</Row>
</div>
</div>
</template> -->
</DataGrid>
</div>
</div>
</template>
<script>
import Api from "./api";
export default {
name:'starOrder',
data(){
return{
action: Api.index,
easySearch: {
keys: { op: "name", value: null },
customerId: { op: "Equal", value: null }
},
columns: [],
cardlist:[
{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:1,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:2,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:3,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:4,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:5,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:6,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:7,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:8,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:9,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:10,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:11,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:12,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:13,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:14,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:15,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:16,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:17,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:18,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:19,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:20,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:21,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:22,
checked:false
},{
name:'工艺文档名称',
userName:'张三',
time:'2020-02-06',
id:23,
checked:false
},
],
}
},
created() {
// this.treeHeight = window.innerHeight - 120;
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
},
mounted() {
window.onresize = () => {
///浏览器窗口大小变化
return (() => {
this.treeHeight = window.innerHeight - 120;
})();
};
},
methods: {
ditaile(name){
this.$Message.success("查看: "+ name +" 详情...")
},
search() {
this.$refs.grid.reload(this.easySearch);
},
},
}
</script>
<template>
<div class="pross_case">
<div class="pross_case pros_check">
<!-- table -->
<DataGrid
:columns="columns"
ref="grid"
:action="action"
:conditions="conditions"
:conditions="easySearch"
type="card"
:span="6"
:easy="false"
:height="false"
class="table_box"
:span="6"
:high="false"
>
<template slot="easySearch">
<Form ref="formInline" :model="easySearch" inline>
<FormItem prop="keys">
<Input placeholder="请输入关键字名称" v-model="easySearch.keys.value" />
</FormItem>
<FormItem>
<Button type="primary" @click="search">查询</Button>
</FormItem>
</Form>
</template>
<template slot="buttons">
<Button type="primary" @click="add">新增</Button>
</template>
......@@ -56,15 +64,9 @@ export default {
data() {
return {
action: Api.index,
conditions: {
pageIndex: 1,
pageSize: 20,
conditions: [
{ fieldName: "type", fieldValue: 2, conditionalType: "Equal" }
]
},
easySearch: {
keys: { op: "title", value: null }
keys: { op: "title", value: null },
type: { op: "Equal", value: 2 }
},
modal: false,
title: "新增",
......@@ -198,7 +200,7 @@ export default {
};
},
mounted() {
console.log(this);
// console.log(this);
},
async fetch({ store, params }) {
await store.dispatch("loadDictionary"); // 加载数据字典
......@@ -252,6 +254,26 @@ export default {
this.modal = false;
},
l(key) {
/*
process_case:{
creationTime:'创建时间',
creatorUserId:'创建人',
lastModificationTime:'更新时间',
lastModifierUserId:'更新人',
isDeleted:'删除人',
deletionTime:'删除时间',
deleterUserId:'删除人',
title:'名称',
creator:'创建人',
content:'内容',
filePath:'文件路径',
filePaths:'多个文件路径',
dispatchId:'工单id',
routingDetailId:'工序id',
routingHeaderId:'工艺规程id',
type:'类型(工艺案例还是工艺提醒)',
}
*/
let vkey = "process_case" + "." + key;
return this.$t(vkey) || key;
}
......
......@@ -18,7 +18,7 @@
</Header>
<Layout class="bottom_box">
<!-- <nuxt-child keep-alive></nuxt-child> -->
<component :is="detail" :eid="id" :uid="uId" :isoutpdf="false" style="padding:10px 30px;" />
<component :is="detail" :eid="id" :uid="uId" :isoutpdf="false"/>
</Layout>
</Layout>
</div>
......@@ -70,18 +70,18 @@ export default {
this.detail = () => import("./components/workSteps");
}
if (this.id == "4") {
this.detail = () => import("./components/guidance");
this.detail = () => import("./guidance");
}
}
}
};
</script>
<style scoped>
.wu_bg .bottom_box {
/* .wu_bg .bottom_box {
padding: 5px 20px;
background: white;
border: 1px solid #ccc;
border-top: 0;
overflow-y: auto;
}
} */
</style>
......@@ -97,10 +97,14 @@
margin: 10px 0 0 170px;
}
}
.bottom_box{
height: calc(100vh - 145px);
overflow-y: auto;
padding: 15px 40px 0px;
}
.pross_case{
padding: 5px 50px 0;
.table_box{
height: calc(100vh - 105px);
height: calc(100vh - 105px);
.card_box {
background: #F5F6FA;
border: 1px solid #dedede7d;
......@@ -116,7 +120,10 @@
.card_box:hover {
box-shadow: 4px 5px 7px #d2d2d2bd;
}
}
}
.pros_check{
height: calc(100vh - 175px);
padding: 0;
}
}
......@@ -255,9 +262,6 @@
}
span{
display: block;
}
.shi{
}
.number{
font-size: 32px;
......
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