YY 3 年之前
父節點
當前提交
380dec244b

+ 1 - 1
src/router/index.js

@@ -86,7 +86,7 @@ const web = [
         component: () => import('../views/menu/stock_order/index.vue'),
       },
       {
-        path: '/system/indepot',
+        path: '/menu/indepot',
         meta: { title: '入库管理' },
         component: () => import('../views/menu/indepot/index.vue'),
       },

+ 95 - 5
src/views/menu/indepot/index.vue

@@ -1,22 +1,107 @@
 <template>
   <div id="index">
     <el-row>
-      <el-col :span="24" class="main animate__animated animate__backInRight"> test </el-col>
+      <el-col :span="24" class="main animate__animated animate__backInRight">
+        <el-col class="one">
+          <data-table @query="search" :fields="fields" :opera="opera" :data="list" :total="total" @view="toView">
+            <template #selfbtn>
+              <el-button type="primary" size="mini" @click="toAdd()">添加入库</el-button>
+            </template>
+          </data-table>
+        </el-col>
+      </el-col>
     </el-row>
+    <e-dialog :dialog="dialog" @toClose="toClose">
+      <template slot="info">
+        <detail-1 v-if="dialog.type == '1'" :form="form" :stock_typeList="stock_typeList" :typeList="typeList" @onSubmit="onSubmit"></detail-1>
+        <info-1 v-if="dialog.type == '2'" :form="form"></info-1>
+      </template>
+    </e-dialog>
   </div>
 </template>
 
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { stock_type } = require('@common/src/layout/deploy/dict');
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: {
+    info1: () => import('./parts/info-1.vue'),
+    detail1: () => import('./parts/detail-1.vue'),
+  },
   data: function () {
-    return {};
+    return {
+      // 数据项
+      fields: [
+        { label: '登记人名称', prop: 'register_name', filter: true },
+        { label: '登记人电话', prop: 'register_phone', filter: true },
+        { label: '登记时间', prop: 'register_date' },
+      ],
+      total: 0,
+      opera: [{ label: '详情', method: 'view' }],
+      // 列表
+      list: [
+        {
+          register_name: '胡图图',
+          mech_name: '羊村',
+          register_phone: '123456789',
+          register_date: '2020-20-20',
+          reason: '1111',
+          order: [{ name: '喜羊羊', num: '111' }],
+        },
+        {
+          register_name: '胡英俊',
+          mech_name: '羊村',
+          register_phone: '123456789',
+          register_date: '2020-20-20',
+          status: '0',
+          reason: '2222',
+          status_name: '待收货',
+          order: [{ name: '美羊羊', num: '111' }],
+        },
+      ],
+      // 弹框
+      dialog: { title: '信息管理', show: false, type: '1' },
+      // 添加表单
+      form: { order: [], img_url: [] },
+      // 库存商品类型
+      stock_typeList: stock_type,
+      typeList: [
+        { label: '文件管理用品', value: '0' },
+        { label: '桌面办公用品', value: '1' },
+        { label: '书写工具', value: '2' },
+        { label: '纸制品', value: '3' },
+        { label: '金融用品', value: '4' },
+        { label: '办公机械', value: '5' },
+        { label: '办公生活用品', value: '6' },
+        { label: '其他', value: '7' },
+      ],
+    };
   },
   created() {},
-  methods: {},
+  methods: {
+    search({ skip = 0, limit = 10, ...info } = {}) {},
+    // 添加
+    toAdd() {
+      this.dialog = { title: '信息管理', show: true, type: '1', widths: '40%' };
+    },
+    // 提交保存
+    onSubmit(data) {
+      this.toClose();
+    },
+    // 详细信息
+    toView({ data }) {
+      this.$set(this, `form`, data);
+      this.dialog = { title: '详细信息', show: true, type: '2', widths: '40%' };
+    },
+    // 关闭弹框
+    toClose() {
+      this.form = { order: [], img_url: [] };
+      this.dialog = { title: '详细信息', show: false, type: '1' };
+      this.search();
+    },
+  },
   computed: {
     ...mapState(['user']),
   },
