shish 1 год назад
Родитель
Сommit
9f2afc1a38

+ 325 - 175
hdApp/src/admin/item/add.vue

@@ -1,197 +1,175 @@
 <template>
-  <view class="app-content">
+  <div class="app-content">
     <!-- 花材基本信息 -->
     <form @submit="formSubmit">
-      <view class="module-com input-line-wrap">
+      <div class="module-com input-line-wrap">
 
         <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">花材名称</view>
+          <div class="tui-title">名称</div>
           <input v-model="form.name" placeholder-class="phcolor" class="tui-input" name="name" placeholder="请填写名称" @input="fillName($event)" maxlength="50" type="text" />
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">平台名称</view>
-          <view style="color:#CCCCCC;width:450upx;height:45upx;" @click.stop="notModify">{{form.name}}</view>
+          <div class="tui-title">初始名称</div>
+          <view style="color:#CCCCCC;width:450upx;height:45upx;" @click.stop="notModify">
+            {{form.name}}
+          </view>
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">拼音缩写</view>
-          <input
-            v-model="form.py"
-            placeholder-class="phcolor"
-            class="tui-input"
-            name="py"
-            placeholder="请填写拼音首字母缩写"
-            maxlength="50"
-            type="text"
-          />
+          <div class="tui-title">拼音缩写</div>
+          <input v-model="form.py" placeholder-class="phcolor" class="tui-input" name="py" placeholder="请填写拼音首字母缩写" maxlength="50" type="text" />
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">售价</view>
-          <input
-            v-model="form.price"
-            placeholder-class="phcolor"
-            class="tui-input"
-            name="price"
-            @focus="form.price=''"
-            placeholder="请填写售价"
-            maxlength="50"
-            type="digit"
-          />
+          <view class="tui-title">价格</view>
+          <input v-model="form.hjPrice" style="width:130upx;border:1upx solid #CCCCCC;text-align:center;height:50upx;" placeholder-class="phcolor" 
+          class="tui-input" name="hjPrice" @focus="form.hjPrice=''" placeholder="大客价" type="digit" />
+          <input v-model="form.price" style="width:130upx;border:1upx solid #3385FF;text-align:center;height:50upx;color:#3385FF;margin-left:30upx;" placeholder-class="phcolor" 
+          class="tui-input" name="price" @focus="form.price=''" placeholder="批发价" type="digit" @input="priceLinkage()" />
+          <input v-model="form.skPrice" style="width:130upx;border:1upx solid #CCCCCC;text-align:center;height:50upx;margin-left:30upx;" placeholder-class="phcolor" 
+          class="tui-input" name="skPrice" @focus="form.skPrice=''" placeholder="零售价" type="digit" />
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">今日特价</view>
-          <input
-            v-model="form.discountPrice"
-            placeholder-class="phcolor"
-            class="tui-input"
-            name="discountPrice"
-            @focus="form.discountPrice=''"
-            placeholder="不做特价填0"
-            maxlength="50"
-            type="digit"
-          />
+          <view class="tui-title">特价</view>
+          <input v-model="form.hjDiscountPrice" style="width:130upx;border:1upx solid #CCCCCC;text-align:center;height:50upx;" placeholder-class="phcolor" 
+          class="tui-input" name="hjDiscountPrice" @focus="form.hjDiscountPrice=''" placeholder="会员特价" type="digit" />
+          <input v-model="form.discountPrice" style="width:130upx;border:1upx solid #3385FF;margin-left:30upx;color:#3385FF;text-align:center;height:50upx;" placeholder-class="phcolor" @input="tjLinkage()"
+          class="tui-input" name="discountPrice" @focus="form.discountPrice=''" placeholder="无特价填0" maxlength="50" type="digit" />
+          <input v-model="form.skDiscountPrice" style="width:130upx;border:1upx solid #CCCCCC;text-align:center;height:50upx;margin-left:30upx;" placeholder-class="phcolor" 
+          class="tui-input" name="skDiscountPrice" @focus="form.skDiscountPrice=''" placeholder="零售特价" type="digit" />
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">库存</view>
+          <view class="tui-title">成本</view>
+          <input v-model="form.cost" style="width:340upx;" placeholder-class="phcolor" @focus="form.cost=''" class="tui-input" name="cost" placeholder="请输入" type="digit"/>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <div class="tui-title">库存</div>
           <input v-model="form.stock" style="width:340upx;" placeholder-class="phcolor" @focus="form.stock=''" @input="changeStock($event)" class="tui-input" name="stock" placeholder="请输入" type="digit"/>
-          <button v-if="productData.id > 0" class="admin-button-com blue small" @click="goStockDetail(productData.id)">库存明细</button>
         </tui-list-cell>
 
-        <tui-list-cell class="line-cell" :arrow="true">
-          <view class="tui-title">分类</view>
-          <picker
-            mode="selector"
-            :value="form.classId"
-            :range="itemClassData"
-            range-key="name"
-            @change="changeItemClassFn"
-            class="tui-input"
-          >
-            <input v-model="form.classId" name="classId" type="text" hidden />
-            <view v-if="form.classId" style="height:45upx;" >{{ itemClassSelectedData.name }}</view>
-            <view class="tui-placeholder" style="height:45upx;" v-else>请选择</view>
-          </picker>
+        <tui-list-cell class="line-cell" :hover="false" :arrow="true">
+          <div class="tui-title">分类</div>
+          <input v-model="form.classId" name="classId" type="text" hidden />
+          <view style="color:#CCCCCC;width:450upx;height:45upx;" @click.stop="changeClass()" v-if="form.classId == 0">
+            请选择分类
+          </view>
+          <view @click.stop="changeClass()" style="width:450upx;height:45upx;" v-else>
+            {{form.className}}
+          </view>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">所属产品</view>
+          <view>
+            <block v-if="form.cpInfo && !$util.isEmpty(form.cpInfo)">
+              <button v-for="(cpItem, cpIndex) in form.cpInfo" class="admin-button-com blue mini-btn" style="margin-right:8upx;" @click.stop="delOneCp(cpItem,cpIndex)">{{cpItem.cpName}} ×</button>
+            </block>
+            <button class="admin-button-com default mini-btn" @click.stop="changeCp()">添加产品</button>
+          </view>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <div class="tui-title">比例类型</div>
+          <radio-group class="tui-input" @change="ratioTypeChange">
+            <label class="list" for="fixedLink">
+              <radio id="fixedLink" value="0" :checked="form.ratioType == 0" style="transform: scale(0.7,0.7);" />
+              <span class="checkbox-text" style="font-size:30upx;">固定</span>
+            </label>
+            <label class="list" for="dimLink">
+              <radio id="dimLink" value="1" :checked="form.ratioType == 1" style="transform: scale(0.7,0.7);" />
+              <span class="checkbox-text" style="font-size:30upx;">模糊(若干)</span>
+            </label>
+          </radio-group>
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :arrow="true">
-          <view class="tui-title">大单位</view>
-          <picker
-            mode="selector"
-            :value="form.bigUnitId"
-            :range="unitData"
-            range-key="name"
-            @change="changeBigUnitFn"
-            class="tui-input"
-          >
+          <div class="tui-title">大单位</div>
+          <picker mode="selector" :value="form.bigUnitId" :range="unitData" range-key="name" @change="changeBigUnitFn" class="tui-input" >
             <input v-model="form.bigUnitId" name="bigUnitId" type="text" hidden />
