allen 1 rok pred
rodič
commit
43957fed50

+ 14 - 48
manager-admin/src/router/index.js

@@ -41,66 +41,32 @@ export default new Router({
 const asyncRouters = [
   // 商品管理
   {
-    path: '/goods',
+    path: '/pj',
     component: Layout,
-    redirect: '/goods/goods-list',
-    name: 'goods',
+    redirect: '/pj/pj-goods-list',
+    name: 'ncs',
     meta: {
       title: 'goods',
       icon: 'goods-manage'
     },
     children: [
-      { path: 'goods-edit/:id(\\d+)', component: () => import('@/views/goods/goodsEdit'), name: 'goodsEdit', meta: { title: 'goodsEdit', noCache: true }, hidden: true },
-      { path: 'goods-list', component: () => import('@/views/goods/goodsList'), name: 'goodsList', meta: { title: 'goodsList' }},
-      { path: 'goods-detail/:id(\\d+)', component: () => import('@/views/goods/goodsDetail'), name: 'goodsDetail', meta: { title: 'goodsEdit', noCache: true }, hidden: true },
-      { path: 'goods-list-view', component: () => import('@/views/goods/goodsListView'), name: 'goodsListView', meta: { title: 'goodsList' }},
+      { path: 'pj-goods-edit/:id(\\d+)', component: () => import('@/views/goods/goodsEdit'), name: 'pjGoodsEdit', meta: { title: 'goodsEdit', noCache: true }, hidden: true },
+      { path: 'pj-goods-list', component: () => import('@/views/goods/goodsList'), name: 'pjGoodsList', meta: { title: 'goodsList' }},
+      { path: 'pj-goods-detail/:id(\\d+)', component: () => import('@/views/goods/goodsDetail'), name: 'goodsDetail', meta: { title: 'goodsEdit', noCache: true }, hidden: true },
+      { path: 'pj-goods-list-view', component: () => import('@/views/goods/goodsListView'), name: 'goodsListView', meta: { title: 'goodsList' }},
 
-      { path: 'draft', component: () => import('@/views/pjDraft/List'), name: 'pjDraftList', meta: { title: 'pjDraftList' }},
-      { path: 'self-draft', component: () => import('@/views/pjDraft/SelfList'), name: 'pjDraftListSelf', meta: { title: 'pjDraftList' }},
-      { path: 'draft-edit/:id(\\d+)', component: () => import('@/views/pjDraft/Edit'), name: 'draftEdit', meta: { title: 'draftEdit', noCache: true }, hidden: true },
-      { path: 'draft-goods/:id(\\d+)', component: () => import('@/views/pjDraft/FsGoods'), name: 'draftFsGoods', meta: { title: 'draftFsGoods', noCache: true }, hidden: true },
+      { path: 'pj-draft', component: () => import('@/views/pjDraft/List'), name: 'pjDraftList', meta: { title: 'pjDraftList' }},
+      { path: 'pj-self-draft', component: () => import('@/views/pjDraft/SelfList'), name: 'pjDraftListSelf', meta: { title: 'pjDraftList' }},
+      { path: 'pj-draft-edit/:id(\\d+)', component: () => import('@/views/pjDraft/Edit'), name: 'draftEdit', meta: { title: 'draftEdit', noCache: true }, hidden: true },
+      { path: 'pj-draft-goods/:id(\\d+)', component: () => import('@/views/pjDraft/FsGoods'), name: 'draftFsGoods', meta: { title: 'draftFsGoods', noCache: true }, hidden: true },
 
-      { path: 'order', component: () => import('@/views/pjOrder/List'), name: 'pjOrderList', meta: { title: 'pjOrderList' }},
-      { path: 'self-order', component: () => import('@/views/pjOrder/SelfList'), name: 'pjOrderListSelf', meta: { title: 'pjOrderList' }},
-      { path: 'order-edit/:id(\\d+)', component: () => import('@/views/pjOrder/Edit'), name: 'pjOrderEdit', meta: { title: 'pjOrderEdit', noCache: true }, hidden: true },
+      { path: 'pj-order', component: () => import('@/views/pjOrder/List'), name: 'pjOrderList', meta: { title: 'pjOrderList' }},
+      { path: 'pj-self-order', component: () => import('@/views/pjOrder/SelfList'), name: 'pjOrderListSelf', meta: { title: 'pjOrderList' }},
+      { path: 'pj-order-edit/:id(\\d+)', component: () => import('@/views/pjOrder/Edit'), name: 'pjOrderEdit', meta: { title: 'pjOrderEdit', noCache: true }, hidden: true },
       { path: 'pj-order-items', component: () => import('@/views/pjOrder/Items'), name: 'pjOrderItemsList', meta: { title: 'pjOrderItemsList' }},
       { path: 'pj-order-items-deail/:id(\\d+)', component: () => import('@/views/pjOrder/ItemDetail'), name: 'pjOrderItemDetail', meta: { title: 'pjOrderItemDetail', noCache: true }, hidden: true }
     ]
   },
-  // 设置
-  {
-    path: '/setting',
-    component: Layout,
-    redirect: '/setting/shop-settings/system',
-    name: 'setting',
-    meta: { title: 'setting', icon: 'setting-manage' },
-    children: [
-      {
-        path: '/setting/auth-settings',
-        component: () => import('@/views/setting/auth-settings/index'),
-        redirect: '/setting/auth-settings/administrator-manage',
-        name: 'authSettings',
-        meta: { title: 'authSettings' },
-        children: [
-          { path: 'administrator-manage', component: () => import('@/views/setting/auth-settings/administratorManage'), name: 'administratorManage', meta: { title: 'administratorManage' }},
-          { path: 'role-manage', component: () => import('@/views/setting/auth-settings/roleManage'), name: 'roleManage', meta: { title: 'roleManage' }},
-          { path: 'role-permission/:id(\\d+)', component: () => import('@/views/setting/auth-settings/rolePermission'), name: 'rolePermission', hidden: true, meta: { title: 'rolePermission', noCache: true }}
-        ]
-      }
-    ]
-  },
-  // 开发
-  {
-    path: '/development',
-    component: Layout,
-    redirect: '/development/menu-manage',
-    name: 'development',
-    meta: { title: 'development', icon: 'development-manage' },
-    children: [
-      { path: 'menu-manage', component: () => import('@/views/development/tool-manage/menuManage'), name: 'menuManage', meta: { title: 'menuManage' }}
-    ]
-  },
-
   { path: '*', redirect: '/404', hidden: true }
 ]
 

+ 1 - 0
manager-admin/src/store/modules/permission.js

@@ -26,6 +26,7 @@ const permission = {
           resolve()
         } else {
           getUserRolesPermissions(role_id).then(response => {
+            Storage.setItem('permissions', response)
             let accessedRouters = filterRoleRouter(asyncRouterMap, response)
             commit('SET_ROUTERS', accessedRouters)
             resolve()

+ 2 - 113
manager-admin/src/views/dashboard/index.vue

@@ -1,85 +1,6 @@
 <template>
   <div class="dashboard-container" v-loading="loading">
-    <el-row :gutter="20">
-      <!--新增商品 start-->
-      <el-col :span="16">
-        <el-card>
-          <div slot="header" class="clearfix">
-            <span>新增商品</span>
-            <router-link to="/goods/goods-list">
-              <el-button style="float: right; padding: 3px 0" type="text">查看更多</el-button>
-            </router-link>
-          </div>
-          <el-table :data="goodsList" border :height="tableHeight" style="width: 100%;">
-            <el-table-column label="商品图片" width="120">
-              <template slot-scope="scope">
-                <img :src="scope.row.thumbnail" class="goods-image"/>
-              </template>
-            </el-table-column>
-            <el-table-column prop="sn" label="商品编号" width="180"></el-table-column>
-            <el-table-column label="商品名称">
-              <template slot-scope="scope">
-                <a :href="MixinBuyerDomain + '/goods/' + scope.row.goods_id" target="_blank" class="goods-name" v-html="scope.row.goods_name">{{ scope.row.goods_name }}</a>
-              </template>
-            </el-table-column>
-            <el-table-column label="销售价" width="130">
-              <template slot-scope="scope">{{ scope.row.price | unitPrice('¥') }}</template>
-            </el-table-column>
-          </el-table>
-        </el-card>
-      </el-col>
-      <!--新增商品 end-->
-      <!--销售统计 start-->
-      <el-col :span="8">
-        <el-card>
-          <div slot="header" class="clearfix">
-            <span>销售统计</span>
-            <router-link to="/statistics/other-statistics/sales-revenue">
-              <el-button style="float: right; padding: 3px 0" type="text">查看更多</el-button>
-            </router-link>
-          </div>
-          <div id="salesStatistics" :style="{height: tableHeight + 'px'}"></div>
-        </el-card>
-      </el-col>
-      <!--销售统计 end-->
-    </el-row>
-    <el-row :gutter="20" style="margin-bottom: 0">
-      <el-col :span="16">
-        <el-card class="box-card">
-          <div slot="header" class="clearfix">
-            <span>新增会员</span>
-            <router-link to="/member/member-manage/member-list">
-              <el-button style="float: right; padding: 3px 0" type="text">查看更多</el-button>
-            </router-link>
-          </div>
-          <el-table :data="memberList" border :height="tableHeight" style="width: 100%;">
-            <el-table-column prop="uname" label="会员名称"/>
-            <el-table-column label="手机号">
-              <template slot-scope="scope">{{ scope.row.mobile | secrecyMobile }}</template>
-            </el-table-column>
-            <el-table-column prop="email" label="电子邮箱"/>
-            <el-table-column label="注册时间">
-              <template slot-scope="scope">{{ scope.row.create_time | unixToDate }}</template>
-            </el-table-column>
-          </el-table>
-        </el-card>
-      </el-col>
-      <el-col :span="8">
-        <el-card>
-          <div slot="header" class="clearfix">
-            <span>商品统计</span>
-            <router-link to="/statistics/goods-statistics/hot-goods">
-              <el-button style="float: right; padding: 3px 0" type="text">查看更多</el-button>
-            </router-link>
-          </div>
-          <div class="goods-statistics" :style="{height: tableHeight + 'px'}">
-            <router-link to="/statistics/goods-statistics/hot-goods"><el-button type="primary">热卖商品排行</el-button></router-link>
-            <router-link to="/statistics/goods-statistics/goods-sales-details"><el-button type="success">商品销售明细</el-button></router-link>
-            <router-link to="/statistics/goods-statistics/goods-collect"><el-button type="warning">商品收藏明细</el-button></router-link>
-          </div>
-        </el-card>
-      </el-col>
-    </el-row>
+
   </div>
 </template>
 
@@ -90,7 +11,7 @@
     name: 'dashboard',
     data() {
       return {
-        loading: true,
+        loading: false,
         goodsList: null,
         memberList: null,
         tableHeight: (document.body.clientHeight - 80 - 44 - 80 - 80 - 20 - 20 - 4) / 2
@@ -109,38 +30,6 @@
       window.onresize = this.countTableHeight
     },
     mounted() {
-      this.$nextTick(() => {
-        this.sesalChart = this.$echarts.init(document.getElementById('salesStatistics'))
-      })
-      API_Common.getIndexData().then(response => {
-        this.loading = false
-        this.goodsList = response.goods_vos
-        this.memberList = response.member_vos
-
-        /** 销售统计 */
-        const IS = response.sales_total
-        const nowDate = new Date()
-        const year = nowDate.getFullYear()
-        const month = nowDate.getMonth() + 1
-        this.sesalChart.setOption({
-          title: { text: `${year}年${month}月销售统计`, subtext: '单位(元)', x: 'center' },
-          tooltip: { trigger: 'item', formatter: '{a} <br/>{b} : {c} ({d}%)' },
-          legend: { orient: 'vertical', left: 'left', data: ['收款金额', '实收金额', '退款金额'] },
-          series: [
-            { name: '访问来源',
-              type: 'pie',
-              radius: '55%',
-              center: ['55%', '70%'],
-              data: [
-                { value: IS.receive_money, name: '收款金额' },
-                { value: IS.real_money, name: '实收金额' },
-                { value: IS.refund_money, name: '退款金额' }
-              ],
-              itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' }}
-            }
-          ]
-        })
-      })
     },
     methods: {
       /** 窗口缩放时计算table高度 */

+ 3 - 3
manager-admin/src/views/goods/goodsEdit.vue

@@ -89,7 +89,7 @@ import { UE, UploadSortable } from '@/components'
 import { RegExp } from '~/ui-utils'
 
 export default {
-  name: 'goodsEdit',
+  name: 'pjGoodsEdit',
   components: {
     [UploadSortable.name]: UploadSortable,
     [UE.name]: UE
@@ -220,7 +220,7 @@ export default {
                 view: that.$route,
                 $router: that.$router
               })
-              that.$router.push({ path: '/goods/goods-list' })
+              that.$router.push({ path: '/pj/pj-goods-list' })
             })
           } else {
             API_goods.addGoods(_params).then(response => {
@@ -231,7 +231,7 @@ export default {
                 view: that.$route,
                 $router: that.$router
               })
-              that.$router.push({ path: '/goods/goods-list' })
+              that.$router.push({ path: '/pj/pj-goods-list' })
             })
           }
         } else {

+ 3 - 3
manager-admin/src/views/goods/goodsList.vue

@@ -88,7 +88,7 @@
   import { RegExp } from '~/ui-utils'
 
   export default {
-    name: 'goodsList',
+    name: 'pjGoodsList',
     data() {
       return {
         /** 列表loading状态 */
@@ -169,10 +169,10 @@
         }).catch(() => (this.loading = false))
       },
       handleOperateGoods(id) {
-        this.$router.push({ name: 'goodsEdit', params: { id: id, callback: this.GET_GoodsList }})
+        this.$router.push({ name: 'pjGoodsEdit', params: { id: id, callback: this.GET_GoodsList }})
       },
       handleAdd() {
-        this.$router.push({ name: 'goodsEdit', params: { id: 0, callback: this.GET_GoodsList }})
+        this.$router.push({ name: 'pjGoodsEdit', params: { id: 0, callback: this.GET_GoodsList }})
       }
     }
   }

+ 9 - 22
manager-admin/src/views/goods/goodsSelect.vue

@@ -13,27 +13,7 @@
       <div class="toolbar-search">
         <en-table-search
           @search="searchEvent"
-          @advancedSearch="advancedSearchEvent"
-          advanced
         >
-          <template slot="advanced-content">
-            <el-form ref="advancedForm" :model="advancedForm" label-width="80px">
-              <el-form-item label="产品名称">
-                <el-input size="medium" v-model="advancedForm.name" clearable></el-input>
-              </el-form-item>
-              <el-form-item label="生产编号">
-                <el-input size="medium" v-model="advancedForm.code" clearable></el-input>
-              </el-form-item>
-              <el-form-item label="生产编码">
-                <el-input size="medium" v-model="advancedForm.code" clearable></el-input>
-              </el-form-item>
-              <el-form-item label="价格区间">
-                <el-input size="medium" v-model="advancedForm.start_price" @input="() => advancedForm.start_price = advancedForm.start_price.replace(/[^\d|\.]/g, '')" :maxlength="10" style="width: 100px;" clearable></el-input>
-                -
-                <el-input size="medium" v-model="advancedForm.end_price" @input="() => advancedForm.end_price = advancedForm.end_price.replace(/[^\d|\.]/g, '')" :maxlength="10" style="width: 100px;" clearable></el-input>
-              </el-form-item>
-            </el-form>
-          </template>
         </en-table-search>
       </div>
     </div>
@@ -43,7 +23,7 @@
         type="selection"
         width="55">
       </el-table-column>
-      <el-table-column label="产品名称">
+      <el-table-column label="产品名称" width="220">
         <template slot-scope="scope">
           <div class="goods-info">
             <div class="goods-image" style="margin: 0 20px;">
@@ -58,6 +38,13 @@
           </div>
         </template>
       </el-table-column>
+      <el-table-column label="标签">
+        <template slot-scope="scope">
+          <template v-if="scope.row.tags">
+            <el-tag type="success" style="margin-right: 3px" v-for="tag in scope.row.tags.split(',')" :key="tag">{{tag}}</el-tag>
+          </template>
+        </template>
+      </el-table-column>
       <el-table-column label="生产型号" prop="code"></el-table-column>
       <el-table-column label="产品编码" prop="no"></el-table-column>
       <el-table-column label="库存" prop="store_qty"></el-table-column>
@@ -179,7 +166,7 @@ export default {
     searchEvent(data) {
       this.params = {
         ...this.params,
-        keyword: data
+        query: data
       }
       this.params.page_no = 1
       Object.keys(this.advancedForm).forEach(key => delete this.params[key])

+ 6 - 1
manager-admin/src/views/pjDraft/Edit.vue

@@ -49,7 +49,7 @@
           </el-form>
         </div>
       </el-tab-pane>
-      <el-tab-pane label="项目产品" v-if="modelForm.type">
+      <el-tab-pane label="项目产品" v-if="modelForm.type && modelForm.id">
         <fs-goods :draft-id="keyId" :type="modelForm.type"></fs-goods>
       </el-tab-pane>
     </el-tabs>
@@ -239,6 +239,11 @@ export default {
       API_draft.createOrder(this.keyId).then(res => {
         this.loading = false
         this.$message.success('提交成功')
+        this.$route.params.callback()
+        this.$store.dispatch('delCurrentViews', {
+          view: this.$route,
+          $router: this.$router
+        })
       })
     }
   }

+ 5 - 2
manager-admin/src/views/pjDraft/FsGoods.vue

@@ -7,7 +7,7 @@
     <el-divider>标准配置 <el-button type="text" icon="el-icon-circle-plus-outline" @click="handleAddBase">添加</el-button></el-divider>
     <el-row :gutter="24">
       <el-col :span="8" v-for="item in baseDevice" :key="item.id">
-        <el-card shadow="always">
+        <el-card shadow="always" :class="item.id?'green-border':''">
           <div slot="header" class="clearfix">
             <span>{{ item.name }}</span>
             <el-button style="float: right; padding: 3px 0;" type="text" icon="el-icon-circle-close" @click="handleItemDelete(item.id)">删除</el-button>
@@ -38,7 +38,7 @@
 
     <el-row :gutter="24">
       <el-col :span="8" v-for="item in addonDevice" :key="item.id">
-        <el-card shadow="always">
+        <el-card shadow="always" :class="item.id?'green-border':''">
           <div slot="header" class="clearfix">
             <span>{{ item.name }}</span>
             <el-button style="float: right; padding: 3px 0;" type="text" icon="el-icon-circle-close" @click="handleItemDelete(item.id)">删除</el-button>
@@ -212,4 +212,7 @@ export default {
     background-color: #fff
   }
 }
+.green-border {
+  border-color: #13ce66;
+}
 </style>

+ 5 - 13
manager-admin/src/views/pjOrder/Edit.vue

@@ -54,7 +54,7 @@
           </el-form>
         </div>
       </el-tab-pane>
-      <el-tab-pane label="服务相关">
+      <el-tab-pane label="服务相关" v-if="permissions.filter(p => p === 'pjTech').length > 0">
         <el-form :model="modelForm" :rules="serverFormRule" label-width="100px" ref="serverForm">
           <el-form-item label="网络类型" prop="net_mode">
             <el-select v-model="modelForm.net_mode" placeholder="请选择" @change="netModelChange" clearable>
@@ -116,7 +116,7 @@
       <el-tab-pane label="项目产品">
         <pj-order-items :order-no="orderNo" :type="modelForm.type"></pj-order-items>
       </el-tab-pane>
-      <el-tab-pane label="收款明细">
+      <el-tab-pane label="收款明细" v-if="permissions.filter(p => p === 'pjReceipt').length > 0">
         <pj-receipt :order-no="orderNo"></pj-receipt>
       </el-tab-pane>
       <el-tab-pane label="生产发货情况">
@@ -134,7 +134,7 @@
                 :picker-options="{disabledDate(time) { return time.getTime() >= Date.now() }}">
               </el-date-picker>
             </el-form-item>
-            <el-form-item label="签收单:" prop="receipt_file" style="width: 90%;text-align: left;">
+            <el-form-item label="签收单:" prop="receipt_file" style="width: 90%;text-align: left;" v-if="permissions.filter(p => p === 'pjOrderShip').length > 0">
               <el-upload
                 class="avatar-uploader"
                 :action="`${MixinUploadApi}?scene=pjorders`"
@@ -150,21 +150,17 @@
                 <img width="100%" :src="dialogImageUrl" alt="">
               </el-dialog>
             </el-form-item>
-            <el-form-item>
+            <el-form-item v-if="permissions.filter(p => p === 'pjOrderShip').length > 0">
               <el-button type="primary" @click="handleLogisticsSave" class="save">保存</el-button>
             </el-form-item>
           </el-form>
         </div>
       </el-tab-pane>
     </el-tabs>
-    <p v-for="route in permission_routers" :key="route.name" :item="route">
-
-    </p>
   </div>
 </template>
 
 <script>
-import { mapGetters } from 'vuex'
 import * as API_order from '@/api/pjOrder'
 import { UE } from '@/components'
 import { RegExp } from '~/ui-utils'
@@ -177,11 +173,6 @@ export default {
   components: {
     [UE.name]: UE, pjOrderItems, pjReceipt
   },
-  computed: {
-    ...mapGetters([
-      'permission_routers'
-    ])
-  },
   data() {
     const checkHtml = (rule, value, callback) => {
       if (value.match(/<[^>]+>/g)) {
@@ -202,6 +193,7 @@ export default {
     }
 
     return {
+      permissions: JSON.parse(Storage.getItem('permissions')),
       /** 加载中。。。 */
       loading: false,
 

+ 2 - 1
manager-admin/src/views/pjOrder/ItemDetail.vue

@@ -54,7 +54,7 @@
             <template slot="append">共{{modelForm.qty}}</template>
           </el-input>
         </el-form-item>
-        <el-form-item>
+        <el-form-item v-if="permissions.filter(p => p === 'pjOrderShip').length > 0">
           <el-button type="primary" @click="handleSave" class="save">保存</el-button>
         </el-form-item>
       </el-form>
@@ -89,6 +89,7 @@ export default {
     }
 
     return {
+      permissions: JSON.parse(Storage.getItem('permissions')),
       /** 加载中。。。 */
       loading: false,
 

+ 63 - 46
manager-admin/src/views/pjOrder/OrderItems.vue

@@ -24,31 +24,43 @@
               </div>
             </div>
             <div>{{ item.sales_remark }}</div>
-            <el-divider>技术:
-              <el-button type="text" icon="el-icon-edit-outline" @click="handleTechSave(item)">保存</el-button>
-            </el-divider>
-            <div class="tech_panel">
-              <div>填写人:{{item.tech_name}}</div>
-              <div>硬件版本:<el-input v-model="item.hard_ver" size="small"></el-input></div>
-              <div>软件版本:<el-input v-model="item.soft_ver" size="small"></el-input></div>
-              <div>备注:<el-input type="textarea" rows="3" placeholder="备注,最大300字" maxlength="300" show-word-limit v-model="item.tech_remark"></el-input></div>
-            </div>
-            <el-divider>生产:
-              <el-button type="text" icon="el-icon-edit-outline" @click="handleProduceSave(item)">保存</el-button>
-            </el-divider>
-            <div class="tech_panel">
-              <div>填写人:{{item.produce_name}}</div>
-              <div>生产状态:
-                <el-select placeholder="请选择" v-model="item.produce_status">
-                  <el-option value="采购原料中"></el-option>
-                  <el-option value="生产中"></el-option>
-                  <el-option value="完成"></el-option>
-                </el-select>
+            <template v-if="permissions.filter(p => p === 'pjTech').length > 0">
+              <el-divider>技术:
+                <el-button type="text" icon="el-icon-edit-outline" @click="handleTechSave(item)">保存</el-button>
+              </el-divider>
+              <div class="tech_panel">
+                <div>填写人:{{item.tech_name}}</div>
+                <div>硬件版本:<el-input v-model="item.hard_ver" size="small"></el-input></div>
+                <div>软件版本:<el-input v-model="item.soft_ver" size="small"></el-input></div>
+                <div>备注:<el-input type="textarea" rows="3" placeholder="备注,最大300字" maxlength="300" show-word-limit v-model="item.tech_remark"></el-input></div>
               </div>
-              <div>完成量:<el-input v-model="item.produced_qty">
+            </template>
+            <template v-if="permissions.filter(p => p === 'pjOrderItemsList').length > 0">
+              <el-divider>生产:
+                <el-button type="text" icon="el-icon-edit-outline" @click="handleProduceSave(item)">保存</el-button>
+              </el-divider>
+              <div class="tech_panel">
+                <div>填写人:{{item.produce_name}}</div>
+                <div>生产状态:
+                  <el-select placeholder="请选择" v-model="item.produce_status">
+                    <el-option value="采购原料中"></el-option>
+                    <el-option value="生产中"></el-option>
+                    <el-option value="完成"></el-option>
+                  </el-select>
+                </div>
+                <div>完成量:<el-input v-model="item.produced_qty">
+                  <template slot="append">共{{item.qty}}</template>
+                </el-input></div>
+              </div>
+            </template>
+            <template v-else>
+              <el-divider>生产情况</el-divider>
+              <div>填写人:{{item.produce_name}}</div>
+              <div>生产状态:{{item.produce_status}}</div>
+              <div>完成量:<el-input v-model="item.produced_qty" :disabled="true">
                 <template slot="append">共{{item.qty}}</template>
               </el-input></div>
-            </div>
+            </template>
           </div>
         </el-card>
       </el-col>
@@ -75,31 +87,35 @@
             </div>
           </div>
           <div>{{ item.sales_remark }}</div>
-          <el-divider>技术:
-            <el-button type="text" icon="el-icon-edit-outline" @click="handleTechSave(item)">保存</el-button>
-          </el-divider>
-          <div class="tech_panel">
-            <div>填写人:{{item.tech_name}}</div>
-            <div>硬件版本:<el-input v-model="item.hard_ver" size="small"></el-input></div>
-            <div>软件版本:<el-input v-model="item.soft_ver" size="small"></el-input></div>
-            <div>备注:<el-input type="textarea" rows="3" placeholder="备注,最大300字" maxlength="300" show-word-limit v-model="item.tech_remark"></el-input></div>
-          </div>
-          <el-divider>生产:
-            <el-button type="text" icon="el-icon-edit-outline" @click="handleProduceSave(item)">保存</el-button>
-          </el-divider>
-          <div class="tech_panel">
-            <div>填写人:{{item.produce_name}}</div>
-            <div>生产状态:
-              <el-select placeholder="请选择" v-model="item.produce_status">
-                <el-option value="采购原料中"></el-option>
-                <el-option value="生产中"></el-option>
-                <el-option value="完成"></el-option>
-              </el-select>
+          <template v-if="permissions.filter(p => p === 'pjTech').length > 0">
+            <el-divider>技术:
+              <el-button type="text" icon="el-icon-edit-outline" @click="handleTechSave(item)">保存</el-button>
+            </el-divider>
+            <div class="tech_panel">
+              <div>填写人:{{item.tech_name}}</div>
+              <div>硬件版本:<el-input v-model="item.hard_ver" size="small"></el-input></div>
+              <div>软件版本:<el-input v-model="item.soft_ver" size="small"></el-input></div>
+              <div>备注:<el-input type="textarea" rows="3" placeholder="备注,最大300字" maxlength="300" show-word-limit v-model="item.tech_remark"></el-input></div>
             </div>
-            <div>完成量:<el-input v-model="item.produced_qty">
-              <template slot="append">共{{item.qty}}</template>
-            </el-input></div>
-          </div>
+          </template>
+          <template v-if="permissions.filter(p => p === 'pjOrderItemsList').length > 0">
+            <el-divider>生产:
+              <el-button type="text" icon="el-icon-edit-outline" @click="handleProduceSave(item)">保存</el-button>
+            </el-divider>
+            <div class="tech_panel">
+              <div>填写人:{{item.produce_name}}</div>
+              <div>生产状态:
+                <el-select placeholder="请选择" v-model="item.produce_status">
+                  <el-option value="采购原料中"></el-option>
+                  <el-option value="生产中"></el-option>
+                  <el-option value="完成"></el-option>
+                </el-select>
+              </div>
+              <div>完成量:<el-input v-model="item.produced_qty">
+                <template slot="append">共{{item.qty}}</template>
+              </el-input></div>
+            </div>
+          </template>
         </div>
       </el-card>
       </el-col>
@@ -126,6 +142,7 @@ export default {
   },
   data() {
     return {
+      permissions: JSON.parse(Storage.getItem('permissions')),
       keyId: '',
       params: {
         page_no: 1,

+ 5 - 3
manager-admin/src/views/pjOrder/Receipt.vue

@@ -6,7 +6,7 @@
   >
     <div slot="toolbar" class="inner-toolbar">
       <div class="toolbar-btns">
-        <el-button size="mini" type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd">添加</el-button>
+        <el-button size="mini" type="primary" icon="el-icon-circle-plus-outline" @click="handleAdd" v-if="permissions.filter(p => p === 'pjReceiptAction').length > 0">添加</el-button>
       </div>
     </div>
 
@@ -32,7 +32,7 @@
           <el-tag type="success" v-else>正常</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="操作" width="150" fixed="right">
+      <el-table-column label="操作" width="150" fixed="right" v-if="permissions.filter(p => p === 'pjReceiptAction').length > 0">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -81,7 +81,7 @@
       </div>
       <div slot="footer" class="dialog-footer">
         <el-button @click="dialogAddVisible = false">取 消</el-button>
-        <el-button type="primary" @click="handleReceipt">确 定</el-button>
+        <el-button v-if="permissions.filter(p => p === 'pjReceiptAction').length > 0" type="primary" @click="handleReceipt">确 定</el-button>
       </div>
     </el-dialog>
   </div>
@@ -90,6 +90,7 @@
 <script>
 import * as API_receipt from '@/api/pjReceipt.js'
 import { Foundation } from '~/ui-utils'
+import Storage from '../../utils/storage'
 
 export default {
   name: 'pjReceiptList',
@@ -101,6 +102,7 @@ export default {
   },
   data() {
     return {
+      permissions: JSON.parse(Storage.getItem('permissions')),
       /** 列表loading状态 */
       loading: false,