@@ -33,4 +118,9 @@ export default {
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+/deep/.el-dialog__body {
+  padding: 10px;
+  min-height: 570px;
+}
+</style>

+ 174 - 0
src/views/menu/indepot/parts/detail-1.vue

@@ -0,0 +1,174 @@
+<template>
+  <div id="detail-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <data-form :fields="fields" :data="form" :rules="rules" @save="toSave">
+          <template #custom="{ item }">
+            <template v-if="item.model === 'order'">
+              <el-col :span="24">
+                <el-button type="primary" size="mini" @click="toAddOne()">添加商品(库存有)</el-button>
+                <el-button type="primary" size="mini" @click="toAddTwo()">添加商品(库存无)</el-button>
+              </el-col>
+            </template>
+          </template>
+        </data-form>
+      </el-col>
+    </el-row>
+    <e-dialog :dialog="dialog" @toClose="toClose">
+      <template slot="info">
+        <el-col v-if="dialog.type == '1'">
+          <el-col :span="18" class="input">
+            <el-input placeholder="请输入库存商品全称" v-model="input" clearable> </el-input>
+          </el-col>
+          <el-col :span="4" class="text">
+            <el-button type="primary" size="small">搜索</el-button>
+          </el-col>
+          <el-col>
+            <data-form :fields="fieldsOne" :rules="rulesOne" @save="addSave"> </data-form>
+          </el-col>
+        </el-col>
+        <el-col v-if="dialog.type == '2'">
+          <data-form :fields="fieldsTwo" :data="twoform" :rules="rulesTwo" @save="addSave">
+            <template #options="{ item }">
+              <template v-if="item.model === 'stock_type_name'">
+                <el-option v-for="item in stock_typeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+              </template>
+              <template v-if="item.model === 'type_name'">
+                <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
+              </template>
+            </template>
+            <template #custom="{ item }">
+              <template v-if="item.model === 'img_url'">
+                <s-upload :limit="4" :data="twoform.img_url" type="img_url" url="/files/live/upload" @upload="uplSuc" @delete="uplDel"></s-upload>
+              </template>
+              <template v-else-if="item.model === 'code'">
+                <el-input v-model="twoform.code" placeholder="请输入资产编号" v-if="twoform.stock_type_name == '1'"></el-input>
+              </template>
+            </template>
+          </data-form>
+        </el-col>
+      </template>
+    </e-dialog>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+
+export default {
+  name: 'detail-1',
+  props: {
+    form: { type: Object },
+    stock_typeList: { type: Array },
+    typeList: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '登记人', model: 'register_name' },
+        { label: '登记人电话', model: 'register_phone' },
+        { label: '登记时间', model: 'register_date', type: 'date' },
+        { label: '入库原因', model: 'reason', type: 'textarea' },
+        { label: '商品列表', model: 'order', custom: true },
+      ],
+      rules: {
+        register_name: [{ required: true, message: '请输入登记人' }],
+        register_phone: [{ required: true, message: '请输入登记人电话' }],
+        register_date: [{ required: true, message: '请输入登记时间' }],
+        reason: [{ required: true, message: '请输入入库原因' }],
+      },
+      fieldsOne: [
+        { label: '商品名称', model: 'name' },
+        { label: '商品数量', model: 'num' },
+      ],
+      rulesOne: {
+        name: [{ required: true, message: '请输入商品名称' }],
+        num: [{ required: true, message: '请输入商品数量' }],
+      },
+      fieldsTwo: [
+        { label: '商品类别', model: 'stock_type_name', type: 'select' },
+        { label: '资产编号', model: 'code', custom: true },
+        { label: '商品类型', model: 'type_name', type: 'select' },
+        { label: '商品名称', model: 'name' },
+        { label: '商品数量', model: 'num' },
+        { label: '商品单价', model: 'money' },
+        { label: '商品简介', model: 'brief' },
+        { label: '商品图片', model: 'img_url', custom: true },
+      ],
+      rulesTwo: {
+        stock_type_name: [{ required: true, message: '请选择商品类别' }],
+        code: [{ required: false, message: '请输入资产编号' }],
+        type_name: [{ required: true, message: '请选择商品类型' }],
+        name: [{ required: true, message: '请输入商品名称' }],
+        num: [{ required: true, message: '请输入商品数量' }],
+        brief: [{ required: true, message: '请输入商品简介' }],
+        money: [{ required: true, message: '请输入商品单价' }],
+      },
+      // 弹框
+      dialog: { title: '信息管理', show: false, type: '1' },
+      input: '',
+      twoform: {},
+    };
+  },
+  created() {},
+  methods: {
+    search({ skip = 0, limit = 10, ...info } = {}) {},
+    toSave({ data }) {
+      this.$emit('onSubmit', data);
+    },
+    // 添加商品信息有
+    toAddOne() {
+      this.dialog = { title: '添加商品', show: true, type: '1', widths: '30%' };
+    },
+    // 添加商品信息无
+    toAddTwo() {
+      this.dialog = { title: '添加商品', show: true, type: '2', widths: '30%' };
+    },
+    addSave({ data }) {
+      console.log(data);
+      // this.toClose();
+    },
+    // 上传图片
+    uplSuc({ type, data }) {
+      let list = this.form[type];
+      this.$set(this.form, `${type}`, [...list, { name: data.name, url: data.uri }]);
+    },
+    // 删除图片
+    uplDel({ type, data, list }) {
+      this.$set(this.form, `${type}`, list);
+    },
+    // 关闭弹框
+    toClose() {
+      this.dialog = { show: false };
+      this.search();
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.input {
+  margin: 0 0 20px 45px;
+}
+.text {
+  margin: 4px 0 0 5px;
+}
+/deep/.el-dialog__body {
+  padding: 10px;
+  min-height: 570px;
+}
+</style>

+ 60 - 0
src/views/menu/indepot/parts/info-1.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="info-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <data-form :fields="fields" :data="form" :rules="{}" :needSave="false">
+          <template #custom="{ item }">
+            <template v-if="item.model === 'order'">
+              <data-table :fields="orderField" :opera="[]" :data="form.order" :usePage="false"> </data-table>
+            </template>
+          </template>
+        </data-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info-1',
+  props: {
+    form: { type: Object },
+    typeList: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '登记人名称', model: 'register_name', readonly: true },
+        { label: '登记人电话', model: 'register_phone', readonly: true },
+        { label: '登记时间', model: 'register_date', readonly: true },
+        { label: '入库原因', model: 'reason', readonly: true, type: 'textarea' },
+        { label: '商品列表', model: 'order', custom: true },
+      ],
+      // 商品列表
+      orderField: [
+        { label: '商品名称', prop: 'name' },
+        { label: '商品数量', prop: 'num' },
+      ],
+    };
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 76 - 4
src/views/menu/outdepot/index.vue