-            <view v-if="form.bigUnitId">{{ bigUnitSelectedData.name }}</view>
-            <view class="tui-placeholder" style="height:45upx;" v-else>请选择</view>
+            <div v-if="form.bigUnitId">{{ bigUnitSelectedData.name }}</div>
+            <div class="tui-placeholder" style="height:45upx;" v-else>请选择</div>
           </picker>
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :arrow="true">
-          <view class="tui-title">小单位</view>
-          <picker
-            mode="selector"
-            :value="form.smallUnitId"
-            :range="unitData"
-            range-key="name"
-            @change="changeSmallUnitFn"
-            class="tui-input"
-          >
+          <div class="tui-title">小单位</div>
+          <picker mode="selector" :value="form.smallUnitId" :range="unitData" range-key="name" @change="changeSmallUnitFn" class="tui-input" >
             <input v-model="form.smallUnitId" name="smallUnitId" type="text" hidden />
-            <view v-if="form.smallUnitId">{{ smallUnitSelectedData.name }}</view>
-            <view class="tui-placeholder" v-else>请选择</view>
+            <div v-if="form.smallUnitId">{{ smallUnitSelectedData.name }}</div>
+            <div class="tui-placeholder" v-else>请选择</div>
           </picker>
         </tui-list-cell>
 
-        <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">加价</view>
-          <input
-            v-model="form.skAddPrice"
-            placeholder-class="phcolor"
-            class="tui-input"
-            name="skAddPrice"
-            @focus="form.skAddPrice=''"
-            placeholder="请填写加价"
-            maxlength="50"
-            type="digit"
-          />
-        </tui-list-cell>
-
-        <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">单位比</view>
-          <input
-            v-model="form.ratio"
-            placeholder-class="phcolor"
-            class="tui-input"
-            name="ratio"
-            placeholder="如:1扎=20支,请填写20"
-            maxlength="50"
-            type="number"
-          />
+        <tui-list-cell class="line-cell" :hover="false" v-if="form.ratioType == 0">
+          <div class="tui-title">单位比</div>
+          <input v-model="form.ratio" placeholder-class="phcolor" class="tui-input" name="ratio" placeholder="1扎=20支,请填写20" maxlength="50" type="number" />
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">每扎重量</view>
-          <input
-            v-model="form.weight"
-            placeholder-class="phcolor"
-            class="tui-input"
-            name="weight"
-            placeholder="单位:公斤"
-            maxlength="50"
-            type="digit"
-          />
+          <div class="tui-title">每扎重量</div>
+          <input v-model="form.weight" placeholder-class="phcolor" class="tui-input" name="weight" placeholder="单位为公斤,参考红玫每扎1.2公斤" maxlength="50" type="digit" />
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">库存预警值</view>
-          <input
-            v-model="form.stockWarning"
-            placeholder-class="phcolor"
-            class="tui-input"
-            name="stockWarning"
-            placeholder="请填写"
-            maxlength="50"
-            type="number"
-          />
+          <div class="tui-title">库存预警</div>
+          <input v-model="form.stockWarning" placeholder-class="phcolor" class="tui-input" name="stockWarning" placeholder="请填写" maxlength="50" type="number" />
         </tui-list-cell>
 
         <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">上架状态</view>
-          <view class="switch_bx">
-            <switch :checked="form.status == 2 ? false : true" @change="statusChange" style="transform: scale(0.8,0.8)" />
+          <div class="tui-title">花材状态</div>
+          <div class="switch_bx">
             <text v-if="form.status == 1">上架</text>
             <text v-else>下架</text>
-          </view>
+          </div>
         </tui-list-cell>
 
-        <tui-list-cell class="line-cell" :hover="false">
-          <view class="tui-title">状态</view>
-          <view class="switch_bx">
-            <switch :checked="form.delStatus == 0 ? true : false" @change="delStatusChange" style="transform: scale(0.8,0.8)" />
-            <text v-if="form.delStatus == 0">启用</text>
-            <text v-else>停用</text>
-          </view>
-        </tui-list-cell>
+      </div>
 
-      </view>
-
-      <view class="module-com input-line-wrap goods-wrap">
-        <view class="module-tit">
+      <div class="module-com input-line-wrap goods-wrap">
+        <div class="module-tit">
           <span>花材图片</span>
-          <span class="app-color-3">(建议比例 600X600)</span>
-        </view>
+          <span class="app-color-3"></span>
+        </div>
         <view class="module-det">
           <htz-image-upload :max="1" :compress="true" v-model="currentImgData" :headers="headers"
            @uploadSuccess="imgUploadSuccess" @imgDelete="imgDeleteFn" :action="getLoginInfo.imgUploadApi">
           </htz-image-upload>
         </view>
+      </div>
+
+      <view class="module-com input-line-wrap">
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">大客价加价</view>
+          <input v-model="form.hjAddPrice" placeholder-class="phcolor" class="tui-input" name="hjAddPrice" placeholder="在成本价基础上多卖的金额" maxlength="50" type="digit" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <div class="tui-title">批发价加价</div>
+          <input v-model="form.addPrice" placeholder-class="phcolor" class="tui-input" name="addPrice" @focus="form.addPrice=''" placeholder="在成本价基础上多卖的金额" maxlength="50" type="digit" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">零售价加价</view>
+          <input v-model="form.skMore" placeholder-class="phcolor" class="tui-input" name="skMore" @focus="form.skMore=''" placeholder="在成本价基础上多卖的金额" maxlength="50" type="digit" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">顺序值</view>
+          <input v-model="form.inTurn" placeholder-class="phcolor" class="tui-input" name="inTurn" @focus="form.inTurn=''" placeholder="请填写数字" type="number" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">拆散单价</view>
+          <input v-model="form.smallRatio" @focus="form.smallRatio=''" placeholder-class="phcolor" class="tui-input" name="smallRatio" placeholder="请填写" maxlength="50" 
+          type="number" style="width:160upx;border:1upx solid #cccccc;text-align:center;" />
+          <text style="margin-left:12upx;" v-if="Number(form.ratio)>0">X ¥{{parseFloat((Number(form.price)/Number(form.ratio)).toFixed(2))}} = ¥{{parseFloat((Number(form.smallRatio)*((Number(form.price)/Number(form.ratio)).toFixed(2))).toFixed(2))}}</text>
+        </tui-list-cell>
+
       </view>
 
       <view class="app-footer">
@@ -201,7 +179,18 @@
       </view>
 
     </form>
