Переглянути джерело

Merge branch 'develop_yh48_2' of http://git.chelingzhu.com/jianguan-web/jg-ocs-html into develop_yh48_2

chenrui 8 місяців тому
батько
коміт
9a5c113571

+ 1 - 1
public/version.json

@@ -1,4 +1,4 @@
 {
-    "version": "2.2.48",
+    "version": "2.2.482",
     "message": "发现有新版本发布,确定更新系统?"
 }

+ 4 - 4
src/config/router.config.js

@@ -3692,8 +3692,8 @@ export const asyncRouterMap = [
             component: BlankLayout,
             meta: {
               title: '促销产品',
-              icon: 'file-ppt'
-              // permission: 'M_promotionalProducts'
+              icon: 'file-ppt',
+              permission: 'M_promoProduct'
             },
             hideChildrenInMenu: true,
             children: [
@@ -3704,8 +3704,8 @@ export const asyncRouterMap = [
                 meta: {
                   title: '促销产品列表',
                   icon: 'file-ppt',
-                  hidden: true
-                  // permission: 'M_promoProductList'
+                  hidden: true,
+                  permission: 'M_promoProductList'
                 }
               }
             ]

+ 2 - 2
src/views/common/productTypeAll.js

@@ -63,8 +63,8 @@ const ProductType = {
       console.log(inputValue, path)
       return path.some(option => option.productTypeName.indexOf(inputValue) > -1);
     },
-    setDefValue(defaultVal){
-      this.handleChange(defaultVal)
+    setDefValue(defaultVal,row){
+      this.handleChange(defaultVal,row)
     },
     handleChange (value,row) {
       this.defaultVal = value

+ 20 - 10
src/views/easyPassManagement/homepageCarouselImg/edit.vue

@@ -115,7 +115,7 @@
               </a-form-model-item>
             </a-col>
             <a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-              <a-form-model-item label="内容" prop="contentEditor" v-show="form.contentType =='IMAGE_CONTENT'">
+              <a-form-model-item label="内容" class="contentBox" v-show="form.contentType =='IMAGE_CONTENT'">
                 <editor
                   v-show="!isDisabled"
                   id="carouselImageEdit-editor"
@@ -125,7 +125,7 @@
                   :cache="false"></editor>
                 <div style="border:1px solid #efefef;border-radius:8px;padding:10px 20px;" v-if="isDisabled" v-html="form.content"></div>
               </a-form-model-item>
-              <a-form-model-item label="上传视频" prop="content" v-show="form.contentType =='VIDEO'">
+              <a-form-model-item label="上传视频" prop="content" v-if="form.contentType =='VIDEO'">
                 <Upload
                   class="upload"
                   id="carouselImageEdit-videoSet"
@@ -223,8 +223,7 @@ export default {
         imageUrl: [{ required: true, message: '请选择要上传的封面图片', trigger: 'change' }],
         contentType: [{ required: true, message: '请选择内容类型', trigger: 'change' }],
         content: [{ required: true, message: '请选择视频展示', trigger: ['blur', 'change'] }],
-        contentLink: [{ required: true, message: '请输入跳转链接', trigger: ['blur', 'change'] }],
-        contentEditor: [{ required: true, message: '请输入图文内容', trigger: ['blur', 'change'] }]
+        contentLink: [{ required: true, message: '请输入跳转链接', trigger: ['blur', 'change'] }]
       }
     }
   },
@@ -303,7 +302,6 @@ export default {
             _this.form.contentEditor = res.data.content
             _this.form.time = [res.data.bannerStartDate, res.data.bannerEndDate]
           })
-          console.log('22222222222222:', _this.form)
         }
       })
     },
@@ -314,9 +312,8 @@ export default {
         _this.form.content = _this.form.contentLink
       }
       if (_this.form.contentType === 'IMAGE_CONTENT') {
-        _this.form.content = _this.form.contentEditor
+        _this.form.content = _this.form.contentEditor ? _this.form.contentEditor : _this.form.content
       }