@@ -1,8 +1,22 @@
 <template>
   <div id="index">
     <el-row>
-      <el-col :span="24" class="main animate__animated animate__backInRight"> test </el-col>
+      <el-col :span="24" class="main animate__animated animate__backInRight">
+        <el-col class="one">
+          <data-table @query="search" :fields="fields" :opera="opera" :data="list" :total="total" @view="toView">
+            <template #selfbtn>
+              <el-button type="primary" size="mini" @click="toAdd()">添加出库</el-button>
+            </template>
+          </data-table>
+        </el-col>
+      </el-col>
     </el-row>
+    <e-dialog :dialog="dialog" @toClose="toClose">
+      <template slot="info">
+        <detail-1 v-if="dialog.type == '1'" :form="form" @onSubmit="onSubmit"></detail-1>
+        <info-1 v-if="dialog.type == '2'" :form="form"></info-1>
+      </template>
+    </e-dialog>
   </div>
 </template>
 
@@ -11,12 +25,70 @@ import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: {
+    info1: () => import('./parts/info-1.vue'),
+    detail1: () => import('./parts/detail-1.vue'),
+  },
   data: function () {
-    return {};
+    return {
+      // 数据项
+      fields: [
+        { label: '登记人名称', prop: 'register_name', filter: true },
+        { label: '登记人电话', prop: 'register_phone', filter: true },
+        { label: '登记时间', prop: 'register_date' },
+      ],
+      total: 0,
+      opera: [{ label: '详情', method: 'view' }],
+      // 列表
+      list: [
+        {
+          register_name: '胡图图',
+          mech_name: '羊村',
+          register_phone: '123456789',
+          register_date: '2020-20-20',
+          reason: '1111',
+          order: [{ name: '喜羊羊', num: '111' }],
+        },
+        {
+          register_name: '胡英俊',
+          mech_name: '羊村',
+          register_phone: '123456789',
+          register_date: '2020-20-20',
+          status: '0',
+          reason: '2222',
+          status_name: '待收货',
+          order: [{ name: '美羊羊', num: '111' }],
+        },
+      ],
+      // 弹框
+      dialog: { title: '信息管理', show: false, type: '1' },
+      // 添加表单
+      form: { order: [], img_url: [] },
+    };
   },
   created() {},