-  </view>
+
+    <uni-popup ref="classRef" background-color="#fff" type="center" :animation="false" class="class-popup-style">
+      <view style="margin-left:30upx;margin-top:19upx;font-size:27upx;font-weight:bold;">请选择分类:</view>
+        <view style="display:flex;padding:20upx;height:auto;justify-content: space-between;align-items:center;flex-wrap:wrap;max-height:100vh;overflow:auto;">
+          <view v-for="(item, index) in itemClassData" :key="index" @tap.stop="setThisClass(item)" style="margin-bottom:20upx;margin-left:3upx;">
+          <image :src="item.cover" style="width:120upx;height:120upx;border-radius:10upx;"></image>
+          <view style="margin-top:5upx;overflow: hidden;white-space: nowrap;width:120upx;text-align:center;">{{item.name}}</view>
+        </view>
+      </view>
+    </uni-popup>
+
+  </div>
 </template>
 
 <script>
@@ -228,20 +217,31 @@ export default {
         id:0,
         name:"",
         py:"",
-        stock:'',
+        stock:0,
         ratio:'',
         bigUnitId:1,
         smallUnitId:2,
         classId:'',
+        className:'',
         price:'',
-        skAddPrice:'',
-        discountPrice:'',
+        skPrice:'',
+        hjPrice:'',
+        skMore:6,
+        addPrice:3,
+        hjAddPrice:2,
+        hjDiscountPrice:0,
+        discountPrice:0,
+        skDiscountPrice:0,
+        cost:0,
         weight:1.5,
         cover:[],
-        stockWarning:'',
+        stockWarning:5,
         status:2,
-        delStatus:0,
         itemId:0,
+        smallRatio:1,
+        ratioType:0,
+        inTurn:100,
+        cpInfo:[]
       },
       itemClassSelectedData:{},
       itemClassData:[],
@@ -250,12 +250,31 @@ export default {
       bigUnitSelectedData:{},
       hasRequest:0,
       productData:{id:0},
-      headers:{token:''}
+      headers:{token:''},
+      backCpInfo:{cpId:0,cpName:'',needUpdate:0}
     };
   },
 	computed:{
-		...mapGetters(["getLoginInfo","getDictionariesInfo"]),
+		...mapGetters(["getLoginInfo","getDictionariesInfo"])
 	},
