Commit 2c1ac014 authored by 周远喜's avatar 周远喜

基础框架升级,换装到iview-admin上。

parent 2b4ddb2c
Pipeline #64 failed with stages
import Api from './api.js'
import Api from '@/plugins/request'
export default {
index: `${bugUrl}/bugmain/paged`,
//新建or修改bug:
......
import Api from './request.js'
import Api from '@/plugins/request'
export default{
getTableTree(tree){
//let tree=[];
Api.get(`${systemUrl}/Department/GetDepartmentsWithOrganizations`).then(res=>{
let arrs=res.data.result.items;
let arrs=res.result.items;
//console.log(res);
//组装成树结构:
//1父节点:
......@@ -69,7 +69,7 @@ export default{
},
getTree(data){
Api.get(`${systemUrl}/Department/GetDepartments`).then(res=>{
let arrs=res.data.result.items;
let arrs=res.result.items;
// console.log(res);
//组装成树结构:
//1父节点:
......@@ -127,7 +127,7 @@ export default{
},
getAddTree(data){
Api.get(`${systemUrl}/Department/GetDepartments`).then(res=>{
let arrs=res.data.result.items;
let arrs=res.result.items;
//组装成树结构:
//1父节点:
let roots=arrs.filter(c=>c.parent_Id==0);
......@@ -209,9 +209,9 @@ export default{
getDepartmentTree(data){
Api.get(`${systemUrl}/department/getdepartmenttrees`).then(res=>{
var sumData = []
if (res.data.result) {
for (var i = 0; i < res.data.result.length; i++) {
data.push(res.data.result[i])
if (res.result) {
for (var i = 0; i < res.result.length; i++) {
data.push(res.result[i])
}
}
});
......
import sysUser from './sysUser';
// import system from './system.js';
// import department from './department.js';
// import organization from './organization.js';
// import order from './order';
// import quotation from './quotation';
// import bug from './bug';
// import jurisdiction from './jurisdiction';
// import storeHouse from './storeHouse';
// import common from './common';
import system from './system.js';
import department from './department.js';
import organization from './organization.js';
import order from './order';
import quotation from './quotation';
import bug from './bug';
import jurisdiction from './jurisdiction';
import storeHouse from './storeHouse';
import common from './common';
export default {
sysUser,
// system,
// department,
// organization,
// order,
// quotation,
// bug,
// jurisdiction,
// storeHouse,
// common
system,
department,
organization,
order,
quotation,
bug,
jurisdiction,
storeHouse,
common
}
\ No newline at end of file
import Api from './api.js'
import Api from '@/plugins/request'
export default {
//获取菜单列表:
getListTree(params) {
......
import Api from './api.js'
import Api from '@/plugins/request'
export default {
//新建订单:
addOrder(params) {
......
import Api from './request.js'
import Api from '@/plugins/request'
export default {
//获取树操作:
getTableTree(tree) {
Api.get(`${systemUrl}/Organization/GetOrganizations`).then(res => {
let arrs = res.data.result.items;
let arrs = res.result.items;
//组装成树结构:
//1父节点:
let roots = arrs.filter(c => c.parent_Id == 0);
......@@ -90,7 +90,7 @@ export default {
},
getTree(data) {
Api.get(`${systemUrl}/Organization/GetOrganizations`).then(res => {
let arrs = res.data.result.items;
let arrs = res.result.items;
//组装成树结构:
//1父节点:
let roots = arrs.filter(c => c.parent_Id == 0);
......@@ -164,7 +164,7 @@ export default {
},
getAddTree(data) {
Api.get(`${systemUrl}/Organization/GetOrganizations`).then(res => {
let arrs = res.data.result.items;
let arrs = res.result.items;
//组装成树结构:
//1父节点:
let roots = arrs.filter(c => c.parent_Id == 0);
......
import Api from './api.js'
import Api from '@/plugins/request'
export default {
//获取产品树:
getallselecttree() {
......
import Api from './api.js'
import Api from '@/plugins/request'
export default {
//根据id获取订单详情
getpaged(params) {
......
......@@ -5,7 +5,7 @@ export default {
Api.get(`${systemUrl}/SysUser/GetAllSysUsers`)
.then(res => {
// {id:1,name:'张三',gender:'男',birthday:'1995-1-4',degree:'本科',title:'高级技工',jobNumber:'A0001',workLicense:'B0001',equipment:'E01',email:'abc@123.com',phone:'18000000222',department:'测试数控车1',jobName:'班组长',role:'班组长',account:'aaaaa',employeeNo:'C0001',modifyTime:'2019-8-8 10:10:10',status:1,remark:''}
let arrs = res.data.result.items;
let arrs = res.result.items;
//console.log(arrs);
if (arrs.length == 0) return;
for (let a = 0; a < arrs.length; a++) {
......
import Api from './request.js'
//import Api from './api.js'
import Api from '@/plugins/request'
export default{
login(params) {
......
This diff is collapsed.
@import '~view-design/src/styles/index.less';
@primary-color: #249e91;
.ivu-btn {
padding: 4px 15px 4px;
}
.ivu-btn {
padding: 4px 15px 4px;
}
.ivu-modal-wrap * {
box-sizing: border-box;
-webkit-tap-highlight-color: transparent;
}
.ivu-btn-primary {
color: #fff;
background-color: @primary-color;
border-color: @primary-color;
}
.ivu-btn-group:not(.ivu-btn-group-vertical) .ivu-btn-primary:first-child:not(:last-child) {
border-right-color: @primary-color;
}
.ivu-btn {
padding: 4px 15px 4px;
font-size: 14px;
}
.ivu-btn-primary:hover {
color: #fff;
background-color: @primary-color;
border-color: @primary-color;
}
.ivu-btn-default:hover {
color: @primary-color;
border-color: @primary-color;
}
.ivu-btn-group:not(.ivu-btn-group-vertical) .ivu-btn-primary+.ivu-btn,
.ivu-btn-group:not(.ivu-btn-group-vertical) .ivu-btn-primary:last-child:not(:first-child) {
border-left-color: @primary-color;
}
.ivu-btn-group:not(.ivu-btn-group-vertical) .ivu-btn-primary:first-child:not(:last-child) {
border-right-color: @primary-color;
}
.ivu-btn-group:not(.ivu-btn-group-vertical) .ivu-btn-primary:first-child:not(:last-child) {
border-right-color: @primary-color;
}
.ivu-btn-group:not(.ivu-btn-group-vertical)>.ivu-btn:first-child:not(:last-child) {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
.ivu-btn-group:not(.ivu-btn-group-vertical) .ivu-btn-primary:first-child:not(:last-child) {
border-right-color: #2b85e4;
}
.ivu-btn-group:not(.ivu-btn-group-vertical)>.ivu-btn:first-child {
margin-left: 0;
}
.ivu-btn-group>.ivu-btn {
position: relative;
float: left;
}
/* tab颜色为绿色 */
.ivu-tabs-nav .ivu-tabs-tab-active {
color: @primary-color;
font-weight: bold
}
.ivu-tabs-nav .ivu-tabs-tab:hover {
color: @primary-color;
}
.ivu-tabs-ink-bar {
background-color: @primary-color;
}
.ivu-page-item-active {
background-color: @primary-color;
color: white;
}
.ivu-page-item-active:hover {
background-color: @primary-color;
color: white;
}
.ivu-page-item-active>a {
color: white
}
.ivu-page-item-active>a:hover {
color: white
}
.ivu-page li:hover {
color: white
}
.ivu-page-item-active:hover a {
color: #fff;
}
.ivu-input-search {
cursor: pointer;
padding: 0 16px !important;
background: @primary-color !important;
color: #fff !important;
border-color: @primary-color !important;
transition: all .2s ease-in-out;
position: relative;
z-index: 2;
}
.ivu-input-search:hover {
cursor: pointer;
padding: 0 16px !important;
background: #2ab5a6 !important;
color: #fff !important;
border-color: #2ab5a6 !important;
transition: all .2s ease-in-out;
position: relative;
z-index: 2;
}
.ivu-btn-success {
font-size: 14px;
color: #fff;
background-color: @primary-color;
border-color: @primary-color;
}
.ivu-btn-success:hover {
font-size: 14px;
color: #fff;
background-color: #2ab5a6;
border-color: #2ab5a6;
}
.ivu-btn-default {
font-size: 14px;
}
.ivu-modal-header {
background-color: #f2f2f2;
border-radius: 5px 5px 0 0;
}
.ivu-modal-footer {
border-top: 1px solid #e8eaec;
padding: 12px 80px 12px 18px;
text-align: right;
}
.ivu-row {
position: relative;
margin-left: 0;
margin-right: 0;
//height: 48px;
zoom: 1;
display: block;
}
.ivu-col-span-10 {
height: 48px;
}
.ivu-form .ivu-form-item-label {
text-align: right;
vertical-align: middle;
float: left;
font-size: 14px;
color: #515a6e;
line-height: 1;
padding: 10px 12px 10px 0;
box-sizing: border-box;
}
.ivu-input {
font-size: 14px;
}
.ivu-form-item {
margin-bottom: 16px;
vertical-align: top;
zoom: 1;
}
// .ivu-col-span-12 {
// // height:48px;
// }
//冻结table列样式
.ivu-table-fixed,
.ivu-table-fixed-right {
position: absolute;
top: 0;
left: 0;
box-shadow: 1px 0 1px rgba(0, 0, 0, .1);
}
//button 边距,可控制button的高度
.ivu-btn {
padding: 4px 15px 4px;
}
//复选框背景色
.ivu-checkbox-indeterminate .ivu-checkbox-inner {
border-color: @primary-color;
background-color: @primary-color;
}
.ivu-checkbox-checked .ivu-checkbox-inner {
border-color: @primary-color;
background-color: @primary-color;
}
//鼠标经过table hover及选择行后的背景色
.ivu-table-row-hover td {
background: #EFF8F7 !important;
}
.ivu-table-row-highlight td {
background-color: #EFF8F7 !important;
}
.ivu-dropdown-rel:hover {
.ivu-btn-text {
background-color: @primary-color;
}
}
//校验不通过下面提示红色小字
.ivu-form-item-error-tip {
position: absolute;
top: 100%;
left: 0;
line-height: 1;
padding-top: 2px;
color: #ed4014;
}
// .ivu-upload {
// // width:500px;
// //float: left;
// }
.ivu-upload input {
width: 300px;
height: 25px;
}
//重新定义弹框的footer--[工艺规程管理有用到]
.model_footer {
border-top: 1px solid #e8eaec;
width: 100%;
padding: 10px 0 0;
text-align: right;
}
.ivu-card-head {
background: #f5f6fa;
}
.ivu-btn-ghost.ivu-btn-dashed,
.ivu-btn-ghost.ivu-btn-default {
color: @primary-color;
border-color: @primary-color;
background-color: #fff;
}
.addform {
.ivu-input-icon {
width: 32px;
height: 32px;
line-height: 32px;
font-size: 16px;
text-align: center;
color: #808695;
position: absolute;
right: 60px;
z-index: 3;
}
}
// 人员选框
.userstyle {
color: #515A6E;
display: block;
width: 100%;
padding: 4px
}
.userstylese {
color: #A7B8CC;
display: block;
width: 100%;
padding: 4px;
border: 1px dashed #DCDFE6;
text-align: center;
}
.ivu-form-item-content Img {
max-width: 100%;
}
.myBug {
.ivu-footer-toolbar {
text-align: left;
background: rgba(0, 0, 0, 0.7);
color: #fff;
height:65px;
.ivu-footer-toolbar-right {
float: left;
padding-left: 200px;
}
}
}
.examine {
padding: 0;
.ivu-footer-toolbar {
text-align: left;
background: rgba(0, 0, 0, 0.7);
color: #fff;
}
}
.manyTabs {
.ivu-tabs-bar {
position: absolute;
z-index: 9999;
width: 100%;
}
}
.rowTitle80 {
padding-right:20px;
.ivu-input-with-suffix {
width: 294px;
}
}
.rowTitle100 {
padding-right:20px;
.ivu-input-with-suffix {
width: 274px;
}
}
.rowTitle120 {
padding-right:20px;
.ivu-input-with-suffix {
width: 254px;
}
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<template>
<Drawer title="" v-model="show" @on-close="close">
<!--抽屉内容 -->
<Tabs v-model="currTab" @on-click="clickTab" value="all">
<TabPane label="全部列" name="all">
<div>
<ul is='CheckboxGroup' v-model="checkedGroup" v-for="(item,index) in allGroup" :key="index" class="checkgroup">
<ol><Checkbox :label="item"></Checkbox></ol>
</ul>
</div>
</TabPane>
<TabPane label="可见列" name="sele">
<div>
<!-- <ul is='CheckboxGroup' v-model="checkedGroup" v-for="(item,index) in checkedGroup" :key="index" class="checkgroup">
<ol>{{item}}</ol>
</ul> -->
<Draggable :options="options" :value="checkedGroup" @input="handleListChange($event, 'left')" @end="handleEnd($event, 'left')">
<div v-for="(itemLeft, index) in checkedGroup" :key="`drag_li1_${index}`">
<Card >{{itemLeft }}</Card>
</div>
</Draggable>
</div>
</TabPane>
</Tabs>
<div class="footer">
<!-- <Button @click="btnSave">保存</Button>
<Button @click="btnCancle">取消</Button> -->
</div>
</Drawer>
</template>
<script>
import Draggable from 'vuedraggable'
export default {
name:'columnSet',
components:{Draggable},
data(){
return {
//show:false,
currTab:'all',
allGroup:[],//左右的列名
checkedGroup:[],//显示的列名
checkShowColumn:[],//选中的列
options: { group: 'drag_list' }
}
},
props:{
isShow:Boolean,
tcolumn:Array,
newColumn:Array
},
computed:{
show:{
get(){return this.isShow;},
set(newValue){}
},
},
methods:{
close(){
this.$emit('close');
},
clickTab(){
},
initData(){
this.allGroup=[];
this.tcolumn.forEach(element => {
if(element.title){
this.allGroup.push(element.title);
}
});
this.checkedGroup=[];
this.newColumn.forEach(element => {
if(element.title){
this.checkedGroup.push(element.title);
}
});
},
btnSave(){
this.checkShowColumn=[this.tcolumn[0]];
this.checkedGroup.forEach(name=>{
this.tcolumn.forEach(a=>{
if(a.title==name){
this.checkShowColumn.push(a);
}
});
});
this.$emit('updateCol',this.checkShowColumn);
this.close()
},
btnCancle(){
this.initData();
this.close();
},
//拖拽效果:
handleListChange (event, type) {
},
handleEnd (event, type) {
let length=this.checkedGroup.length;
let oldIndex= event.oldIndex;
let newIndex= event.newIndex;
if(oldIndex==newIndex) return;
let moveVal=this.checkedGroup[oldIndex];
//首先删除该元素
this.checkedGroup.splice(oldIndex,1);
if(newIndex==0){
//移到第一位
this.checkedGroup=[moveVal,...this.checkedGroup];
}else if(newIndex==length-1){
//移到最后一位
this.checkedGroup=[moveVal,...this.checkedGroup.reverse()].reverse();
}else{
//中部移到中部(包括前后)
let front=this.checkedGroup.slice(0,newIndex);
front.push(moveVal);
let end=this.checkedGroup.slice(newIndex);
this.checkedGroup=front.concat(end);
}
},
},
mounted(){
this.initData();
},
watch:{
checkedGroup(newArr,oldArr){
this.checkShowColumn=[this.tcolumn[0]];
this.checkedGroup.forEach(name=>{
this.tcolumn.forEach(a=>{
if(a.title==name){
this.checkShowColumn.push(a);
}
});
});
this.$emit('updateCol',this.checkShowColumn);
}
}
}
</script>
<style>
.checkgroup ol{
display: block;
}
.footer{
position:absolute;
bottom:10px;
height:60px;
}
</style>
<template>
<div>
<!-- 搜索 -->
<MutiSearch :orderSearchForm="orderSearchForm" @easySearch="easySearch" @complexSearch="complexSearch">
<!-- slot内容 -->
<Row>
<Col span="12">
<FormItem label="订单类型" style="width:100%">
<Select v-model="orderSearchForm.orderCat" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in orderCatList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
<Col span="12">
<FormItem label="型号外部代码" style="width:100%">
<Select v-model="orderSearchForm.outerCode" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in outerCodeList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
</Row>
<Row>
<Col span="12">
<FormItem label="任务号" style="width:100%">
<Select v-model="orderSearchForm.missionCode" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in missionCodeList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
<Col span="12">
<FormItem label="阶段" style="width:100%">
<Select v-model="orderSearchForm.stage" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in stageList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
</Row>
<Row>
<Col span="12">
<FormItem label="材料" style="width:100%">
<Select v-model="orderSearchForm.materail" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in materailList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
<Col span="12">
<FormItem label="工艺方法" style="width:100%">
<Select v-model="orderSearchForm.routingAccess" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in routingAccessList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
</Row>
<Row>
<Col span="12">
<FormItem label="图号" style="width:100%">
<Select v-model="orderSearchForm.drawNumber" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in drawNumberList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
<Col span="12">
<FormItem label="文档名称" style="width:100%">
<Select v-model="orderSearchForm.docName" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in docNameList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
</Row>
<Row>
<Col span="12">
<FormItem label="甲方客户" style="width:100%">
<Select v-model="orderSearchForm.ownerGust" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in ownerGustList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
<Col span="12">
<FormItem label="厂内主体部门" style="width:100%">
<Select v-model="orderSearchForm.mainDept" style="width:80%">
<Option value="" class="option-text">请选择</Option>
<Option v-for="item in mainDeptList" :value="item" :key="item">{{ item }}</Option>
</Select>
</FormItem>
</Col>
</Row>
</MutiSearch>
<!-- tabs -->
<SearchLogTabs :tcolumn="tcolumn" :newColumn="newColumn" @updateCol="updateColumn" @complexSearch="complexSearch" style="height:32px"></SearchLogTabs>
<!-- 主表格 -->
<MainTable :turl="turl" :tcolumn="newColumn" ref="table"></MainTable>
<!-- 分页 -->
<Page :total="140" show-elevator show-sizer />
</div>
</template>
<script>
import MainTable from '@/components/complexTable/mainTable/mainTable'
import SearchLogTabs from '@/components/complexTable/searchLogTabs/searchLogTabs'
import MutiSearch from '@/components/complexTable/mutiSearch/mutiSearch'
export default {
name:'complexTable',
components:{MainTable,SearchLogTabs,MutiSearch},
data(){
return {
newColumn:[],
orderSearchForm:{
orderCat:'',//订单类型
outerCode:'',//型号外部代码
missionCode:'',//任务号
stage:'',//阶段
materail:'',//材料
routingAccess:'',//工艺方法
drawNumber:'',//图号
docName:'',//文档名称
ownerGust:'',//甲方客户
mainDept:'',//厂内主体部门
},
//以下为手写死数据集:
orderCatList:['五二九纵','五二九横','五二九预'],//订单类型下拉
outerCodeList:['AB-6X','FA','MABC-1'],//型号外部代码下拉
missionCodeList:['2019-1','2019-2','2019-3'],//任务号下拉
stageList:['M','A','X'],//阶段下拉
materailList:['AlSi10Mg','TC4','PEEK'],//材料下拉
routingAccessList:['SLM','LMD','PDM'],//工艺方法下拉
drawNumberList:['JZ-1/31-01','JZ-1/31-02','JZ-1/31-03'],//图号下拉
docNameList:['w1','w2','w3'],//文档名称下拉
ownerGustList:['ZTM','KTB','WYB'],//甲方客户下拉
mainDeptList:['WRJ-JJ','WRJ-BJ','WRJ-CJ'],//厂内主体部门下拉
}
},
props:{
turl:String,
tcolumn:Array
},
methods:{
updateColumn(checkShowColumn){
this.newColumn=checkShowColumn;
},
easySearch(content){
this.$refs.table.easySearch(content);
},
complexSearch(obj){
this.$refs.table.complexSearch(obj);
}
},
created(){
this.newColumn=this.tcolumn;
}
}
</script>
<template>
<Table border highlight-row ref="table" :columns="tcolumn" :data="results">
</Table>
</template>
<script>
export default {
name:'mainTable',
data(){
return {
showColumn:[],
//模拟数据:
datas:[
{orderCat:'五二九纵',dateTime:'2018-07-08',outerCode:'AB-6X',missionCode:'2019-1',stage:'M',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'已交付',remark:''},
{orderCat:'五二九纵',dateTime:'2018-07-08',outerCode:'AB-6X',missionCode:'2019-1',stage:'M',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'已交付',remark:''},
{orderCat:'五二九纵',dateTime:'2018-07-08',outerCode:'FA',missionCode:'2019-1',stage:'M',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'后处理',remark:''},
{orderCat:'五二九纵',dateTime:'2018-07-08',outerCode:'FA',missionCode:'2019-2',stage:'A',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'成型',remark:''},
{orderCat:'五二九横',dateTime:'2018-07-08',outerCode:'AB-6X',missionCode:'2019-1',stage:'M',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'前处理',remark:''},
{orderCat:'五二九横',dateTime:'2018-07-08',outerCode:'AB-6X',missionCode:'2019-1',stage:'M',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'前处理',remark:''},
{orderCat:'五二九横',dateTime:'2018-07-08',outerCode:'FA',missionCode:'2019-2',stage:'A',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'成型',remark:''},
{orderCat:'五二九横',dateTime:'2018-07-08',outerCode:'FA',missionCode:'2019-2',stage:'M',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'已交付',remark:''},
{orderCat:'五二九预',dateTime:'2018-07-08',outerCode:'AB-6X',missionCode:'2019-1',stage:'M',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'成型',remark:''},
{orderCat:'五二九预',dateTime:'2018-07-08',outerCode:'FA',missionCode:'2019-2',stage:'A',drawNumber:'JZJ-1/310-10',orderName:'动量轮斜装支架1'
,materail:'AlSi10Mg',routingAccess:'SLM',quantity:'1',ownerGust:'ZTB',ownerDesigner:'张啸雨',mainDept:'WEJ-JJ',mainRouting:'高晴伦'
,dispatch:'李梁',modelScreenShot:'',singleWeight:'3.15',packageSize:'1×2×3',orderStatus:'成型',remark:''},
],
results:[]
}
},
props:{
turl:String,
tcolumn:Array
},
created(){
this.results=this.datas;
},
mounted(){
this.showColumn=this.tcolumn;
},
methods:{
easySearch(content){
//console.log(content);
this.results=[];
this.datas.forEach(element => {
if(element.outerCode.indexOf(content)>-1||element.missionCode.indexOf(content)>-1
||element.drawNumber.indexOf(content)>-1||element.orderName.indexOf(content)>-1){
this.results.push(element);
}
});
},
complexSearch(obj){
this.results=[];
this.datas.forEach(element => {
if(obj.orderCat){
if(element.orderCat!=obj.orderCat){
return;
}
}
if(obj.outerCode){
if(element.outerCode!=obj.outerCode){
return;
}
}
if(obj.missionCode){
if(element.missionCode!=obj.missionCode){
return;
}
}
if(obj.stage){
if(element.stage!=obj.stage){
return;
}
}
if(obj.materail){
if(element.materail!=obj.materail){
return;
}
}
if(obj.routingAccess){
if(element.routingAccess!=obj.routingAccess){
return;
}
}
if(obj.drawNumber){
if(element.drawNumber!=obj.drawNumber){
return;
}
}
if(obj.docName){
if(element.docName!=obj.docName){
return;
}
}
if(obj.ownerGust){
if(element.ownerGust!=obj.ownerGust){
return;
}
}
if(obj.mainDept){
if(element.mainDept!=obj.mainDept){
return;
}
}
this.results.push(element);
});
}
}
}
</script>
<template>
<div>
<Input v-model="value" prefix="ios-search-outline" placeholder="关键字" style="width: 300px" />
<Button @click="easySearch">搜索</Button>
<a href="javascript:void(0)" @click="open">高级搜索</a>
<Modal v-model="modalShow">
<Form :model="orderSearchForm" ref="orderSearchForm" :label-width="88" inline>
<slot ></slot>
</Form>
<div slot="footer" >
<Button @click="complexSearch" style="margin-left:10px;">搜索</Button>
<Button @click="close" style="margin-left:20px;">取消</Button>
<Checkbox v-model="saveLog" label="保存此次搜索" style="margin-left:20px;">保存此次搜索</Checkbox>
</div>
</Modal>
</div>
</template>
<script>
export default {
name:'mutiSearch',
data(){
return {
value:'',
modalShow:false,
saveLog:false,
}
},
props:["orderSearchForm"],
methods:{
open(){
this.modalShow=true;
},
close(){
this.modalShow=false;
},
easySearch(){
this.$emit('easySearch',this.value);
},
complexSearch(){
if(this.saveLog){
//保存历史
let newName=new Date().toLocaleDateString()+"--"+new Date().getTime();
let newObj={name:newName,...this.orderSearchForm};
let oldStr=localStorage.getItem('searchLog');
let searchLogObj=[];
if(oldStr){
searchLogObj=JSON.parse(oldStr);
searchLogObj.push(newObj);
}else{
searchLogObj=[newObj];
}
localStorage.setItem('searchLog',JSON.stringify(searchLogObj));
}
this.$emit('complexSearch',this.orderSearchForm);
this.close();
}
}
}
</script>
<template>
<div>
<Tabs type="card" closable :value="value" @on-click="clickTab">
<!-- 左侧标签列表 -->
<div>
<TabPane v-for="(log,index) in searchLog" :key="index" :label="log.name" :name="log.name"></TabPane>
</div>
<!-- 右侧列设置 -->
<div slot="extra">
<Button @click="drawerShow = true" style="display:relative;float:right;margin-right:20px;width:90px;color:#FFF;background-color:#249E91;">列设置</Button>
<Button @click="openModal(1)" style="display:relative;float:right;margin-right:20px;width:90px;color:#FFF;background-color:#249E91;">订单送审</Button>
<Button @click="openModal(0)" style="display:relative;float:right;margin-right:20px;width:90px;color:#FFF;background-color:#249E91;">创建</Button>
</div>
</Tabs>
<ColumnSet :isShow="drawerShow" :tcolumn="tcolumn" :newColumn="newColumn" @close="drawerShow = false" @updateCol="updateColumn"></ColumnSet>
<Modal v-model="modelShow" :title="title" width="660" :mask-closable="false" :scrollable="true" ok-text="确定" cancel-text="取消" @on-ok="okFunction">
<div style="width:600px;height:660px">
<CreateOrder :v-if="type==0" ref="createOrder"></CreateOrder>
</div>
</Modal>
</div>
</template>
<script>
import ColumnSet from '@/components/complexTable/columnSet/columnSet'
import CreateOrder from '@/components/orderOperator/createOrder'
export default {
name:'searchLogTabs',
components:{ColumnSet,CreateOrder},
props:{
tcolumn:Array,
newColumn:Array
},
data(){
return {
drawerShow:false,
modelShow:false,
type:0,
searchLog:[],
value:'',
title:'订单创建',
type:0,//弹出框类型
}
},
mounted(){
this.$emit('complexSearch',this.searchLog[0]);
},
created(){
let str=localStorage.getItem('searchLog');
if(str){
this.searchLog=JSON.parse(str);
this.value=this.searchLog[0].name;
}
},
methods:{
updateColumn(checkShowColumn){
this.$emit('updateCol',checkShowColumn);
},
clickTab(name){
let searchObj={};
this.searchLog.forEach(obj=>{
if(obj.name==name){
searchObj=obj;
return;
}
})
this.$emit('complexSearch',searchObj);
},
openModal(type){
this.modelShow=true;
this.type=type;
if(type==0){
this.title="订单创建";
}else if(type==1){
this.title="订单送审";
}
},
okFunction(){
if(this.type==0){
console.log(this.$refs.createOrder.orderSearchForm);
}
}
}
}
</script>
<template>
<Drawer title="" v-model="show" @on-close="close">
<!--抽屉内容 -->
<Tabs v-model="currTab" @on-click="clickTab" value="all">
<TabPane label="全部列" name="all">
<div>
<ul is='CheckboxGroup' v-model="checkedGroup" v-for="(item,index) in allGroup" :key="index" class="checkgroup">
<ol><Checkbox :label="item"></Checkbox></ol>
</ul>
</div>
</TabPane>
<TabPane label="可见列" name="sele">
<div>
<Draggable :options="options" :value="checkedGroup" @input="handleListChange($event, 'left')" @end="handleEnd($event, 'left')">
<div v-for="(itemLeft, index) in checkedGroup" :key="`drag_li1_${index}`">
<Card >{{itemLeft }}</Card>
</div>
</Draggable>
</div>
</TabPane>
</Tabs>
<div class="footer">
</div>
</Drawer>
</template>
<script>
import Draggable from 'vuedraggable'
export default {
name:'columnSet',
components:{Draggable},
data(){
return {
//show:false,
currTab:'all',
allGroup:[],//左右的列名
checkedGroup:[],//显示的列名
checkShowColumn:[],//选中的列
options: { group: 'drag_list' }
}
},
props:{
isShow:Boolean,
tcolumn:Array,
newColumn:Array
},
computed:{
show:{
get(){return this.isShow;},
set(newValue){}
},
},
methods:{
close(){
this.$emit('close');
},
clickTab(){
},
initData(){
this.allGroup=[];
this.tcolumn.forEach(element => {
if(element.title){
this.allGroup.push(element.title);
}
});
this.checkedGroup=[];
this.newColumn.forEach(element => {
if(element.title){
this.checkedGroup.push(element.title);
}
});
},
btnSave(){
this.checkShowColumn=[this.tcolumn[0]];
this.checkedGroup.forEach(name=>{
this.tcolumn.forEach(a=>{
if(a.title==name){
this.checkShowColumn.push(a);
}
});
});
this.$emit('updateCol',this.checkShowColumn);
this.close()
},
btnCancle(){
this.initData();
this.close();
},
//拖拽效果:
handleListChange (event, type) {
},
handleEnd (event, type) {
let length=this.checkedGroup.length;
let oldIndex= event.oldIndex;
let newIndex= event.newIndex;
if(oldIndex==newIndex) return;
let moveVal=this.checkedGroup[oldIndex];
//首先删除该元素
this.checkedGroup.splice(oldIndex,1);
if(newIndex==0){
//移到第一位
this.checkedGroup=[moveVal,...this.checkedGroup];
}else if(newIndex==length-1){
//移到最后一位
this.checkedGroup=[moveVal,...this.checkedGroup.reverse()].reverse();
}else{
//中部移到中部(包括前后)
let front=this.checkedGroup.slice(0,newIndex);
front.push(moveVal);
let end=this.checkedGroup.slice(newIndex);
this.checkedGroup=front.concat(end);
}
},
},
mounted(){
this.initData();
},
watch:{
checkedGroup(newArr,oldArr){
this.checkShowColumn=[this.tcolumn[0]];
this.checkedGroup.forEach(name=>{
this.tcolumn.forEach(a=>{
if(a.title==name){
this.checkShowColumn.push(a);
}
});
});
this.$emit('updateCol',this.checkShowColumn);
}
}
}
</script>
<style>
.checkgroup ol{
display: block;
}
.footer{
position:absolute;
bottom:10px;
height:60px;
}
</style>
This diff is collapsed.
<template>
<Table
:loading="loading"
border
highlight-row
ref="table"
:columns="tcolumn"
:data="results"
class="tableCommon"
:height="tableHeight"
@on-selection-change="selectInfo"
></Table>
</template>
<script>
export default {
name: 'mainTable',
data() {
return {
showColumn: [],
loading: false,
tableHeight: 0,
selectList: [],
datas: [],
results: [],
totalCount: 0
}
},
props: {
turl: String,
tcolumn: Array
},
created() {
//this.results=this.datas;
},
mounted() {
this.showColumn = this.tcolumn
},
methods: {
// 核心环境变量选择框
selectInfo(value) {
this.selectList = []
this.selectList = value
let statueArry = []
value.forEach((data) => {
var that = this
statueArry.push(data.status)
})
// this.unique(statueArry);//状态去重复
// this.$emit('getButtonStatu', JSON.stringify(statueArry))
},
unique(arryList) {
//去掉重复选取的数据
for (var i = 0; i < arryList.length; i++) {
for (var j = i + 1; j < arryList.length; ) {
if (arryList[i] == arryList[j]) {
arryList.splice(j, 1) //去除重复的对象;
} else {
j++
}
}
}
},
selectLists() {
return this.selectList
},
easySearch(content) {
//console.log(content);
this.loading = true
this.results = []
this.$http.order.orderList(content).then((res) => {
if (res.result) {
//刷新列表:
let resultsData=res.result.items
//让前面的选择框为不可选
// resultsData.forEach((ele)=>{
// if(ele.upId==0)
// {
// ele._disabled=true
// }
// })
this.results = resultsData
this.loading = false
this.totalCount = res.result.totalCount
this.$emit('getTotalCount', this.totalCount)
} else {
this.$Message.error('查询失败!')
this.loading = false
}
})
},
complexSearch(obj) {
this.results = []
this.datas.forEach((element) => {
if (obj.orderCat) {
if (element.orderCat != obj.orderCat) {
return
}
}
if (obj.outerCode) {
if (element.outerCode != obj.outerCode) {
return
}
}
if (obj.missionCode) {
if (element.missionCode != obj.missionCode) {
return
}
}
if (obj.stage) {
if (element.stage != obj.stage) {
return
}
}
if (obj.materail) {
if (element.materail != obj.materail) {
return
}
}
if (obj.routingAccess) {
if (element.routingAccess != obj.routingAccess) {
return
}
}
if (obj.drawNumber) {
if (element.drawNumber != obj.drawNumber) {
return
}
}
if (obj.docName) {
if (element.docName != obj.docName) {
return
}
}
if (obj.ownerGust) {
if (element.ownerGust != obj.ownerGust) {
return
}
}
if (obj.mainDept) {
if (element.mainDept != obj.mainDept) {
return
}
}
this.results.push(element)
})
},
returnTotalCount() {
return this.totalCount
},
test(value) {
},
returnHeight(val)
{
this.tableHeight=val
}
},
// watch: {
// tableHeight(val) {
// //alert(val)
// this.tableHeight = val- 200
// }
// }
}
</script>
<template>
<div>
<div style="display:inline-flex;">
<Input search enter-button placeholder="订单编号、产品编码..." @on-search="easySearch" v-model="value" />&nbsp;&nbsp;
<Button @click="open" type="success">高级搜索</Button>
<!-- <Input v-model="value" placeholder="关键字" style="width:300px;" :clearable='true'>
<Button @click="easySearch" icon="ios-search-outline" slot="append" style="width:40px;background-color:#249E91;color:#FFF;"></Button>
</Input> -->
</div>
<!-- 右侧按钮 -->
<slot name="button"></slot>
<!-- 弹出高级搜索框 -->
<Modal v-model="modalShow" title="高级搜索" :mask-closable="false" width="800">
<Form :model="orderSearchForm" ref="orderSearchForm" :label-width="100" inline>
<slot name="search"></slot>
</Form>
<div slot="footer" >
<Button @click="close" style="margin-left:20px;">取消</Button>
<!-- <Button @click="formReset" style="margin-left:20px;">重置</Button> -->
<Button @click="complexSearch" type="success" style="margin-left:10px;">查询</Button>
<!-- <Checkbox v-model="saveLog" label="保存此次搜索" style="margin-left:20px;">保存此次搜索</Checkbox> -->
</div>
</Modal>
</div>
</template>
<script>
export default {
name:'mutiSearch',
data(){
return {
value:'',
modalShow:false,
saveLog:false,
}
},
props:["orderSearchForm"],
methods:{
open(){
this.modalShow=true;
},
close(){
this.modalShow=false;
},
easySearch(){
this.$emit('easySearch',this.value);
},
complexSearch(){
this.$emit('easySearch',this.orderSearchForm);
this.close();
},
formReset(){
this.$emit('formReset');
}
}
}
</script>
<template>
<Modal title="选择部门" width="450" v-model="show1" :mask-closable="false" ok-text="确定" cancel-text="取消" @on-ok='ok' @on-cancel='cancel'>
<div style="padding-left:40px;height:400px;overflow:auto">
<Tree :data="data1" ref="tree"></Tree>
</div>
</Modal>
</template>
<script>
export default {
name:'organizType',
props:{
show:Boolean,
value:[Number,String],
text:String,
isAdd:{
type:Boolean,
default:false
}
},
watch:{
show(n,old){
this.show1=n;
}
},
data(){
return{
show1:false,
data1:[]
}
},
created(){
this.initData();
},
methods:{
initData(){
this.data1.splice(0);
if(this.isAdd){
this.$http.department.getAddTree(this.data1);
}else{
this.$http.department.getTree(this.data1);
}
},
ok(){
//选中项:
var tt=this.$refs.tree.getSelectedNodes();
//console.log(tt[0]);
if(tt.length>0){
this.$emit('update:value', tt[0].value);
this.$emit('update:text', tt[0].title);
}
this.show1=false;
this.$emit('update:show', false);
},
cancel(){
this.show1=false;
this.$emit('update:show', false);
}
}
}
</script>
\ No newline at end of file
<template>
<Modal title="选择组织类型" width="450" v-model="show1" :mask-closable="false" ok-text="确定" cancel-text="取消" @on-ok='ok' @on-cancel='cancel'>
<div style="padding-left:40px;height:400px;overflow:auto">
<Tree :data="data1" ref="tree"></Tree>
</div>
</Modal>
</template>
<script>
export default {
name:'organizType',
props:{
show:Boolean,
value:Number,
text:String,
isAdd:{
type:Boolean,
default:false
}
},
watch:{
show(n,old){
this.show1=n;
}
},
data(){
return{
show1:false,
data1:[],
}
},
created(){
this.initData();
},
methods:{
initData(){
this.data1.splice(0);
if(this.isAdd){
this.$http.organization.getAddTree(this.data1);
}else{
this.$http.organization.getTree(this.data1);
}
},
ok(){
//选中项:
var tt=this.$refs.tree.getSelectedNodes();
//console.log(tt[0]);
if(tt.length>0){
this.$emit('update:value', tt[0].value);
this.$emit('update:text', tt[0].title);
}
this.show1=false;
this.$emit('update:show', false);
},
cancel(){
this.show1=false;
this.$emit('update:show', false);
}
}
}
</script>
\ No newline at end of file
<template>
<Modal
title="选择库房库位"
width="450"
v-model="show1"
:mask-closable="false"
ok-text="确定"
cancel-text="取消"
@on-ok="ok"
@on-cancel="cancel"
>
<div style="padding-left:40px;height:400px;overflow:auto">
<Tree
:data="data1"
ref="tree"
@on-select-change="change"
:render="renderContent"
></Tree>
</div>
</Modal>
</template>
<script>
export default {
name: 'storeHouse',
props: {
show: Boolean,
value: Number,
text: String,
type: {
type: Number,
default: 0
}
},
watch: {
show(n, old) {
this.show1 = n
}
},
data() {
return {
show1: false,
data1: []
}
},
created() {
this.initData()
},
methods: {
initData() {
var sumData = []
this.$http.storeHouse.getpaged({ materialType: this.type }).then((res) => {
if (res.result) {
this.data1 = res.result
} else {
this.$Message.error('加载库房库位树失败!')
}
})
},
ok() {
//选中项:
// var selectNodes = this.$refs.tree.getSelectedNodes()
// if (selectNodes.length > 0) {
// this.$emit('update:value', selectNodes[0].id)
// this.$emit('update:text', selectNodes[0].title)
// }
//this.initData()
var selectNodes = this.$refs.tree.getSelectedNodes()
if (selectNodes.length > 0) {
selectNodes[0].selected = false
}
//this.$refs.tree.getSelectedNodes()[0].selected = false
this.show1 = false
this.$emit('update:show', false)
},
cancel() {
if (this.$refs.tree.getSelectedNodes().length > 0) {
this.$refs.tree.getSelectedNodes()[0].selected = false
}
this.$emit('update:value', null)
this.$emit('update:text', '')
this.$emit('update:materialType', '')
this.show1 = false
this.$emit('update:show', false)
},
renderContent(h, { root, node, data }) {
return h(
'span',
{
style: {
color: data.isClick ? '#000' : '#bbb', //根据选中状态设置样式
cursor: data.isClick ? 'pointer' : '',
background: node.node.selected&&data.isClick ? '#AAD8D4' : '#ffffff',
paddingLeft: '10px',
paddingRight: '10px',
paddingTop: '3px',
paddingBottom: '3px'
},
on: {
// click: () => {
// if (!node.node.selected) {
// this.$refs.tree.handleSelect(node.nodeKey) //手动选择树节点
// }
// }
}
},
data.title
)
},
change(value) {
if (value.length > 0) {
if (value[0].isClick) {
this.$emit('update:value', value[0].id)
this.$emit('update:text', value[0].title)
this.$emit('update:materialType', value[0].material_type)
} else {
this.$emit('update:value', null)
this.$emit('update:text', '')
this.$emit('update:materialType', '')
this.$Message.error('当前操作用户无此库位的权限')
}
}
}
}
}
</script>
<template>
<div>
<h3 class="title">
库房库位
<ButtonGroup class="fr" size="small">
<Button>
<Icon
:type="expand ? 'md-arrow-dropright' : 'md-arrow-dropdown'"
size="16"
@click="toggle"
title="展开/合并"
/>
</Button>
<Button>
<Icon type="md-refresh" size="16" @click="loadTree" title="刷新" />
</Button>
</ButtonGroup>
</h3>
<div class="tree">
<Tree
ref="tree"
:data="tree"
@on-select-change="change"
:render="renderContent"
/>
</div>
</div>
</template>
<script>
export default {
name: 'storeHouseLeft',
data() {
return {
expand: false,
ids: [],
tree: []
}
},
props: {
type: {
type: Number,
default: 0
}
},
mounted() {},
created() {
this.loadTree()
},
methods: {
toggle() {
this.expand = !this.expand
this.loadTree()
},
async loadTree() {
this.$http.storeHouse
.getpaged({ materialType: this.type })
.then((res) => {
if (res.result) {
let items = res.result
this.tree = this.getTrees(items)
this.change1(this.tree)
} else {
this.$Message.error('加载库房库位树失败!')
}
})
},
//重构左侧树
getTrees(trees) {
var expand = this.expand
trees.forEach((data, index) => {
var that = this
data.expand = expand
if (data.children.length > 0) {
this.getTrees(data.children)
}
})
return trees
},
renderContent(h, { root, node, data }) {
return h(
'span',
{
style: {
color: data.isClick ? '#000' : '#bbb', //根据选中状态设置样式
cursor: data.isClick ? 'pointer' : '',
background: node.node.selected&&data.isClick ? '#AAD8D4' : '#ffffff',
paddingLeft: '10px',
paddingRight: '10px',
paddingTop: '3px',
paddingBottom: '3px'
},
on: {
// click: () => {
// if (!node.node.selected) {
// this.$refs.tree.handleSelect(node.nodeKey) //手动选择树节点
// }
// }
}
},
data.title
)
},
//得到此树节点下所有是产品的Id
getAllIds(trees) {
trees.forEach((data, index) => {
var that = this
if (data.isClick) {
this.ids.push(data.id)
}
if (data.children.length > 0) {
this.getAllIds(data.children)
}
})
},
change(value) {
if (value.length > 0) {
if (value[0].isClick) {
this.ids = []
this.getAllIds(value)
if (this.ids.length > 0) {
this.$emit('storeIds', this.ids)
//this.easySearch.storeId.value = this.ids
} else {
this.$emit('storeIds', [-1])
}
} else {
this.$Message.error('当前操作用户无此库位的权限')
this.$emit('storeIds', [-1])
}
}
},
change1(value) {
if (value.length > 0) {
this.ids = []
this.getAllIds(value)
if (this.ids.length > 0) {
this.$emit('storeIds', this.ids)
} else {
this.$emit('storeIds', [-1])
}
}
}
}
}
</script>
This diff is collapsed.
<template>
<div style="width:440px;height:660px;border:1px solid #000;padding:0px;">
<div style="display:inline-flex;width:200px;height:654px;border:1px solid red;margin:0px;">111</div>
<div style="display:inline-flex;width:233px;height:654px;border:1px solid green;margin:0px;">222</div>
</div>
</template>
<script>
export default {
}
</script>
\ No newline at end of file
<template>
<div class="detail" >
<Row>
<Filed :span="6" :name="l('productName')">{{info.orderInfo.productName}}</Filed>
<Filed :span="6" :name="l('mesCode')">{{info.orderInfo.mesCode}}</Filed>
<Filed :span="6" :name="l('drawnNumber')">{{info.orderInfo.drawnNumber}}</Filed>
<Filed :span="6" :name="l('stage')"><state code="plan.order.stage" :value="info.orderInfo.stage+''" type="text"></state></Filed>
<Filed :span="6" :name="l('taskType')"><state code="plan.order.taskType" :value="info.orderInfo.taskType+''" type="text"></state></Filed>
<Filed :span="6" :name="l('quantity')">{{info.orderInfo.quantity}}</Filed>
<Filed :span="6" :name="l('materialId')"><state code="plan.order.material" :value="info.orderInfo.materialId+''" type="text"></state></Filed>
<Filed :span="6" :name="l('routing_Method')"><state code="plan.order.routingMethod" :value="info.orderInfo.routing_Method+''" type="text"></state></Filed>
<Filed :span="6" :name="l('outer_Envelope_Size')">{{info.orderInfo.outer_Envelope_Size}}</Filed>
<Filed :span="6" :name="l('demandStartDate')">{{info.orderInfo.demandStartDate}}</Filed>
<Filed :span="6" :name="l('demandFinishDate')">{{info.orderInfo.demandFinishDate}}</Filed>
<Filed :span="6" :name="l('printSupply')"><state code="plan.order.printSupply" :value="info.orderInfo.printSupply+''" type="text"></state></Filed>
<Filed :span="6" :name="l('guestName')"><state code="plan.order.guestName" :value="info.orderInfo.guestName+''" type="text"></state></Filed>
<Filed :span="6" :name="l('functionaryOffice')">>{{info.orderInfo.functionaryOffice}}</Filed>
<Filed :span="6" :name="l('taskRequire')">{{info.orderInfo.taskRequire}}</Filed>
<Filed :span="6" :name="l('taskInputDate')">{{info.orderInfo.taskInputDate}}</Filed>
<Filed :span="6" :name="l('mainDepartmentId')"><state code="plan.order.mainDepartment" :value="info.orderInfo.mainDepartmentId+''" type="text"></state></Filed>
<Filed :span="6" :name="l('technologyDocmentCode')">{{info.orderInfo.technologyDocmentCode}}</Filed>
<Filed :span="6" :name="l('putintDocmentCode')">{{info.orderInfo.putintDocmentCode}}</Filed>
<Filed :span="6" :name="l('outerDrawnNumber')">{{info.orderInfo.outerDrawnNumber}}</Filed>
<Filed :span="6" :name="l('modelVersion')">{{info.orderInfo.modelVersion}}</Filed>
<Filed :span="6" :name="l('designer')">{{info.orderInfo.designer}}</Filed>
<Filed :span="6" :name="l('taskCode')">{{info.orderInfo.taskCode}}</Filed>
<Filed :span="6" :name="l('mainRoutingPeople')">{{info.orderInfo.mainRoutingPeople}}</Filed>
<Filed :span="6" :name="l('officeFunctionary')">{{info.orderInfo.officeFunctionary}}</Filed>
<Filed :span="24" :name="l('remark')">{{info.orderInfo.remark}}</Filed>
</Row>
</div>
</template>
<script>
export default {
name: 'orderInfos',
props: ['info'],
async fetch({ store, params }) {
await store.dispatch('loadDictionary') // 加载数据字典
},
data(){
return{
}
},
methods: {
arry2Name(arryList, values) {
//预警类别转换
var codes = arryList
var name = ''
for (let i in codes) {
if (values == codes[i].value) {
name = codes[i].name
}
}
return name
},
l(key) {
key = 'orderInfo' + '.' + key
return this.$t(key)
}
}
}
</script>
<style lang="less">
.detail {
display: table;
border-collapse: collapse;
.ivu-row {
display: table-row;
.filed-col {
display: table-cell;
border: 1px solid #ddd;
margin: 0 0 -1px -1px;
line-height: 30px;
box-sizing:border-box;
.label {
background: #E8EAF1;
display: inline-block;
width: 120px;
text-align: right;
padding: 0 5px;
}
}
}
}
</style>
\ No newline at end of file
<template>
<div style="width:80%;margin:0 auto" :style="{height:divHeight}">
<OrderInfos v-if="info.status" :info="info"></OrderInfos>
<Table
:loading="loading"
border
:columns="columns1"
:data="dataList"
class="tableCommon"
v-if="osrMoreList"
></Table>
<div style="width100%;margin:40px auto">
<Form
:model="orderForm"
:label-width="110"
class="margin-top-20 margin-bottom-50"
:rules="ruleValidate"
ref="formValidate"
>
<Row>
<Col span="8">
<FormItem label="主工艺人员" style="width:100%" prop="DistributeMainRouting">
<UserSelect ref="userSelected" v-model="orderForm.DistributeMainRouting" style="width:240px"/>
</FormItem>
</Col>
<Col span="8">
<FormItem label="生产准备" style="width:100%" prop="ProductingPreparationPeople">
<WorkShopSelect ref="userSelected" v-model="orderForm.ProductingPreparationPeople" style="width:240px"/>
</FormItem>
</Col>
<Col span="8">
<FormItem label="订单报价人员" style="width:100%" prop="QuotationPeople">
<UserSelect ref="userSelected" v-model="orderForm.QuotationPeople" style="width:240px"/>
</FormItem>
</Col>
<Col span="8">
<FormItem label="完成时间" style="width:100%" prop="MainRoutingFinishDate">
<DatePicker
v-model="orderForm.MainRoutingFinishDate"
type="date"
placeholder="请选择日期"
style="width:240px"
@on-change="getTimeMainRFD"
></DatePicker>
</FormItem>
</Col>
<Col span="8">
<FormItem label="完成时间" style="width:100%" prop="ProductingPreparationFinishDate">
<DatePicker
v-model="orderForm.ProductingPreparationFinishDate"
type="date"
placeholder="请选择日期"
style="width:240px"
@on-change="getTimeProductPFD"
></DatePicker>
</FormItem>
</Col>
<Col span="8">
<FormItem label="完成时间" style="width:100%" prop="QuotationFinishDate">
<DatePicker
v-model="orderForm.QuotationFinishDate"
type="date"
placeholder="请选择日期"
style="width:240px"
@on-change="getTimeQuotationFD"
></DatePicker>
</FormItem>
</Col>
<Col span="6" v-if="false">
<FormItem label="专业工艺人员" style="width:100%" prop="MajorRoutingPeople">
<UserSelect ref="userSelected" v-model="orderForm.MajorRoutingPeople" />
</FormItem>
</Col>
<Col span="6" v-if="false">
<FormItem label="完成时间" style="width:100%" prop="MajorRoutingFinishDate">
<DatePicker
v-model="orderForm.MajorRoutingFinishDate"
type="date"
placeholder="请选择日期"
style="width:240px"
@on-change="getTimeMajorRFD"
></DatePicker>
</FormItem>
</Col>
</Row>
</Form>
</div>
</div>
</template>
<script>
import OrderInfos from '@/components/orderOperator/orderInfos'
var myDate = new Date()
export default {
name: 'orderSend',
components: {
OrderInfos
},
data() {
return {
divHeight: '260px',
osrOneList: false, //一条数据显示详细
osrMoreList: false, //多条数据只显示列表
info: {
status: true,
orderInfo: []
},
orderForm: {
DistributeMainRouting: null, //主工艺人员
MainRoutingFinishDate: '', //主工艺人员完成时间
MajorRoutingPeople: null, //专业工艺人员
MajorRoutingFinishDate: '', //专业工艺人员完成时间
CheckUpPeople: 1, //校对人员 暂时不用
CheckUpFinishDate: '2019-12-19', //校对人员完成时间
ProductingPreparationPeople: null, //生产准备人员
ProductingPreparationFinishDate: '', //生产准备完成时间
QuotationPeople: null, //订单报价人员
QuotationFinishDate: '' //订单报价完成时间
},
columns1: [
{
title: '订单编码',
key: 'mesCode',
width: 180,
tooltip: true
},
{
title: '任务类型',
key: 'taskType',
align: 'center',
width: 100,
tooltip: true
},
{
title: '产品名称',
key: 'productName',
tooltip: true
},
{
title: '阶段',
key: 'stage',
width: 80
},
{
title: '材料',
key: 'materialId',
width: 100,
tooltip: true
},
{
title: '数量',
key: 'quantity',
align: 'right',
width: 70
}
],
dataList: [],
dataListRetrun: [], //确定后返回数据
ruleValidate: {
DistributeMainRouting: [
{
required: true,
message: '请选择人员',
trigger: 'change',
type: 'number'
}
],
MainRoutingFinishDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
// MajorRoutingPeople: [
// {
// required: true,
// message: '请选择人员',
// trigger: 'change',
// type: 'number',
// }
// ],
// MajorRoutingFinishDate: [
// {
// required: true,
// message: '请选择时间',
// trigger: 'change'
// }
// ],
// CheckUpPeople: [
// {
// required: true,
// message: '请选择人员',
// trigger: 'change',
// }
// ],
// CheckUpFinishDate: [
// {
// required: true,
// message: '请选择时间',
// trigger: 'change'
// }
// ],
ProductingPreparationPeople: [
{
required: true,
message: '请选择人员',
trigger: 'change',
type: 'number'
}
],
ProductingPreparationFinishDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
],
QuotationPeople: [
{
required: true,
message: '请选择人员',
trigger: 'change',
type: 'number'
}
],
QuotationFinishDate: [
{
required: true,
message: '请选择时间',
trigger: 'change'
}
]
}
}
},
methods: {
intData(data) {
//打开modal层时给订单list赋值
this.orderInfo = []
this.dataList = []
this.dataList = data
this.osrOneList = false
this.osrMoreList = false
if (data.length == 1) {
this.info.status = true
this.info.orderInfo = data[0]
} else if (data.length > 1) {
this.osrMoreList = true
this.info.status = false
this.info.orderInfo = []
}
},
returnDataList() {
this.dataListRetrun = []
this.dataList.forEach((item) => {
let objStr = {}
objStr.id = item.id
objStr.mesCode = item.mesCode
objStr.DistributeMainRouting = this.orderForm.DistributeMainRouting
objStr.MainRoutingFinishDate = this.orderForm.MainRoutingFinishDate
objStr.MajorRoutingPeople = this.orderForm.MajorRoutingPeople
objStr.MajorRoutingFinishDate = this.orderForm.MajorRoutingFinishDate
objStr.CheckUpPeople = this.orderForm.CheckUpPeople
objStr.CheckUpFinishDate = this.orderForm.CheckUpFinishDate
objStr.ProductingPreparationPeople = this.orderForm.ProductingPreparationPeople
objStr.ProductingPreparationFinishDate = this.orderForm.ProductingPreparationFinishDate
objStr.QuotationPeople = this.orderForm.QuotationPeople
objStr.QuotationFinishDate = this.orderForm.QuotationFinishDate
this.dataListRetrun.push(objStr)
})
//返回审批数据
return this.dataListRetrun
},
getTimeMainRFD(value) {
this.orderForm.MainRoutingFinishDate = value
},
getTimeMajorRFD(value) {
this.orderForm.MajorRoutingFinishDate = value
},
getTimeCheckFD(value) {
this.orderForm.CheckUpFinishDate = value
},
getTimeProductPFD(value) {
this.orderForm.ProductingPreparationFinishDate = value
},
getTimeQuotationFD(value) {
this.orderForm.QuotationFinishDate = value
}
},
created() {
var theight = window.innerHeight - 400 + 'px'
this.divHeight = theight
},
mounted() {
window.onresize = () => {
///浏览器窗口大小变化
return (() => {
window.screenHeight = window.innerHeight
this.divHeight = window.screenHeight - 400 + 'px'
})()
}
}
}
</script>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
<template>
<div style="margin:50px auto;">
<h3>{{ processTitle }}</h3>
<Divider />
<Timeline>
<div>
<TimelineItem v-for="(item, index) in dataImmut" :key="index">
<Badge :count="index + 1" slot="dot" :type="index==cur?'primary':'normal'"></Badge>
<p class="time">{{ item.name }}
&nbsp;(<state code="workflow.form.audit.type" :value="item.operation" />)
<Icon v-if="item.isFixed" type="ios-lock"/>
</p>
<p class="content" v-if="index==0">
发起人: <User :value="currentUserId" />
</p>
<p class="content" v-else>
<span>审批人:</span>
<CheckboxGroup v-model="item.userIds" @on-change="userIds">
<Checkbox v-for="(item1, index1) in item.defaultUsers.immutable"
:key="index1" :label="item1" :disabled="item.isFixed">
<User
:value="item1"
style="margin-right:5px;"
/>
</Checkbox>
</CheckboxGroup>
</p>
<!-- <p class="content" v-else>
<User v-for="(item1, index1) in item.defaultUsers.immutable"
:key="index1"
:value="item1"
style="margin-right:5px;"
/>
</p> -->
</TimelineItem>
</div>
</Timeline>
</div>
</template>
<script>
export default {
name: 'process',
components: {},
data() {
return {
currentUserId: JSON.parse(sessionStorage.getItem('userInfo')).userId,
processTitle: '审批流程',
dataImmut: [],
dataMut: [],
cur:0,
immutData: [],
ids:[],
schemaId: ''
}
},
props: {
schemaIdVal: {
type: String,
default: ''
}
},
created() {
this.load(this.schemaIdVal)
},
methods: {
load(v) {
this.dataImmut = []
this.dataMut = []
let url = `${workflowUrl}/schema/intend`
this.$api.get(url, { schemaId: v }).then((r) => {
if (r.success) {
// console.warn("VVVV",r)
r.result.nodes.map((u,i)=>{
if(i>0){
let ids=u.defaultUsers.immutable.concat(u.defaultUsers.mutable)
u.defaultUsers.immutable=ids;
u.userIds=this.$u.clone(ids);
}else{
u.userIds=[this.currentUserId]
}
})
this.dataImmut = r.result.nodes
this.processTitle = r.result.name
// if (this.dataImmut.length >= 1) {
// this.immutData = this.dataImmut[1].defaultUsers.immutable
// }
this.userIds();
}
})
},
userIds(){
var ids=[];
this.dataImmut.map((u,i)=>{
ids.push({
id:u.id,
userIds:u.userIds
})
})
this.immutData=ids;
// console.warn(ids);
},
l(key) {
key = 'orderInfo' + '.' + key
return this.$t(key)
}
},
computed: {},
watch: {
schemaIdVal(v) {
if (v) {
this.load(v)
}
}
}
}
</script>
<style scoped></style>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -117,6 +117,7 @@ export default {
datas.path = datas.url;
let name = datas.url.replace(/\//g, "-");
datas.header = "home";
delete datas.target;
if (name.substr(0, 1) == "-") {
name = name.substr(1);
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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