-  methods: {},
+  methods: {
+    search({ skip = 0, limit = 10, ...info } = {}) {},
+    // 添加
+    toAdd() {
+      this.dialog = { title: '信息管理', show: true, type: '1', widths: '40%' };
+    },
+    // 提交保存
+    onSubmit(data) {
+      this.toClose();
+    },
+    // 详细信息
+    toView({ data }) {
+      this.$set(this, `form`, data);
+      this.dialog = { title: '详细信息', show: true, type: '2', widths: '40%' };
+    },
+    // 关闭弹框
+    toClose() {
+      this.form = { order: [] };
+      this.dialog = { title: '详细信息', show: false, type: '1' };
+      this.search();
+    },
+  },
   computed: {
     ...mapState(['user']),
   },

+ 116 - 0
src/views/menu/outdepot/parts/detail-1.vue

@@ -0,0 +1,116 @@
+<template>
+  <div id="detail-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <data-form :fields="fields" :data="form" :rules="rules" @save="toSave">
+          <template #custom="{ item }">
+            <template v-if="item.model === 'order'">
+              <el-col :span="24">
+                <el-button type="primary" size="mini" @click="toAddOne()">添加商品</el-button>
+              </el-col>
+            </template>
+          </template>
+        </data-form>
+      </el-col>
+    </el-row>
+    <e-dialog :dialog="dialog" @toClose="toClose">
+      <template slot="info">
+        <el-col v-if="dialog.type == '1'">
+          <el-col :span="18" class="input">
+            <el-input placeholder="请输入库存商品全称" v-model="input" clearable> </el-input>
+          </el-col>
+          <el-col :span="4" class="text">
+            <el-button type="primary" size="small">搜索</el-button>
+          </el-col>
+          <el-col>
+            <data-form :fields="fieldsOne" :rules="rulesOne" @save="addSave"> </data-form>
+          </el-col>
+        </el-col>
+      </template>
+    </e-dialog>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'detail-1',
+  props: {
+    form: { type: Object },
+  },
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '登记人', model: 'register_name' },
+        { label: '登记人电话', model: 'register_phone' },
+        { label: '登记时间', model: 'register_date', type: 'date' },
+        { label: '出库原因', model: 'reason', type: 'textarea' },
+        { label: '商品列表', model: 'order', custom: true },
+      ],
+      rules: {
+        register_name: [{ required: true, message: '请输入登记人' }],
+        register_phone: [{ required: true, message: '请输入登记人电话' }],
+        register_date: [{ required: true, message: '请输入登记时间' }],
+        reason: [{ required: true, message: '请输入出库原因' }],
+      },
+      fieldsOne: [
+        { label: '商品名称', model: 'name' },
+        { label: '商品数量', model: 'num' },
+      ],
+      rulesOne: {
+        name: [{ required: true, message: '请输入商品名称' }],
+        num: [{ required: true, message: '请输入商品数量' }],
+      },
+      // 弹框
+      dialog: { title: '信息管理', show: false, type: '1' },
+      input: '',
+    };
+  },
+  created() {},
+  methods: {
+    search({ skip = 0, limit = 10, ...info } = {}) {},
+    toSave({ data }) {
+      this.$emit('onSubmit', data);
+    },
+    // 添加商品信息有
+    toAddOne() {
+      this.dialog = { title: '添加商品', show: true, type: '1', widths: '30%' };
+    },
+    addSave() {},
+    // 关闭弹框
+    toClose() {
+      this.dialog = { show: false };
+      this.search();
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.input {
+  margin: 0 0 20px 45px;
+}
+.text {
+  margin: 4px 0 0 5px;
+}
+/deep/.el-dialog__body {
+  min-height: 570px !important;
+}
+/deep/.el-dialog {
+  min-height: 650px;
+}
+</style>

+ 60 - 0
src/views/menu/outdepot/parts/info-1.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="info-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <data-form :fields="fields" :data="form" :rules="{}" :needSave="false">
+          <template #custom="{ item }">
+            <template v-if="item.model === 'order'">
+              <data-table :fields="orderField" :opera="[]" :data="form.order" :usePage="false"> </data-table>
+            </template>
+          </template>
+        </data-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info-1',
+  props: {
+    form: { type: Object },
+    typeList: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '登记人名称', model: 'register_name', readonly: true },
+        { label: '登记人电话', model: 'register_phone', readonly: true },
+        { label: '登记时间', model: 'register_date', readonly: true },
+        { label: '出库原因', model: 'reason', readonly: true, type: 'textarea' },
+        { label: '商品列表', model: 'order', custom: true },
+      ],
+      // 商品列表
+      orderField: [
+        { label: '商品名称', prop: 'name' },
+        { label: '商品数量', prop: 'num' },
+      ],
+    };
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 1 - 1
src/views/menu/stock/index.vue