+  onShow(){
+    let that = this
+    if(this.backCpInfo.needUpdate == 1){
+      let needAdd = 1;
+      if (!this.$util.isEmpty(this.form.cpInfo)) {
+        that.form.cpInfo.forEach((item) => {
+          if(item.cpId == that.backCpInfo.cpId){
+            needAdd = 0
+          }
+        })
+      }
+      if(needAdd == 1){
+        that.form.cpInfo.push({cpId:that.backCpInfo.cpId,cpName:that.backCpInfo.cpName})
+        that.backCpInfo.needUpdate = 0
+        that.$forceUpdate()
+      }
+    }
+  },
   onLoad(option) {
     if(option.id){
       this.form.id = this.option.id
@@ -263,20 +282,104 @@ export default {
     const token = uni.getStorageSync('token')
     this.headers.token = token
   },
-  watch:{
-  },
   methods: {
+    delOneCp(info,index){
+      let that = this
+      that.$util.confirmModal({content:'确认删除'+info.cpName+'?'},() => {
+        that.form.cpInfo.splice(index,1)
+        that.$forceUpdate()
+      })
+    },
+    changeCp(item){
+      this.$util.pageTo({url: '/admin/cp/list?skip=1'})
+    },
+    changeClass(item){
+      this.$refs.classRef.open('center')
+    },
+    setThisClass(info){
+      this.$refs.classRef.close()
+      this.form.classId = info.id ? info.id : 0
+      this.form.className = info.name ? info.name : ''
+      this.$forceUpdate()
+    },
+    tjLinkage(){
+      if(this.form.discountPrice && Number(this.form.discountPrice)>0){
+				let skMore = this.form.skMore ? Number(this.form.skMore) : 0
+				let hjAddPrice = this.form.hjAddPrice ? Number(this.form.hjAddPrice) : 0
+				let addPrice = this.form.addPrice ? Number(this.form.addPrice) : 0
+
+				let skAddNum = Number(skMore) - Number(addPrice)
+				skAddNum = skAddNum.toFixed(2)
+				let skAmount = Number(skAddNum) + Number(this.form.discountPrice)
+				if(skAmount>0){
+					skAmount = skAmount.toFixed(2)
+					skAmount = parseFloat(skAmount)
+					this.form.skDiscountPrice = skAmount
+				}else{
+					this.form.skDiscountPrice = 0.01
+				}
+
+				let hjSubNum = Number(addPrice) - Number(hjAddPrice)
+				hjSubNum = hjSubNum.toFixed(2)
+				let hjAmount = Number(this.form.discountPrice) - Number(hjSubNum)
+				if(hjAmount > 0){
+					hjAmount = hjAmount.toFixed(2)
+					hjAmount = parseFloat(hjAmount)
+					this.form.hjDiscountPrice = hjAmount
+				}else{
+					this.form.hjDiscountPrice = 0.01
+				}
+      }else{
+        this.form.skDiscountPrice = 0
+        this.form.hjDiscountPrice = 0
+      }
+    },
+		priceLinkage(){
+			if(this.form.price && Number(this.form.price)>0){
+				let skMore = this.form.skMore ? Number(this.form.skMore) : 0
+				let hjAddPrice = this.form.hjAddPrice ? Number(this.form.hjAddPrice) : 0
+				let addPrice = this.form.addPrice ? Number(this.form.addPrice) : 0
+
+				let skAddNum = Number(skMore) - Number(addPrice)
+				skAddNum = skAddNum.toFixed(2)
+				let skAmount = Number(skAddNum) + Number(this.form.price)
+				if(skAmount>0){
+					skAmount = skAmount.toFixed(2)
+					skAmount = parseFloat(skAmount)
+					this.form.skPrice = skAmount
+				}else{
+					this.form.skPrice = ''
+				}
+
+				let hjSubNum = Number(addPrice) - Number(hjAddPrice)
+				hjSubNum = hjSubNum.toFixed(2)
+				let hjAmount = Number(this.form.price) - Number(hjSubNum)
+				if(hjAmount > 0){
+					hjAmount = hjAmount.toFixed(2)
+					hjAmount = parseFloat(hjAmount)
+					this.form.hjPrice = hjAmount
+				}else{
+					this.form.hjPrice = ''	
+				}
+			}else{
+				this.form.skPrice = ''
+				this.form.hjPrice = ''
+        this.form.discountPrice = 0
+        this.form.skDiscountPrice = 0
+        this.form.hjDiscountPrice = 0
+			}
+		},
     notModify(){
       this.$msg('不可修改')
     },
-    goStockDetail(id){
-				this.$util.pageTo({url: "/pagesStorehouse/stockWarn/detailed?id="+id})
+    goStockDetail(item){
+				this.$util.pageTo({url: "/pagesStorehouse/stockWarn/detailed?id="+item.id+'&name='+item.name})
 		},
     statusChange(e){
       this.form.status = e.detail.value ? 1 : 2;
     },
-    delStatusChange(e){
-      this.form.delStatus = e.detail.value ? 0 : 1;
+    ratioTypeChange(e){
+      this.form.ratioType = e.detail.value
     },
     //如果库存被修改则花材状态变化
     changeStock(event){
@@ -333,11 +436,13 @@ export default {
         this.form.itemId = ptItemId
         this.form.classId = ''
         this.form.status = 1
-        this.form.delStatus = 0
         this.form.id = 0
         this.form.price = ''
-        this.form.skAddPrice =''
-        this.form.discountPrice = ''
+        this.form.skMore = 6
+        this.form.addPrice = 3
+        this.form.hjAddPrice = 3
+        this.form.discountPrice = 0
+        this.form.cost = 0
       })
     },
     getDetail() {
@@ -429,28 +534,48 @@ export default {
         requestHost = updateProduct;
       }else{
 				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.stock) == false){
-					uni.showToast({title:"请填写库存,没有请填0",icon:"none"})
+					uni.showToast({title:"请填写库存,没库存填0",icon:"none"})
 					return;
 				}
 				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.discountPrice) == false){
-					uni.showToast({title:"请填写特价,没有特价请填0",icon:"none"})
+					uni.showToast({title:"请填写特价,没特价填0",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.cost) == false){
+					uni.showToast({title:"请填写成本",icon:"none"})
 					return;
 				}
 				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.price) == false){
-					uni.showToast({title:"请填写售价",icon:"none"})
+					uni.showToast({title:"请填写批发价",icon:"none"})
 					return;
 				}
-				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.skAddPrice) == false){
-					uni.showToast({title:"请填写加价",icon:"none"})
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.skPrice) == false){
+					uni.showToast({title:"请填写零售价",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.hjPrice) == false){
+					uni.showToast({title:"请填写大客价",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.addPrice) == false){
+					uni.showToast({title:"请填写批发价加价",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.skMore) == false){
+					uni.showToast({title:"请填写零售价加价",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.hjAddPrice) == false){
+					uni.showToast({title:"请填写大客价加价",icon:"none"})
 					return;
 				}
       }
       let form = JSON.parse(JSON.stringify(this.form))
       uni.showLoading({mask:true})
-      requestHost({...form,cover:this.form.cover[0]}).then(res => {
+      requestHost({...form,cover:this.form.cover[0],appVersion:1}).then(res => {
         uni.hideLoading()
         if(res.code == 1){
-          this.$msg("操作成功!")
+          this.$msg("操作成功!");
 
           //返回上一页带参数
           let pages = getCurrentPages();
@@ -463,9 +588,11 @@ export default {
 
           uni.navigateBack({})
         }
-      })
+      });
     },
+    // 表单验证
     formSubmit(e) {
+      // 表单规则
       let rules = [
         {
           name: "name",
@@ -492,24 +619,44 @@ export default {
           msg: ["请选择小单位"]
         },
         {
-          name: "ratio",
+          name: "price",
           rule: ["required"],
-          msg: ["请填写单位比"]
+          msg: ["请填写批发价"]
         },
         {
-          name: "price",
+          name: "skPrice",
           rule: ["required"],
-          msg: ["请填写售价"]
+          msg: ["请填写售价"]
         },
         {
-          name: "skAddPrice",
+          name: "hjPrice",
           rule: ["required"],
-          msg: ["请填写加价"]
+          msg: ["请填写大客价"]
+        },
+        {
+          name: "skMore",
+          rule: ["required"],
+          msg: ["请填写零售价加价"]
+        },
+        {
+          name: "addPrice",
+          rule: ["required"],
+          msg: ["请填写批发价加价"]
+        },
+        {
+          name: "hjAddPrice",
+          rule: ["required"],
+          msg: ["请填写大客价加价"]
         },
         {
           name: "discountPrice",
           rule: ["required"],
-          msg: ["不做特价请填0"]
+          msg: ["没特价请填0"]
+        },
+        {
+          name: "cost",
+          rule: ["required"],
+          msg: ["请填写成本"]
         },
         {
           name: "weight",
@@ -524,15 +671,17 @@ export default {
         {
           name: "stockWarning",
           rule: ["required"],
-          msg: ["请填写库存预警"]
+          msg: ["请填写库存预警"]
         }
       ];
-      let formData = e.detail.value
-      let checkRes = form.validation(formData, rules)
+      // 进行表单检查
+      let formData = e.detail.value;
+      let checkRes = form.validation(formData, rules);
+      // 验证通过!
       if (!checkRes) {
           this.confirmFn()
       } else {
-        this.$msg(checkRes)
+        this.$msg(checkRes);
       }
     }
   }
@@ -543,6 +692,7 @@ export default {
   min-height: calc(100vh - 100upx);
   padding-bottom: 150upx;
 }
+// 公共模块
 .module-com {
   margin-bottom: 20upx;
   background-color: #fff;
@@ -581,4 +731,4 @@ export default {
     width: 46%;
   }
 }
-</style>
+</style>

+ 732 - 0
hdApp/src/admin/item/copy.vue

@@ -0,0 +1,732 @@
+<template>
+  <view class="app-content">
+    <form @submit="formSubmit">
+      <view class="module-com input-line-wrap">
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">名称</view>
+          <input v-model="form.name" placeholder-class="phcolor" class="tui-input" name="name" placeholder="请填写名称" @input="fillName($event)" maxlength="50" type="text" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">初始名称</view>
+          <view style="color:#CCCCCC;width:450upx;height:45upx;" @click.stop="notModify">
+            {{form.name}}
+          </view>
+          
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">拼音缩写</view>
+          <input v-model="form.py" placeholder-class="phcolor" class="tui-input" name="py" placeholder="请填写拼音首字母缩写" maxlength="50" type="text" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">价格</view>
+          <input v-model="form.hjPrice" style="width:130upx;border:1upx solid #CCCCCC;text-align:center;height:50upx;" placeholder-class="phcolor" 
+          class="tui-input" name="hjPrice" @focus="form.hjPrice=''" placeholder="大客价" type="digit" />
+          <input v-model="form.price" style="width:130upx;border:1upx solid #3385FF;text-align:center;height:50upx;color:#3385FF;margin-left:30upx;" placeholder-class="phcolor" 
+          class="tui-input" name="price" @focus="form.price=''" placeholder="批发价" type="digit" @input="priceLinkage()" />
+          <input v-model="form.skPrice" style="width:130upx;border:1upx solid #CCCCCC;text-align:center;height:50upx;margin-left:30upx;" placeholder-class="phcolor" 
+          class="tui-input" name="skPrice" @focus="form.skPrice=''" placeholder="零售价" type="digit" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">特价</view>
+          <input v-model="form.hjDiscountPrice" style="width:130upx;border:1upx solid #CCCCCC;text-align:center;height:50upx;" placeholder-class="phcolor" 
+          class="tui-input" name="hjDiscountPrice" @focus="form.hjDiscountPrice=''" placeholder="会员特价" type="digit" />
+          <input v-model="form.discountPrice" style="width:130upx;border:1upx solid #3385FF;margin-left:30upx;color:#3385FF;text-align:center;height:50upx;" placeholder-class="phcolor" @input="tjLinkage()"
+          class="tui-input" name="discountPrice" @focus="form.discountPrice=''" placeholder="无特价填0" maxlength="50" type="digit" />
+          <input v-model="form.skDiscountPrice" style="width:130upx;border:1upx solid #CCCCCC;text-align:center;height:50upx;margin-left:30upx;" placeholder-class="phcolor" 
+          class="tui-input" name="skDiscountPrice" @focus="form.skDiscountPrice=''" placeholder="零售特价" type="digit" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+        <view class="tui-title">成本</view>
+        <input v-model="form.cost" style="width:260upx;" placeholder-class="phcolor" @focus="form.cost=''" class="tui-input" name="cost" placeholder="请输入" type="digit"/>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">库存</view>
+          <input v-model="form.stock" style="width:260upx;" placeholder-class="phcolor" @focus="form.stock=''" @input="changeStock($event)" class="tui-input" name="stock" placeholder="请输入" type="digit"/>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :arrow="true">
+          <view class="tui-title">分类</view>
+          <input v-model="form.classId" name="classId" type="text" hidden />
+          <view style="color:#CCCCCC;width:450upx;height:45upx;" @click.stop="changeClass()" v-if="form.classId == 0">
+            请选择分类
+          </view>
+          <view @click.stop="changeClass()" style="width:450upx;height:45upx;" v-else>
+            {{form.className}}
+          </view>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">所属产品</view>
+          <view>
+            <block v-if="form.cpInfo && !$util.isEmpty(form.cpInfo)">
+              <button v-for="(cpItem, cpIndex) in form.cpInfo" class="admin-button-com blue mini-btn" style="margin-right:8upx;" @click.stop="delOneCp(cpItem,cpIndex)">{{cpItem.cpName}} ×</button>
+            </block>
+            <button class="admin-button-com default mini-btn" @click.stop="changeCp()">添加产品</button>
+          </view>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <div class="tui-title">比例类型</div>
+          <radio-group class="tui-input flex-center-between" @change="ratioTypeChange">
+            <label class="list" for="fixedLink">
+              <radio id="fixedLink" value="0" :checked="form.ratioType == 0" style="transform: scale(0.7,0.7);" />
+              <span class="checkbox-text" style="font-size:30upx;">固定</span>
+            </label>
+            <label class="list" for="dimLink">
+              <radio id="dimLink" value="1" :checked="form.ratioType == 1" style="transform: scale(0.7,0.7);" />
+              <span class="checkbox-text" style="font-size:30upx;">模糊(若干)</span>
+            </label>
+          </radio-group>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :arrow="true">
+          <div class="tui-title">大单位</div>
+          <picker mode="selector" :value="form.bigUnitId" :range="unitData" range-key="name" @change="changeBigUnitFn" class="tui-input">
+            <input v-model="form.bigUnitId" name="bigUnitId" type="text" hidden />
+            <div v-if="form.bigUnitId">{{ bigUnitSelectedData.name }}</div>
+            <div class="tui-placeholder" style="height:45upx;" v-else>请选择</div>
+          </picker>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :arrow="true">
+          <div class="tui-title">小单位</div>
+          <picker mode="selector" :value="form.smallUnitId" :range="unitData" range-key="name" @change="changeSmallUnitFn" class="tui-input">
+            <input v-model="form.smallUnitId" name="smallUnitId" type="text" hidden />
+            <div v-if="form.smallUnitId">{{ smallUnitSelectedData.name }}</div>
+            <div class="tui-placeholder" v-else>请选择</div>
+          </picker>
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false" v-if="form.ratioType == 0">
+          <view class="tui-title">单位比</view>
+          <input v-model="form.ratio" placeholder-class="phcolor" class="tui-input" name="ratio" @focus="form.ratio=''" placeholder="1扎=20支,请填写20" maxlength="50" type="number" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">每扎重量</view>
+          <input v-model="form.weight" placeholder-class="phcolor" class="tui-input" name="weight" @focus="form.weight=''" placeholder="单位为公斤,参考红玫每扎1.2公斤" maxlength="50" type="digit" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">库存预警</view>
+          <input v-model="form.stockWarning" @focus="form.stockWarning=''" placeholder-class="phcolor" class="tui-input" name="stockWarning" placeholder="请填写" maxlength="50" type="number" />
+        </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">花材状态</view>
+          <view class="switch_bx">
+            <text v-if="form.status == 1">上架</text>
+            <text v-else>下架</text>
+          </view>
+        </tui-list-cell>
+
+      </view>
+
+      <view class="module-com input-line-wrap goods-wrap">
+        <view class="module-tit">
+          <span>花材图片</span>
+          <span class="app-color-3"></span>
+        </view>
+        <view class="module-det">
+          <htz-image-upload :max="1" :compress="true" v-model="currentImgData" :headers="headers"
+           @uploadSuccess="imgUploadSuccess" @imgDelete="imgDeleteFn" :action="getLoginInfo.imgUploadApi">
+          </htz-image-upload>
+        </view>
+      </view>
+
+      <view class="module-com input-line-wrap">
+
+        <tui-list-cell class="line-cell" :hover="false">
+            <view class="tui-title">大客价加价</view>
+            <input v-model="form.hjAddPrice" placeholder-class="phcolor" class="tui-input" name="hjAddPrice" @focus="form.hjAddPrice=''" placeholder="在成本价基础上多卖的金额" maxlength="50" type="digit" />
+          </tui-list-cell>
+
+          <tui-list-cell class="line-cell" :hover="false">
+            <view class="tui-title">批发价加价</view>
+            <input v-model="form.addPrice" placeholder-class="phcolor" class="tui-input" name="addPrice" @focus="form.addPrice=''" placeholder="在成本价基础上多卖的金额" maxlength="50" type="digit" />
+          </tui-list-cell>
+
+          <tui-list-cell class="line-cell" :hover="false">
+            <view class="tui-title">零售价加价</view>
+            <input v-model="form.skMore" placeholder-class="phcolor" class="tui-input" name="skMore" @focus="form.skMore=''" placeholder="在成本价基础上多卖的金额" type="digit" />
+          </tui-list-cell>
+
+          <tui-list-cell class="line-cell" :hover="false">
+            <view class="tui-title">顺序值</view>
+            <input v-model="form.inTurn" placeholder-class="phcolor" class="tui-input" name="inTurn" @focus="form.inTurn=''" placeholder="请填写数字" type="number" />
+          </tui-list-cell>
+
+        <tui-list-cell class="line-cell" :hover="false">
+          <view class="tui-title">拆散单价</view>
+          <input v-model="form.smallRatio" @focus="form.smallRatio=''" placeholder-class="phcolor" class="tui-input" name="smallRatio" placeholder="请填写" maxlength="50" 
+          type="number" style="width:160upx;border:1upx solid #cccccc;text-align:center;" />
+          <text style="margin-left:12upx;" v-if="Number(form.ratio)>0">X ¥{{parseFloat((Number(form.price)/Number(form.ratio)).toFixed(2))}} = ¥{{parseFloat((Number(form.smallRatio)*((Number(form.price)/Number(form.ratio)).toFixed(2))).toFixed(2))}}</text>
+        </tui-list-cell>
+
+      </view>
+
+      <view class="app-footer">
+        <button class="admin-button-com big default" @click="goBack()">取消</button>
+        <button v-if="option.ptItemId" class="admin-button-com big blue" formType="submit" @click="status = 1">添加</button>
+        <button v-else class="admin-button-com big blue" formType="submit" @click="status = 1">确认</button>
+      </view>
+
+    </form>
+
+    <uni-popup ref="classRef" background-color="#fff" type="center" :animation="false" class="class-popup-style">
+      <view style="margin-left:30upx;margin-top:19upx;font-size:27upx;font-weight:bold;">请选择分类:</view>
+        <view style="display:flex;padding:20upx;height:auto;justify-content: space-between;align-items:center;flex-wrap:wrap;max-height:100vh;overflow:auto;">
+          <view v-for="(item, index) in itemClassData" :key="index" @tap.stop="setThisClass(item)" style="margin-bottom:20upx;margin-left:3upx;">
+          <image :src="item.cover" style="width:120upx;height:120upx;border-radius:10upx;"></image>
+          <view style="margin-top:5upx;overflow: hidden;white-space: nowrap;width:120upx;text-align:center;">{{item.name}}</view>
+        </view>
+      </view>
+    </uni-popup>
+
+  </view>
+</template>
+
+<script>
+import TuiListCell from "@/components/plugin/list-cell";
+const form = require("@/utils/formValidation.js");
+import { getAllItemClass } from "@/api/item-class";
+import { getAllUnit } from "@/api/unit";
+import { addProduct,cloneProduct,getProductDetail,py } from "@/api/product";
+import { getPtItemDetail } from "@/api/pt-item";
+import { mapGetters } from "vuex"
+//图片上传插件来源:https://ext.dcloud.net.cn/plugin?id=2922 已改造,不能再升级 shish 20211228
+import htzImageUpload from '@/components/htz-image-upload/htz-image-upload.vue'
+export default {
+  name: "item-detail",
+  components: {
+    TuiListCell,
+    htzImageUpload
+  },
+  data() {
+    return {
+      status: 1,
+      currentImgData: [],
+      form: {
+        id:0,
+        name:"",
+        py:"",
+        stock:0,
+        ratio:'',
+        bigUnitId:1,
+        smallUnitId:2,
+        classId:'',
+        className:'',
+        price:'',
+        skPrice:'',
+        hjPrice:'',
+        skMore:6,
+        inTurn:100,
+        addPrice:3,
+        hjAddPrice:2,
+        discountPrice:0,
+        skDiscountPrice:0,
+        hjDiscountPrice:0,
+        cost:0,
+        weight:'',
+        cover:[],
+        stockWarning:5,
+        status:2,
+        itemId:0,
+        smallRatio:1,
+        ratioType:0,
+        cpInfo:[]
+      },
+      itemClassData:[],
+      unitData:[],
+      smallUnitSelectedData:{},
+      bigUnitSelectedData:{},
+      hasRequest:0,
+      productData:{id:0},
+      headers:{token:''},
+      backCpInfo:{cpId:0,cpName:'',needUpdate:0}
+    };
+  },
+	computed:{
+		...mapGetters(["getLoginInfo","getDictionariesInfo"])
+	},
+  onLoad(option) {
+    if(option.id){
+      this.form.id = this.option.id
+    }
+    const token = uni.getStorageSync('token')
+    this.headers.token = token
+  },
+  onShow(){
+    let that = this
+    if(this.backCpInfo.needUpdate == 1){
+      let needAdd = 1;
+      if (!this.$util.isEmpty(this.form.cpInfo)) {
+        that.form.cpInfo.forEach((item) => {
+          if(item.cpId == that.backCpInfo.cpId){
+            needAdd = 0
+          }
+        })
+      }
+      if(needAdd == 1){
+        that.form.cpInfo.push({cpId:that.backCpInfo.cpId,cpName:that.backCpInfo.cpName})
+        that.backCpInfo.needUpdate = 0
+        that.$forceUpdate()
+      }
+    }
+  },
+  methods: {
+    delOneCp(info,index){
+      let that = this
+      that.$util.confirmModal({content:'确认删除'+info.cpName+'?'},() => {
+        that.form.cpInfo.splice(index,1)
+        that.$forceUpdate()
+      })
+    },
+    changeCp(item){
+      this.$util.pageTo({url: '/admin/cp/list?skip=1'})
+    },
+    changeClass(item){
+      this.$refs.classRef.open('center')
+    },
+    setThisClass(info){
+      this.$refs.classRef.close()
+      this.form.classId = info.id ? info.id : 0
+      this.form.className = info.name ? info.name : ''
+      this.$forceUpdate()
+    },
+    tjLinkage(){
+      if(this.form.discountPrice && Number(this.form.discountPrice)>0){
+				let skMore = this.form.skMore ? Number(this.form.skMore) : 0
+				let hjAddPrice = this.form.hjAddPrice ? Number(this.form.hjAddPrice) : 0
+				let addPrice = this.form.addPrice ? Number(this.form.addPrice) : 0
+
+				let skAddNum = Number(skMore) - Number(addPrice)
+				skAddNum = skAddNum.toFixed(2)
+				let skAmount = Number(skAddNum) + Number(this.form.discountPrice)
+				if(skAmount>0){
+					skAmount = skAmount.toFixed(2)
+					skAmount = parseFloat(skAmount)
+					this.form.skDiscountPrice = skAmount
+				}else{
+					this.form.skDiscountPrice = 0.01
+				}
+
+				let hjSubNum = Number(addPrice) - Number(hjAddPrice)
+				hjSubNum = hjSubNum.toFixed(2)
+				let hjAmount = Number(this.form.discountPrice) - Number(hjSubNum)
+				if(hjAmount > 0){
+					hjAmount = hjAmount.toFixed(2)
+					hjAmount = parseFloat(hjAmount)
+					this.form.hjDiscountPrice = hjAmount
+				}else{
+					this.form.hjDiscountPrice = 0.01
+				}
+      }else{
+        this.form.skDiscountPrice = 0
+        this.form.hjDiscountPrice = 0
+      }
+    },
+		priceLinkage(){
+			if(this.form.price && Number(this.form.price)>0){
+				let skMore = this.form.skMore ? Number(this.form.skMore) : 0
+				let hjAddPrice = this.form.hjAddPrice ? Number(this.form.hjAddPrice) : 0
+				let addPrice = this.form.addPrice ? Number(this.form.addPrice) : 0
+
+				let skAddNum = Number(skMore) - Number(addPrice)
+				skAddNum = skAddNum.toFixed(2)
+				let skAmount = Number(skAddNum) + Number(this.form.price)
+				if(skAmount>0){
+					skAmount = skAmount.toFixed(2)
+					skAmount = parseFloat(skAmount)
+					this.form.skPrice = skAmount
+				}else{
+					this.form.skPrice = ''
+				}
+
+				let hjSubNum = Number(addPrice) - Number(hjAddPrice)
+				hjSubNum = hjSubNum.toFixed(2)
+				let hjAmount = Number(this.form.price) - Number(hjSubNum)
+				if(hjAmount > 0){
+					hjAmount = hjAmount.toFixed(2)
+					hjAmount = parseFloat(hjAmount)
+					this.form.hjPrice = hjAmount
+				}else{
+					this.form.hjPrice = ''	
+				}
+			}else{
+				this.form.skPrice = ''
+				this.form.hjPrice = ''
+        this.form.discountPrice = 0
+        this.form.skDiscountPrice = 0
+        this.form.hjDiscountPrice = 0
+			}
+		},
+    notModify(){
+      this.$msg('不可修改')
+    },
+    goStockDetail(item){
+				this.$util.pageTo({url: "/pagesStorehouse/stockWarn/detailed?id="+item.id+'&name='+item.name})
+		},
+    statusChange(e){
+      this.form.status = e.detail.value ? 1 : 2;
+    },
+    ratioTypeChange(e){
+      this.form.ratioType = e.detail.value
+    },
+    //如果库存被修改则花材状态变化
+    changeStock(event){
+      let num = Number(event.target.value)
+      if(num > 0){
+        this.form.status = 1
+      }else{
+        this.form.status = 2
+      }
+    },
+    //获取拼音首字母 shish 20210707
+    fillName(event){
+      let val = event.target.value
+      py({
+        name:val
+      }).then(res => {
+        if(res.data.py){
+          this.form.py = res.data.py
+        }
+      });
+    },
+    goBack(){
+      uni.navigateBack({ delta: 1 })
+    },
+    changeBigUnitFn(e){
+      this.bigUnitSelectedData = this.unitData[e.detail.value];
+      this.form.bigUnitId = this.bigUnitSelectedData.id;
+    },
+    changeSmallUnitFn(e){
+      this.smallUnitSelectedData = this.unitData[e.detail.value];
+      this.form.smallUnitId = this.smallUnitSelectedData.id;
+    },
+    getPtItemInfo(ptItemId){
+      getPtItemDetail({id:ptItemId}).then(res=>{
+
+        if (this.$util.isEmpty(res.data)) {
+          return;
+        }
+        Object.keys(this.form).forEach((i, index) => {
+          this.form[i] = res.data[i];
+        });
+
+        this.currentImgData.push(res.data.cover)
+        this.form.cover = [res.data.shortCover]
+
+        this.form.stock = ''
+        this.form.itemId = ptItemId
+        this.form.classId = ''
+        this.form.status = 1
+        this.form.id = 0
+        this.form.price = ''
+        this.form.skPrice = ''
+        this.form.hjPrice = ''
+        this.form.skMore = 6
+        this.form.addPrice = 3
+        this.form.hjAddPrice = 3
+        this.form.discountPrice = 0
+        this.form.cost = 0
+        this.form.inTurn = 100
+      })
+    },
+    getDetail() {
+      return getProductDetail({ id: this.option.id }).then(res => {
+        if (this.$util.isEmpty(res.data)) {
+          return;
+        }
+        Object.keys(this.form).forEach((i, index) => {
+          this.form[i] = res.data[i];
+        });
+
+        this.currentImgData.push(res.data.cover)
+        this.form.cover = [res.data.shortCover]
+        this.form.price = res.data.prePrice
+        this.form.stock = 0
+
+        let currentClass = this.itemClassData.filter(
+          e => this.form.classId == e.id
+        )[0];
+        this.form.className = currentClass.name ? currentClass.name : ''
+
+        this.smallUnitSelectedData = this.unitData.filter(
+          e => this.form.smallUnitId == e.id
+        )[0];
+       this.bigUnitSelectedData = this.unitData.filter(
+          e => this.form.bigUnitId == e.id
+        )[0];
+        this.productData = res.data
+        this.productData.id = 0
+      });
+    },
+    imgUploadSuccess(res) {
+      var _res = JSON.parse(res.data)
+      if(_res.code == 1){
+        this.currentImgData.push(_res.data.smallUrl)
+        this.form.cover.push(_res.data.shortUrl)
+      }
+    },
+    imgDeleteFn(res){
+      const index = res.index
+      this.form.cover.splice(index,1)
+    },
+    init() {
+      //从平台选择花材
+      if(!this.$util.isEmpty(this.option.ptItemId)){
+        uni.setNavigationBarTitle({title: "确认花材信息"})
+      }
+
+      if(this.hasRequest == 1){
+        return 
+      }
+      this._getAllUnit().then(res=>{
+        this._getAllItemClass().then(res => {
+          if(this.form.id == 0){
+            this.smallUnitSelectedData = this.unitData.filter(e => 2 == e.id)[0];
+            this.bigUnitSelectedData = this.unitData.filter(e => 1 == e.id)[0];
+            //从平台选择花材
+            if(!this.$util.isEmpty(this.option.ptItemId)){
+              this.getPtItemInfo(this.option.ptItemId)
+            }
+          }else{
+            this.getDetail();
+          }
+        });
+      })
+      this.hasRequest = 1
+    },
+    async _getAllUnit() {
+      await getAllUnit().then(res => {
+        if (this.$util.isEmpty(res.data)){
+          return false;
+        }
+        this.unitData = res.data.list;
+      });
+    },
+    async _getAllItemClass() {
+      await getAllItemClass().then(res => {
+        if (this.$util.isEmpty(res.data)){
+          return false;
+        }
+        this.itemClassData = res.data;
+      });
+    },
+    // 确认
+    confirmFn() {
+      if (this.$util.isEmpty(this.form.cover)) {
+        this.$msg("请上传图片")
+        return false
+      }
+      let requestHost = addProduct
+      if(this.form.id && this.form.id != 0){
+        requestHost = cloneProduct;
+      }else{
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.stock) == false){
+					uni.showToast({title:"请填写库存,没有请填0",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.discountPrice) == false){
+					uni.showToast({title:"请填写特价,没有特价请填0",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.cost) == false){
+					uni.showToast({title:"请填写成本",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.price) == false){
+					uni.showToast({title:"请填写批发价",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.hjPrice) == false){
+					uni.showToast({title:"请填写大客价",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.skPrice) == false){
+					uni.showToast({title:"请填写零售价",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.addPrice) == false){
+					uni.showToast({title:"请填写批发价加价",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.skMore) == false){
+					uni.showToast({title:"请填写零售价加价",icon:"none"})
+					return;
+				}
+				if(/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(this.form.hjAddPrice) == false){
+					uni.showToast({title:"请填写大客价加价",icon:"none"})
+					return;
+				}
+      }
+      let form = JSON.parse(JSON.stringify(this.form))
+      uni.showLoading({mask:true})
+      requestHost({...form,cover:this.form.cover[0],appVersion:1}).then(res => {
+        uni.hideLoading()
+        if(res.code == 1){
+          this.$msg("操作成功");
+
+          //返回上一页带参数
+          let pages = getCurrentPages();
+          let prevPage = pages[ pages.length - 2 ];
+          let hidden = 0
+          if(this.form.stock > this.form.stockWarning){
+            hidden = 1
+          }
+          prevPage.$vm.modifyStock = {id:this.form.id,stock:this.form.stock,hidden:hidden};
+
+          uni.navigateBack({})
+        }
+      });
+    },
+    // 表单验证
+    formSubmit(e) {
+      // 表单规则
+      let rules = [
+        {
+          name: "name",
+          rule: ["required"],
+          msg: ["请填写名称"]
+        },
+        {
+          name: "py",
+          rule: ["required"],
+          msg: ["请填写拼音缩写"]
+        },{
+          name: "stock",
+          rule: ["required"],
+          msg: ["请填写库存,没有填0"]
+        },
+        {
+          name: "bigUnitId",
+          rule: ["required"],
+          msg: ["请选择大单位"]
+        },
+        {
+          name: "smallUnitId",
+          rule: ["required"],
+          msg: ["请选择小单位"]
+        },
+        {
+          name: "price",
+          rule: ["required"],
+          msg: ["请填写批发价"]
+        },
+        {
+          name: "skPrice",
+          rule: ["required"],
+          msg: ["请填写零售价"]
+        },
+        {
+          name: "hjPrice",
+          rule: ["required"],
+          msg: ["请填写大客价"]
+        },
+        {
+          name: "addPrice",
+          rule: ["required"],
+          msg: ["请填写批发价加价"]
+        },
+        {
+          name: "hjAddPrice",
+          rule: ["required"],
+          msg: ["请填写大客价加价"]
+        },
+        {
+          name: "discountPrice",
+          rule: ["required"],
+          msg: ["不做特价请填0"]
+        },
+        {
+          name: "cost",
+          rule: ["required"],
+          msg: ["请填写成本"]
+        },
+        {
+          name: "skMore",
+          rule: ["required"],
+          msg: ["请填写零售价加价"]
+        },
+        {
+          name: "weight",
+          rule: ["required"],
+          msg: ["请填写重量"]
+        },
+        {
+          name: "classId",
+          rule: ["required"],
+          msg: ["请选择分类"]
+        },
+        {
+          name: "stockWarning",
+          rule: ["required"],
+          msg: ["请填写库存预警"]
+        }
+      ];
+      // 进行表单检查
+      let formData = e.detail.value;
+      let checkRes = form.validation(formData, rules);
+      // 验证通过!
+      if (!checkRes) {
+          this.confirmFn()
+      } else {
+        this.$msg(checkRes);
+      }
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.app-content {
+  min-height: calc(100vh - 100upx);
+  padding-bottom: 150upx;
+}
+// 公共模块
+.module-com {
+  margin-bottom: 20upx;
+  background-color: #fff;
+  color: $fontColor2;
+  .module-tit {
+    padding: 20upx 30upx;
+    font-size: 28upx;
+  }
+  .module-det {
+    padding: 0 30upx;
+  }
+}
+.category-wrap {
+  align-items: flex-start;
+  padding-bottom: 0 !important;
+  .tui-input {
+    @include disFlex(center, flex-start);
+    flex-wrap: wrap;
+    .admin-button-com {
+      margin-right: 20upx;
+      margin-bottom: 20upx;
+      position: relative;
+      z-index: 9999;
+    }
+  }
+}
+.summary-wrap {
+  .goods-summary {
+    height: 400upx;
+  }
+}
+.app-footer {
+  justify-content: space-evenly;
+  z-index: 9999;
+  .admin-button-com {
+    width: 46%;
+  }
+}
+</style>

+ 1 - 1
hdApp/src/admin/item/detail.vue

@@ -1340,4 +1340,4 @@ export default {
     width: 46%;
   }
 }
-</style>
+</style>

+ 1 - 1
hdApp/src/admin/item/list2.vue

@@ -112,7 +112,7 @@
 				<!-- <view style="width:100vw;margin-top:8upx;"><button @click="moveToLose()">挪到处理区</button></view> -->
 				<!-- <view style="width:100vw;margin-top:8upx;"><button @click="shareItem()">打开分享(批发)</button></view> -->
 				<!-- <view style="width:100vw;margin-top:8upx;"><button @click="getHdPosterFn()">分享海报(批发)</button></view> -->
-				<!-- <view style="width:100vw;margin-top:8upx;"><button @click="getSkPosterFn()">分享海报</button></view> -->
+				<view style="width:100vw;margin-top:8upx;"><button @click="getSkPosterFn()">分享海报</button></view>
 				<view style="width:100vw;margin-top:8upx;"><button @click="orderRecord()">下单记录</button></view>
 				<!-- <view style="width:100vw;margin-top:8upx;"><button @click="onStockChange()">路上库存变动</button></view> -->
 				<!-- <view style="width:100vw;margin-top:8upx;"><button @click="ptAuth()">申请平台认证</button></view> -->

+ 3 - 0
hdApp/src/admin/member/detail.vue

@@ -88,6 +88,9 @@
         <tui-list-cell @click="pageTo({ url: '/admin/custom/rechargeChange?id='+data.id })" class="line-cell" :hover="false" :arrow="true" >
             <view class="tui-title">充值记录</view>
         </tui-list-cell>
+        <tui-list-cell @click="pageTo({ url: '/admin/order/itemOrder?customId='+data.id })" class="line-cell" :hover="false" :arrow="true" >
+            <view class="tui-title">下单记录</view>
+        </tui-list-cell>
         <tui-list-cell @click="pageTo({ url: '/admin/custom/balanceChange?id='+data.id })" class="line-cell" :hover="false" :arrow="true" >
             <view class="tui-title">余额明细</view>
         </tui-list-cell>

+ 4 - 1
hdApp/src/admin/order/itemOrder.vue

@@ -35,7 +35,7 @@
       </block>
     </div>
 
-    <div class="app-footer">
+    <div class="app-footer" v-if="!$util.isEmpty(ids)">
       <div class="admin-button-com big blue" @click="batchFh()">全部发货</div>
       <div class="admin-button-com big blue" style="margin-left:50upx;" @click="batchPrint()">合并打印</div>
     </div>
@@ -61,6 +61,7 @@ export default {
   computed: { ...mapGetters(["getLoginInfo", "getDictionariesInfo"]) },
   data() {
     return {
+      ids:''
     }
   },
   onPullDownRefresh() {
@@ -86,6 +87,8 @@ export default {
 		let prevPage = pages[ pages.length - 2 ];
 		prevPage.$vm.refreshPage = 0
 
+    this.ids = this.option.ids?this.option.ids:''
+
   },
   methods: {
     init(){

+ 1 - 0
hdApp/src/pages.json

@@ -75,6 +75,7 @@
 			"pages": [
 				{"path": "list","style": {"navigationBarTitleText": "花材列表"}},
 				{"path": "list2","style": {"navigationBarTitleText": "花材列表"}},
+				{"path": "copy","style": {"navigationBarTitleText": "复制新建"}},
 				{"path": "detail","style": {"navigationBarTitleText": "花材详情"}},
 				{"path": "add","style": {"navigationBarTitleText": "添加花材"}}
 			]