-      console.log('11111111111:', _this.form)
       // 验证组件必填项
       _this.$refs.ruleForm.validate(valid => {
         if (valid) {
@@ -334,6 +331,10 @@ export default {
         }
         _this.form.dealerSnList = _this.chooseDealerList.map(con => con.dealerSn)
       }
+      if (_this.form.contentType === 'IMAGE_CONTENT' && !_this.form.contentEditor) {
+        _this.$message.warning('请输入图文内容!')
+        return
+      }
       _this.form.bannerSn = _this.$route.params.sn || undefined
       var formData = JSON.parse(JSON.stringify(_this.form))
       delete formData.time
@@ -364,9 +365,6 @@ export default {
     //  文本编辑器
     editorChange (html, text) {
       this.form.contentEditor = html
-      if (html) {
-        this.$refs.ruleForm.clearValidate('contentEditor')
-      }
     },
     // 重置
     resetSearchForm () {
@@ -457,6 +455,18 @@ export default {
         z-index: 0;
       }
     }
+    //图文必填标志显示
+  .contentBox {
+      /deep/.ant-form-item-label label::before{
+        display:inline-block;
+        margin-right: 4px;
+        color: #f5222d !important;
+        font-size: 12px;
+        font-family: SimSun, sans-serif;
+        line-height: 1;
+        content: '*';
+      }
+    }
     .buyerBox{
       border:1px solid #d9d9d9;
       margin-top:10px;

+ 2 - 2
src/views/easyPassManagement/promotionalActivities/list.vue

@@ -108,14 +108,14 @@
                 type="link"
                 class="button-warning"
                 :id="'promotion-abandon-btn-'+record.id"
-                v-if="(record.promoState=='HAVE_RELEASE') && $hasPermissions('B_promoActivitiesAbandon')"
+                v-if="record.promoState=='HAVE_RELEASE'&&record.dealerOpenFlag=='0'&& $hasPermissions('B_promoActivitiesAbandon')"
                 @click="handleAbandon(record)">废弃</a-button>
               <a-button
                 size="small"
                 type="link"
                 class="button-warning"
                 :id="'promotion-img-btn-'+record.id"
-                v-if="(record.promoState=='HAVE_RELEASE') && $hasPermissions('B_promoActivitiesImg')"
+                v-if="record.promoState=='HAVE_RELEASE'&&record.dealerOpenFlag=='0'&& $hasPermissions('B_promoActivitiesImg')"
                 @click="handleSet(record)">轮播图</a-button>
               <a-button
                 size="small"

+ 12 - 1
src/views/expenseManagement/expenseReimbursement/employee.js

@@ -29,6 +29,10 @@ const Employee = {
       type: String,
       default: '请选择申请人(输入名称搜索)'
     },
+    notInSn:{
+      type: Array,
+      default: () => []
+    }
   },
   data() {
     return {
@@ -43,6 +47,12 @@ const Employee = {
     value(newValue, oldValue) {
       this.defaultVal = newValue
     },
+    notInSn(a,b){
+      console.log(a,b)
+      if(JSON.stringify(a) !== JSON.stringify(b)){
+        this.getList()
+      }
+    }
   },
   methods: {
     filterOption (input, option) {
@@ -57,7 +67,8 @@ const Employee = {
       this.$emit('input', value);
     },
     getList () {
-      this.list = this.$store.state.app.employeeList
+      console.log(11)
+      this.list = this.$store.state.app.employeeList.filter(item => this.notInSn.indexOf(item.employeeSn)<0)
       if(this.list.length==0){
         employeeQueryList({}).then(res => {
           if (res.status == 200) {

+ 4 - 4
src/views/expenseManagement/expenseReimbursement/epenseCdfModal.vue

@@ -81,11 +81,11 @@
                 v-for="(item,idx) in record.childDetailSplitList"
                 :id="item.id"
                 :key="item.id">
-                <employee style="width: 40%;" placeholder="请选择承担人员" v-model="item.splitObjSn"></employee>
+                <employee style="width: 50%;" placeholder="请选择承担人员" :notInSn="record.childDetailSplitList.filter(a=>a.splitObjSn!=item.splitObjSn).map(b=>b.splitObjSn)" v-model="item.splitObjSn"></employee>
                 -
                 <a-input-number
                   :id="'cdfTable-childsplitAmount-'+index"
-                  style="width: 40%;"
+                  style="width: 30%;"
                   v-model="item.splitAmount"
                   :precision="2"
                   :min="0"
@@ -100,7 +100,7 @@
                     size="small"
                     type="danger"
                     shape="circle"
-                    icon="delete" />
+                    icon="minus" />
                 </div>
                 <div v-if="record.childDetailSplitList&&idx == record.childDetailSplitList.length - 1">
                   <a-button
@@ -127,7 +127,7 @@
             </template>
             <template slot="footer" slot-scope="currentPageData">
               <a-button
-                :id="'cdfTable-add-'+index"
+                id="cdfTable-add-0"
                 type="link"
                 class="button-info"
                 block

+ 29 - 20
src/views/expenseManagement/expenseReimbursement/productInfoModal.vue

@@ -26,9 +26,9 @@
           <a-table
             class="sTable fixPagination"
             ref="table"
-            :scroll="{ y: 200 }"
+            :scroll="{ y: 300 }"
             size="small"
-            :rowKey="(record) => record.id"
+            :rowKey="(record,index) => 'productTable-'+index"
             :columns="columns"
             :data-source="dataList"
             :pagination="false"
@@ -36,7 +36,7 @@
             <div slot="customTitle"><span style="color: red;">*</span>费用金额</div>
             <template slot="action" slot-scope="text,record,index">
               <a-button
-                :id="'productInfoModal-del-'+record.id"
+                :id="'del-'+index"
                 size="small"
                 type="link"
                 class="button-error"
@@ -45,26 +45,30 @@
             </template>
             <!-- 产品品牌 -->
             <template slot="productBrand" slot-scope="text,record,index">
-              <ProductBrand style="width: 100%;" :disabled="!!record.productCode" :id="'productBrand-'+index" @change="productBrandChange" v-model="record.productBrandSn"></ProductBrand>
+              <span v-if="!!record.productCode">{{ record.productBrandName }}</span>
+              <ProductBrand style="width: 100%;" v-else :id="'productBrand-'+index" @change="productBrandChange" v-model="record.productBrandSn"></ProductBrand>
             </template>
             <!-- 产品分类 -->
             <template slot="productType" slot-scope="text,record,index">
+              <span v-if="!!record.productCode">
+                {{ record.productTypeName1 }}>{{ record.productTypeName2 }}>{{ record.productTypeName3 }}
+              </span>
               <ProductTypeAll
+                v-else
                 style="width: 100%;"
-                :disabled="!!record.productCode"
                 :ref="'productType-'+record.no"
-                :id="'productInfoModal-productType-'+record.id"
+                :id="'productType-'+index"
                 v-model="record.productType"
                 @change="changeProductType"></ProductTypeAll>
             </template>
             <!-- 产品编码 -->
             <template slot="productCode" slot-scope="text,record,index">
-              <productCodeList :ref="'productCode-'+record.no" :key="'productCode-'+index" :id="'productCode-'+record.id" @change="e => productCodeChange(e, record)" />
+              <productCodeList :ref="'productCode-'+record.no" :key="'productCode-'+index" :id="'productCode-'+index" @change="productCodeChange" />
             </template>
             <!-- 费用金额 -->
-            <template slot="expense" slot-scope="text,record">
+            <template slot="expense" slot-scope="text,record,index">
               <a-input-number
-                :id="'productInfoModal-expense-'+record.id"
+                :id="'expense-'+index"
                 style="width: 100%;"
                 v-model="record.expense"
                 :precision="2"
@@ -73,9 +77,9 @@
                 placeholder="请输入"
               />
             </template>
-            <template slot="footer" slot-scope="currentPageData">
+            <template slot="footer">
               <a-button
-                :id="'productInfoModal-add-'+record.id"
+                id="productInfoModal-add-0"
                 type="link"
                 class="button-info"
                 v-if="dataList.length==0"
@@ -129,7 +133,7 @@ export default {
       baseData: null, // 详细信息
       columns: [
         { title: '产品品牌', scopedSlots: { customRender: 'productBrand' }, align: 'center', width: '20%' },
-        { title: '产品分类', scopedSlots: { customRender: 'productType' }, align: 'center', width: '30%' },
+        { title: '产品分类', scopedSlots: { customRender: 'productType' }, align: 'center', width: '40%' },
         { title: '产品编码', scopedSlots: { customRender: 'productCode' }, align: 'center', width: '20%' },
         // { slots: { title: 'customTitle' }, scopedSlots: { customRender: 'expense' }, align: 'center', width: '20%' }
         { title: '操作', scopedSlots: { customRender: 'action' }, width: '10%', align: 'center' }
@@ -138,7 +142,9 @@ export default {
   },
   methods: {
     // 产品编码
-    productCodeChange (val, row) {
+    productCodeChange (val, id) {
+      const index = id.split('-')[1]
+      const row = this.dataList[index]
       row.productSn = val.key || undefined
       row.productCode = val.row && val.row.code ? val.row.code : undefined
       row.productName = val.row && val.row.name ? val.row.name : undefined
@@ -152,9 +158,10 @@ export default {
       row.productTypeName3 = val.row && val.row.productTypeName3 ? val.row.productTypeName3 : undefined
       // 设置默认值
       const defval = row.productTypeSn1 || row.productTypeSn2 || row.productTypeSn3 ? [row.productTypeSn1, row.productTypeSn2, row.productTypeSn3] : []
-      this.$set(row, 'productType', defval)
+      row.productType = defval
+      console.log(row)
       this.$nextTick(() => {
-        this.$refs['productType-' + row.no].setDefValue(defval)
+        this.$refs['productType-' + row.no].setDefValue(defval, row)
       })
     },
     // 产品品牌
@@ -165,6 +172,7 @@ export default {
     },
     //  产品分类  change
     changeProductType (val, id, options) {
+      console.log(val, id, options)
       const index = id.split('-')[1]
       const row = this.dataList[index]
       if (val.length > 1) {
@@ -179,7 +187,7 @@ export default {
       } else if (val.length == 1) {
         this.$set(row, 'productType', [])
         this.$nextTick(() => {
-          this.$refs['productType-' + row.no].setDefValue([])
+          this.$refs['productType-' + row.no].setDefValue([], row)
         })
         this.$message.info('不能只选择一级分类')
       }
@@ -265,12 +273,13 @@ export default {
           this.dataList.map(item => {
             item.no = item.id
             this.$nextTick(() => {
-              if (item.productTypeSn1 || item.productTypeSn2 || item.productTypeSn3) {
-                item.productType = [item.productTypeSn1, item.productTypeSn2, item.productTypeSn3]
-                this.$refs['productType-' + item.no].setDefValue([item.productTypeSn1, item.productTypeSn2, item.productTypeSn3])
-              }
               if (item.productCode) {
                 this.$refs['productCode-' + item.no].setDufaultVal(item.productCode)
+              } else {
+                if (item.productTypeSn1 || item.productTypeSn2 || item.productTypeSn3) {
+                  item.productType = [item.productTypeSn1, item.productTypeSn2, item.productTypeSn3]
+                  this.$refs['productType-' + item.no].setDefValue([item.productTypeSn1, item.productTypeSn2, item.productTypeSn3], item)
+                }
               }
             })
           })

+ 6 - 0
src/views/productManagement/productPricing/editModal.vue

@@ -151,6 +151,12 @@ export default {
         ],
         afterSpecialPrice: [
           { required: true, message: '请输入特约价', trigger: 'blur' }
+        ],
+        afterTerminalPrice: [
+          { required: true, message: '请输入终端价', trigger: 'blur' }
+        ],
+        afterCarOwnersPrice: [
+          { required: true, message: '请输入车主价', trigger: 'blur' }
         ]
       },
       detailData: null //  数据详情

+ 1 - 0
src/views/salesManagement/stockPrint/list.vue

@@ -504,6 +504,7 @@ export default {
         this.$refs.subarea.clearData()
       }
       this.$refs.table.refresh(true)
+      this.pageInit()
     },
     pageInit () {
       const _this = this