@@ -65,7 +65,7 @@ export default {
   },
   created() {},
   methods: {
-    search() {},
+    search({ skip = 0, limit = 10, ...info } = {}) {},
     // 添加
     toAdd() {
       this.dialog = { title: '信息管理', show: true, type: '1', widths: '40%' };

+ 2 - 3
src/views/menu/stock/parts/detail-1.vue

@@ -5,7 +5,7 @@
         <data-form :fields="fields" :data="form" :rules="rules" @save="toSave">
           <template #custom="{ item }">
             <template v-if="item.model === 'img_url'">
-              <s-upload :limit="1" :data="form.img_url" type="img_url" url="/files/live/upload" @upload="uplSuc" @delete="uplDel"></s-upload>
+              <s-upload :limit="4" :data="form.img_url" type="img_url" url="/files/live/upload" @upload="uplSuc" @delete="uplDel"></s-upload>
             </template>
           </template>
         </data-form>
@@ -30,7 +30,7 @@ export default {
         { label: '商品名称', model: 'name' },
         { label: '商品数量', model: 'num' },
         { label: '商品单价(元)', model: 'money' },
-        { label: '商品简介', model: 'brief' },
+        { label: '商品简介', model: 'brief', type: 'textarea' },
         { label: '商品图片', model: 'img_url', custom: true },
       ],
       rules: {
@@ -40,7 +40,6 @@ export default {
         num: [{ required: true, message: '请输入商品数量' }],
         money: [{ required: true, message: '请输入商品单价(元)' }],
         brief: [{ required: true, message: '请输入商品简介' }],
-        img_url: [{ required: true, message: '请上传商品图片' }],
       },
     };
   },

+ 67 - 4
src/views/menu/stock_order/index.vue

@@ -1,8 +1,17 @@
 <template>
   <div id="index">
     <el-row>
-      <el-col :span="24" class="main animate__animated animate__backInRight"> test </el-col>
+      <el-col :span="24" class="main animate__animated animate__backInRight">
+        <el-col class="one">
+          <data-table @query="search" :fields="fields" :opera="opera" :data="list" :total="total" @view="toView" @edit="toEdit"> </data-table>
+        </el-col>
+      </el-col>
     </el-row>
+    <e-dialog :dialog="dialog" @toClose="toClose">
+      <template slot="info">
+        <info-1 v-if="dialog.type == '1'" :form="form"></info-1>
+      </template>
+    </e-dialog>
   </div>
 </template>
 
@@ -11,12 +20,66 @@ import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: {
+    info1: () => import('./parts/info-1.vue'),
+  },
   data: function () {
-    return {};
+    return {
+      // 数据项
+      fields: [
+        { label: '订单号', prop: 'order_num', filter: true },
+        { label: '收货人', prop: 'receive_user_name', filter: true },
+        { label: '供货单位', prop: 'mech_name' },
+        { label: '货物状态', prop: 'status_name' },
+      ],
+      total: 0,
+      opera: [
+        { label: '详情', method: 'view' },
+        { label: '签收', method: 'edit', display: (i) => i.status == '1', confirm: true },
+      ],
+      // 列表
+      list: [
+        {
+          order_num: 'HC48459767787',
+          receive_user_name: '胡图图',
+          mech_name: '羊村',
+          status: '1',
+          status_name: '待收货',
+          order: [{ name: '喜羊羊', num: '111', money: '99' }],
+        },
+        {
+          order_num: 'HC48459767788',
+          receive_user_name: '胡图图',
+          mech_name: '羊村',
+          status: '0',
+          status_name: '待收货',
+          order: [{ name: '美羊羊', num: '111', money: '99' }],
+        },
+      ],
+      // 弹框
+      dialog: { title: '信息管理', show: false, type: '1' },
+      // 添加表单
+      form: { order: [] },
+    };
   },
   created() {},
-  methods: {},
+  methods: {
+    search({ skip = 0, limit = 10, ...info } = {}) {},
+    // 详细信息
+    toView({ data }) {
+      this.$set(this, `form`, data);
+      this.dialog = { title: '详细信息', show: true, type: '1', widths: '40%' };
+    },
+    toEdit(data) {
+      console.log(data);
+    },
+    // 关闭弹框
+    toClose() {
+      this.form = { order: [] };
+      this.dialog = { title: '详细信息', show: false, type: '1' };
+      this.search();
+    },
+  },
   computed: {
     ...mapState(['user']),
   },

+ 65 - 0
src/views/menu/stock_order/parts/info-1.vue

@@ -0,0 +1,65 @@
+<template>
+  <div id="info-1">
+    <el-row>
+      <el-col :span="24" class="main">
+        <data-form :fields="fields" :data="form" :rules="{}" :needSave="false">
+          <template #custom="{ item }">
+            <template v-if="item.model === 'order'">
+              <data-table :fields="orderField" :opera="[]" :data="form.order" :usePage="false"> </data-table>
+            </template>
+          </template>
+        </data-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info-1',
+  props: {
+    form: { type: Object },
+    typeList: { type: Array },
+  },
+  components: {},
+  data: function () {
+    return {
+      fields: [
+        { label: '订单号', model: 'order_num', readonly: true },
+        { label: '采买人', model: 'user_name', readonly: true },
+        { label: '采买人电话', model: 'user_phone', readonly: true },
+        { label: '供货单位', model: 'mech_name', readonly: true },
+        { label: '供货总价(元)', model: 'money', readonly: true },
+        { label: '收货人', model: 'receive_user_name', readonly: true },
+        { label: '收货人电话', model: 'receive_user_phone', readonly: true },
+        { label: '收货地址', model: 'receive_address', readonly: true },
+        { label: '商品列表', model: 'order', custom: true },
+      ],
+      // 商品列表
+      orderField: [
+        { label: '商品名称', prop: 'name' },
+        { label: '商品数量', prop: 'num' },
+        { label: '商品单价', prop: 'money' },
+      ],
+    };
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>